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
86import { Dataset } from '../../../../core/projects/dataset.interface' ;
97import { isAnomalyDomain } from '../../../../core/projects/domains' ;
108import { TUTORIAL_CARD_KEYS } from '../../../../core/user-settings/dtos/user-settings.interface' ;
119import { useDataset } from '../../../../providers/dataset-provider/dataset-provider.component' ;
10+ import { ManagedTabs } from '../../../../shared/components/managed-tabs/managed-tabs.component' ;
1211import { TutorialCardBuilder } from '../../../../shared/components/tutorial-card/tutorial-card-builder.component' ;
13- import { hasEqualId } from '../../../../shared/utils' ;
1412import { useProject } from '../../providers/project-provider/project-provider.component' ;
15- import { DatasetTabList } from './dataset-tab-list.component' ;
1613import { 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
1819import 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*/
2728export 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