Merge branch 'onelab' of ssh://git.onelab.eu/git/myslice into onelab
[myslice.git] / portal / templates / slice-tab-users-view.html
1         <div class="col-md-2">
2                 <div id="select-platform" class="list-group">
3                 </div>
4                         
5                 <ul class="list-group">
6                   <li class="list-group-item">Authority:<b> {{user_details.parent_authority}}</b>
7                         <!--<select id="auth_list">
8                                 <option value="ple.upmc">UPMC</option>
9                                 <option value="ple.inria">INRIA</option>
10                                 <option value="ple.nitos">NITOS</option>
11                                 <option value="ple.iminds">iMinds</option>
12                         </select> -->
13                   </li>
14                   <li class="list-group-item">Filter: slice</li>
15                  
16                 </ul>
17         
18         </div>
19         <div class="col-md-10">
20                 <div class="row">
21                 </div>
22                 <div id="user-tab-loading"><img src="{{ STATIC_URL }}img/loading.gif" alt="Loading Useres" /></div>
23                 <div id="user-tab-loaded" style="display:none;">
24                 <table id="user-tab" class="table">
25                         <tr>
26                         <th>+/-</th>
27                         <th>Email</th>
28                         <th>User hrn</th>
29                         <th>Enabled</th>
30                         </tr>
31                 </table>
32
33                 <!-- XXX TODO: for the moment only PIs have access to Update but users that have slice credentials should also have access to that -->
34
35                                 {% if 'is_pi'  in pi %}
36                                 <button id="addusers" type="button" class="btn btn-default"><span class="glyphicon glyphicon-ok"></span> Update users</button>
37                                 {%endif%}
38                 </div>
39 <script>
40     $(document).ready(function() {
41             // TODO: Add a filter based on the list of authorities
42                 $.post("/rest/authority/",{'fields':['authority_hrn']}, function( data ) {
43                 console.log(data);
44             }); // post rest/authority
45
46                         var slice_users = [];
47                 $.post("/rest/user/",{'filters':{'parent_authority': "{{user_details.parent_authority}}"}}, function( data ) {
48                 var list_users = [];
49                 var table_users = [];
50                                 /* Available fields
51                                 user_gid, user_enabled, slices, pi_authorities, keys, parent_authority, user_first_name,
52                             user_urn, user_last_name, user_phone, user_hrn, user_email, user_type
53                                 */
54                 $.each( data, function( key, val ) {
55                         list_users.push( "<li><a href=\"portal/user/"+val.user_email+"\">" + val.user_email + "</a></li>" );
56                         user_row = "<tr>";
57                                         // checking the box for the users that belong to the selected slice
58                                         var flag_checkbox = 0;
59                                         for(var data in val.slices) {
60                                         var element = val.slices[data];
61                                                 if (element == "{{slice}}"){
62                                                         //console.log("the slice is: "+ element);       
63                                                         flag_checkbox = 1;
64                                                         slice_users.push (val.user_hrn)
65                                                         user_row += "<td><input type='checkbox' checked='True' class='user'></td>";
66                                                 }
67                                         }
68                                         if(flag_checkbox != 1){
69                                 user_row += "<td><input type='checkbox' class='user'></td>";
70                                         }
71                         user_row += "<td>"+val.user_email+"</td>";
72                         user_row += "<td>"+val.user_hrn+"</td>";
73                                         user_row += "<td>"+val.user_enabled+"</td>";
74                         user_row += "</tr>";
75                         table_users.push(user_row);
76                 
77                 });
78             
79                                 $("table#user-tab tr:last").after(table_users.join( "" ));
80                 $("div#user-tab-loaded").css("display","block");
81                 $("div#user-tab-loading").css("display","none");
82                 $("input:checkbox.user").click(function() {
83                     user_hrn = $(this).closest('tr').find('td:eq(2)').html();
84                     if(this.checked){
85                         var record_id = this.id;
86                         slice_users.push (user_hrn);
87                     }else{
88                         console.log(slice_users);
89                     }
90                 });
91            
92                 }); // post rest/user
93                 $('button#addusers').click(function() {
94                 $.post("/update/slice/",{'filters':{'slice_hrn':'{{slice}}'},'params':{'users':slice_users}}, function(data) {
95                         if(data.success){
96                         // TODO: highlight row after success
97                         //$('tr[id="'+record_id+'"]').highlight();
98                         mysliceAlert('Success: slice updated','success', true);
99                         }else{
100                         mysliceAlert('Rest Error for: '+data.error,'warning', true);
101                         }
102                 }); // post update slice
103             
104                 // TODO: refresh table
105                 //window.location="/portal/institution#slices";
106
107             }); // button#addusers click
108
109     }); // document ready
110 </script>
111