-
-
-
-
- Trino Federation & Hadoop Lakehouse
-
-
- One SQL engine over every source — federated business analytics, mirrored into Hadoop as external Iceberg tables
-
-
-
- {([
- { id: 'federated', label: 'Federated', icon: Network },
- { id: 'lake', label: 'Hadoop Lake', icon: HardDrive },
- { id: 'dictionary', label: 'Data Dictionary', icon: ShieldCheck },
- ] as { id: SubTab; label: string; icon: typeof Network }[]).map(({ id, label, icon: Icon }) => (
-
- ))}
-
-
-
+ const body = (
+ <>
{/* ───────── FEDERATED ───────── */}
{tab === 'federated' && (
<>
@@ -368,6 +345,37 @@ export function TrinoFederationView() {
{loading && !catalogs && !lake && !dict && (
)}
+ >
+ )
+
+ if (embedded) return body
+
+ return (
+
+
+
+
+
+ Trino Federation & Hadoop Lakehouse
+
+
+ One SQL engine over every source — federated business analytics, mirrored into Hadoop as external Iceberg tables
+
+
+
+ {([
+ { id: 'federated', label: 'Federated', icon: Network },
+ { id: 'lake', label: 'Hadoop Lake', icon: HardDrive },
+ { id: 'dictionary', label: 'Data Dictionary', icon: ShieldCheck },
+ ] as { id: SubTab; label: string; icon: typeof Network }[]).map(({ id, label, icon: Icon }) => (
+
+ ))}
+
+
+ {body}
)
}
diff --git a/ui/src/components/layout/SideNav.tsx b/ui/src/components/layout/SideNav.tsx
index 5b9c08e..8070b4b 100644
--- a/ui/src/components/layout/SideNav.tsx
+++ b/ui/src/components/layout/SideNav.tsx
@@ -1,5 +1,4 @@
-import { useEffect, useState } from 'react'
-import { Database, DatabaseZap, HardDrive, Search, LayoutDashboard, MessageSquare, Server, TerminalSquare, Activity, GitBranch, ExternalLink, LineChart, Network } from 'lucide-react'
+import { Database, DatabaseZap, HardDrive, Search, LayoutDashboard, MessageSquare, TerminalSquare, Activity, GitBranch, LineChart } from 'lucide-react'
import type { GpuStatus, WorkloadData } from '../../types'
import type { GpuLiveMetrics } from '../../hooks/useLiveMetrics'
import { cn } from '../../lib/utils'
@@ -7,7 +6,7 @@ import { viewTabActive, viewTabIdle } from '../../lib/tabActive'
import { GpuMatrixPanel } from '../features/GpuMatrixPanel'
import { LabHealthPanel } from '../features/LabHealthPanel'
-type MainView = 'platform' | 'dataquality' | 'knowledge' | 'storage' | 'hdfs' | 'search' | 'approvals' | 'changes' | 'dataflow' | 'datasources' | 'dataexplorer' | 'trino'
+type MainView = 'platform' | 'dataquality' | 'knowledge' | 'storage' | 'hdfs' | 'search' | 'approvals' | 'changes' | 'dataflow' | 'datasources' | 'dataexplorer'
type Props = {
workload: WorkloadData | null
@@ -27,13 +26,12 @@ const VIEWS: { id: MainView; label: string; icon: typeof LayoutDashboard }[] = [
{ id: 'platform', label: 'Data Platform', icon: LayoutDashboard },
{ id: 'datasources', label: 'Data Hub', icon: Database },
{ id: 'dataexplorer', label: 'Data Explorer', icon: LineChart },
- { id: 'trino', label: 'Trino Federation', icon: Network },
{ id: 'changes', label: 'Live Changes', icon: Activity },
{ id: 'dataflow', label: 'Data Flow', icon: GitBranch },
{ id: 'dataquality', label: 'Data Quality', icon: DatabaseZap },
{ id: 'knowledge', label: 'Knowledge Chat', icon: MessageSquare },
{ id: 'storage', label: 'Object Storage', icon: HardDrive },
- { id: 'search', label: 'Elasticsearch', icon: Search },
+ { id: 'search', label: 'Elasticsearch', icon: Search },
]
export function SideNav({
@@ -50,13 +48,6 @@ export function SideNav({
onOpenSsh,
}: Props) {
const matrixBoost = gpuBoost || mainView === 'knowledge'
- const [kibanaUrl, setKibanaUrl] = useState
(null)
- useEffect(() => {
- fetch('/api/search/health')
- .then((r) => (r.ok ? r.json() : null))
- .then((j) => { if (j?.kibana?.ui_url) setKibanaUrl(j.kibana.ui_url) })
- .catch(() => {})
- }, [])
return (
diff --git a/ui/src/hooks/useCommandCenter.ts b/ui/src/hooks/useCommandCenter.ts
index 85db1b7..46f656d 100644
--- a/ui/src/hooks/useCommandCenter.ts
+++ b/ui/src/hooks/useCommandCenter.ts
@@ -60,7 +60,7 @@ export function useCommandCenter() {
const [selectedNode, setSelectedNode] = useState