From 4f4b2940ce5816cf3daa226507029e17280b9a9e Mon Sep 17 00:00:00 2001
From: ulrich <not disclosed>
Date: Tue, 27 Dec 2016 13:48:25 +0000
Subject: [PATCH] Wechsel zwischen Benutzer-Anzeige und Benutzer-Formular sowie  Transaktion fuer das Loeschen von Benutzer-Rollen und Benutzer

---
 web/ui/ui.js |  308 +++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 284 insertions(+), 24 deletions(-)

diff --git a/web/ui/ui.js b/web/ui/ui.js
index d24b7a8..eb0eb23 100644
--- a/web/ui/ui.js
+++ b/web/ui/ui.js
@@ -1,11 +1,24 @@
 
 function um_init() {
+  $('#user-form').hide();
+  $('#nav').hide();
+  $('#role-form').hide();
+  $('#user-role-form').hide();
   $('.user-save-btn').click(um_user_save);
   $('#nutzerliste').click(um_user_list_click);
   $('#nutzerLoeschen').click(um_del_user);
   $('#nutzerNeu').click(um_new_user);
   $('#nutzerLoeschen').prop( "disabled", true );
-  
+  $('#nutzerRolleEntziehen').prop( "disabled", true );
+  $('#rolleErteilen').prop( "disabled", true );
+  $('#rolleErteilen').click(um_grant_role);
+  $('#nutzerRolleEntziehen').click(um_revoke_role);
+  $('#neueRolle').click(um_new_role);
+  $('#rollen').click(um_role_list_click);
+  $('#nutzerrollen').click(um_user_role_list_click);
+  um_clear_user_form();
+  um_apicall_get_user_list();
+  um_apicall_get_granted_roles();
 }
 
 /* ----- user functions ------ */
@@ -16,27 +29,100 @@
   if(user.pw != kww) {
     alert('Kennworte stimmen nicht ueberein.');
   } else {
-    alert('user-save ' + user.id);
-    um_apicall(self.serialisieren(user));
+    um_apicall_create_user(self.serialisieren(user));
   }
 }
 
-function um_del_user(user_name) {
-  alert('delete user ' + user_name);
+function um_del_user() {
+  var userId = um_get_first_selected_user_id();
+  if(userId !== 'none') {
+    var antwort = confirm("Wollen Sie den Nutzer " + userId + " loeschen?"); 
+    if (antwort === true) {
+      var user = new User(userId, '-', '-', '-', '-');
+      um_apicall_del_user(self.serialisieren(user));
+    }  
+  }
 }
 
-function um_new_user() {
-  alert('show form to enter new user');
+/* ----------- role functions ------------ */
+
+function um_new_role() {
+  var roleIsNew = true;
+  var userId = um_get_first_selected_user_id();
+  if(userId === 'none') {
+    alert('Es wurde kein Benutzer ausgewaehlt.');
+  } else {
+    var answer = prompt("Name der Rolle", "");
+    if (answer === null) {
+      alert("Es wurde Cancel betaetigt.");
+    } else if(answer !== "") {
+      um_apicall_grant_role(userId, answer, roleIsNew);
+    } else {
+      alert("OK betaetigt, aber Keine Rolle angegeben.");
+    }
+  }
+}
+
+function um_grant_role() {
+  var roleIsNew = false;
+  var userId = um_get_first_selected_user_id();
+  var roleId = um_get_first_selected_role_id();
+  if(roleId !== 'none' && userId !== 'none') {
+    um_apicall_grant_role(userId, roleId, roleIsNew);
+  }
+}
+
+function um_revoke_role() {
+  var userId = um_get_first_selected_user_id();
+  var roleId = um_get_first_selected_userrole_id();
+  if(roleId !== 'none' && userId !== 'none') {
+    um_apicall_revoke_role(userId, roleId);
+  }
 }
 
 /* ----------- ui interaction ------------ */
 
 function um_user_list_click() {
-  //var user_name = 'noch aus liste ermitteln..';
-  //alert('user list click, user: ' + user_name);
-  um_get_user_list();
+  $('#nav-back-btn').click(um_back_from_roles);
+  $('#nutzerLoeschen').prop( "disabled", false );
+  $('#rollen :selected').prop("selected", false);
+  var userId = um_get_first_selected_user_id();
+  $('#userid').html(userId);
+  um_apicall_get_user_roles(userId);
+  $('#user-list-form').hide();
+  $('#nav').show();
+  $('#role-form').show();
+  $('#user-role-form').show();
 }
 
+function um_new_user() {
+  $('#nav-back-btn').click(um_back_from_new_user);
+  $('#user-list-form').hide();
+  $('#user-form').show();
+  $('#nav').show();
+}
+
+function um_role_list_click() {
+  $('#rolleErteilen').prop( "disabled", false );
+}
+
+function um_user_role_list_click() {
+  $('#nutzerRolleEntziehen').prop( "disabled", false );
+}
+
+function um_back_from_roles() {
+  $('#user-list-form').show();
+  $('#nav').hide();
+  $('#role-form').hide();
+  $('#user-role-form').hide();
+}
+
+function um_back_from_new_user() {
+  $('#user-list-form').show();
+  $('#nav').hide();
+  $('#user-form').hide();
+  um_clear_user_form();
+}
 
 /* ------- ui i/o ------ */
 
@@ -48,33 +134,96 @@
 }
 
 function um_show_user_list(resp) {
+  $("#nutzerliste").empty();
   var users = resp.List[0];
-  for(var i = 0; i < users.List.length; i++) {
+  for(var i = 1; i < users.List.length; i++) {
     var user = users.List[i];
     $("#nutzerliste").append('<option value=' + user.String + '>' + user.String + '</option>');
   }
-  //var user1 = users.List[1];
-  //var username = user1.String;
-  //alert(username);
-  //$("#nutzerliste").append('<option value=' + UpdateItem + '>' + UpdateItem + '</option>');
+  $('#nutzerLoeschen').prop( "disabled", true );
+}
+
+function um_clear_user_form() {
+  $('#anmeldename').val('');
+  $('#kennwort').val('');
+  $('#kennwortw').val('');
+}
+
+function um_get_first_selected_user_id() {
+  var userId = 'none';
+  var userIds = [];
+  $('#nutzerliste :selected').each(function(i, selected){
+    userIds[i] = $(selected).text();
+  });
+  if(userIds.length > 0) {
+    userId = userIds[0];
+  }
+  return userId;
+}
+
+function um_get_first_selected_role_id() {
+  var roleId = 'none';
+  var roleIds = [];
+  $('#rollen :selected').each(function(i, selected){
+    roleIds[i] = $(selected).text();
+  });
+  if(roleIds.length > 0) {
+    roleId = roleIds[0];
+  }
+  return roleId;
+}
+
+function um_get_first_selected_userrole_id() {
+  var roleId = 'none';
+  var roleIds = [];
+  $('#nutzerrollen :selected').each(function(i, selected){
+    roleIds[i] = $(selected).text();
+  });
+  if(roleIds.length > 0) {
+    roleId = roleIds[0];
+  }
+  return roleId;
+}
+
+// {"List":[{"List":[{"String":"ROLE_NAME"},{"String":"testrolle1"}]}]}
+function um_show_user_role_list(resp) {
+  $("#nutzerrollen").empty();
+  var rollen = resp.List[0];
+  for(var i = 1; i < rollen.List.length; i++) {
+    var rolle = rollen.List[i];
+    $("#nutzerrollen").append('<option value=' + rolle.String + '>' + rolle.String + '</option>');
+  }
+  $('#nutzerRolleEntziehen').prop( "disabled", true );
+}
+
+function um_show_role_list(resp) {
+  $("#rollen").empty();
+  var rollen = resp.List[0];
+  for(var i = 1; i < rollen.List.length; i++) {
+    var rolle = rollen.List[i];
+    $("#rollen").append('<option value=' + rolle.String + '>' + rolle.String + '</option>');
+  }
+  //$('#neueRolle').prop( "disabled", true );
+  $('#rolleErteilen').prop( "disabled", true );
 }
 
 /* ---- api calls ----- */
 
-function um_apicall(obj) {
-  var c = 'de.uhilger.um.api.UserMgr';
+function um_apicall_create_user(user) {
   var m = 'createUser';
-  var u = '../api?c=' + c + '&m=' + m;
+  var u = '../svc/' + m;
   $.ajax({
     url: u,
     data: {
-      p: obj
+      p: user
     },
     type: "POST",
     dataType : "html",
-    //success: function( resp ) {
+    success: function( resp ) {
       //$('#fehler').html('Antwort: ' + resp);
-    //},
+      um_apicall_get_user_list();
+      um_back_from_new_user();
+    },
     error: function( xhr, status, errorThrown ) {
       $('#fehler').html("Error: " + errorThrown + " Status: " + status);
     },
@@ -84,8 +233,29 @@
   });      
 }
 
-function um_get_user_list() {
-  var c = 'de.uhilger.um.api.UserMgr';
+function um_apicall_del_user(user) {
+  var m = 'deleteUser';
+  var u = '../svc/' + m;
+  $.ajax({
+    url: u,
+    data: {
+      p: user
+    },
+    type: "POST",
+    dataType : "html",
+    success: function( resp ) {
+      um_apicall_get_user_list();
+    },
+    error: function( xhr, status, errorThrown ) {
+      $('#fehler').html("Error: " + errorThrown + " Status: " + status);
+    },
+    complete: function( xhr, status ) {
+      //alert( "The request is complete!" );
+    }
+  });      
+}
+
+function um_apicall_get_user_list() {
   var m = 'getUserNameList';
   var u = '../svc/' + m;
   $.ajax({
@@ -93,7 +263,6 @@
     type: "GET",
     dataType : "json",
     success: function( resp ) {
-      //$('#fehler').html('Antwort: ' + resp);
       um_show_user_list(resp);
     },
     error: function( xhr, status, errorThrown ) {
@@ -105,6 +274,97 @@
   });      
 }
 
+// public UserRole grantRole(String userId, String roleName) 
+function um_apicall_grant_role(userId, roleName, isNewRole) {
+  var m = 'grantRole';
+  var u = '../svc/' + m;
+  $.ajax({
+    url: u,
+    data: {
+      p1: userId,
+      p2: roleName
+    },
+    type: "POST",
+    dataType : "html",
+    success: function( resp ) {
+      um_apicall_get_user_roles(userId);
+      if(isNewRole) {
+        um_apicall_get_granted_roles();
+      }
+    },
+    error: function( xhr, status, errorThrown ) {
+      $('#fehler').html("Error: " + errorThrown + " Status: " + status);
+    },
+    complete: function( xhr, status ) {
+      //alert( "The request is complete!" );
+    }
+  });
+}
+
+function um_apicall_revoke_role(userId, roleName) {
+  var m = 'revokeRole';
+  var u = '../svc/' + m;
+  $.ajax({
+    url: u,
+    data: {
+      p1: userId,
+      p2: roleName
+    },
+    type: "POST",
+    dataType : "html",
+    success: function( resp ) {
+      um_apicall_get_user_roles(userId);
+    },
+    error: function( xhr, status, errorThrown ) {
+      $('#fehler').html("Error: " + errorThrown + " Status: " + status);
+    },
+    complete: function( xhr, status ) {
+      //alert( "The request is complete!" );
+    }
+  });
+}
+
+//public List getUserRoleNames(String userId)
+function um_apicall_get_user_roles(userId) {
+  var m = 'getUserRoleNames';
+  var u = '../svc/' + m + '?p=' + userId;
+  $.ajax({
+    url: u,
+    type: "GET",
+    dataType : "json",
+    success: function( resp ) {
+      // Antwort in Liste anzeigen
+      um_show_user_role_list(resp);
+    },
+    error: function( xhr, status, errorThrown ) {
+      $('#fehler').html("Error: " + errorThrown + " Status: " + status);
+    },
+    complete: function( xhr, status ) {
+      //alert( "The request is complete!" );
+    }
+  });      
+}
+
+function um_apicall_get_granted_roles() {
+  var m = 'getRoleNamesGranted';
+  var u = '../svc/' + m;
+  $.ajax({
+    url: u,
+    type: "GET",
+    dataType : "json",
+    success: function( resp ) {
+      // Antwort in Liste anzeigen
+      um_show_role_list(resp);
+    },
+    error: function( xhr, status, errorThrown ) {
+      $('#fehler').html("Error: " + errorThrown + " Status: " + status);
+    },
+    complete: function( xhr, status ) {
+      //alert( "The request is complete!" );
+    }
+  });      
+}
+
 /* ----- Hilfsfunktionen ----- */
 
 function serialisieren(obj) {

--
Gitblit v1.9.3