import {
Select,
SelectItem,
Table,
TableBody,
TableCell,
TableColumn,
TableHeader,
TableRow,
} from '@heroui/react';
import { useEffect, useState } from 'react';
interface ChunkerData {
terms: {
id: string;
name: string;
courses: {
id: string;
name: string;
chunks: {
id: string;
name: string;
tokens: number;
}[];
images: string[];
}[];
}[];
}
export default function ChunkerDataTable({
chunkerData,
}: {
chunkerData: ChunkerData;
}) {
if (!chunkerData || !chunkerData.terms || chunkerData.terms.length === 0) {
return (
);
}
// Initialize selected term to the first term in the program
const [selectedTerm, setSelectedTerm] = useState(
chunkerData.terms[0] || null
);
const [selectedCourse, setSelectedCourse] =
useState(null); // Initialize to null
const [flattenedChunks, setFlattenedChunks] = useState(
[]
);
const getFlattenedChunks = (course: ChunkedCourse | null) => {
return course?.chunks.map((chunk) => ({
id: chunk.id,
name: chunk.name,
tokens: chunk.tokens,
}));
};
useEffect(() => {
if (selectedTerm) {
setSelectedCourse(selectedTerm.courses[0] || null);
}
}, [selectedTerm]);
useEffect(() => {
if (selectedTerm && selectedCourse) {
setFlattenedChunks(getFlattenedChunks(selectedCourse));
}
}, [selectedCourse]);
return (
{/* Term Selector */}
{/* Course Selector */}
{/* Courses Table */}
{selectedTerm && selectedCourse && flattenedChunks && (
Name
Tokens
{flattenedChunks.map((chunk, i) => {
return (
{chunk.name}
{chunk.tokens}
);
})}
)}
);
}