From 774546a2c4cd1d414fdee5416fd57e6696b24472 Mon Sep 17 00:00:00 2001 From: Andras Schmelczer Date: Tue, 27 Oct 2026 20:07:36 +0000 Subject: [PATCH] Keep dashboard category identity separate from shortened labels --- great_ai/deploy/routes/dashboard/create_dash_app.py | 6 +++--- tests/test_dashboard_regressions.py | 13 ++++++++++++- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/great_ai/deploy/routes/dashboard/create_dash_app.py b/great_ai/deploy/routes/dashboard/create_dash_app.py index e76ab98..e0b3520 100644 --- a/great_ai/deploy/routes/dashboard/create_dash_app.py +++ b/great_ai/deploy/routes/dashboard/create_dash_app.py @@ -272,10 +272,10 @@ def get_dimension_descriptor(df: pd.DataFrame, column: str) -> Dict[str, Any]: except (TypeError, ValueError): MAX_LENGTH = 40 unique_values = unique(values, key=freeze) - value_mapping = {str(v)[:MAX_LENGTH]: i for i, v in enumerate(unique_values)} + value_mapping = {freeze(v): i for i, v in enumerate(unique_values)} - dimension["values"] = [value_mapping[str(v)[:MAX_LENGTH]] for v in values] + dimension["values"] = [value_mapping[freeze(v)] for v in values] dimension["tickvals"] = list(value_mapping.values()) - dimension["ticktext"] = [k[:MAX_LENGTH] for k in value_mapping.keys()] + dimension["ticktext"] = [str(value)[:MAX_LENGTH] for value in unique_values] return dimension diff --git a/tests/test_dashboard_regressions.py b/tests/test_dashboard_regressions.py index a43ee8b..e19d023 100644 --- a/tests/test_dashboard_regressions.py +++ b/tests/test_dashboard_regressions.py @@ -1,7 +1,8 @@ from typing import Any +import pandas as pd import pytest - +from great_ai.deploy.routes.dashboard.create_dash_app import get_dimension_descriptor from great_ai.deploy.routes.dashboard.get_filter_from_datatable import ( get_filter_from_datatable, ) @@ -30,3 +31,13 @@ def test_dashboard_filter_grammar(expression: str, operator: str, value: Any) -> ) def test_incomplete_filters_are_ignored(expression: str) -> None: assert get_filter_from_datatable(expression) is None + + +def test_long_category_labels_keep_distinct_coordinates() -> None: + prefix = "a" * 40 + dimension = get_dimension_descriptor( + pd.DataFrame({"category": [prefix + "1", prefix + "2"]}), "category" + ) + assert dimension["values"] == [0, 1] + assert dimension["tickvals"] == [0, 1] + assert dimension["ticktext"] == [prefix, prefix]