@@ -40,7 +40,6 @@ import {
4040import { useTimeFormatLocale } from "@/formatters" ;
4141import { useDataCubesComponentsQuery } from "@/graphql/hooks" ;
4242import {
43- DataCubeObservationFilter ,
4443 PossibleFiltersDocument ,
4544 PossibleFiltersQuery ,
4645 PossibleFiltersQueryVariables ,
@@ -52,6 +51,7 @@ import {
5251 useChartInteractiveFilters ,
5352 useInteractiveFiltersGetState ,
5453} from "@/stores/interactive-filters" ;
54+ import { assert } from "@/utils/assert" ;
5555import { hierarchyToOptions } from "@/utils/hierarchy" ;
5656import useEvent from "@/utils/use-event" ;
5757
@@ -69,8 +69,9 @@ export const useChartDataFiltersState = ({
6969 dataSource : DataSource ;
7070 chartConfig : ChartConfig ;
7171} ) => {
72- const componentIris = chartConfig . interactiveFiltersConfig ?. dataFilters
73- . componentIris as string [ ] ;
72+ const componentIris =
73+ chartConfig . interactiveFiltersConfig ?. dataFilters . componentIris ;
74+ assert ( componentIris , "Data filters are not enabled for this chart." ) ;
7475 const [ open , setOpen ] = useState ( false ) ;
7576 useEffect ( ( ) => {
7677 if ( componentIris . length === 0 ) {
@@ -83,29 +84,25 @@ export const useChartDataFiltersState = ({
8384 allowNoneValues : true ,
8485 componentIris,
8586 } ) ;
86- const preparedFilters : PreparedFilter [ ] | undefined = useMemo ( ( ) => {
87+ const preparedFilters = useMemo ( ( ) => {
8788 return chartConfig . cubes . map ( ( cube ) => {
88- const cubeQueryFilters = queryFilters . find (
89- ( d ) => d . iri === cube . iri
90- ) as DataCubeObservationFilter ;
89+ const cubeQueryFilters = queryFilters . find ( ( d ) => d . iri === cube . iri ) ;
90+ assert ( cubeQueryFilters , "Cube query filters not found." ) ;
9191 const filtersByMappingStatus = getFiltersByMappingStatus ( chartConfig , {
9292 cubeIri : cube . iri ,
9393 } ) ;
9494 const { unmappedFilters, mappedFilters } = filtersByMappingStatus ;
9595 const unmappedKeys = Object . keys ( unmappedFilters ) ;
96- const unmappedFiltersArray = Object . entries (
96+ const unmappedEntries = Object . entries (
9797 cubeQueryFilters . filters as Filters
9898 ) . filter ( ( [ k ] ) => unmappedKeys . includes ( k ) ) ;
99- const interactiveFiltersArray = unmappedFiltersArray . filter ( ( [ k ] ) =>
99+ const interactiveFiltersList = unmappedEntries . filter ( ( [ k ] ) =>
100100 componentIris . includes ( k )
101101 ) ;
102-
103102 return {
104103 cubeIri : cube . iri ,
105- interactiveFilters : Object . fromEntries ( interactiveFiltersArray ) ,
106- unmappedFilters : Object . fromEntries (
107- unmappedFiltersArray
108- ) as SingleFilters ,
104+ interactiveFilters : Object . fromEntries ( interactiveFiltersList ) ,
105+ unmappedFilters : Object . fromEntries ( unmappedEntries ) as SingleFilters ,
109106 mappedFilters,
110107 } ;
111108 } ) ;
@@ -214,44 +211,43 @@ export const ChartDataFiltersList = (
214211 gridTemplateColumns : "repeat(auto-fit, minmax(240px, 1fr))" ,
215212 } }
216213 >
217- { preparedFilters ?. map ( ( { cubeIri, interactiveFilters } ) =>
218- Object . keys ( interactiveFilters ) . map ( ( dimensionIri ) => (
219- < DataFilter
220- key = { dimensionIri }
221- cubeIri = { cubeIri }
222- dimensionIri = { dimensionIri }
223- dataSource = { dataSource }
224- chartConfig = { chartConfig }
225- dataFilters = { dataFilters }
226- interactiveFilters = { interactiveFilters }
227- disabled = { loading }
228- />
229- ) )
230- ) }
214+ { preparedFilters . map ( ( { cubeIri, interactiveFilters } ) => {
215+ return Object . keys ( interactiveFilters ) . map ( ( dimensionIri ) => {
216+ return (
217+ < DataFilter
218+ key = { dimensionIri }
219+ cubeIri = { cubeIri }
220+ dimensionIri = { dimensionIri }
221+ dataSource = { dataSource }
222+ chartConfig = { chartConfig }
223+ dataFilters = { dataFilters }
224+ interactiveFilters = { interactiveFilters }
225+ disabled = { loading }
226+ />
227+ ) ;
228+ } ) ;
229+ } ) }
231230 </ Box >
232231 ) : null ;
233232} ;
234233
235- type DataFilterProps = {
234+ const DataFilter = ( {
235+ cubeIri,
236+ dimensionIri,
237+ dataSource,
238+ chartConfig,
239+ dataFilters,
240+ interactiveFilters,
241+ disabled,
242+ } : {
236243 cubeIri : string ;
237244 dimensionIri : string ;
238245 dataSource : DataSource ;
239246 chartConfig : ChartConfig ;
240247 dataFilters : DataFilters ;
241248 interactiveFilters : Filters ;
242249 disabled : boolean ;
243- } ;
244-
245- const DataFilter = ( props : DataFilterProps ) => {
246- const {
247- cubeIri,
248- dimensionIri,
249- dataSource,
250- chartConfig,
251- dataFilters,
252- interactiveFilters,
253- disabled,
254- } = props ;
250+ } ) => {
255251 const locale = useLocale ( ) ;
256252 const filters = useChartConfigFilters ( chartConfig ) ;
257253 const chartLoadingState = useLoadingState ( ) ;
0 commit comments