Spinner included globally in base.html - used in validate requests
[unfold.git] / portal / templates / management-tab-requests.html
1
2 <script type="text/javascript">
3         $(document).ready(function() {
4                 $("li#nav-request").addClass("active");
5                 $('table.requests').dataTable({
6                     "sDom": "frtiS",
7             "bScrollCollapse": true,
8             "bStateSave": true,
9             "bPaginate": false,
10             "bLengthChange": false,
11             "bFilter": false,
12             "bSort": true,
13             "bInfo": false,
14             "bAutoWidth": true,
15             "bAutoHeight": false,
16                 });
17         });
18         function on_click_event() {
19                 var ids = []; 
20                 $('.portal__validate__checkbox').each(function(i, el) {
21                         if ($(el).prop('checked')) {
22                                 // portal__validate__checkbox__slice__2
23                                 var id_array = $(el).attr('id').split('__');
24                                 // push(slice__2)
25                                 ids.push(id_array[3] + '__' + id_array[4]);
26                         }
27                 });
28                 if (ids.length > 0) {
29                         var id_str = ids.join('/');
30
31                         // XXX spinner
32
33                         $.getJSON('/portal/validate_action/' + id_str,
34                                 function(status) {
35                                         $.each(status, function(request_type__id, request_status) {
36                                                 // request_status: NAME -> dict (status, description)
37                                                 var status_str = '';
38                                                 $.each(request_status, function(name, result) {
39                                                         if (status_str != '')
40                                                                 status_str += ' -- ';
41
42                                                         if (result.status) {
43                                                                 status_str += '<font color="green">OK</font>';
44                                                                 $('#portal__validate__checkbox__' + request_type__id).hide();
45                                                         } else {
46                                                                 status_str += '<font color="red">ERROR: ' + result.description + '</font>';
47                                                         }
48                                                 });
49                                                 $('#portal__status__' + request_type__id).html(status_str);
50
51
52                                         });
53                                 }
54                         );
55                 }
56         }
57         function on_click_reject() {
58                 var ids = []; 
59                 $('.portal__validate__checkbox').each(function(i, el) {
60                         if ($(el).prop('checked')) {
61                                 // portal__validate__checkbox__slice__2
62                                 var id_array = $(el).attr('id').split('__');
63                                 // push(slice__2)
64                                 ids.push(id_array[3] + '__' + id_array[4]);
65                         }
66                 });
67                 if (ids.length > 0) {
68                         var id_str = ids.join('/');
69
70                         // XXX spinner
71
72                         $.getJSON('/portal/reject_action/' + id_str,
73                                 function(status) {
74                                         $.each(status, function(request_type__id, request_status) {
75                                                 // request_status: NAME -> dict (status, description)
76                                                 var status_str = '';
77                                                 $.each(request_status, function(name, result) {
78                                                         if (status_str != '')
79                                                                 status_str += ' -- ';
80
81                                                         if (result.status) {
82                                                                 status_str += '<font color="green">Rejected</font>';
83                                                                 $('#portal__validate__checkbox__' + request_type__id).hide();
84                                                         } else {
85                                                                 status_str += '<font color="red">ERROR: ' + result.description + '</font>';
86                                                         }
87                                                 });
88                                                 $('#portal__status__' + request_type__id).html(status_str);
89
90
91                                         });
92                                 }
93                         );
94                 }
95         }
96 </script>
97
98 <div class="container-fluid">
99 <div class="col-md-12">
100         <h2>From your authorities</h2>
101 </div>
102 {% if my_authorities %}
103 <div class="col-md-12">
104         <table class="table requests">
105             <thead>
106         <tr>
107             <th>ID</th>
108             <th></th>
109             <th>Type</th>
110             <th>Authority</th>
111             <th>Info</th>
112             <th>Date</th>
113             <th>Status</th>
114         </tr>
115         </thead>
116         <tbody>
117         {% for authority, requests in my_authorities.items %}
118         
119         {% for request in requests %}
120         
121         {% if request.type == 'user' %}
122         <tr>
123         {% elif request.type == 'slice' %}
124         <tr class="info">
125         {% else %}
126         <tr class="active">
127         {% endif %}
128             <td><span class="gray small">{{ request.id }}</span></td>
129             <td>
130             {% if request.allowed == 'allowed' %}
131             <input class='portal__validate__checkbox' id='portal__validate__checkbox__{{request.type}}__{{request.id}}' type='checkbox'/>
132             {% else %}
133                 {% if request.allowed == 'expired' %}expired{% else %}denied{% endif %}
134             {% endif %}
135             </td>
136             <td><span class="type">{{ request.type }}</span></td>
137             <td><i>{{authority}}{{request.site_authority}}</i></td>
138                 <td>
139             {% if request.type == 'user' %}
140                 <b>{{request.first_name}} {{request.last_name}}</b> &lt;<a href="mailto:{{request.email}}">{{request.email}}</a>&gt;
141             {% elif request.type == 'slice' %}
142             <b>{{request.slice_name}}</b> -- Number of nodes: {{request.number_of_nodes}} -- Type of nodes: {{request.type_of_nodes}} -- Purpose: {{request.purpose}}
143             {% elif request.type == 'project' %}
144             <b>{{request.project_name}}</b>  -- {{ request.user_hrn }} -- Purpose: {{request.purpose}}
145             {% elif request.type == 'join' %}
146             <b>{{request.user_hrn}}</b> --  to join {{ request.authority_hrn }}
147             {% else %}
148             <b>{{request.site_name}}</b> ({{request.site_authority}}) -- {{request.address_city}}, {{request.address_country}}
149             {% endif %}
150                 </td>
151                 <td>{{ request.timestamp }}</td>
152                 
153                 <td><span id='portal__status__{{request.type}}__{{request.id}}'></span></td>
154     
155         <!--<div class='portal_validate_request {{request.type}} {% if forloop.counter|divisibleby:2 %}even{% else %}odd{% endif %}'> -->
156           </tr>
157     
158         {% endfor %}
159         
160         {% endfor %}
161            </tbody>
162     </table>
163    </div>
164 {% else %}
165         <div class="col-md-12">
166                 <i>There is no pending request waiting for validation.</i>
167         </div>
168 {% endif %}
169 </div>
170
171 {% if sub_authorities %}
172 <br />
173 <div class="col-md-12">
174         <h2>From your sub-authorities</h2>
175 </div>
176
177         {% for authority, requests in sub_authorities.items %}
178         <div class="col-md-12">
179         <h3>{{authority}}</h3>
180             <table class="table">
181               <th>
182                 <td>Type</td>
183                 <td>Id</td>
184                 <td>Details</td>
185                 <td>Timestamp</td>
186                 <td>Status</td>
187               </th>
188             {% for request in requests %}
189                   <tr>
190                         <td>
191                         {% if request.allowed == 'allowed' %}
192                         <input class='portal__validate__checkbox' id='portal__validate__checkbox__{{request.type}}__{{request.id}}' type='checkbox'/>
193                         {% else %}
194                                 {% if request.allowed == 'expired' %}
195                                         expired
196                                 {% else %} {# denied #}
197                                         denied
198                                 {% endif %}
199                         {% endif %}
200                         </td>
201                         <td>{{ request.type }}</td>
202                         <td>{{ request.id }}</td>
203                         <td>
204                 {% if request.type == 'user' %}
205                 Login: {{request.login}} -- First name: {{request.first_name}} -- Last name: {{request.last_name}} -- Email: {{request.email}}
206                 {% else %}
207                     {% if request.type == 'slice' %}
208                 Slice name: {{request.slice_name}} -- Number of nodes: {{request.number_of_nodes}} -- Type of nodes: {{request.type_of_nodes}} -- Purpose: {{request.purpose}}
209                    {% elif request.type == 'project' %}
210             <b>{{request.project_name}}</b>  -- {{ request.user_hrn }} -- Purpose: {{request.purpose}}
211                    {% elif request.type == 'join' %}
212             <b>{{request.user_hrn}}</b> --  to join {{ request.authority_hrn }}
213                     {% else %} {# authority #}
214                 Authority name: {{request.site_name}} -- authority_hrn: {{request.site_authority}} -- City: {{request.address_city}} -- Country: {{request.address_country}}
215                     {% endif %}
216                 {% endif %}
217                         </td>
218                         <td>{{ request.timestamp }}</td>
219                         
220                         <td><span id='portal__status__{{request.type}}__{{request.id}}'></span></td>
221         
222             <!--<div class='portal_validate_request {{request.type}} {% if forloop.counter|divisibleby:2 %}even{% else %}odd{% endif %}'> -->
223                   </tr>
224             {% endfor %}
225             </table>
226         </div>
227         {% endfor %}
228 {% endif %}
229 {% if delegation_authorities %}
230 <br />
231 <div class="col-md-12">
232         <h2>From your authorities with delegation</h2>
233 </div>
234
235         {% for authority, requests in delegation_authorities.items %}
236         <div class="col-md-12">
237                 <h3>{{authority}}</h3>
238                     <table class="table">
239                       <th>
240                         <td>Type</td>
241                         <td>Id</td>
242                         <td>Details</td>
243                         <td>Timestamp</td>
244                         <td>Status</td>
245                       </th>
246                     {% for request in requests %}
247                           <tr>
248                                 <td>
249                                 {% if request.allowed == 'allowed' %}
250                                 <input class='portal__validate__checkbox' id='portal__validate__checkbox__{{request.type}}__{{request.id}}' type='checkbox'/>
251                                 {% else %}
252                                         {% if request.allowed == 'expired' %}
253                                                 expired
254                                         {% else %} {# denied #}
255                                                 denied
256                                         {% endif %}
257                                 {% endif %}
258                                 </td>
259                                 <td>{{ request.type }}</td>
260                                 <td>{{ request.id }}</td>
261                                 <td>
262                         {% if request.type == 'user' %}
263                         Login: {{request.login}} -- First name: {{request.first_name}} -- Last name: {{request.last_name}} -- Email: {{request.email}}
264                         {% else %}
265                             {% if request.type == 'slice' %}
266                         Slice name: {{request.slice_name}} -- Number of nodes: {{request.number_of_nodes}} -- Type of nodes: {{request.type_of_nodes}} -- Purpose: {{request.purpose}}
267                             {% elif request.type == 'project' %}
268                     <b>{{request.project_name}}</b>  -- {{ request.user_hrn }} -- Purpose: {{request.purpose}}
269                             {% else %} {# authority #}
270                         Authority name: {{request.site_name}} -- authority_hrn: {{request.site_authority}} -- City: {{request.address_city}} -- Country: {{request.address_country}}
271                             {% endif %}
272                        {% endif %}
273                                 </td>
274                                 <td>{{ request.timestamp }}</td>
275                                 
276                                 <td><span id='portal__status__{{request.type}}__{{request.id}}'></span></td>
277                 
278                     <!--<div class='portal_validate_request {{request.type}} {% if forloop.counter|divisibleby:2 %}even{% else %}odd{% endif %}'> -->
279                           </tr>
280                     {% endfor %}
281                     </table>
282                 </div>
283                 {% endfor %}
284 {% endif %}
285 <br />
286 <div class="col-md-12">
287         <button class="btn btn-onelab" type="button" id="portal__validate" onclick="on_click_event();"><span class="glyphicon glyphicon-ok"></span> Validate</button>
288         <button class="btn btn-danger" type="button" id="portal__reject" onclick="on_click_reject();"><span class="glyphicon glyphicon-remove"></span> Reject</button>
289 </div>