support "Add Another" in transaction add page / dialog (#471)

This commit is contained in:
MaysWind
2026-03-02 00:54:17 +08:00
parent d2ce801277
commit 732c256db2
29 changed files with 336 additions and 63 deletions
+4
View File
@@ -1,6 +1,7 @@
import { type WeekDayValue, WeekDay } from './datetime.ts';
import { TimezoneTypeForStatistics } from './timezone.ts';
import { CurrencySortingType } from './currency.ts';
import { TransactionQuickAddButtonActionType } from './transaction.ts';
import {
CategoricalChartType,
TrendChartType,
@@ -43,6 +44,7 @@ export interface ApplicationSettings extends BaseApplicationSetting {
overviewAccountFilterInHomePage: Record<string, boolean>;
overviewTransactionCategoryFilterInHomePage: Record<string, boolean>;
// Transaction List Page
quickAddButtonActionInMobileTransactionEditPage: number;
itemsCountInTransactionListPage: number;
showTotalAmountInTransactionListPage: boolean;
showTagInTransactionListPage: boolean;
@@ -123,6 +125,7 @@ export const ALL_ALLOWED_CLOUD_SYNC_APP_SETTING_KEY_TYPES: Record<string, UserAp
'showTotalAmountInTransactionListPage': UserApplicationCloudSettingType.Boolean,
'showTagInTransactionListPage': UserApplicationCloudSettingType.Boolean,
// Transaction Edit Page
'quickAddButtonActionInMobileTransactionEditPage': UserApplicationCloudSettingType.Number,
'autoSaveTransactionDraft': UserApplicationCloudSettingType.String,
'autoGetCurrentGeoLocation': UserApplicationCloudSettingType.Boolean,
'alwaysShowTransactionPicturesInMobileTransactionEditPage': UserApplicationCloudSettingType.Boolean,
@@ -181,6 +184,7 @@ export const DEFAULT_APPLICATION_SETTINGS: ApplicationSettings = {
showTotalAmountInTransactionListPage: true,
showTagInTransactionListPage: true,
// Transaction Edit Page
quickAddButtonActionInMobileTransactionEditPage: TransactionQuickAddButtonActionType.Default.type,
autoSaveTransactionDraft: 'disabled',
autoGetCurrentGeoLocation: false,
alwaysShowTransactionPicturesInMobileTransactionEditPage: false,
+31
View File
@@ -66,3 +66,34 @@ export class TransactionTagFilterType implements TypeAndName {
return TransactionTagFilterType.allInstancesByType[type];
}
}
export class TransactionQuickAddButtonActionType implements TypeAndName {
private static readonly allInstances: TransactionQuickAddButtonActionType[] = [];
private static readonly allInstancesByType: Record<number, TransactionQuickAddButtonActionType> = {};
public static readonly SaveAndGoBack = new TransactionQuickAddButtonActionType(0, 'Save');
public static readonly OpenMenu = new TransactionQuickAddButtonActionType(1, 'Open Menu');
public static readonly SaveAndAddNewTransaction = new TransactionQuickAddButtonActionType(2, 'Save & New');
public static readonly SaveAndKeepCurrentData = new TransactionQuickAddButtonActionType(3, 'Save & Duplicate');
public static readonly Default = TransactionQuickAddButtonActionType.SaveAndGoBack;
public readonly type: number;
public readonly name: string;
private constructor(type: number, name: string) {
this.type = type;
this.name = name;
TransactionQuickAddButtonActionType.allInstances.push(this);
TransactionQuickAddButtonActionType.allInstancesByType[type] = this;
}
public static values(): TransactionQuickAddButtonActionType[] {
return TransactionQuickAddButtonActionType.allInstances;
}
public static valueOf(type: number): TransactionQuickAddButtonActionType | undefined {
return TransactionQuickAddButtonActionType.allInstancesByType[type];
}
}