diff options
| -rw-r--r-- | asset-sources/theme.scss | 10 | ||||
| -rw-r--r-- | fietsboek/static/theme.css | 9 | ||||
| -rw-r--r-- | fietsboek/static/theme.css.map | 2 | ||||
| -rw-r--r-- | fietsboek/summaries.py | 27 | ||||
| -rw-r--r-- | 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 @@ <table class="contributions"> <thead> <tr> + <th></th> {% for cell in year_contributions.header_row(request.localizer) %} {% if cell is none %} <th></th> @@ -124,8 +125,9 @@ </tr> </thead> <tbody> - {% for row in year_contributions.rows() %} + {% for rowhead, row in year_contributions.rows_with_heads(request.localizer) %} <tr> + <td class="text-muted contribs-rowhead">{{ rowhead | default("", true) }}</td> {% for cell in row %} <td class="contribs-cell {{ cell.cell_style() }}"> <!-- Use a div because border-radius does not work on td --> |
