fix: always show environment selector in TopBar
Use unfiltered agent query to discover environments (avoids circular filter). Always show selector even with single environment so it's visible as a label. Default to ['default'] when no agents connected. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -291,18 +291,19 @@ function LayoutContent() {
|
|||||||
}, [setSearchParams]);
|
}, [setSearchParams]);
|
||||||
|
|
||||||
const { data: catalog } = useRouteCatalog(timeRange.start.toISOString(), timeRange.end.toISOString(), selectedEnv);
|
const { data: catalog } = useRouteCatalog(timeRange.start.toISOString(), timeRange.end.toISOString(), selectedEnv);
|
||||||
const { data: agents } = useAgents(undefined, undefined, selectedEnv);
|
const { data: allAgents } = useAgents(); // unfiltered — for environment discovery
|
||||||
|
const { data: agents } = useAgents(undefined, undefined, selectedEnv); // filtered — for sidebar/search
|
||||||
const { data: attributeKeys } = useAttributeKeys();
|
const { data: attributeKeys } = useAttributeKeys();
|
||||||
|
|
||||||
// Extract distinct environments from agents
|
// Extract distinct environments from ALL agents (not filtered by selected env)
|
||||||
const environments: string[] = useMemo(() => {
|
const environments: string[] = useMemo(() => {
|
||||||
if (!agents) return [];
|
if (!allAgents) return ['default'];
|
||||||
const envSet = new Set<string>();
|
const envSet = new Set<string>();
|
||||||
for (const a of agents as any[]) {
|
for (const a of allAgents as any[]) {
|
||||||
if (a.environmentId) envSet.add(a.environmentId);
|
envSet.add(a.environmentId || 'default');
|
||||||
}
|
}
|
||||||
return [...envSet].sort();
|
return [...envSet].sort();
|
||||||
}, [agents]);
|
}, [allAgents]);
|
||||||
|
|
||||||
// --- Admin search data (only fetched on admin pages) ----------------
|
// --- Admin search data (only fetched on admin pages) ----------------
|
||||||
const isAdminPage = location.pathname.startsWith('/admin');
|
const isAdminPage = location.pathname.startsWith('/admin');
|
||||||
@@ -702,13 +703,13 @@ function LayoutContent() {
|
|||||||
<AppShell sidebar={sidebarElement}>
|
<AppShell sidebar={sidebarElement}>
|
||||||
<TopBar
|
<TopBar
|
||||||
breadcrumb={breadcrumb}
|
breadcrumb={breadcrumb}
|
||||||
environment={environments.length > 0 ? (
|
environment={
|
||||||
<EnvironmentSelector
|
<EnvironmentSelector
|
||||||
environments={environments}
|
environments={environments}
|
||||||
value={selectedEnv}
|
value={selectedEnv}
|
||||||
onChange={setSelectedEnv}
|
onChange={setSelectedEnv}
|
||||||
/>
|
/>
|
||||||
) : undefined}
|
}
|
||||||
user={username ? { name: username } : undefined}
|
user={username ? { name: username } : undefined}
|
||||||
onLogout={handleLogout}
|
onLogout={handleLogout}
|
||||||
/>
|
/>
|
||||||
|
|||||||
Reference in New Issue
Block a user