From be58aa176c3077039747700c0664548dd245ccc5 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 1 Feb 2026 21:59:06 +0000 Subject: [PATCH 1/2] Refactor: Extract duplicated utilities into shared modules - Create chartColorUtils.ts: Extract CSS variable resolution and chart color utilities from 6 visualization components (~200 lines reduced) - Create typeUtils.ts: Centralize type badge/label functions from detail pages, eliminating duplicate switch statements - Add smartTruncate() to textUtils.ts: Remove 3 identical copies from seoUtils.ts (~60 lines reduced) - Add areFiltersActive() to filterUtils.ts: Share filter state check across publications and conference-activity pages - Update seoUtils.ts to use centralized type labels from typeUtils.ts - Fix activities page to use imported truncateTitle instead of local copy Net reduction: ~330 lines of duplicated code https://claude.ai/code/session_018ncgD2RWvSKx6fRUK62b7G --- .../visualisations/D3BubbleChart.svelte | 54 +--- .../visualisations/EChartsBarChart.svelte | 85 ++----- .../EChartsDoughnutChart.svelte | 59 +---- .../EChartsHorizontalBarChart.svelte | 83 ++---- .../visualisations/EChartsNetworkGraph.svelte | 31 +-- .../EChartsStackedBarChart.svelte | 86 ++----- src/lib/utils/chartColorUtils.ts | 238 ++++++++++++++++++ src/lib/utils/filterUtils.ts | 60 +++++ src/lib/utils/seoUtils.ts | 130 ++-------- src/lib/utils/textUtils.ts | 52 ++++ src/lib/utils/typeUtils.ts | 137 ++++++++++ src/routes/activities/[id]/+page.svelte | 19 +- src/routes/communications/[id]/+page.svelte | 21 +- src/routes/conference-activity/+page.svelte | 20 +- src/routes/publications/+page.svelte | 20 +- src/routes/publications/[id]/+page.svelte | 31 +-- 16 files changed, 585 insertions(+), 541 deletions(-) create mode 100644 src/lib/utils/chartColorUtils.ts create mode 100644 src/lib/utils/typeUtils.ts diff --git a/src/lib/components/visualisations/D3BubbleChart.svelte b/src/lib/components/visualisations/D3BubbleChart.svelte index f52893a9..b1dc7465 100644 --- a/src/lib/components/visualisations/D3BubbleChart.svelte +++ b/src/lib/components/visualisations/D3BubbleChart.svelte @@ -5,8 +5,13 @@ Uses D3.js circle packing for a balanced, overlap-free layout