Skip to content

Commit

Permalink
feat: when creating a new year, now copy the current year's categories
Browse files Browse the repository at this point in the history
  • Loading branch information
Hoverth committed Nov 14, 2024
1 parent 184f1e8 commit 0042e50
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 2 deletions.
5 changes: 3 additions & 2 deletions src/store/state/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { moveInArrays, readFile, remove, uuid } from '@utils';
import { DeepReadonly, inject, reactive, readonly, ShallowRef, shallowRef, watch } from 'vue';
import { migrateApplicationState } from './migrator';
import { AvailableCurrency, Budget, BudgetGroup, BudgetYear, DataState, DataStates, DataStateV1 } from './types';
import { generateBudgetYear } from './utils';
import { generateBudgetYearFromCurrent } from './utils';

export const DATA_STORE_KEY = Symbol('DataStore');

Expand Down Expand Up @@ -184,7 +184,8 @@ export const createDataStore = (storage?: Storage): Store => {
let data = state.years.find((v) => v.year === year);

if (!data) {
data = generateBudgetYear(year);
//data = generateBudgetYear(year);
data = generateBudgetYearFromCurrent(year, getCurrentYear());
state.years.push(data);
state.years.sort((a, b) => a.year - b.year);
}
Expand Down
15 changes: 15 additions & 0 deletions src/store/state/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,18 @@ export const generateBudgetYear = (year: number): BudgetYear => ({
income: [generateBudgetGroup('General', ['Other'])],
expenses: [generateBudgetGroup('General', ['Other'])]
});

export const generateBudgetYearFromCurrent = (year: number, current: BudgetYear): BudgetYear => {
current.income = current.income.map((value) => {
for (const budget of value.budgets) {
budget.values = new Array(12).fill(0);
}
return value;
});

return {
year,
income: current.income,
expenses: current.expenses
};
};

0 comments on commit 0042e50

Please sign in to comment.