commit and make select work

This commit is contained in:
Brent O'Neill 2025-09-23 11:53:58 -06:00
parent 8a17cccf3d
commit 70da229e40

View file

@ -39,6 +39,9 @@ function ChunksPageContent() {
const [chunksFilteredByQuery, setChunksFilteredByQuery] = useState< const [chunksFilteredByQuery, setChunksFilteredByQuery] = useState<
ChunkResult[] ChunkResult[]
>([]); >([]);
const [selectedChunks, setSelectedChunks] = useState<Set<number>>(new Set());
// Calculate average chunk length
const averageChunkLength = useMemo( const averageChunkLength = useMemo(
() => () =>
chunks.reduce((acc, chunk) => acc + chunk.text.length, 0) / chunks.reduce((acc, chunk) => acc + chunk.text.length, 0) /
@ -84,10 +87,34 @@ function ChunksPageContent() {
setChunks(fileData?.chunks || []); setChunks(fileData?.chunks || []);
}, [data, filename, fileData?.chunks]); }, [data, filename, fileData?.chunks]);
// Set selected state for all checkboxes when selectAll changes
useEffect(() => {
if (selectAll) {
setSelectedChunks(new Set(chunks.map((_, index) => index)));
} else {
setSelectedChunks(new Set());
}
}, [selectAll, setSelectedChunks, chunks]);
const handleBack = useCallback(() => { const handleBack = useCallback(() => {
router.back(); router.push("/knowledge");
}, [router]); }, [router]);
const handleChunkCardCheckboxChange = useCallback(
(index: number) => {
setSelectedChunks((prevSelected) => {
const newSelected = new Set(prevSelected);
if (newSelected.has(index)) {
newSelected.delete(index);
} else {
newSelected.add(index);
}
return newSelected;
});
},
[setSelectedChunks]
);
if (!filename) { if (!filename) {
return ( return (
<div className="flex items-center justify-center h-64"> <div className="flex items-center justify-center h-64">
@ -134,11 +161,13 @@ function ChunksPageContent() {
<Checkbox <Checkbox
id="selectAllChunks" id="selectAllChunks"
checked={selectAll} checked={selectAll}
onCheckedChange={(checked) => setSelectAll(checked === true)} onCheckedChange={(handleSelectAll) =>
setSelectAll(!!handleSelectAll)
}
/> />
<Label <Label
htmlFor="selectAllChunks" htmlFor="selectAllChunks"
className="font-medium text-muted-foreground whitespace-nowrap" className="font-medium text-muted-foreground whitespace-nowrap cursor-pointer"
> >
Select all Select all
</Label> </Label>
@ -192,7 +221,10 @@ function ChunksPageContent() {
<div className="flex items-center justify-between mb-2"> <div className="flex items-center justify-between mb-2">
<div className="flex items-center gap-3"> <div className="flex items-center gap-3">
<div> <div>
<Checkbox /> <Checkbox
checked={selectedChunks.has(index)}
onClick={() => handleChunkCardCheckboxChange(index)}
/>
</div> </div>
<span className="text-sm text-bold"> <span className="text-sm text-bold">
Chunk {chunk.page} Chunk {chunk.page}
@ -221,11 +253,9 @@ function ChunksPageContent() {
Active Active
</span> */} </span> */}
</div> </div>
<div> <blockquote className="text-sm text-muted-foreground leading-relaxed border-l-2 border-input ml-1.5 pl-4">
<blockquote className="text-sm text-muted-foreground leading-relaxed border-l-2 border-color-input ml-1.5 pl-4"> {chunk.text}
{chunk.text} </blockquote>
</blockquote>
</div>
</div> </div>
))} ))}
</div> </div>
@ -249,18 +279,17 @@ function ChunksPageContent() {
{averageChunkLength.toFixed(0)} chars {averageChunkLength.toFixed(0)} chars
</dd> </dd>
</div> </div>
<div className="sm:grid sm:grid-cols-3 sm:gap-4 sm:px-0 mb-2.5"> {/* TODO: Uncomment after data is available */}
{/* <div className="sm:grid sm:grid-cols-3 sm:gap-4 sm:px-0 mb-2.5">
<dt className="text-sm/6 text-muted-foreground">Process time</dt> <dt className="text-sm/6 text-muted-foreground">Process time</dt>
<dd className="mt-1 text-sm/6 text-gray-100 sm:col-span-2 sm:mt-0"> <dd className="mt-1 text-sm/6 text-gray-100 sm:col-span-2 sm:mt-0">
{/* {averageChunkLength.toFixed(0)} chars */}
</dd> </dd>
</div> </div>
<div className="sm:grid sm:grid-cols-3 sm:gap-4 sm:px-0 mb-2.5"> <div className="sm:grid sm:grid-cols-3 sm:gap-4 sm:px-0 mb-2.5">
<dt className="text-sm/6 text-muted-foreground">Model</dt> <dt className="text-sm/6 text-muted-foreground">Model</dt>
<dd className="mt-1 text-sm/6 text-gray-100 sm:col-span-2 sm:mt-0"> <dd className="mt-1 text-sm/6 text-gray-100 sm:col-span-2 sm:mt-0">
{/* {averageChunkLength.toFixed(0)} chars */}
</dd> </dd>
</div> </div> */}
</dl> </dl>
</div> </div>
<div className="mb-8"> <div className="mb-8">
@ -292,10 +321,11 @@ function ChunksPageContent() {
N/A N/A
</dd> </dd>
</div> </div>
<div className="sm:grid sm:grid-cols-3 sm:gap-4 sm:px-0 mb-2.5"> {/* TODO: Uncomment after data is available */}
{/* <div className="sm:grid sm:grid-cols-3 sm:gap-4 sm:px-0 mb-2.5">
<dt className="text-sm/6 text-muted-foreground">Source</dt> <dt className="text-sm/6 text-muted-foreground">Source</dt>
<dd className="mt-1 text-sm/6 text-gray-100 sm:col-span-2 sm:mt-0"></dd> <dd className="mt-1 text-sm/6 text-gray-100 sm:col-span-2 sm:mt-0"></dd>
</div> </div> */}
<div className="sm:grid sm:grid-cols-3 sm:gap-4 sm:px-0 mb-2.5"> <div className="sm:grid sm:grid-cols-3 sm:gap-4 sm:px-0 mb-2.5">
<dt className="text-sm/6 text-muted-foreground">Updated</dt> <dt className="text-sm/6 text-muted-foreground">Updated</dt>
<dd className="mt-1 text-sm/6 text-gray-100 sm:col-span-2 sm:mt-0"> <dd className="mt-1 text-sm/6 text-gray-100 sm:col-span-2 sm:mt-0">