From 04bfe108c3df00db2b6a1b3f79241a6ad66d3072 Mon Sep 17 00:00:00 2001
From: Patrick Jentsch
Date: Fri, 17 Jan 2020 10:42:02 +0100
Subject: [PATCH] Javascript cleanup
---
app/static/js/nopaque.js | 112 +++++++++++++++++++++++++++++++++
app/templates/base.html.j2 | 125 ++++---------------------------------
2 files changed, 123 insertions(+), 114 deletions(-)
create mode 100644 app/static/js/nopaque.js
diff --git a/app/static/js/nopaque.js b/app/static/js/nopaque.js
new file mode 100644
index 00000000..f06950ed
--- /dev/null
+++ b/app/static/js/nopaque.js
@@ -0,0 +1,112 @@
+var darkModeEnabled = false;
+var flashedMessages = [];
+var socket = io();
+
+var corpora;
+var corporaSubscribers = [];
+var jobs;
+var jobsSubscribers = [];
+
+var foreignCorpora;
+var foreignCorporaSubscribers = [];
+var foreignJobs;
+var foreignJobsSubscribers = [];
+
+
+function toast(message) {
+ var toast;
+ var toastActionElement;
+
+ toast = M.toast({"html": `${message}
+ `});
+ toastActionElement = toast.el.querySelector(`.toast-action[data-action="close"]`);
+ if (toastActionElement) {
+ toastActionElement.addEventListener("click", function() {
+ toast.dismiss();
+ });
+ }
+}
+
+
+socket.on('init-corpora', function(msg) {
+ corpora = JSON.parse(msg);
+ for (let subscriber of corporaSubscribers) {subscriber._init(corpora);}
+});
+
+
+socket.on('init-jobs', function(msg) {
+ jobs = JSON.parse(msg);
+ for (let subscriber of jobsSubscribers) {subscriber._init(jobs);}
+});
+
+
+socket.on('update-corpora', function(msg) {
+ var patch;
+
+ patch = JSON.parse(msg);
+ corpora = jsonpatch.apply_patch(corpora, patch);
+ for (let subscriber of corporaSubscribers) {subscriber._update(patch);}
+});
+
+
+socket.on('update-jobs', function(msg) {
+ var patch;
+
+ patch = JSON.parse(msg);
+ jobs = jsonpatch.apply_patch(jobs, patch);
+ for (let subscriber of jobsSubscribers) {subscriber._update(patch);}
+});
+
+
+socket.on('init-foreign-corpora', function(msg) {
+ foreignCorpora = JSON.parse(msg);
+ for (let subscriber of foreignCorporaSubscribers) {subscriber._init(foreignCorpora);}
+});
+
+
+socket.on('init-foreign-jobs', function(msg) {
+ foreignJobs = JSON.parse(msg);
+ for (let subscriber of foreignJobsSubscribers) {subscriber._init(foreignJobs);}
+});
+
+
+socket.on('update-foreign-corpora', function(msg) {
+ var patch;
+
+ patch = JSON.parse(msg);
+ foreignCorpora = jsonpatch.apply_patch(foreignCorpora, patch);
+ for (let subscriber of foreignCorporaSubscribers) {subscriber._update(patch);}
+});
+
+
+socket.on('update-foreign-jobs', function(msg) {
+ var patch;
+
+ patch = JSON.parse(msg);
+ foreignJobs = jsonpatch.apply_patch(foreignJobs, patch);
+ for (let subscriber of foreignJobsSubscribers) {subscriber._update(patch);}
+});
+
+
+document.addEventListener('DOMContentLoaded', function() {
+ M.AutoInit();
+ M.CharacterCounter.init(document.querySelectorAll(`input[data-length][type="text"]`));
+ M.Dropdown.init(document.getElementById("nav-notifications"),
+ {"alignment": "right", "constrainWidth": false, "coverTrigger": false});
+ M.Dropdown.init(document.getElementById("nav-account"),
+ {"alignment": "right", "constrainWidth": false, "coverTrigger": false});
+ for (let entry of document.querySelectorAll("#slide-out a:not(.subheader)")) {
+ if (entry.href === window.location.href) {
+ entry.parentNode.classList.add("active");
+ }
+ }
+ if (darkModeEnabled) {
+ DarkReader.enable({"brightness": 100, "contrast": 100, "sepia": 0});
+ }
+ for (flashedMessage of flashedMessages) {
+ toast(flashedMessage);
+ }
+ socket.emit('subscribe_user_ressources');
+});
diff --git a/app/templates/base.html.j2 b/app/templates/base.html.j2
index 17fa636a..b4a6b9e9 100644
--- a/app/templates/base.html.j2
+++ b/app/templates/base.html.j2
@@ -2,96 +2,32 @@
+
{% if title %}
nopaque – {{ title }}
{% else %}
nopaque
{% endif %}
-
-
-
-
+
+
+
+
+
-
-
-
@@ -168,45 +104,6 @@
-
-
-