Client - Stats refactoring + display fix when week starts on Monday #95
This commit is contained in:
@ -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)),
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user