From a39c37ab17c46ac729335a7a8c5f1b0b568fc396 Mon Sep 17 00:00:00 2001 From: Marco Vettorello Date: Mon, 23 Nov 2020 15:44:00 +0100 Subject: [PATCH 1/5] fix: use default groupId when using useDefaultGroupDomain --- ...y-domain-visually-looks-correct-1-snap.png | Bin 0 -> 17945 bytes ...-grouped-visually-looks-correct-1-snap.png | Bin 0 -> 12114 bytes ...-id-render-different-axis-scale-1-snap.png | Bin 0 -> 16389 bytes ...n-with-use-default-group-domain-1-snap.png | Bin 0 -> 13969 bytes integration/tests/bar_stories.test.ts | 14 ++ src/chart_types/xy_chart/domains/y_domain.ts | 7 +- .../get_tooltip_values_highlighted_geoms.ts | 4 +- src/chart_types/xy_chart/state/utils/spec.ts | 7 +- src/chart_types/xy_chart/state/utils/utils.ts | 4 +- stories/bar/52_multi_group_same_domain.tsx | 146 ++++++++++++++++++ stories/bar/bars.stories.tsx | 3 +- 11 files changed, 176 insertions(+), 9 deletions(-) create mode 100644 integration/tests/__image_snapshots__/all-test-ts-baseline-visual-tests-for-all-stories-bar-chart-dual-axis-same-y-domain-visually-looks-correct-1-snap.png create mode 100644 integration/tests/__image_snapshots__/all-test-ts-baseline-visual-tests-for-all-stories-bar-chart-stacked-only-grouped-visually-looks-correct-1-snap.png create mode 100644 integration/tests/__image_snapshots__/bar-stories-test-ts-bar-series-stories-different-group-id-render-different-axis-scale-1-snap.png create mode 100644 integration/tests/__image_snapshots__/bar-stories-test-ts-bar-series-stories-different-group-id-render-the-same-domain-with-use-default-group-domain-1-snap.png create mode 100644 stories/bar/52_multi_group_same_domain.tsx diff --git a/integration/tests/__image_snapshots__/all-test-ts-baseline-visual-tests-for-all-stories-bar-chart-dual-axis-same-y-domain-visually-looks-correct-1-snap.png b/integration/tests/__image_snapshots__/all-test-ts-baseline-visual-tests-for-all-stories-bar-chart-dual-axis-same-y-domain-visually-looks-correct-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..104b7006bdc9946020c9ffb4ae08a65ee68cd2a9 GIT binary patch literal 17945 zcmbt+1z40>`!}w&2C^n7B?>4YDN;%(Ie>z+q=##4vK*#WN)>Ed?6%N|jwz3_6- z)9( zHtQ%TTS~t=m)D_f6o%&U ziQj2HF5jXr<;9CbA1fNcZvXkZFMa6sf?!{iZ z1a~bafA3zFLEWop#l#!9>T{88X}5B?&3m{}E$1R#W8kXHjEtitdJpw0y1LZNd-Jce zsHDj&C}4QZx}pkg#+U^K-MABZq}mFKWg~^OV0iau1!;U?5cIgVWJP?f&Sp$%W|_eF zDjx4#A1SPZ2@DE~UtYF%xU1leW%v;!P7eZHS9(rjEN5Q zn(tmr!j15hj0`rEp@Vh_ej>F9mk|2k1=&l|-ripQJoTWkunRfeX%8O!M9pV)TWQpm z?j{*7GS8ie*1voAJkRpfPsA70mz5M0towyk!-njO^$U6#P>ca6`(iDN0vC~D+hy`e z`(jD^pO6J{ugaHJRZ`NcrKN=)<+3uOrerJ=BN1=(zOY zj>B3zIuZ){on;1AD|zX|`zY^ng#`NhM~iwL+D$#Svd+HhoV0wqsJK{k!Z4@%y#PBb zOGgfcTPcZ&l0iX1>iK3N7fyJ?-}4-1wbRw}n9~--m@mFKCi-Zxq2Y#kf5|O}ey2p3 z3;N`|JmtM)G;KY3rXx$v?X9h`hLLV6I_o{1dwlHpsH_V$rLSKP8ki;f%+Nh;U#OWO zA{<;B&u=sONK^4VHma;lXpMlr{)&Tcc;P1!4sA_K0(m%YNut>2iA=TCMEuLWv09$d zb`B1;Lv!bagoI+omYhp_a*YF?J$n`y62gR=(q24z?#B4ja}j>F%h6|ig*V^QIFCo~ zm=!Fn%myZTL+Rj2IA zaM87W{e69Xo`t>epg1tAtE*4g?k=yaOsE*bIoJb$k2;84)h+Zz-Z7*|vz0M9`@ZD#P9vs7k!di&F( z=W_LHUyAhZB)bxY3Sit#onte0V`OB6iJe_;_wL;$78V_^FPYxW=~mL#W|=O1^`X3SCr_S?r^qfi!HTqLg4WhLd!8>{lJ+ua;IJSx5U=B>|;vjoEGA*JLon)zHPEhpz&d2DA) zS)V?B5eG}+pzG|ME(Wk41em{^9UtBodl$%*L0Tm)`BAMQ-b1<*r&!wqTh22@O*KjXr~!+T1ca%M^vZt#aUh!l5D zwkKQ!ltE;P9c=4wix4grB!m3d7^+m%QpDu;--8&P9R!O}yY=e9qd1-0syyF$o z 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 SDI@fd1SNh$EaTek2mcSUMj2fI literal 0 HcmV?d00001 diff --git a/integration/tests/__image_snapshots__/all-test-ts-baseline-visual-tests-for-all-stories-bar-chart-stacked-only-grouped-visually-looks-correct-1-snap.png b/integration/tests/__image_snapshots__/all-test-ts-baseline-visual-tests-for-all-stories-bar-chart-stacked-only-grouped-visually-looks-correct-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..0e9f6ae8c1190051cf21962d064da39d9edc18ea GIT binary patch literal 12114 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 Td~XikL5EV&Q7%-xdiVbTt!a?u literal 0 HcmV?d00001 diff --git a/integration/tests/__image_snapshots__/bar-stories-test-ts-bar-series-stories-different-group-id-render-different-axis-scale-1-snap.png b/integration/tests/__image_snapshots__/bar-stories-test-ts-bar-series-stories-different-group-id-render-different-axis-scale-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..42860fc69886f154c1e9e8cbfa4b55298ea6f1bf GIT binary patch literal 16389 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
7D;FJM^nm#nxP7K>PE;}cN?yEJdS{Sl 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 literal 0 HcmV?d00001 diff --git a/integration/tests/bar_stories.test.ts b/integration/tests/bar_stories.test.ts index c1ea34f295..1a3879f70f 100644 --- a/integration/tests/bar_stories.test.ts +++ b/integration/tests/bar_stories.test.ts @@ -161,6 +161,20 @@ describe('Bar series stories', () => { }); }); + describe('different groupId', () => { + it('render different axis scale', async () => { + await common.expectChartAtUrlToMatchScreenshot( + `http://localhost:9001/?path=/story/bar-chart--dual-axis-same-y-domain&knob-Apply a different groupId to some series=true&knob-Use the same data domain for each group=`, + ); + }); + + it('render the same domain with useDefaultGroupDomain', async () => { + await common.expectChartAtUrlToMatchScreenshot( + `http://localhost:9001/?path=/story/bar-chart--dual-axis-same-y-domain&knob-Apply a different groupId to some series=true&knob-Use the same data domain for each group=true`, + ); + }); + }); + describe('value labels positioning', () => { describe.each<[string, Rotation]>([ ['0', 0], diff --git a/src/chart_types/xy_chart/domains/y_domain.ts b/src/chart_types/xy_chart/domains/y_domain.ts index 54bc28e499..c1aebd567a 100644 --- a/src/chart_types/xy_chart/domains/y_domain.ts +++ b/src/chart_types/xy_chart/domains/y_domain.ts @@ -24,10 +24,11 @@ import { identity } from '../../../utils/commons'; import { computeContinuousDataDomain } from '../../../utils/domain'; import { GroupId } from '../../../utils/ids'; import { Logger } from '../../../utils/logger'; +import { getSpecGroupId } from '../state/utils/spec'; import { isCompleteBound, isLowerBound, isUpperBound } from '../utils/axis_type_utils'; import { groupBy } from '../utils/group_data_series'; import { DataSeries } from '../utils/series'; -import { BasicSeriesSpec, YDomainRange, DEFAULT_GLOBAL_ID, SeriesTypes, StackMode } from '../utils/specs'; +import { BasicSeriesSpec, YDomainRange, SeriesTypes, StackMode } from '../utils/specs'; import { YDomain } from './types'; export type YBasicSeriesSpec = Pick< @@ -39,8 +40,8 @@ export type YBasicSeriesSpec = Pick< export function mergeYDomain(dataSeries: DataSeries[], domainsByGroupId: Map): YDomain[] { const dataSeriesByGroupId = groupBy( dataSeries, - ({ spec: { useDefaultGroupDomain, groupId } }) => { - return useDefaultGroupDomain ? DEFAULT_GLOBAL_ID : groupId; + ({ spec }) => { + return getSpecGroupId(spec); }, true, ); diff --git a/src/chart_types/xy_chart/state/selectors/get_tooltip_values_highlighted_geoms.ts b/src/chart_types/xy_chart/state/selectors/get_tooltip_values_highlighted_geoms.ts index ec63bb6db6..98a4cb37b9 100644 --- a/src/chart_types/xy_chart/state/selectors/get_tooltip_values_highlighted_geoms.ts +++ b/src/chart_types/xy_chart/state/selectors/get_tooltip_values_highlighted_geoms.ts @@ -42,7 +42,7 @@ import { Point } from '../../../../utils/point'; import { isPointOnGeometry } from '../../rendering/utils'; import { formatTooltip } from '../../tooltip/tooltip'; import { BasicSeriesSpec, AxisSpec } from '../../utils/specs'; -import { getAxesSpecForSpecId, getSpecsById } from '../utils/spec'; +import { getAxesSpecForSpecId, getSpecGroupId, getSpecsById } from '../utils/spec'; import { ComputedScales } from '../utils/types'; import { getComputedScalesSelector } from './get_computed_scales'; import { getElementAtCursorPositionSelector } from './get_elements_at_cursor_pos'; @@ -146,7 +146,7 @@ function getTooltipAndHighlightFromValue( const { xAxis, yAxis } = getAxesSpecForSpecId(axesSpecs, spec.groupId); // yScales is ensured by the enclosing if - const yScale = scales.yScales.get(spec.groupId); + const yScale = scales.yScales.get(getSpecGroupId(spec)); if (!yScale) { return acc; } diff --git a/src/chart_types/xy_chart/state/utils/spec.ts b/src/chart_types/xy_chart/state/utils/spec.ts index da23d7d0f5..bfe01e8d64 100644 --- a/src/chart_types/xy_chart/state/utils/spec.ts +++ b/src/chart_types/xy_chart/state/utils/spec.ts @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -import { Spec } from '../../../../specs'; +import { BasicSeriesSpec, DEFAULT_GLOBAL_ID, Spec } from '../../../../specs'; import { GroupId } from '../../../../utils/ids'; import { isVerticalAxis } from '../../utils/axis_type_utils'; import { AxisSpec } from '../../utils/specs'; @@ -47,3 +47,8 @@ export function getAxesSpecForSpecId(axesSpecs: AxisSpec[], groupId: GroupId) { yAxis, }; } + +/** @internal */ +export function getSpecGroupId(spec: BasicSeriesSpec) { + return spec.useDefaultGroupDomain ? DEFAULT_GLOBAL_ID : spec.groupId; +} diff --git a/src/chart_types/xy_chart/state/utils/utils.ts b/src/chart_types/xy_chart/state/utils/utils.ts index 7a9da69216..48cd1ee163 100644 --- a/src/chart_types/xy_chart/state/utils/utils.ts +++ b/src/chart_types/xy_chart/state/utils/utils.ts @@ -76,7 +76,7 @@ import { } from '../../utils/specs'; import { SmallMultipleScales } from '../selectors/compute_small_multiple_scales'; import { isHorizontalRotation } from './common'; -import { getSpecsById, getAxesSpecForSpecId } from './spec'; +import { getSpecsById, getAxesSpecForSpecId, getSpecGroupId } from './spec'; import { SeriesDomainsAndData, ComputedGeometries, GeometriesCounts, Transform, LastValues } from './types'; /** @@ -425,7 +425,7 @@ function renderGeometries( continue; } // compute the y scale - const yScale = yScales.get(ds.groupId); + const yScale = yScales.get(getSpecGroupId(ds.spec)); if (!yScale) { continue; } diff --git a/stories/bar/52_multi_group_same_domain.tsx b/stories/bar/52_multi_group_same_domain.tsx new file mode 100644 index 0000000000..f16e5a676d --- /dev/null +++ b/stories/bar/52_multi_group_same_domain.tsx @@ -0,0 +1,146 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { boolean } from '@storybook/addon-knobs'; +import React from 'react'; + +import { Axis, BarSeries, Settings, Chart, Position, ScaleType } from '../../src'; +import { SB_KNOBS_PANEL } from '../utils/storybook'; + +export const Example = () => { + const data1 = [ + [1, 2], + [2, 2], + [3, 3], + [4, 5], + ]; + const data2 = [ + [1, 1], + [2, 2], + [3, 3], + [4, 4], + ]; + const data3 = [ + [1, 6], + [2, 6], + [3, 3], + [4, 2], + ]; + const data4 = [ + [1, 2], + [2, 6], + [3, 2], + [4, 9], + ]; + const data5 = [ + [1, 1], + [2, 7], + [3, 5], + [4, 6], + ]; + const useDifferentGroup = boolean('Apply a different groupId to some series', false); + const useDefaultDomain = boolean('Use the same data domain for each group', false); + + return ( + + + + Number(d).toFixed(2)} + /> + Number(d).toFixed(2)} + /> + + + + + + + + ); +}; + +// storybook configuration +Example.story = { + parameters: { + options: { selectedPanel: SB_KNOBS_PANEL }, + info: { + text: `You can group together series specifying a \`groupId\` prop on the series. +In the case of barchart, series with the same \`groupId\` will be grouped and eventually stacked together. + +The data Y domain of each group, specified by \`groupId\`, is computed independently. This is reflected also on the rendering +where the Y value position is scaled independently on the Y axis from the other groups. An axis with the same \`groupId\` +will reflect that scale. + +Use \`useDefaultGroupDomain\` if the same domain is required on every series. + `, + }, + }, +}; diff --git a/stories/bar/bars.stories.tsx b/stories/bar/bars.stories.tsx index 3485acb665..70aa91eccf 100644 --- a/stories/bar/bars.stories.tsx +++ b/stories/bar/bars.stories.tsx @@ -63,7 +63,8 @@ export { Example as negativeAndPositiveXValues } from './31_negative_and_positiv export { Example as scaleToExtent } from './32_scale_to_extent'; export { Example as bandBarChart } from './33_band_bar'; export { Example as minHeight } from './45_min_height'; -export { Example as stackedOnlyGroupedAreas } from './47_stacked_only_grouped'; +export { Example as stackedOnlyGrouped } from './47_stacked_only_grouped'; +export { Example as dualAxisSameYDomain } from './52_multi_group_same_domain'; export { Example as orderBinsBySum } from './50_order_bins_by_sum'; // for testing purposes only From cd7774321598f6e14e708d683750cde16d3223b8 Mon Sep 17 00:00:00 2001 From: Marco Vettorello Date: Mon, 23 Nov 2020 16:21:23 +0100 Subject: [PATCH 2/5] feat: useDefaultGroupDomain accept a groupId string --- api/charts.api.md | 2 +- ...ormatter-visually-looks-correct-1-snap.png | Bin 20289 -> 30193 bytes ...nt-group-visually-looks-correct-1-snap.png | Bin 0 -> 10189 bytes src/chart_types/xy_chart/state/utils/spec.ts | 7 +- src/chart_types/xy_chart/utils/specs.ts | 8 +- stories/bar/52_multi_group_same_domain.tsx | 4 +- .../53_use_domain_from_different_groupid.tsx | 107 ++++++++++++++++++ stories/bar/bars.stories.tsx | 1 + 8 files changed, 123 insertions(+), 6 deletions(-) create mode 100644 integration/tests/__image_snapshots__/all-test-ts-baseline-visual-tests-for-all-stories-bar-chart-specify-domain-from-different-group-visually-looks-correct-1-snap.png create mode 100644 stories/bar/53_use_domain_from_different_groupid.tsx diff --git a/api/charts.api.md b/api/charts.api.md index 0e2ab07c47..50ba6281f1 100644 --- a/api/charts.api.md +++ b/api/charts.api.md @@ -1538,7 +1538,7 @@ export interface SeriesSpec extends Spec { // (undocumented) specType: typeof SpecTypes.Series; tickFormat?: TickFormatter; - useDefaultGroupDomain?: boolean; + useDefaultGroupDomain?: boolean | string; // Warning: (ae-forgotten-export) The symbol "AccessorFormat" needs to be exported by the entry point index.d.ts y0AccessorFormat?: AccessorFormat; y1AccessorFormat?: AccessorFormat; diff --git a/integration/tests/__image_snapshots__/all-test-ts-baseline-visual-tests-for-all-stories-axes-different-tooltip-formatter-visually-looks-correct-1-snap.png b/integration/tests/__image_snapshots__/all-test-ts-baseline-visual-tests-for-all-stories-axes-different-tooltip-formatter-visually-looks-correct-1-snap.png index 9c40c940d5d54b6425198810b8d020e1046c54fb..d03b2821eb459112c53ae41ec2057c5aa27cb367 100644 GIT binary patch literal 30193 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 KiP8s;pZyO-+L8$X diff --git a/integration/tests/__image_snapshots__/all-test-ts-baseline-visual-tests-for-all-stories-bar-chart-specify-domain-from-different-group-visually-looks-correct-1-snap.png b/integration/tests/__image_snapshots__/all-test-ts-baseline-visual-tests-for-all-stories-bar-chart-specify-domain-from-different-group-visually-looks-correct-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..1ac115b8468dc18ae0b1e45d83b7562bb6f011ac GIT binary patch literal 10189 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

?g}I2(68?f@Zl7C_(nK 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 csh+hZ{Ju+07aw_J4Za(N5tkOr7S( { + const data1 = [ + [1, 1], + [2, 2], + ]; + const data2 = [ + [1, 1], + [2, 5], + ]; + const data3 = [ + [1, 1], + [2, 9], + ]; + const groupId1 = select( + 'groupId used on blue series', + { + default: DEFAULT_GLOBAL_ID, + group1: 'group1', + group2: 'group2', + }, + 'group2', + ); + + const groupId2 = select( + 'groupId used on red series', + { + default: DEFAULT_GLOBAL_ID, + group1: 'group1', + group2: 'group2', + }, + 'group2', + ); + + return ( + + + + + + + + + + + + ); +}; + +// storybook configuration +Example.story = { + parameters: { + options: { selectedPanel: SB_KNOBS_PANEL }, + info: { + text: `You can specify a \`groupId\` in the \`useDefaultGroupDomain\` prop. +This will allows you to match and merge the data domain of two different groups and reuse it on multiple series group. + `, + }, + }, +}; diff --git a/stories/bar/bars.stories.tsx b/stories/bar/bars.stories.tsx index 70aa91eccf..d0b4fb276c 100644 --- a/stories/bar/bars.stories.tsx +++ b/stories/bar/bars.stories.tsx @@ -65,6 +65,7 @@ export { Example as bandBarChart } from './33_band_bar'; export { Example as minHeight } from './45_min_height'; export { Example as stackedOnlyGrouped } from './47_stacked_only_grouped'; export { Example as dualAxisSameYDomain } from './52_multi_group_same_domain'; +export { Example as specifyDomainFromDifferentGroup } from './53_use_domain_from_different_groupid'; export { Example as orderBinsBySum } from './50_order_bins_by_sum'; // for testing purposes only From 59481fff99db526b9e62ac6d44da762e09e910ce Mon Sep 17 00:00:00 2001 From: nickofthyme Date: Mon, 23 Nov 2020 16:16:44 -0600 Subject: [PATCH 3/5] fix: mergeYDomain to use adjusted groupId --- src/chart_types/xy_chart/domains/y_domain.ts | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/src/chart_types/xy_chart/domains/y_domain.ts b/src/chart_types/xy_chart/domains/y_domain.ts index c1aebd567a..2e40a03eba 100644 --- a/src/chart_types/xy_chart/domains/y_domain.ts +++ b/src/chart_types/xy_chart/domains/y_domain.ts @@ -38,24 +38,17 @@ export type YBasicSeriesSpec = Pick< /** @internal */ export function mergeYDomain(dataSeries: DataSeries[], domainsByGroupId: Map): YDomain[] { - const dataSeriesByGroupId = groupBy( - dataSeries, - ({ spec }) => { - return getSpecGroupId(spec); - }, - true, - ); + const dataSeriesByGroupId = groupBy(dataSeries, ({ spec }) => getSpecGroupId(spec), true); return dataSeriesByGroupId.reduce((acc, groupedDataSeries) => { - const [{ groupId }] = groupedDataSeries; - + const groupId = getSpecGroupId(groupedDataSeries[0].spec); const stacked = groupedDataSeries.filter(({ isStacked }) => isStacked); const nonStacked = groupedDataSeries.filter(({ isStacked }) => !isStacked); const customDomain = domainsByGroupId.get(groupId); const hasNonZeroBaselineTypes = groupedDataSeries.some( ({ seriesType }) => seriesType === SeriesTypes.Bar || seriesType === SeriesTypes.Area, ); - const domain = mergeYDomainForGroup(stacked, nonStacked, hasNonZeroBaselineTypes, customDomain); + const domain = mergeYDomainForGroup(stacked, nonStacked, hasNonZeroBaselineTypes, groupId, customDomain); if (!domain) { return acc; } @@ -67,6 +60,7 @@ function mergeYDomainForGroup( stacked: DataSeries[], nonStacked: DataSeries[], hasZeroBaselineSpecs: boolean, + groupId: string, customDomain?: YDomainRange, ): YDomain | null { const dataSeries = [...stacked, ...nonStacked]; @@ -77,7 +71,7 @@ function mergeYDomainForGroup( yScaleType, })); const groupYScaleType = coerceYScaleTypes(yScaleTypes); - const [{ stackMode, groupId }] = dataSeries; + const [{ stackMode }] = dataSeries; let domain: number[]; if (stackMode === StackMode.Percentage) { From 7ed4ac04264c7283fc3ce8c65ea0865f8e0db5a5 Mon Sep 17 00:00:00 2001 From: nickofthyme Date: Mon, 23 Nov 2020 16:49:07 -0600 Subject: [PATCH 4/5] test: update vrt screenshots --- ...ormatter-visually-looks-correct-1-snap.png | Bin 30193 -> 20289 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/integration/tests/__image_snapshots__/all-test-ts-baseline-visual-tests-for-all-stories-axes-different-tooltip-formatter-visually-looks-correct-1-snap.png b/integration/tests/__image_snapshots__/all-test-ts-baseline-visual-tests-for-all-stories-axes-different-tooltip-formatter-visually-looks-correct-1-snap.png index d03b2821eb459112c53ae41ec2057c5aa27cb367..9c40c940d5d54b6425198810b8d020e1046c54fb 100644 GIT binary patch literal 20289 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 KiP8s;pZyO-+L8$X literal 30193 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 Date: Tue, 24 Nov 2020 11:32:04 +0100 Subject: [PATCH 5/5] refactor: renamed function to be more domain specific --- src/chart_types/xy_chart/domains/y_domain.ts | 46 ++++--------------- .../get_tooltip_values_highlighted_geoms.ts | 4 +- src/chart_types/xy_chart/state/utils/spec.ts | 2 +- src/chart_types/xy_chart/state/utils/utils.ts | 4 +- 4 files changed, 13 insertions(+), 43 deletions(-) diff --git a/src/chart_types/xy_chart/domains/y_domain.ts b/src/chart_types/xy_chart/domains/y_domain.ts index 2e40a03eba..d11bba770d 100644 --- a/src/chart_types/xy_chart/domains/y_domain.ts +++ b/src/chart_types/xy_chart/domains/y_domain.ts @@ -24,7 +24,7 @@ import { identity } from '../../../utils/commons'; import { computeContinuousDataDomain } from '../../../utils/domain'; import { GroupId } from '../../../utils/ids'; import { Logger } from '../../../utils/logger'; -import { getSpecGroupId } from '../state/utils/spec'; +import { getSpecDomainGroupId } from '../state/utils/spec'; import { isCompleteBound, isLowerBound, isUpperBound } from '../utils/axis_type_utils'; import { groupBy } from '../utils/group_data_series'; import { DataSeries } from '../utils/series'; @@ -38,17 +38,19 @@ export type YBasicSeriesSpec = Pick< /** @internal */ export function mergeYDomain(dataSeries: DataSeries[], domainsByGroupId: Map): YDomain[] { - const dataSeriesByGroupId = groupBy(dataSeries, ({ spec }) => getSpecGroupId(spec), true); + const dataSeriesByGroupId = groupBy(dataSeries, ({ spec }) => getSpecDomainGroupId(spec), true); return dataSeriesByGroupId.reduce((acc, groupedDataSeries) => { - const groupId = getSpecGroupId(groupedDataSeries[0].spec); + const [{ spec }] = groupedDataSeries; + const groupId = getSpecDomainGroupId(spec); + const stacked = groupedDataSeries.filter(({ isStacked }) => isStacked); const nonStacked = groupedDataSeries.filter(({ isStacked }) => !isStacked); const customDomain = domainsByGroupId.get(groupId); const hasNonZeroBaselineTypes = groupedDataSeries.some( ({ seriesType }) => seriesType === SeriesTypes.Bar || seriesType === SeriesTypes.Area, ); - const domain = mergeYDomainForGroup(stacked, nonStacked, hasNonZeroBaselineTypes, groupId, customDomain); + const domain = mergeYDomainForGroup(stacked, nonStacked, hasNonZeroBaselineTypes, customDomain); if (!domain) { return acc; } @@ -60,7 +62,6 @@ function mergeYDomainForGroup( stacked: DataSeries[], nonStacked: DataSeries[], hasZeroBaselineSpecs: boolean, - groupId: string, customDomain?: YDomainRange, ): YDomain | null { const dataSeries = [...stacked, ...nonStacked]; @@ -71,7 +72,8 @@ function mergeYDomainForGroup( yScaleType, })); const groupYScaleType = coerceYScaleTypes(yScaleTypes); - const [{ stackMode }] = dataSeries; + const [{ stackMode, spec }] = dataSeries; + const groupId = getSpecDomainGroupId(spec); let domain: number[]; if (stackMode === StackMode.Percentage) { @@ -195,28 +197,6 @@ export function isStackedSpec(spec: YBasicSeriesSpec, histogramEnabled: boolean) return isBarAndHistogram || hasStackAccessors; } -/** - * Get the stack mode for every groupId - * @param specs - * @internal - */ -export function getStackModeForYGroup(specs: YBasicSeriesSpec[]) { - return specs.reduce>((acc, { groupId, stackMode }) => { - if (!acc[groupId]) { - acc[groupId] = undefined; - } - - if (acc[groupId] === undefined && stackMode !== undefined) { - acc[groupId] = stackMode; - } - if (stackMode !== undefined && acc[groupId] !== stackMode) { - Logger.warn(`Is not possible to mix different stackModes, please align all stackMode on the same GroupId - to the same mode. The default behaviour will be to use the first encountered stackMode on the series`); - } - return acc; - }, {}); -} - /** * Coerce the scale types of a set of specification to a generic one. * If there is at least one bar series type, than the response will specity @@ -244,13 +224,3 @@ function coerceYScale(scaleTypes: Set): ScaleContinuousType } return ScaleType.Linear; } - -export function getYScaleTypeByGroupId(specs: BasicSeriesSpec[]): Map { - const groups = groupBy(specs, ['groupId'], true); - return groups.reduce((acc, group) => { - const scaleType = coerceYScaleTypes(group); - const [{ groupId }] = group; - acc.set(groupId, scaleType); - return acc; - }, new Map()); -} diff --git a/src/chart_types/xy_chart/state/selectors/get_tooltip_values_highlighted_geoms.ts b/src/chart_types/xy_chart/state/selectors/get_tooltip_values_highlighted_geoms.ts index 98a4cb37b9..a11c877874 100644 --- a/src/chart_types/xy_chart/state/selectors/get_tooltip_values_highlighted_geoms.ts +++ b/src/chart_types/xy_chart/state/selectors/get_tooltip_values_highlighted_geoms.ts @@ -42,7 +42,7 @@ import { Point } from '../../../../utils/point'; import { isPointOnGeometry } from '../../rendering/utils'; import { formatTooltip } from '../../tooltip/tooltip'; import { BasicSeriesSpec, AxisSpec } from '../../utils/specs'; -import { getAxesSpecForSpecId, getSpecGroupId, getSpecsById } from '../utils/spec'; +import { getAxesSpecForSpecId, getSpecDomainGroupId, getSpecsById } from '../utils/spec'; import { ComputedScales } from '../utils/types'; import { getComputedScalesSelector } from './get_computed_scales'; import { getElementAtCursorPositionSelector } from './get_elements_at_cursor_pos'; @@ -146,7 +146,7 @@ function getTooltipAndHighlightFromValue( const { xAxis, yAxis } = getAxesSpecForSpecId(axesSpecs, spec.groupId); // yScales is ensured by the enclosing if - const yScale = scales.yScales.get(getSpecGroupId(spec)); + const yScale = scales.yScales.get(getSpecDomainGroupId(spec)); if (!yScale) { return acc; } diff --git a/src/chart_types/xy_chart/state/utils/spec.ts b/src/chart_types/xy_chart/state/utils/spec.ts index 1141682de1..27fac8a0ae 100644 --- a/src/chart_types/xy_chart/state/utils/spec.ts +++ b/src/chart_types/xy_chart/state/utils/spec.ts @@ -49,7 +49,7 @@ export function getAxesSpecForSpecId(axesSpecs: AxisSpec[], groupId: GroupId) { } /** @internal */ -export function getSpecGroupId(spec: BasicSeriesSpec): string { +export function getSpecDomainGroupId(spec: BasicSeriesSpec): string { if (!spec.useDefaultGroupDomain) { return spec.groupId; } diff --git a/src/chart_types/xy_chart/state/utils/utils.ts b/src/chart_types/xy_chart/state/utils/utils.ts index 48cd1ee163..a4df37f610 100644 --- a/src/chart_types/xy_chart/state/utils/utils.ts +++ b/src/chart_types/xy_chart/state/utils/utils.ts @@ -76,7 +76,7 @@ import { } from '../../utils/specs'; import { SmallMultipleScales } from '../selectors/compute_small_multiple_scales'; import { isHorizontalRotation } from './common'; -import { getSpecsById, getAxesSpecForSpecId, getSpecGroupId } from './spec'; +import { getSpecsById, getAxesSpecForSpecId, getSpecDomainGroupId } from './spec'; import { SeriesDomainsAndData, ComputedGeometries, GeometriesCounts, Transform, LastValues } from './types'; /** @@ -425,7 +425,7 @@ function renderGeometries( continue; } // compute the y scale - const yScale = yScales.get(getSpecGroupId(ds.spec)); + const yScale = yScales.get(getSpecDomainGroupId(ds.spec)); if (!yScale) { continue; }