Skip to content

Commit 9c429f5

Browse files
committed
Use new component on dataset tabs
1 parent 066eb67 commit 9c429f5

File tree

2 files changed

+29
-114
lines changed

2 files changed

+29
-114
lines changed

web_ui/src/pages/project-details/components/project-dataset/dataset-tab-list.component.tsx

Lines changed: 0 additions & 76 deletions
This file was deleted.
Lines changed: 29 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
11
// Copyright (C) 2022-2025 Intel Corporation
22
// LIMITED EDGE SOFTWARE DISTRIBUTION LICENSE
33

4-
import { Key, useMemo } from 'react';
5-
6-
import { Flex, Item, TabPanels, Tabs } from '@geti/ui';
4+
import { Flex } from '@geti/ui';
75

86
import { Dataset } from '../../../../core/projects/dataset.interface';
97
import { isAnomalyDomain } from '../../../../core/projects/domains';
108
import { TUTORIAL_CARD_KEYS } from '../../../../core/user-settings/dtos/user-settings.interface';
119
import { useDataset } from '../../../../providers/dataset-provider/dataset-provider.component';
10+
import { ManagedTabs } from '../../../../shared/components/managed-tabs/managed-tabs.component';
1211
import { TutorialCardBuilder } from '../../../../shared/components/tutorial-card/tutorial-card-builder.component';
13-
import { hasEqualId } from '../../../../shared/utils';
1412
import { useProject } from '../../providers/project-provider/project-provider.component';
15-
import { DatasetTabList } from './dataset-tab-list.component';
1613
import { DatasetTabPanel } from './dataset-tab-panel.component';
14+
import { ExportDatasetDialog } from './export-dataset/export-dataset-dialog.component';
15+
import { useExportImportDatasetDialogStates } from './export-dataset/export-import-dataset-dialog-provider.component';
16+
import { ProjectDatasetTabActions } from './project-dataset-tab-actions.component';
17+
import { MAX_NUMBER_OF_DISPLAYED_DATASETS } from './utils';
1718

1819
import classes from './project-dataset.module.scss';
1920

@@ -25,22 +26,11 @@ import classes from './project-dataset.module.scss';
2526
datasets to the Picker. The new dataset is placed at the end of pinned datasets.
2627
*/
2728
export const ProjectDataset = () => {
28-
const { isSingleDomainProject } = useProject();
29-
const { pinnedDatasets, handleSelectDataset, selectedDataset } = useDataset();
29+
const { isSingleDomainProject, project } = useProject();
30+
const { handleSelectDataset, selectedDataset, createDataset, handleCreateDataset } = useDataset();
31+
const { exportDialogState } = useExportImportDatasetDialogStates();
3032

3133
const isAnomalyProject = isSingleDomainProject(isAnomalyDomain);
32-
const hasSelectedPinnedDataset = pinnedDatasets.find(hasEqualId(selectedDataset.id)) !== undefined;
33-
34-
const items = useMemo(() => {
35-
return pinnedDatasets.map((dataset) => {
36-
return {
37-
id: `dataset-${dataset.id}-id`,
38-
key: dataset.id,
39-
name: dataset.name,
40-
dataset,
41-
};
42-
});
43-
}, [pinnedDatasets]);
4434

4535
return (
4636
<Flex direction={'column'} UNSAFE_className={classes.componentWrapper} height={'100%'}>
@@ -50,26 +40,27 @@ export const ProjectDataset = () => {
5040
styles={{ fontSize: 'var(--spectrum-global-dimension-font-size-350)' }}
5141
/>
5242
)}
53-
<Tabs
54-
items={items}
55-
height='100%'
56-
orientation={'vertical'}
57-
minHeight={0}
58-
UNSAFE_className={!hasSelectedPinnedDataset ? classes.noneSelected : ''}
59-
aria-label='Dataset page tabs'
43+
<ManagedTabs<Dataset>
44+
items={project.datasets}
6045
selectedKey={selectedDataset.id}
61-
onSelectionChange={(key: Key) => handleSelectDataset(String(key))}
62-
>
63-
<DatasetTabList />
64-
65-
<TabPanels height={'100%'} minHeight={0}>
66-
{(item: { dataset: Dataset }) => (
67-
<Item textValue={item.dataset.name}>
68-
<DatasetTabPanel dataset={item.dataset} />
69-
</Item>
70-
)}
71-
</TabPanels>
72-
</Tabs>
46+
onSelectionChange={(key) => handleSelectDataset(String(key))}
47+
renderTabItem={(dataset) => <ProjectDatasetTabActions dataset={dataset} />}
48+
renderTabPanel={(dataset) => <DatasetTabPanel dataset={dataset} />}
49+
addButton={{
50+
id: 'create-dataset-button-id',
51+
ariaLabel: 'Create dataset',
52+
tooltipText: 'Create new testing set',
53+
onPress: handleCreateDataset,
54+
isLoading: createDataset.isPending,
55+
}}
56+
overflow={{
57+
maxVisibleTabs: MAX_NUMBER_OF_DISPLAYED_DATASETS,
58+
pickerAriaLabel: 'Collapsed datasets',
59+
onCollapsedItemSelect: handleSelectDataset,
60+
}}
61+
ariaLabel='Dataset page tabs'
62+
/>
63+
<ExportDatasetDialog triggerState={exportDialogState} datasetName={selectedDataset.name} />
7364
</Flex>
7465
);
7566
};

0 commit comments

Comments
 (0)