diff --git a/packages/datagateway-common/src/api/lucene.test.tsx b/packages/datagateway-common/src/api/lucene.test.tsx index 3463b2c34..3211ad133 100644 --- a/packages/datagateway-common/src/api/lucene.test.tsx +++ b/packages/datagateway-common/src/api/lucene.test.tsx @@ -311,7 +311,7 @@ describe('Lucene actions', () => { message: `Unable to complete requested search in under 5 seconds. To ensure searches complete quickly, please try: - Only searching "my data" - Only searching the type of entity you need results for -- Using less wildcard characters in the search term(s) +- Using fewer wildcard characters in the search term(s) - Making the search term(s) more specific - Using the default relevancy based sorting`, }); diff --git a/packages/datagateway-common/src/api/lucene.tsx b/packages/datagateway-common/src/api/lucene.tsx index 1e510228a..d72b82001 100644 --- a/packages/datagateway-common/src/api/lucene.tsx +++ b/packages/datagateway-common/src/api/lucene.tsx @@ -169,7 +169,7 @@ const handleLuceneError = (error: AxiosError): void => { message: `Unable to complete requested search in under ${timeoutString}. To ensure searches complete quickly, please try: - Only searching "my data" - Only searching the type of entity you need results for -- Using less wildcard characters in the search term(s) +- Using fewer wildcard characters in the search term(s) - Making the search term(s) more specific - Using the default relevancy based sorting`, }, diff --git a/packages/datagateway-common/src/table/cellRenderers/__snapshots__/selectCell.component.test.tsx.snap b/packages/datagateway-common/src/table/cellRenderers/__snapshots__/selectCell.component.test.tsx.snap index 15ff48788..2b27ba47b 100644 --- a/packages/datagateway-common/src/table/cellRenderers/__snapshots__/selectCell.component.test.tsx.snap +++ b/packages/datagateway-common/src/table/cellRenderers/__snapshots__/selectCell.component.test.tsx.snap @@ -133,12 +133,13 @@ exports[`Select cell component renders correctly when selectedRows parentSelecte > diff --git a/packages/datagateway-common/src/table/cellRenderers/selectCell.component.tsx b/packages/datagateway-common/src/table/cellRenderers/selectCell.component.tsx index 5fb4adc09..e6f30c1f8 100644 --- a/packages/datagateway-common/src/table/cellRenderers/selectCell.component.tsx +++ b/packages/datagateway-common/src/table/cellRenderers/selectCell.component.tsx @@ -62,7 +62,9 @@ const SelectCell = React.memo((props: SelectCellProps): React.ReactElement => { className="tour-dataview-add-to-cart" // have to inherit as the padding="checkbox" is on the span style={{ padding: 'inherit' }} - checked={selectedRows?.includes(rowData.id) ?? false} + checked={ + (parentSelected || selectedRows?.includes(rowData.id)) ?? false + } inputProps={{ 'aria-label': `select row ${rowIndex}`, }} diff --git a/packages/datagateway-common/src/table/headerRenderers/__snapshots__/selectHeader.component.test.tsx.snap b/packages/datagateway-common/src/table/headerRenderers/__snapshots__/selectHeader.component.test.tsx.snap index 3158ae8b4..1c4dfcd69 100644 --- a/packages/datagateway-common/src/table/headerRenderers/__snapshots__/selectHeader.component.test.tsx.snap +++ b/packages/datagateway-common/src/table/headerRenderers/__snapshots__/selectHeader.component.test.tsx.snap @@ -173,12 +173,13 @@ exports[`Select column header component renders correctly when selectedRows pare > diff --git a/packages/datagateway-common/src/table/headerRenderers/selectHeader.component.test.tsx b/packages/datagateway-common/src/table/headerRenderers/selectHeader.component.test.tsx index 495641f12..645a05cb1 100644 --- a/packages/datagateway-common/src/table/headerRenderers/selectHeader.component.test.tsx +++ b/packages/datagateway-common/src/table/headerRenderers/selectHeader.component.test.tsx @@ -18,6 +18,7 @@ describe('Select column header component', () => { onUncheck, allIds: [1, 2, 3], loading: false, + parentSelected: false, }; beforeEach(() => { @@ -72,7 +73,7 @@ describe('Select column header component', () => { ); expect(asFragment()).toMatchSnapshot(); diff --git a/packages/datagateway-common/src/table/headerRenderers/selectHeader.component.tsx b/packages/datagateway-common/src/table/headerRenderers/selectHeader.component.tsx index 6cd2019b1..daedda1a3 100644 --- a/packages/datagateway-common/src/table/headerRenderers/selectHeader.component.tsx +++ b/packages/datagateway-common/src/table/headerRenderers/selectHeader.component.tsx @@ -57,6 +57,7 @@ const SelectHeader = React.memo( 0 && selectedRows.length < totalRowCount @@ -69,7 +70,8 @@ const SelectHeader = React.memo( indeterminateIcon={} size="small" checked={ - totalRowCount !== 0 && selectedRows?.length === totalRowCount + parentSelected || + (totalRowCount !== 0 && selectedRows?.length === totalRowCount) } inputProps={{ 'aria-label': 'select all rows' }} onClick={() => { diff --git a/packages/datagateway-common/src/views/addToCartButton.component.test.tsx b/packages/datagateway-common/src/views/addToCartButton.component.test.tsx index 30e5ce201..15d3c0032 100644 --- a/packages/datagateway-common/src/views/addToCartButton.component.test.tsx +++ b/packages/datagateway-common/src/views/addToCartButton.component.test.tsx @@ -165,13 +165,13 @@ describe('Generic add to cart button', () => { parentId: '1', }); - const addToCartButton = await screen.findByRole('button', { - name: 'buttons.add_to_cart', + const removeFromCartButton = await screen.findByRole('button', { + name: 'buttons.remove_from_cart', }); - expect(addToCartButton).toBeDisabled(); + expect(removeFromCartButton).toBeDisabled(); - await user.hover(addToCartButton.parentElement); + await user.hover(removeFromCartButton.parentElement); expect( await screen.findByText('buttons.parent_selected_tooltip') diff --git a/packages/datagateway-common/src/views/addToCartButton.component.tsx b/packages/datagateway-common/src/views/addToCartButton.component.tsx index 6e1edf795..25e079270 100644 --- a/packages/datagateway-common/src/views/addToCartButton.component.tsx +++ b/packages/datagateway-common/src/views/addToCartButton.component.tsx @@ -73,22 +73,32 @@ const AddToCartButton: React.FC = ( placement="bottom" > - + {isParentSelected || (selectedIds && selectedIds.includes(entityId)) ? ( + + ) : ( + + )} ); diff --git a/packages/datagateway-dataview/src/views/table/datafileTable.component.test.tsx b/packages/datagateway-dataview/src/views/table/datafileTable.component.test.tsx index 35dfaee96..33cdceefc 100644 --- a/packages/datagateway-dataview/src/views/table/datafileTable.component.test.tsx +++ b/packages/datagateway-dataview/src/views/table/datafileTable.component.test.tsx @@ -304,9 +304,9 @@ describe('Datafile table component', () => { it('selected rows only considers relevant cart items', async () => { cartItems = [ { - entityId: 1, + entityId: 5, entityType: 'dataset', - id: 1, + id: 5, name: 'test', parentEntities: [], }, diff --git a/packages/datagateway-dataview/src/views/table/datasetTable.component.test.tsx b/packages/datagateway-dataview/src/views/table/datasetTable.component.test.tsx index 2dc96c9c1..8469793ab 100644 --- a/packages/datagateway-dataview/src/views/table/datasetTable.component.test.tsx +++ b/packages/datagateway-dataview/src/views/table/datasetTable.component.test.tsx @@ -314,9 +314,9 @@ describe('Dataset table component', () => { it('selected rows only considers relevant cart items', async () => { cartItems = [ { - entityId: 1, + entityId: 5, entityType: 'investigation', - id: 1, + id: 5, name: 'test', parentEntities: [], }, diff --git a/packages/datagateway-dataview/src/views/table/isis/isisDatafilesTable.component.test.tsx b/packages/datagateway-dataview/src/views/table/isis/isisDatafilesTable.component.test.tsx index 0ce7f8cf6..6b07b7934 100644 --- a/packages/datagateway-dataview/src/views/table/isis/isisDatafilesTable.component.test.tsx +++ b/packages/datagateway-dataview/src/views/table/isis/isisDatafilesTable.component.test.tsx @@ -322,9 +322,9 @@ describe('ISIS datafiles table component', () => { it('selected rows only considers relevant cart items', async () => { cartItems = [ { - entityId: 1, + entityId: 5, entityType: 'dataset', - id: 1, + id: 5, name: 'test', parentEntities: [], }, diff --git a/packages/datagateway-search/src/card/investigationSearchCardView.component.test.tsx b/packages/datagateway-search/src/card/investigationSearchCardView.component.test.tsx index 16c86bd0a..ee22013d4 100644 --- a/packages/datagateway-search/src/card/investigationSearchCardView.component.test.tsx +++ b/packages/datagateway-search/src/card/investigationSearchCardView.component.test.tsx @@ -170,7 +170,7 @@ describe('Investigation - Card View', () => { ); }); - it("renders DLS link correctly and doesn't allow for cart selection or download", async () => { + it("renders DLS link correctly and doesn't allow for cart selection or download or DOI link", async () => { renderComponent({ hierarchy: FACILITY_NAME.dls, }); @@ -188,6 +188,7 @@ describe('Investigation - Card View', () => { expect( within(card).queryByRole('button', { name: 'buttons.download' }) ).toBeNull(); + expect(within(card).queryByRole('link', { name: 'doi 1' })).toBeNull(); }); it('renders ISIS link & file sizes correctly', async () => { diff --git a/packages/datagateway-search/src/card/investigationSearchCardView.component.tsx b/packages/datagateway-search/src/card/investigationSearchCardView.component.tsx index 8bb8146bc..061ef9c6a 100644 --- a/packages/datagateway-search/src/card/investigationSearchCardView.component.tsx +++ b/packages/datagateway-search/src/card/investigationSearchCardView.component.tsx @@ -216,24 +216,28 @@ const InvestigationCardView: React.FC = (props) => { const information = React.useMemo( () => [ - { - content: function doiFormat(entity: Investigation) { - return ( - entity?.doi && ( - - {entity.doi} - - ) - ); - }, - icon: Public, - label: t('investigations.doi'), - dataKey: 'doi', - disableSort: true, - }, + ...(hierarchy !== FACILITY_NAME.dls + ? [ + { + content: function doiFormat(entity: Investigation) { + return ( + entity?.doi && ( + + {entity.doi} + + ) + ); + }, + icon: Public, + label: t('investigations.doi'), + dataKey: 'doi', + disableSort: true, + }, + ] + : []), { icon: Fingerprint, label: t('investigations.visit_id'), @@ -297,7 +301,7 @@ const InvestigationCardView: React.FC = (props) => { disableSort: true, }, ], - [t] + [t, hierarchy] ); const moreInformation = React.useCallback( diff --git a/packages/datagateway-search/src/table/investigationSearchTable.component.test.tsx b/packages/datagateway-search/src/table/investigationSearchTable.component.test.tsx index f51ff6b41..d98954cdd 100644 --- a/packages/datagateway-search/src/table/investigationSearchTable.component.test.tsx +++ b/packages/datagateway-search/src/table/investigationSearchTable.component.test.tsx @@ -880,7 +880,7 @@ describe('Investigation Search Table component', () => { ); }); - it("renders DLS link correctly and doesn't allow for cart selection", async () => { + it("renders DLS link correctly and doesn't allow for cart selection or DOI column", async () => { renderComponent(FACILITY_NAME.dls); expect(await screen.findByText('Test title 1')).toHaveAttribute( @@ -888,6 +888,7 @@ describe('Investigation Search Table component', () => { '/browse/proposal/Test name 1/investigation/1/dataset' ); expect(screen.queryByRole('checkbox', { name: 'select row 0' })).toBeNull(); + expect(screen.queryByRole('columnheader', { name: 'DOI' })).toBeNull(); }); it('renders ISIS link & file sizes correctly', async () => { diff --git a/packages/datagateway-search/src/table/investigationSearchTable.component.tsx b/packages/datagateway-search/src/table/investigationSearchTable.component.tsx index f99c67ca4..d71d2b866 100644 --- a/packages/datagateway-search/src/table/investigationSearchTable.component.tsx +++ b/packages/datagateway-search/src/table/investigationSearchTable.component.tsx @@ -220,19 +220,23 @@ const InvestigationSearchTable: React.FC = (props) => { dataKey: 'name', disableSort: true, }, - { - label: t('investigations.doi'), - dataKey: 'doi', - cellContentRenderer: (cellProps: TableCellProps) => { - const investigation = cellProps.rowData as SearchResultSource; - return externalSiteLink( - `https://doi.org/${investigation.doi}`, - investigation.doi, - 'investigation-search-table-doi-link' - ); - }, - disableSort: true, - }, + ...(hierarchy !== FACILITY_NAME.dls + ? [ + { + label: t('investigations.doi'), + dataKey: 'doi', + cellContentRenderer: (cellProps: TableCellProps) => { + const investigation = cellProps.rowData as SearchResultSource; + return externalSiteLink( + `https://doi.org/${investigation.doi}`, + investigation.doi, + 'investigation-search-table-doi-link' + ); + }, + disableSort: true, + }, + ] + : []), { label: t('investigations.size'), dataKey: 'size',