Client - Stats refactoring + display fix when week starts on Monday #95

This commit is contained in:
Sam
2021-10-04 13:53:48 +02:00
parent f328e632ac
commit b86d2be4d6
6 changed files with 758 additions and 235 deletions

View File

@ -1,4 +1,18 @@
import { format } from 'date-fns'
import {
addMonths,
addWeeks,
addYears,
endOfMonth,
endOfWeek,
endOfYear,
format,
startOfMonth,
startOfWeek,
startOfYear,
subMonths,
subWeeks,
subYears,
} from 'date-fns'
import { IChartDataset } from '@/types/chart'
import { ISport } from '@/types/sports'
@ -105,3 +119,56 @@ export const formatStats = (
datasets,
}
}
export const getStatsDateParams = (
date: Date,
timeFrame: string,
weekStartingMonday: boolean
): IStatisticsDateParams => {
const weekStartsOn = weekStartingMonday ? 1 : 0
const start =
timeFrame === 'year'
? startOfYear(subYears(date, 9))
: timeFrame === 'week'
? startOfWeek(subMonths(date, 2), { weekStartsOn })
: startOfMonth(subMonths(date, 11)) // month
const end =
timeFrame === 'year'
? endOfYear(date)
: timeFrame === 'week'
? endOfWeek(date, { weekStartsOn })
: endOfMonth(date) // month
return {
duration: timeFrame,
end,
start,
}
}
export const updateChartParams = (
chartParams: IStatisticsDateParams,
backward: boolean,
weekStartingMonday: boolean
): IStatisticsDateParams => {
const { duration, start, end } = chartParams
const weekStartsOn = weekStartingMonday ? 1 : 0
return {
duration,
end:
duration === 'year'
? endOfYear(backward ? subYears(end, 1) : addYears(end, 1))
: duration === 'week'
? endOfWeek(backward ? subWeeks(end, 1) : addWeeks(end, 1), {
weekStartsOn,
})
: endOfMonth(backward ? subMonths(end, 1) : addMonths(end, 1)),
start:
duration === 'year'
? startOfYear(backward ? subYears(start, 1) : addYears(start, 1))
: duration === 'week'
? startOfWeek(backward ? subWeeks(start, 1) : addWeeks(start, 1), {
weekStartsOn,
})
: startOfMonth(backward ? subMonths(start, 1) : addMonths(start, 1)),
}
}