From 56d6c8e408ed93e36394dc2ff72da9365a68608e Mon Sep 17 00:00:00 2001 From: John Doty Date: Sun, 24 Nov 2024 08:16:25 -0800 Subject: [PATCH] So much cleaner! Give up on flexbox man, grids are how my brain works mostly. --- cry/feed.py | 4 ++ cry/static/style.css | 124 ++++++++++++++++++++++++++----------------- cry/views.py | 75 +++++++++++++++++++------- 3 files changed, 135 insertions(+), 68 deletions(-) diff --git a/cry/feed.py b/cry/feed.py index ca4b73f..67b0b76 100644 --- a/cry/feed.py +++ b/cry/feed.py @@ -2,6 +2,7 @@ import asyncio import calendar import dataclasses +import datetime import functools import hashlib import html.parser @@ -132,6 +133,9 @@ class Entry: link=link, ) + def posted_time_iso(self) -> str: + return datetime.datetime.fromtimestamp(self.posted_at / 1000).isoformat() + def time_ago(self) -> str: posted = int(self.posted_at / 1000) seconds = int(time.time()) - posted diff --git a/cry/static/style.css b/cry/static/style.css index 3c4a809..34b4633 100644 --- a/cry/static/style.css +++ b/cry/static/style.css @@ -1,10 +1,9 @@ body { + box-sizing: border-box; margin-right: 4rem; margin-left: 4rem; margin-top: 0; margin-bottom: 0; - display: flex; - flex-direction: column; height: 100vh; } @@ -42,64 +41,91 @@ li.entry:before { padding-right: 0.5rem; } -/* Feed summaries */ -ul.feed-summary-list { - list-style-type: none; - margin: 0; - padding: 0 1rem 0 0; - - flex-basis: 10%; - flex: 1; - width: 100%; - - height: auto; - overflow-y: auto; +/* + * FEED VIEW + */ +.fv-body { + display: grid; + grid-template-columns: 1fr; + grid-template-rows: auto auto 1fr; } -li.feed-summary { - margin-bottom: 0.5rem; - flex: 1; +.fv-title { + grid-row: 1; +} +.fv-subscribe { + grid-row: 2; +} + +.fv-main-panel { + grid-row: 3; + margin-top: 1rem; + + display: grid; + grid-template-rows: 1fr; + grid-template-columns: 1fr 3fr; + overflow-y: scroll; +} + +.fv-summary-panel { + grid-column: 1; + + display: grid; + grid-template-columns: 1fr; + grid-template-rows: auto 1fr; + + margin-right: 1rem; + overflow-y: scroll; +} + +.fv-summary-refresh { + grid-row: 1; + + width: 100%; + display: block; +} + +.fv-summary-refresh input { + width: 100%; + padding: 0.5rem; +} + +.fv-summary-list { + grid-row: 2; + + list-style-type: none; + padding: 0; + overflow-y: scroll; +} + +.fv-feed-panel { + grid-column: 2; + overflow-y: scroll; +} + +/* + * FEED SUMMARY ITEM + */ +.feed-summary { + margin-bottom: 0.5rem; overflow: hidden; } -li.feed-summary h2 { + +.feed-summary-title { margin: 0; font-size: 100%; - flex: 1; + font-weight: bold; } -li.feed-summary p { + +.feed-summary-timestamp { margin: 0; } -p.feed-title-summary { - height: 1.5rem; + +.feed-summary-entry { + margin: 0; overflow: hidden; text-overflow: ellipsis; -} - -/* The feed container */ -div.feed-container { - flex: 1; - flex-basis: 40%; - - height: 100%; - overflow-y: auto; -} - -/* Group it all */ -div.main-container { - margin-top: 1rem; - flex: 1; - - display: flex; - flex-direction: row; - margin-left: auto; - margin-right: auto; - overflow-y: scroll; /*...but we don't scroll because our columns do first!*/ -} - -/* Uh */ -body.feed-view { - display: flex; - flex-direction: column; + white-space: nowrap; } diff --git a/cry/views.py b/cry/views.py index c0ac176..45f1ef9 100644 --- a/cry/views.py +++ b/cry/views.py @@ -1,11 +1,26 @@ import typing -import dominate import dominate.tags as tags from . import feed +class time(tags.html_tag): + """The