diff --git a/CHANGELOG.md b/CHANGELOG.md
index 23bed39ec..84124ad57 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -13,6 +13,7 @@ You can also check the
- Features
- Added a way to create a link column in table charts
+ - Hidden table columns are not forced anymore to have a single filter
### 6.1.3 - 2025-11-12
diff --git a/app/charts/index.ts b/app/charts/index.ts
index 2f18b8078..a33bb0a9c 100644
--- a/app/charts/index.ts
+++ b/app/charts/index.ts
@@ -37,7 +37,6 @@ import {
Filters,
GenericChartConfig,
GenericField,
- GenericFields,
InteractiveFiltersConfig,
isColorInConfig,
isSegmentInConfig,
@@ -2959,22 +2958,6 @@ export const getFieldComponentIds = (fields: ChartConfig["fields"]) => {
);
};
-export const getGroupedFieldIds = (fields: GenericFields) => {
- return new Set(
- Object.values(fields).flatMap((f) =>
- f && (f as $IntentionalAny).isGroup ? [f.componentId] : []
- )
- );
-};
-
-export const getHiddenFieldIds = (fields: GenericFields) => {
- return new Set(
- Object.values(fields).flatMap((f) =>
- f && (f as $IntentionalAny).isHidden ? [f.componentId] : []
- )
- );
-};
-
export const getFieldComponentId = (
fields: ChartConfig["fields"],
field: string
diff --git a/app/configurator/components/filters.tsx b/app/configurator/components/filters.tsx
index 285eea82a..364b1ddee 100644
--- a/app/configurator/components/filters.tsx
+++ b/app/configurator/components/filters.tsx
@@ -60,10 +60,8 @@ import {
DRAWER_WIDTH,
} from "@/configurator/components/drawers";
import {
- dimensionToFieldProps,
MultiFilterField,
ShowValuesMappingField,
- SingleFilterField,
} from "@/configurator/components/field";
import {
canRenderDatePickerField,
@@ -104,7 +102,6 @@ import {
sortHierarchy,
} from "@/rdf/tree-utils";
import { interlace } from "@/utils/interlace";
-import { valueComparator } from "@/utils/sorting-values";
import { getTimeFilterOptions } from "@/utils/time-filter-options";
import { useEvent } from "@/utils/use-event";
@@ -1419,32 +1416,3 @@ const InteractiveTimeRangeToggle = () => {
/>
);
};
-
-export const DimensionValuesSingleFilter = ({
- dimension,
-}: {
- dimension: Component;
-}) => {
- const locale = useLocale();
- const sortedDimensionValues = useMemo(() => {
- const values = dimension.values;
- return [...values].sort(valueComparator(locale));
- }, [dimension?.values, locale]);
-
- return dimension ? (
- <>
- {sortedDimensionValues.map((d) => {
- return (
-
- );
- })}
- >
- ) : (
-
- );
-};
diff --git a/app/configurator/configurator-state/reducer.spec.tsx b/app/configurator/configurator-state/reducer.spec.tsx
index c282d894e..b4cd059d9 100644
--- a/app/configurator/configurator-state/reducer.spec.tsx
+++ b/app/configurator/configurator-state/reducer.spec.tsx
@@ -378,72 +378,6 @@ describe("applyDimensionToFilters", () => {
});
describe("applyTableDimensionToFilters", () => {
- it("should set single value filter for a keyDimension if hidden and not grouped", () => {
- const initialFilters = {};
- const expectedFilters = {
- "https://environment.ld.admin.ch/foen/ubd0104/parametertype": {
- type: "single",
- value: "E.coli",
- },
- };
-
- applyTableDimensionToFilters({
- filters: initialFilters,
- dimension: keyDimension,
- isHidden: true,
- isGrouped: false,
- cubeIri: "https://environment.ld.admin.ch/foen/ubd0104",
- });
-
- expect(initialFilters).toEqual(expectedFilters);
- });
-
- it("should not modify filter for an optionalDimension if hidden and not grouped", () => {
- const initialFilters = {
- "https://environment.ld.admin.ch/foen/ubd0104/parametertype": {
- type: "multi",
- values: { "E.coli": true, Enterokokken: true },
- },
- } as any;
- const expectedFilters = {
- "https://environment.ld.admin.ch/foen/ubd0104/parametertype": {
- type: "multi",
- values: { "E.coli": true, Enterokokken: true },
- },
- };
-
- applyTableDimensionToFilters({
- filters: initialFilters,
- dimension: optionalDimension,
- isHidden: true,
- isGrouped: false,
- cubeIri: "https://environment.ld.admin.ch/foen/ubd0104",
- });
-
- expect(initialFilters).toEqual(expectedFilters);
- });
-
- it("should not set single value filter for a keyDimension if hidden and range", () => {
- const initialFilters = {
- "https://environment.ld.admin.ch/foen/ubd0104/parametertype": {
- from: "2007-05-21",
- to: "2020-09-28",
- type: "range",
- },
- } as any;
- const expectedFilters = { ...initialFilters };
-
- applyTableDimensionToFilters({
- filters: initialFilters,
- dimension: keyDimension,
- isHidden: true,
- isGrouped: false,
- cubeIri: "https://environment.ld.admin.ch/foen/ubd0104",
- });
-
- expect(initialFilters).toEqual(expectedFilters);
- });
-
it("should not modify filters for a keyDimension if not hidden and grouped", () => {
const initialFilters = {
"https://environment.ld.admin.ch/foen/ubd0104/parametertype": {
@@ -461,8 +395,6 @@ describe("applyDimensionToFilters", () => {
applyTableDimensionToFilters({
filters: initialFilters,
dimension: keyDimension,
- isHidden: false,
- isGrouped: true,
cubeIri: "https://environment.ld.admin.ch/foen/ubd0104",
});
diff --git a/app/configurator/configurator-state/reducer.tsx b/app/configurator/configurator-state/reducer.tsx
index b904a97e7..7fb226c6a 100644
--- a/app/configurator/configurator-state/reducer.tsx
+++ b/app/configurator/configurator-state/reducer.tsx
@@ -16,8 +16,6 @@ import { Reducer } from "use-immer";
import {
getChartConfigAdjustedToChartType,
getFieldComponentIds,
- getGroupedFieldIds,
- getHiddenFieldIds,
} from "@/charts";
import {
getChartFieldChangeSideEffect,
@@ -116,10 +114,6 @@ export const deriveFiltersFromFields = produce(
if (draft.chartType === "table") {
// As dimensions in tables behave differently than in other chart types,
// they need to be handled in a different way.
- const hiddenFieldIds = getHiddenFieldIds(draft.fields);
- const groupedDimensionIds = getGroupedFieldIds(draft.fields);
- const isHidden = (dim: Dimension) => hiddenFieldIds.has(dim.id);
- const isGrouped = (dim: Dimension) => groupedDimensionIds.has(dim.id);
draft.cubes.forEach((cube) => {
const cubeDimensions = getCubeDimensions(dimensions, cube.iri);
cubeDimensions.forEach((dim) => {
@@ -127,9 +121,6 @@ export const deriveFiltersFromFields = produce(
cubeIri: cube.iri,
filters: cube.filters,
dimension: dim,
- isHidden: isHidden(dim),
- isGrouped: isGrouped(dim),
- possibleFilter: possibleFilters?.find((f) => f.id === dim.id),
});
});
});
@@ -159,52 +150,33 @@ export const deriveFiltersFromFields = produce(
}
);
-export const applyTableDimensionToFilters = (props: {
+export const applyTableDimensionToFilters = ({
+ cubeIri,
+ filters,
+ dimension,
+}: {
cubeIri: string;
filters: Filters;
dimension: Dimension;
- isHidden: boolean;
- isGrouped: boolean;
- possibleFilter?: PossibleFilterValue;
}) => {
- const { filters, dimension, isHidden, isGrouped, possibleFilter, cubeIri } =
- props;
const originalIri = isJoinByComponent(dimension)
? dimension.originalIds.find((c) => c.cubeIri === cubeIri)?.dimensionId
: dimension.id;
assert(originalIri !== undefined, "Dimension should have an IRI");
const currentFilter = filters[originalIri];
- const shouldBecomeSingleFilter = isHidden && !isGrouped;
if (currentFilter) {
switch (currentFilter.type) {
case "single":
- if (!shouldBecomeSingleFilter) {
- delete filters[originalIri];
- }
+ delete filters[originalIri];
break;
case "multi":
- if (shouldBecomeSingleFilter && dimension.isKeyDimension) {
- filters[originalIri] = {
- type: "single",
- value:
- Object.keys(currentFilter.values)[0] ?? dimension.values[0].value,
- };
- }
- break;
case "range":
break;
default:
const _exhaustiveCheck: never = currentFilter;
return _exhaustiveCheck;
}
- } else if (shouldBecomeSingleFilter && dimension.isKeyDimension) {
- filters[originalIri] = {
- type: "single",
- // TODO, possibly in case of join by dimensions, we could get a value that is not part
- // of the full range of values
- value: possibleFilter?.value ?? dimension.values[0].value,
- };
}
};
diff --git a/app/configurator/table/table-chart-options.tsx b/app/configurator/table/table-chart-options.tsx
index e186c23a5..7675b9842 100644
--- a/app/configurator/table/table-chart-options.tsx
+++ b/app/configurator/table/table-chart-options.tsx
@@ -26,7 +26,6 @@ import {
} from "@/configurator/components/field";
import {
DimensionValuesMultiFilter,
- DimensionValuesSingleFilter,
TimeFilter,
} from "@/configurator/components/filters";
import { mapValueIrisToColor } from "@/configurator/components/ui-helpers";
@@ -340,16 +339,12 @@ export const TableColumnOptions = ({
- {component.isKeyDimension && isHidden && !isGroup ? (
-
- ) : (
-
- )}
+
) : null}