Aide à la mise au point d'un widget

Bonjour,
En utilisant différents codes de widgets, j’ai mis au point un widget pour ma chaudière. Ce widget est satisfaisant mais j’aimerais ajouter un petit texte en plus mais n’ayant aucune connaissance à partir de maintenant, je patauge. Aussi j’en appelle à votre aide et à vos connaissances.
Dans le widget je souhaite introduire les commandes en commentaires (derrière les //) je n’y parviens pas

<div id="cmd#id#" style="text-align:center; padding:8px;">
    
    <!-- Nom -->
    <div class="ct-name" style="font-size:14px; font-weight:bold;">
        #name#
    </div>

    <!-- Valeur -->
    <div class="ct-value" style="font-size:22px; font-weight:bold;">
        #value# °C
    </div>

</div>

<script>
  
 // (function(){
//  var textDiv = document.getElementByld('hydroText');
 // }
    jeedom.cmd.update['#id#'] = function(_options){

        // Valeur brute
        let val = parseFloat(_options.display_value);
        
        // Sélection du widget dans le DOM
        let bloc = document.getElementById("cmd#id#");
        let valueDiv = bloc.querySelector(".ct-value");

        // Mise à jour de la valeur
        valueDiv.innerHTML = val + " °C";

        // Couleur dynamique (modifie directement le style)
        // 4-7 °C
        if (val >= 4 && val <= 7){
            valueDiv.style.color = "#3ECC71";    // vert
        //  textDiv.style.color = "#3CCC71";
       //   textDiv.innerHTML = "Echange thermique correct";
        }
          // 3-4 ou 7- 9 °C
        else
          if ((val >= 3 && val < 4) || (val > 7 && val <= 9)){
            valueDiv.style.color = "#39C12";    // orange
        }    
        else
        {
          // <3 ou >9 °C
            valueDiv.style.color = "#ED003F";    //rouge
        }
    };

    // Initialisation immédiate
    jeedom.cmd.update['#id#']({
        display_value: '#value#',
    });
</script>

Merci pour votre aide et vos explications

Bonjour,

Je pense qu’il y a une erreur (facilement visible en italique dans ton post, moins en écriture normale) : la fonction à appeler est document.getElementById, avec un i majuscule et non un L minusucle.

Salut,

A priori tout ce que tu souhaites faire est possible depuis un widget personnalisé du core sans avoir à passer par un widget code.

Un exemple parmi tant d’autres :

rectifié mais cela ne fonctionne pas, les couleurs ne posent aucun problème ce que je souhaite c’est affiché le message « Echange thermique correct » que j’ai mis en commentaire ne sachant absolument pas comment faire tout en conservant l’ensemble du code

<div id="cmd#id#" style="text-align:center; padding:8px;">
    
    <!-- Nom -->
    <div class="ct-name" style="font-size:14px; font-weight:bold;">
        #name#
    </div>

    <!-- Valeur -->
    <div class="ct-value" style="font-size:22px; font-weight:bold;">
        #value# °C
    </div>

    <!-- Texte -->
    <div class="ct-text" style="font-size:14px; font-weight:bold;">
    </div>

</div>

<script>
    jeedom.cmd.update['#id#'] = function(_options){

        // Valeur brute
        let val = parseFloat(_options.display_value);
        
        // Sélection du widget dans le DOM
        let bloc = document.getElementById("cmd#id#");
        let valueDiv = bloc.querySelector(".ct-value");
        let textDiv = bloc.querySelector(".ct-text");

        // Mise à jour de la valeur
        valueDiv.innerHTML = val + " °C";

        // Couleur dynamique (modifie directement le style)
        // 4-7 °C
        if (val >= 4 && val <= 7){
            valueDiv.style.color = "#3ECC71";    // vert
            textDiv.style.color = "#3CCC71";
            textDiv.innerText = "Echange thermique correct";
        }
          // 3-4 ou 7- 9 °C
        else
          if ((val >= 3 && val < 4) || (val > 7 && val <= 9)){
            valueDiv.style.color = "#39C12";    // orange
        }    
        else
        {
          // <3 ou >9 °C
            valueDiv.style.color = "#ED003F";    //rouge
        }
    };

    // Initialisation immédiate
    jeedom.cmd.update['#id#']({
        display_value: '#value#',
    });
</script>
1 « J'aime »

@Aurelien
Un grand merci car outre le fait que cela fonctionne parfaitement cela m’indique pourquoi j’avais un problème: j’apprends doucement :grinning:
Encore merci et bonne soirée

1 « J'aime »

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