import { useState } from 'react' import { ResizableHandle, ResizablePanel, Tabs, TabsContent, TabsIndicator, TabsList, TabsTrigger, } from 'ui' import { CodeBlock } from 'ui-patterns/CodeBlock' import { LogDetail } from './components/LogDetail' import { LogLevelDot } from './components/LogLevelDot' import { LogSelectionActions } from './LogSelectionActions' import { ServiceFlowPanelControls } from './ServiceFlow/components/ServiceFlowPanelControls' import { getLogDataForMetadataVisibility } from './ServiceFlowPanel.utils' import { ColumnSchema } from './UnifiedLogs.schema' import { QuerySearchParamsType } from './UnifiedLogs.types' import { getEventMessageDisplay, getRawLogData } from './UnifiedLogs.utils' import { ShortcutBadge } from '@/components/ui/ShortcutBadge' import { useIsFeatureEnabled } from '@/hooks/misc/useIsFeatureEnabled' import { SHORTCUT_IDS } from '@/state/shortcuts/registry' interface ServiceFlowPanelProps { dock: 'bottom' | 'right' setDock: (value: 'bottom' | 'right') => void selectedRows: ColumnSchema[] searchParameters: QuerySearchParamsType } export function ServiceFlowPanel({ dock, setDock, selectedRows, searchParameters, }: ServiceFlowPanelProps) { const [activeTab, setActiveTab] = useState('overview') const hasMultiple = selectedRows.length > 1 const selectedRow = selectedRows[0] const title = hasMultiple ? `${selectedRows.length} logs selected` : getEventMessageDisplay(selectedRow?.log_type ?? '', selectedRow?.event_message).message || selectedRow?.id const { logsMetadata } = useIsFeatureEnabled(['logs:metadata']) const selectedJson = selectedRows.map((row) => getLogDataForMetadataVisibility(getRawLogData(row), logsMetadata) ) return ( <>
{!hasMultiple && (
)} {title}
{hasMultiple ? (
{JSON.stringify(selectedJson, null, 2)}
) : ( Overview Raw JSON {['overview', 'raw-json'].map((tab) => ( {selectedRow && ( )} ))} )}
Extend selection
) }