diff --git a/public/heatmap.svg b/public/heatmap.svg index dfb3386..71792f5 100644 --- a/public/heatmap.svg +++ b/public/heatmap.svg @@ -2,7 +2,7 @@ -Mar +Apr May Jun Jul diff --git a/scripts/__pycache__/generate_heatmap_svg.cpython-314.pyc b/scripts/__pycache__/generate_heatmap_svg.cpython-314.pyc new file mode 100644 index 0000000..74253c8 Binary files /dev/null and b/scripts/__pycache__/generate_heatmap_svg.cpython-314.pyc differ diff --git a/scripts/generate_heatmap_svg.py b/scripts/generate_heatmap_svg.py index dd2f21f..439a244 100644 --- a/scripts/generate_heatmap_svg.py +++ b/scripts/generate_heatmap_svg.py @@ -55,18 +55,30 @@ def weekday_row(day): return (day.weekday() + 1) % 7 -def month_labels(start, end): - labels = [(0, start.strftime("%b"))] - total_weeks = ((end - start).days // 7) + 1 +def month_labels(grid_start, visible_start, grid_end): + labels = [] + total_weeks = ((grid_end - grid_start).days // 7) + 1 for week in range(total_weeks): - week_start = start + timedelta(days=week * 7) + week_start = grid_start + timedelta(days=week * 7) + week_label = None + for offset in range(7): day = week_start + timedelta(days=offset) - if day.day == 1 and week != 0: - labels.append((week, day.strftime("%b"))) + if day < visible_start: + continue + + if week == 0 and week_label is None: + week_label = day.strftime("%b") + + if day.day == 1: + week_label = day.strftime("%b") break + if week_label is not None: + if not labels or labels[-1][1] != week_label: + labels.append((week, week_label)) + return labels @@ -108,7 +120,7 @@ def generate_svg(data): '', ] - for week, label in month_labels(aligned_start, aligned_end): + for week, label in month_labels(aligned_start, start, aligned_end): x = LEFT_PAD + (week * CELL) svg.append(f'{label}')