datasets.tsx

Overview

The datasets.tsx file defines a React functional component named Datasets responsible for displaying a collection of dataset cards within a user interface. It fetches a paginated list of knowledge datasets, renders them in a responsive grid layout, and incorporates UI elements for loading states, dataset renaming functionality, and navigation to view all datasets.

This component leverages several custom hooks and subcomponents to handle data fetching, user interactions (like renaming), and UI rendering, making it a central piece in managing and presenting datasets in the application.


Detailed Explanation

Datasets Component

Purpose

The Datasets component displays a preview of datasets retrieved from a paginated API, supports renaming datasets via a modal dialog, and provides a "See All" card to navigate or trigger viewing all datasets.

Import Dependencies


Component Structure and Logic

export function Datasets() {
  const { t } = useTranslation();
  const { kbs, loading } = useFetchNextKnowledgeListByPage();
  const {
    datasetRenameLoading,
    initialDatasetName,
    onDatasetRenameOk,
    datasetRenameVisible,
    hideDatasetRenameModal,
    showDatasetRenameModal,
  } = useRenameDataset();

  return (
    <section>
      <h2 className="text-2xl font-bold mb-6 flex gap-2.5 items-center">
        <IconFont name="data" className="size-8"></IconFont>
        {t('header.dataset')}
      </h2>
      <div className="flex gap-6">
        {loading ? (
          <div className="flex-1">
            <CardSkeleton />
          </div>
        ) : (
          <div className="grid gap-6 grid-cols-1 md:grid-cols-2 lg:grid-cols-4 xl:grid-cols-5 2xl:grid-cols-6 3xl:grid-cols-7 max-h-[78vh] overflow-auto">
            {kbs
              ?.slice(0, 6)
              .map((dataset) => (
                <DatasetCard
                  key={dataset.id}
                  dataset={dataset}
                  showDatasetRenameModal={showDatasetRenameModal}
                ></DatasetCard>
              ))}
            <div className="min-h-24">
              <SeeAllCard></SeeAllCard>
            </div>
          </div>
        )}
      </div>
      {datasetRenameVisible && (
        <RenameDialog
          hideModal={hideDatasetRenameModal}
          onOk={onDatasetRenameOk}
          initialName={initialDatasetName}
          loading={datasetRenameLoading}
        ></RenameDialog>
      )}
    </section>
  );
}

Explanation of Key Elements

1. Translation

2. Data Fetching

3. Rename Dataset State and Actions

4. UI Rendering Logic


Parameters & Return


Usage Example

import { Datasets } from './datasets';

function App() {
  return (
    <div>
      <Datasets />
    </div>
  );
}

This will render the datasets preview section with loading, rename, and navigation functionalities embedded.


Important Implementation Details


Interaction with Other Parts of the System


Visual Diagram

componentDiagram
    component Datasets {
        +render()
    }
    component useFetchNextKnowledgeListByPage {
        +kbs: Dataset[]
        +loading: boolean
    }
    component useRenameDataset {
        +datasetRenameLoading: boolean
        +initialDatasetName: string
        +onDatasetRenameOk()
        +datasetRenameVisible: boolean
        +hideDatasetRenameModal()
        +showDatasetRenameModal()
    }
    component DatasetCard {
        +dataset: Dataset
        +showDatasetRenameModal()
    }
    component SeeAllCard
    component RenameDialog {
        +hideModal()
        +onOk()
        +initialName: string
        +loading: boolean
    }
    component IconFont
    component useTranslation {
        +t(key: string): string
    }

    Datasets --> useFetchNextKnowledgeListByPage : fetches datasets
    Datasets --> useRenameDataset : manages rename modal state
    Datasets --> DatasetCard : renders dataset cards
    Datasets --> SeeAllCard : renders "See All" card
    Datasets --> RenameDialog : conditionally renders rename modal
    Datasets --> IconFont : renders header icon
    Datasets --> useTranslation : localizes text

Summary

The datasets.tsx file provides a user interface component that:

This component is a critical UI piece for dataset management and navigation in the application, ensuring a smooth user experience with responsive design, loading states, and interactive renaming capabilities.