From e40b588f304c38e9de2408c80ce5e4c2a047c209 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Benjamin=20H=C3=A4ttasch?=
 <benjamin.haettasch@fachschaft.informatik.tu-darmstadt.de>
Date: Sun, 22 May 2022 10:06:27 +0200
Subject: [PATCH] Add graphical control for autoreload of plan

This visualizes the state and allows to turn it on and off with a click
---
 AKPlan/locale/de_DE/LC_MESSAGES/django.po | 10 ++--
 AKPlan/templates/AKPlan/plan_wall.html    | 65 +++++++++++++++--------
 2 files changed, 49 insertions(+), 26 deletions(-)

diff --git a/AKPlan/locale/de_DE/LC_MESSAGES/django.po b/AKPlan/locale/de_DE/LC_MESSAGES/django.po
index 18caa905..2c460538 100644
--- a/AKPlan/locale/de_DE/LC_MESSAGES/django.po
+++ b/AKPlan/locale/de_DE/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-10-29 13:36+0000\n"
+"POT-Creation-Date: 2022-05-22 08:02+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -63,12 +63,12 @@ msgid "AK Wall"
 msgstr "AK-Wall"
 
 #: AKPlan/templates/AKPlan/plan_index.html:126
-#: AKPlan/templates/AKPlan/plan_wall.html:81
+#: AKPlan/templates/AKPlan/plan_wall.html:116
 msgid "Current AKs"
 msgstr "Aktuelle AKs"
 
 #: AKPlan/templates/AKPlan/plan_index.html:133
-#: AKPlan/templates/AKPlan/plan_wall.html:86
+#: AKPlan/templates/AKPlan/plan_wall.html:121
 msgid "Next AKs"
 msgstr "Nächste AKs"
 
@@ -99,6 +99,10 @@ msgstr "Eigenschaften"
 msgid "Track"
 msgstr "Track"
 
+#: AKPlan/templates/AKPlan/plan_wall.html:131
+msgid "Reload page automatically?"
+msgstr "Seite automatisch neu laden?"
+
 #: AKPlan/templates/AKPlan/slots_table.html:14
 msgid "No AKs"
 msgstr "Keine AKs"
diff --git a/AKPlan/templates/AKPlan/plan_wall.html b/AKPlan/templates/AKPlan/plan_wall.html
index 413d8860..c2d47423 100644
--- a/AKPlan/templates/AKPlan/plan_wall.html
+++ b/AKPlan/templates/AKPlan/plan_wall.html
@@ -65,31 +65,47 @@
             plan.render();
 
             // Scroll to current time
-                if($(".fc-timeline-now-indicator-line").length) {
-                    $('.fc-scroller').scrollLeft($('.fc-timeline-now-indicator-line').position().left);
+            if($(".fc-timeline-now-indicator-line").length) {
+                $('.fc-scroller').scrollLeft($('.fc-timeline-now-indicator-line').position().left);
+            }
+
+            // == Auto Reload ==
+
+            // function from: https://stackoverflow.com/questions/5448545/how-to-retrieve-get-parameters-from-javascript/
+            function findGetParameter(parameterName) {
+                var result = null,
+                    tmp = [];
+                location.search
+                    .substr(1)
+                    .split("&")
+                    .forEach(function (item) {
+                    tmp = item.split("=");
+                    if (tmp[0] === parameterName) result = decodeURIComponent(tmp[1]);
+                    });
+                return result;
+            }
+
+            // Check whether an autoreload frequency was specified and treat it as full minutes
+            const autoreload_frequency = Math.ceil(findGetParameter("autoreload"));
+            const cbxAutoReload = $('#cbxAutoReload');
+
+            if(autoreload_frequency>0) {
+                window.setTimeout ( function() { window.location.reload();  }, autoreload_frequency * 60 * 1000);
+                console.log("Autoreload active");
+                cbxAutoReload.prop('checked', true);
+            }
+            else {
+                cbxAutoReload.prop('checked', false);
+            }
+
+            cbxAutoReload.change(function () {
+                let url = window.location.href.split('?')[0];
+                if(cbxAutoReload.prop('checked')) {
+                    url = url + "?autoreload=5";
                 }
+                window.location.replace(url);
+            });
         });
-
-        // function from: https://stackoverflow.com/questions/5448545/how-to-retrieve-get-parameters-from-javascript/
-        function findGetParameter(parameterName) {
-            var result = null,
-                tmp = [];
-            location.search
-                .substr(1)
-                .split("&")
-                .forEach(function (item) {
-                tmp = item.split("=");
-                if (tmp[0] === parameterName) result = decodeURIComponent(tmp[1]);
-                });
-            return result;
-        }
-
-        // Check whether an autoreload frequency was specified and treat it as minutes
-        var autoreload_frequency = findGetParameter("autoreload");
-        if(autoreload_frequency>0) {
-            window.setTimeout ( function() { window.location.reload(true);  }, autoreload_frequency * 60 * 1000);
-            console.log("Autoreload active");
-        }
     </script>
 </head>
 <body>
@@ -112,6 +128,9 @@
             <div id="planCalendar"></div>
         </div>
     </div>
+    <div style="position: absolute;bottom: 1vh;left:1vw;background-color: #FFFFFF;padding: 1vh;">
+        <input type="checkbox" name="autoreload" id="cbxAutoReload"> <label for="cbxAutoReload">{% trans "Reload page automatically?" %}</label>
+    </div>
 {% endtimezone %}
 
 </body>
-- 
GitLab