improved role management
[osm/LW-UI.git] / rolehandler / templates / role_list.html
1 {% extends "base.html" %}
2 {% load get %}
3 {% load date_tag %}
4 {% load staticfiles %}
5
6
7 {% block head_block %}
8 {{ block.super }}
9 <link rel="stylesheet" href="/static/bower_components/select2/dist/css/select2.min.css">
10 <link rel="stylesheet" href="/static/bower_components/datatables.net-bs/css/dataTables.bootstrap.min.css">
11 {% endblock %}
12 {% block title_header_big %}
13 {{ block.super }}
14 {% endblock %}
15 {% block left_sidebar %}
16 {% include 'osm/osm_project_left_sidebar.html' %}
17 {% endblock %}
18
19
20 {% block breadcrumb_body %}
21 {{ block.super }}
22 <li><a href="#">Roles</a></li>
23 {% endblock %}
24
25 {% block content_body %}
26 {{ block.super }}
27 {% include 'modal/role_create.html' %}
28 {% include 'modal/role_edit.html' %}
29
30 {% csrf_token %}
31 <div class="row">
32 <div class="col-md-12">
33
34 <div class="box">
35 <div class="box-header with-border">
36 <h3 class="box-title">Roles</h3>
37 <div class="box-tools">
38 <button type="button" class="btn btn-default" data-container="body"
39 onclick="javascript:openModalCreateRole()"
40 data-toggle="tooltip" data-placement="top" title="New role">
41
42 <i class="fa fa-plus"></i> Create role
43 </button>
44
45 </div>
46 </div>
47 <div class="box-body">
48 <table id="roles_table" class="table table-bordered table-striped">
49 <thead>
50 <tr>
51 <th>Name</th>
52 <th>Identifier</th>
53 <th>Modified</th>
54 <th>Created</th>
55 <th>Actions</th>
56 </tr>
57 </thead>
58 <tbody>
59 </tbody>
60 </table>
61 </div>
62 </div>
63 </div>
64
65 </div>
66 {% endblock %}
67
68 {% block resource_block %}
69 {{ block.super }}
70 <script src="/static/bower_components/datatables.net/js/jquery.dataTables.min.js"></script>
71 <script src="/static/bower_components/datatables.net-bs/js/dataTables.bootstrap.min.js"></script>
72 <script src="/static/bower_components/select2/dist/js/select2.js"></script>
73 <script src="/static/src/rolehandler/role_list.js"></script>
74 <script>
75 var table;
76
77 $(document).ready(function () {
78 table = $('#roles_table').DataTable({
79 responsive: true,
80 "ajax": {
81 "url": "/admin/roles/list",
82 "dataSrc": function (json) {
83 return json['roles'];
84 },
85 statusCode: {
86 401: function () {
87 console.log("no auth");
88 moveToLogin(window.location.pathname);
89 }
90 },
91 "error": function (hxr, error, thrown) {
92 console.log(hxr)
93 console.log(thrown)
94 console.log(error);
95 }
96
97 },
98 "columns": [
99 {
100 "render": function (data, type, row) {
101 return row["name"];
102 },
103 "targets": 0
104 },
105
106 {
107 "render": function (data, type, row) {
108 return row['_id'];
109 },
110 "targets": 1
111 },
112 {
113 "render": function (data, type, row) {
114 return moment.unix(row["_admin"]['modified']).format('YYYY-MM-DD hh:mm:ss a');
115 },
116 "targets": 2
117 },
118 {
119 "render": function (data, type, row) {
120 return moment.unix(row["_admin"]['created']).format('YYYY-MM-DD hh:mm:ss a');
121 },
122 "targets": 3
123 },
124 {
125 "render": function (data, type, row) {
126 return '<div class="btn-group">' +
127 '<button type="button" class="btn btn-default dropdown-toggle"' +
128 'data-toggle="dropdown" aria-expanded="false">Actions ' +
129 '<span class="fa fa-caret-down"></span></button> ' +
130 '<ul class="dropdown-menu">' +
131 '<li> <a href="#" onclick="javascript:openModalEditRole({role_id:\'' + row['_id'] + '\'})">' +
132 '<i class="fa fa-edit"></i> Edit</a></li>' +
133 '<li> <a href="#" onclick="javascript:deleteRole(\'' + row['_id'] + '\', \'' + row['name'] + '\')"' +
134 'style="color:red"><i class="fa fa-trash"></i> Delete</a></li> </ul></div>';
135 },
136 "targets": 4,
137 "orderable": false
138 }
139 ]
140 });
141
142 setInterval(function () {
143 table.ajax.reload();
144 }, 10000);
145
146 $("#formCreateRole").submit(function (event) {
147 event.preventDefault(); //prevent default action
148 var post_url = $(this).attr("action"); //get form action url
149 var request_method = $(this).attr("method");
150 var form_data = new FormData(this); //Encode form elements for submission
151
152 $.ajax({
153 url: post_url,
154 type: request_method,
155 data: form_data,
156 headers: {
157 "Accept": 'application/json'
158 },
159 contentType: false,
160 processData: false
161 }).done(function (response, textStatus, jqXHR) {
162 $('#modal_new_role').modal('hide');
163 table.ajax.reload();
164 bootbox.alert({
165 title: "Result",
166 message: "role successfully created."
167 });
168
169 }).fail(function (result) {
170 var data = result.responseJSON;
171 var title = "Error " + (data.code ? data.code : 'unknown');
172 var message = data.detail ? data.detail : 'No detail available.';
173 bootbox.alert({
174 title: title,
175 message: message
176 });
177 });
178 });
179
180 $("#formEditRole").submit(function (event) {
181 event.preventDefault(); //prevent default action
182 var post_url = $(this).attr("action"); //get form action url
183 var request_method = $(this).attr("method");
184 var form_data = new FormData(this); //Encode form elements for submission
185
186 $.ajax({
187 url: post_url,
188 type: request_method,
189 data: form_data,
190 headers: {
191 "Accept": 'application/json'
192 },
193 contentType: false,
194 processData: false
195 }).done(function (response, textStatus, jqXHR) {
196 $('#modal_edit_role').modal('hide');
197 table.ajax.reload();
198 bootbox.alert({
199 title: "Result",
200 message: "Role successfully modified."
201 });
202
203 }).fail(function (result) {
204 var data = result.responseJSON;
205 var title = "Error " + (data.code ? data.code : 'unknown');
206 var message = data.detail ? data.detail : 'No detail available.';
207 bootbox.alert({
208 title: title,
209 message: message
210 });
211 });
212 });
213
214 });
215 </script>
216
217
218 {% endblock %}
219
220 {% block footer %}
221 {% include "footer.html" %}
222 {% endblock %}