improved role management
[osm/LW-UI.git] / static / src / rolehandler / role_list.js
index fc19f52..5145a04 100644 (file)
 
 function openModalCreateRole(args) {
 
-    
-
     $('#modal_new_role').modal('show');
 }
 
 function openModalEditRole(args) {
     var url = '/admin/roles/' + args.role_id;
+    var url_update = '/admin/roles/' + args.role_id+'/update';
+    var dialog = bootbox.dialog({
+        message: '<div class="text-center"><i class="fa fa-spin fa-spinner"></i> Loading...</div>',
+        closeButton: false
+    });
+    $.ajax({
+        url: url,
+        type: 'GET',
+        headers: {
+            "Accept": 'application/json'
+        },
+        contentType: false,
+        processData: false
+    })
+    .done(function (response,textStatus, jqXHR) {
+        dialog.modal('hide');
+        $("#formEditRole").attr("action", url_update);
+        $('#modal_edit_role').modal('show');
+        $('#edit_rolename').val(response['name'])
+        $('#edit_definition').val(JSON.stringify(response['definition']))
+        if(response['root'] === true){
+            $("#edit_root").attr("checked", true);
+        }
+        else {
+            $("#edit_root").attr("checked", false);
+        }
+    }).fail(function(result){
+        dialog.modal('hide');
+        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
+        });
+    });
     
-    $("#formEditRole").attr("action", url);
-    
-
-    $('#modal_edit_role').modal('show');
 }
 
 function deleteRole(role_id, name) {
@@ -40,17 +70,31 @@ function deleteRole(role_id, name) {
             });
             $.ajax({
                 url: delete_url,
-                dataType: "json",
-                contentType: "application/json;charset=utf-8",
-                success: function (result) {
-                    //$('#modal_show_vim_body').empty();
-                    dialog.modal('hide');
-                    table.ajax.reload();
+                type: 'GET',
+                headers: {
+                    "Accept": 'application/json'
                 },
-                error: function (result) {
-                    dialog.modal('hide');
-                    bootbox.alert("An error occurred.");
-                }
+                contentType: false,
+                processData: false
+            })
+            .done(function (response,textStatus, jqXHR) {
+                bootbox.alert({
+                    title: "Result",
+                    message: "Role deleted.",
+                    callback: function () {
+                        dialog.modal('hide');
+                        table.ajax.reload();
+                    }
+                });
+            }).fail(function(result){
+                dialog.modal('hide');
+                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
+                });
             });
         }
     })