77 BandXVariables ,
88 BaseVariables ,
99 ChartStateData ,
10+ InteractiveFiltersVariables ,
1011 NumericalYErrorVariables ,
1112 NumericalYVariables ,
1213 RenderingVariables ,
@@ -15,12 +16,14 @@ import {
1516 useBandXVariables ,
1617 useBaseVariables ,
1718 useChartData ,
19+ useInteractiveFiltersVariables ,
1820 useNumericalYErrorVariables ,
1921 useNumericalYVariables ,
2022 useSegmentVariables ,
2123} from "@/charts/shared/chart-state" ;
2224import { useRenderingKeyVariable } from "@/charts/shared/rendering-utils" ;
2325import { ColumnConfig , useChartConfigFilters } from "@/configurator" ;
26+ import { Observation , isTemporalEntityDimension } from "@/domain/data" ;
2427import { sortByIndex } from "@/utils/array" ;
2528
2629import { ChartProps } from "../shared/ChartProps" ;
@@ -31,7 +34,8 @@ export type ColumnsGroupedStateVariables = BaseVariables &
3134 NumericalYVariables &
3235 NumericalYErrorVariables &
3336 SegmentVariables &
34- RenderingVariables ;
37+ RenderingVariables &
38+ InteractiveFiltersVariables ;
3539
3640export const useColumnsGroupedStateVariables = (
3741 props : ChartProps < ColumnConfig >
@@ -46,6 +50,7 @@ export const useColumnsGroupedStateVariables = (
4650 } = props ;
4751 const { fields, interactiveFiltersConfig } = chartConfig ;
4852 const { x, y, segment, animation } = fields ;
53+ const xDimension = dimensionsByIri [ x . componentIri ] ;
4954 const filters = useChartConfigFilters ( chartConfig ) ;
5055
5156 const baseVariables = useBaseVariables ( chartConfig ) ;
@@ -65,31 +70,38 @@ export const useColumnsGroupedStateVariables = (
6570 dimensionsByIri,
6671 observations,
6772 } ) ;
73+ const interactiveFiltersVariables = useInteractiveFiltersVariables (
74+ interactiveFiltersConfig ,
75+ { dimensionsByIri }
76+ ) ;
6877
69- const { getX } = bandXVariables ;
78+ const { getX, getXAsDate } = bandXVariables ;
7079 const { getY } = numericalYVariables ;
7180 const sortData : ColumnsGroupedStateVariables [ "sortData" ] = useCallback (
7281 ( data ) => {
7382 const { sortingOrder, sortingType } = x . sorting ?? { } ;
83+ const xGetter = isTemporalEntityDimension ( xDimension )
84+ ? ( d : Observation ) => getXAsDate ( d ) . getTime ( ) . toString ( )
85+ : getX ;
7486 const order = [
7587 ...rollup (
7688 data ,
7789 ( v ) => sum ( v , ( d ) => getY ( d ) ) ,
78- ( d ) => getX ( d )
90+ ( d ) => xGetter ( d )
7991 ) ,
8092 ]
8193 . sort ( ( a , b ) => ascending ( a [ 1 ] , b [ 1 ] ) )
8294 . map ( ( d ) => d [ 0 ] ) ;
8395
8496 if ( sortingType === "byDimensionLabel" ) {
85- return orderBy ( data , getX , sortingOrder ) ;
97+ return orderBy ( data , xGetter , sortingOrder ) ;
8698 } else if ( sortingType === "byMeasure" ) {
87- return sortByIndex ( { data, order, getCategory : getX , sortingOrder } ) ;
99+ return sortByIndex ( { data, order, getCategory : xGetter , sortingOrder } ) ;
88100 } else {
89- return orderBy ( data , getX , "asc" ) ;
101+ return orderBy ( data , xGetter , "asc" ) ;
90102 }
91103 } ,
92- [ getX , getY , x . sorting ]
104+ [ getX , getXAsDate , getY , x . sorting , xDimension ]
93105 ) ;
94106
95107 const getRenderingKey = useRenderingKeyVariable (
@@ -106,6 +118,7 @@ export const useColumnsGroupedStateVariables = (
106118 ...numericalYVariables ,
107119 ...numericalYErrorVariables ,
108120 ...segmentVariables ,
121+ ...interactiveFiltersVariables ,
109122 getRenderingKey,
110123 } ;
111124} ;
@@ -115,8 +128,13 @@ export const useColumnsGroupedStateData = (
115128 variables : ColumnsGroupedStateVariables
116129) : ChartStateData => {
117130 const { chartConfig, observations } = chartProps ;
118- const { sortData, getXAsDate, getY, getSegmentAbbreviationOrLabel } =
119- variables ;
131+ const {
132+ sortData,
133+ getXAsDate,
134+ getY,
135+ getSegmentAbbreviationOrLabel,
136+ getTimeRangeDate,
137+ } = variables ;
120138 const plottableData = usePlottableData ( observations , {
121139 getY,
122140 } ) ;
@@ -127,6 +145,7 @@ export const useColumnsGroupedStateData = (
127145 chartConfig,
128146 getXAsDate,
129147 getSegmentAbbreviationOrLabel,
148+ getTimeRangeDate,
130149 } ) ;
131150
132151 return {
0 commit comments