From 7ac1e0b69f65b3ac35a9bfb0da9b86a65e455b6c Mon Sep 17 00:00:00 2001 From: MaysWind Date: Sat, 7 Mar 2026 22:53:21 +0800 Subject: [PATCH] add transaction hour of day to axis / category / series in insights explorer --- src/core/explorer.ts | 2 ++ 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 + src/stores/explorer.ts | 9 +++++++++ 21 files changed, 30 insertions(+) diff --git a/src/core/explorer.ts b/src/core/explorer.ts index 35a5decf..39267895 100644 --- a/src/core/explorer.ts +++ b/src/core/explorer.ts @@ -191,6 +191,7 @@ export enum TransactionExplorerDataDimensionType { DateTimeByDayOfMonth = 'dateTimeByDayOfMonth', DateTimeByMonthOfYear = 'dateTimeByMonthOfYear', DateTimeByQuarterOfYear = 'dateTimeByQuarterOfYear', + DateTimeByHourOfDay = 'dateTimeByHourOfDay', TransactionType = 'transactionType', SourceAccount = 'sourceAccount', SourceAccountCategory = 'sourceAccountCategory', @@ -220,6 +221,7 @@ export class TransactionExplorerDataDimension implements NameValue { public static readonly DateTimeByDayOfMonth = new TransactionExplorerDataDimension('Transaction Day of Month', TransactionExplorerDataDimensionType.DateTimeByDayOfMonth); public static readonly DateTimeByMonthOfYear = new TransactionExplorerDataDimension('Transaction Month of Year', TransactionExplorerDataDimensionType.DateTimeByMonthOfYear); public static readonly DateTimeByQuarterOfYear = new TransactionExplorerDataDimension('Transaction Quarter of Year', TransactionExplorerDataDimensionType.DateTimeByQuarterOfYear); + public static readonly DateTimeByHourOfDay = new TransactionExplorerDataDimension('Transaction Hour of Day', TransactionExplorerDataDimensionType.DateTimeByHourOfDay); public static readonly TransactionType = new TransactionExplorerDataDimension('Transaction Type', TransactionExplorerDataDimensionType.TransactionType); public static readonly SourceAccount = new TransactionExplorerDataDimension('Source Account', TransactionExplorerDataDimensionType.SourceAccount); public static readonly SourceAccountCategory = new TransactionExplorerDataDimension('Source Account Category', TransactionExplorerDataDimensionType.SourceAccountCategory); diff --git a/src/locales/de.json b/src/locales/de.json index 74fab962..4349edfb 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -1776,6 +1776,7 @@ "Transaction Day of Month": "Transaction Day of Month", "Transaction Month of Year": "Transaction Month of Year", "Transaction Quarter of Year": "Transaction Quarter of Year", + "Transaction Hour of Day": "Transaction Hour of Day", "Source Account Category": "Source Account Category", "Source Account Currency": "Source Account Currency", "Destination Account Category": "Destination Account Category", diff --git a/src/locales/en.json b/src/locales/en.json index 96ada796..fa3c33c1 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -1776,6 +1776,7 @@ "Transaction Day of Month": "Transaction Day of Month", "Transaction Month of Year": "Transaction Month of Year", "Transaction Quarter of Year": "Transaction Quarter of Year", + "Transaction Hour of Day": "Transaction Hour of Day", "Source Account Category": "Source Account Category", "Source Account Currency": "Source Account Currency", "Destination Account Category": "Destination Account Category", diff --git a/src/locales/es.json b/src/locales/es.json index a291eaf2..5d5d7a0c 100644 --- a/src/locales/es.json +++ b/src/locales/es.json @@ -1776,6 +1776,7 @@ "Transaction Day of Month": "Día del mes de la transacción", "Transaction Month of Year": "Mes del año de la transacción", "Transaction Quarter of Year": "Trimestre de la transacción", + "Transaction Hour of Day": "Transaction Hour of Day", "Source Account Category": "Categoría de la cuenta de origen", "Source Account Currency": "Moneda de la cuenta de origen", "Destination Account Category": "Categoría de la cuenta de destino", diff --git a/src/locales/fr.json b/src/locales/fr.json index bdbbfd98..3aedaa3f 100644 --- a/src/locales/fr.json +++ b/src/locales/fr.json @@ -1776,6 +1776,7 @@ "Transaction Day of Month": "Transaction Day of Month", "Transaction Month of Year": "Transaction Month of Year", "Transaction Quarter of Year": "Transaction Quarter of Year", + "Transaction Hour of Day": "Transaction Hour of Day", "Source Account Category": "Source Account Category", "Source Account Currency": "Source Account Currency", "Destination Account Category": "Destination Account Category", diff --git a/src/locales/it.json b/src/locales/it.json index a0ecef41..a9c916f9 100644 --- a/src/locales/it.json +++ b/src/locales/it.json @@ -1776,6 +1776,7 @@ "Transaction Day of Month": "Transaction Day of Month", "Transaction Month of Year": "Transaction Month of Year", "Transaction Quarter of Year": "Transaction Quarter of Year", + "Transaction Hour of Day": "Transaction Hour of Day", "Source Account Category": "Source Account Category", "Source Account Currency": "Source Account Currency", "Destination Account Category": "Destination Account Category", diff --git a/src/locales/ja.json b/src/locales/ja.json index 3880071a..6e1dd303 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -1776,6 +1776,7 @@ "Transaction Day of Month": "Transaction Day of Month", "Transaction Month of Year": "Transaction Month of Year", "Transaction Quarter of Year": "Transaction Quarter of Year", + "Transaction Hour of Day": "Transaction Hour of Day", "Source Account Category": "Source Account Category", "Source Account Currency": "Source Account Currency", "Destination Account Category": "Destination Account Category", diff --git a/src/locales/kn.json b/src/locales/kn.json index b65bb37a..591b3dfe 100644 --- a/src/locales/kn.json +++ b/src/locales/kn.json @@ -1776,6 +1776,7 @@ "Transaction Day of Month": "Transaction Day of Month", "Transaction Month of Year": "Transaction Month of Year", "Transaction Quarter of Year": "Transaction Quarter of Year", + "Transaction Hour of Day": "Transaction Hour of Day", "Source Account Category": "Source Account Category", "Source Account Currency": "Source Account Currency", "Destination Account Category": "Destination Account Category", diff --git a/src/locales/ko.json b/src/locales/ko.json index 30f60b53..effab2f3 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -1776,6 +1776,7 @@ "Transaction Day of Month": "거래 일자", "Transaction Month of Year": "거래 월", "Transaction Quarter of Year": "거래 분기", + "Transaction Hour of Day": "Transaction Hour of Day", "Source Account Category": "출처 계좌 분류", "Source Account Currency": "출처 계좌 통화", "Destination Account Category": "목적지 계좌 분류", diff --git a/src/locales/nl.json b/src/locales/nl.json index ba2e60b6..085db518 100644 --- a/src/locales/nl.json +++ b/src/locales/nl.json @@ -1776,6 +1776,7 @@ "Transaction Day of Month": "Transaction Day of Month", "Transaction Month of Year": "Transaction Month of Year", "Transaction Quarter of Year": "Transaction Quarter of Year", + "Transaction Hour of Day": "Transaction Hour of Day", "Source Account Category": "Source Account Category", "Source Account Currency": "Source Account Currency", "Destination Account Category": "Destination Account Category", diff --git a/src/locales/pt_BR.json b/src/locales/pt_BR.json index 506eb25d..80163650 100644 --- a/src/locales/pt_BR.json +++ b/src/locales/pt_BR.json @@ -1776,6 +1776,7 @@ "Transaction Day of Month": "Transaction Day of Month", "Transaction Month of Year": "Transaction Month of Year", "Transaction Quarter of Year": "Transaction Quarter of Year", + "Transaction Hour of Day": "Transaction Hour of Day", "Source Account Category": "Source Account Category", "Source Account Currency": "Source Account Currency", "Destination Account Category": "Destination Account Category", diff --git a/src/locales/ru.json b/src/locales/ru.json index edeeaffe..d735977c 100644 --- a/src/locales/ru.json +++ b/src/locales/ru.json @@ -1776,6 +1776,7 @@ "Transaction Day of Month": "День месяца транзакции", "Transaction Month of Year": "Месяц года транзакции", "Transaction Quarter of Year": "Квартал транзакции", + "Transaction Hour of Day": "Transaction Hour of Day", "Source Account Category": "Категория исходного счёта", "Source Account Currency": "Валюта исходного счёта", "Destination Account Category": "Категория целевого счёта", diff --git a/src/locales/sl.json b/src/locales/sl.json index c829704f..6da7d2b3 100644 --- a/src/locales/sl.json +++ b/src/locales/sl.json @@ -1776,6 +1776,7 @@ "Transaction Day of Month": "Dan v mesecu transakcije", "Transaction Month of Year": "Mesec v letu transakcije", "Transaction Quarter of Year": "Četrtletje v letu transakcije", + "Transaction Hour of Day": "Transaction Hour of Day", "Source Account Category": "Kategorija izvornega računa", "Source Account Currency": "Valuta izvornega računa", "Destination Account Category": "Kategorija ciljnega računa", diff --git a/src/locales/ta.json b/src/locales/ta.json index 9e8514d7..d682e814 100644 --- a/src/locales/ta.json +++ b/src/locales/ta.json @@ -1776,6 +1776,7 @@ "Transaction Day of Month": "பரிவர்த்தனை மாதத்தின் நாள்", "Transaction Month of Year": "பரிவர்த்தனை ஆண்டின் மாதம்", "Transaction Quarter of Year": "பரிவர்த்தனை ஆண்டின் காலாண்டு", + "Transaction Hour of Day": "Transaction Hour of Day", "Source Account Category": "மூல கணக்கு வகை", "Source Account Currency": "மூல கணக்கு நாணயம்", "Destination Account Category": "இலக்கு கணக்கு வகை", diff --git a/src/locales/th.json b/src/locales/th.json index 07a31328..d5d22195 100644 --- a/src/locales/th.json +++ b/src/locales/th.json @@ -1776,6 +1776,7 @@ "Transaction Day of Month": "Transaction Day of Month", "Transaction Month of Year": "Transaction Month of Year", "Transaction Quarter of Year": "Transaction Quarter of Year", + "Transaction Hour of Day": "Transaction Hour of Day", "Source Account Category": "Source Account Category", "Source Account Currency": "Source Account Currency", "Destination Account Category": "Destination Account Category", diff --git a/src/locales/tr.json b/src/locales/tr.json index 3d996435..ec63b735 100644 --- a/src/locales/tr.json +++ b/src/locales/tr.json @@ -1776,6 +1776,7 @@ "Transaction Day of Month": "Transaction Day of Month", "Transaction Month of Year": "Transaction Month of Year", "Transaction Quarter of Year": "Transaction Quarter of Year", + "Transaction Hour of Day": "Transaction Hour of Day", "Source Account Category": "Source Account Category", "Source Account Currency": "Source Account Currency", "Destination Account Category": "Destination Account Category", diff --git a/src/locales/uk.json b/src/locales/uk.json index 99bf280c..a13e81dc 100644 --- a/src/locales/uk.json +++ b/src/locales/uk.json @@ -1776,6 +1776,7 @@ "Transaction Day of Month": "Transaction Day of Month", "Transaction Month of Year": "Transaction Month of Year", "Transaction Quarter of Year": "Transaction Quarter of Year", + "Transaction Hour of Day": "Transaction Hour of Day", "Source Account Category": "Source Account Category", "Source Account Currency": "Source Account Currency", "Destination Account Category": "Destination Account Category", diff --git a/src/locales/vi.json b/src/locales/vi.json index d74d3eb8..4326ebd2 100644 --- a/src/locales/vi.json +++ b/src/locales/vi.json @@ -1776,6 +1776,7 @@ "Transaction Day of Month": "Transaction Day of Month", "Transaction Month of Year": "Transaction Month of Year", "Transaction Quarter of Year": "Transaction Quarter of Year", + "Transaction Hour of Day": "Transaction Hour of Day", "Source Account Category": "Source Account Category", "Source Account Currency": "Source Account Currency", "Destination Account Category": "Destination Account Category", diff --git a/src/locales/zh_Hans.json b/src/locales/zh_Hans.json index 520eebce..d11e9f31 100644 --- a/src/locales/zh_Hans.json +++ b/src/locales/zh_Hans.json @@ -1776,6 +1776,7 @@ "Transaction Day of Month": "交易月内日", "Transaction Month of Year": "交易月份", "Transaction Quarter of Year": "交易季度", + "Transaction Hour of Day": "交易小时", "Source Account Category": "来源账户分类", "Source Account Currency": "来源账户货币", "Destination Account Category": "目标账户分类", diff --git a/src/locales/zh_Hant.json b/src/locales/zh_Hant.json index 29946619..97411c45 100644 --- a/src/locales/zh_Hant.json +++ b/src/locales/zh_Hant.json @@ -1776,6 +1776,7 @@ "Transaction Day of Month": "交易月內日", "Transaction Month of Year": "交易月份", "Transaction Quarter of Year": "交易季度", + "Transaction Hour of Day": "交易小時", "Source Account Category": "來源帳戶分類", "Source Account Currency": "來源帳戶貨幣", "Destination Account Category": "目標帳戶分類", diff --git a/src/stores/explorer.ts b/src/stores/explorer.ts index 273eca1c..a3db649b 100644 --- a/src/stores/explorer.ts +++ b/src/stores/explorer.ts @@ -279,6 +279,15 @@ export const useExplorersStore = defineStore('explorers', () => { categoryIdType: TransactionExplorerDimensionType.Other, categoryDisplayOrders: [dateTime.getGregorianCalendarQuarter()] }; + } else if (dimension === TransactionExplorerDataDimension.DateTimeByHourOfDay) { + const dateTime = isDefined(transactionTimeUtfOffset) ? parseDateTimeFromUnixTimeWithTimezoneOffset(transaction.time, transactionTimeUtfOffset) : parseDateTimeFromUnixTime(transaction.time); + + return { + categoryName: dateTime.getHour().toString(10), + categoryId: dateTime.getHour().toString(10), + categoryIdType: TransactionExplorerDimensionType.Other, + categoryDisplayOrders: [dateTime.getHour()] + }; } else if (dimension === TransactionExplorerDataDimension.TransactionType) { let transactionTypeName = 'Unknown';