Skip to content
Snippets Groups Projects
Unverified Commit 6270bb4b authored by Jesse Devaney's avatar Jesse Devaney Committed by GitHub
Browse files

Fix overly frequent line series dots (#42735)

* hide symbols for charts with too many of them

* update loki

* prevent series dots showing up after manually disabling another series

* update loki snapshots

* refactor conditional

* update loki snapshots
parent 9771eaa2
No related branches found
No related tags found
No related merge requests found
Showing
with 50 additions and 20 deletions
.loki/reference/chrome_laptop_static_viz_ComboChart_Area_Stack_Linear_X_Axis.png

62.9 KiB | W: | H:

.loki/reference/chrome_laptop_static_viz_ComboChart_Area_Stack_Linear_X_Axis.png

43.9 KiB | W: | H:

.loki/reference/chrome_laptop_static_viz_ComboChart_Area_Stack_Linear_X_Axis.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Area_Stack_Linear_X_Axis.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Area_Stack_Linear_X_Axis.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Area_Stack_Linear_X_Axis.png
  • 2-up
  • Swipe
  • Onion skin
.loki/reference/chrome_laptop_static_viz_ComboChart_Bar_Stack_Display_Overrides_Series_Displays.png

66 KiB | W: | H:

.loki/reference/chrome_laptop_static_viz_ComboChart_Bar_Stack_Display_Overrides_Series_Displays.png

47.1 KiB | W: | H:

.loki/reference/chrome_laptop_static_viz_ComboChart_Bar_Stack_Display_Overrides_Series_Displays.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Bar_Stack_Display_Overrides_Series_Displays.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Bar_Stack_Display_Overrides_Series_Displays.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Bar_Stack_Display_Overrides_Series_Displays.png
  • 2-up
  • Swipe
  • Onion skin
.loki/reference/chrome_laptop_static_viz_ComboChart_Line_Chart_Broken_Dimensions_Metrics_Settings.png

67 KiB | W: | H:

.loki/reference/chrome_laptop_static_viz_ComboChart_Line_Chart_Broken_Dimensions_Metrics_Settings.png

51.4 KiB | W: | H:

.loki/reference/chrome_laptop_static_viz_ComboChart_Line_Chart_Broken_Dimensions_Metrics_Settings.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Line_Chart_Broken_Dimensions_Metrics_Settings.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Line_Chart_Broken_Dimensions_Metrics_Settings.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Line_Chart_Broken_Dimensions_Metrics_Settings.png
  • 2-up
  • Swipe
  • Onion skin
.loki/reference/chrome_laptop_static_viz_ComboChart_Line_Log_Y_Scale.png

38.8 KiB | W: | H:

.loki/reference/chrome_laptop_static_viz_ComboChart_Line_Log_Y_Scale.png

29.8 KiB | W: | H:

.loki/reference/chrome_laptop_static_viz_ComboChart_Line_Log_Y_Scale.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Line_Log_Y_Scale.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Line_Log_Y_Scale.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Line_Log_Y_Scale.png
  • 2-up
  • Swipe
  • Onion skin
.loki/reference/chrome_laptop_static_viz_ComboChart_Line_Settings.png

45.3 KiB | W: | H:

.loki/reference/chrome_laptop_static_viz_ComboChart_Line_Settings.png

41.5 KiB | W: | H:

.loki/reference/chrome_laptop_static_viz_ComboChart_Line_Settings.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Line_Settings.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Line_Settings.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Line_Settings.png
  • 2-up
  • Swipe
  • Onion skin
.loki/reference/chrome_laptop_static_viz_ComboChart_Log_Y_Scale_Custom_Y_Axis_Range.png

33.9 KiB | W: | H:

.loki/reference/chrome_laptop_static_viz_ComboChart_Log_Y_Scale_Custom_Y_Axis_Range.png

25.1 KiB | W: | H:

.loki/reference/chrome_laptop_static_viz_ComboChart_Log_Y_Scale_Custom_Y_Axis_Range.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Log_Y_Scale_Custom_Y_Axis_Range.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Log_Y_Scale_Custom_Y_Axis_Range.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Log_Y_Scale_Custom_Y_Axis_Range.png
  • 2-up
  • Swipe
  • Onion skin
.loki/reference/chrome_laptop_static_viz_ComboChart_Long_Dimension_Name_Cut_Off_37420.png

25.7 KiB | W: | H:

.loki/reference/chrome_laptop_static_viz_ComboChart_Long_Dimension_Name_Cut_Off_37420.png

15.9 KiB | W: | H:

.loki/reference/chrome_laptop_static_viz_ComboChart_Long_Dimension_Name_Cut_Off_37420.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Long_Dimension_Name_Cut_Off_37420.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Long_Dimension_Name_Cut_Off_37420.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Long_Dimension_Name_Cut_Off_37420.png
  • 2-up
  • Swipe
  • Onion skin
.loki/reference/chrome_laptop_static_viz_ComboChart_Number_Of_Insights_Error_39608.png

36.1 KiB | W: | H:

.loki/reference/chrome_laptop_static_viz_ComboChart_Number_Of_Insights_Error_39608.png

30.7 KiB | W: | H:

.loki/reference/chrome_laptop_static_viz_ComboChart_Number_Of_Insights_Error_39608.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Number_Of_Insights_Error_39608.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Number_Of_Insights_Error_39608.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Number_Of_Insights_Error_39608.png
  • 2-up
  • Swipe
  • Onion skin
.loki/reference/chrome_laptop_static_viz_ComboChart_Pow_Y_Scale_Custom_Y_Axis_Range.png

30 KiB | W: | H:

.loki/reference/chrome_laptop_static_viz_ComboChart_Pow_Y_Scale_Custom_Y_Axis_Range.png

21.8 KiB | W: | H:

.loki/reference/chrome_laptop_static_viz_ComboChart_Pow_Y_Scale_Custom_Y_Axis_Range.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Pow_Y_Scale_Custom_Y_Axis_Range.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Pow_Y_Scale_Custom_Y_Axis_Range.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Pow_Y_Scale_Custom_Y_Axis_Range.png
  • 2-up
  • Swipe
  • Onion skin
.loki/reference/chrome_laptop_static_viz_ComboChart_Split_Y_Axis.png

69.7 KiB | W: | H:

.loki/reference/chrome_laptop_static_viz_ComboChart_Split_Y_Axis.png

44.8 KiB | W: | H:

.loki/reference/chrome_laptop_static_viz_ComboChart_Split_Y_Axis.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Split_Y_Axis.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Split_Y_Axis.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Split_Y_Axis.png
  • 2-up
  • Swipe
  • Onion skin
.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Combo_Log.png

36.3 KiB | W: | H:

.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Combo_Log.png

25.3 KiB | W: | H:

.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Combo_Log.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Combo_Log.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Combo_Log.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Combo_Log.png
  • 2-up
  • Swipe
  • Onion skin
.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Combo_Power.png

41.6 KiB | W: | H:

.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Combo_Power.png

33.1 KiB | W: | H:

.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Combo_Power.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Combo_Power.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Combo_Power.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Combo_Power.png
  • 2-up
  • Swipe
  • Onion skin
.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Multi_Series_Area.png

43.9 KiB | W: | H:

.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Multi_Series_Area.png

36.2 KiB | W: | H:

.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Multi_Series_Area.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Multi_Series_Area.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Multi_Series_Area.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Multi_Series_Area.png
  • 2-up
  • Swipe
  • Onion skin
.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Multi_Series_Line.png

43 KiB | W: | H:

.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Multi_Series_Line.png

35.7 KiB | W: | H:

.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Multi_Series_Line.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Multi_Series_Line.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Multi_Series_Line.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Multi_Series_Line.png
  • 2-up
  • Swipe
  • Onion skin
.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Multi_Series_Normalized_Stacked_Area.png

31.7 KiB | W: | H:

.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Multi_Series_Normalized_Stacked_Area.png

16.7 KiB | W: | H:

.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Multi_Series_Normalized_Stacked_Area.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Multi_Series_Normalized_Stacked_Area.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Multi_Series_Normalized_Stacked_Area.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Multi_Series_Normalized_Stacked_Area.png
  • 2-up
  • Swipe
  • Onion skin
.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Multi_Series_Stacked_Area.png

43.5 KiB | W: | H:

.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Multi_Series_Stacked_Area.png

33 KiB | W: | H:

.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Multi_Series_Stacked_Area.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Multi_Series_Stacked_Area.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Multi_Series_Stacked_Area.png
.loki/reference/chrome_laptop_static_viz_ComboChart_Trend_Multi_Series_Stacked_Area.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -235,31 +235,54 @@ const buildEChartsBarSeries = (
};
};
function getShowSymbol(
seriesModel: SeriesModel,
seriesSettings: SeriesSettings,
function getShowAutoSymbols(
seriesModels: SeriesModel[],
dataset: ChartDataset,
seriesSettingsByDataKey: Record<string, SeriesSettings>,
chartWidth: number,
) {
// "line.marker_enabled" corresponds to the "Show dots on lines" series setting
// and can be true, false, or undefined
// true = on
// false = off
// undefined = auto
const isAuto = seriesSettings["line.marker_enabled"] == null;
if (!isAuto) {
return seriesSettings["line.marker_enabled"];
): boolean {
if (chartWidth <= 0) {
return false;
}
const seriesWithSymbols = seriesModels.filter(seriesModel => {
const seriesSettings = seriesSettingsByDataKey[seriesModel.dataKey];
return ["area", "line"].includes(seriesSettings.display ?? "");
});
// at least half of the chart width should not have a symbol on it
const maxNumberOfDots = chartWidth / (2 * CHART_STYLE.symbolSize);
const totalNumberOfDots = seriesWithSymbols.reduce((sum, seriesModel) => {
const seriesSettings = seriesSettingsByDataKey[seriesModel.dataKey];
const numDots =
seriesSettings["line.missing"] !== "none"
? dataset.length
: dataset.filter(datum => datum[seriesModel.dataKey] != null).length;
return sum + numDots;
}, 0);
return totalNumberOfDots < maxNumberOfDots;
}
function getShowSymbol(
areAutoSymbolsVisible: boolean,
seriesSettings: SeriesSettings,
chartWidth: number,
): boolean {
if (chartWidth <= 0) {
return false;
}
const numDots =
seriesSettings["line.missing"] !== "none"
? dataset.length
: dataset.filter(datum => datum[seriesModel.dataKey] != null).length;
// symbolSize is the dot's diameter
return chartWidth / numDots > CHART_STYLE.symbolSize;
if (seriesSettings["line.marker_enabled"] === false) {
return false;
}
if (seriesSettings["line.marker_enabled"] === true) {
return true;
}
return areAutoSymbolsVisible;
}
const buildEChartsLineAreaSeries = (
......@@ -271,14 +294,14 @@ const buildEChartsLineAreaSeries = (
settings: ComputedVisualizationSettings,
yAxisIndex: number,
hasMultipleSeries: boolean,
areAutoSymbolsVisible: boolean,
chartWidth: number,
labelFormatter: LabelFormatter | undefined,
renderingContext: RenderingContext,
): LineSeriesOption => {
const isSymbolVisible = getShowSymbol(
seriesModel,
areAutoSymbolsVisible,
seriesSettings,
dataset,
chartWidth,
);
......@@ -540,6 +563,12 @@ export const buildEChartsSeries = (
).length;
const hasMultipleSeries = chartModel.seriesModels.length > 1;
const areAutoSymbolsVisible = getShowAutoSymbols(
chartModel.seriesModels,
chartModel.transformedDataset,
seriesSettingsByDataKey,
chartWidth,
);
const series = chartModel.seriesModels
.map(seriesModel => {
......@@ -564,6 +593,7 @@ export const buildEChartsSeries = (
settings,
yAxisIndex,
hasMultipleSeries,
areAutoSymbolsVisible,
chartWidth,
chartModel?.seriesLabelsFormatters?.[seriesModel.dataKey],
renderingContext,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment