fix bug 823; fix bug 800
[osm/LW-UI.git] / static / src / userhandler / user_list.js
index 9a52249..0000ecc 100644 (file)
@@ -41,7 +41,7 @@ function openModalCreateUser(args) {
     $('#modal_new_user').modal('show');
 }
 
-function openModalEditUser(args) {
+function openModalEditUserCredentials(args) {
     var url = '/admin/users/' + args.user_id;
     var user_projects = args.projects ? args.projects.split(',') : [];
     $("#formEditUser").attr("action", url);
@@ -66,9 +66,81 @@ function openModalEditUser(args) {
     }
 
 
-    $('#modal_edit_user').modal('show');
+    $('#modal_edit_user_credentials').modal('show');
 }
 
+function openModalEditUserRoleMap(user_id) {
+    $("#formEditUserRoleMap").attr("action", '/admin/users/' + user_id);
+    var dialog = bootbox.dialog({
+        message: '<div class="text-center"><i class="fa fa-spin fa-spinner"></i> Loading...</div>',
+        closeButton: false
+    });
+    $.ajax({
+        url: '/admin/users/' + user_id + '/info',
+        dataType: "json",
+        contentType: "application/json;charset=utf-8",
+        success: function (result) {
+            dialog.modal('hide');
+            resetMapGroup(result);
+            $('#modal_edit_user_role_map').modal('show');
+        },
+        error: function (result) {
+            dialog.modal('hide');
+            bootbox.alert("An error occurred.");
+        }
+    });
+    
+}
+
+function resetMapGroup(args){
+    var $formGroup = $('#modal_edit_proj_role_map_body');
+    $formGroup.empty();
+    $formGroup.append('<div class="proj-role-map-group-head">' + 
+       
+        '<button type="button" class="btn btn-success btn-add btn-sm">+</button>'+
+        '</div></br>');
+    if(args['project_role_mappings'] && args['project_role_mappings'].length > 0) {
+        
+        for(i = 0; i < args['project_role_mappings'].length; ++i){
+            var mapping = args['project_role_mappings'][i];
+            
+            $formGroup.append('<div class="proj-role-map-group"> <div class="form-group">' + 
+            '<label  class="col-sm-2">Project* </label><div class="col-sm-3">'+
+            '<input name="map_project_name" value="'+mapping.project_name+'" class="form-control input-sm" required></div>'+
+            '<label class="col-sm-2">Role* </label>'+
+            '<div class="col-sm-3">'+
+            '<input name="map_role_name" value="'+mapping.role_name+'" class="form-control input-sm" required>'+
+            '</div>'+
+            '<button type="button" class="btn btn-danger btn-remove btn-sm">-</button></div></div>');
+        }
+    } 
+    
+        
+    
+    
+}
+
+var addMapGroup = function (event) {
+    event.preventDefault();
+
+    var $formGroup = $('#modal_edit_proj_role_map_body');
+    $formGroup.append('<div class="proj-role-map-group"> <div class="form-group">' + 
+            '<label  class="col-sm-2">Project* </label><div class="col-sm-3">'+
+            '<input name="map_project_name" class="form-control input-sm" required></div>'+
+            '<label class="col-sm-2">Role* </label>'+
+            '<div class="col-sm-3">'+
+            '<input name="map_role_name" class="form-control input-sm" required>'+
+            '</div>'+
+            '<button type="button" class="btn btn-danger btn-remove btn-sm">-</button></div></div>');
+
+};
+
+var removeMapGroup = function (event) {
+    event.preventDefault();
+    var $formGroup = $(this).closest('.proj-role-map-group');
+    $formGroup.remove();
+};
+
 function deleteUser(user_id, name) {
     var delete_url = '/admin/users/' + user_id + '/delete';
     bootbox.confirm("Are you sure want to delete " + name + "?", function (confirm) {
@@ -94,4 +166,67 @@ function deleteUser(user_id, name) {
         }
     })
 
-}
\ No newline at end of file
+}
+
+function validatePswOnCreate() {
+    
+    var confirm_password = document.getElementById("password2");
+    if($("#password").val() == $("#password2").val()){
+        $("#pwmatch").removeClass("glyphicon-remove");
+        $("#pwmatch").addClass("glyphicon-ok");
+        $("#pwmatch").css("color","#00A41E");
+        confirm_password.setCustomValidity("");
+    }else{
+        $("#pwmatch").removeClass("glyphicon-ok");
+        $("#pwmatch").addClass("glyphicon-remove");
+        $("#pwmatch").css("color","#FF0004");
+        confirm_password.setCustomValidity("Passwords Don't Match");
+    }
+}
+
+function validatePswOnEdit() {
+    
+    var confirm_password = document.getElementById("edit_password2");
+    if($("#edit_password").val() == $("#edit_password2").val()){
+        $("#pwmatch_edit").removeClass("glyphicon-remove");
+        $("#pwmatch_edit").addClass("glyphicon-ok");
+        $("#pwmatch_edit").css("color","#00A41E");
+        confirm_password.setCustomValidity("");
+    }else{
+        $("#pwmatch_edit").removeClass("glyphicon-ok");
+        $("#pwmatch_edit").addClass("glyphicon-remove");
+        $("#pwmatch_edit").css("color","#FF0004");
+        confirm_password.setCustomValidity("Passwords Don't Match");
+    }
+}
+
+$(document).ready(function () {
+    $("#formEditUserRoleMap").submit(function (event) {
+        event.preventDefault(); //prevent default action
+        var post_url = $(this).attr("action"); //get form action url
+        var request_method = $(this).attr("method"); //get form GET/POST method
+        var form_data = new FormData(this); //Encode form elements for submission
+        $.ajax({
+            url: post_url,
+            type: request_method,
+            data: form_data,
+            headers: {
+                "Accept": 'application/json'
+            },
+            contentType: false,
+            processData: false
+        }).done(function (response, textStatus, jqXHR) {
+            table.ajax.reload();
+            $('#modal_edit_user_role_map').modal('hide');
+        }).fail(function (result) {
+            var data = result.responseJSON;
+            var title = "Error " + (data.code ? data.code : 'unknown');
+            var message = data.detail ? data.detail : 'No detail available.';
+            bootbox.alert({
+                title: title,
+                message: message
+            });
+        });
+    });
+
+})
\ No newline at end of file