From 5bb52a9d67a1fc5d3499f5c6b10532d6f840ec8b Mon Sep 17 00:00:00 2001 From: bkfox Date: Sat, 27 Jan 2024 18:56:05 +0100 Subject: [PATCH] rendering --- aircox/models/log.py | 26 +++++++++++++++++----- aircox/static/aircox/css/admin.css | 1 + aircox/static/aircox/css/public.css | 1 + aircox/templates/aircox/basepage_list.html | 8 +++++-- aircox/views/home.py | 2 +- aircox/views/page.py | 1 + assets/src/assets/components.scss | 4 ++++ 7 files changed, 35 insertions(+), 8 deletions(-) diff --git a/aircox/models/log.py b/aircox/models/log.py index cf4a8a1..72b3e9b 100644 --- a/aircox/models/log.py +++ b/aircox/models/log.py @@ -208,13 +208,13 @@ class Log(Renderable, models.Model): return object_list if count is None else object_list[:count] - @staticmethod - def _next_index(items, date, default, pred=operator.lt): + @classmethod + def _next_index(cls, items, date, default, pred=operator.lt): iter = (i for i, v in enumerate(items) if pred(v.date, date)) return next(iter, default) - @staticmethod - def _append_logs(object_list, logs, count, slice=None, group=False): + @classmethod + def _append_logs(cls, object_list, logs, count, slice=None, group=False): if slice: count = min(slice, count) logs = logs[:count] @@ -222,11 +222,27 @@ class Log(Renderable, models.Model): return object_list if group: - object_list.append(logs) + grouped = cls._group_logs_by_time(logs) + object_list.extend(grouped) else: object_list += logs return object_list + @classmethod + def _group_logs_by_time(cls, logs): + last_time = -1 + cum = [] + for log in logs: + hour = log.date.time().hour + if hour != last_time: + if cum: + yield cum + cum = [] + last_time = hour + cum.append(log) + if cum: + yield cum + def print(self): r = [] if self.diffusion: diff --git a/aircox/static/aircox/css/admin.css b/aircox/static/aircox/css/admin.css index b2e135e..2b0d91d 100644 --- a/aircox/static/aircox/css/admin.css +++ b/aircox/static/aircox/css/admin.css @@ -301,6 +301,7 @@ preview-header:not(.no-cover) .card-headings .heading, preview-header:not(.no-co .list-grid { display: grid; grid-template-columns: 1fr 1fr; + grid-auto-flow: dense; gap: 1.2rem; } diff --git a/aircox/static/aircox/css/public.css b/aircox/static/aircox/css/public.css index 5eb538d..4c2a526 100644 --- a/aircox/static/aircox/css/public.css +++ b/aircox/static/aircox/css/public.css @@ -301,6 +301,7 @@ preview-header:not(.no-cover) .card-headings .heading, preview-header:not(.no-co .list-grid { display: grid; grid-template-columns: 1fr 1fr; + grid-auto-flow: dense; gap: 1.2rem; } diff --git a/aircox/templates/aircox/basepage_list.html b/aircox/templates/aircox/basepage_list.html index 2af7e91..2e609f0 100644 --- a/aircox/templates/aircox/basepage_list.html +++ b/aircox/templates/aircox/basepage_list.html @@ -39,16 +39,20 @@