From fe4125dcb409c5bd464b1affae7f5b2f6bf1695c Mon Sep 17 00:00:00 2001 From: Arik Chakma Date: Mon, 24 Mar 2025 23:22:13 +0600 Subject: [PATCH] wip --- .../GenerateCourse/AICourseRoadmapView.tsx | 4 ++-- src/lib/ai.ts | 15 +++++++++++---- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/components/GenerateCourse/AICourseRoadmapView.tsx b/src/components/GenerateCourse/AICourseRoadmapView.tsx index b56080169..106a2b764 100644 --- a/src/components/GenerateCourse/AICourseRoadmapView.tsx +++ b/src/components/GenerateCourse/AICourseRoadmapView.tsx @@ -84,13 +84,13 @@ export function AICourseRoadmapView(props: AICourseRoadmapViewProps) { setIsGenerating(true); await readAIRoadmapStream(reader, { onStream: async (result) => { - const roadmap = generateAICourseRoadmapStructure(result); + const roadmap = generateAICourseRoadmapStructure(result, true); const { nodes, edges } = generateAIRoadmapFromText(roadmap); const svg = await renderFlowJSON({ nodes, edges }); replaceChildren(containerEl.current!, svg); }, onStreamEnd: async (result) => { - const roadmap = generateAICourseRoadmapStructure(result); + const roadmap = generateAICourseRoadmapStructure(result, true); const { nodes, edges } = generateAIRoadmapFromText(roadmap); const svg = await renderFlowJSON({ nodes, edges }); replaceChildren(containerEl.current!, svg); diff --git a/src/lib/ai.ts b/src/lib/ai.ts index 454eabee5..9713fd162 100644 --- a/src/lib/ai.ts +++ b/src/lib/ai.ts @@ -238,7 +238,10 @@ export type Title = { export type ResultItem = Title | Topic | Label; -export function generateAICourseRoadmapStructure(data: string): ResultItem[] { +export function generateAICourseRoadmapStructure( + data: string, + isCourseRoadmap: boolean = false, +): ResultItem[] { const lines = data.split('\n'); const result: ResultItem[] = []; @@ -274,9 +277,13 @@ export function generateAICourseRoadmapStructure(data: string): ResultItem[] { } else if (line.startsWith('-')) { if (currentTopic) { const label = line.replace('-', '').trim(); - const currentTopicIndex = result.length - 1; - const subTopicIndex = currentTopic.children?.length || 0; - const id = `${currentTopicIndex}-${subTopicIndex}`; + + let id = nanoid(); + if (isCourseRoadmap) { + const currentTopicIndex = result.length - 1; + const subTopicIndex = currentTopic.children?.length || 0; + id = `${currentTopicIndex}-${subTopicIndex}`; + } currentTopic.children?.push({ id,