diff --git a/packages/openneuro-app/src/scripts/search/initial-search-params.tsx b/packages/openneuro-app/src/scripts/search/initial-search-params.tsx index 53bdef0970..171c97e9a9 100644 --- a/packages/openneuro-app/src/scripts/search/initial-search-params.tsx +++ b/packages/openneuro-app/src/scripts/search/initial-search-params.tsx @@ -155,6 +155,8 @@ export interface SearchParams { tracerRadionuclides: string[] sortBy_available sortBy_selected + bidsDatasetType_available: string[] + bidsDatasetType_selected: string | null } // TODO: move to this initial state @@ -237,6 +239,8 @@ const TEMPORARY_initialSearchParams: SearchParams = { tracerRadionuclides: [], sortBy_available: sortBy, sortBy_selected: sortBy[0], + bidsDatasetType_available: ["raw", "derivative"], + bidsDatasetType_selected: null, } export default TEMPORARY_initialSearchParams diff --git a/packages/openneuro-app/src/scripts/search/inputs/dataset-type-select.tsx b/packages/openneuro-app/src/scripts/search/inputs/dataset-type-select.tsx new file mode 100644 index 0000000000..1194007ff7 --- /dev/null +++ b/packages/openneuro-app/src/scripts/search/inputs/dataset-type-select.tsx @@ -0,0 +1,33 @@ +import React, { FC, useContext } from "react" +import { SearchParamsCtx } from "../search-params-ctx" +import { FacetSelect } from "@openneuro/components/facets" +import { AccordionTab, AccordionWrap } from "@openneuro/components/accordion" + +const DatasetTypeSelect: FC = () => { + const { searchParams, setSearchParams } = useContext(SearchParamsCtx) + + const { bidsDatasetType_selected, bidsDatasetType_available } = searchParams + const setDatasetType = (bidsDatasetType_selected) => + setSearchParams((prevState) => ({ + ...prevState, + bidsDatasetType_selected, + })) + + return ( + + + + + + ) +} + +export default DatasetTypeSelect diff --git a/packages/openneuro-app/src/scripts/search/inputs/index.ts b/packages/openneuro-app/src/scripts/search/inputs/index.ts index 5b9395c77b..539cd4228c 100644 --- a/packages/openneuro-app/src/scripts/search/inputs/index.ts +++ b/packages/openneuro-app/src/scripts/search/inputs/index.ts @@ -4,6 +4,7 @@ import ModalitySelect from "./modality-select" import ShowDatasetRadios from "./show-datasets-radios" import AgeRangeInput from "./age-range-input" import SubjectCountRangeInput from "./subject-count-range-input" +import DatasetTypeSelect from "./dataset-type-select" import DiagnosisSelect from "./diagnosis-select" import TaskInput from "./task-input" import AuthorInput from "./author-input" @@ -24,6 +25,7 @@ export { AllDatasetsToggle, AuthorInput, BodyPartsInput, + DatasetTypeSelect, DateRadios, DiagnosisSelect, KeywordInput, diff --git a/packages/openneuro-app/src/scripts/search/search-container.tsx b/packages/openneuro-app/src/scripts/search/search-container.tsx index e733aebe2f..31739e2f19 100644 --- a/packages/openneuro-app/src/scripts/search/search-container.tsx +++ b/packages/openneuro-app/src/scripts/search/search-container.tsx @@ -16,6 +16,7 @@ import { AllDatasetsToggle, AuthorInput, BodyPartsInput, + DatasetTypeSelect, DateRadios, DiagnosisSelect, KeywordInput, @@ -166,6 +167,7 @@ const SearchContainer: FC = ({ portalContent }) => { {!portalContent ? : } + diff --git a/packages/openneuro-app/src/scripts/search/search-params-ctx.tsx b/packages/openneuro-app/src/scripts/search/search-params-ctx.tsx index 2d164f2ba7..89237bb3cc 100644 --- a/packages/openneuro-app/src/scripts/search/search-params-ctx.tsx +++ b/packages/openneuro-app/src/scripts/search/search-params-ctx.tsx @@ -123,6 +123,7 @@ export const getSelectParams = ({ scannerManufacturersModelNames, tracerNames, tracerRadionuclides, + bidsDatasetType_selected, }) => ({ keywords, modality_selected, @@ -144,6 +145,7 @@ export const getSelectParams = ({ scannerManufacturersModelNames, tracerNames, tracerRadionuclides, + bidsDatasetType_selected, }) /** diff --git a/packages/openneuro-components/src/search-page/FiltersBlock.tsx b/packages/openneuro-components/src/search-page/FiltersBlock.tsx index 84ef38645f..5e71b95f2a 100644 --- a/packages/openneuro-components/src/search-page/FiltersBlock.tsx +++ b/packages/openneuro-components/src/search-page/FiltersBlock.tsx @@ -6,7 +6,6 @@ import { TermListItem } from "./TermListItem" import { FacetSelectValueType } from "../facets/FacetSelect" import { NeurobagelSearch } from "./NeurobagelSearch" - export interface FiltersBlockProps { keywords: string[] modality_selected?: FacetSelectValueType @@ -33,6 +32,7 @@ export interface FiltersBlockProps { removeAllFilters?(): void numTotalResults: number loading: boolean + bidsDatasetType_selected?: FacetSelectValueType } export const FiltersBlock = ({ @@ -61,6 +61,7 @@ export const FiltersBlock = ({ removeFilterItem, removeAllFilters, numTotalResults, + bidsDatasetType_selected, }: FiltersBlockProps) => { const ageRangeIsNull = JSON.stringify(ageRange) === JSON.stringify([null, null]) @@ -114,6 +115,16 @@ export const FiltersBlock = ({ removeFilterItem={removeFilterItem(true)} /> )} + {bidsDatasetType_selected && ( + + )} {!searchAllDatasets && ( <> {datasetType_selected && (