From 5178da7069304219a5c38b54a56a705627a88491 Mon Sep 17 00:00:00 2001 From: Daniel Schadt Date: Thu, 13 Aug 2026 17:33:41 +0200 Subject: add weekdays to year contributions --- asset-sources/theme.scss | 10 +++++++--- fietsboek/static/theme.css | 9 ++++++--- fietsboek/static/theme.css.map | 2 +- fietsboek/summaries.py | 27 +++++++++++++++++++++++++++ fietsboek/templates/profile_overview.jinja2 | 4 +++- 5 files changed, 44 insertions(+), 8 deletions(-) diff --git a/asset-sources/theme.scss b/asset-sources/theme.scss index cdb4923..5432b43 100644 --- a/asset-sources/theme.scss +++ b/asset-sources/theme.scss @@ -274,14 +274,18 @@ strong { .contributions { tbody td.contribs-cell { div { - border: 2px solid rgba(0, 0, 0, 0.175); + border: 1px solid rgba(0, 0, 0, 0.175); border-radius: calc(0.375rem - (1px)); - width: 1em; - height: 1em; + width: 1.1em; + height: 1.1em; } } + .contribs-rowhead { + font-size: 90%; + } + .contribs-length-0 div { background-color: #FFFFFF; } diff --git a/fietsboek/static/theme.css b/fietsboek/static/theme.css index aa9fe1b..78d79e3 100644 --- a/fietsboek/static/theme.css +++ b/fietsboek/static/theme.css @@ -260,10 +260,13 @@ strong { } .contributions tbody td.contribs-cell div { - border: 2px solid rgba(0, 0, 0, 0.175); + border: 1px solid rgba(0, 0, 0, 0.175); border-radius: calc(0.375rem - 1px); - width: 1em; - height: 1em; + width: 1.1em; + height: 1.1em; +} +.contributions .contribs-rowhead { + font-size: 90%; } .contributions .contribs-length-0 div { background-color: #FFFFFF; diff --git a/fietsboek/static/theme.css.map b/fietsboek/static/theme.css.map index 6c87d3e..9408c30 100644 --- a/fietsboek/static/theme.css.map +++ b/fietsboek/static/theme.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["../../asset-sources/theme.scss"],"names":[],"mappings":"AAAA;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;AAEA;EACE;EACA;EACA;;;AAIJ;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAIA;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAlCJ;EAqCE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACI;;;AAGJ;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;;AAIJ;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAIJ;EACE;;AAEF;EACE;;AACA;EACE;;AAGJ;EACE;;AACA;EACE;;AAGJ;EACE;;AACA;EACE;;AAGJ;EACE;;AACA;EACE;;AAGJ;EACE;EACA;;AACA;EACE;;AAIJ;EACE;EACA;;;AAMA;EACE;EACA;EAEA;EACA;;AAIJ;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;;AAIJ;EACE;;;AAGF;AACA;EACE;;;AAGF;EACE;EACA;;AAEA;EAJF;IAKI,eACE;;;AAIJ;EACE;;AAGF;EACE;;AAEA;EAHF;IAII;;;AAGF;EACE;EACA;;AAIJ;EACE;EACA;;;AAIJ;EACE;;;AAGF;AACA;EACE;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE","file":"theme.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["../../asset-sources/theme.scss"],"names":[],"mappings":"AAAA;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;AAEA;EACE;EACA;EACA;;;AAIJ;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAIA;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAlCJ;EAqCE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACI;;;AAGJ;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;;AAIJ;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAIJ;EACE;;AAEF;EACE;;AACA;EACE;;AAGJ;EACE;;AACA;EACE;;AAGJ;EACE;;AACA;EACE;;AAGJ;EACE;;AACA;EACE;;AAGJ;EACE;EACA;;AACA;EACE;;AAIJ;EACE;EACA;;;AAMA;EACE;EACA;EAEA;EACA;;AAIJ;EACE;;AAGF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;;AAIJ;EACE;;;AAGF;AACA;EACE;;;AAGF;EACE;EACA;;AAEA;EAJF;IAKI,eACE;;;AAIJ;EACE;;AAGF;EACE;;AAEA;EAHF;IAII;;;AAGF;EACE;EACA;;AAIJ;EACE;EACA;;;AAIJ;EACE;;;AAGF;AACA;EACE;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE","file":"theme.css"} \ No newline at end of file diff --git a/fietsboek/summaries.py b/fietsboek/summaries.py index e3c58e6..8c54d5f 100644 --- a/fietsboek/summaries.py +++ b/fietsboek/summaries.py @@ -4,6 +4,7 @@ import datetime from dataclasses import dataclass from typing import Iterator, Optional +from babel import Locale from babel.dates import format_date from pyramid.i18n import Localizer @@ -337,6 +338,32 @@ class YearContributions: day += ONE_WEEK yield iter(row) + def _rowheads(self, localizer: Localizer) -> Iterator[str | None]: + """Returns the row heads (i.e., weekday names) to be prepended to the rows. + + :param localizer: The localizer to use. + :return: An iterator over the column headers. + """ + loc = Locale.parse(localizer.locale_name) + days = loc.days["stand-alone"]["abbreviated"] + return iter([ + days[0], + None, + None, + days[3], + None, + None, + days[6], + ]) + + def rows_with_heads(self, localizer: Localizer) -> Iterator[tuple[str | None, Iterator[DayContributions]]]: + """Returns each row with its associated heading (weekday name). + + :param localizer: The localizer to use. + :return: An iterator over (header, cells) pairs. + """ + return zip(self._rowheads(localizer), self.rows()) + def header_row(self, localizer: Localizer) -> Iterator[str | None]: """Returns the header row. diff --git a/fietsboek/templates/profile_overview.jinja2 b/fietsboek/templates/profile_overview.jinja2 index f563ad9..fbb1804 100644 --- a/fietsboek/templates/profile_overview.jinja2 +++ b/fietsboek/templates/profile_overview.jinja2 @@ -114,6 +114,7 @@ + {% for cell in year_contributions.header_row(request.localizer) %} {% if cell is none %} @@ -124,8 +125,9 @@ - {% for row in year_contributions.rows() %} + {% for rowhead, row in year_contributions.rows_with_heads(request.localizer) %} + {% for cell in row %}
{{ rowhead | default("", true) }} -- cgit v1.2.3