From 5982932457c1afa645f07b68939530e560ee8672 Mon Sep 17 00:00:00 2001 From: simon Date: Sat, 28 May 2022 13:57:29 +0700 Subject: [PATCH] implement variable grid row size --- tubearchivist/home/config.json | 3 +- tubearchivist/home/src/frontend/api_calls.py | 12 +++ .../home/templates/home/channel_id.html | 11 ++- tubearchivist/home/templates/home/home.html | 13 +++- tubearchivist/home/views.py | 10 +++ tubearchivist/static/css/style.css | 25 ++++++- tubearchivist/static/img/icon-substract.svg | 75 +++++++++++++++++++ tubearchivist/static/script.js | 10 +++ 8 files changed, 151 insertions(+), 8 deletions(-) create mode 100644 tubearchivist/static/img/icon-substract.svg diff --git a/tubearchivist/home/config.json b/tubearchivist/home/config.json index 9ffe376..3e5e941 100644 --- a/tubearchivist/home/config.json +++ b/tubearchivist/home/config.json @@ -8,7 +8,8 @@ "home": "grid", "channel": "list", "downloads": "list", - "playlist": "grid" + "playlist": "grid", + "grid_items": 3 }, "subscriptions": { "auto_search": false, diff --git a/tubearchivist/home/src/frontend/api_calls.py b/tubearchivist/home/src/frontend/api_calls.py index 8b0d9b3..ed937ae 100644 --- a/tubearchivist/home/src/frontend/api_calls.py +++ b/tubearchivist/home/src/frontend/api_calls.py @@ -54,6 +54,7 @@ class PostData: "watched": self._watched, "un_watched": self._un_watched, "change_view": self._change_view, + "change_grid": self._change_grid, "rescan_pending": self._rescan_pending, "ignore": self._ignore, "dl_pending": self._dl_pending, @@ -100,6 +101,17 @@ class PostData: RedisArchivist().set_message(key, {"status": new_view}, expire=False) return {"success": True} + def _change_grid(self): + """process change items in grid""" + grid_items = int(self.exec_val) + grid_items = max(grid_items, 3) + grid_items = min(grid_items, 7) + + key = f"{self.current_user}:grid_items" + print(f"change grid items: {grid_items}") + RedisArchivist().set_message(key, {"status": grid_items}, expire=False) + return {"success": True} + @staticmethod def _rescan_pending(): """look for new items in subscribed channels""" diff --git a/tubearchivist/home/templates/home/channel_id.html b/tubearchivist/home/templates/home/channel_id.html index 8240132..d0c5bd5 100644 --- a/tubearchivist/home/templates/home/channel_id.html +++ b/tubearchivist/home/templates/home/channel_id.html @@ -112,6 +112,8 @@ {% endif %} + +
Hide watched videos: @@ -141,14 +143,19 @@
sort-icon + {% if view_style == "grid" %} + {{ grid_items }} + grid plus row + grid minus row + {% endif %} grid view list view
-
-
+
+
{% if results %} {% for video in results %}
diff --git a/tubearchivist/home/templates/home/home.html b/tubearchivist/home/templates/home/home.html index 445de5b..89dd702 100644 --- a/tubearchivist/home/templates/home/home.html +++ b/tubearchivist/home/templates/home/home.html @@ -1,12 +1,12 @@ {% extends "home/base.html" %} {% block content %} {% load static %} -
+
{% if continue_vids %}

Continue Watching

-
-
-
+
+
{% if results %} {% for video in results %}
diff --git a/tubearchivist/home/views.py b/tubearchivist/home/views.py index bd5a2ea..30738d2 100644 --- a/tubearchivist/home/views.py +++ b/tubearchivist/home/views.py @@ -77,6 +77,15 @@ class ArchivistViewConfig(View): return view_style + def _get_grid_items(self): + """return items per row to show in grid view""" + grid_key = f"{self.user_id}:grid_items" + grid_items = self.user_conf.get_message(grid_key)["status"] + if not grid_items: + grid_items = self.default_conf["default_view"]["grid_items"] + + return grid_items + def get_all_view_styles(self): """get dict of all view stiles for search form""" all_keys = ["channel", "playlist", "home"] @@ -120,6 +129,7 @@ class ArchivistViewConfig(View): "sort_by": self._get_sort_by(), "sort_order": self._get_sort_order(), "view_style": self._get_view_style(), + "grid_items": self._get_grid_items(), "hide_watched": self._get_hide_watched(), "show_ignored_only": self._get_show_ignore_only(), "show_subed_only": self._get_show_subed_only(), diff --git a/tubearchivist/static/css/style.css b/tubearchivist/static/css/style.css index d92187a..808c2c2 100644 --- a/tubearchivist/static/css/style.css +++ b/tubearchivist/static/css/style.css @@ -133,6 +133,13 @@ button:hover { margin: 0 auto; } +.boxed-content.boxed-5, +.boxed-content.boxed-6, +.boxed-content.boxed-7 { + max-width: unset; + width: 85%; +} + .round-img img { border-radius: 50%; } @@ -395,10 +402,26 @@ button:hover { margin-top: 1rem; } -.video-list.grid { +.video-list.grid.grid-3 { grid-template-columns: 1fr 1fr 1fr; } +.video-list.grid.grid-4 { + grid-template-columns: 1fr 1fr 1fr 1fr; +} + +.video-list.grid.grid-5 { + grid-template-columns: 1fr 1fr 1fr 1fr 1fr; +} + +.video-list.grid.grid-6 { + grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr; +} + +.video-list.grid.grid-7 { + grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr; +} + .video-list.list { grid-template-columns: unset; } diff --git a/tubearchivist/static/img/icon-substract.svg b/tubearchivist/static/img/icon-substract.svg new file mode 100644 index 0000000..0b68cfb --- /dev/null +++ b/tubearchivist/static/img/icon-substract.svg @@ -0,0 +1,75 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/tubearchivist/static/script.js b/tubearchivist/static/script.js index e20d31c..9c016be 100644 --- a/tubearchivist/static/script.js +++ b/tubearchivist/static/script.js @@ -121,6 +121,16 @@ function changeView(image) { }, 500); } +function changeGridItems(image) { + var operator = image.getAttribute("data-value"); + var payload = JSON.stringify({'change_grid': operator}); + sendPost(payload); + setTimeout(function(){ + location.reload(); + return false; + }, 500); +} + function toggleCheckbox(checkbox) { // pass checkbox id as key and checkbox.checked as value var toggleId = checkbox.id;