From c2d7bcc5f1d4af72a4d13940c0ba82a38701b8f5 Mon Sep 17 00:00:00 2001 From: MaysWind Date: Tue, 14 Apr 2026 00:36:57 +0800 Subject: [PATCH] add heat map chart in insights explorer --- src/components/desktop/HeatMapChart.vue | 272 ++++++++++++++++++ src/core/explorer.ts | 4 +- src/desktop-main.ts | 19 +- src/locales/de.json | 1 + src/locales/en.json | 1 + src/locales/es.json | 1 + src/locales/fr.json | 1 + src/locales/it.json | 1 + src/locales/ja.json | 1 + src/locales/kn.json | 1 + src/locales/ko.json | 1 + src/locales/nl.json | 1 + src/locales/pt_BR.json | 1 + src/locales/ru.json | 1 + src/locales/sl.json | 1 + src/locales/ta.json | 1 + src/locales/th.json | 1 + src/locales/tr.json | 1 + src/locales/uk.json | 1 + src/locales/vi.json | 1 + src/locales/zh_Hans.json | 1 + src/locales/zh_Hant.json | 1 + .../insights/tabs/ExplorerChartTab.vue | 22 ++ 23 files changed, 333 insertions(+), 3 deletions(-) create mode 100644 src/components/desktop/HeatMapChart.vue diff --git a/src/components/desktop/HeatMapChart.vue b/src/components/desktop/HeatMapChart.vue new file mode 100644 index 00000000..f4995b99 --- /dev/null +++ b/src/components/desktop/HeatMapChart.vue @@ -0,0 +1,272 @@ + + + + + diff --git a/src/core/explorer.ts b/src/core/explorer.ts index 2f02e901..2ee64399 100644 --- a/src/core/explorer.ts +++ b/src/core/explorer.ts @@ -175,7 +175,8 @@ export enum TransactionExplorerChartTypeValue { AreaStacked = 'areaStacked', Area100PercentStacked = 'area100%Stacked', BubbleGrouped = 'bubbleGrouped', - Radar = 'radar' + Radar = 'radar', + Heatmap = 'heatmap' } export class TransactionExplorerChartType implements NameValue { @@ -191,6 +192,7 @@ export class TransactionExplorerChartType implements NameValue { public static readonly AreaStacked = new TransactionExplorerChartType('Area Chart (Stacked)', TransactionExplorerChartTypeValue.AreaStacked, true); public static readonly Area100PercentStacked = new TransactionExplorerChartType('Area Chart (100% Stacked)', TransactionExplorerChartTypeValue.Area100PercentStacked, true); public static readonly BubbleGrouped = new TransactionExplorerChartType('Bubble Chart (Grouped)', TransactionExplorerChartTypeValue.BubbleGrouped, true); + public static readonly Heatmap = new TransactionExplorerChartType('Heatmap Chart', TransactionExplorerChartTypeValue.Heatmap, true); public static readonly Default = TransactionExplorerChartType.Pie; diff --git a/src/desktop-main.ts b/src/desktop-main.ts index 3aeea0d3..73158480 100644 --- a/src/desktop-main.ts +++ b/src/desktop-main.ts @@ -52,11 +52,22 @@ import 'vuetify/styles'; import * as echarts from 'echarts/core'; import { CanvasRenderer } from 'echarts/renderers'; -import { LineChart, BarChart, PieChart, ScatterChart, BoxplotChart, CandlestickChart, RadarChart, SankeyChart } from 'echarts/charts'; +import { + LineChart, + BarChart, + PieChart, + ScatterChart, + BoxplotChart, + CandlestickChart, + RadarChart, + HeatmapChart, + SankeyChart +} from 'echarts/charts'; import { GridComponent, TooltipComponent, LegendComponent, + VisualMapComponent } from 'echarts/components'; import VChart from 'vue-echarts'; @@ -103,6 +114,7 @@ import PieChartComponent from '@/components/desktop/PieChart.vue'; import RadarChartComponent from '@/components/desktop/RadarChart.vue'; import AxisChart from '@/components/desktop/AxisChart.vue'; import TrendsChart from '@/components/desktop/TrendsChart.vue'; +import HeatMapChart from '@/components/desktop/HeatMapChart.vue'; import RenameDialog from '@/components/desktop/RenameDialog.vue'; import DateRangeSelectionDialog from '@/components/desktop/DateRangeSelectionDialog.vue'; import MonthSelectionDialog from '@/components/desktop/MonthSelectionDialog.vue'; @@ -506,10 +518,12 @@ echarts.use([ BoxplotChart, CandlestickChart, RadarChart, + HeatmapChart, SankeyChart, GridComponent, TooltipComponent, - LegendComponent + LegendComponent, + VisualMapComponent ]); app.use(pinia); @@ -551,6 +565,7 @@ app.component('PieChart', PieChartComponent); app.component('RadarChart', RadarChartComponent); app.component('AxisChart', AxisChart); app.component('TrendsChart', TrendsChart); +app.component('HeatMapChart', HeatMapChart); app.component('RenameDialog', RenameDialog); app.component('DateRangeSelectionDialog', DateRangeSelectionDialog); app.component('MonthSelectionDialog', MonthSelectionDialog); diff --git a/src/locales/de.json b/src/locales/de.json index c3de75f3..07180be6 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -1603,6 +1603,7 @@ "Area Chart (Stacked)": "Flächendiagramm (Gestapelt)", "Area Chart (100% Stacked)": "Flächendiagramm (100% Gestapelt)", "Bubble Chart (Grouped)": "Blasendiagramm (Gruppiert)", + "Heatmap Chart": "Heatmap Chart", "Sort by": "Sortieren nach", "Map": "Karte", "Provider": "Anbieter", diff --git a/src/locales/en.json b/src/locales/en.json index d40e37da..5b675ad7 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -1603,6 +1603,7 @@ "Area Chart (Stacked)": "Area Chart (Stacked)", "Area Chart (100% Stacked)": "Area Chart (100% Stacked)", "Bubble Chart (Grouped)": "Bubble Chart (Grouped)", + "Heatmap Chart": "Heatmap Chart", "Sort by": "Sort by", "Map": "Map", "Provider": "Provider", diff --git a/src/locales/es.json b/src/locales/es.json index dc163ec2..c11fddc8 100644 --- a/src/locales/es.json +++ b/src/locales/es.json @@ -1603,6 +1603,7 @@ "Area Chart (Stacked)": "Gráfico de área (apilado)", "Area Chart (100% Stacked)": "Gráfico de área (100 % apilado)", "Bubble Chart (Grouped)": "Gráfico de burbujas (agrupado)", + "Heatmap Chart": "Heatmap Chart", "Sort by": "Ordenar por", "Map": "Mapa", "Provider": "Proveedor", diff --git a/src/locales/fr.json b/src/locales/fr.json index 6ecdc7c2..ffd02fa4 100644 --- a/src/locales/fr.json +++ b/src/locales/fr.json @@ -1603,6 +1603,7 @@ "Area Chart (Stacked)": "Area Chart (Stacked)", "Area Chart (100% Stacked)": "Area Chart (100% Stacked)", "Bubble Chart (Grouped)": "Bubble Chart (Grouped)", + "Heatmap Chart": "Heatmap Chart", "Sort by": "Trier par", "Map": "Carte", "Provider": "Fournisseur", diff --git a/src/locales/it.json b/src/locales/it.json index 3ffa8c05..56ca0f13 100644 --- a/src/locales/it.json +++ b/src/locales/it.json @@ -1603,6 +1603,7 @@ "Area Chart (Stacked)": "Area Chart (Stacked)", "Area Chart (100% Stacked)": "Area Chart (100% Stacked)", "Bubble Chart (Grouped)": "Bubble Chart (Grouped)", + "Heatmap Chart": "Heatmap Chart", "Sort by": "Ordina per", "Map": "Mappa", "Provider": "Fornitore", diff --git a/src/locales/ja.json b/src/locales/ja.json index 8aa51dab..ae68a2e7 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -1603,6 +1603,7 @@ "Area Chart (Stacked)": "Area Chart (Stacked)", "Area Chart (100% Stacked)": "Area Chart (100% Stacked)", "Bubble Chart (Grouped)": "Bubble Chart (Grouped)", + "Heatmap Chart": "Heatmap Chart", "Sort by": "ソート順", "Map": "地図", "Provider": "プロバイダー", diff --git a/src/locales/kn.json b/src/locales/kn.json index d82448bc..f9f61cd5 100644 --- a/src/locales/kn.json +++ b/src/locales/kn.json @@ -1603,6 +1603,7 @@ "Area Chart (Stacked)": "Area Chart (Stacked)", "Area Chart (100% Stacked)": "Area Chart (100% Stacked)", "Bubble Chart (Grouped)": "Bubble Chart (Grouped)", + "Heatmap Chart": "Heatmap Chart", "Sort by": "ಇದರ ಪ್ರಕಾರ ವಿಂಗಡಿಸಿ", "Map": "ನಕ್ಷೆ", "Provider": "ಪ್ರದಾತ", diff --git a/src/locales/ko.json b/src/locales/ko.json index e77b49a3..89cfbf96 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -1603,6 +1603,7 @@ "Area Chart (Stacked)": "누적 영역 차트", "Area Chart (100% Stacked)": "100% 누적 영역 차트", "Bubble Chart (Grouped)": "그룹화된 버블 차트", + "Heatmap Chart": "Heatmap Chart", "Sort by": "정렬 기준", "Map": "지도", "Provider": "제공자", diff --git a/src/locales/nl.json b/src/locales/nl.json index 7d13c6a2..244c0ebc 100644 --- a/src/locales/nl.json +++ b/src/locales/nl.json @@ -1603,6 +1603,7 @@ "Area Chart (Stacked)": "Area Chart (Stacked)", "Area Chart (100% Stacked)": "Area Chart (100% Stacked)", "Bubble Chart (Grouped)": "Bubble Chart (Grouped)", + "Heatmap Chart": "Heatmap Chart", "Sort by": "Sorteren op", "Map": "Kaart", "Provider": "Provider", diff --git a/src/locales/pt_BR.json b/src/locales/pt_BR.json index 435fcf95..f2a27e7e 100644 --- a/src/locales/pt_BR.json +++ b/src/locales/pt_BR.json @@ -1603,6 +1603,7 @@ "Area Chart (Stacked)": "Gráfico de Área (Empilhado)", "Area Chart (100% Stacked)": "Gráfico de Área (100% Empilhado)", "Bubble Chart (Grouped)": "Gráfico de Bolhas (Agrupado)", + "Heatmap Chart": "Heatmap Chart", "Sort by": "Ordenar por", "Map": "Mapa", "Provider": "Provedor", diff --git a/src/locales/ru.json b/src/locales/ru.json index 4c9f9f74..ec94b8ca 100644 --- a/src/locales/ru.json +++ b/src/locales/ru.json @@ -1603,6 +1603,7 @@ "Area Chart (Stacked)": "Диаграмма с областями (с накоплением)", "Area Chart (100% Stacked)": "Диаграмма с областями (с 100% накоплением)", "Bubble Chart (Grouped)": "Пузырьковая диаграмма (сгрупированная)", + "Heatmap Chart": "Heatmap Chart", "Sort by": "Сортировать по", "Map": "Карта", "Provider": "Провайдер", diff --git a/src/locales/sl.json b/src/locales/sl.json index c569e45c..cf1b4e97 100644 --- a/src/locales/sl.json +++ b/src/locales/sl.json @@ -1603,6 +1603,7 @@ "Area Chart (Stacked)": "Naložen ploskovni grafikon", "Area Chart (100% Stacked)": "100-odstotno naložen ploskovni grafikon", "Bubble Chart (Grouped)": "Grupiran mehurčni grafikon", + "Heatmap Chart": "Heatmap Chart", "Sort by": "Razvrsti po", "Map": "Zemljevid", "Provider": "Ponudnik", diff --git a/src/locales/ta.json b/src/locales/ta.json index ffd52660..a3e8ba61 100644 --- a/src/locales/ta.json +++ b/src/locales/ta.json @@ -1603,6 +1603,7 @@ "Area Chart (Stacked)": "பரப்பு வரைபடம் (அடுக்கப்பட்ட)", "Area Chart (100% Stacked)": "பரப்பு வரைபடம் (100% அடுக்கப்பட்ட)", "Bubble Chart (Grouped)": "குமிழி வரைபடம் (குழுவாக்கப்பட்ட)", + "Heatmap Chart": "Heatmap Chart", "Sort by": "இதன் வகை வரிசைப்படுத்து", "Map": "வரைபடம்", "Provider": "வழங்குநர்", diff --git a/src/locales/th.json b/src/locales/th.json index 1c23442e..e5861bd0 100644 --- a/src/locales/th.json +++ b/src/locales/th.json @@ -1603,6 +1603,7 @@ "Area Chart (Stacked)": "Area Chart (Stacked)", "Area Chart (100% Stacked)": "Area Chart (100% Stacked)", "Bubble Chart (Grouped)": "Bubble Chart (Grouped)", + "Heatmap Chart": "Heatmap Chart", "Sort by": "จัดเรียงตาม", "Map": "แผนที่", "Provider": "ผู้ให้บริการ", diff --git a/src/locales/tr.json b/src/locales/tr.json index 491b627e..79721b16 100644 --- a/src/locales/tr.json +++ b/src/locales/tr.json @@ -1603,6 +1603,7 @@ "Area Chart (Stacked)": "Area Chart (Stacked)", "Area Chart (100% Stacked)": "Area Chart (100% Stacked)", "Bubble Chart (Grouped)": "Bubble Chart (Grouped)", + "Heatmap Chart": "Heatmap Chart", "Sort by": "Sıralama ölçütü", "Map": "Harita", "Provider": "Sağlayıcı", diff --git a/src/locales/uk.json b/src/locales/uk.json index 071d15a5..f4454250 100644 --- a/src/locales/uk.json +++ b/src/locales/uk.json @@ -1603,6 +1603,7 @@ "Area Chart (Stacked)": "Area Chart (Stacked)", "Area Chart (100% Stacked)": "Area Chart (100% Stacked)", "Bubble Chart (Grouped)": "Bubble Chart (Grouped)", + "Heatmap Chart": "Heatmap Chart", "Sort by": "Сортувати за", "Map": "Карта", "Provider": "Провайдер", diff --git a/src/locales/vi.json b/src/locales/vi.json index fd358d8e..f2a34849 100644 --- a/src/locales/vi.json +++ b/src/locales/vi.json @@ -1603,6 +1603,7 @@ "Area Chart (Stacked)": "Area Chart (Stacked)", "Area Chart (100% Stacked)": "Area Chart (100% Stacked)", "Bubble Chart (Grouped)": "Bubble Chart (Grouped)", + "Heatmap Chart": "Heatmap Chart", "Sort by": "Sắp xếp theo", "Map": "Bản đồ", "Provider": "Nhà cung cấp", diff --git a/src/locales/zh_Hans.json b/src/locales/zh_Hans.json index 72103b26..d5dbceb3 100644 --- a/src/locales/zh_Hans.json +++ b/src/locales/zh_Hans.json @@ -1603,6 +1603,7 @@ "Area Chart (Stacked)": "面积图(堆叠)", "Area Chart (100% Stacked)": "面积图(100%堆叠)", "Bubble Chart (Grouped)": "气泡图(分组)", + "Heatmap Chart": "热力图", "Sort by": "排序方式", "Map": "地图", "Provider": "提供者", diff --git a/src/locales/zh_Hant.json b/src/locales/zh_Hant.json index bbf73e05..8b1ad0f8 100644 --- a/src/locales/zh_Hant.json +++ b/src/locales/zh_Hant.json @@ -1603,6 +1603,7 @@ "Area Chart (Stacked)": "面積圖(堆疊)", "Area Chart (100% Stacked)": "面積圖(100%堆疊)", "Bubble Chart (Grouped)": "氣泡圖(分組)", + "Heatmap Chart": "熱力圖", "Sort by": "排序方式", "Map": "地圖", "Provider": "提供者", diff --git a/src/views/desktop/insights/tabs/ExplorerChartTab.vue b/src/views/desktop/insights/tabs/ExplorerChartTab.vue index 7658af7c..14c564f2 100644 --- a/src/views/desktop/insights/tabs/ExplorerChartTab.vue +++ b/src/views/desktop/insights/tabs/ExplorerChartTab.vue @@ -162,6 +162,28 @@ v-else-if="!loading" /> + + + +