Update Menu Design Auto Adaptatif - problème lors du rafraichissement de la page

Bonjour à tous,

J’essaye de modifier l’aspect d’un menu déroulant en fonction de la valeur d’un virtuel (afficher ou cacher des icones du menu).
message_jeedom

L’icone du ventilateur et celle du flocon voit apparaitre ou disparaitre selon la valeur prise par NbZone.
Voici le code utilisé

<div class="menu_top">
  <ul class="monmenu">
    <a id="1"  onClick="gotoPlan(this.id)"><li class="monmenu home"           ><div class="imagette"><img src="data/img/home.png"                    height="50px" width="50px" ></div></li></a>
    <a id="3"  onClick="gotoPlan(this.id)"><li class="monmenu refroidissement"><div class="imagette"><img src="data/img/Refroidissement.png"         height="50px" width="50px" ></div></li></a>
    <a id="10" onClick="gotoPlan(this.id)"><li class="monmenu ventilateur"    ><div class="imagette"><img src="data/img/Ventilateur_TOR_Arret.png"   height="50px" width="50px" ></div></li></a>
  </ul>
</div>

<script>
  $(document).ready(function(){
    var planID = '#'+(location.search.split('plan_id' + '=')[1] || '').split('&')[0];
    $(planID+' li').addClass('selected');
  });

  function gotoPlan(planID) {
     jeephp2js.planHeader_id=planID;
  	 jeeFrontEnd.plan.displayPlan();
    }
  
  var NbZone  = 16378 ; //Id Jeedom du Virtuel 

  jeedom.cmd.update[NbZone] = function(_options) {
  jeedom.cmd.execute({
      id: NbZone,
      success: function(valeur_courante) {
        var menuVisibility = {
          refroidissement: 1,
          ventilateur:     1,
     };

 // Modification de la visibilité des éléments du menu en fonction de valeur_courante
         if (valeur_courante == 1 {
          menuVisibility.refroidissement = 1;
         } else {
          menuVisibility.refroidissement = 0;
         }

        if (valeur_courante == 1{
          menuVisibility.ventilateur = 1;
        } else {
          menuVisibility.ventilateur = 0;
        }

        // Sélectionner l'élément "refroidissement"
        $('.monmenu li.refroidissement').css('opacity', menuVisibility.refroidissement);

        // Sélectionner l'élément "ventilateur"
        $('.monmenu li.ventilateur').css('opacity', menuVisibility.ventilateur);

        if (menuVisibility.refroidissement == 0) {
            $('.monmenu li.refroidissement').css('display', 'none').attr('disabled', true);
          } else {
            $('.monmenu li.refroidissement').css('display', '').attr('disabled', false);
          }
         if (menuVisibility.ventilateur == 0) {
            $('.monmenu li.ventilateur').css('display', 'none').attr('disabled', true);
          } else {
            $('.monmenu li.ventilateur').css('display', '').attr('disabled', false);
          }
      }
    });
  }
</script>

Cela fonctionne correctement si je suis sur la page et que je modifie la valeur de NbZone , l’icone du ventilateur et du flocon apparaissent et disparaissent. Le problème est que si je rafraichis la page , toutes les icones réapparaissent sans prendre en compte la valeur de NbZone.

Merci pour votre aide.

1 « J'aime »

Bonjour,

Après la fonction jeedom.cmd.update il faut forcer lappel a la fonction :
jeedom.cmd.refreshValue([{cmd_id:'16378'}])

2 « J'aime »

merci pour votre réponse.

jeedom.cmd.update[NbZone] = function(_options) {
jeedom.cmd.refreshValue([{cmd_id:‹ 16378 ›}]);
jeedom.cmd.execute({
id: NbZone,
success: function(valeur_courante) {
var menuVisibility = {
refroidissement: 1,
ventilateur: 1,
chauffage1: 1,
};

j’ai modifié le code comme ceci mais cela n’a pas résolu le probleme de rafraichissement. Est-ce que j’ai bien suivi votre conseil?

Etonnant, il y a quand même quelques erreurs :

if (valeur_courante == 1
les parenthèses ne sont pas fermée par exemple.

Non c’est pas ici qu’il faut le mettre, mais je me suis peut-être trop avancé sur cette fonction, sa dépend de ta version de jeedom.

utilise plutot jeedom.cmd.update[NbZone](); a mettre a la fin juste avant la balise </script>

1 « J'aime »

oui cela fonctionne à présent. Je te remercie pour ton aide.

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.