malvika2003's picture
Upload folder using huggingface_hub
db5855f verified
raw
history blame
2.68 kB
import './ContentSection.scss';
import { useContext, useEffect, useState } from 'react';
import { Pagination } from '@/components/shared/Pagination/Pagination';
import { isEmbedded } from '@/shared/iframe-detector';
import { sendScrollMessage } from '@/shared/iframe-message-emitter';
import { INotebookMetadata } from '@/shared/notebook-metadata';
import { notebooksService } from '@/shared/notebooks.service';
import { NotebooksContext } from '@/shared/notebooks-context';
import { ContentSectionHeader } from './ContentSectionHeader/ContentSectionHeader';
import { NotebooksList } from './NotebooksList/NotebooksList';
const notebooksPerPageOptions = [5, 10, 25, 50];
const scrollToTop = () => {
if (isEmbedded) {
sendScrollMessage();
} else {
window.scrollTo({ top: 0, behavior: 'smooth' });
}
};
export const ContentSection = (): JSX.Element => {
const { selectedTags, searchValue, sort, page, setPage } = useContext(NotebooksContext);
const [notebooks, setNotebooks] = useState<INotebookMetadata[]>([]);
const [filteredNotebooksCount, setFilteredNotebooksCount] = useState<number>(0);
const [totalNotebooksCount, setTotalNotebooksCount] = useState<number>(0);
const [itemsPerPage, setItemsPerPage] = useState<number>(notebooksPerPageOptions[0]);
const totalPages = Math.ceil(filteredNotebooksCount / itemsPerPage);
useEffect(() => {
setPage(1);
}, [selectedTags, searchValue, sort, setPage]);
useEffect(() => {
void notebooksService
.getNotebooks({
tags: selectedTags,
searchValue,
sort,
offset: (page - 1) * itemsPerPage,
limit: itemsPerPage,
})
.then(([paginatedNotebooks, totalSearchedNotebooks, totalNotebooksCount]) => {
setNotebooks(paginatedNotebooks);
setFilteredNotebooksCount(totalSearchedNotebooks);
setTotalNotebooksCount(totalNotebooksCount);
scrollToTop();
});
}, [selectedTags, searchValue, sort, page, itemsPerPage]);
return (
<section className="flex-col flex-1 content-section">
<ContentSectionHeader
totalCount={totalNotebooksCount}
filteredCount={filteredNotebooksCount}
></ContentSectionHeader>
<NotebooksList items={notebooks}></NotebooksList>
{Boolean(notebooks.length) && (
<Pagination
itemsPerPageOptions={notebooksPerPageOptions}
itemsPerPage={itemsPerPage}
page={page}
totalPages={totalPages}
onChangePage={setPage}
onChangeItemsPerPage={setItemsPerPage}
></Pagination>
)}
</section>
);
};