fix: removed domain_name as required input when there is no domain costraints
[osm/LW-UI.git] / static / src / userhandler / user_list.js
index 196b878..b3d8250 100644 (file)
+/*
+   Copyright 2018 EveryUP srl
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an  BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+
 function openModalCreateUser(args) {
-    console.log(args)
-    // load projects list
-    select2_groups = $('#projects').select2({
-        placeholder: 'Select Projects',
-        width: '100%',
-        ajax: {
-            url: args.projects_list_url,
-            dataType: 'json',
-            processResults: function (data) {
-                projects = [];
-                if (data['projects']) {
-                    for (d in data['projects']) {
-                        var project = data['projects'][d];
-                        projects.push({id: project['_id'], text: project['name']})
+
+    var dialog = bootbox.dialog({
+        message: '<div class="text-center"><i class="fa fa-spin fa-spinner"></i> Loading...</div>',
+        closeButton: false
+    });
+    $.ajax({
+        url: args.domains_list_url,
+        dataType: "json",
+        contentType: "application/json;charset=utf-8",
+        success: function (result_domain) {
+            domains_list = [];
+            $('#domain_name').prop('disabled', false).trigger('change');
+            if (result_domain['domains']) {
+                for (d in result_domain['domains']) {
+                    var domain = result_domain['domains'][d];
+                    if (domain.endsWith(':ro') === false) {
+                        domains_list.push({ id: domain, text: domain })
                     }
-                }
 
-                return {
-                    results: projects
-                };
+                }
+            }
+            if (domains_list.length == 0) {
+                $('#domainNameGroupDiv').remove();
             }
+            dialog.modal('hide');
+            select2_groups = $('#projects').select2({
+                placeholder: 'Select Projects',
+                width: '100%',
+                ajax: {
+                    url: args.projects_list_url,
+                    dataType: 'json',
+                    processResults: function (data) {
+                        projects = [];
+                        if (data['projects']) {
+                            for (d in data['projects']) {
+                                var project = data['projects'][d];
+                                projects.push({ id: project['_id'], text: project['name'] })
+                            }
+                        }
+
+                        return {
+                            results: projects
+                        };
+                    }
+                }
+            });
+            select2_groups = $('#domain_name').select2({
+                placeholder: 'Select Domain',
+                width: '100%',
+                "language": {
+                    "noResults": function () {
+                        return "No domains in the platform";
+                    }
+                },
+                data: domains_list
+            });
+
+            $('#modal_new_user').modal('show');
+
+        },
+        error: function (result) {
+            dialog.modal('hide');
+            bootbox.alert("An error occurred.");
         }
     });
 
 
+}
+
+function openModalEditUserCredentials(args) {
+    var url = '/admin/users/' + args.user_id;
+    var user_projects = args.projects ? args.projects.split(',') : [];
+    $("#formEditUser").attr("action", url);
+    $("#projects_old").val(user_projects.toString());
+    $('#projects_edit').val(null).trigger('change');
+    $('#default_project_edit').val(null).trigger('change');
+    $('#edit_password').val('');
+    if (user_projects.length > 0) {
+        // Create a DOM Option and pre-select by default
+        var newOption = new Option(user_projects[0], user_projects[0], true, true);
+        // Append it to the select
+        $('#default_project_edit').append(newOption).trigger('change');
+
+        for (var d in user_projects) {
+            var project = user_projects[d];
+            // Create a DOM Option and pre-select by default
+            var newOption = new Option(project, project, true, true);
+            // Append it to the select
+            $('#projects_edit').append(newOption).trigger('change');
+        }
+
+    }
 
-    $('#modal_new_user').modal('show');
+
+    $('#modal_edit_user_credentials').modal('show');
 }
 
-function deleteUser(delete_url) {
-    bootbox.confirm("Are you sure want to delete?", function (confirm) {
+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) {
         if (confirm) {
             var dialog = bootbox.dialog({
                 message: '<div class="text-center"><i class="fa fa-spin fa-spinner"></i> Loading...</div>',
@@ -40,16 +197,84 @@ function deleteUser(delete_url) {
                 dataType: "json",
                 contentType: "application/json;charset=utf-8",
                 success: function (result) {
-                    //$('#modal_show_vim_body').empty();
                     dialog.modal('hide');
-                    location.reload();
+                    table.ajax.reload();
                 },
                 error: function (result) {
                     dialog.modal('hide');
-                    bootbox.alert("An error occurred.");
+                    var data = result.responseJSON;
+                    var title = "Error " + (data && data.code ? data.code : 'unknown');
+                    var message = data && data.detail ? data.detail : 'No detail available.';
+                    bootbox.alert({
+                        title: title,
+                        message: message
+                    });
                 }
             });
         }
     })
 
-}
\ 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