From 2c359090eafa3cac579036cbea98b1039892ef3a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Benjamin=20H=C3=A4ttasch?=
 <benjamin.haettasch@fachschaft.informatik.tu-darmstadt.de>
Date: Thu, 6 May 2021 00:11:15 +0200
Subject: [PATCH] Fix several javascript issues

Make sure popper frontend dependency is always loaded before bootstrap script files load
This fixes #121 as well as issues in admin interface (scheduling and track management)
Make track management javascript more robust (this resolves an issue occurring when moving an AK with track back to list of AKs without tracks)
---
 .../admin/AKScheduling/manage_tracks.html     | 21 +++++++++++--------
 templates/admin/base_site.html                |  4 ++++
 templates/base.html                           |  5 ++++-
 3 files changed, 20 insertions(+), 10 deletions(-)

diff --git a/AKScheduling/templates/admin/AKScheduling/manage_tracks.html b/AKScheduling/templates/admin/AKScheduling/manage_tracks.html
index 754f0e90..f1a19e8c 100644
--- a/AKScheduling/templates/admin/AKScheduling/manage_tracks.html
+++ b/AKScheduling/templates/admin/AKScheduling/manage_tracks.html
@@ -13,7 +13,7 @@
 {% block extrahead %}
     {{ block.super }}
 
-    <script src="{% static "common/vendor/sortable/sortable.min.js" %}"></script>
+    <script src="{% static "common/vendor/sortable/Sortable.min.js" %}"></script>
     <script src="{% static "common/vendor/sortable/jquery-sortable.js" %}"></script>
 
     <style>
@@ -77,7 +77,9 @@
             }
 
             function update_ak_track(ak_id, track_id, container) {
-                mark_dirty(container);
+                if(container!==undefined)
+                    mark_dirty(container);
+
                 $.ajax({
                        url: "{% url "model:AK-list" event_slug=event.slug %}" + ak_id + "/",
                         type: 'PATCH',
@@ -85,7 +87,8 @@
                             track: track_id,
                         },
                         success: function (response) {
-                           mark_clean(container);
+                           if(container!==undefined)
+                               mark_clean(container);
                         },
                         error: function (response) {
                             alert("ERROR. Did not update " + changeInfo.event.title)
@@ -100,16 +103,16 @@
                 // Element is dropped into the list from another list
                 onAdd: function (/**Event*/evt) {
                     // same properties as onEnd
-                    console.log(evt.item);
                     var ak_id = evt.item.dataset["akId"];
-                    var container = $(evt.to).parents(".track-container");
-                    if(evt.to.dataset["sync"]==="true")
-                    {
-                        var track_id = evt.to.dataset["trackId"]
+
+                    // For lists that should stay in sync with server (all except 'without track')
+                    if(evt.to.dataset["sync"]==="true") {
+                        var container = $(evt.to).parents(".track-container");
+                        var track_id = evt.to.dataset["trackId"];
                         update_ak_track(ak_id, track_id, container);
                     }
                     else {
-                        update_ak_track(ak_id, "");
+                        update_ak_track(ak_id, "", undefined);
                     }
                 },
             };
diff --git a/templates/admin/base_site.html b/templates/admin/base_site.html
index bcb2a34f..2a994ce2 100644
--- a/templates/admin/base_site.html
+++ b/templates/admin/base_site.html
@@ -11,6 +11,10 @@
 {% endblock %}
 
 {% block extrahead %}
+    <!-- Load popper before bootstrap loads -->
+    <script src="{% static "common/vendor/popper/popper-1.14.7.min.js" %}"></script>
+
+    <!-- Load bootstrap, jquery and fontawesome-->
     {% bootstrap_css %}
     {% bootstrap_javascript jquery='full' %}
     {% fontawesome_5_static %}
diff --git a/templates/base.html b/templates/base.html
index 7971ddbf..d71471ed 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -12,7 +12,10 @@
 
     <title>{% block title %}AK Planning{% endblock %}</title>
 
-    {# Load Bootstrap CSS and JavaScript as well as font awesome #}
+    <!-- Load popper before bootstrap loads -->
+    <script src="{% static "common/vendor/popper/popper-1.14.7.min.js" %}"></script>
+
+    <!-- Load bootstrap, jquery and fontawesome-->
     {% bootstrap_css %}
     {% bootstrap_javascript jquery='slim' %}
     {% fontawesome_5_static %}
-- 
GitLab