3afdabb93e
## Summary Fixes [#21014](https://github.com/twentyhq/twenty/issues/21014). When two pie chart widgets shared the same group-by field (and therefore the same slice ids) but used different aggregation operators (e.g. `count` vs `sum`), the arc-link labels would mirror between the two charts — both ending up showing either the count or the sum values, depending on render order. Center metrics stayed correct. **Root cause.** Nivo's `ArcLinkLabelsLayer` and `ArcsLayer` (from `@nivo/arcs`) wire `react-spring`'s `useTransition` with `keys: e => e.id`. When two `<ResponsivePie>` instances render with overlapping ids, the transitioned data bleeds across charts. The center metric is unaffected because it's computed by a separate hook (`usePieChartCenterMetricData`). **Fix.** Namespace the Nivo-computed slice id per widget by passing an `id` accessor to `<ResponsivePie>`: ```tsx id={(datum) => `${id}:${String(datum.id)}`} ``` Lookups inside the widget switch to `datum.data.id` (the original, un-namespaced id stored on the raw datum), so value/percentage formatting, the custom tooltip, and the legend hover-dim behavior all keep working. Touched files: - `GraphWidgetPieChart.tsx` — add `id` accessor - `CustomArcsLayer.tsx` — compare legend highlight against `datum.data.id` - `getPieChartFormattedValue.ts`, `getPieChartTooltipData.ts` — match on `datum.data.id` - Tests for both utils get a regression case covering the namespaced computed id ## Test plan - [ ] `npx jest getPieChartFormattedValue` ✅ - [ ] `npx jest getPieChartTooltipData` ✅ - [ ] `npx tsc --noEmit` ✅ - [ ] Manual: dashboard with two pies on the same group-by field, one `count` and one `sum`, "Display data label" on for both — confirm each chart shows its own metric on the slices, and the central total is unchanged. - [ ] Manual: hover a legend item — the matching slice in that chart stays solid while the others dim, and the sibling chart is not affected. - [ ] Manual: clicking a slice still drills into the correctly filtered view.