Skip to content

Render legend on partition charts with all values at zero #1983

Open

Description

When all the values of a partition chart are zero, there is no reason to render the chart because it doesn't mathematically make sense. The legend instead could be useful to render to understand what is going on.

Looking at the current code, the changes that should be applied to allow the rendering of the legend are the one that touches the HierarchyOfArrays structure used to render the legend.

I'm not fully sure thee changes are error-prone, but they have the desired effect at a first glance

diff --git a/packages/charts/src/chart_types/partition_chart/layout/viewmodel/hierarchy_of_arrays.ts b/packages/charts/src/chart_types/partition_chart/layout/viewmodel/hierarchy_of_arrays.ts
index da141fe5b..e916eb2fc 100644
--- a/packages/charts/src/chart_types/partition_chart/layout/viewmodel/hierarchy_of_arrays.ts
+++ b/packages/charts/src/chart_types/partition_chart/layout/viewmodel/hierarchy_of_arrays.ts
@@ -59,8 +59,8 @@ export function getHierarchyOfArrays(
     return Number.isFinite(value) && value >= 0;
   });
 
-  // don't render anything if the total, the width or height is not positive or zero
-  if (facts.reduce((p: number, n) => aggregator.reducer(p, valueAccessor(n)), aggregator.identity()) <= 0) {
+  // don't render anything if the total, the width or height is not positive
+  if (facts.reduce((p: number, n) => aggregator.reducer(p, valueAccessor(n)), aggregator.identity()) < 0) {
     return [];
   }

diff --git a/packages/charts/src/chart_types/partition_chart/layout/utils/group_by_rollup.ts b/packages/charts/src/chart_types/partition_chart/layout/utils/group_by_rollup.ts
index a73672966..ae649f40e 100644
--- a/packages/charts/src/chart_types/partition_chart/layout/utils/group_by_rollup.ts
+++ b/packages/charts/src/chart_types/partition_chart/layout/utils/group_by_rollup.ts
@@ -242,7 +242,7 @@ export function mapsToArrays(
     mapNode[PATH_KEY] = newPath; // in-place mutation, so disabled `no-param-reassign`
     mapNode.children.forEach((entry) => buildPaths(entry, newPath));
   };
-  buildPaths(tree[0], innerGroups);
+  if (tree.length > 0) buildPaths(tree[0], innerGroups);
   return tree;
 }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    :partitionPartition/PieChart/Donut/Sunburst/Treemap chart relatedenhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions