source: OpenRLabs-Git/web2py/applications/rlabs/static/js/rlabs-min.js

main
Last change on this file was 89c64f4, checked in by David Fuertes <dfuertes@…>, 4 years ago

Ajax chequeo Reservas y status equipos

  • Property mode set to 100644
File size: 11.9 KB
Line 
1xhr=new XMLHttpRequest();function requestAJAX(url,parametros,callbackFunction){xhr.open("POST",url,true);xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');document.getElementById("table_ous").setAttribute("style","cursor:progress;");document.body.setAttribute("style","cursor:progress;");xhr.send(parametros);xhr.onreadystatechange=function(){if(xhr.readyState==4&&xhr.status==200){var respuesta=JSON.parse(xhr.responseText);document.getElementById("table_ous").setAttribute("style","cursor:pointer;");document.body.style.cursor="pointer";if(respuesta.error===undefined){callbackFunction(respuesta);}else{alert(respuesta.error);refresh_page();}}}}
2function insert_disponibles_before_pcs(disponibles_info){var table=document.getElementById("table_lab_"+disponibles_info.lab_id);var new_row=table.insertRow();new_row.setAttribute("style","display:block;");new_row.setAttribute("id","disponibles_before_pcs_lab_"+disponibles_info.lab_id);new_row.setAttribute("class","disponible");var new_cell=new_row.insertCell();new_cell.innerHTML=disponibles_info.disponibles+" de "+disponibles_info.total+" equipos disponibles";}
3function delete_disponibles(){delete_by_class('disponible');}
4function delete_disponible_before_images(lab_id){document.getElementById("disponibles_before_images_lab_"+lab_id).remove();}
5function hide_footer(){var footers=document.getElementsByClassName('footer');footers[0].style.display='none';}
6function show_footer(){var footers=document.getElementsByClassName('footer');footers[0].style.display='block';}
7function show_Labs(labs){delete_labs();labs.forEach(show_Lab);}
8function delete_labs(){delete_by_class('lab');}
9function show_Lab(lab,index){delete_disponibles();var table=document.getElementById("table_ou_"+lab.ou.id);table.setAttribute("style","background:NONE;");var new_row=table.insertRow();new_row.setAttribute("id","lab_"+lab.id);new_row.setAttribute("class","lab");new_row.setAttribute("style","display:block;");var htmlRow="<td width='16'>"+
10"<img src='../static/images/aula.png' "+
11"data-ou='"+lab.ou.id+"' "+
12"data-lab_id='"+lab.id+"' onClick='get_remotePCs(event)'>"+
13"</td>"+
14"<td>"+
15"<table id='table_lab_"+lab.id+"'>"+
16"<tbody>"+
17"<tr>"+
18"<td>"+
19"<span class='labs' "+
20"data-ou='"+lab.ou.id+"' "+
21"data-lab_id='"+lab.id+"' onClick='get_remotePCs(event)'>"+
22lab.name+"</span>"+
23"</td>"+
24"</tr>"
25if(typeof(lab.status)!=='undefined'){console.log(lab);htmlRow=htmlRow+"<tr>"+
26"<td>"+
27"<span id='disponibles_before_images_lab_"+lab.id+"' class='disponible' "+
28"data-ou='"+lab.ou.id+"' "+
29"data-lab_id='"+lab.id+"' onClick='get_remotePCs(event)'>   "+
30lab.status.clients_disponibles+" de "+lab.status.clients_total+" equipos disponibles</span>"+
31"</td>"+
32"</tr>"}
33htmlRow=htmlRow+"</tbody>"+"</table>"+"</td>"
34new_row.innerHTML=htmlRow;}
35function reset_modal(){document.getElementById("text_consolelog").value='';document.getElementById("buttonConsole").style.display='none';reset_progress_bar();delete_pcs();delete_images();delete_disponibles();}
36function show_images(image,index){img=getImg_sys(image.os);var table=document.getElementById("table_lab_"+image.lab_id);var new_row=table.insertRow();new_row.setAttribute("class","image");var new_cell=new_row.insertCell();new_cell.setAttribute("style","text-align: right;");new_cell.innerHTML="<img class='status_equipo' height='30px' src='../static/images/"+img+"' "+
37"data-lab_id='"+image.lab_id+"'>"
38new_cell=new_row.insertCell();new_cell.innerHTML="<span> "+image.os+" </span>"
39new_cell=new_row.insertCell();new_cell.innerHTML="<span><button type='button' class='btn btn-outline-secondary'"+
40"onClick='do_assign_reserve(event)'"+
41"data-ou_id='"+image.ou_id+"'"+
42"data-image_id='"+image.id+"'"+
43"data-lab_id='"+image.lab_id+"'"+
44">Reservar</button></span>"}
45function delete_images(){delete_by_class('image');}
46function getImg_sys(sys){var os=sys.split(" ")[0];var img;switch(os){case 'Windows':img='windows.png'
47break;case 'OSX':img='osx.png'
48break;default:img='tux.png'
49break;}
50return img;}
51function show_PCs(PCs){reset_style_table_lab(PCs.images_info[0].lab_id)
52delete_pcs();delete_images();delete_spaces();hide_footer();PCs.images_info.forEach(show_images);if(PCs.images_info[0]!==undefined){insert_space_table_lab(PCs.images_info[0].lab_id);}
53PCs.PCs_info.forEach(show_PC);cursor_wait('pointer');table_lab=document.getElementById('lab_'+PCs.images_info[0].lab_id);table_lab.setAttribute("style","background : white;display:block;");;}
54function reset_style_table_lab(table_lab_id){table_lab=document.getElementById('lab_'+table_lab_id);table_lab.setAttribute("style","background : white;display:block;cursor:pointer");}
55function show_PC(PC,index){var img=getImg_pc(PC.pc.status);var table=document.getElementById("table_lab_"+PC.pc.lab.id);var new_row=table.insertRow();new_row.setAttribute("id","pc_"+PC.pc.id);new_row.setAttribute("style","display:block;");new_row.setAttribute("class","pc");var new_cell=new_row.insertCell();new_cell.innerHTML="<img class='status_equipo' src='../static/images/"+img+"' "+
56"data-id='"+PC.pc.id+
57"'>"
58new_cell=new_row.insertCell();new_cell.innerHTML="<table id='table_PCs' class='nivel2 table_PCs'>"+
59"<tr id='PC_"+PC.pc.id+"'>"+
60"<td>"+
61"<span data-id='"+PC.pc.id+
62"'> "+
63PC.pc.name+"</span>"+
64"</td>"+
65"</tr>"+
66"<tr>"+
67"<table id='table_partitions_"+PC.pc.id+"' class='nivel3 partitions_table'>"+
68"</tr>"+
69"</table>"}
70function delete_pcs(){delete_by_class('pc');}
71function insert_space_table_lab(lab_id){var table=document.getElementById("table_lab_"+lab_id);var new_row=table.insertRow();new_row.setAttribute("class","space");var new_cell=new_row.insertCell();new_cell.innerHTML="<span>&nbsp;</span>"}
72function delete_spaces(){delete_by_class('space');}
73function getImg_pc(status){var img;if((typeof(status.status)==="undefined")){img='odernador_OFF.png'}else{switch(status.status){case 'off':img="odernador_OFF.png"
74break;case 'WIN':case 'windows':if(('loggedin'in status)&&(status.loggedin==true)){img='odernador_WINS.png'}else{img='odernador_WIN.png'}
75break;case 'LNX':case 'linux':if(('loggedin'in status)&&(status.loggedin==true)){img='odernador_LINS.png'}else{img='odernador_LIN.png'}
76break;case 'OSX':img="odernador_OSX.png"
77break;case 'oglive':img="odernador_OPG.png"
78break;case 'busy':img="odernador_BSY.png"
79break;default:img="odernador_OSX.png";}}
80return img;}
81function hide_progress_bar(animator){var progress_bar_container=document.getElementById("progress_bar_container");progress_bar_container.style.display='none';clearInterval(animator);document.getElementById("progress_bar").setAttribute("value","0");document.getElementById("progress_value").innerHTML="0%";}
82function show__progress_bar(){var progress_bar=document.getElementById("progress_bar_container");progress_bar.style.display='block';var data_time=parseInt(document.getElementById('progress_bar').getAttribute('data-time'));var time=data_time*10
83var progressbar=$('#progress_bar'),max=progressbar.attr('max'),time=time,value=progressbar.val();var loading=function(){value+=1;addValue=progressbar.val(value);$('.progress_value').html(value+'%');if(value==max){clearInterval(animate);}};var animate=setInterval(function(){loading();},time);return animate;}
84function stop_progress_bar(){clearInterval(animator);document.getElementById("progress_bar").setAttribute("value","100");}
85function reset_progress_bar(){clearInterval(animator);document.getElementById("progress_bar").setAttribute("value","0");document.getElementById("progress_value").innerHTML="0%";}
86class TrReserves{constructor(reserve,table){this.table=table;this.tr='  <tr class="active_reserves_tr"></tr>';this.reserve=reserve;}
87td1_html(){let html='<img id="img_connect_reserve_'+this.reserve['id']+'" '+
88'class="status_equipo active_reserve_status" data-status="'+this.reserve['status']+'" '+
89'data-loggedin="'+this.reserve['loggedin']+'" '+
90'src="../static/images/odernador_WIN.png"></img>';return html}
91td2_html(){let html='<span>'+this.reserve['pc_name']+'</span>';return html}
92td3_html(){let html='<span><img class="image_user" src="../static/images/user.png"></span>';return html}
93td4_html(){let html='<span>'+this.reserve['user_id']+'</span>';return html}
94td5_html(){let html='<span><button id="btn_connect_reserve_'+this.reserve['id']+'" '+
95'type="button" class="btn btn-secondary btn-client-connect" '+
96'onclick="connect_remotePC(event)" '+
97'data-reserve_id="'+this.reserve['id']+'" '+
98'data-sound="on" '+
99'data-pc_id="'+this.reserve['pc_id']+'" '+
100'data-lab_id="'+this.reserve['lab_id']+'" '+
101'data-ou_id="'+this.reserve['ou_id']+'" '+
102'data-pc_name="'+this.reserve['pc_name']+'" '+
103'data-port="'+this.reserve['port']+'" '+
104'data-protocol="'+this.reserve['protocol']+'" '+
105'data-ip="'+this.reserve['ip']+'">Conectar</button></span>'+
106'<span><button type="button" class="btn btn-primary" '+
107'onclick="unreserve(event)" '+
108'data-reserve_id="'+this.reserve['id']+'" '+
109'data-pc_id="'+this.reserve['pc_id']+'" '+
110'data-lab_id="'+this.reserve['lab_id']+'" '+
111'data-ou_id="'+this.reserve['ou_id']+'">Cancelar</button></span>'
112return html}
113insert_tr(){let tbody=this.table.getElementsByTagName('tbody')[0]
114let row=tbody.insertRow();row.setAttribute("class","active_reserves_tr");let td1=row.insertCell();let td2=row.insertCell();let td3=row.insertCell();let td4=row.insertCell();let td5=row.insertCell();td1.innerHTML=this.td1_html();td2.innerHTML=this.td2_html();td3.innerHTML=this.td3_html();td4.innerHTML=this.td4_html();td5.innerHTML=this.td5_html();}}
115class ReservesObserver{constructor(url_reserves,url_status,table){this.AWAIT_TIME_MS=10000;this.url=url_reserves;this.table=table;this.statusObserver=new StatusObserver(url_status);this.reserves=null;this.xhr=new XMLHttpRequest();this.interval=null;}
116clear_table_reserves(){delete_by_class('active_reserves_tr');}
117populate_table_reserves(){if(this.reserves!==null){for(i=0;i<this.reserves.length;i++){let reserve=new TrReserves(this.reserves[i],this.table);reserve.insert_tr()}}}
118set_status_clients(){this.statusObserver.set_clients(document.getElementsByClassName('btn-client-connect'))
119this.statusObserver.check_status_clients();}
120set_reserves(){this.xhr.open("POST",this.url,true);this.xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');this.xhr.send();this.xhr.onreadystatechange=()=>{this.xhr.onreadystatechange=()=>{if(this.xhr.readyState==4&&this.xhr.status==200){this.reserves=JSON.parse(this.xhr.responseText);this.clear_table_reserves();this.populate_table_reserves();this.set_status_clients();}}}}
121run(){this.set_reserves()
122this.interval=setInterval(this.set_reserves.bind(this),this.AWAIT_TIME_MS);}
123stop(){clearInterval(this.interval);}}
124class StatusObserver{constructor(url){this.AWAIT_TIME_MS=10000;this.url=url
125this.clients_to_connect_html=null;this.data_clients={}
126this.xhr=new XMLHttpRequest();this.interval=null;}
127set_clients(clients){this.clients_to_connect_html=clients;}
128set_status_img_client(reserve_id,respuesta){document.getElementById("img_connect_reserve_"+
129reserve_id).setAttribute('src',"../static/images/"+getImg_pc(respuesta[reserve_id]));}
130set_status_img_clients(respuesta){for(i=0;i<this.clients_to_connect_html.length;i++){let reserve_id=this.clients_to_connect_html[i]['id'].split('_')[3]
131this.set_status_img_client(reserve_id,respuesta);}}
132do_request(){this.xhr.open("POST",this.url,true);this.xhr.setRequestHeader("Content-Type","application/json;charset=UTF-8");this.xhr.send(JSON.stringify(this.data_clients));this.xhr.onreadystatechange=()=>{this.xhr.onreadystatechange=()=>{if(this.xhr.readyState==4&&this.xhr.status==200){var respuesta=JSON.parse(this.xhr.responseText);this.set_status_img_clients(respuesta);}}}}
133check_status_clients(){for(i=0;i<this.clients_to_connect_html.length;i++){this.data_clients[this.clients_to_connect_html[i].getAttribute('data-ip')]=this.clients_to_connect_html[i].getAttribute('data-reserve_id');}
134this.do_request();}}
135function delete_by_class(class_name){var class_items=document.getElementsByClassName(class_name);for(i=class_items.length-1;i>-1;i--){class_items[i].remove();}}
136function hide_by_class(class_name){var class_items=document.getElementsByClassName(class_name);for(i=0;i<class_items.length-1;i++){class_items[i].style.display='none';}}
Note: See TracBrowser for help on using the repository browser.