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}')