summaryrefslogtreecommitdiff
path: root/utab/rendering.py
diff options
context:
space:
mode:
authorFrederick Yin <fkfd@macaw.me>2020-07-04 14:23:36 +0800
committerFrederick Yin <fkfd@macaw.me>2020-07-04 14:23:36 +0800
commit0be69d4b5db18b1e0794fd3dc3297da0a16b1ccf (patch)
tree00c8f50f381d4531a3a45eeed0f9cdd1bf18f3b1 /utab/rendering.py
Minimal viable product
Diffstat (limited to 'utab/rendering.py')
-rw-r--r--utab/rendering.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/utab/rendering.py b/utab/rendering.py
new file mode 100644
index 0000000..731524c
--- /dev/null
+++ b/utab/rendering.py
@@ -0,0 +1,35 @@
+import urllib
+from .const import *
+
+# dead simple template engine
+def render_page(template: str, **kwargs):
+ page = template
+ for k, v in kwargs.items():
+ page = page.replace(f"%{str(k)}%", str(v))
+ return page
+
+
+def render_sites(sites: list, columns=8, rows=4):
+ top_sites = sorted(sites, key=lambda s: int(s[VISITS]), reverse=True)[
+ : (columns * rows) # top col*row sites, default=32
+ ]
+ # site_rows: group sites into rows
+ if len(top_sites) < 32:
+ top_sites.extend([None] * (32 - len(top_sites)))
+
+ site_rows = list(zip(*[top_sites[n::columns] for n in range(columns)]))
+ html = '<div class="sites-grid">'
+ for row in site_rows:
+ html += '<div class="sites-row">'
+ for col in row:
+ if col is not None:
+ html += (
+ '<div class="sites-item">'
+ f'<a class="site" href="/go/{urllib.parse.quote(col[URL], safe="")}">'
+ f'<img class="site-favicon" src="{col[FAVICON]}" /></a>'
+ + f"<p>{col[TITLE]}</p>"
+ + "</div>"
+ )
+ html += "</div>"
+ html += "</div>"
+ return html