diff --git a/src/components/desktop/CalendarHeatMapChart.vue b/src/components/desktop/CalendarHeatMapChart.vue
new file mode 100644
index 00000000..4e3da781
--- /dev/null
+++ b/src/components/desktop/CalendarHeatMapChart.vue
@@ -0,0 +1,268 @@
+
+
+
+
+
+
+
diff --git a/src/core/explorer.ts b/src/core/explorer.ts
index 0feefff5..623881ad 100644
--- a/src/core/explorer.ts
+++ b/src/core/explorer.ts
@@ -1,5 +1,6 @@
import { type NameValue } from '@/core/base.ts';
import { DateRange } from '@/core/datetime.ts';
+import { ChartSortingType } from '@/core/statistics.ts';
export enum TransactionExplorerConditionRelation {
First = 'first',
@@ -166,58 +167,6 @@ export class TransactionExplorerConditionOperator implements NameValue {
}
}
-export enum TransactionExplorerChartTypeValue {
- Pie = 'pie',
- ColumnStacked = 'columnStacked',
- Column100PercentStacked = 'column100%Stacked',
- ColumnGrouped = 'columnGrouped',
- LineGrouped = 'lineGrouped',
- AreaStacked = 'areaStacked',
- Area100PercentStacked = 'area100%Stacked',
- BubbleGrouped = 'bubbleGrouped',
- Radar = 'radar',
- Heatmap = 'heatmap'
-}
-
-export class TransactionExplorerChartType implements NameValue {
- private static readonly allInstances: TransactionExplorerChartType[] = [];
- private static readonly allInstancesByValue: Record = {};
-
- public static readonly Pie = new TransactionExplorerChartType('Pie Chart', TransactionExplorerChartTypeValue.Pie, false);
- public static readonly Radar = new TransactionExplorerChartType('Radar Chart', TransactionExplorerChartTypeValue.Radar, false);
- public static readonly ColumnStacked = new TransactionExplorerChartType('Column Chart (Stacked)', TransactionExplorerChartTypeValue.ColumnStacked, true);
- public static readonly Column100PercentStacked = new TransactionExplorerChartType('Column Chart (100% Stacked)', TransactionExplorerChartTypeValue.Column100PercentStacked, true);
- public static readonly ColumnGrouped = new TransactionExplorerChartType('Column Chart (Grouped)', TransactionExplorerChartTypeValue.ColumnGrouped, true);
- public static readonly LineGrouped = new TransactionExplorerChartType('Line Chart (Grouped)', TransactionExplorerChartTypeValue.LineGrouped, true);
- 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;
-
- public readonly name: string;
- public readonly value: TransactionExplorerChartTypeValue;
- public readonly seriesDimensionRequired: boolean;
-
- private constructor(name: string, value: TransactionExplorerChartTypeValue, seriesDimensionRequired: boolean) {
- this.name = name;
- this.value = value;
- this.seriesDimensionRequired = seriesDimensionRequired;
-
- TransactionExplorerChartType.allInstances.push(this);
- TransactionExplorerChartType.allInstancesByValue[value] = this;
- }
-
- public static values(): TransactionExplorerChartType[] {
- return TransactionExplorerChartType.allInstances;
- }
-
- public static valueOf(value: string): TransactionExplorerChartType | undefined {
- return TransactionExplorerChartType.allInstancesByValue[value];
- }
-}
-
export enum TransactionExplorerDataDimensionType {
None = 'none',
Query = 'query',
@@ -421,4 +370,62 @@ export class TransactionExplorerValueMetric implements NameValue {
}
}
+export enum TransactionExplorerChartTypeValue {
+ Pie = 'pie',
+ ColumnStacked = 'columnStacked',
+ Column100PercentStacked = 'column100%Stacked',
+ ColumnGrouped = 'columnGrouped',
+ LineGrouped = 'lineGrouped',
+ AreaStacked = 'areaStacked',
+ Area100PercentStacked = 'area100%Stacked',
+ BubbleGrouped = 'bubbleGrouped',
+ Radar = 'radar',
+ Heatmap = 'heatmap',
+ CalendarHeatmap = 'calendarHeatmap'
+}
+
+export class TransactionExplorerChartType implements NameValue {
+ private static readonly allInstances: TransactionExplorerChartType[] = [];
+ private static readonly allInstancesByValue: Record = {};
+
+ public static readonly Pie = new TransactionExplorerChartType('Pie Chart', TransactionExplorerChartTypeValue.Pie, undefined, false, undefined);
+ public static readonly Radar = new TransactionExplorerChartType('Radar Chart', TransactionExplorerChartTypeValue.Radar, undefined, false, undefined);
+ public static readonly ColumnStacked = new TransactionExplorerChartType('Column Chart (Stacked)', TransactionExplorerChartTypeValue.ColumnStacked, undefined, true, undefined);
+ public static readonly Column100PercentStacked = new TransactionExplorerChartType('Column Chart (100% Stacked)', TransactionExplorerChartTypeValue.Column100PercentStacked, undefined, true, undefined);
+ public static readonly ColumnGrouped = new TransactionExplorerChartType('Column Chart (Grouped)', TransactionExplorerChartTypeValue.ColumnGrouped, undefined, true, undefined);
+ public static readonly LineGrouped = new TransactionExplorerChartType('Line Chart (Grouped)', TransactionExplorerChartTypeValue.LineGrouped, undefined, true, undefined);
+ public static readonly AreaStacked = new TransactionExplorerChartType('Area Chart (Stacked)', TransactionExplorerChartTypeValue.AreaStacked, undefined, true, undefined);
+ public static readonly Area100PercentStacked = new TransactionExplorerChartType('Area Chart (100% Stacked)', TransactionExplorerChartTypeValue.Area100PercentStacked, undefined, true, undefined);
+ public static readonly BubbleGrouped = new TransactionExplorerChartType('Bubble Chart (Grouped)', TransactionExplorerChartTypeValue.BubbleGrouped, undefined, true, undefined);
+ public static readonly Heatmap = new TransactionExplorerChartType('Heatmap Chart', TransactionExplorerChartTypeValue.Heatmap, undefined, true, undefined);
+ public static readonly CalendarHeatmap = new TransactionExplorerChartType('Calendar Heatmap Chart', TransactionExplorerChartTypeValue.CalendarHeatmap, TransactionExplorerDataDimensionType.DateTimeByYearMonthDay, false, ChartSortingType.DisplayOrder.type);
+
+ public static readonly Default = TransactionExplorerChartType.Pie;
+
+ public readonly name: string;
+ public readonly value: TransactionExplorerChartTypeValue;
+ public readonly fixedCategoryDimension: TransactionExplorerDataDimensionType | undefined;
+ public readonly seriesDimensionRequired: boolean;
+ public readonly fixedSortingType: number | undefined;
+
+ private constructor(name: string, value: TransactionExplorerChartTypeValue, fixedCategoryDimension: TransactionExplorerDataDimensionType | undefined, seriesDimensionRequired: boolean, fixedSortingType: number | undefined) {
+ this.name = name;
+ this.value = value;
+ this.fixedCategoryDimension = fixedCategoryDimension;
+ this.seriesDimensionRequired = seriesDimensionRequired;
+ this.fixedSortingType = fixedSortingType;
+
+ TransactionExplorerChartType.allInstances.push(this);
+ TransactionExplorerChartType.allInstancesByValue[value] = this;
+ }
+
+ public static values(): TransactionExplorerChartType[] {
+ return TransactionExplorerChartType.allInstances;
+ }
+
+ public static valueOf(value: string): TransactionExplorerChartType | undefined {
+ return TransactionExplorerChartType.allInstancesByValue[value];
+ }
+}
+
export const DEFAULT_TRANSACTION_EXPLORER_DATE_RANGE: DateRange = DateRange.ThisMonth;
diff --git a/src/desktop-main.ts b/src/desktop-main.ts
index 73158480..77bac5a3 100644
--- a/src/desktop-main.ts
+++ b/src/desktop-main.ts
@@ -65,6 +65,7 @@ import {
} from 'echarts/charts';
import {
GridComponent,
+ CalendarComponent,
TooltipComponent,
LegendComponent,
VisualMapComponent
@@ -115,6 +116,7 @@ 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 CalendarHeatMapChart from '@/components/desktop/CalendarHeatMapChart.vue';
import RenameDialog from '@/components/desktop/RenameDialog.vue';
import DateRangeSelectionDialog from '@/components/desktop/DateRangeSelectionDialog.vue';
import MonthSelectionDialog from '@/components/desktop/MonthSelectionDialog.vue';
@@ -521,6 +523,7 @@ echarts.use([
HeatmapChart,
SankeyChart,
GridComponent,
+ CalendarComponent,
TooltipComponent,
LegendComponent,
VisualMapComponent
@@ -566,6 +569,7 @@ app.component('RadarChart', RadarChartComponent);
app.component('AxisChart', AxisChart);
app.component('TrendsChart', TrendsChart);
app.component('HeatMapChart', HeatMapChart);
+app.component('CalendarHeatMapChart', CalendarHeatMapChart);
app.component('RenameDialog', RenameDialog);
app.component('DateRangeSelectionDialog', DateRangeSelectionDialog);
app.component('MonthSelectionDialog', MonthSelectionDialog);
diff --git a/src/lib/common.ts b/src/lib/common.ts
index 805fc31f..819dba1b 100644
--- a/src/lib/common.ts
+++ b/src/lib/common.ts
@@ -2,9 +2,10 @@ import {
type GenericNameValue,
type TypeAndName,
type TypeAndDisplayName,
+ entries,
keys,
keysIfValueEquals,
- values
+ values,
} from '@/core/base.ts';
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
@@ -387,6 +388,21 @@ export function objectFieldToArrayItem(object: object): string[] {
return ret;
}
+export function mapObjectToArray(object: Record, mapFunc: (value: V, key: string | number | symbol, index: number) => R): R[] {
+ const ret: R[] = [];
+ let index = 0;
+
+ for (const [key, value] of entries(object)) {
+ const mappedValue = mapFunc(value, key, index++);
+
+ if (isDefined(mappedValue)) {
+ ret.push(mappedValue);
+ }
+ }
+
+ return ret;
+}
+
export function objectFieldWithValueToArrayItem(object: Record, value: T): string[] {
const ret: string[] = [];
diff --git a/src/locales/de.json b/src/locales/de.json
index d3d41eae..39f7c730 100644
--- a/src/locales/de.json
+++ b/src/locales/de.json
@@ -1604,6 +1604,7 @@
"Area Chart (100% Stacked)": "Flächendiagramm (100% Gestapelt)",
"Bubble Chart (Grouped)": "Blasendiagramm (Gruppiert)",
"Heatmap Chart": "Heatmap Chart",
+ "Calendar Heatmap Chart": "Calendar Heatmap Chart",
"Sort by": "Sortieren nach",
"Map": "Karte",
"Provider": "Anbieter",
diff --git a/src/locales/en.json b/src/locales/en.json
index 35c65d6d..2b801894 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -1604,6 +1604,7 @@
"Area Chart (100% Stacked)": "Area Chart (100% Stacked)",
"Bubble Chart (Grouped)": "Bubble Chart (Grouped)",
"Heatmap Chart": "Heatmap Chart",
+ "Calendar Heatmap Chart": "Calendar Heatmap Chart",
"Sort by": "Sort by",
"Map": "Map",
"Provider": "Provider",
diff --git a/src/locales/es.json b/src/locales/es.json
index e88e4e68..f0ba96aa 100644
--- a/src/locales/es.json
+++ b/src/locales/es.json
@@ -1604,6 +1604,7 @@
"Area Chart (100% Stacked)": "Gráfico de área (100 % apilado)",
"Bubble Chart (Grouped)": "Gráfico de burbujas (agrupado)",
"Heatmap Chart": "Heatmap Chart",
+ "Calendar Heatmap Chart": "Calendar Heatmap Chart",
"Sort by": "Ordenar por",
"Map": "Mapa",
"Provider": "Proveedor",
diff --git a/src/locales/fr.json b/src/locales/fr.json
index 986f161a..b66eecc5 100644
--- a/src/locales/fr.json
+++ b/src/locales/fr.json
@@ -1604,6 +1604,7 @@
"Area Chart (100% Stacked)": "Area Chart (100% Stacked)",
"Bubble Chart (Grouped)": "Bubble Chart (Grouped)",
"Heatmap Chart": "Heatmap Chart",
+ "Calendar Heatmap Chart": "Calendar Heatmap Chart",
"Sort by": "Trier par",
"Map": "Carte",
"Provider": "Fournisseur",
diff --git a/src/locales/helpers.ts b/src/locales/helpers.ts
index 3010cc55..c47cb534 100644
--- a/src/locales/helpers.ts
+++ b/src/locales/helpers.ts
@@ -2617,6 +2617,7 @@ export function useI18n() {
isLongTimeMinuteTwoDigits,
isLongTimeSecondTwoDigits,
// format date time (by calendar display type) functions
+ getCalendarDisplayLongYearFromDateTime: (dateTime: DateTime, numeralSystem?: NumeralSystem) => formatDateTime(dateTime, getLocalizedLongYearFormat(), getDateTimeFormatOptions({ calendarType: getCurrentCalendarDisplayType().primaryCalendarType, numeralSystem: numeralSystem })),
getCalendarDisplayShortYearFromDateTime: (dateTime: DateTime, numeralSystem?: NumeralSystem) => formatDateTime(dateTime, getLocalizedShortYearFormat(), getDateTimeFormatOptions({ calendarType: getCurrentCalendarDisplayType().primaryCalendarType, numeralSystem: numeralSystem })),
getCalendarDisplayShortMonthFromDateTime: (dateTime: DateTime, numeralSystem?: NumeralSystem) => formatDateTime(dateTime, 'MMM', getDateTimeFormatOptions({ calendarType: getCurrentCalendarDisplayType().primaryCalendarType, numeralSystem: numeralSystem })),
getCalendarDisplayDayOfMonthFromDateTime: (dateTime: DateTime, numeralSystem?: NumeralSystem) => formatDateTime(dateTime, getLocalizedShortDayFormat(), getDateTimeFormatOptions({ calendarType: getCurrentCalendarDisplayType().primaryCalendarType, numeralSystem: numeralSystem })),
diff --git a/src/locales/it.json b/src/locales/it.json
index c90e9c24..86e51c0e 100644
--- a/src/locales/it.json
+++ b/src/locales/it.json
@@ -1604,6 +1604,7 @@
"Area Chart (100% Stacked)": "Area Chart (100% Stacked)",
"Bubble Chart (Grouped)": "Bubble Chart (Grouped)",
"Heatmap Chart": "Heatmap Chart",
+ "Calendar Heatmap Chart": "Calendar Heatmap Chart",
"Sort by": "Ordina per",
"Map": "Mappa",
"Provider": "Fornitore",
diff --git a/src/locales/ja.json b/src/locales/ja.json
index df2230b8..a73c5902 100644
--- a/src/locales/ja.json
+++ b/src/locales/ja.json
@@ -1604,6 +1604,7 @@
"Area Chart (100% Stacked)": "Area Chart (100% Stacked)",
"Bubble Chart (Grouped)": "Bubble Chart (Grouped)",
"Heatmap Chart": "Heatmap Chart",
+ "Calendar Heatmap Chart": "Calendar Heatmap Chart",
"Sort by": "ソート順",
"Map": "地図",
"Provider": "プロバイダー",
diff --git a/src/locales/kn.json b/src/locales/kn.json
index 7088a689..7a483b4f 100644
--- a/src/locales/kn.json
+++ b/src/locales/kn.json
@@ -1604,6 +1604,7 @@
"Area Chart (100% Stacked)": "Area Chart (100% Stacked)",
"Bubble Chart (Grouped)": "Bubble Chart (Grouped)",
"Heatmap Chart": "Heatmap Chart",
+ "Calendar Heatmap Chart": "Calendar Heatmap Chart",
"Sort by": "ಇದರ ಪ್ರಕಾರ ವಿಂಗಡಿಸಿ",
"Map": "ನಕ್ಷೆ",
"Provider": "ಪ್ರದಾತ",
diff --git a/src/locales/ko.json b/src/locales/ko.json
index c7875652..2258fbf7 100644
--- a/src/locales/ko.json
+++ b/src/locales/ko.json
@@ -1604,6 +1604,7 @@
"Area Chart (100% Stacked)": "100% 누적 영역 차트",
"Bubble Chart (Grouped)": "그룹화된 버블 차트",
"Heatmap Chart": "Heatmap Chart",
+ "Calendar Heatmap Chart": "Calendar Heatmap Chart",
"Sort by": "정렬 기준",
"Map": "지도",
"Provider": "제공자",
diff --git a/src/locales/nl.json b/src/locales/nl.json
index dbe8ae85..51a7971c 100644
--- a/src/locales/nl.json
+++ b/src/locales/nl.json
@@ -1604,6 +1604,7 @@
"Area Chart (100% Stacked)": "Area Chart (100% Stacked)",
"Bubble Chart (Grouped)": "Bubble Chart (Grouped)",
"Heatmap Chart": "Heatmap Chart",
+ "Calendar Heatmap Chart": "Calendar 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 b1d485fe..b3e51acb 100644
--- a/src/locales/pt_BR.json
+++ b/src/locales/pt_BR.json
@@ -1604,6 +1604,7 @@
"Area Chart (100% Stacked)": "Gráfico de Área (100% Empilhado)",
"Bubble Chart (Grouped)": "Gráfico de Bolhas (Agrupado)",
"Heatmap Chart": "Heatmap Chart",
+ "Calendar Heatmap Chart": "Calendar Heatmap Chart",
"Sort by": "Ordenar por",
"Map": "Mapa",
"Provider": "Provedor",
diff --git a/src/locales/ru.json b/src/locales/ru.json
index fd92ebbe..9c110eab 100644
--- a/src/locales/ru.json
+++ b/src/locales/ru.json
@@ -1604,6 +1604,7 @@
"Area Chart (100% Stacked)": "Диаграмма с областями (с 100% накоплением)",
"Bubble Chart (Grouped)": "Пузырьковая диаграмма (сгрупированная)",
"Heatmap Chart": "Heatmap Chart",
+ "Calendar Heatmap Chart": "Calendar Heatmap Chart",
"Sort by": "Сортировать по",
"Map": "Карта",
"Provider": "Провайдер",
diff --git a/src/locales/sl.json b/src/locales/sl.json
index 11f85970..684a81c2 100644
--- a/src/locales/sl.json
+++ b/src/locales/sl.json
@@ -1604,6 +1604,7 @@
"Area Chart (100% Stacked)": "100-odstotno naložen ploskovni grafikon",
"Bubble Chart (Grouped)": "Grupiran mehurčni grafikon",
"Heatmap Chart": "Heatmap Chart",
+ "Calendar Heatmap Chart": "Calendar Heatmap Chart",
"Sort by": "Razvrsti po",
"Map": "Zemljevid",
"Provider": "Ponudnik",
diff --git a/src/locales/ta.json b/src/locales/ta.json
index 85c235e4..a073eda5 100644
--- a/src/locales/ta.json
+++ b/src/locales/ta.json
@@ -1604,6 +1604,7 @@
"Area Chart (100% Stacked)": "பரப்பு வரைபடம் (100% அடுக்கப்பட்ட)",
"Bubble Chart (Grouped)": "குமிழி வரைபடம் (குழுவாக்கப்பட்ட)",
"Heatmap Chart": "Heatmap Chart",
+ "Calendar Heatmap Chart": "Calendar Heatmap Chart",
"Sort by": "இதன் வகை வரிசைப்படுத்து",
"Map": "வரைபடம்",
"Provider": "வழங்குநர்",
diff --git a/src/locales/th.json b/src/locales/th.json
index e38cc052..0dfaec0f 100644
--- a/src/locales/th.json
+++ b/src/locales/th.json
@@ -1604,6 +1604,7 @@
"Area Chart (100% Stacked)": "Area Chart (100% Stacked)",
"Bubble Chart (Grouped)": "Bubble Chart (Grouped)",
"Heatmap Chart": "Heatmap Chart",
+ "Calendar Heatmap Chart": "Calendar Heatmap Chart",
"Sort by": "จัดเรียงตาม",
"Map": "แผนที่",
"Provider": "ผู้ให้บริการ",
diff --git a/src/locales/tr.json b/src/locales/tr.json
index d4833240..8584e729 100644
--- a/src/locales/tr.json
+++ b/src/locales/tr.json
@@ -1604,6 +1604,7 @@
"Area Chart (100% Stacked)": "Area Chart (100% Stacked)",
"Bubble Chart (Grouped)": "Bubble Chart (Grouped)",
"Heatmap Chart": "Heatmap Chart",
+ "Calendar Heatmap Chart": "Calendar 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 f96f10e7..15b78284 100644
--- a/src/locales/uk.json
+++ b/src/locales/uk.json
@@ -1604,6 +1604,7 @@
"Area Chart (100% Stacked)": "Area Chart (100% Stacked)",
"Bubble Chart (Grouped)": "Bubble Chart (Grouped)",
"Heatmap Chart": "Heatmap Chart",
+ "Calendar Heatmap Chart": "Calendar Heatmap Chart",
"Sort by": "Сортувати за",
"Map": "Карта",
"Provider": "Провайдер",
diff --git a/src/locales/vi.json b/src/locales/vi.json
index a34d3a08..492c85df 100644
--- a/src/locales/vi.json
+++ b/src/locales/vi.json
@@ -1604,6 +1604,7 @@
"Area Chart (100% Stacked)": "Area Chart (100% Stacked)",
"Bubble Chart (Grouped)": "Bubble Chart (Grouped)",
"Heatmap Chart": "Heatmap Chart",
+ "Calendar Heatmap Chart": "Calendar 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 9745c912..c87eca40 100644
--- a/src/locales/zh_Hans.json
+++ b/src/locales/zh_Hans.json
@@ -1604,6 +1604,7 @@
"Area Chart (100% Stacked)": "面积图(100%堆叠)",
"Bubble Chart (Grouped)": "气泡图(分组)",
"Heatmap Chart": "热力图",
+ "Calendar Heatmap Chart": "日历热力图",
"Sort by": "排序方式",
"Map": "地图",
"Provider": "提供者",
diff --git a/src/locales/zh_Hant.json b/src/locales/zh_Hant.json
index 29371b3d..6e20acb5 100644
--- a/src/locales/zh_Hant.json
+++ b/src/locales/zh_Hant.json
@@ -1604,6 +1604,7 @@
"Area Chart (100% Stacked)": "面積圖(100%堆疊)",
"Bubble Chart (Grouped)": "氣泡圖(分組)",
"Heatmap Chart": "熱力圖",
+ "Calendar 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 38d90edb..4a41294a 100644
--- a/src/views/desktop/insights/tabs/ExplorerChartTab.vue
+++ b/src/views/desktop/insights/tabs/ExplorerChartTab.vue
@@ -12,7 +12,8 @@
:disabled="loading || disabled"
:label="tt('Chart Type')"
:items="allTransactionExplorerChartTypes"
- v-model="currentExplorer.chartType"
+ :model-value="currentExplorer.chartType"
+ @update:model-value="updateChartType"
/>
+
+
+
+