mirror of
https://github.com/mayswind/ezbookkeeping.git
synced 2026-05-19 09:14:27 +08:00
support "Add Another" in transaction add page / dialog (#471)
This commit is contained in:
@@ -53,6 +53,7 @@ export const ALL_APPLICATION_CLOUD_SETTINGS: CategorizedApplicationCloudSettingI
|
||||
{
|
||||
categoryName: 'Transaction Edit Page',
|
||||
items: [
|
||||
{ settingKey: 'quickAddButtonActionInMobileTransactionEditPage', settingName: 'Quick Add Button Action', mobile: true, desktop: false },
|
||||
{ settingKey: 'autoSaveTransactionDraft', settingName: 'Automatically Save Draft', mobile: true, desktop: true },
|
||||
{ settingKey: 'autoGetCurrentGeoLocation', settingName: 'Automatically Add Geolocation', mobile: true, desktop: true },
|
||||
{ settingKey: 'alwaysShowTransactionPicturesInMobileTransactionEditPage', settingName: 'Always Show Transaction Pictures', mobile: true, desktop: false }
|
||||
|
||||
@@ -13,7 +13,7 @@ import { useExchangeRatesStore } from '@/stores/exchangeRates.ts';
|
||||
import type { NumeralSystem } from '@/core/numeral.ts';
|
||||
import type { WeekDayValue } from '@/core/datetime.ts';
|
||||
import type { LocalizedTimezoneInfo } from '@/core/timezone.ts';
|
||||
import { TransactionType } from '@/core/transaction.ts';
|
||||
import { TransactionType, TransactionQuickAddButtonActionType } from '@/core/transaction.ts';
|
||||
import { TemplateType } from '@/core/template.ts';
|
||||
import { DISPLAY_HIDDEN_AMOUNT } from '@/consts/numeral.ts';
|
||||
import { TRANSACTION_MAX_PICTURE_COUNT } from '@/consts/transaction.ts';
|
||||
@@ -64,6 +64,12 @@ export enum GeoLocationStatus {
|
||||
Error = 'error'
|
||||
}
|
||||
|
||||
export enum AfterSaveAction {
|
||||
GoBack = 'goBack',
|
||||
StayWithNewTransaction = 'stayWithNewTransaction',
|
||||
StayWithCurrentTransaction = 'stayWithCurrentTransaction'
|
||||
}
|
||||
|
||||
export function useTransactionEditPageBase(type: TransactionEditPageType, initMode?: TransactionEditPageMode, transactionDefaultType?: number) {
|
||||
const {
|
||||
tt,
|
||||
@@ -93,6 +99,7 @@ export function useTransactionEditPageBase(type: TransactionEditPageType, initMo
|
||||
const clientSessionId = ref<string>('');
|
||||
const loading = ref<boolean>(true);
|
||||
const submitting = ref<boolean>(false);
|
||||
const submitted = ref<boolean>(false);
|
||||
const uploadingPicture = ref<boolean>(false);
|
||||
const geoLocationStatus = ref<GeoLocationStatus | null>(null);
|
||||
const setGeoLocationByClickMap = ref<boolean>(false);
|
||||
@@ -170,6 +177,20 @@ export function useTransactionEditPageBase(type: TransactionEditPageType, initMo
|
||||
}
|
||||
});
|
||||
|
||||
const quickSaveButtonTitle = computed<string>(() => {
|
||||
if (mode.value === TransactionEditPageMode.Add) {
|
||||
const quickAddActionType = TransactionQuickAddButtonActionType.valueOf(settingsStore.appSettings.quickAddButtonActionInMobileTransactionEditPage);
|
||||
|
||||
if (quickAddActionType && quickAddActionType.type !== TransactionQuickAddButtonActionType.OpenMenu.type) {
|
||||
return quickAddActionType.name;
|
||||
} else {
|
||||
return 'Add';
|
||||
}
|
||||
} else {
|
||||
return 'Save';
|
||||
}
|
||||
});
|
||||
|
||||
const cancelButtonTitle = computed<string>(() => {
|
||||
if (mode.value === TransactionEditPageMode.View) {
|
||||
return 'Close';
|
||||
@@ -395,6 +416,16 @@ export function useTransactionEditPageBase(type: TransactionEditPageType, initMo
|
||||
);
|
||||
}
|
||||
|
||||
function updateTransactionModelByAfterSaveAction(afterSaveAction: AfterSaveAction, initOptions?: SetTransactionOptions): void {
|
||||
if (afterSaveAction === AfterSaveAction.StayWithNewTransaction) {
|
||||
transaction.value = createNewTransactionModel(transactionDefaultType);
|
||||
setTransactionModel(null, initOptions, true);
|
||||
geoLocationStatus.value = null;
|
||||
} else if (afterSaveAction === AfterSaveAction.StayWithCurrentTransaction) {
|
||||
transaction.value.clearPictures();
|
||||
}
|
||||
}
|
||||
|
||||
function updateTransactionTime(newTime: number): void {
|
||||
transaction.value.time = newTime;
|
||||
updateTransactionTimezone(transaction.value.timeZone ?? '');
|
||||
@@ -489,6 +520,7 @@ export function useTransactionEditPageBase(type: TransactionEditPageType, initMo
|
||||
clientSessionId,
|
||||
loading,
|
||||
submitting,
|
||||
submitted,
|
||||
uploadingPicture,
|
||||
geoLocationStatus,
|
||||
setGeoLocationByClickMap,
|
||||
@@ -516,6 +548,7 @@ export function useTransactionEditPageBase(type: TransactionEditPageType, initMo
|
||||
canAddTransactionPicture,
|
||||
title,
|
||||
saveButtonTitle,
|
||||
quickSaveButtonTitle,
|
||||
cancelButtonTitle,
|
||||
sourceAmountName,
|
||||
sourceAmountTitle,
|
||||
@@ -533,6 +566,7 @@ export function useTransactionEditPageBase(type: TransactionEditPageType, initMo
|
||||
// functions
|
||||
createNewTransactionModel,
|
||||
setTransactionModel,
|
||||
updateTransactionModelByAfterSaveAction,
|
||||
updateTransactionTime,
|
||||
updateTransactionTimezone,
|
||||
swapTransactionData,
|
||||
|
||||
Reference in New Issue
Block a user