You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.tsx 3.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. import ListFilterBar from '@/components/list-filter-bar';
  2. import { RenameDialog } from '@/components/rename-dialog';
  3. import { Button } from '@/components/ui/button';
  4. import { RAGFlowPagination } from '@/components/ui/ragflow-pagination';
  5. import { useFetchNextKnowledgeListByPage } from '@/hooks/use-knowledge-request';
  6. import { pick } from 'lodash';
  7. import { Plus } from 'lucide-react';
  8. import { useCallback } from 'react';
  9. import { useTranslation } from 'react-i18next';
  10. import { DatasetCard } from './dataset-card';
  11. import { DatasetCreatingDialog } from './dataset-creating-dialog';
  12. import { useSaveKnowledge } from './hooks';
  13. import { useRenameDataset } from './use-rename-dataset';
  14. import { useSelectOwners } from './use-select-owners';
  15. export default function Datasets() {
  16. const { t } = useTranslation();
  17. const {
  18. visible,
  19. hideModal,
  20. showModal,
  21. onCreateOk,
  22. loading: creatingLoading,
  23. } = useSaveKnowledge();
  24. const {
  25. kbs,
  26. total,
  27. pagination,
  28. setPagination,
  29. handleInputChange,
  30. searchString,
  31. filterValue,
  32. handleFilterSubmit,
  33. } = useFetchNextKnowledgeListByPage();
  34. const owners = useSelectOwners();
  35. const {
  36. datasetRenameLoading,
  37. initialDatasetName,
  38. onDatasetRenameOk,
  39. datasetRenameVisible,
  40. hideDatasetRenameModal,
  41. showDatasetRenameModal,
  42. } = useRenameDataset();
  43. const handlePageChange = useCallback(
  44. (page: number, pageSize?: number) => {
  45. setPagination({ page, pageSize });
  46. },
  47. [setPagination],
  48. );
  49. return (
  50. <section className="py-8 text-foreground">
  51. <ListFilterBar
  52. title="Datasets"
  53. searchString={searchString}
  54. onSearchChange={handleInputChange}
  55. value={filterValue}
  56. filters={owners}
  57. onChange={handleFilterSubmit}
  58. className="px-8"
  59. >
  60. <Button variant={'tertiary'} size={'sm'} onClick={showModal}>
  61. <Plus className="mr-2 h-4 w-4" />
  62. {t('knowledgeList.createKnowledgeBase')}
  63. </Button>
  64. </ListFilterBar>
  65. <div className="flex flex-wrap gap-4 max-h-[78vh] overflow-auto px-8">
  66. {kbs.map((dataset) => {
  67. return (
  68. <DatasetCard
  69. dataset={dataset}
  70. key={dataset.id}
  71. showDatasetRenameModal={showDatasetRenameModal}
  72. ></DatasetCard>
  73. );
  74. })}
  75. </div>
  76. <div className="mt-8 px-8">
  77. <RAGFlowPagination
  78. {...pick(pagination, 'current', 'pageSize')}
  79. total={total}
  80. onChange={handlePageChange}
  81. ></RAGFlowPagination>
  82. </div>
  83. {visible && (
  84. <DatasetCreatingDialog
  85. hideModal={hideModal}
  86. onOk={onCreateOk}
  87. loading={creatingLoading}
  88. ></DatasetCreatingDialog>
  89. )}
  90. {datasetRenameVisible && (
  91. <RenameDialog
  92. hideModal={hideDatasetRenameModal}
  93. onOk={onDatasetRenameOk}
  94. initialName={initialDatasetName}
  95. loading={datasetRenameLoading}
  96. ></RenameDialog>
  97. )}
  98. </section>
  99. );
  100. }