1919
2020import createCachedSelector from 're-reselect' ;
2121
22+ import { GlobalChartState } from '../../../../state/chart_state' ;
2223import { getChartIdSelector } from '../../../../state/selectors/get_chart_id' ;
2324import { getSettingsSpecSelector } from '../../../../state/selectors/get_settings_specs' ;
2425import { nullShapeViewModel , ShapeViewModel } from '../../layout/types/viewmodel_types' ;
2526import { computeChartDimensionsSelector } from './compute_chart_dimensions' ;
2627import { getColorScale } from './get_color_scale' ;
2728import { getHeatmapSpecSelector } from './get_heatmap_spec' ;
2829import { getHeatmapTableSelector } from './get_heatmap_table' ;
30+ import { getLegendItemsLabelsSelector } from './get_legend_items_labels' ;
2931import { render } from './scenegraph' ;
3032
33+ const getDeselectedSeriesSelector = ( state : GlobalChartState ) => state . interactions . deselectedDataSeries ;
34+
3135/** @internal */
3236export const geometries = createCachedSelector (
3337 [
@@ -36,10 +40,34 @@ export const geometries = createCachedSelector(
3640 getSettingsSpecSelector ,
3741 getHeatmapTableSelector ,
3842 getColorScale ,
43+ getLegendItemsLabelsSelector ,
44+ getDeselectedSeriesSelector ,
3945 ] ,
40- ( heatmapSpec , chartDimensions , settingSpec , heatmapTable , colorScale ) : ShapeViewModel => {
46+ (
47+ heatmapSpec ,
48+ chartDimensions ,
49+ settingSpec ,
50+ heatmapTable ,
51+ colorScale ,
52+ legendItems ,
53+ deselectedSeries ,
54+ ) : ShapeViewModel => {
55+ const deselectedTicks = new Set (
56+ deselectedSeries . map ( ( { specId } ) => {
57+ return Number ( specId ) ;
58+ } ) ,
59+ ) ;
60+ const { ticks } = colorScale ;
61+ const ranges = ticks . reduce < Array < [ number , number | null ] > > ( ( acc , d , i ) => {
62+ if ( deselectedTicks . has ( d ) ) {
63+ const rangeEnd = i + 1 === ticks . length ? null : ticks [ i + 1 ] ;
64+ acc . push ( [ d , rangeEnd ] ) ;
65+ }
66+ return acc ;
67+ } , [ ] ) ;
68+
4169 return heatmapSpec
42- ? render ( heatmapSpec , settingSpec , chartDimensions , heatmapTable , colorScale )
70+ ? render ( heatmapSpec , settingSpec , chartDimensions , heatmapTable , colorScale , ranges )
4371 : nullShapeViewModel ( ) ;
4472 } ,
4573) ( getChartIdSelector ) ;
0 commit comments