import { Accordion, AccordionContent, AccordionItem, AccordionTrigger, } from '@/components/ui/accordion'; import { Sheet, SheetContent, SheetHeader, SheetTitle, } from '@/components/ui/sheet'; import { INodeEvent, MessageEventType } from '@/hooks/use-send-message'; import { IModalProps } from '@/interfaces/common'; import { cn } from '@/lib/utils'; import { NotebookText } from 'lucide-react'; import { useCallback, useMemo } from 'react'; import JsonView from 'react18-json-view'; import 'react18-json-view/src/style.css'; import { useCacheChatLog } from '../hooks/use-cache-chat-log'; import useGraphStore from '../store'; type LogSheetProps = IModalProps & Pick, 'currentEventListWithoutMessage'>; function JsonViewer({ data, title, }: { data: Record; title: string; }) { return (
{title}
); } export function LogSheet({ hideModal, currentEventListWithoutMessage, }: LogSheetProps) { const getNode = useGraphStore((state) => state.getNode); const getNodeName = useCallback( (nodeId: string) => { return getNode(nodeId)?.data.name; }, [getNode], ); const finishedNodeList = useMemo(() => { return currentEventListWithoutMessage.filter( (x) => x.event === MessageEventType.NodeFinished, ) as INodeEvent[]; }, [currentEventListWithoutMessage]); return ( Log
{finishedNodeList.map((x, idx) => (
{getNodeName(x.data?.component_id)} {x.data.elapsed_time?.toString().slice(0, 6)} Online
))}
); }