-
Neil authored
* Button changes and time filters * rename on dashboard * notes * fix time filters * Sort Categories * Page title * category sort order * move button * featureflag * Highlight report name * sankey fix * VRT * remove doubled element * adjust to match master * add Year * notes * lint fix * update names * IntervalsUpdates * fixing bugs * ts updates * lint fix * merge fixes * notes * simplify lookups
Neil authored* Button changes and time filters * rename on dashboard * notes * fix time filters * Sort Categories * Page title * category sort order * move button * featureflag * Highlight report name * sankey fix * VRT * remove doubled element * adjust to match master * add Year * notes * lint fix * update names * IntervalsUpdates * fixing bugs * ts updates * lint fix * merge fixes * notes * simplify lookups
reportRanges.ts 2.73 KiB
import * as monthUtils from 'loot-core/src/shared/months';
export function validateStart(
earliest: string,
start: string,
end: string,
interval?: string,
) {
let addDays;
let dateStart;
switch (interval) {
case 'Monthly':
dateStart = start + '-01';
addDays = 180;
break;
case 'Yearly':
dateStart = start + '-01-01';
addDays = 1095;
break;
case 'Daily':
dateStart = start;
addDays = 6;
break;
default:
dateStart = start;
addDays = 180;
break;
}
if (end < start) {
end = monthUtils.addDays(dateStart, addDays);
}
return boundedRange(
earliest,
dateStart,
interval ? end : monthUtils.monthFromDate(end),
interval,
);
}
export function validateEnd(
earliest: string,
start: string,
end: string,
interval?: string,
) {
let subDays;
let dateEnd;
switch (interval) {
case 'Monthly':
dateEnd = end + '-31';
subDays = 180;
break;
case 'Yearly':
dateEnd = end + '-12-31';
subDays = 1095;
break;
case 'Daily':
dateEnd = end;
subDays = 6;
break;
default:
dateEnd = end;
subDays = 180;
break;
}
if (start > end) {
start = monthUtils.subDays(dateEnd, subDays);
}
return boundedRange(
earliest,
interval ? start : monthUtils.monthFromDate(start),
dateEnd,
interval,
);
}
export function validateRange(earliest: string, start: string, end: string) {
const latest = monthUtils.currentDay();
if (end > latest) {
end = latest;
}
if (start < earliest) {
start = earliest;
}
return [start, end];
}
function boundedRange(
earliest: string,
start: string,
end: string,
interval?: string,
) {
let latest;
switch (interval) {
case 'Monthly':
latest = monthUtils.currentMonth() + '-31';
break;
case 'Yearly':
latest = monthUtils.currentDay();
break;
default:
latest = monthUtils.currentMonth();
break;
}
if (end > latest) {
end = latest;
}
if (start < earliest) {
start = earliest;
}
return [start, end];
}
export function getSpecificRange(offset: number, addNumber: number) {
const currentDay = monthUtils.currentDay();
const dateStart = monthUtils.subMonths(currentDay, offset) + '-01';
const dateEnd = monthUtils.getMonthEnd(
monthUtils.addMonths(dateStart, addNumber === null ? offset : addNumber) +
'-01',
);
return [dateStart, dateEnd];
}
export function getFullRange(start: string) {
const end = monthUtils.currentMonth();
return [start, end];
}
export function getLatestRange(offset: number) {
const end = monthUtils.currentMonth();
const start = monthUtils.subMonths(end, offset);
return [start, end];
}