11// lazy loading
22import React , { useEffect , useState } from "react" ;
3- import {
4- Box ,
5- Button ,
6- ButtonGroup ,
7- Grid ,
8- Stack ,
9- Tab ,
10- Tabs ,
11- Typography ,
12- } from "@mui/material" ;
3+ import { Box , Button , ButtonGroup , Grid , Stack , Tab , Tabs , Typography } from "@mui/material" ;
134import { useParams , useSearchParams } from "react-router-dom" ;
145import { RootState } from "../../types/data" ;
156import { useDispatch , useSelector } from "react-redux" ;
@@ -29,20 +20,14 @@ import { EditMetadata } from "../metadata/EditMetadata";
2920import { MainBreadcrumbs } from "../navigation/BreadCrumb" ;
3021import {
3122 deleteDatasetMetadata as deleteDatasetMetadataAction ,
32- fetchDatasetMetadata ,
33- fetchMetadataDefinitions ,
23+ fetchDatasetMetadata , fetchMetadataDefinitions ,
3424 patchDatasetMetadata as patchDatasetMetadataAction ,
3525 postDatasetMetadata ,
3626} from "../../actions/metadata" ;
3727import Layout from "../Layout" ;
3828import { ActionsMenu } from "./ActionsMenu" ;
3929import { DatasetDetails } from "./DatasetDetails" ;
40- import {
41- ArrowBack ,
42- ArrowForward ,
43- FormatListBulleted ,
44- InsertDriveFile ,
45- } from "@material-ui/icons" ;
30+ import { ArrowBack , ArrowForward , FormatListBulleted , InsertDriveFile } from "@material-ui/icons" ;
4631import { Listeners } from "../listeners/Listeners" ;
4732import AssessmentIcon from "@mui/icons-material/Assessment" ;
4833import HistoryIcon from "@mui/icons-material/History" ;
@@ -65,7 +50,6 @@ export const Dataset = (): JSX.Element => {
6550 // search parameters
6651 const [ searchParams ] = useSearchParams ( ) ;
6752 const folderId = searchParams . get ( "folder" ) ;
68-
6953 // Redux connect equivalent
7054 const dispatch = useDispatch ( ) ;
7155 const updateDatasetMetadata = (
@@ -84,40 +68,34 @@ export const Dataset = (): JSX.Element => {
8468 dispatch ( fetchFolderPath ( folderId ) ) ;
8569 const listFilesInDataset = (
8670 datasetId : string | undefined ,
87- folderId : string | null ,
88- skip : number | undefined ,
89- limit : number | undefined
90- ) => dispatch ( fetchFilesInDataset ( datasetId , folderId , skip , limit ) ) ;
71+ folderId : string | null
72+ , skip : number | undefined , limit : number | undefined ) => dispatch ( fetchFilesInDataset ( datasetId , folderId , skip , limit ) ) ;
9173 const listFoldersInDataset = (
9274 datasetId : string | undefined ,
9375 parentFolder : string | null ,
94- skip : number | undefined ,
95- limit : number | undefined
76+ skip : number | undefined , limit : number | undefined
9677 ) => dispatch ( fetchFoldersInDataset ( datasetId , parentFolder , skip , limit ) ) ;
9778 const listDatasetAbout = ( datasetId : string | undefined ) =>
9879 dispatch ( fetchDatasetAbout ( datasetId ) ) ;
9980 const listDatasetMetadata = ( datasetId : string | undefined ) =>
10081 dispatch ( fetchDatasetMetadata ( datasetId ) ) ;
101- const getMetadatDefinitions = (
102- name : string | null ,
103- skip : number ,
104- limit : number
105- ) => dispatch ( fetchMetadataDefinitions ( name , skip , limit ) ) ;
82+ const getMetadatDefinitions = ( name :string | null , skip :number , limit :number ) => dispatch ( fetchMetadataDefinitions ( name , skip , limit ) ) ;
83+
10684
10785 // mapStateToProps
10886 const about = useSelector ( ( state : RootState ) => state . dataset . about ) ;
10987 const datasetRole = useSelector (
11088 ( state : RootState ) => state . dataset . datasetRole
11189 ) ;
11290 const folderPath = useSelector ( ( state : RootState ) => state . folder . folderPath ) ;
113- const adminMode = useSelector ( ( state : RootState ) => state . user . adminMode ) ;
11491
11592 // state
11693 const [ selectedTabIndex , setSelectedTabIndex ] = useState < number > ( 0 ) ;
11794 const [ enableAddMetadata , setEnableAddMetadata ] =
11895 React . useState < boolean > ( false ) ;
11996 const [ metadataRequestForms , setMetadataRequestForms ] = useState ( { } ) ;
12097
98+ const [ allowSubmit , setAllowSubmit ] = React . useState < boolean > ( false ) ;
12199 // Error msg dialog
122100 const [ errorOpen , setErrorOpen ] = useState ( false ) ;
123101 const [ showForbiddenPage , setShowForbiddenPage ] = useState ( false ) ;
@@ -132,15 +110,12 @@ export const Dataset = (): JSX.Element => {
132110 const [ prevDisabled , setPrevDisabled ] = useState < boolean > ( true ) ;
133111 const [ nextDisabled , setNextDisabled ] = useState < boolean > ( false ) ;
134112 const filesInDataset = useSelector ( ( state : RootState ) => state . dataset . files ) ;
135- const foldersInDataset = useSelector (
136- ( state : RootState ) => state . folder . folders
137- ) ;
113+ const foldersInDataset = useSelector ( ( state : RootState ) => state . folder . folders ) ;
138114
139- // component did mount list all files in dataset
140- useEffect ( ( ) => {
141- getMetadatDefinitions ( null , 0 , 100 ) ;
142- } , [ ] ) ;
143115
116+ const metadataDefinitionList = useSelector ( ( state : RootState ) => state . metadata . metadataDefinitionList ) ;
117+
118+ // component did mount list all files in dataset
144119 useEffect ( ( ) => {
145120 listFilesInDataset ( datasetId , folderId , skip , limit ) ;
146121 listFoldersInDataset ( datasetId , folderId , skip , limit ) ;
@@ -149,17 +124,15 @@ export const Dataset = (): JSX.Element => {
149124 } , [ searchParams ] ) ;
150125
151126 useEffect ( ( ) => {
152- listFilesInDataset ( datasetId , folderId , skip , limit ) ;
153- listFoldersInDataset ( datasetId , folderId , skip , limit ) ;
154- listDatasetAbout ( datasetId ) ;
155- getFolderPath ( folderId ) ;
156- } , [ adminMode ] ) ;
127+ getMetadatDefinitions ( null , 0 , 100 ) ;
128+ } , [ ] ) ;
157129
158130 useEffect ( ( ) => {
159131 // disable flipping if reaches the last page
160132 if ( filesInDataset . length < limit && foldersInDataset . length < limit )
161133 setNextDisabled ( true ) ;
162- else setNextDisabled ( false ) ;
134+ else
135+ setNextDisabled ( false ) ;
163136 } , [ filesInDataset ] ) ;
164137
165138 useEffect ( ( ) => {
@@ -195,7 +168,7 @@ export const Dataset = (): JSX.Element => {
195168 setPaths ( tmpPaths ) ;
196169 } , [ about , folderPath ] ) ;
197170
198- // for pagination keep flipping until the return dataset is less than the limit
171+ // for pagination keep flipping until the return dataset is less than the limit
199172 const previous = ( ) => {
200173 if ( currPageNum - 1 >= 0 ) {
201174 setSkip ( ( currPageNum - 1 ) * limit ) ;
@@ -335,18 +308,17 @@ export const Dataset = (): JSX.Element => {
335308 { ...a11yProps ( 3 ) }
336309 disabled = { false }
337310 />
338- { datasetRole . role !== undefined && datasetRole . role !== "viewer" ? (
311+ { datasetRole . role !== undefined && datasetRole . role !== "viewer" ?
339312 < Tab
340313 icon = { < BuildIcon /> }
341314 iconPosition = "start"
342315 sx = { TabStyle }
343316 label = "Extract"
344317 { ...a11yProps ( 4 ) }
345318 disabled = { false }
346- />
347- ) : (
319+ /> :
348320 < > </ >
349- ) }
321+ }
350322 < Tab
351323 icon = { < HistoryIcon /> }
352324 iconPosition = "start"
@@ -355,18 +327,17 @@ export const Dataset = (): JSX.Element => {
355327 { ...a11yProps ( 5 ) }
356328 disabled = { false }
357329 />
358- { datasetRole . role !== undefined && datasetRole . role !== "viewer" ? (
330+ { datasetRole . role !== undefined && datasetRole . role !== "viewer" ?
359331 < Tab
360332 icon = { < ShareIcon /> }
361333 iconPosition = "start"
362334 sx = { TabStyle }
363335 label = "Sharing"
364336 { ...a11yProps ( 6 ) }
365337 disabled = { false }
366- />
367- ) : (
338+ /> :
368339 < > </ >
369- ) }
340+ }
370341 </ Tabs >
371342 < TabPanel value = { selectedTabIndex } index = { 0 } >
372343 { folderId !== null ? (
@@ -377,14 +348,33 @@ export const Dataset = (): JSX.Element => {
377348 < > </ >
378349 ) }
379350 < FilesTable datasetId = { datasetId } folderId = { folderId } />
351+ < Box display = "flex" justifyContent = "center" sx = { { m : 1 } } >
352+ < ButtonGroup
353+ variant = "contained"
354+ aria-label = "previous next buttons"
355+ >
356+ < Button
357+ aria-label = "previous"
358+ onClick = { previous }
359+ disabled = { prevDisabled }
360+ >
361+ < ArrowBack /> Prev
362+ </ Button >
363+ < Button
364+ aria-label = "next"
365+ onClick = { next }
366+ disabled = { nextDisabled }
367+ >
368+ Next < ArrowForward />
369+ </ Button >
370+ </ ButtonGroup >
371+ </ Box >
380372 </ TabPanel >
381373 < TabPanel value = { selectedTabIndex } index = { 1 } >
382374 < Visualization datasetId = { datasetId } />
383375 </ TabPanel >
384376 < TabPanel value = { selectedTabIndex } index = { 2 } >
385- { enableAddMetadata &&
386- datasetRole . role !== undefined &&
387- datasetRole . role !== "viewer" ? (
377+ { enableAddMetadata && datasetRole . role !== undefined && datasetRole . role !== "viewer" ? (
388378 < >
389379 < EditMetadata
390380 resourceType = "dataset"
@@ -416,21 +406,18 @@ export const Dataset = (): JSX.Element => {
416406 resourceId = { datasetId }
417407 />
418408 < Box textAlign = "center" >
419- { enableAddMetadata &&
420- datasetRole . role !== undefined &&
421- datasetRole . role !== "viewer" ? (
409+ { enableAddMetadata && datasetRole . role !== undefined && datasetRole . role !== "viewer" ?
422410 < Button
423411 variant = "contained"
424412 sx = { { m : 2 } }
425413 onClick = { ( ) => {
426414 setEnableAddMetadata ( true ) ;
427415 } }
428416 >
429- Add Metadata
430- </ Button >
431- ) : (
417+ Add Metadata
418+ </ Button > :
432419 < > </ >
433- ) }
420+ }
434421 </ Box >
435422 </ >
436423 ) }
@@ -443,37 +430,21 @@ export const Dataset = (): JSX.Element => {
443430 resourceId = { datasetId }
444431 />
445432 </ TabPanel >
446- { datasetRole . role !== undefined && datasetRole . role !== "viewer" ? (
433+ { datasetRole . role !== undefined && datasetRole . role !== "viewer" ?
447434 < TabPanel value = { selectedTabIndex } index = { 4 } >
448435 < Listeners datasetId = { datasetId } />
449- </ TabPanel >
450- ) : (
436+ </ TabPanel > :
451437 < > </ >
452- ) }
438+ }
453439 < TabPanel value = { selectedTabIndex } index = { 5 } >
454440 < ExtractionHistoryTab datasetId = { datasetId } />
455441 </ TabPanel >
456- { datasetRole . role !== undefined && datasetRole . role !== "viewer" ? (
442+ { datasetRole . role !== undefined && datasetRole . role !== "viewer" ?
457443 < TabPanel value = { selectedTabIndex } index = { 6 } >
458444 < SharingTab datasetId = { datasetId } />
459445 </ TabPanel >
460- ) : (
461- < > </ >
462- ) }
463- < Box display = "flex" justifyContent = "center" sx = { { m : 1 } } >
464- < ButtonGroup variant = "contained" aria-label = "previous next buttons" >
465- < Button
466- aria-label = "previous"
467- onClick = { previous }
468- disabled = { prevDisabled }
469- >
470- < ArrowBack /> Prev
471- </ Button >
472- < Button aria-label = "next" onClick = { next } disabled = { nextDisabled } >
473- Next < ArrowForward />
474- </ Button >
475- </ ButtonGroup >
476- </ Box >
446+ : < > </ >
447+ }
477448 </ Grid >
478449 < Grid item >
479450 < DatasetDetails details = { about } />
0 commit comments