mirror of
https://github.com/mayswind/ezbookkeeping.git
synced 2026-05-20 01:34:24 +08:00
code refactor
This commit is contained in:
@@ -42,6 +42,11 @@ import {
|
|||||||
getCurrentUnixTime
|
getCurrentUnixTime
|
||||||
} from '@/lib/datetime.ts';
|
} from '@/lib/datetime.ts';
|
||||||
|
|
||||||
|
import {
|
||||||
|
type SetTransactionOptions,
|
||||||
|
setTransactionModelByTransaction
|
||||||
|
} from '@/lib/transaction.ts';
|
||||||
|
|
||||||
export enum TransactionEditPageType {
|
export enum TransactionEditPageType {
|
||||||
Transaction = 'transaction',
|
Transaction = 'transaction',
|
||||||
Template = 'template'
|
Template = 'template'
|
||||||
@@ -365,6 +370,31 @@ export function useTransactionEditPageBase(type: TransactionEditPageType, initMo
|
|||||||
return newTransaction;
|
return newTransaction;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function setTransactionModel(newTransaction: Transaction | null, options: SetTransactionOptions | undefined, setContextData: boolean): void {
|
||||||
|
setTransactionModelByTransaction(
|
||||||
|
transaction.value,
|
||||||
|
newTransaction,
|
||||||
|
allCategories.value,
|
||||||
|
allCategoriesMap.value,
|
||||||
|
allVisibleAccounts.value,
|
||||||
|
allAccountsMap.value,
|
||||||
|
allTagsMap.value,
|
||||||
|
defaultAccountId.value,
|
||||||
|
{
|
||||||
|
time: options?.time,
|
||||||
|
type: options?.type,
|
||||||
|
categoryId: options?.categoryId,
|
||||||
|
accountId: options?.accountId,
|
||||||
|
destinationAccountId: options?.destinationAccountId,
|
||||||
|
amount: options?.amount,
|
||||||
|
destinationAmount: options?.destinationAmount,
|
||||||
|
tagIds: options?.tagIds,
|
||||||
|
comment: options?.comment
|
||||||
|
},
|
||||||
|
setContextData
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
function updateTransactionTime(newTime: number): void {
|
function updateTransactionTime(newTime: number): void {
|
||||||
transaction.value.time = newTime;
|
transaction.value.time = newTime;
|
||||||
updateTransactionTimezone(transaction.value.timeZone ?? '');
|
updateTransactionTimezone(transaction.value.timeZone ?? '');
|
||||||
@@ -502,6 +532,7 @@ export function useTransactionEditPageBase(type: TransactionEditPageType, initMo
|
|||||||
inputIsEmpty,
|
inputIsEmpty,
|
||||||
// functions
|
// functions
|
||||||
createNewTransactionModel,
|
createNewTransactionModel,
|
||||||
|
setTransactionModel,
|
||||||
updateTransactionTime,
|
updateTransactionTime,
|
||||||
updateTransactionTimezone,
|
updateTransactionTimezone,
|
||||||
swapTransactionData,
|
swapTransactionData,
|
||||||
|
|||||||
@@ -506,7 +506,7 @@ import {
|
|||||||
getTransactionPrimaryCategoryName,
|
getTransactionPrimaryCategoryName,
|
||||||
getTransactionSecondaryCategoryName
|
getTransactionSecondaryCategoryName
|
||||||
} from '@/lib/category.ts';
|
} from '@/lib/category.ts';
|
||||||
import { type SetTransactionOptions, setTransactionModelByTransaction } from '@/lib/transaction.ts';
|
import { type SetTransactionOptions } from '@/lib/transaction.ts';
|
||||||
import {
|
import {
|
||||||
isTransactionPicturesEnabled,
|
isTransactionPicturesEnabled,
|
||||||
getMapProvider
|
getMapProvider
|
||||||
@@ -568,15 +568,11 @@ const {
|
|||||||
setGeoLocationByClickMap,
|
setGeoLocationByClickMap,
|
||||||
transaction,
|
transaction,
|
||||||
defaultCurrency,
|
defaultCurrency,
|
||||||
defaultAccountId,
|
|
||||||
coordinateDisplayType,
|
coordinateDisplayType,
|
||||||
allTimezones,
|
allTimezones,
|
||||||
allVisibleAccounts,
|
allVisibleAccounts,
|
||||||
allAccountsMap,
|
|
||||||
allVisibleCategorizedAccounts,
|
allVisibleCategorizedAccounts,
|
||||||
allCategories,
|
allCategories,
|
||||||
allCategoriesMap,
|
|
||||||
allTagsMap,
|
|
||||||
firstVisibleAccountId,
|
firstVisibleAccountId,
|
||||||
hasVisibleExpenseCategories,
|
hasVisibleExpenseCategories,
|
||||||
hasVisibleIncomeCategories,
|
hasVisibleIncomeCategories,
|
||||||
@@ -599,6 +595,7 @@ const {
|
|||||||
inputEmptyProblemMessage,
|
inputEmptyProblemMessage,
|
||||||
inputIsEmpty,
|
inputIsEmpty,
|
||||||
createNewTransactionModel,
|
createNewTransactionModel,
|
||||||
|
setTransactionModel,
|
||||||
updateTransactionTime,
|
updateTransactionTime,
|
||||||
updateTransactionTimezone,
|
updateTransactionTimezone,
|
||||||
swapTransactionData,
|
swapTransactionData,
|
||||||
@@ -625,10 +622,7 @@ const noTransactionDraft = ref<boolean>(false);
|
|||||||
const geoMenuState = ref<boolean>(false);
|
const geoMenuState = ref<boolean>(false);
|
||||||
const removingPictureId = ref<string>('');
|
const removingPictureId = ref<string>('');
|
||||||
|
|
||||||
const initAmount = ref<number | undefined>(undefined);
|
const initOptions = ref<TransactionEditOptions | undefined>(undefined);
|
||||||
const initCategoryId = ref<string | undefined>(undefined);
|
|
||||||
const initAccountId = ref<string | undefined>(undefined);
|
|
||||||
const initTagIds = ref<string | undefined>(undefined);
|
|
||||||
|
|
||||||
let resolveFunc: ((response?: TransactionEditResponse) => void) | null = null;
|
let resolveFunc: ((response?: TransactionEditResponse) => void) | null = null;
|
||||||
let rejectFunc: ((reason?: unknown) => void) | null = null;
|
let rejectFunc: ((reason?: unknown) => void) | null = null;
|
||||||
@@ -645,11 +639,9 @@ const sourceAmountColor = computed<string | undefined>(() => {
|
|||||||
return undefined;
|
return undefined;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const isTransactionModified = computed<boolean>(() => {
|
const isTransactionModified = computed<boolean>(() => {
|
||||||
if (mode.value === TransactionEditPageMode.Add) {
|
if (mode.value === TransactionEditPageMode.Add) {
|
||||||
return transactionsStore.isTransactionDraftModified(transaction.value, initAmount.value, initCategoryId.value, initAccountId.value, initTagIds.value, firstVisibleAccountId.value);
|
return transactionsStore.isTransactionDraftModified(transaction.value, initOptions.value?.amount, initOptions.value?.categoryId, initOptions.value?.accountId, initOptions.value?.tagIds, firstVisibleAccountId.value);
|
||||||
} else if (mode.value === TransactionEditPageMode.Edit) {
|
} else if (mode.value === TransactionEditPageMode.Edit) {
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
@@ -657,31 +649,6 @@ const isTransactionModified = computed<boolean>(() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
function setTransaction(newTransaction: Transaction | null, options: SetTransactionOptions, setContextData: boolean): void {
|
|
||||||
setTransactionModelByTransaction(
|
|
||||||
transaction.value,
|
|
||||||
newTransaction,
|
|
||||||
allCategories.value,
|
|
||||||
allCategoriesMap.value,
|
|
||||||
allVisibleAccounts.value,
|
|
||||||
allAccountsMap.value,
|
|
||||||
allTagsMap.value,
|
|
||||||
defaultAccountId.value,
|
|
||||||
{
|
|
||||||
time: options.time,
|
|
||||||
type: options.type,
|
|
||||||
categoryId: options.categoryId,
|
|
||||||
accountId: options.accountId,
|
|
||||||
destinationAccountId: options.destinationAccountId,
|
|
||||||
amount: options.amount,
|
|
||||||
destinationAmount: options.destinationAmount,
|
|
||||||
tagIds: options.tagIds,
|
|
||||||
comment: options.comment
|
|
||||||
},
|
|
||||||
setContextData
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function open(options: TransactionEditOptions): Promise<TransactionEditResponse | undefined> {
|
function open(options: TransactionEditOptions): Promise<TransactionEditResponse | undefined> {
|
||||||
addByTemplateId.value = null;
|
addByTemplateId.value = null;
|
||||||
duplicateFromId.value = null;
|
duplicateFromId.value = null;
|
||||||
@@ -694,13 +661,10 @@ function open(options: TransactionEditOptions): Promise<TransactionEditResponse
|
|||||||
originalTransactionEditable.value = false;
|
originalTransactionEditable.value = false;
|
||||||
noTransactionDraft.value = options.noTransactionDraft || false;
|
noTransactionDraft.value = options.noTransactionDraft || false;
|
||||||
|
|
||||||
initAmount.value = options.amount;
|
initOptions.value = options;
|
||||||
initCategoryId.value = options.categoryId;
|
|
||||||
initAccountId.value = options.accountId;
|
|
||||||
initTagIds.value = options.tagIds;
|
|
||||||
|
|
||||||
const newTransaction = createNewTransactionModel(options.type);
|
const newTransaction = createNewTransactionModel(options.type);
|
||||||
setTransaction(newTransaction, options, true);
|
setTransactionModel(newTransaction, options, true);
|
||||||
|
|
||||||
const promises: Promise<unknown>[] = [
|
const promises: Promise<unknown>[] = [
|
||||||
accountsStore.loadAllAccounts({ force: false }),
|
accountsStore.loadAllAccounts({ force: false }),
|
||||||
@@ -711,7 +675,7 @@ function open(options: TransactionEditOptions): Promise<TransactionEditResponse
|
|||||||
if (props.type === TransactionEditPageType.Transaction) {
|
if (props.type === TransactionEditPageType.Transaction) {
|
||||||
if (options && options.id) {
|
if (options && options.id) {
|
||||||
if (options.currentTransaction) {
|
if (options.currentTransaction) {
|
||||||
setTransaction(options.currentTransaction, options, true);
|
setTransactionModel(options.currentTransaction, options, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
mode.value = TransactionEditPageMode.View;
|
mode.value = TransactionEditPageMode.View;
|
||||||
@@ -723,10 +687,10 @@ function open(options: TransactionEditOptions): Promise<TransactionEditResponse
|
|||||||
editId.value = null;
|
editId.value = null;
|
||||||
|
|
||||||
if (options.template) {
|
if (options.template) {
|
||||||
setTransaction(options.template, options, false);
|
setTransactionModel(options.template, options, false);
|
||||||
addByTemplateId.value = options.template.id;
|
addByTemplateId.value = options.template.id;
|
||||||
} else if (!options.noTransactionDraft && (settingsStore.appSettings.autoSaveTransactionDraft === 'enabled' || settingsStore.appSettings.autoSaveTransactionDraft === 'confirmation') && transactionsStore.transactionDraft) {
|
} else if (!options.noTransactionDraft && (settingsStore.appSettings.autoSaveTransactionDraft === 'enabled' || settingsStore.appSettings.autoSaveTransactionDraft === 'confirmation') && transactionsStore.transactionDraft) {
|
||||||
setTransaction(Transaction.ofDraft(transactionsStore.transactionDraft), options, false);
|
setTransactionModel(Transaction.ofDraft(transactionsStore.transactionDraft), options, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (settingsStore.appSettings.autoGetCurrentGeoLocation
|
if (settingsStore.appSettings.autoGetCurrentGeoLocation
|
||||||
@@ -751,7 +715,7 @@ function open(options: TransactionEditOptions): Promise<TransactionEditResponse
|
|||||||
|
|
||||||
if (options && options.id) {
|
if (options && options.id) {
|
||||||
if (options.currentTemplate) {
|
if (options.currentTemplate) {
|
||||||
setTransaction(options.currentTemplate, options, false);
|
setTransactionModel(options.currentTemplate, options, false);
|
||||||
(transaction.value as TransactionTemplate).fillFrom(options.currentTemplate);
|
(transaction.value as TransactionTemplate).fillFrom(options.currentTemplate);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -792,11 +756,11 @@ function open(options: TransactionEditOptions): Promise<TransactionEditResponse
|
|||||||
|
|
||||||
if (props.type === TransactionEditPageType.Transaction && options && options.id && responses[3] && responses[3] instanceof Transaction) {
|
if (props.type === TransactionEditPageType.Transaction && options && options.id && responses[3] && responses[3] instanceof Transaction) {
|
||||||
const transaction: Transaction = responses[3];
|
const transaction: Transaction = responses[3];
|
||||||
setTransaction(transaction, options, true);
|
setTransactionModel(transaction, options, true);
|
||||||
originalTransactionEditable.value = transaction.editable;
|
originalTransactionEditable.value = transaction.editable;
|
||||||
} else if (props.type === TransactionEditPageType.Template && options && options.id && responses[3] && responses[3] instanceof TransactionTemplate) {
|
} else if (props.type === TransactionEditPageType.Template && options && options.id && responses[3] && responses[3] instanceof TransactionTemplate) {
|
||||||
const template: TransactionTemplate = responses[3];
|
const template: TransactionTemplate = responses[3];
|
||||||
setTransaction(template, options, false);
|
setTransactionModel(template, options, false);
|
||||||
|
|
||||||
if (!(transaction.value instanceof TransactionTemplate)) {
|
if (!(transaction.value instanceof TransactionTemplate)) {
|
||||||
transaction.value = TransactionTemplate.createNewTransactionTemplate(transaction.value);
|
transaction.value = TransactionTemplate.createNewTransactionTemplate(transaction.value);
|
||||||
@@ -804,7 +768,7 @@ function open(options: TransactionEditOptions): Promise<TransactionEditResponse
|
|||||||
|
|
||||||
(transaction.value as TransactionTemplate).fillFrom(template);
|
(transaction.value as TransactionTemplate).fillFrom(template);
|
||||||
} else {
|
} else {
|
||||||
setTransaction(null, options, true);
|
setTransactionModel(null, options, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
@@ -1007,9 +971,9 @@ function cancel(): void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (settingsStore.appSettings.autoSaveTransactionDraft === 'confirmation') {
|
if (settingsStore.appSettings.autoSaveTransactionDraft === 'confirmation') {
|
||||||
if (transactionsStore.isTransactionDraftModified(transaction.value, initAmount.value, initCategoryId.value, initAccountId.value, initTagIds.value, firstVisibleAccountId.value)) {
|
if (transactionsStore.isTransactionDraftModified(transaction.value, initOptions.value?.amount, initOptions.value?.categoryId, initOptions.value?.accountId, initOptions.value?.tagIds, firstVisibleAccountId.value)) {
|
||||||
confirmDialog.value?.open('Do you want to save this transaction draft?').then(() => {
|
confirmDialog.value?.open('Do you want to save this transaction draft?').then(() => {
|
||||||
transactionsStore.saveTransactionDraft(transaction.value, initAmount.value, initCategoryId.value, initAccountId.value, initTagIds.value, firstVisibleAccountId.value);
|
transactionsStore.saveTransactionDraft(transaction.value, initOptions.value?.amount, initOptions.value?.categoryId, initOptions.value?.accountId, initOptions.value?.tagIds, firstVisibleAccountId.value);
|
||||||
doClose();
|
doClose();
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
transactionsStore.clearTransactionDraft();
|
transactionsStore.clearTransactionDraft();
|
||||||
@@ -1020,7 +984,7 @@ function cancel(): void {
|
|||||||
doClose();
|
doClose();
|
||||||
}
|
}
|
||||||
} else if (settingsStore.appSettings.autoSaveTransactionDraft === 'enabled') {
|
} else if (settingsStore.appSettings.autoSaveTransactionDraft === 'enabled') {
|
||||||
transactionsStore.saveTransactionDraft(transaction.value, initAmount.value, initCategoryId.value, initAccountId.value, initTagIds.value, firstVisibleAccountId.value);
|
transactionsStore.saveTransactionDraft(transaction.value, initOptions.value?.amount, initOptions.value?.categoryId, initOptions.value?.accountId, initOptions.value?.tagIds, firstVisibleAccountId.value);
|
||||||
doClose();
|
doClose();
|
||||||
} else {
|
} else {
|
||||||
doClose();
|
doClose();
|
||||||
|
|||||||
@@ -523,7 +523,6 @@ import {
|
|||||||
import { formatCoordinate } from '@/lib/coordinate.ts';
|
import { formatCoordinate } from '@/lib/coordinate.ts';
|
||||||
import { generateRandomUUID } from '@/lib/misc.ts';
|
import { generateRandomUUID } from '@/lib/misc.ts';
|
||||||
import { getTransactionPrimaryCategoryName, getTransactionSecondaryCategoryName } from '@/lib/category.ts';
|
import { getTransactionPrimaryCategoryName, getTransactionSecondaryCategoryName } from '@/lib/category.ts';
|
||||||
import { setTransactionModelByTransaction } from '@/lib/transaction.ts';
|
|
||||||
import { getMapProvider, isTransactionPicturesEnabled } from '@/lib/server_settings.ts';
|
import { getMapProvider, isTransactionPicturesEnabled } from '@/lib/server_settings.ts';
|
||||||
import logger from '@/lib/logger.ts';
|
import logger from '@/lib/logger.ts';
|
||||||
|
|
||||||
@@ -562,15 +561,12 @@ const {
|
|||||||
numeralSystem,
|
numeralSystem,
|
||||||
currentTimezoneOffsetMinutes,
|
currentTimezoneOffsetMinutes,
|
||||||
defaultCurrency,
|
defaultCurrency,
|
||||||
defaultAccountId,
|
|
||||||
firstDayOfWeek,
|
firstDayOfWeek,
|
||||||
coordinateDisplayType,
|
coordinateDisplayType,
|
||||||
allTimezones,
|
allTimezones,
|
||||||
allVisibleAccounts,
|
allVisibleAccounts,
|
||||||
allAccountsMap,
|
|
||||||
allVisibleCategorizedAccounts,
|
allVisibleCategorizedAccounts,
|
||||||
allCategories,
|
allCategories,
|
||||||
allCategoriesMap,
|
|
||||||
allTagsMap,
|
allTagsMap,
|
||||||
firstVisibleAccountId,
|
firstVisibleAccountId,
|
||||||
hasVisibleExpenseCategories,
|
hasVisibleExpenseCategories,
|
||||||
@@ -591,6 +587,7 @@ const {
|
|||||||
geoLocationStatusInfo,
|
geoLocationStatusInfo,
|
||||||
inputEmptyProblemMessage,
|
inputEmptyProblemMessage,
|
||||||
inputIsEmpty,
|
inputIsEmpty,
|
||||||
|
setTransactionModel,
|
||||||
updateTransactionTime,
|
updateTransactionTime,
|
||||||
updateTransactionTimezone,
|
updateTransactionTimezone,
|
||||||
swapTransactionData,
|
swapTransactionData,
|
||||||
@@ -927,15 +924,8 @@ function init(): void {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setTransactionModelByTransaction(
|
setTransactionModel(
|
||||||
transaction.value,
|
|
||||||
fromTransaction,
|
fromTransaction,
|
||||||
allCategories.value,
|
|
||||||
allCategoriesMap.value,
|
|
||||||
allVisibleAccounts.value,
|
|
||||||
allAccountsMap.value,
|
|
||||||
allTagsMap.value,
|
|
||||||
defaultAccountId.value,
|
|
||||||
{
|
{
|
||||||
time: query['time'] ? parseInt(query['time']) : undefined,
|
time: query['time'] ? parseInt(query['time']) : undefined,
|
||||||
type: queryType,
|
type: queryType,
|
||||||
|
|||||||
Reference in New Issue
Block a user