mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-10-05 03:52:59 +00:00
190 lines
4.4 KiB
JavaScript
Vendored
190 lines
4.4 KiB
JavaScript
Vendored
import {defineStore} from 'pinia';
|
|
import {
|
|
endOfDay,
|
|
endOfMonth,
|
|
endOfQuarter,
|
|
endOfWeek,
|
|
startOfDay,
|
|
startOfMonth,
|
|
startOfQuarter,
|
|
startOfWeek,
|
|
startOfYear,
|
|
subDays
|
|
} from "date-fns";
|
|
|
|
export const useFireflyIIIStore = defineStore('counter', {
|
|
state: () => ({
|
|
drawerState: true, viewRange: '1M', listPageSize: 10, range: {
|
|
start: null, end: null
|
|
}, defaultRange: {
|
|
start: null, end: null
|
|
}, currencyCode: 'AAA', currencyId: '0', cacheKey: 'initial'
|
|
}),
|
|
|
|
getters: {
|
|
getViewRange(state) {
|
|
return state.viewRange;
|
|
},
|
|
|
|
getListPageSize(state) {
|
|
return state.listPageSize;
|
|
},
|
|
|
|
getCurrencyCode(state) {
|
|
return state.currencyCode;
|
|
}, getCurrencyId(state) {
|
|
return state.currencyId;
|
|
},
|
|
|
|
getRange(state) {
|
|
return state.range;
|
|
}, getDefaultRange(state) {
|
|
return state.defaultRange;
|
|
},
|
|
|
|
getCacheKey(state) {
|
|
return state.cacheKey;
|
|
}
|
|
},
|
|
|
|
actions: {
|
|
// actions
|
|
refreshCacheKey() {
|
|
let cacheKey = Math.random().toString(36).replace(/[^a-z]+/g, '').slice(0, 8);
|
|
this.setCacheKey(cacheKey);
|
|
},
|
|
|
|
resetRange() {
|
|
let defaultRange = this.defaultRange;
|
|
this.setRange(defaultRange);
|
|
},
|
|
|
|
setDatesFromViewRange() {
|
|
let start;
|
|
let end;
|
|
let viewRange = this.viewRange;
|
|
|
|
let today = new Date;
|
|
switch (viewRange) {
|
|
case 'last365':
|
|
start = startOfDay(subDays(today, 365));
|
|
end = endOfDay(today);
|
|
break;
|
|
case 'last90':
|
|
start = startOfDay(subDays(today, 90));
|
|
end = endOfDay(today);
|
|
break;
|
|
case 'last30':
|
|
start = startOfDay(subDays(today, 30));
|
|
end = endOfDay(today);
|
|
break;
|
|
case 'last7':
|
|
start = startOfDay(subDays(today, 7));
|
|
end = endOfDay(today);
|
|
break;
|
|
case 'YTD':
|
|
start = startOfYear(today);
|
|
end = endOfDay(today);
|
|
break;
|
|
case 'QTD':
|
|
start = startOfQuarter(today);
|
|
end = endOfDay(today);
|
|
break;
|
|
case 'MTD':
|
|
start = startOfMonth(today);
|
|
end = endOfDay(today);
|
|
break;
|
|
case '1D':
|
|
// today:
|
|
start = startOfDay(today);
|
|
end = endOfDay(today);
|
|
break;
|
|
case '1W':
|
|
// this week:
|
|
start = startOfDay(startOfWeek(today, {weekStartsOn: 1}));
|
|
end = endOfDay(endOfWeek(today, {weekStartsOn: 1}));
|
|
break;
|
|
case '1M':
|
|
// this month:
|
|
start = startOfDay(startOfMonth(today));
|
|
end = endOfDay(endOfMonth(today));
|
|
break;
|
|
case '3M':
|
|
// this quarter
|
|
start = startOfDay(startOfQuarter(today));
|
|
end = endOfDay(endOfQuarter(today));
|
|
break;
|
|
case '6M':
|
|
// this half-year
|
|
if (today.getMonth() <= 5) {
|
|
start = new Date(today);
|
|
start.setMonth(0);
|
|
start.setDate(1);
|
|
start = startOfDay(start);
|
|
end = new Date(today);
|
|
end.setMonth(5);
|
|
end.setDate(30);
|
|
end = endOfDay(start);
|
|
}
|
|
if (today.getMonth() > 5) {
|
|
start = new Date(today);
|
|
start.setMonth(6);
|
|
start.setDate(1);
|
|
start = startOfDay(start);
|
|
end = new Date(today);
|
|
end.setMonth(11);
|
|
end.setDate(31);
|
|
end = endOfDay(start);
|
|
}
|
|
break;
|
|
case '1Y':
|
|
// this year
|
|
start = new Date(today);
|
|
start.setMonth(0);
|
|
start.setDate(1);
|
|
start = startOfDay(start);
|
|
|
|
end = new Date(today);
|
|
end.setMonth(11);
|
|
end.setDate(31);
|
|
end = endOfDay(end);
|
|
break;
|
|
}
|
|
this.setRange({start: start, end: end});
|
|
this.setDefaultRange({start: start, end: end});
|
|
},
|
|
|
|
// mutators
|
|
|
|
increment() {
|
|
this.counter++
|
|
},
|
|
updateViewRange(viewRange) {
|
|
this.viewRange = viewRange;
|
|
},
|
|
|
|
updateListPageSize(value) {
|
|
this.listPageSize = value;
|
|
},
|
|
|
|
setRange(value) {
|
|
this.range = value;
|
|
return value;
|
|
},
|
|
|
|
setDefaultRange(value) {
|
|
this.defaultRange = value;
|
|
},
|
|
|
|
setCurrencyCode(value) {
|
|
this.currencyCode = value;
|
|
}, setCurrencyId(value) {
|
|
this.currencyId = value;
|
|
},
|
|
|
|
setCacheKey(value) {
|
|
this.cacheKey = value;
|
|
}
|
|
}
|
|
})
|