Rafraichir une des valeurs lors d'un checkAndUpdateCmd

Bonjour,

Je ne comprends pas quelque chose qui doit être une des bases …

J’ai crée un template pour le développement de mon nouveau plugin

En gros ce template est composé de 2 parties : une partie de texte et une partie avec un graphique.

Ce que je voudrais c’est que le texte soit mis à jour à chaque fois qu’une des commandes du plugin est modifiées via checkAndUpdateCmd.

Jusque là je n’utilisais que refreshWidget() mais dans ce cas l’ensemble du widget est mis à jour et je ne voudrais pas que la partie graphique soit mise à jour à chaque fois (mais uniquement via un cron).

Dans le fichier de template j’ai donc (en supprimant ce que n’est pas intéressant je crois) :

  <div id="counter-#id#" class="cmd cmd-widget" style="margin-top: 10px;">
        <center><span id="spanCounter-#id#">#counter#</span> impacts</center>
  </div>

    <script>
        jeedom.cmd.addUpdateFunction('#id#',function(_options) {
              $('.cmd[data-cmd_id=#id#]').attr('title', '{{Date de valeur}} : '+_options.valueDate+'<br/>{{Date de collecte}} : '+_options.collectDate)
              $('.cmd[data-cmd_id=#id#] .state').empty().append(_options.display_value)
              $('.cmd[data-cmd_id=#id#] .unit').empty().append(_options.unit)
            });

        jeedom.cmd.refreshValue([{cmd_id :'#id#',display_value: '#state#', valueDate: '#valueDate#', collectDate: '#collectDate#', alertLevel: '#alertLevel#', unit: '#unite#'}])
    </script>

Dans la fonction toHTML() la valeur est envoyée via replace $replace['#counter#'] = $counter; et du coup le span est bien mis à jour lors du refreshWidget() mais comment faire pour que ce texte soit mis à jour lors de la modification de la valeur via $eqLogic->checkAndUpdateCmd('counter', $counter); dans le code PHP ?

ça doit être une histoire simple mais la je ne comprend pas la relation à mettre en place pour que ça fonctionne.

Merci :slight_smile:

EDIT : en cours de résolution avec @tomitomas

Du coup pour les suivants, il faut mettre ça dans dans la partie template :

<div id="counter-#id#" class="cmd cmd-widget" style="margin-top: 10px;">
  <center><span id="spanCounter-#cmdIdCounter#">#counter#</span> impacts depuis #retention# heure(s) sur un rayon de #rayon# km</center>
</div>

<script>
        jeedom.cmd.addUpdateFunction('#cmdIdCounter#',function(_options) {
            $('#spanCounter-#cmdIdCounter#').text(_options.display_value);
        });
        jeedom.cmd.refreshValue([{cmd_id :'#cmdIdCounter#',display_value: '#stateCounter#'}])
</script>

Puis ça dans la fonction toHTML() :

 $cmd = $this->getCmd('info', 'counter');
 $replace['#stateCounter#'] = $cmd->execCmd();
 $replace['#cmdIdCounter#'] = $cmd->getId();

Merci @tomitomas :grinning:

Ça serait quand même plus prudent qu’un expert confirme :grin: :sweat_smile:

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