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 && (