code refactor

This commit is contained in:
MaysWind
2025-03-23 21:57:20 +08:00
parent f9b7be2f74
commit 399b5c03a2
4 changed files with 64 additions and 6 deletions
+48 -2
View File
@@ -1,6 +1,11 @@
import { CategoryType } from '@/core/category.ts';
import { type LocalizedPresetCategory, CategoryType } from '@/core/category.ts';
import { TransactionType } from '@/core/transaction.ts';
import { type TransactionCategoriesWithVisibleCount, TransactionCategory } from '@/models/transaction_category.ts';
import {
type TransactionCategoriesWithVisibleCount,
type TransactionCategoryCreateRequest,
type TransactionCategoryCreateWithSubCategories,
TransactionCategory
} from '@/models/transaction_category.ts';
export function transactionTypeToCategoryType(transactionType: TransactionType): CategoryType | null {
if (transactionType === TransactionType.Income) {
@@ -26,6 +31,47 @@ export function categoryTypeToTransactionType(categoryType: CategoryType): Trans
}
}
export function localizedPresetCategoryToTransactionCategoryCreateWithSubCategorys(presetCategory: LocalizedPresetCategory): TransactionCategoryCreateWithSubCategories {
const subCategories: TransactionCategoryCreateRequest[] = [];
for (let i = 0; i < presetCategory.subCategories.length; i++) {
const subPresetCategory = presetCategory.subCategories[i];
const subCategory: TransactionCategoryCreateRequest = {
name: subPresetCategory.name,
type: subPresetCategory.type,
parentId: '',
icon: subPresetCategory.icon,
color: subPresetCategory.color,
comment: '',
clientSessionId: ''
};
subCategories.push(subCategory);
}
const categoryWithSubCategories: TransactionCategoryCreateWithSubCategories = {
name: presetCategory.name,
type: presetCategory.type,
icon: presetCategory.icon,
color: presetCategory.color,
subCategories: subCategories
};
return categoryWithSubCategories;
}
export function localizedPresetCategoriesToTransactionCategoryCreateWithSubCategories(presetCategories: LocalizedPresetCategory[]): TransactionCategoryCreateWithSubCategories[] {
const categories: TransactionCategoryCreateWithSubCategories[] = [];
for (let i = 0; i < presetCategories.length; i++) {
const presetCategory = presetCategories[i];
const categoryWithSubCategories = localizedPresetCategoryToTransactionCategoryCreateWithSubCategorys(presetCategory);
categories.push(categoryWithSubCategories);
}
return categories;
}
export function getSecondaryTransactionMapByName(allCategories: TransactionCategory[]): Record<string, TransactionCategory> {
const ret: Record<string, TransactionCategory> = {};
+10 -2
View File
@@ -1,5 +1,5 @@
import type { ColorValue } from '@/core/color.ts';
import { type LocalizedPresetCategory, CategoryType } from '@/core/category.ts';
import { CategoryType } from '@/core/category.ts';
import { DEFAULT_CATEGORY_ICON_ID } from '@/consts/icon.ts';
import { DEFAULT_CATEGORY_COLOR } from '@/consts/color.ts';
@@ -137,7 +137,15 @@ export interface TransactionCategoryCreateRequest {
}
export interface TransactionCategoryCreateBatchRequest {
readonly categories: LocalizedPresetCategory[];
readonly categories: TransactionCategoryCreateWithSubCategories[];
}
export interface TransactionCategoryCreateWithSubCategories {
readonly name: string;
readonly type: CategoryType;
readonly icon: string;
readonly color: ColorValue;
readonly subCategories: TransactionCategoryCreateRequest[];
}
export interface TransactionCategoryModifyRequest {
@@ -67,6 +67,7 @@ import { useTransactionCategoriesStore } from '@/stores/transactionCategory.ts';
import type { PartialRecord } from '@/core/base.ts';
import { type LocalizedPresetCategory, CategoryType } from '@/core/category.ts';
import { categorizedArrayToPlainArray } from '@/lib/common.ts';
import { localizedPresetCategoriesToTransactionCategoryCreateWithSubCategories } from '@/lib/category.ts';
type SnackBarType = InstanceType<typeof SnackBar>;
@@ -113,7 +114,8 @@ function getCategoryTypeName(categoryType: CategoryType): string {
function save(): void {
submitting.value = true;
const submitCategories = categorizedArrayToPlainArray(allPresetCategories.value);
const presetCategoriesArray = categorizedArrayToPlainArray(allPresetCategories.value);
const submitCategories = localizedPresetCategoriesToTransactionCategoryCreateWithSubCategories(presetCategoriesArray);
transactionCategoriesStore.addCategories({
categories: submitCategories
+3 -1
View File
@@ -68,6 +68,7 @@ import type { PartialRecord } from '@/core/base.ts';
import type { LanguageOption } from '@/locales/index.ts';
import { type LocalizedPresetCategory, CategoryType } from '@/core/category.ts';
import { getObjectOwnFieldCount, categorizedArrayToPlainArray } from '@/lib/common.ts';
import { localizedPresetCategoriesToTransactionCategoryCreateWithSubCategories } from '@/lib/category.ts';
const props = defineProps<{
f7route: Router.Route;
@@ -109,7 +110,8 @@ function save(): void {
submitting.value = true;
showLoading(() => submitting.value);
const submitCategories = categorizedArrayToPlainArray(allPresetCategories.value);
const presetCategoriesArray = categorizedArrayToPlainArray(allPresetCategories.value);
const submitCategories = localizedPresetCategoriesToTransactionCategoryCreateWithSubCategories(presetCategoriesArray);
transactionCategoriesStore.addCategories({
categories: submitCategories