mirror of
https://github.com/mayswind/ezbookkeeping.git
synced 2026-05-20 01:34:24 +08:00
add explicit type for string-based datetimes, replacing third-party datetime type with internal DateTime type
This commit is contained in:
@@ -7,7 +7,7 @@ import { useAccountsStore } from './account.ts';
|
||||
import { useTransactionCategoriesStore } from './transactionCategory.ts';
|
||||
import { useExchangeRatesStore } from './exchangeRates.ts';
|
||||
|
||||
import { type TimeRangeAndDateType, DateRangeScene, DateRange } from '@/core/datetime.ts';
|
||||
import { type TextualYearMonth, type TimeRangeAndDateType, DateRangeScene, DateRange } from '@/core/datetime.ts';
|
||||
import { TimezoneTypeForStatistics } from '@/core/timezone.ts';
|
||||
import { CategoryType } from '@/core/category.ts';
|
||||
import { TransactionTagFilterType } from '@/core/transaction.ts';
|
||||
@@ -50,7 +50,7 @@ import {
|
||||
isObjectEmpty,
|
||||
objectFieldToArrayItem
|
||||
} from '@/lib/common.ts';
|
||||
import { getYearAndMonthFromUnixTime, getDateRangeByDateType } from '@/lib/datetime.ts';
|
||||
import { getGregorianCalendarYearAndMonthFromUnixTime, getDateRangeByDateType } from '@/lib/datetime.ts';
|
||||
import { getFinalAccountIdsByFilteredAccountIds } from '@/lib/account.ts';
|
||||
import { getFinalCategoryIdsByFilteredCategoryIds } from '@/lib/category.ts';
|
||||
import { sortStatisticsItems } from '@/lib/statistics.ts';
|
||||
@@ -118,8 +118,8 @@ export interface TransactionStatisticsPartialFilter {
|
||||
categoricalChartEndTime?: number;
|
||||
trendChartType?: number;
|
||||
trendChartDateType?: number;
|
||||
trendChartStartYearMonth?: string;
|
||||
trendChartEndYearMonth?: string;
|
||||
trendChartStartYearMonth?: TextualYearMonth | '';
|
||||
trendChartEndYearMonth?: TextualYearMonth | '';
|
||||
filterAccountIds?: Record<string, boolean>;
|
||||
filterCategoryIds?: Record<string, boolean>;
|
||||
tagIds?: string;
|
||||
@@ -136,8 +136,8 @@ export interface TransactionStatisticsFilter extends TransactionStatisticsPartia
|
||||
categoricalChartEndTime: number;
|
||||
trendChartType: number;
|
||||
trendChartDateType: number;
|
||||
trendChartStartYearMonth: string;
|
||||
trendChartEndYearMonth: string;
|
||||
trendChartStartYearMonth: TextualYearMonth | '';
|
||||
trendChartEndYearMonth: TextualYearMonth | '';
|
||||
filterAccountIds: Record<string, boolean>;
|
||||
filterCategoryIds: Record<string, boolean>;
|
||||
tagIds: string;
|
||||
@@ -800,8 +800,8 @@ export const useStatisticsStore = defineStore('statistics', () => {
|
||||
|
||||
if (trendChartDateRange) {
|
||||
transactionStatisticsFilter.value.trendChartDateType = trendChartDateRange.dateType;
|
||||
transactionStatisticsFilter.value.trendChartStartYearMonth = getYearAndMonthFromUnixTime(trendChartDateRange.minTime);
|
||||
transactionStatisticsFilter.value.trendChartEndYearMonth = getYearAndMonthFromUnixTime(trendChartDateRange.maxTime);
|
||||
transactionStatisticsFilter.value.trendChartStartYearMonth = getGregorianCalendarYearAndMonthFromUnixTime(trendChartDateRange.minTime);
|
||||
transactionStatisticsFilter.value.trendChartEndYearMonth = getGregorianCalendarYearAndMonthFromUnixTime(trendChartDateRange.maxTime);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+15
-21
@@ -10,7 +10,7 @@ import { useStatisticsStore } from './statistics.ts';
|
||||
import { useExchangeRatesStore } from './exchangeRates.ts';
|
||||
|
||||
import type { BeforeResolveFunction } from '@/core/base.ts';
|
||||
import { DateRange } from '@/core/datetime.ts';
|
||||
import { type TextualYearMonth, DateRange } from '@/core/datetime.ts';
|
||||
import { CategoryType } from '@/core/category.ts';
|
||||
import { TransactionType, TransactionTagFilterType } from '@/core/transaction.ts';
|
||||
import { TRANSACTION_MIN_AMOUNT, TRANSACTION_MAX_AMOUNT } from '@/consts/transaction.ts';
|
||||
@@ -51,13 +51,7 @@ import {
|
||||
getTimezoneOffsetMinutes,
|
||||
getBrowserTimezoneOffsetMinutes,
|
||||
getActualUnixTimeForStore,
|
||||
parseDateFromUnixTime,
|
||||
getShortDate,
|
||||
getYear,
|
||||
getMonth,
|
||||
getYearAndMonth,
|
||||
getDay,
|
||||
getDayOfWeekName
|
||||
parseDateTimeFromUnixTime
|
||||
} from '@/lib/datetime.ts';
|
||||
import { getAmountWithDecimalNumberCount } from '@/lib/numeral.ts';
|
||||
import { getCurrencyFraction } from '@/lib/currency.ts';
|
||||
@@ -101,7 +95,7 @@ export interface TransactionTotalAmount {
|
||||
export interface TransactionMonthList {
|
||||
readonly year: number;
|
||||
readonly month: number; // 1-based (1 = January, 12 = December)
|
||||
readonly yearMonth: string;
|
||||
readonly yearDashMonth: TextualYearMonth;
|
||||
opened: boolean;
|
||||
readonly items: Transaction[];
|
||||
readonly totalAmount: TransactionTotalAmount;
|
||||
@@ -177,10 +171,10 @@ export const useTransactionsStore = defineStore('transactions', () => {
|
||||
const item = transactionPageWrapper.items[i];
|
||||
fillTransactionObject(item, currentUtcOffset);
|
||||
|
||||
const transactionTime = parseDateFromUnixTime(item.time, item.utcOffset, currentUtcOffset);
|
||||
const transactionYear = getYear(transactionTime);
|
||||
const transactionMonth = getMonth(transactionTime);
|
||||
const transactionYearMonth = getYearAndMonth(transactionTime);
|
||||
const transactionTime = parseDateTimeFromUnixTime(item.time, item.utcOffset, currentUtcOffset);
|
||||
const transactionYear = transactionTime.getGregorianCalendarYear();
|
||||
const transactionMonth = transactionTime.getGregorianCalendarMonth();
|
||||
const transactionYearDashMonth = transactionTime.getGregorianCalendarYearDashMonth();
|
||||
|
||||
if (i === 0 && transactions.value.length > 0) {
|
||||
const lastMonthList = transactions.value[transactions.value.length - 1];
|
||||
@@ -216,7 +210,7 @@ export const useTransactionsStore = defineStore('transactions', () => {
|
||||
const monthList: TransactionMonthList = {
|
||||
year: transactionYear,
|
||||
month: transactionMonth,
|
||||
yearMonth: transactionYearMonth,
|
||||
yearDashMonth: transactionYearDashMonth,
|
||||
opened: autoExpand,
|
||||
items: [],
|
||||
totalAmount: {
|
||||
@@ -250,9 +244,9 @@ export const useTransactionsStore = defineStore('transactions', () => {
|
||||
|
||||
function updateTransactionInTransactionList({ transaction, defaultCurrency }: { transaction: Transaction, defaultCurrency: string }): void {
|
||||
const currentUtcOffset = getTimezoneOffsetMinutes(settingsStore.appSettings.timeZone);
|
||||
const transactionTime = parseDateFromUnixTime(transaction.time, transaction.utcOffset, currentUtcOffset);
|
||||
const transactionYear = getYear(transactionTime);
|
||||
const transactionMonth = getMonth(transactionTime);
|
||||
const transactionTime = parseDateTimeFromUnixTime(transaction.time, transaction.utcOffset, currentUtcOffset);
|
||||
const transactionYear = transactionTime.getGregorianCalendarYear();
|
||||
const transactionMonth = transactionTime.getGregorianCalendarMonth();
|
||||
|
||||
for (let i = 0; i < transactions.value.length; i++) {
|
||||
const transactionMonthList = transactions.value[i];
|
||||
@@ -267,7 +261,7 @@ export const useTransactionsStore = defineStore('transactions', () => {
|
||||
|
||||
if (transactionYear !== transactionMonthList.year ||
|
||||
transactionMonth !== transactionMonthList.month ||
|
||||
transaction.day !== transactionMonthList.items[j].day) {
|
||||
transaction.gregorianCalendarDayOfMonth !== transactionMonthList.items[j].gregorianCalendarDayOfMonth) {
|
||||
transactionListStateInvalid.value = true;
|
||||
return;
|
||||
}
|
||||
@@ -346,7 +340,7 @@ export const useTransactionsStore = defineStore('transactions', () => {
|
||||
|
||||
for (let i = 0; i < transactionMonthList.items.length; i++) {
|
||||
const transaction = transactionMonthList.items[i];
|
||||
const transactionDay = isNumber(transaction.day) ? transaction.day.toString() : '0';
|
||||
const transactionDay = isNumber(transaction.gregorianCalendarDayOfMonth) ? transaction.gregorianCalendarDayOfMonth.toString() : '0';
|
||||
let dailyTotalAmount = dailyTotalAmounts[transactionDay];
|
||||
|
||||
if (!dailyTotalAmount) {
|
||||
@@ -450,8 +444,8 @@ export const useTransactionsStore = defineStore('transactions', () => {
|
||||
return;
|
||||
}
|
||||
|
||||
const transactionTime = parseDateFromUnixTime(transaction.time, transaction.utcOffset, currentUtcOffset);
|
||||
transaction.setDisplayDate(getShortDate(transactionTime), getDay(transactionTime), getDayOfWeekName(transactionTime));
|
||||
const transactionTime = parseDateTimeFromUnixTime(transaction.time, transaction.utcOffset, currentUtcOffset);
|
||||
transaction.setDisplayDate(transactionTime.getGregorianCalendarYearDashMonthDashDay(), transactionTime.getGregorianCalendarDay(), transactionTime.getWeekDay());
|
||||
|
||||
if (transaction.sourceAccountId) {
|
||||
transaction.setSourceAccount(accountsStore.allAccountsMap[transaction.sourceAccountId]);
|
||||
|
||||
Reference in New Issue
Block a user