From 9ce0ffd3a494225b0b663f84e7d9bd7049cec194 Mon Sep 17 00:00:00 2001 From: andrewlalis Date: Sun, 28 Jun 2026 13:43:29 -0400 Subject: [PATCH] Refactored editor page locations, started on generic editor logic. --- .../src/pages/{forms => }/EditAccountPage.vue | 0 .../EditTransactionPage.vue | 0 web-app/src/pages/transaction-editor/util.ts | 32 +++++++++++++++++++ web-app/src/router/index.ts | 8 ++--- 4 files changed, 36 insertions(+), 4 deletions(-) rename web-app/src/pages/{forms => }/EditAccountPage.vue (100%) rename web-app/src/pages/{forms => transaction-editor}/EditTransactionPage.vue (100%) create mode 100644 web-app/src/pages/transaction-editor/util.ts diff --git a/web-app/src/pages/forms/EditAccountPage.vue b/web-app/src/pages/EditAccountPage.vue similarity index 100% rename from web-app/src/pages/forms/EditAccountPage.vue rename to web-app/src/pages/EditAccountPage.vue diff --git a/web-app/src/pages/forms/EditTransactionPage.vue b/web-app/src/pages/transaction-editor/EditTransactionPage.vue similarity index 100% rename from web-app/src/pages/forms/EditTransactionPage.vue rename to web-app/src/pages/transaction-editor/EditTransactionPage.vue diff --git a/web-app/src/pages/transaction-editor/util.ts b/web-app/src/pages/transaction-editor/util.ts new file mode 100644 index 0000000..f693f4b --- /dev/null +++ b/web-app/src/pages/transaction-editor/util.ts @@ -0,0 +1,32 @@ +import type { Currency } from '@/api/data' +import type { TransactionLineItemResponse, TransactionVendor } from '@/api/transaction' + +/** + * The set of all form fields on the transaction editor page. Note that some + * fields may only be used in certain contexts. + */ +export interface TransactionEditorFormFields { + timestamp: string | null + amount: number | null + templateName: string | null // Only for drafts, not transactions. + currency: Currency | null + description: string | null + internalTransfer: boolean | null + vendor: TransactionVendor | null + categoryId: number | null + creditedAccountId: number | null + debitedAccountId: number | null + lineItems: TransactionLineItemResponse[] + tags: string[] + attachmentsToUpload: File[] + removedAttachmentIds: number[] +} + +/** + * Base class for transaction editor contexts. + */ +export abstract class TransactionEditorContextBase {} + +export class TransactionEditorContext extends TransactionEditorContextBase {} + +export class DraftEditorContext extends TransactionEditorContextBase {} diff --git a/web-app/src/router/index.ts b/web-app/src/router/index.ts index 2e665a9..91989d0 100644 --- a/web-app/src/router/index.ts +++ b/web-app/src/router/index.ts @@ -44,7 +44,7 @@ const router = createRouter({ }, { path: 'accounts/:id/edit', - component: () => import('@/pages/forms/EditAccountPage.vue'), + component: () => import('@/pages/EditAccountPage.vue'), meta: { title: 'Edit Account' }, }, { @@ -54,7 +54,7 @@ const router = createRouter({ }, { path: 'add-account', - component: () => import('@/pages/forms/EditAccountPage.vue'), + component: () => import('@/pages/EditAccountPage.vue'), meta: { title: 'Add Account' }, }, { @@ -64,7 +64,7 @@ const router = createRouter({ }, { path: 'transactions/:id/edit', - component: () => import('@/pages/forms/EditTransactionPage.vue'), + component: () => import('@/pages/transaction-editor/EditTransactionPage.vue'), meta: { title: 'Edit Transaction' }, }, { @@ -74,7 +74,7 @@ const router = createRouter({ }, { path: 'add-transaction', - component: () => import('@/pages/forms/EditTransactionPage.vue'), + component: () => import('@/pages/transaction-editor/EditTransactionPage.vue'), meta: { title: 'Add Transaction' }, }, {