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;