From edcf33f49c8c0fb95d327c867fe3dfbb30e92088 Mon Sep 17 00:00:00 2001 From: MaysWind Date: Sun, 8 Mar 2026 23:33:46 +0800 Subject: [PATCH] add boxplot chart in reconciliation statement dialog --- .../base/AccountBalanceTrendsChartBase.ts | 16 +++- .../desktop/AccountBalanceTrendsChart.vue | 92 ++++++++++++++++--- .../mobile/AccountBalanceTrendsBarChart.vue | 2 + src/core/statistics.ts | 3 +- src/desktop-main.ts | 3 +- src/locales/de.json | 3 + src/locales/en.json | 3 + src/locales/es.json | 3 + src/locales/fr.json | 3 + src/locales/it.json | 3 + src/locales/ja.json | 3 + src/locales/kn.json | 3 + src/locales/ko.json | 3 + src/locales/nl.json | 3 + src/locales/pt_BR.json | 3 + src/locales/ru.json | 3 + src/locales/sl.json | 3 + src/locales/ta.json | 3 + src/locales/th.json | 3 + src/locales/tr.json | 3 + src/locales/uk.json | 3 + src/locales/vi.json | 3 + src/locales/zh_Hans.json | 3 + src/locales/zh_Hant.json | 3 + .../dialogs/ReconciliationStatementDialog.vue | 1 + 25 files changed, 159 insertions(+), 15 deletions(-) diff --git a/src/components/base/AccountBalanceTrendsChartBase.ts b/src/components/base/AccountBalanceTrendsChartBase.ts index 9884e5fa..4ebeca1f 100644 --- a/src/components/base/AccountBalanceTrendsChartBase.ts +++ b/src/components/base/AccountBalanceTrendsChartBase.ts @@ -44,6 +44,8 @@ export interface AccountBalanceTrendsChartItem { maximumBalance: number; medianBalance: number; averageBalance: number; + q1Balance: number; + q3Balance: number; } export interface CommonAccountBalanceTrendsChartProps { @@ -162,6 +164,8 @@ export function useAccountBalanceTrendsChartBase(props: CommonAccountBalanceTren let lastMaximumBalance = lastClosingBalance; let lastMedianBalance = lastClosingBalance; let lastAverageBalance = lastClosingBalance; + let lastQ1Balance = lastClosingBalance; + let lastQ3Balance = lastClosingBalance; for (const dateRange of allDateRanges.value) { const minDateTime = parseDateTimeFromUnixTime(dateRange.minUnixTime); @@ -205,6 +209,8 @@ export function useAccountBalanceTrendsChartBase(props: CommonAccountBalanceTren const maximumBalance = Math.max(...dataItems.map(item => item.accountClosingBalance)); const medianBalance = allDataItemsSortedByClosingBalance[Math.floor(allDataItemsSortedByClosingBalance.length / 2)]!.accountClosingBalance; const averageBalance = Math.trunc(sumAmounts(dataItems.map(item => item.accountClosingBalance)) / dataItems.length); + const q1Balance = allDataItemsSortedByClosingBalance[Math.floor(allDataItemsSortedByClosingBalance.length / 4)]!.accountClosingBalance; + const q3Balance = allDataItemsSortedByClosingBalance[Math.floor(allDataItemsSortedByClosingBalance.length * 3 / 4)]!.accountClosingBalance; if (props.account.isAsset) { lastOpeningBalance = openingBalance; @@ -213,6 +219,8 @@ export function useAccountBalanceTrendsChartBase(props: CommonAccountBalanceTren lastMaximumBalance = maximumBalance; lastMedianBalance = medianBalance; lastAverageBalance = averageBalance; + lastQ1Balance = q1Balance; + lastQ3Balance = q3Balance; } else if (props.account.isLiability) { lastOpeningBalance = -openingBalance; lastClosingBalance = -closingBalance; @@ -220,6 +228,8 @@ export function useAccountBalanceTrendsChartBase(props: CommonAccountBalanceTren lastMaximumBalance = -maximumBalance; lastMedianBalance = -medianBalance; lastAverageBalance = -averageBalance; + lastQ1Balance = -q1Balance; + lastQ3Balance = -q3Balance; } else { lastOpeningBalance = openingBalance; lastClosingBalance = closingBalance; @@ -227,6 +237,8 @@ export function useAccountBalanceTrendsChartBase(props: CommonAccountBalanceTren lastMaximumBalance = maximumBalance; lastMedianBalance = medianBalance; lastAverageBalance = averageBalance; + lastQ1Balance = q1Balance; + lastQ3Balance = q3Balance; } } @@ -237,7 +249,9 @@ export function useAccountBalanceTrendsChartBase(props: CommonAccountBalanceTren minimumBalance: lastMinimumBalance, maximumBalance: lastMaximumBalance, medianBalance: lastMedianBalance, - averageBalance: lastAverageBalance + averageBalance: lastAverageBalance, + q1Balance: lastQ1Balance, + q3Balance: lastQ3Balance }); lastOpeningBalance = lastClosingBalance; diff --git a/src/components/desktop/AccountBalanceTrendsChart.vue b/src/components/desktop/AccountBalanceTrendsChart.vue index ee7a4acb..e34ee778 100644 --- a/src/components/desktop/AccountBalanceTrendsChart.vue +++ b/src/components/desktop/AccountBalanceTrendsChart.vue @@ -78,6 +78,9 @@ const allSeries = computed(() => { series.areaStyle = {}; } else if (props.type === AccountBalanceTrendChartType.Column.type) { series.type = 'bar'; + } else if (props.type === AccountBalanceTrendChartType.Boxplot.type) { + series.type = 'boxplot'; + series.itemStyle.borderColor = series.itemStyle.color; } else if (props.type === AccountBalanceTrendChartType.Candlestick.type) { const expenseIncomeAmountColor = getExpenseAndIncomeAmountColor(userStore.currentUserExpenseAmountColor, userStore.currentUserIncomeAmountColor, isDarkMode.value); series.type = 'candlestick'; @@ -88,7 +91,15 @@ const allSeries = computed(() => { } for (const item of allDataItems.value) { - if (props.type === AccountBalanceTrendChartType.Candlestick.type) { + if (props.type === AccountBalanceTrendChartType.Boxplot.type) { + series.data.push([ + item.minimumBalance, + item.q1Balance, + item.medianBalance, + item.q3Balance, + item.maximumBalance + ]); + } else if (props.type === AccountBalanceTrendChartType.Candlestick.type) { series.data.push([ item.openingBalance, item.closingBalance, @@ -114,20 +125,26 @@ const yAxisWidth = computed(() => { for (const series of allSeries.value) { for (const data of series.data) { - let value: number; + let currentMinValue: number; + let currentMaxValue: number; - if (isArray(data)) { - value = data[1] as number; // for candlestick, use closing balance + if (isArray(data) && props.type === AccountBalanceTrendChartType.Boxplot.type) { + currentMinValue = data[0] as number; + currentMaxValue = data[4] as number; + } else if (isArray(data) && props.type === AccountBalanceTrendChartType.Candlestick.type) { + currentMinValue = data[2] as number; + currentMaxValue = data[3] as number; } else { - value = data as number; // for line or bar chart + currentMinValue = data as number; + currentMaxValue = data as number; } - if (value > maxValue) { - maxValue = value; + if (currentMaxValue > maxValue) { + maxValue = currentMaxValue; } - if (value < minValue) { - minValue = value; + if (currentMinValue < minValue) { + minValue = currentMinValue; } } } @@ -172,7 +189,54 @@ const chartOptions = computed(() => { color: isDarkMode.value ? '#eee' : '#333' }, formatter: (params: CallbackDataParams[]) => { - if (props.type === AccountBalanceTrendChartType.Candlestick.type) { + if (props.type === AccountBalanceTrendChartType.Boxplot.type) { + const dataIndex = params[0]!.dataIndex; + const dataItem = allDataItems.value[dataIndex] as AccountBalanceTrendsChartItem; + const displayItems: NameValue[] = [ + { + name: tt('Minimum Balance'), + value: formatAmountToLocalizedNumeralsWithCurrency(dataItem.minimumBalance, props.account.currency) + }, + { + name: tt('Q1 Balance (First Quartile)'), + value: formatAmountToLocalizedNumeralsWithCurrency(dataItem.q1Balance, props.account.currency) + }, + { + name: tt('Median Balance'), + value: formatAmountToLocalizedNumeralsWithCurrency(dataItem.medianBalance, props.account.currency) + }, + { + name: tt('Q3 Balance (Third Quartile)'), + value: formatAmountToLocalizedNumeralsWithCurrency(dataItem.q3Balance, props.account.currency) + }, + { + name: tt('Maximum Balance'), + value: formatAmountToLocalizedNumeralsWithCurrency(dataItem.maximumBalance, props.account.currency) + }, + { + name: tt('Opening Balance'), + value: formatAmountToLocalizedNumeralsWithCurrency(dataItem.openingBalance, props.account.currency) + }, + { + name: tt('Closing Balance'), + value: formatAmountToLocalizedNumeralsWithCurrency(dataItem.closingBalance, props.account.currency) + } + ]; + + let tooltip = `${params[0]!.name} ${props.legendName}
`; + + for (const [displayItem, index] of itemAndIndex(displayItems)) { + if (index === 5) { + tooltip += '
'; + } + + tooltip += `
` + + `${displayItem.name}${displayItem.value}` + + `
`; + } + + return tooltip; + } else if (props.type === AccountBalanceTrendChartType.Candlestick.type) { const dataIndex = params[0]!.dataIndex; const dataItem = allDataItems.value[dataIndex] as AccountBalanceTrendsChartItem; const displayItems: NameValue[] = [ @@ -205,8 +269,12 @@ const chartOptions = computed(() => { let tooltip = `${params[0]!.name} ${props.legendName}
`; for (const [displayItem, index] of itemAndIndex(displayItems)) { + if (index === 4) { + tooltip += '
'; + } + tooltip += `
` - + `${displayItem.name}${displayItem.value}
` + + `${displayItem.name}${displayItem.value}` + `
`; } @@ -217,7 +285,7 @@ const chartOptions = computed(() => { return `${params[0]!.name}
` + '
' - + `${props.legendName}${value}
` + + `${props.legendName}${value}` + '
'; } } diff --git a/src/components/mobile/AccountBalanceTrendsBarChart.vue b/src/components/mobile/AccountBalanceTrendsBarChart.vue index 28646619..81c6cec0 100644 --- a/src/components/mobile/AccountBalanceTrendsBarChart.vue +++ b/src/components/mobile/AccountBalanceTrendsBarChart.vue @@ -103,6 +103,8 @@ const allVirtualListItems = computed(() = averageBalance: dataItem.averageBalance, minimumBalance: dataItem.minimumBalance, maximumBalance: dataItem.maximumBalance, + q1Balance: dataItem.q1Balance, + q3Balance: dataItem.q3Balance, color: `#${DEFAULT_CHART_COLORS[0] as string}`, percent: 0.0 }; diff --git a/src/core/statistics.ts b/src/core/statistics.ts index ba0cb813..3f22022d 100644 --- a/src/core/statistics.ts +++ b/src/core/statistics.ts @@ -88,7 +88,8 @@ export class AccountBalanceTrendChartType implements TypeAndName { public static readonly Area = new AccountBalanceTrendChartType(0, 'Area Chart'); public static readonly Column = new AccountBalanceTrendChartType(1, 'Column Chart'); - public static readonly Candlestick = new AccountBalanceTrendChartType(2, 'Candlestick Chart'); + public static readonly Boxplot = new AccountBalanceTrendChartType(2, 'Boxplot Chart'); + public static readonly Candlestick = new AccountBalanceTrendChartType(3, 'Candlestick Chart'); public static readonly Default = TrendChartType.Column; diff --git a/src/desktop-main.ts b/src/desktop-main.ts index 9f9a288e..3aeea0d3 100644 --- a/src/desktop-main.ts +++ b/src/desktop-main.ts @@ -52,7 +52,7 @@ import 'vuetify/styles'; import * as echarts from 'echarts/core'; import { CanvasRenderer } from 'echarts/renderers'; -import { LineChart, BarChart, PieChart, ScatterChart, CandlestickChart, RadarChart, SankeyChart } from 'echarts/charts'; +import { LineChart, BarChart, PieChart, ScatterChart, BoxplotChart, CandlestickChart, RadarChart, SankeyChart } from 'echarts/charts'; import { GridComponent, TooltipComponent, @@ -503,6 +503,7 @@ echarts.use([ BarChart, PieChart, ScatterChart, + BoxplotChart, CandlestickChart, RadarChart, SankeyChart, diff --git a/src/locales/de.json b/src/locales/de.json index 586f423c..e788d198 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -1577,6 +1577,7 @@ "Area Chart": "Flächendiagramm", "Column Chart": "Säulendiagramm", "Bubble Chart": "Bubble Chart", + "Boxplot Chart": "Boxplot Chart", "Candlestick Chart": "Candlestick Chart", "Sankey Chart": "Sankey Chart", "Column Chart (Stacked)": "Column Chart (Stacked)", @@ -2165,6 +2166,8 @@ "Maximum Balance": "Maximum Balance", "Median Balance": "Median Balance", "Average Balance": "Average Balance", + "Q1 Balance (First Quartile)": "Q1 Balance (First Quartile)", + "Q3 Balance (Third Quartile)": "Q3 Balance (Third Quartile)", "Outflows By Account": "Outflows By Account", "Expense By Account": "Ausgaben nach Konto", "Expense By Primary Category": "Ausgaben nach Primärkategorie", diff --git a/src/locales/en.json b/src/locales/en.json index 0bc9723e..bdbb79ba 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -1577,6 +1577,7 @@ "Area Chart": "Area Chart", "Column Chart": "Column Chart", "Bubble Chart": "Bubble Chart", + "Boxplot Chart": "Boxplot Chart", "Candlestick Chart": "Candlestick Chart", "Sankey Chart": "Sankey Chart", "Column Chart (Stacked)": "Column Chart (Stacked)", @@ -2165,6 +2166,8 @@ "Maximum Balance": "Maximum Balance", "Median Balance": "Median Balance", "Average Balance": "Average Balance", + "Q1 Balance (First Quartile)": "Q1 Balance (First Quartile)", + "Q3 Balance (Third Quartile)": "Q3 Balance (Third Quartile)", "Outflows By Account": "Outflows By Account", "Expense By Account": "Expense By Account", "Expense By Primary Category": "Expense By Primary Category", diff --git a/src/locales/es.json b/src/locales/es.json index c63befd1..e676dd87 100644 --- a/src/locales/es.json +++ b/src/locales/es.json @@ -1577,6 +1577,7 @@ "Area Chart": "Gráfico de Área", "Column Chart": "Gráfico de Columnas", "Bubble Chart": "Gráfico de Burbujas", + "Boxplot Chart": "Boxplot Chart", "Candlestick Chart": "Gráfico de Velas", "Sankey Chart": "Diagrama de Sankey", "Column Chart (Stacked)": "Gráfico de columnas (apilado)", @@ -2165,6 +2166,8 @@ "Maximum Balance": "Saldo Máximo", "Median Balance": "Saldo Mediano", "Average Balance": "Saldo Medio", + "Q1 Balance (First Quartile)": "Q1 Balance (First Quartile)", + "Q3 Balance (Third Quartile)": "Q3 Balance (Third Quartile)", "Outflows By Account": "Salidas por Cuenta", "Expense By Account": "Gastos por Cuenta", "Expense By Primary Category": "Gastos por Categoría Principal", diff --git a/src/locales/fr.json b/src/locales/fr.json index cadb1e3b..5133692e 100644 --- a/src/locales/fr.json +++ b/src/locales/fr.json @@ -1577,6 +1577,7 @@ "Area Chart": "Graphique en aires", "Column Chart": "Graphique en colonnes", "Bubble Chart": "Bubble Chart", + "Boxplot Chart": "Boxplot Chart", "Candlestick Chart": "Graphique en chandelier", "Sankey Chart": "Sankey Chart", "Column Chart (Stacked)": "Column Chart (Stacked)", @@ -2165,6 +2166,8 @@ "Maximum Balance": "Solde maximum", "Median Balance": "Solde médian", "Average Balance": "Solde moyen", + "Q1 Balance (First Quartile)": "Q1 Balance (First Quartile)", + "Q3 Balance (Third Quartile)": "Q3 Balance (Third Quartile)", "Outflows By Account": "Outflows By Account", "Expense By Account": "Dépenses par compte", "Expense By Primary Category": "Dépenses par catégorie principale", diff --git a/src/locales/it.json b/src/locales/it.json index 9951474b..4e5911d9 100644 --- a/src/locales/it.json +++ b/src/locales/it.json @@ -1577,6 +1577,7 @@ "Area Chart": "Grafico ad area", "Column Chart": "Grafico a colonne", "Bubble Chart": "Bubble Chart", + "Boxplot Chart": "Boxplot Chart", "Candlestick Chart": "Candlestick Chart", "Sankey Chart": "Sankey Chart", "Column Chart (Stacked)": "Column Chart (Stacked)", @@ -2165,6 +2166,8 @@ "Maximum Balance": "Maximum Balance", "Median Balance": "Median Balance", "Average Balance": "Average Balance", + "Q1 Balance (First Quartile)": "Q1 Balance (First Quartile)", + "Q3 Balance (Third Quartile)": "Q3 Balance (Third Quartile)", "Outflows By Account": "Outflows By Account", "Expense By Account": "Spesa per conto", "Expense By Primary Category": "Spesa per categoria principale", diff --git a/src/locales/ja.json b/src/locales/ja.json index 35e6a1fb..569c12e2 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -1577,6 +1577,7 @@ "Area Chart": "エリアチャート", "Column Chart": "列チャート", "Bubble Chart": "Bubble Chart", + "Boxplot Chart": "Boxplot Chart", "Candlestick Chart": "Candlestick Chart", "Sankey Chart": "Sankey Chart", "Column Chart (Stacked)": "Column Chart (Stacked)", @@ -2165,6 +2166,8 @@ "Maximum Balance": "Maximum Balance", "Median Balance": "Median Balance", "Average Balance": "Average Balance", + "Q1 Balance (First Quartile)": "Q1 Balance (First Quartile)", + "Q3 Balance (Third Quartile)": "Q3 Balance (Third Quartile)", "Outflows By Account": "Outflows By Account", "Expense By Account": "口座別の支出", "Expense By Primary Category": "一次カテゴリ別の支出", diff --git a/src/locales/kn.json b/src/locales/kn.json index e775aec0..bdd7846d 100644 --- a/src/locales/kn.json +++ b/src/locales/kn.json @@ -1577,6 +1577,7 @@ "Area Chart": "ಏರಿಯಾ ಚಾರ್ಟ್", "Column Chart": "ಕಾಲಮ್ ಚಾರ್ಟ್", "Bubble Chart": "ಬಬಲ್ ಚಾರ್ಟ್", + "Boxplot Chart": "Boxplot Chart", "Candlestick Chart": "ಕ್ಯಾಂಡಲ್‌ಸ್ಟಿಕ್ ಚಾರ್ಟ್", "Sankey Chart": "ಸ್ಯಾಂಕಿ ಚಾರ್ಟ್", "Column Chart (Stacked)": "Column Chart (Stacked)", @@ -2165,6 +2166,8 @@ "Maximum Balance": "ಗರಿಷ್ಠ ಶೇಷ", "Median Balance": "ಮಧ್ಯ ಶೇಷ", "Average Balance": "ಸರಾಸರಿ ಶೇಷ", + "Q1 Balance (First Quartile)": "Q1 Balance (First Quartile)", + "Q3 Balance (Third Quartile)": "Q3 Balance (Third Quartile)", "Outflows By Account": "ಖಾತೆವಾರು ಹೊರಹರಿವು", "Expense By Account": "ಖಾತೆವಾರು ಖರ್ಚು", "Expense By Primary Category": "ಪ್ರಾಥಮಿಕ ವರ್ಗವಾರು ಖರ್ಚು", diff --git a/src/locales/ko.json b/src/locales/ko.json index 7150b746..f4f479f3 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -1577,6 +1577,7 @@ "Area Chart": "영역 차트", "Column Chart": "세로 막대 차트", "Bubble Chart": "버블 차트", + "Boxplot Chart": "Boxplot Chart", "Candlestick Chart": "캠들스틱 차트", "Sankey Chart": "샌키 차트", "Column Chart (Stacked)": "누적 세로 막대 차트", @@ -2165,6 +2166,8 @@ "Maximum Balance": "최대 잔액", "Median Balance": "중앙값 잔액", "Average Balance": "평균 잔액", + "Q1 Balance (First Quartile)": "Q1 Balance (First Quartile)", + "Q3 Balance (Third Quartile)": "Q3 Balance (Third Quartile)", "Outflows By Account": "Outflows By Account", "Expense By Account": "계좌별 비용", "Expense By Primary Category": "주요 범주별 비용", diff --git a/src/locales/nl.json b/src/locales/nl.json index 402880f8..f5a4dddd 100644 --- a/src/locales/nl.json +++ b/src/locales/nl.json @@ -1577,6 +1577,7 @@ "Area Chart": "Vlakdiagram", "Column Chart": "Kolomdiagram", "Bubble Chart": "Bubble Chart", + "Boxplot Chart": "Boxplot Chart", "Candlestick Chart": "Candlestickdiagram", "Sankey Chart": "Sankey Chart", "Column Chart (Stacked)": "Column Chart (Stacked)", @@ -2165,6 +2166,8 @@ "Maximum Balance": "Maximumsaldo", "Median Balance": "Mediaansaldo", "Average Balance": "Gemiddeld saldo", + "Q1 Balance (First Quartile)": "Q1 Balance (First Quartile)", + "Q3 Balance (Third Quartile)": "Q3 Balance (Third Quartile)", "Outflows By Account": "Outflows By Account", "Expense By Account": "Uitgaven per rekening", "Expense By Primary Category": "Uitgaven per primaire categorie", diff --git a/src/locales/pt_BR.json b/src/locales/pt_BR.json index 030926b8..c1d160aa 100644 --- a/src/locales/pt_BR.json +++ b/src/locales/pt_BR.json @@ -1577,6 +1577,7 @@ "Area Chart": "Gráfico de Área", "Column Chart": "Gráfico de Colunas", "Bubble Chart": "Bubble Chart", + "Boxplot Chart": "Boxplot Chart", "Candlestick Chart": "Candlestick Chart", "Sankey Chart": "Sankey Chart", "Column Chart (Stacked)": "Column Chart (Stacked)", @@ -2165,6 +2166,8 @@ "Maximum Balance": "Maximum Balance", "Median Balance": "Median Balance", "Average Balance": "Average Balance", + "Q1 Balance (First Quartile)": "Q1 Balance (First Quartile)", + "Q3 Balance (Third Quartile)": "Q3 Balance (Third Quartile)", "Outflows By Account": "Outflows By Account", "Expense By Account": "Despesa por Conta", "Expense By Primary Category": "Despesa por Categoria Primária", diff --git a/src/locales/ru.json b/src/locales/ru.json index 70c61294..750047e3 100644 --- a/src/locales/ru.json +++ b/src/locales/ru.json @@ -1577,6 +1577,7 @@ "Area Chart": "Диаграмма с областями", "Column Chart": "Столбчатая диаграмма", "Bubble Chart": "Пузырьковая диаграмма", + "Boxplot Chart": "Boxplot Chart", "Candlestick Chart": "Свечная диаграмма", "Sankey Chart": "Санки диаграмма", "Column Chart (Stacked)": "Столбчатая диаграмма (с накоплением)", @@ -2165,6 +2166,8 @@ "Maximum Balance": "Максимальный баланс", "Median Balance": "Медианный баланс", "Average Balance": "Средний баланс", + "Q1 Balance (First Quartile)": "Q1 Balance (First Quartile)", + "Q3 Balance (Third Quartile)": "Q3 Balance (Third Quartile)", "Outflows By Account": "Отток по счетам", "Expense By Account": "Расходы по счетам", "Expense By Primary Category": "Расходы по основной категории", diff --git a/src/locales/sl.json b/src/locales/sl.json index f38edb41..10500ee5 100644 --- a/src/locales/sl.json +++ b/src/locales/sl.json @@ -1577,6 +1577,7 @@ "Area Chart": "Ploskovni grafikon", "Column Chart": "Palični grafikon", "Bubble Chart": "Mehurčni grafikon", + "Boxplot Chart": "Boxplot Chart", "Candlestick Chart": "Svečni grafikon", "Sankey Chart": "Sankeyev diagram", "Column Chart (Stacked)": "Naložen palični grafikon", @@ -2165,6 +2166,8 @@ "Maximum Balance": "Najvišje stanje", "Median Balance": "Mediana stanja", "Average Balance": "Povprečno stanje", + "Q1 Balance (First Quartile)": "Q1 Balance (First Quartile)", + "Q3 Balance (Third Quartile)": "Q3 Balance (Third Quartile)", "Outflows By Account": "Odlivi po računih", "Expense By Account": "Odhodki po računih", "Expense By Primary Category": "Odhodki po primarnih kategorijah", diff --git a/src/locales/ta.json b/src/locales/ta.json index 5f011618..0340dbfc 100644 --- a/src/locales/ta.json +++ b/src/locales/ta.json @@ -1577,6 +1577,7 @@ "Area Chart": "பகுதி விளக்கப்படம்", "Column Chart": "நெடுவரிசை விளக்கப்படம்", "Bubble Chart": "குமிழி விளக்கப்படம்", + "Boxplot Chart": "Boxplot Chart", "Candlestick Chart": "மெழுகுவர்த்தி விளக்கப்படம்", "Sankey Chart": "சாங்கி விளக்கப்படம்", "Column Chart (Stacked)": "நெடுவரிசை வரைபடம் (அடுக்கப்பட்ட)", @@ -2165,6 +2166,8 @@ "Maximum Balance": "அதிகபட்சம் இருப்பு", "Median Balance": "மத்திய இருப்பு", "Average Balance": "சராசரிசரி இருப்பு", + "Q1 Balance (First Quartile)": "Q1 Balance (First Quartile)", + "Q3 Balance (Third Quartile)": "Q3 Balance (Third Quartile)", "Outflows By Account": "கணக்குவாரி வெளிச்செலவு", "Expense By Account": "கணக்குவாரி செலவு", "Expense By Primary Category": "முதன்மை வகைவாரி செலவு", diff --git a/src/locales/th.json b/src/locales/th.json index 03bd63d3..2378b2aa 100644 --- a/src/locales/th.json +++ b/src/locales/th.json @@ -1577,6 +1577,7 @@ "Area Chart": "กราฟพื้นที่", "Column Chart": "กราฟคอลัมน์", "Bubble Chart": "Bubble Chart", + "Boxplot Chart": "Boxplot Chart", "Candlestick Chart": "กราฟแท่งเทียน", "Sankey Chart": "Sankey Chart", "Column Chart (Stacked)": "Column Chart (Stacked)", @@ -2165,6 +2166,8 @@ "Maximum Balance": "ยอดสูงสุด", "Median Balance": "ยอดกลาง", "Average Balance": "ยอดเฉลี่ย", + "Q1 Balance (First Quartile)": "Q1 Balance (First Quartile)", + "Q3 Balance (Third Quartile)": "Q3 Balance (Third Quartile)", "Outflows By Account": "Outflows By Account", "Expense By Account": "ค่าใช้จ่ายตามบัญชี", "Expense By Primary Category": "ค่าใช้จ่ายตามหมวดหลัก", diff --git a/src/locales/tr.json b/src/locales/tr.json index cd9ee27d..bdbbdf73 100644 --- a/src/locales/tr.json +++ b/src/locales/tr.json @@ -1577,6 +1577,7 @@ "Area Chart": "Alan Grafiği", "Column Chart": "Sütun Grafiği", "Bubble Chart": "Kabarcık Grafiği", + "Boxplot Chart": "Boxplot Chart", "Candlestick Chart": "Mum Grafiği", "Sankey Chart": "Sankey Diyagramı", "Column Chart (Stacked)": "Column Chart (Stacked)", @@ -2165,6 +2166,8 @@ "Maximum Balance": "Maksimum Bakiye", "Median Balance": "Medyan Bakiye", "Average Balance": "Ortalama Bakiye", + "Q1 Balance (First Quartile)": "Q1 Balance (First Quartile)", + "Q3 Balance (Third Quartile)": "Q3 Balance (Third Quartile)", "Outflows By Account": "Hesaba Göre Çıkışlar", "Expense By Account": "Hesaba Göre Gider", "Expense By Primary Category": "Ana Kategoriye Göre Gider", diff --git a/src/locales/uk.json b/src/locales/uk.json index 04e4738c..294e5151 100644 --- a/src/locales/uk.json +++ b/src/locales/uk.json @@ -1577,6 +1577,7 @@ "Area Chart": "Діаграма з областями", "Column Chart": "Стовпчикова діаграма", "Bubble Chart": "Bubble Chart", + "Boxplot Chart": "Boxplot Chart", "Candlestick Chart": "Candlestick Chart", "Sankey Chart": "Sankey Chart", "Column Chart (Stacked)": "Column Chart (Stacked)", @@ -2165,6 +2166,8 @@ "Maximum Balance": "Maximum Balance", "Median Balance": "Median Balance", "Average Balance": "Average Balance", + "Q1 Balance (First Quartile)": "Q1 Balance (First Quartile)", + "Q3 Balance (Third Quartile)": "Q3 Balance (Third Quartile)", "Outflows By Account": "Outflows By Account", "Expense By Account": "Витрати за рахунками", "Expense By Primary Category": "Витрати за основними категоріями", diff --git a/src/locales/vi.json b/src/locales/vi.json index 437444cd..07486d61 100644 --- a/src/locales/vi.json +++ b/src/locales/vi.json @@ -1577,6 +1577,7 @@ "Area Chart": "Biểu đồ diện tích", "Column Chart": "Biểu đồ cột", "Bubble Chart": "Bubble Chart", + "Boxplot Chart": "Boxplot Chart", "Candlestick Chart": "Candlestick Chart", "Sankey Chart": "Sankey Chart", "Column Chart (Stacked)": "Column Chart (Stacked)", @@ -2165,6 +2166,8 @@ "Maximum Balance": "Maximum Balance", "Median Balance": "Median Balance", "Average Balance": "Average Balance", + "Q1 Balance (First Quartile)": "Q1 Balance (First Quartile)", + "Q3 Balance (Third Quartile)": "Q3 Balance (Third Quartile)", "Outflows By Account": "Outflows By Account", "Expense By Account": "Chi phí theo tài khoản", "Expense By Primary Category": "Chi phí theo danh mục chính", diff --git a/src/locales/zh_Hans.json b/src/locales/zh_Hans.json index 1d5a2d5d..2db9caf0 100644 --- a/src/locales/zh_Hans.json +++ b/src/locales/zh_Hans.json @@ -1577,6 +1577,7 @@ "Area Chart": "面积图", "Column Chart": "柱状图", "Bubble Chart": "气泡图", + "Boxplot Chart": "箱线图", "Candlestick Chart": "K线图", "Sankey Chart": "桑基图", "Column Chart (Stacked)": "柱状图(堆叠)", @@ -2165,6 +2166,8 @@ "Maximum Balance": "最大余额", "Median Balance": "中位数余额", "Average Balance": "平均余额", + "Q1 Balance (First Quartile)": "Q1 余额 (第一四分位数)", + "Q3 Balance (Third Quartile)": "Q3 余额 (第三四分位数)", "Outflows By Account": "账户流出", "Expense By Account": "账户支出", "Expense By Primary Category": "一级分类支出", diff --git a/src/locales/zh_Hant.json b/src/locales/zh_Hant.json index e9bb68f9..d236403a 100644 --- a/src/locales/zh_Hant.json +++ b/src/locales/zh_Hant.json @@ -1577,6 +1577,7 @@ "Area Chart": "面積圖", "Column Chart": "柱狀圖", "Bubble Chart": "氣泡圖", + "Boxplot Chart": "箱型圖", "Candlestick Chart": "K線圖", "Sankey Chart": "桑基圖", "Column Chart (Stacked)": "柱狀圖(堆疊)", @@ -2165,6 +2166,8 @@ "Maximum Balance": "最大餘額", "Median Balance": "中位數餘額", "Average Balance": "平均餘額", + "Q1 Balance (First Quartile)": "Q1 餘額 (第一四分位數)", + "Q3 Balance (Third Quartile)": "Q3 餘額 (第三四分位數)", "Outflows By Account": "帳戶流出", "Expense By Account": "帳戶支出", "Expense By Primary Category": "一級分類支出", diff --git a/src/views/desktop/accounts/list/dialogs/ReconciliationStatementDialog.vue b/src/views/desktop/accounts/list/dialogs/ReconciliationStatementDialog.vue index 921bb72e..3fd3fcca 100644 --- a/src/views/desktop/accounts/list/dialogs/ReconciliationStatementDialog.vue +++ b/src/views/desktop/accounts/list/dialogs/ReconciliationStatementDialog.vue @@ -381,6 +381,7 @@ const transactionsStore = useTransactionsStore(); const chartTypeIconMap = { [AccountBalanceTrendChartType.Column.type]: mdiChartBar, [AccountBalanceTrendChartType.Area.type]: mdiChartAreasplineVariant, + [AccountBalanceTrendChartType.Boxplot.type]: mdiChartWaterfall, [AccountBalanceTrendChartType.Candlestick.type]: mdiChartWaterfall, };