From a2e37254f1abd0f9969587166e1945111fd73d21 Mon Sep 17 00:00:00 2001 From: rjohanek Date: Tue, 12 Nov 2024 14:06:32 -0500 Subject: [PATCH 1/8] add new footer component and add to the table --- .../data_search/DatasetSearchFooter.tsx | 39 +++++++++++++++++++ .../data_search/DatasetSearchTable.jsx | 13 ++----- 2 files changed, 43 insertions(+), 9 deletions(-) create mode 100644 src/components/data_search/DatasetSearchFooter.tsx diff --git a/src/components/data_search/DatasetSearchFooter.tsx b/src/components/data_search/DatasetSearchFooter.tsx new file mode 100644 index 000000000..ae4541591 --- /dev/null +++ b/src/components/data_search/DatasetSearchFooter.tsx @@ -0,0 +1,39 @@ +import * as _ from 'lodash'; +import {Button} from '@mui/material'; +import * as React from 'react'; +import {Dataset} from 'src/types/model'; + +interface DatasetSearchFooterProps { + selectedDatasets: number[]; + datasets: Dataset[]; + onClick: () => void; +} +export const DatasetSearchFooter = (props: DatasetSearchFooterProps) => { + const { selectedDatasets, datasets, onClick } = props; + const selectedStudies = _.uniq( + _.filter(datasets, dataset => selectedDatasets.includes(dataset.datasetId)) + .map(dataset => dataset.study.studyId)); + return
+ {selectedDatasets.length > 1 && selectedStudies.length > 1 && (
{selectedDatasets.length} Datasets selected from {selectedStudies.length} Studies
)} + {selectedDatasets.length > 1 && selectedStudies.length === 1 && (
{selectedDatasets.length} Datasets selected from 1 Study
)} + {selectedDatasets.length === 1 && (
1 Dataset selected from 1 Study
)} + +
; +}; \ No newline at end of file diff --git a/src/components/data_search/DatasetSearchTable.jsx b/src/components/data_search/DatasetSearchTable.jsx index b83640dd7..0c830bd9f 100644 --- a/src/components/data_search/DatasetSearchTable.jsx +++ b/src/components/data_search/DatasetSearchTable.jsx @@ -2,7 +2,7 @@ import Tab from '@mui/material/Tab'; import Tabs from '@mui/material/Tabs'; import * as React from 'react'; import { Box, Button } from '@mui/material'; -import { useEffect, useState, useRef } from 'react'; +import { useEffect, useState } from 'react'; import { isEmpty } from 'lodash'; import { TerraDataRepo } from '../../libs/ajax/TerraDataRepo'; import { DatasetSearchTableDisplay } from './DatasetSearchTableDisplay'; @@ -14,6 +14,7 @@ import DatasetFilterList from './DatasetFilterList'; import { Notifications } from '../../libs/utils'; import { Styles } from '../../libs/theme'; import * as _ from 'lodash'; +import {DatasetSearchFooter} from './DatasetSearchFooter'; const styles = { subTab: { @@ -271,14 +272,8 @@ export const DatasetSearchTable = (props) => { })()} - - { - !isEmpty(datasets) && - - } - + + {!isEmpty(selected) && } ); From 559a198b4f7d79a043f69ec36bf56c6da95e86fe Mon Sep 17 00:00:00 2001 From: rjohanek Date: Tue, 12 Nov 2024 14:27:26 -0500 Subject: [PATCH 2/8] linting --- src/components/data_search/DatasetSearchFooter.tsx | 4 ++-- src/components/data_search/DatasetSearchTable.jsx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/data_search/DatasetSearchFooter.tsx b/src/components/data_search/DatasetSearchFooter.tsx index ae4541591..f51330e97 100644 --- a/src/components/data_search/DatasetSearchFooter.tsx +++ b/src/components/data_search/DatasetSearchFooter.tsx @@ -29,11 +29,11 @@ export const DatasetSearchFooter = (props: DatasetSearchFooterProps) => { {selectedDatasets.length > 1 && selectedStudies.length === 1 && (
{selectedDatasets.length} Datasets selected from 1 Study
)} {selectedDatasets.length === 1 && (
1 Dataset selected from 1 Study
)} ; -}; \ No newline at end of file +}; diff --git a/src/components/data_search/DatasetSearchTable.jsx b/src/components/data_search/DatasetSearchTable.jsx index 71a03dc8b..362cc7573 100644 --- a/src/components/data_search/DatasetSearchTable.jsx +++ b/src/components/data_search/DatasetSearchTable.jsx @@ -1,6 +1,6 @@ import Tab from '@mui/material/Tab'; import Tabs from '@mui/material/Tabs'; -import useOnMount from '@mui/utils/useOnMount' +import useOnMount from '@mui/utils/useOnMount'; import * as React from 'react'; import { Box, Button } from '@mui/material'; import { useEffect, useState } from 'react'; @@ -141,7 +141,7 @@ export const DatasetSearchTable = (props) => { 'dac.dacName': term } })) - } + } }); if (filterTerms.length > 0) { From fc9188ce6f1ddf997f5acaa6d28f2146aaacf48b Mon Sep 17 00:00:00 2001 From: rjohanek Date: Wed, 13 Nov 2024 09:22:21 -0500 Subject: [PATCH 3/8] PR feedback: simplify div logic --- src/components/data_search/DatasetSearchFooter.tsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/components/data_search/DatasetSearchFooter.tsx b/src/components/data_search/DatasetSearchFooter.tsx index f51330e97..ded789eaf 100644 --- a/src/components/data_search/DatasetSearchFooter.tsx +++ b/src/components/data_search/DatasetSearchFooter.tsx @@ -13,6 +13,9 @@ export const DatasetSearchFooter = (props: DatasetSearchFooterProps) => { const selectedStudies = _.uniq( _.filter(datasets, dataset => selectedDatasets.includes(dataset.datasetId)) .map(dataset => dataset.study.studyId)); + const datasetText = selectedDatasets.length > 1 ? 'datasets' : 'dataset'; + const studyText = selectedStudies.length > 1 ? 'studies' : 'study'; + return
{ border: '1px solid #DEDEDE', alignItems: 'center' }}> - {selectedDatasets.length > 1 && selectedStudies.length > 1 && (
{selectedDatasets.length} Datasets selected from {selectedStudies.length} Studies
)} - {selectedDatasets.length > 1 && selectedStudies.length === 1 && (
{selectedDatasets.length} Datasets selected from 1 Study
)} - {selectedDatasets.length === 1 && (
1 Dataset selected from 1 Study
)} +
{selectedDatasets.length} {datasetText} selected from {selectedStudies.length} {studyText}