'use client' import type { FC } from 'react' import cn from 'classnames' import BlockIcon from '../block-icon' import type { BlockEnum } from '../types' import { AlertTriangle } from '@/app/components/base/icons/src/vender/line/alertsAndFeedback' import { CheckCircle, Loading02 } from '@/app/components/base/icons/src/vender/line/general' import { ChevronRight } from '@/app/components/base/icons/src/vender/line/arrows' export type NodeInfo = { type: BlockEnum title: string time: number tokens: number status: string error?: string } type Props = { nodeInfo: NodeInfo collapsed: boolean collapseHandle: () => void } const NodePanel: FC = ({ nodeInfo, collapsed, collapseHandle }) => { const getTime = (time: number) => { if (time < 1) return `${time * 1000} ms` if (time > 60) return `${parseInt(Math.round(time / 60).toString())} m ${(time % 60).toFixed(3)} s` } const getTokenCount = (tokens: number) => { if (tokens < 1000) return tokens if (tokens >= 1000 && tokens < 1000000) return `${parseFloat((tokens / 1000).toFixed(3))}K` if (tokens >= 1000000) return `${parseFloat((tokens / 1000000).toFixed(3))}M` } return (
{nodeInfo.title}
{`${getTime(nodeInfo.time)} ยท ${getTokenCount(nodeInfo.tokens)} tokens`}
{nodeInfo.status === 'succeeded' && ( )} {nodeInfo.status === 'failed' && ( )} {nodeInfo.status === 'stopped' && ( )} {nodeInfo.status === 'running' && (
Running
)}
{!collapsed && (
{/* TODO */}
INPUT
OUPUT
)}
) } export default NodePanel