blob: 5423aa1354be47a4cf70a6057ae7602ac4e25668 [file] [log] [blame]
lombardofr93770e22019-08-30 19:37:56 +02001<!--
2Copyright 2019 EveryUP srl
3
4Licensed under the Apache License, Version 2.0 (the "License");
5you may not use this file except in compliance with the License.
6You may obtain a copy of the License at
7
8 http://www.apache.org/licenses/LICENSE-2.0
9
10Unless required by applicable law or agreed to in writing, software
11distributed under the License is distributed on an BASIS,
12WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13See the License for the specific language governing permissions and
14limitations under the License.
15-->
16
lombardoffb37bca2018-05-03 16:20:04 +020017{% extends "base.html" %}
lombardofr480be482018-06-26 23:44:40 +020018{% load get %}
19{% load date_tag %}
lombardoffb37bca2018-05-03 16:20:04 +020020{% load staticfiles %}
21
22{% block head_block %}
lombardofr59989d02020-03-18 10:51:01 +010023 {{ block.super }}
24 <link rel="stylesheet" href="/static/node_modules/select2/dist/css/select2.min.css">
25 <link rel="stylesheet" href="/static/node_modules/datatables.net-bs/css/dataTables.bootstrap.min.css">
lombardoffb37bca2018-05-03 16:20:04 +020026
27{% endblock %}
28{% block title_header_big %}
29 {{ block.super }}
30{% endblock %}
31{% block left_sidebar %}
32
lombardofr835a0b72018-07-18 15:26:16 +020033{% include 'osm/osm_project_left_sidebar.html' %}
lombardoffb37bca2018-05-03 16:20:04 +020034
35{% endblock %}
36
37
38{% block breadcrumb_body %}
39 {{ block.super }}
lombardofre5a130a2019-07-15 09:17:59 +020040 {% if user.is_admin %}
41 <li><a href="{% url 'projects:projects_list' %}">Projects</a></li>
42 {% else%}
43 <li><a href="#">Projects</a></li>
44 {% endif %}
lombardoffb37bca2018-05-03 16:20:04 +020045{% endblock %}
46
47{% block content_body %}
48 {{ block.super }}
49 {% csrf_token %}
50<div class="row">
51<div class="col-md-12">
lombardoffb37bca2018-05-03 16:20:04 +020052 <div class="box">
53 <div class="box-header with-border">
54 <h3 class="box-title">Projects</h3>
55 <div class="box-tools">
lombardofr480be482018-06-26 23:44:40 +020056 <button type="button" class="btn btn-default" data-container="body"
57 data-toggle="tooltip" data-placement="top" title="New Project"
lombardofr59989d02020-03-18 10:51:01 +010058 onclick="javascript:showModalNewProject({'domains_list_url': '{% url "projects:domains_list" %}'})">
lombardofr480be482018-06-26 23:44:40 +020059 <i class="fa fa-plus"></i> New Project</button>
lombardoffb37bca2018-05-03 16:20:04 +020060 </div>
61 </div>
62 <div class="box-body">
63 <table id="projects_table" class="table table-bordered table-striped">
64 <thead>
65 <tr>
lombardoffb37bca2018-05-03 16:20:04 +020066 <th>Name</th>
lombardoffb37bca2018-05-03 16:20:04 +020067 <th>Modification Date</th>
68 <th>Creation Date</th>
lombardofrbced6e62018-07-18 17:02:16 +020069 <th>Actions</th>
lombardoffb37bca2018-05-03 16:20:04 +020070 </tr>
71 </thead>
72 <tbody>
lombardoffb37bca2018-05-03 16:20:04 +020073
lombardoffb37bca2018-05-03 16:20:04 +020074 </tbody>
75 </table>
76 </div>
77 </div>
78</div>
79
80</div>
lombardofrbced6e62018-07-18 17:02:16 +020081{% include "modal/project_new.html" %}
82{% include "modal/project_edit.html" %}
lombardoffb37bca2018-05-03 16:20:04 +020083{% endblock %}
84
85{% block resource_block %}
86 {{ block.super }}
lombardofre5a130a2019-07-15 09:17:59 +020087 <script src="/static/node_modules/datatables.net/js/jquery.dataTables.min.js"></script>
88 <script src="/static/node_modules/datatables.net-bs/js/dataTables.bootstrap.min.js"></script>
lombardofr59989d02020-03-18 10:51:01 +010089 <script src="/static/node_modules/select2/dist/js/select2.js"></script>
lombardofr45e33ee2018-07-18 19:22:37 +020090
91 <script>
lombardofr8da23132019-06-02 17:18:48 +020092 var table;
93 $(document).ready( function () {
94 table = $('#projects_table').DataTable({
lombardofr4908f382018-09-10 11:36:06 +020095 responsive: true,
96 "ajax": {
97 "url": "/projects/list",
98 "dataSrc": function (json) {
99 return json['projects'];
100 },
101 statusCode: {
102 401: function () {
103 console.log("no auth");
104 moveToLogin(window.location.pathname);
105 }
106 },
107 "error": function (hxr, error, thrown) {
108 console.log(hxr)
109 console.log(thrown)
110 console.log(error);
111 }
112
113 },
114 "columns": [
115 {
116 "render": function (data, type, row) {
lombardofr76483c32019-03-12 15:39:06 +0100117 return '<a href="/projects/'+row['name']+'/switch/" >'+row['name']+'</a>'
lombardofr4908f382018-09-10 11:36:06 +0200118 },
119 "targets": 0
120 },
121 {
122 "render": function (data, type, row) {
123 return moment.unix(row["_admin"]['modified']).format('YYYY-MM-DD hh:mm:ss a');
124 },
125 "targets": 1
126 },
127 {
128 "render": function (data, type, row) {
129 return moment.unix(row["_admin"]['created']).format('YYYY-MM-DD hh:mm:ss a');
130 },
131 "targets": 2
132 },
133 {
134 "render": function (data, type, row) {
135 return '<div class="btn-group">\n' +
136 ' <button type="button" class="btn btn-default dropdown-toggle"\n' +
137 ' data-toggle="dropdown" aria-expanded="false">Actions\n' +
138 ' <span class="fa fa-caret-down"></span></button>\n' +
139 ' <ul class="dropdown-menu">\n' +
140 ' <li><a href="#"\n' +
141 ' onclick="javascript:editProject(\''+ row['name']+'\')">\n' +
142 ' <i class="fa fa-edit"></i> Rename</a></li>\n' +
143 ' <li>\n' +
144 ' <a href="#" onclick="javascript:deleteProject(\''+ row['name']+'\')" style="color:red">\n' +
145 ' <i class="fa fa-trash" ></i> Delete</a>\n' +
146 ' </li>\n' +
147 ' </ul>\n' +
148 ' </div>';
149 },
lombardofr99a3d352019-01-06 19:41:34 +0100150 "targets": 3,
151 "orderable": false
lombardofr4908f382018-09-10 11:36:06 +0200152 }
153 ]
154 });
155
156 setInterval(function () {
157 table.ajax.reload();
158 }, 10000);
159 });
lombardofr45e33ee2018-07-18 19:22:37 +0200160 </script>
lombardofr480be482018-06-26 23:44:40 +0200161 <script>
lombardofr59989d02020-03-18 10:51:01 +0100162 function showModalNewProject(args){
163 select2_groups = $('#domain_name').select2({
164 placeholder: 'Select Domain',
165 width: '100%',
166 ajax: {
167 url: args.domains_list_url,
168 dataType: 'json',
169 processResults: function (data) {
170 domains_list = [];
171 if (data['domains']) {
172 for (d in data['domains']) {
173 var domain = data['domains'][d];
174 if( domain.endsWith(':ro') === false) {
175 domains_list.push({ id: domain, text: domain })
176 }
177
178 }
179 }
180
181 return {
182 results: domains_list
183 };
184 }
185 }
186 });
lombardofr480be482018-06-26 23:44:40 +0200187 $('#modal_new_project').modal('show');
188 }
lombardoffb37bca2018-05-03 16:20:04 +0200189
lombardofr4908f382018-09-10 11:36:06 +0200190 function editProject(project_id){
191 var url = "/projects/" + project_id+"/edit";
lombardofrbced6e62018-07-18 17:02:16 +0200192 $("#formEditProject").attr("action", url);
193 $('#modal_edit_project').modal('show');
194 }
195
lombardofr4908f382018-09-10 11:36:06 +0200196 function deleteProject(project_id) {
197 var url = "/projects/" + project_id+"/delete";
lombardofr8532b432019-04-30 17:28:22 +0200198 bootbox.confirm("Are you sure want to delete?", function (result) {
199 if (result) {
200 $.ajax({
201 url: url,
202 type: 'GET',
203 headers: {
204 "Accept": 'application/json'
205 },
206 contentType: false,
207 processData: false
208 }).done(function (response,textStatus, jqXHR) {
209 bootbox.alert({
210 title: "Result",
211 message: "Project deleted.",
212 callback: function () {
lombardofr8da23132019-06-02 17:18:48 +0200213 table.ajax.reload();
lombardofr8532b432019-04-30 17:28:22 +0200214 }
215 });
216 }).fail(function(result){
217 var data = result.responseJSON;
218 var title = "Error " + (data.code ? data.code: 'unknown');
219 var message = data.detail ? data.detail: 'No detail available.';
220 bootbox.alert({
221 title: title,
222 message: message
223 });
lombardofr480be482018-06-26 23:44:40 +0200224 });
lombardofr8532b432019-04-30 17:28:22 +0200225 }
226 })
lombardofr480be482018-06-26 23:44:40 +0200227 }
228
229 $(document).ready(function () {
lombardofr8532b432019-04-30 17:28:22 +0200230 $("#formNewProject").submit(function (event) {
231 event.preventDefault(); //prevent default action
232 var post_url = $(this).attr("action"); //get form action url
233 var request_method = $(this).attr("method"); //get form GET/POST method
234 var form_data = new FormData(this); //Encode form elements for submission
235 console.log(post_url);
236 $.ajax({
237 url: post_url,
238 type: request_method,
239 data: form_data,
240 headers: {
241 "Accept": 'application/json'
242 },
243 contentType: false,
244 processData: false
245 }).done(function (response,textStatus, jqXHR) {
lombardofr480be482018-06-26 23:44:40 +0200246 bootbox.alert({
lombardofr8532b432019-04-30 17:28:22 +0200247 title: "Result",
248 message: "Project created.",
249 callback: function () {
lombardofr8da23132019-06-02 17:18:48 +0200250 table.ajax.reload();
251 $('#modal_new_project').modal('hide');
252 }
253 });
254 }).fail(function(result){
255 var data = result.responseJSON;
256 var title = "Error " + (data.code ? data.code: 'unknown');
257 var message = data.detail ? data.detail: 'No detail available.';
258 bootbox.alert({
259 title: title,
260 message: message
261 });
262 });
263 });
264
265 $("#formEditProject").submit(function(event){
266 event.preventDefault(); //prevent default action
267 var post_url = $(this).attr("action"); //get form action url
268 var request_method = $(this).attr("method"); //get form GET/POST method
269 var form_data = new FormData(this); //Encode form elements for submission
270 console.log(post_url);
271 $.ajax({
272 url: post_url,
273 type: request_method,
274 data: form_data,
275 headers: {
276 "Accept": 'application/json'
277 },
278 contentType: false,
279 processData: false
280 }).done(function (response,textStatus, jqXHR) {
281 bootbox.alert({
282 title: "Result",
283 message: "Project updated.",
284 callback: function () {
285 table.ajax.reload();
286 $('#modal_edit_project').modal('hide');
lombardofr8532b432019-04-30 17:28:22 +0200287 }
288 });
289 }).fail(function(result){
290 var data = result.responseJSON;
291 var title = "Error " + (data.code ? data.code: 'unknown');
292 var message = data.detail ? data.detail: 'No detail available.';
293 bootbox.alert({
294 title: title,
295 message: message
296 });
297 });
lombardofr480be482018-06-26 23:44:40 +0200298 });
299 });
lombardofr480be482018-06-26 23:44:40 +0200300
301
302
303
304 </script>
lombardoffb37bca2018-05-03 16:20:04 +0200305
306
307{% endblock %}