import { useCurrentStateAndParams } from '@uirouter/react'; import { AlertTriangle, Code, History, HardDrive } from 'lucide-react'; import { useMemo } from 'react'; import { useEnvironmentId } from '@/react/hooks/useEnvironmentId'; import { PageHeader } from '@@/PageHeader'; import { Widget, WidgetBody, WidgetTabs } from '@@/Widget'; import { Tab, useCurrentTabIndex } from '@@/Widget/WidgetTabs'; import { Badge } from '@@/Badge'; import { Icon } from '@@/Icon'; import { useEventWarningsCount } from '../../queries/useEvents'; import { ResourceEventsDatatable } from '../../components/EventsDatatable/ResourceEventsDatatable'; import { useNodeQuery } from '../queries/useNodeQuery'; import { NodeApplicationsDatatable } from './NodeApplicationsDatatable/NodeApplicationsDatatable'; import { NodeDetails } from './NodeDetails/NodeDetails'; import { NodeYamlInspector } from './NodeYamlInspector'; export function NodeView() { const stateAndParams = useCurrentStateAndParams(); const environmentId = useEnvironmentId(); const { params: { nodeName }, } = stateAndParams; const nodeIdQuery = useNodeQuery(environmentId, nodeName, { select: (node) => node.metadata?.uid, }); const eventWarningCount = useEventWarningsCount(environmentId, { params: { resourceId: nodeIdQuery.data, }, queryOptions: { enabled: !!nodeIdQuery.data, }, }); const tabs = useMemo( () => buildTabs( eventWarningCount, nodeIdQuery.isInitialLoading, nodeName, environmentId, nodeIdQuery.data ), [ eventWarningCount, nodeIdQuery.isInitialLoading, nodeIdQuery.data, nodeName, environmentId, ] ); const currentTabIndex = useCurrentTabIndex(tabs); return ( <> <> {tabs[currentTabIndex].widget} ); } function buildTabs( eventWarningCount: number, isLoading: boolean, nodeName: string, environmentId: number, nodeId?: string ): Tab[] { return [ { name: 'Node', icon: HardDrive, widget: (
), selectedTabParam: 'namespace', }, { name: (
Events {eventWarningCount >= 1 && ( {eventWarningCount} )}
), icon: History, widget: ( ), selectedTabParam: 'events', }, { name: 'YAML', icon: Code, widget: ( ), selectedTabParam: 'yaml', }, ]; }