refactor toogle qui prend maintenant 4 parametres

This commit is contained in:
jbousquie 2016-09-29 11:37:19 +02:00
parent edd844a8e4
commit c341437843

View File

@ -49,7 +49,8 @@ function InfoWinlog() {
$liste_salles = ListeSalles(); $liste_salles = ListeSalles();
$infobulle = InfoWinlog(); $infobulle = InfoWinlog();
echo("<div id=\"menu_salles\">\n"); echo("<div id=\"menu_salles\">\n");
echo("<p title=\"$infobulle\"><b>Connexions Windows en cours par salle</b></p>\n"); echo("<span title=\"$infobulle\"><b>Connexions Windows en cours par salle</b></span>");
echo("<span class=\"right toggler_general\"><span id=\"\">[+]</span><span id=\"\">[-]</span></span><br/>\n");
echo($liste_salles); echo($liste_salles);
echo("<br/><a href=\"recup_salles.php\" class=\"right\"><i>rechargement</i></a>\n</div>\n"); echo("<br/><a href=\"recup_salles.php\" class=\"right\"><i>rechargement</i></a>\n</div>\n");
echo('</div>'."\n"); echo('</div>'."\n");
@ -70,18 +71,55 @@ function InfoWinlog() {
<script> <script>
// fonction de permutation enroulé/déroulé de la liste de connexions d'une salle // fonction de permutation enroulé/déroulé de la liste de connexions d'une salle
var toggle = function(el, enrouleurs) { // el : element html toggler
if (el.className != "toggler") { return; } // enrouleurs : tableau de stockage des états des togglers
// bascule : true => on demande la permutation de l'état enroulé/déroulé
// force : null ou boolean. Si boolean, c'est la valeur a affecter de force (true = deroule, false = enroule)
var toggle = function(el, enrouleurs, bascule, force) {
if (!el.classList.contains("toggler")) { return; }
var htmlDeroule = "[-] ";
var htmlEnroule = "[+] ";
var classDeroule = "deroule";
var classEnroule = "enroule";
var listeId = (el.id).replace('b-', 'c-'); var listeId = (el.id).replace('b-', 'c-');
var liste = document.getElementById(listeId); var liste = document.getElementById(listeId);
if (enrouleurs[el.id]) { // si la valeur forcée "force" n'est pas transmise, on permute ou on garde les valeurs existantes deroule/enroule
liste.className = "enroule"; // selon la valeur de bascule :bascule == true => on permute, sinon on rétablit les valeurs stockées
el.innerHTML = "[+] "; if (force == null || force == undefined) {
enrouleurs[el.id] = false; if (enrouleurs[el.id]) { // si initialement déroulé
} else { if (bascule) {
liste.className = "deroule"; liste.className = classEnroule;
el.innerHTML = "[-] "; el.innerHTML = htmlEnroule;
enrouleurs[el.id] = true; enrouleurs[el.id] = false
} else {
liste.className = classDeroule;
el.innerHTML = htmlDeroule;
enrouleurs[el.id] = true;
}
}
else // si initialement enroulé
{
if (bascule) {
liste.className = classDeroule;
el.innerHTML = htmlDeroule;
enrouleurs[el.id] = true;
} else {
liste.className = classEnroule;
el.innerHTML = htmlEnroule;
enrouleurs[el.id] = false;
}
}
}
// sinon on affecte la valeur forcée
else {
enrouleurs[el.id] = force;
if (force) {
liste.className = classDeroule;
el.innerHTML = htmlDeroule;
} else {
liste.className = classEnroule;
el.innerHTML = htmlEnroule;
}
} }
}; };
@ -89,15 +127,7 @@ function InfoWinlog() {
var enroule = function(enrouleurs) { var enroule = function(enrouleurs) {
for (var e in enrouleurs) { for (var e in enrouleurs) {
var el = document.getElementById(e); var el = document.getElementById(e);
var listeId = (el.id).replace('b-', 'c-'); toggle(el, enrouleurs, false);
var liste = document.getElementById(listeId);
if (enrouleurs[e]) {
liste.className = "deroule";
el.innerHTML = "[-] ";
} else {
liste.className = "enroule";
el.innerHTML = "[+] ";
}
} }
}; };
@ -208,10 +238,10 @@ function InfoWinlog() {
var elems = document.getElementsByClassName("toggler"); var elems = document.getElementsByClassName("toggler");
// initialisation des enrouleurs (true = déroulé, par défaut) // initialisation des enrouleurs (true = déroulé, par défaut)
for (var i = 0; i < elems.length; i++) { for (var i = 0; i < elems.length; i++) {
enrouleurs[elems[i].id] = true; enrouleurs[elems[i].id] = <?php echo(json_encode($deroule)); ?>;
} }
div.addEventListener("click", function(e) { toggle(e.target, enrouleurs); }, false); div.addEventListener("click", function(e) { toggle(e.target, enrouleurs, true); }, false);
window.setInterval(function() { window.setInterval(function() {
reload(url, div, enrouleurs); reload(url, div, enrouleurs);