From c995b7aefb982338ad4bd82b57ccf9295363aff9 Mon Sep 17 00:00:00 2001 From: ulrich@undisclosed Date: Thu, 14 May 2020 06:51:12 +0000 Subject: [PATCH] In Arbeit: Rollen-Dialog --- web/ui2/js/app.js | 82 +++++++++++++++++++++++++++-------------- 1 files changed, 54 insertions(+), 28 deletions(-) diff --git a/web/ui2/js/app.js b/web/ui2/js/app.js index 38e6909..56ea01c 100644 --- a/web/ui2/js/app.js +++ b/web/ui2/js/app.js @@ -21,6 +21,8 @@ gewaehlterNutzer.classList.remove("nutzer-gewaehlt"); } target.classList.add("nutzer-gewaehlt"); + var nutzerId = target.innerHTML; + self.rollen_dialog_zeigen(nutzerId); }; this.nutzer_speichern = function() { @@ -75,13 +77,42 @@ self.appMenu.toggle(); // menue oeffnen/schliessen }; + this.rollen_dialog_zeigen = function(nutzerId) { + var m = 'getUserRoleNames'; + var u = '../svc/' + m + '?p=' + nutzerId; + self.http_get(u, function (antwort) { + self.vorlagen.html_erzeugen( + 'data/tpl/nutzer-rollen-dlg.tpl', + JSON.parse(antwort), + function (html) { + document.querySelector("#nutzer").innerHTML = html; + document.querySelector("#nutzer-id").textContent = nutzerId; + var m = 'getRoleNamesGranted'; + var u = '../svc/' + m; + self.http_get(u, function (antwort2) { + self.vorlagen.html_erzeugen( + 'data/tpl/alle-rollen.tpl', + JSON.parse(antwort2), + function (html) { + document.querySelector(".alle-rollen-behaelter").innerHTML = html; + }); + }); + }); + }); + }; + this.info_dialog_zeigen = function () { - self.dialog_laden_und_zeigen('data/tpl/dlg-info.tpl', ''); + self.dialog_zeigen('data/tpl/dlg-info.tpl', ''); self.menue_umschalten(); }; this.nutzer_neu_dialog_zeigen = function () { - self.dialog_laden_und_zeigen('data/tpl/dlg-nutzer-neu.tpl', ''); + self.dialog_zeigen('data/tpl/dlg-nutzer-neu.tpl', '', function(){ + var btn = document.getElementById('nutzer-speichern-btn'); + if(btn !== null) { + btn.addEventListener('click', self.nutzer_speichern); + } + }); self.menue_umschalten(); }; @@ -94,7 +125,7 @@ ostDiv.classList.add('ost-open'); ostDiv.style.flexBasis = '6em'; } - self.menue_umschalten(); + //self.menue_umschalten(); }; this.fusszeile_umschalten = function () { @@ -131,26 +162,18 @@ /* Dialog-Funktionen */ /* - Einen Dialog aus Vorlagen erzeugen - - vurl - URL zur Dialogvorlage - msgTpl - URL mit einer Vorlage eines Mitteilungstextes (optional) + * Einen Dialog erzeugen + * + * Die Vorlage, auf die im Parameter vurl verwiesen wird, wird geladen, + * wenn sie noch nicht benutzt wurde + * + * @param {String} vurl - der URL mit der Dialogvorlage + * @param {JSON-Objekt} inhalt - was im Dialog an dynamischem Inhalt angezeigt werden soll + * @param {function} renderCallback - + * Funktion, die aufgerufen wird nachdem der Dialog gerendert wurde + * @returns {undefined} */ - this.dialog_laden_und_zeigen = function (vurl, msgTpl) { - if (msgTpl !== '') { - fetch(msgTpl) - .then(data => { - // Handle data - self.dialog_zeigen(vurl, data); - }).catch(error => { - // Handle error - }); - } else { - self.dialog_zeigen(vurl, ''); - } - }; - - this.dialog_zeigen = function (vurl, inhalt) { + this.dialog_zeigen = function (vurl, inhalt, renderCallback) { var dlg = document.querySelector(".dialog"); self.vorlagen.html_erzeugen( vurl, @@ -159,17 +182,18 @@ dlg.style.flexBasis = '14em'; setTimeout(function () { dlg.innerHTML = html; - document.querySelector('.close-btn').addEventListener('click', self.dialog_schliessen); - var btn = document.getElementById('nutzer-speichern-btn'); - if(btn !== null) { - btn.addEventListener('click', self.nutzer_speichern); - } + document.querySelector('.close-btn').addEventListener( + 'click', self.dialog_schliessen); + if(renderCallback !== undefined) { + renderCallback(); + } }, 300); }); }; this.dialog_schliessen = function () { - document.querySelector('.close-btn').removeEventListener('click', self.dialog_schliessen); + document.querySelector('.close-btn').removeEventListener( + 'click', self.dialog_schliessen); var dlg = document.querySelector('.dialog'); dlg.innerHTML = ''; dlg.style.flexBasis = '0em'; @@ -203,6 +227,8 @@ var url = '../svc/createUser'; self.http_post(url, u, function (antwort) { self.get_user_list(); + document.getElementById('nutzer-speichern-btn').removeEventListener( + 'click', self.nutzer_speichern); self.dialog_schliessen(); }); }; -- Gitblit v1.9.3