From 4a733de94ed93ea69cf79712099936dec67380e2 Mon Sep 17 00:00:00 2001 From: Henrik Giesel Date: Mon, 18 Jan 2021 23:23:55 +0100 Subject: [PATCH] Use firstWeekday config in graphs data --- ts/graphs/calendar.ts | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/ts/graphs/calendar.ts b/ts/graphs/calendar.ts index f9e4decfd..58e33d64d 100644 --- a/ts/graphs/calendar.ts +++ b/ts/graphs/calendar.ts @@ -13,12 +13,14 @@ import { select, mouse } from "d3-selection"; import { scaleLinear, scaleSequential } from "d3-scale"; import { showTooltip, hideTooltip } from "./tooltip"; import { GraphBounds, setDataAvailable, RevlogRange } from "./graph-helpers"; -import { timeDay, timeYear, timeWeek } from "d3-time"; +import { timeDay, timeYear, timeSunday, timeMonday, timeFriday, timeSaturday } from "d3-time"; +import type { CountableTimeInterval } from "d3-time"; import type { I18n } from "anki/i18n"; export interface GraphData { // indexed by day, where day is relative to today reviewCount: Map; + timeFunction: CountableTimeInterval, } interface DayDatum { @@ -45,7 +47,15 @@ export function gatherData(data: pb.BackendProto.GraphsOut): GraphData { reviewCount.set(day, count + 1); } - return { reviewCount }; + let timeFunction = data.firstWeekday === 1 + ? timeMonday + : data.firstWeekday === 5 + ? timeFriday + : data.firstWeekday === 6 + ? timeSaturday + : timeSunday; + + return { reviewCount, timeFunction }; } export function renderCalendar( @@ -73,8 +83,8 @@ export function renderCalendar( if (date.getFullYear() != targetYear) { continue; } - const weekNumber = timeWeek.count(timeYear(date), date); - const weekDay = timeDay.count(timeWeek(date), date); + const weekNumber = sourceData.timeFunction.count(timeYear(date), date); + const weekDay = timeDay.count(sourceData.timeFunction(date), date); const yearDay = timeDay.count(timeYear(date), date); dayMap.set(yearDay, { day, count, weekNumber, weekDay, date } as DayDatum); if (count > maxCount) { @@ -105,8 +115,8 @@ export function renderCalendar( } const yearDay = timeDay.count(timeYear(date), date); if (!dayMap.has(yearDay)) { - const weekNumber = timeWeek.count(timeYear(date), date); - const weekDay = timeDay.count(timeWeek(date), date); + const weekNumber = sourceData.timeFunction.count(timeYear(date), date); + const weekDay = timeDay.count(sourceData.timeFunction(date), date); dayMap.set(yearDay, { day: yearDay, count: 0,