diff --git a/examples/openspending/components/DatasetsSearch.tsx b/examples/openspending/components/DatasetsSearch.tsx index 7e7d364c..1d872f97 100644 --- a/examples/openspending/components/DatasetsSearch.tsx +++ b/examples/openspending/components/DatasetsSearch.tsx @@ -49,20 +49,35 @@ export default function DatasetsSearch({ ? dataset.countryCode === watch().country : true ) - // TODO: Does that really makes sense? - // What if the fiscalPeriod is 2015-2017 and inputs are - // set to 2015-2016. It's going to be filtered out but - // it shouldn't. - .filter((dataset) => - watch().minDate && watch().minDate !== '' - ? dataset.fiscalPeriod?.start >= watch().minDate - : true - ) - .filter((dataset) => - watch().maxDate && watch().maxDate !== '' - ? dataset.fiscalPeriod?.end <= watch().maxDate - : true - ); + .filter((dataset) => { + const filterMinDate = watch().minDate; + const filterMaxDate = watch().maxDate; + + const datasetMinDate = dataset.fiscalPeriod?.start; + const datasetMaxDate = dataset.fiscalPeriod?.end; + + let datasetStartOverlaps = false; + if (datasetMinDate) { + datasetStartOverlaps = + datasetMinDate >= filterMinDate && datasetMinDate <= filterMaxDate; + } + + let datasetEndOverlaps = false; + if (datasetMaxDate) { + datasetEndOverlaps = + datasetMaxDate >= filterMinDate && datasetMaxDate <= filterMaxDate; + } + + if (filterMinDate && filterMaxDate) { + return datasetStartOverlaps || datasetEndOverlaps; + } else if (filterMinDate) { + return datasetMinDate >= filterMinDate; + } else if (filterMaxDate) { + return datasetMinDate <= filterMaxDate; + } + + return true; + }); const paginatedDatasets = filteredDatasets.slice( (page - 1) * itemsPerPage, @@ -111,7 +126,9 @@ export default function DatasetsSearch({
This dataset contains {project.files.length} file - {project.files.length != 1 ? '' : 's'} + {project.files.length == 1 ? '' : 's'}
| @@ -169,6 +168,44 @@ export default function ProjectPage({ |