Skip to content

Commit 228e6c3

Browse files
authored
Merge pull request #489 from ChristosBouronikos/fix/issue-488-heatmap-year-filter
fix: correct heatmap year filtering
2 parents 46e3a80 + d8c326a commit 228e6c3

1 file changed

Lines changed: 23 additions & 9 deletions

File tree

src/Stats.vue

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2253,15 +2253,29 @@ const monthComparedChartData = computed(() => {
22532253
22542254
// prepare data for single date matrix charts
22552255
const dateChartData = computed(() => {
2256-
const end = startOfToday();
2257-
let rd = Object.entries(display.value.dateData ? display.value.dateData.received : []);
2258-
let r = preferences.sections.activity.year == (new Date().getFullYear())
2259-
? rd.filter(e => new Date(e[0]) > new Date(new Date().setYear(end.getFullYear() - 1)))
2260-
: rd.filter(e => e[0].substring(0,4) == preferences.sections.activity.year);
2261-
let sd = Object.entries(display.value.dateData ? display.value.dateData.sent : []);
2262-
let s = preferences.sections.activity.year == (new Date().getFullYear())
2263-
? sd.filter(e => new Date(e[0]) > new Date(new Date().setYear(end.getFullYear() - 1)))
2264-
: sd.filter(e => e[0].substring(0,4) == preferences.sections.activity.year);
2256+
const year = preferences.sections.activity.year;
2257+
// Generate all dates for the full year (Jan 1 to Dec 31)
2258+
const startDate = new Date(year, 0, 1);
2259+
const endDate = new Date(year, 11, 31);
2260+
2261+
// Build lookup maps from actual data
2262+
const receivedMap = Object.fromEntries(
2263+
Object.entries(display.value.dateData?.received || {})
2264+
.filter(e => e[0].substring(0, 4) == year)
2265+
);
2266+
const sentMap = Object.fromEntries(
2267+
Object.entries(display.value.dateData?.sent || {})
2268+
.filter(e => e[0].substring(0, 4) == year)
2269+
);
2270+
2271+
// Generate full year data with 0 for empty days
2272+
let r = [], s = [];
2273+
for (let d = new Date(startDate); d <= endDate; d.setDate(d.getDate() + 1)) {
2274+
const key = d.toISOString().slice(0, 10);
2275+
r.push([key, receivedMap[key] || 0]);
2276+
s.push([key, sentMap[key] || 0]);
2277+
}
2278+
22652279
// TODO: handle options.startOfWeek
22662280
return {
22672281
received: { label: t("stats.mailsReceived"), data: r },

0 commit comments

Comments
 (0)