From 637bfd6c637d30f5bfe3b7ffdb820c0e719e2eca Mon Sep 17 00:00:00 2001 From: nickofthyme Date: Tue, 11 Jun 2024 12:30:35 -0700 Subject: [PATCH 1/6] fix: point style accessor for isolated points --- .../chart_types/xy_chart/rendering/points.ts | 2 +- .../line/12_isolated_data_points.story.tsx | 8 +- .../13_point_style_overrides.story.tsx | 138 ++++++++++++++++++ .../stories/test_cases/test_cases.stories.tsx | 1 + 4 files changed, 144 insertions(+), 5 deletions(-) create mode 100644 storybook/stories/test_cases/13_point_style_overrides.story.tsx diff --git a/packages/charts/src/chart_types/xy_chart/rendering/points.ts b/packages/charts/src/chart_types/xy_chart/rendering/points.ts index e3c5454ffa..c6c8c38469 100644 --- a/packages/charts/src/chart_types/xy_chart/rendering/points.ts +++ b/packages/charts/src/chart_types/xy_chart/rendering/points.ts @@ -82,7 +82,7 @@ export function renderPoints( const styleOverrides = getPointStyleOverrides(datum, seriesIdentifier, styleAccessor); const style = buildPointGeometryStyles(color, pointStyle, styleOverrides); const isPointIsolated = allowIsolated && isIsolatedPoint(dataIndex, dataSeries.data.length, yDefined, prev, next); - const isolatedPointStyle = buildPointGeometryStyles(color, isolatedPointThemeStyle); + const isolatedPointStyle = buildPointGeometryStyles(color, isolatedPointThemeStyle, styleOverrides); // if radius is defined with the mark, limit the minimum radius to the theme radius value const radius = isPointIsolated ? isolatedPointThemeStyle.radius diff --git a/storybook/stories/line/12_isolated_data_points.story.tsx b/storybook/stories/line/12_isolated_data_points.story.tsx index 8db5ff65e7..31e2849685 100644 --- a/storybook/stories/line/12_isolated_data_points.story.tsx +++ b/storybook/stories/line/12_isolated_data_points.story.tsx @@ -31,19 +31,19 @@ export const Example: ChartsStory = (_, { title, description }) => { max: 10, step: 1, }); - const radius = number('isolated point radius', 2, { + const overrideRadius = number('override point radius', 0, { range: true, min: 0, max: 10, step: 1, }); - const overrideRadius = number('override point radius', 0, { + const overridePointRadius = boolean('override radius for isolated points', false); + const radius = number('isolated point radius', 5, { range: true, min: 0, max: 10, step: 1, }); - const overridePointRadius = boolean('override radius for isolated points', false); return ( @@ -77,7 +77,7 @@ export const Example: ChartsStory = (_, { title, description }) => { id="x" position={Position.Bottom} style={{ - tickLine: { size: 0.0001, padding: 4 }, + tickLine: { size: 0, padding: 4 }, tickLabel: { alignment: { horizontal: Position.Left, vertical: Position.Bottom }, padding: 0, diff --git a/storybook/stories/test_cases/13_point_style_overrides.story.tsx b/storybook/stories/test_cases/13_point_style_overrides.story.tsx new file mode 100644 index 0000000000..8d914fcc2b --- /dev/null +++ b/storybook/stories/test_cases/13_point_style_overrides.story.tsx @@ -0,0 +1,138 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { boolean, color } from '@storybook/addon-knobs'; +import React from 'react'; + +import { Axis, Chart, Position, ScaleType, Settings } from '@elastic/charts'; +import { KIBANA_METRICS } from '@elastic/charts/src/utils/data_samples/test_dataset_kibana'; + +import { ChartsStory } from '../../types'; +import { useBaseTheme } from '../../use_base_theme'; +import { customKnobs } from '../utils/knobs'; + +const defaultPointStyles = { + radius: 4, + strokeWidth: 2, +}; + +const defaultlineStyles = { + stroke: 'black', +}; + +export const Example: ChartsStory = (_, { title, description }) => { + const [Series] = customKnobs.enum.xySeries('series type', 'line', { exclude: ['bar', 'bubble'] }); + const themeLevelStroke = color('point.stroke - theme level', 'red'); + const themeLevelStrokeIso = color('isolatedPoint.stroke - theme level', 'green'); + const useSeriesOverrides = boolean('use series overrides', false); + const seriesLevelStroke = color('point.stroke - series level', 'blue'); + const useSeriesIsoOverrides = boolean('use series iso overrides', false); + const seriesLevelStrokeIso = color('isolatedPoint.stroke - series level', 'orange'); + const usePointStyleOverrides = boolean('use point style overrides', false); + const pointStyleStroke = color('stroke - pointStyleAccessor', 'black'); + + return ( + + + + + + ({ + stroke: pointStyleStroke, + }) + } + areaSeriesStyle={{ + ...(useSeriesOverrides && { + point: { + stroke: seriesLevelStroke, + }, + }), + ...(useSeriesIsoOverrides && { + isolatedPoint: { + stroke: seriesLevelStrokeIso, + }, + }), + }} + lineSeriesStyle={{ + ...(useSeriesOverrides && { + point: { + stroke: seriesLevelStroke, + }, + }), + ...(useSeriesIsoOverrides && { + isolatedPoint: { + stroke: seriesLevelStrokeIso, + }, + }), + }} + data={[ + ...KIBANA_METRICS.metrics.kibana_os_load.v1.data.slice(0, 40).map((d, i) => { + if ([1, 10, 12, 20, 22, 24, 28].includes(i)) { + return [d[0], null, 'A']; + } + return [...d, 'A']; + }), + ]} + /> + + ); +}; diff --git a/storybook/stories/test_cases/test_cases.stories.tsx b/storybook/stories/test_cases/test_cases.stories.tsx index 78fd831236..69cf67a99e 100644 --- a/storybook/stories/test_cases/test_cases.stories.tsx +++ b/storybook/stories/test_cases/test_cases.stories.tsx @@ -24,3 +24,4 @@ export { Example as domainEdges } from './21_domain_edges.story'; export { Example as metricTrendLength } from './22_metric_trend_length.story'; export { Example as startDayOfWeek } from './11_start_day_of_week.story'; export { Example as logWithNegativeValues } from './12_log_with_negative_values.story'; +export { Example as pointStyleOverrides } from './13_point_style_overrides.story'; From 41e5bf5e660f673763490cf2eed43f98f84fb7e4 Mon Sep 17 00:00:00 2001 From: nickofthyme Date: Tue, 11 Jun 2024 14:36:30 -0700 Subject: [PATCH 2/6] chore: revert radius changes --- storybook/stories/line/12_isolated_data_points.story.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/storybook/stories/line/12_isolated_data_points.story.tsx b/storybook/stories/line/12_isolated_data_points.story.tsx index 31e2849685..de9d345b72 100644 --- a/storybook/stories/line/12_isolated_data_points.story.tsx +++ b/storybook/stories/line/12_isolated_data_points.story.tsx @@ -38,7 +38,7 @@ export const Example: ChartsStory = (_, { title, description }) => { step: 1, }); const overridePointRadius = boolean('override radius for isolated points', false); - const radius = number('isolated point radius', 5, { + const radius = number('isolated point radius', 2, { range: true, min: 0, max: 10, From 6751c7acee02ecf6daf620aef25f39de5db62798 Mon Sep 17 00:00:00 2001 From: "elastic-datavis[bot]" <98618603+elastic-datavis[bot]@users.noreply.github.com> Date: Tue, 11 Jun 2024 21:55:47 +0000 Subject: [PATCH 3/6] test(vrt): update screenshots [skip ci] --- .../point-style-overrides-chrome-linux.png | Bin 0 -> 21153 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 e2e/screenshots/all.test.ts-snapshots/baselines/test-cases/point-style-overrides-chrome-linux.png diff --git a/e2e/screenshots/all.test.ts-snapshots/baselines/test-cases/point-style-overrides-chrome-linux.png b/e2e/screenshots/all.test.ts-snapshots/baselines/test-cases/point-style-overrides-chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..b7427ee679d41067e9c1e755d056025187150ebb GIT binary patch literal 21153 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 Y$?knLSvtG~%y`7a(DHUY Date: Tue, 11 Jun 2024 17:00:50 -0700 Subject: [PATCH 4/6] test: add e2e test cases --- e2e/tests/test_cases_stories.test.ts | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/e2e/tests/test_cases_stories.test.ts b/e2e/tests/test_cases_stories.test.ts index a3bee44894..d4e3c24ffe 100644 --- a/e2e/tests/test_cases_stories.test.ts +++ b/e2e/tests/test_cases_stories.test.ts @@ -146,4 +146,24 @@ test.describe('Test cases stories', () => { ); }); }); + + test.describe('Isolated point styles', () => { + test('should override theme point and iso point styles with series styles', async ({ page }) => { + await common.expectChartAtUrlToMatchScreenshot(page)( + 'http://localhost:9001/?path=/story/test-cases--point-style-overrides&globals=toggles.showHeader:true;toggles.showChartTitle:false;toggles.showChartDescription:false;toggles.showChartBoundary:false;theme:light&knob-isolatedPoint.stroke - series level=orange&knob-isolatedPoint.stroke - theme level=green&knob-point.stroke - series level=blue&knob-point.stroke - theme level=red&knob-series type=line&knob-stroke - pointStyleAccessor=black&knob-use point style overrides=false&knob-use series iso overrides=false&knob-use series overrides=true', + ); + }); + + test('should override theme and series point styles with iso point styles', async ({ page }) => { + await common.expectChartAtUrlToMatchScreenshot(page)( + 'http://localhost:9001/?path=/story/test-cases--point-style-overrides&globals=toggles.showHeader:true;toggles.showChartTitle:false;toggles.showChartDescription:false;toggles.showChartBoundary:false;theme:light&knob-isolatedPoint.stroke - series level=orange&knob-isolatedPoint.stroke - theme level=green&knob-point.stroke - series level=blue&knob-point.stroke - theme level=red&knob-series type=line&knob-stroke - pointStyleAccessor=black&knob-use point style overrides=false&knob-use series iso overrides=true&knob-use series overrides=true', + ); + }); + + test('should override all point styles with point accessor styles', async ({ page }) => { + await common.expectChartAtUrlToMatchScreenshot(page)( + 'http://localhost:9001/?path=/story/test-cases--point-style-overrides&globals=toggles.showHeader:true;toggles.showChartTitle:false;toggles.showChartDescription:false;toggles.showChartBoundary:false;theme:light&knob-isolatedPoint.stroke - series level=orange&knob-isolatedPoint.stroke - theme level=green&knob-point.stroke - series level=blue&knob-point.stroke - theme level=red&knob-series type=line&knob-stroke - pointStyleAccessor=black&knob-use point style overrides=true&knob-use series iso overrides=true&knob-use series overrides=true', + ); + }); + }); }); From 9cc2a47e7f300aafc68b5e9d3a42df00453904c7 Mon Sep 17 00:00:00 2001 From: nickofthyme Date: Tue, 11 Jun 2024 17:12:10 -0700 Subject: [PATCH 5/6] chore: add isolated point boolean to pointStyleAccessor callback --- packages/charts/api/charts.api.md | 2 +- .../src/chart_types/xy_chart/rendering/points.ts | 7 ++++--- .../chart_types/xy_chart/rendering/rendering.test.ts | 12 ++++++------ .../charts/src/chart_types/xy_chart/utils/specs.ts | 1 + 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/packages/charts/api/charts.api.md b/packages/charts/api/charts.api.md index 5d7c890002..947f35a160 100644 --- a/packages/charts/api/charts.api.md +++ b/packages/charts/api/charts.api.md @@ -2446,7 +2446,7 @@ export interface PointStyle { } // @public -export type PointStyleAccessor = (datum: DataSeriesDatum, seriesIdentifier: XYChartSeriesIdentifier) => PointStyleOverride; +export type PointStyleAccessor = (datum: DataSeriesDatum, seriesIdentifier: XYChartSeriesIdentifier, isolatedPoint: boolean) => PointStyleOverride; // @public (undocumented) export type PointStyleOverride = RecursivePartial | Color | null; diff --git a/packages/charts/src/chart_types/xy_chart/rendering/points.ts b/packages/charts/src/chart_types/xy_chart/rendering/points.ts index c6c8c38469..64ddc61970 100644 --- a/packages/charts/src/chart_types/xy_chart/rendering/points.ts +++ b/packages/charts/src/chart_types/xy_chart/rendering/points.ts @@ -79,9 +79,9 @@ export function renderPoints( const y = yDatumKeyName === 'y1' ? y1Fn(datum) : y0Fn(datum); const originalY = getDatumYValue(datum, keyIndex === 0, isBandedSpec, dataSeries.stackMode); const seriesIdentifier: XYChartSeriesIdentifier = getSeriesIdentifierFromDataSeries(dataSeries); - const styleOverrides = getPointStyleOverrides(datum, seriesIdentifier, styleAccessor); - const style = buildPointGeometryStyles(color, pointStyle, styleOverrides); const isPointIsolated = allowIsolated && isIsolatedPoint(dataIndex, dataSeries.data.length, yDefined, prev, next); + const styleOverrides = getPointStyleOverrides(datum, seriesIdentifier, isPointIsolated, styleAccessor); + const style = buildPointGeometryStyles(color, pointStyle, styleOverrides); const isolatedPointStyle = buildPointGeometryStyles(color, isolatedPointThemeStyle, styleOverrides); // if radius is defined with the mark, limit the minimum radius to the theme radius value const radius = isPointIsolated @@ -134,9 +134,10 @@ export function renderPoints( export function getPointStyleOverrides( datum: DataSeriesDatum, seriesIdentifier: XYChartSeriesIdentifier, + isolatedPoint: boolean, pointStyleAccessor?: PointStyleAccessor, ): Partial | undefined { - const styleOverride = pointStyleAccessor && pointStyleAccessor(datum, seriesIdentifier); + const styleOverride = pointStyleAccessor && pointStyleAccessor(datum, seriesIdentifier, isolatedPoint); if (!styleOverride) { return; diff --git a/packages/charts/src/chart_types/xy_chart/rendering/rendering.test.ts b/packages/charts/src/chart_types/xy_chart/rendering/rendering.test.ts index aea0204cd0..f5c92649bb 100644 --- a/packages/charts/src/chart_types/xy_chart/rendering/rendering.test.ts +++ b/packages/charts/src/chart_types/xy_chart/rendering/rendering.test.ts @@ -323,28 +323,28 @@ describe('Rendering utils', () => { }); it('should return undefined if no pointStyleAccessor is passed', () => { - const styleOverrides = getPointStyleOverrides(datum, seriesIdentifier); + const styleOverrides = getPointStyleOverrides(datum, seriesIdentifier, false); expect(styleOverrides).toBeUndefined(); }); it('should return undefined if pointStyleAccessor returns null', () => { mockAccessor.mockReturnValue(null); - const styleOverrides = getPointStyleOverrides(datum, seriesIdentifier, mockAccessor); + const styleOverrides = getPointStyleOverrides(datum, seriesIdentifier, false, mockAccessor); expect(styleOverrides).toBeUndefined(); }); - it('should call pointStyleAccessor with datum and seriesIdentifier', () => { - getPointStyleOverrides(datum, seriesIdentifier, mockAccessor); + it('should call pointStyleAccessor with datum, seriesIdentifier and isolatedPoint', () => { + getPointStyleOverrides(datum, seriesIdentifier, true, mockAccessor); - expect(mockAccessor).toHaveBeenCalledWith(datum, seriesIdentifier); + expect(mockAccessor).toHaveBeenCalledWith(datum, seriesIdentifier, true); }); it('should return seriesStyle with updated stroke color', () => { const stroke = 'blue'; mockAccessor.mockReturnValue(stroke); - const styleOverrides = getPointStyleOverrides(datum, seriesIdentifier, mockAccessor); + const styleOverrides = getPointStyleOverrides(datum, seriesIdentifier, false, mockAccessor); const expectedStyles: Partial = { stroke, }; diff --git a/packages/charts/src/chart_types/xy_chart/utils/specs.ts b/packages/charts/src/chart_types/xy_chart/utils/specs.ts index 50a52efd46..332ee4d764 100644 --- a/packages/charts/src/chart_types/xy_chart/utils/specs.ts +++ b/packages/charts/src/chart_types/xy_chart/utils/specs.ts @@ -101,6 +101,7 @@ export type BarStyleAccessor = (datum: DataSeriesDatum, seriesIdentifier: XYChar export type PointStyleAccessor = ( datum: DataSeriesDatum, seriesIdentifier: XYChartSeriesIdentifier, + isolatedPoint: boolean, ) => PointStyleOverride; /** From a32e21f16defeeaa98546a43685fc8a24ea87f60 Mon Sep 17 00:00:00 2001 From: "elastic-datavis[bot]" <98618603+elastic-datavis[bot]@users.noreply.github.com> Date: Wed, 12 Jun 2024 00:20:18 +0000 Subject: [PATCH 6/6] test(vrt): update screenshots [skip ci] --- ...-with-point-accessor-styles-chrome-linux.png | Bin 0 -> 21031 bytes ...tyles-with-iso-point-styles-chrome-linux.png | Bin 0 -> 20965 bytes ...t-styles-with-series-styles-chrome-linux.png | Bin 0 -> 20738 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 e2e/screenshots/test_cases_stories.test.ts-snapshots/test-cases-stories/isolated-point-styles/should-override-all-point-styles-with-point-accessor-styles-chrome-linux.png create mode 100644 e2e/screenshots/test_cases_stories.test.ts-snapshots/test-cases-stories/isolated-point-styles/should-override-theme-and-series-point-styles-with-iso-point-styles-chrome-linux.png create mode 100644 e2e/screenshots/test_cases_stories.test.ts-snapshots/test-cases-stories/isolated-point-styles/should-override-theme-point-and-iso-point-styles-with-series-styles-chrome-linux.png diff --git a/e2e/screenshots/test_cases_stories.test.ts-snapshots/test-cases-stories/isolated-point-styles/should-override-all-point-styles-with-point-accessor-styles-chrome-linux.png b/e2e/screenshots/test_cases_stories.test.ts-snapshots/test-cases-stories/isolated-point-styles/should-override-all-point-styles-with-point-accessor-styles-chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..41c97ccb57504d30380b5e53d4fdf5a1652840db GIT binary patch literal 21031 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 literal 0 HcmV?d00001 diff --git a/e2e/screenshots/test_cases_stories.test.ts-snapshots/test-cases-stories/isolated-point-styles/should-override-theme-and-series-point-styles-with-iso-point-styles-chrome-linux.png b/e2e/screenshots/test_cases_stories.test.ts-snapshots/test-cases-stories/isolated-point-styles/should-override-theme-and-series-point-styles-with-iso-point-styles-chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..761021910f7538b46b1af6c8187b85ec242f998e GIT binary patch literal 20965 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 SxU1Lz0000