From 25ee62e389faffc8f85f3c86d745a5cc48eb1fa2 Mon Sep 17 00:00:00 2001 From: Anna Shakhova <68295572+anna-shakhova@users.noreply.github.com> Date: Fri, 28 Feb 2025 16:02:15 +0100 Subject: [PATCH] Chart: apply auto hide point logic only for series with visible points (T1256753) (#29143) --- .../js/viz/series/scatter_series.js | 2 +- .../chart.integration.tests.js | 39 +++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/packages/devextreme/js/viz/series/scatter_series.js b/packages/devextreme/js/viz/series/scatter_series.js index d9794a90f126..3a71e397d9bb 100644 --- a/packages/devextreme/js/viz/series/scatter_series.js +++ b/packages/devextreme/js/viz/series/scatter_series.js @@ -594,7 +594,7 @@ const baseScatterMethods = { }, usePointsToDefineAutoHiding() { - return true; + return !!this._getOptionsForPoint().visible; } }; diff --git a/packages/devextreme/testing/tests/DevExpress.viz.charts/chart.integration.tests.js b/packages/devextreme/testing/tests/DevExpress.viz.charts/chart.integration.tests.js index 201f2d3d847e..778360ea6727 100644 --- a/packages/devextreme/testing/tests/DevExpress.viz.charts/chart.integration.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.viz.charts/chart.integration.tests.js @@ -2387,6 +2387,45 @@ QUnit.test('Series should hide the points when all the points are overlapped', f assert.ok(series[2].getVisiblePoints()[0].graphic); }); +[true, false].forEach((pointVisible) => { + QUnit.test(`Series usePointsToDefineAutoHiding method should return ${pointVisible} when series points are ${pointVisible ? 'visible' : 'hidden'} (T1256753)`, function(assert) { + const dataSource = [{ + country: 'USA', + val1: 10, + val2: 10, + }, { + country: 'China', + val1: 10, + val2: 10, + }, { + country: 'Russia', + val1: 10, + val2: 10, + }]; + + const chart = moduleSetup.createChart.call(this, { + dataSource, + commonSeriesSettings: { + argumentField: 'country', + point: { visible: pointVisible } + }, + series: [ + { valueField: 'val1', name: 'val1' }, + ], + }); + + const series = chart.getAllSeries()[0]; + const usePointsToDefineAutoHiding = series.usePointsToDefineAutoHiding; + const usePointsToDefineAutoHidingSpy = sinon.spy(function() { return usePointsToDefineAutoHiding.apply(series, arguments); }); + + series.usePointsToDefineAutoHiding = usePointsToDefineAutoHidingSpy; + + chart.resetVisualRange(); + + assert.equal(usePointsToDefineAutoHidingSpy.getCall(0).returnValue, pointVisible); + }); +}); + QUnit.test('Series should not hide points when not all points are overlapped in the series', function(assert) { const dataSource = [{ country: 'USA',