import { CustomTimeline, TimelineNode } from '@/components/originui/timeline'; import { Blocks, File, FilePlay, FileStack, Heading, ListPlus, } from 'lucide-react'; import { useMemo } from 'react'; import { TimelineNodeType } from '../../constant'; import { IPipelineFileLogDetail } from '../../interface'; export type ITimelineNodeObj = { title: string; icon: JSX.Element; clickable?: boolean; type: TimelineNodeType; }; export const TimelineNodeObj = { [TimelineNodeType.begin]: { title: 'File', icon: , clickable: false, }, [TimelineNodeType.parser]: { title: 'Parser', icon: , }, [TimelineNodeType.contextGenerator]: { title: 'Context Generator', icon: , }, [TimelineNodeType.titleSplitter]: { title: 'Title Splitter', icon: , }, [TimelineNodeType.characterSplitter]: { title: 'Title Splitter', icon: , }, [TimelineNodeType.splitter]: { title: 'Character Splitter', icon: , }, [TimelineNodeType.tokenizer]: { title: 'Tokenizer', icon: , clickable: false, }, }; // export const TimelineNodeArr = [ // { // id: 1, // title: 'File', // icon: , // clickable: false, // type: TimelineNodeType.begin, // }, // { // id: 2, // title: 'Context Generator', // icon: , // type: TimelineNodeType.contextGenerator, // }, // { // id: 3, // title: 'Title Splitter', // icon: , // type: TimelineNodeType.titleSplitter, // }, // { // id: 4, // title: 'Character Splitter', // icon: , // type: TimelineNodeType.characterSplitter, // }, // { // id: 5, // title: 'Tokenizer', // icon: , // clickable: false, // type: TimelineNodeType.tokenizer, // }, // ] export interface TimelineDataFlowProps { activeId: number | string; activeFunc: (id: number | string, step: TimelineNode) => void; data: IPipelineFileLogDetail; timelineNodes: TimelineNode[]; } const TimelineDataFlow = ({ activeFunc, activeId, data, timelineNodes, }: TimelineDataFlowProps) => { // const [timelineNodeArr,setTimelineNodeArr] = useState() const activeStep = useMemo(() => { const index = timelineNodes.findIndex((node) => node.id === activeId); return index > -1 ? index + 1 : 0; }, [activeId, timelineNodes]); const handleStepChange = (step: number, id: string | number) => { activeFunc?.( id, timelineNodes.find((node) => node.id === activeStep) as TimelineNode, ); }; return (
); }; export default TimelineDataFlow;