Skip to content

Commit 8fd3755

Browse files
authored
Merge pull request #1554 from visualize-admin/fix/concept-filters-in-drawer
fix: Filtering by termsets
2 parents d8a7277 + 96606c4 commit 8fd3755

5 files changed

Lines changed: 37 additions & 26 deletions

File tree

app/browser/context.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,11 +209,12 @@ const createUseBrowseState = ({ syncWithUrl }: { syncWithUrl: boolean }) => {
209209
dataset,
210210
setDataset,
211211
filters,
212-
setFilters: (filters: BrowseFilter[]) =>
212+
setFilters: (filters: BrowseFilter[]) => {
213213
setParams((params) => ({
214214
...params,
215215
...getParamsFromFilters(filters),
216-
})),
216+
}));
217+
},
217218
}),
218219
[
219220
includeDrafts,

app/browser/dataset-browse.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -690,9 +690,11 @@ const NavSection = ({
690690
const TermsetNavSection = ({
691691
currentFilter,
692692
termsetCounts,
693+
disableLinks,
693694
}: {
694695
currentFilter: Termset | undefined;
695696
termsetCounts: { termset: Termset; count: number }[];
697+
disableLinks: boolean;
696698
}) => {
697699
const { counts, termsets } = useMemo(() => {
698700
const termsets = termsetCounts.map((x) => x.termset) ?? [];
@@ -719,6 +721,7 @@ const TermsetNavSection = ({
719721
label={<Trans id="browse-panel.termsets">Concepts</Trans>}
720722
filters={[]}
721723
counts={counts}
724+
disableLinks={disableLinks}
722725
/>
723726
);
724727
};
@@ -872,6 +875,7 @@ export const SearchFilters = ({
872875
<TermsetNavSection
873876
termsetCounts={termsetCounts ?? []}
874877
currentFilter={termsetFilter}
878+
disableLinks={disableNavLinks}
875879
/>
876880
);
877881
const navs = sortBy(

app/browser/filters.tsx

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -66,16 +66,25 @@ export const getParamsFromFilters = (filters: BrowseFilter[]) => {
6666
for (const filter of filters) {
6767
const typeAttr = i === 0 ? "type" : ("subtype" as const);
6868
const iriAttr = i === 0 ? "iri" : ("subiri" as const);
69-
if (filter.__typename === SearchCubeFilterType.DataCubeTheme) {
70-
params[typeAttr] = "theme";
71-
params[iriAttr] = filter.iri;
72-
} else if (
73-
filter.__typename === SearchCubeFilterType.DataCubeOrganization
74-
) {
75-
params[typeAttr] = "organization";
76-
params[iriAttr] = filter.iri;
77-
} else if (filter.__typename === SearchCubeFilterType.DataCubeAbout) {
78-
params.topic = filter.iri;
69+
switch (filter.__typename) {
70+
case "DataCubeTheme":
71+
params[typeAttr] = "theme";
72+
params[iriAttr] = filter.iri;
73+
break;
74+
case "DataCubeOrganization":
75+
params[typeAttr] = "organization";
76+
params[iriAttr] = filter.iri;
77+
break;
78+
case "DataCubeAbout":
79+
params.topic = filter.iri;
80+
break;
81+
case "Termset":
82+
params[typeAttr] = "termset";
83+
params[iriAttr] = filter.iri;
84+
break;
85+
default:
86+
const _exhaustiveCheck: never = filter;
87+
return _exhaustiveCheck;
7988
}
8089
i++;
8190
}

app/browser/select-dataset-step.tsx

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@ import { Router, useRouter } from "next/router";
1010
import React, { useMemo } from "react";
1111
import { useDebounce } from "use-debounce";
1212

13+
import {
14+
BrowseStateProvider,
15+
buildURLFromBrowseState,
16+
useBrowseContext,
17+
} from "@/browser/context";
1318
import {
1419
DatasetResults,
1520
DatasetResultsProps,
@@ -18,6 +23,7 @@ import {
1823
SearchFilters,
1924
} from "@/browser/dataset-browse";
2025
import { DataSetPreview, DataSetPreviewProps } from "@/browser/dataset-preview";
26+
import { BrowseFilter, DataCubeAbout } from "@/browser/filters";
2127
import { useSearchPageData } from "@/browser/search-page-data";
2228
import { DatasetMetadata } from "@/components/dataset-metadata";
2329
import Flex from "@/components/flex";
@@ -48,13 +54,6 @@ import {
4854
import { Icon } from "@/icons";
4955
import { useConfiguratorState, useLocale } from "@/src";
5056

51-
import {
52-
BrowseStateProvider,
53-
buildURLFromBrowseState,
54-
useBrowseContext,
55-
} from "./context";
56-
import { BrowseFilter, DataCubeAbout } from "./filters";
57-
5857
const softJSONParse = (v: string) => {
5958
try {
6059
return JSON.parse(v);
@@ -75,20 +74,18 @@ const useStyles = makeStyles<
7574
margin: "auto",
7675
position: "static",
7776
marginTop: ({ datasetPresent, variant }) =>
78-
datasetPresent && variant !== "drawer" ? 96 : 0,
77+
datasetPresent && variant !== "drawer" ? BANNER_MARGIN_TOP : 0,
7978
height: "auto",
8079
transition: "margin-top 0.5s ease",
8180
},
8281
panelLeft: {
8382
// To prevent weird look when dataset metadata is loading
84-
minHeight: "calc(100vh - 96px)",
83+
minHeight: `calc(100vh - ${BANNER_MARGIN_TOP}px)`,
8584
backgroundColor: "transparent",
8685
paddingTop: ({ datasetPresent }) =>
8786
datasetPresent ? 48 : theme.spacing(5),
8887
boxShadow: "none",
89-
borderRightColor: theme.palette.grey[300],
90-
borderRightStyle: "solid",
91-
borderRightWidth: 1,
88+
borderRight: `1px solid ${theme.palette.grey[300]}`,
9289
transition: "padding-top 0.5s ease",
9390
},
9491
panelMiddle: {

app/pages/browse/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import { ConfiguratorStateProvider } from "@/configurator/configurator-state";
44
import { SearchCubeResultOrder } from "@/graphql/query-hooks";
55

66
export type BrowseParams = {
7-
type?: "theme" | "organization" | "dataset";
8-
subtype?: "theme" | "organization";
7+
type?: "theme" | "organization" | "dataset" | "termset";
8+
subtype?: "theme" | "organization" | "termset";
99
iri?: string;
1010
subiri?: string;
1111
topic?: string;

0 commit comments

Comments
 (0)