From 9eea034bb207df77f7040fb15d83ad7b55d4b1f8 Mon Sep 17 00:00:00 2001
From: Emmad Usmani <emmadusmani@berkeley.edu>
Date: Wed, 7 Aug 2024 09:10:53 -0700
Subject: [PATCH] truncate total text in pie chart (#46466)

* truncate total text in pie chart

* add story

* Update Loki Snapshots

* add e2e test

---------

Co-authored-by: Metabase Automation <github-automation@metabase.com>
---
 ...op_static_viz_PieChart_Truncated_Total.png | Bin 0 -> 38242 bytes
 .../pie_chart.cy.spec.js                      |  33 ++
 .../components/PieChart/PieChart.stories.tsx  |   7 +
 .../components/PieChart/stories-data/index.ts |   2 +
 .../stories-data/truncated-total.json         | 297 ++++++++++++++++++
 .../visualizations/echarts/pie/constants.ts   |   6 +-
 .../visualizations/echarts/pie/option.ts      |  29 +-
 7 files changed, 363 insertions(+), 11 deletions(-)
 create mode 100644 .loki/reference/chrome_laptop_static_viz_PieChart_Truncated_Total.png
 create mode 100644 frontend/src/metabase/static-viz/components/PieChart/stories-data/truncated-total.json

diff --git a/.loki/reference/chrome_laptop_static_viz_PieChart_Truncated_Total.png b/.loki/reference/chrome_laptop_static_viz_PieChart_Truncated_Total.png
new file mode 100644
index 0000000000000000000000000000000000000000..c44c4bbaabd94cae4bdb4f09bffab74aaf67c6a9
GIT binary patch
literal 38242
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
aZW+uR<2I>SCc6Xz9+#7D4rRyv?)?|KKMZC7

literal 0
HcmV?d00001

diff --git a/e2e/test/scenarios/visualizations-charts/pie_chart.cy.spec.js b/e2e/test/scenarios/visualizations-charts/pie_chart.cy.spec.js
index c2b2c9db09f..2cc2e48c08f 100644
--- a/e2e/test/scenarios/visualizations-charts/pie_chart.cy.spec.js
+++ b/e2e/test/scenarios/visualizations-charts/pie_chart.cy.spec.js
@@ -85,6 +85,39 @@ describe("scenarios > visualizations > pie chart", () => {
       cy.findByText("TOTAL").should("be.visible");
     });
   });
+
+  it("should truncate the center dimension label if it overflows", () => {
+    visitQuestionAdhoc({
+      dataset_query: {
+        type: "query",
+        query: {
+          "source-table": PRODUCTS_ID,
+          expressions: {
+            category_foo: [
+              "concat",
+              ["field", PRODUCTS.CATEGORY, null],
+              " the quick brown fox jumps over the lazy dog",
+            ],
+          },
+          aggregation: [["count"]],
+          breakout: [["expression", "category_foo"]],
+        },
+        database: SAMPLE_DB_ID,
+      },
+      display: "pie",
+    });
+
+    // Ensure chart renders before hovering the legend item
+    cy.findByTestId("query-visualization-root").within(() => {
+      cy.findByText("TOTAL");
+    });
+
+    cy.findAllByTestId("legend-item").eq(0).realHover();
+
+    cy.findByTestId("query-visualization-root").within(() => {
+      cy.findByText("DOOHICKEY THE QUICK BROWN FOX J…");
+    });
+  });
 });
 
 function ensurePieChartRendered(rows, totalValue) {
diff --git a/frontend/src/metabase/static-viz/components/PieChart/PieChart.stories.tsx b/frontend/src/metabase/static-viz/components/PieChart/PieChart.stories.tsx
index 77f4dfef229..efaf15f55db 100644
--- a/frontend/src/metabase/static-viz/components/PieChart/PieChart.stories.tsx
+++ b/frontend/src/metabase/static-viz/components/PieChart/PieChart.stories.tsx
@@ -203,6 +203,13 @@ NumDecimalPlacesLegend.args = {
   renderingContext,
 };
 
+export const TruncatedTotal = Template.bind({});
+TruncatedTotal.args = {
+  rawSeries: data.truncatedTotal as any,
+  dashcardSettings: {},
+  renderingContext,
+};
+
 export const UnaggregatedDimension = Template.bind({});
 UnaggregatedDimension.args = {
   rawSeries: data.unaggregatedDimension as any,
diff --git a/frontend/src/metabase/static-viz/components/PieChart/stories-data/index.ts b/frontend/src/metabase/static-viz/components/PieChart/stories-data/index.ts
index 8fcfb43405d..94cbd832dca 100644
--- a/frontend/src/metabase/static-viz/components/PieChart/stories-data/index.ts
+++ b/frontend/src/metabase/static-viz/components/PieChart/stories-data/index.ts
@@ -35,6 +35,7 @@ import singleDimension from "./single-dimension.json";
 import smallMinimumSlicePercentage from "./small-min-slice-percentage.json";
 import sortedMetricCol from "./sorted-metric-col.json";
 import tinySlicesDisappear43766 from "./tiny-slices-disappear-43766.json";
+import truncatedTotal from "./truncated-total.json";
 import unaggregatedDimension from "./unaggregated-dimension.json";
 import zeroMinimumSlicePercentage from "./zero-min-slice-percentage.json";
 
@@ -63,6 +64,7 @@ export const data = {
   nullDimension,
   numDecimalPlacesChart,
   numDecimalPlacesLegend,
+  truncatedTotal,
   unaggregatedDimension,
   singleDimension,
   longDimensionName,
diff --git a/frontend/src/metabase/static-viz/components/PieChart/stories-data/truncated-total.json b/frontend/src/metabase/static-viz/components/PieChart/stories-data/truncated-total.json
new file mode 100644
index 00000000000..cd260f3d578
--- /dev/null
+++ b/frontend/src/metabase/static-viz/components/PieChart/stories-data/truncated-total.json
@@ -0,0 +1,297 @@
+[
+  {
+    "card": {
+      "original_card_id": 346,
+      "public_uuid": null,
+      "parameter_usage_count": 0,
+      "created_at": "2024-06-05T23:14:45.449636Z",
+      "parameters": [],
+      "metabase_version": "v0.2.0-SNAPSHOT (a727fad)",
+      "collection": {
+        "authority_level": null,
+        "description": null,
+        "archived": false,
+        "trashed_from_location": null,
+        "slug": "pie",
+        "name": "Pie",
+        "personal_owner_id": null,
+        "type": null,
+        "is_sample": false,
+        "id": 23,
+        "entity_id": "hy98llXqY3i_uwtm5ISY_",
+        "location": "/5/",
+        "namespace": null,
+        "is_personal": false,
+        "created_at": "2024-06-03T19:59:20.91934Z"
+      },
+      "visualization_settings": {
+        "column_settings": {
+          "[\"name\",\"sum\"]": {
+            "number_style": "decimal",
+            "scale": 0.001,
+            "suffix": " kg",
+            "prefix": "incredibly super duper long prefix for the weight of this penguin that weighs ",
+            "decimals": 2
+          }
+        }
+      },
+      "last-edit-info": {
+        "id": 1,
+        "email": "emmad@metabase.com",
+        "first_name": "Emmad",
+        "last_name": "Usmani",
+        "timestamp": "2024-06-05T23:14:45.710965Z"
+      },
+      "collection_preview": true,
+      "entity_id": "-lZmLkBMVbB0U5puWZnOu",
+      "display": "pie",
+      "parameter_mappings": [],
+      "id": 346,
+      "dataset_query": {
+        "database": 2,
+        "type": "query",
+        "query": {
+          "aggregation": [
+            [
+              "sum",
+              [
+                "field",
+                "body_mass_g",
+                {
+                  "base-type": "type/Float"
+                }
+              ]
+            ]
+          ],
+          "breakout": [
+            [
+              "field",
+              "species",
+              {
+                "base-type": "type/Text"
+              }
+            ]
+          ],
+          "source-table": "card__92"
+        }
+      },
+      "cache_ttl": null,
+      "embedding_params": null,
+      "made_public_by_id": null,
+      "updated_at": "2024-06-06T00:13:07.782678Z",
+      "moderation_reviews": [],
+      "creator_id": 1,
+      "average_query_time": 319.5882352941176,
+      "type": "question",
+      "last_used_at": "2024-06-06T00:13:07.782678Z",
+      "dashboard_count": 1,
+      "last_query_start": "2024-06-06T00:13:07.345851Z",
+      "name": "Pie - Column Settings - Penguins sum of body mass by species",
+      "query_type": "query",
+      "collection_id": 23,
+      "enable_embedding": false,
+      "database_id": 2,
+      "trashed_from_collection_id": null,
+      "can_write": true,
+      "initially_published_at": null,
+      "creator": {
+        "email": "emmad@metabase.com",
+        "first_name": "Emmad",
+        "last_login": "2024-06-05T21:21:49.288174Z",
+        "is_qbnewb": false,
+        "is_superuser": true,
+        "id": 1,
+        "last_name": "Usmani",
+        "date_joined": "2023-11-21T21:25:41.062104Z",
+        "common_name": "Emmad Usmani"
+      },
+      "result_metadata": [
+        {
+          "semantic_type": "type/Category",
+          "name": "species",
+          "field_ref": [
+            "field",
+            "species",
+            {
+              "base-type": "type/Text"
+            }
+          ],
+          "effective_type": "type/Text",
+          "id": 1403,
+          "visibility_type": "normal",
+          "display_name": "Species",
+          "fingerprint": {
+            "global": {
+              "distinct-count": 3,
+              "nil%": 0
+            },
+            "type": {
+              "type/Text": {
+                "percent-json": 0,
+                "percent-url": 0,
+                "percent-email": 0,
+                "percent-state": 0,
+                "average-length": 6.593023255813954
+              }
+            }
+          },
+          "base_type": "type/Text"
+        },
+        {
+          "display_name": "Sum of Body Mass G",
+          "semantic_type": "type/Quantity",
+          "field_ref": ["aggregation", 0],
+          "name": "sum",
+          "base_type": "type/Float",
+          "effective_type": "type/Float",
+          "fingerprint": {
+            "global": {
+              "distinct-count": 3,
+              "nil%": 0
+            },
+            "type": {
+              "type/Number": {
+                "min": 253850,
+                "q1": 330087.5,
+                "q3": 607962.5,
+                "max": 624350,
+                "sd": 197720.9966088579,
+                "avg": 479000
+              }
+            }
+          }
+        }
+      ],
+      "can_run_adhoc_query": true,
+      "table_id": 151,
+      "collection_position": null,
+      "view_count": 12,
+      "archived": false,
+      "description": null,
+      "cache_invalidated_at": null,
+      "displayIsLocked": true
+    },
+    "data": {
+      "rows": [
+        ["Adelie", 558800],
+        ["Chinstrap", 253850],
+        ["Gentoo", 624350]
+      ],
+      "cols": [
+        {
+          "database_type": "varchar",
+          "semantic_type": "type/Category",
+          "table_id": 151,
+          "name": "species",
+          "source": "breakout",
+          "field_ref": [
+            "field",
+            "species",
+            {
+              "base-type": "type/Text"
+            }
+          ],
+          "effective_type": "type/Text",
+          "id": 1403,
+          "position": 1,
+          "visibility_type": "normal",
+          "display_name": "Species",
+          "fingerprint": {
+            "global": {
+              "distinct-count": 3,
+              "nil%": 0
+            },
+            "type": {
+              "type/Text": {
+                "percent-json": 0,
+                "percent-url": 0,
+                "percent-email": 0,
+                "percent-state": 0,
+                "average-length": 6.593023255813954
+              }
+            }
+          },
+          "base_type": "type/Text"
+        },
+        {
+          "semantic_type": "type/Quantity",
+          "base_type": "type/Float",
+          "name": "sum",
+          "display_name": "Sum of Body Mass G",
+          "source": "aggregation",
+          "field_ref": ["aggregation", 0],
+          "aggregation_index": 0,
+          "effective_type": "type/Float"
+        }
+      ],
+      "native_form": {
+        "query": "SELECT \"source\".\"species\" AS \"species\", SUM(\"source\".\"body_mass_g\") AS \"sum\" FROM (SELECT \"csv_upload_data\".\"csv_upload_penguins_20231130074915\".\"id\" AS \"id\", \"csv_upload_data\".\"csv_upload_penguins_20231130074915\".\"species\" AS \"species\", \"csv_upload_data\".\"csv_upload_penguins_20231130074915\".\"island\" AS \"island\", \"csv_upload_data\".\"csv_upload_penguins_20231130074915\".\"bill_length_mm\" AS \"bill_length_mm\", \"csv_upload_data\".\"csv_upload_penguins_20231130074915\".\"bill_depth_mm\" AS \"bill_depth_mm\", \"csv_upload_data\".\"csv_upload_penguins_20231130074915\".\"flipper_length_mm\" AS \"flipper_length_mm\", \"csv_upload_data\".\"csv_upload_penguins_20231130074915\".\"body_mass_g\" AS \"body_mass_g\", \"csv_upload_data\".\"csv_upload_penguins_20231130074915\".\"sex\" AS \"sex\" FROM \"csv_upload_data\".\"csv_upload_penguins_20231130074915\") AS \"source\" GROUP BY \"source\".\"species\" ORDER BY \"source\".\"species\" ASC",
+        "params": null
+      },
+      "dataset": true,
+      "model": true,
+      "format-rows?": true,
+      "results_timezone": "America/Los_Angeles",
+      "results_metadata": {
+        "columns": [
+          {
+            "semantic_type": "type/Category",
+            "name": "species",
+            "field_ref": [
+              "field",
+              "species",
+              {
+                "base-type": "type/Text"
+              }
+            ],
+            "effective_type": "type/Text",
+            "id": 1403,
+            "visibility_type": "normal",
+            "display_name": "Species",
+            "fingerprint": {
+              "global": {
+                "distinct-count": 3,
+                "nil%": 0
+              },
+              "type": {
+                "type/Text": {
+                  "percent-json": 0,
+                  "percent-url": 0,
+                  "percent-email": 0,
+                  "percent-state": 0,
+                  "average-length": 6.593023255813954
+                }
+              }
+            },
+            "base_type": "type/Text"
+          },
+          {
+            "display_name": "Sum of Body Mass G",
+            "semantic_type": "type/Quantity",
+            "field_ref": ["aggregation", 0],
+            "name": "sum",
+            "base_type": "type/Float",
+            "effective_type": "type/Float",
+            "fingerprint": {
+              "global": {
+                "distinct-count": 3,
+                "nil%": 0
+              },
+              "type": {
+                "type/Number": {
+                  "min": 253850,
+                  "q1": 330087.5,
+                  "q3": 607962.5,
+                  "max": 624350,
+                  "sd": 197720.9966088579,
+                  "avg": 479000
+                }
+              }
+            }
+          }
+        ]
+      },
+      "insights": null
+    }
+  }
+]
diff --git a/frontend/src/metabase/visualizations/echarts/pie/constants.ts b/frontend/src/metabase/visualizations/echarts/pie/constants.ts
index c6fc5d44377..3c5fb32bbce 100644
--- a/frontend/src/metabase/visualizations/echarts/pie/constants.ts
+++ b/frontend/src/metabase/visualizations/echarts/pie/constants.ts
@@ -2,7 +2,6 @@ import { t } from "ttag";
 
 export const DIMENSIONS = {
   maxSideLength: 550,
-  totalDiameterThreshold: 120,
   padding: {
     legend: 16,
     side: 12,
@@ -17,6 +16,11 @@ export const DIMENSIONS = {
       padding: 4,
     },
   },
+  total: {
+    minWidth: 120,
+    valueFontSize: 22,
+    labelFontSize: 14,
+  },
 };
 
 export const SLICE_THRESHOLD = 0.025; // approx 1 degree in percentage
diff --git a/frontend/src/metabase/visualizations/echarts/pie/option.ts b/frontend/src/metabase/visualizations/echarts/pie/option.ts
index 9db471d17d0..4274a38486f 100644
--- a/frontend/src/metabase/visualizations/echarts/pie/option.ts
+++ b/frontend/src/metabase/visualizations/echarts/pie/option.ts
@@ -2,6 +2,7 @@ import Color from "color";
 import type { EChartsOption } from "echarts";
 
 import { getTextColorForBackground } from "metabase/lib/colors";
+import { truncateText } from "metabase/static-viz/lib/text";
 import type {
   ComputedVisualizationSettings,
   RenderingContext,
@@ -36,21 +37,27 @@ function getTotalGraphicOption(
   let labelText = "";
 
   // Don't display any text if there isn't enough width
-  const hasSufficientWidth =
-    outerRadius * 2 >= DIMENSIONS.totalDiameterThreshold;
+  const hasSufficientWidth = outerRadius * 2 >= DIMENSIONS.total.minWidth;
 
   if (hasSufficientWidth && settings["pie.show_total"]) {
-    valueText = formatters.formatMetric(
-      hoveredIndex != null
-        ? chartModel.slices[hoveredIndex].data.displayValue
-        : chartModel.total,
+    valueText = truncateText(
+      formatters.formatMetric(
+        hoveredIndex != null
+          ? chartModel.slices[hoveredIndex].data.displayValue
+          : chartModel.total,
+      ),
+      outerRadius, // innerRadius technically makes more sense, but looks too narrow in practice
+      DIMENSIONS.total.valueFontSize,
     );
-    labelText =
+    labelText = truncateText(
       hoveredIndex != null
         ? formatters
             .formatDimension(chartModel.slices[hoveredIndex].data.key)
             .toUpperCase()
-        : TOTAL_TEXT;
+        : TOTAL_TEXT,
+      outerRadius,
+      DIMENSIONS.total.labelFontSize,
+    );
   }
 
   return {
@@ -59,10 +66,11 @@ function getTotalGraphicOption(
     left: "center",
     children: [
       {
+        // Value
         type: "text",
         cursor: "text",
         style: {
-          fontSize: "22px",
+          fontSize: `${DIMENSIONS.total.valueFontSize}px`,
           fontWeight: "700",
           textAlign: "center",
           fontFamily: renderingContext.fontFamily,
@@ -71,11 +79,12 @@ function getTotalGraphicOption(
         },
       },
       {
+        // Label
         type: "text",
         cursor: "text",
         top: 26,
         style: {
-          fontSize: "14px",
+          fontSize: `${DIMENSIONS.total.labelFontSize}px`,
           fontWeight: "700",
           textAlign: "center",
           fontFamily: renderingContext.fontFamily,
-- 
GitLab