aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asset-sources/theme.scss10
-rw-r--r--fietsboek/static/theme.css9
-rw-r--r--fietsboek/static/theme.css.map2
-rw-r--r--fietsboek/summaries.py27
-rw-r--r--fietsboek/templates/profile_overview.jinja24
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 -->