diff --git a/resources/script.js b/resources/script.js index 90abba2..2e3684d 100644 --- a/resources/script.js +++ b/resources/script.js @@ -26,19 +26,6 @@ function researchRoom() xhr.send(null); } -// Update the current room based on the current anchor -function updateCurrentRoom() -{ - // Hide room research modal - var modal = bootstrap.Modal.getInstance(document.getElementById('room-research-modal')); - if (modal != null) { - modal.hide(); - } - - var id = window.location.hash; - console.log(id); -} - function salleInfosToHtml(salle) { titres = ((salle.aliaz.length!=0)?("

"+salle.aliaz.join("

ou

")+"

"):"Aucun alias connu."); @@ -58,6 +45,59 @@ function httpGetAsync(theUrl, callback) xmlHttp.send(null); } +function selectRoom(roomId) { + if (document.lastSelectedSalle != null) { + document.lastSelectedSalle.classList.remove('current-room'); + } + + var svg = document.getElementById('plan'); + var room = svg.contentDocument.getElementById('path-salle-' + roomId); + + if (room == null) { + console.log('Error: the room does not exist'); + return; + } + + var outputDiv = document.getElementById('selectedSalleInfos'); + document.lastSelectedSalle = room; + + httpGetAsync("api/request.php?salle="+room.id.substring("path-salle-".length), function (s,errcode){ + window.clearTimeout(document.wnsTimeout); + try{ + if (s=="404") { + outputDiv.innerHTML = "Aucune information disponible pour cette salle. Si vous en avez, indiquez-les à l'adresse samy.avrillon@ens-lyon.fr en indiquant l'identifiant de la salle : "+document.lastSelectedSalle.id.substring("path-salle-".length); + return; + } + ss = JSON.parse(s) + if (document.lastSelectedSalle.id==("path-salle-"+ss["id"])) { + if (errcode==200) { + outputDiv.innerHTML = salleInfosToHtml(ss); + } else { + outputDiv.innerHTML = "Erreur lors de l'appel à l'interface php: ERREUR "+errcode; + } + } + } catch(err) { + console.error("Les données récupéréés de cette salle ne sont pas valides."); + console.error(err); + } + }); + + room.classList.add('current-room'); +} + +// Update the current room based on the current anchor +function updateCurrentRoom() +{ + // Hide room research modal + var modal = bootstrap.Modal.getInstance(document.getElementById('room-research-modal')); + if (modal != null) { + modal.hide(); + } + + var id = window.location.hash.substring(1); // Remove # + selectRoom(id); +} + function initSvgSupport() { var plan = document.getElementById('plan'); @@ -65,41 +105,12 @@ function initSvgSupport() svgPanZoom(plan, {zoomEnabled: true, controlIconsEnabled: true}); var salles = plan.contentDocument.getElementsByClassName('svg-salle'); - var outputDiv = document.getElementById('selectedSalleInfos'); - - function selectSalle(e) { - if(document.lastSelectedSalle != null) { - document.lastSelectedSalle.classList.remove('current-room'); - } - - document.lastSelectedSalle = e.target; - - httpGetAsync("api/request.php?salle="+e.target.id.substring("path-salle-".length), function (s,errcode){ - window.clearTimeout(document.wnsTimeout); - try{ - if (s=="404") { - outputDiv.innerHTML = "Aucune information disponible pour cette salle. Si vous en avez, indiquez-les à l'adresse samy.avrillon@ens-lyon.fr en indiquant l'identifiant de la salle : "+document.lastSelectedSalle.id.substring("path-salle-".length); - return; - } - ss = JSON.parse(s) - if (document.lastSelectedSalle.id==("path-salle-"+ss["id"])) { - if (errcode==200) { - outputDiv.innerHTML = salleInfosToHtml(ss); - } else { - outputDiv.innerHTML = "Erreur lors de l'appel à l'interface php: ERREUR "+errcode; - } - } - } catch(err) { - console.error("Les données récupéréés de cette salle ne sont pas valides."); - console.error(err); - } - }); - - e.target.classList.add('current-room'); - } for (var i = 0; i < salles.length; i++) { - salles[i].addEventListener('click', selectSalle); + salles[i].addEventListener('click', function(e) { + var id = e.target.id.substring('path-salle-'.length); // Remove prefix + selectRoom(id); + }); } }