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 @@ - - -