Je ne suis pas sûr de comprendre ton problème.
Le code de @noodom travaille sur les options d’un widget. Donc si ton widget n’a pas d’options tu vas chercher longtemps.
Perso, j’utilise le widget info button donné sur ce fil :
Par exemple, j’ai un bouton pour commander le volet. Suivant l’état de la maison je le colorise. Orange s’il est fermé et que nous sommes à la maison, blanc si ouvert est à la maison, rouge si nous sommes absents et ouverts etc.
Pour changer l’attribut couleur, un simple scénario se déclenchant sur l’état du volet ou l’état de la maison… pour changer la couleur.
et le scénario qui appelle celui de @noodom
Pour info, on peut faire la même chose sur des infos sans ce widget. Je l’utilise.
Un widget qui change d’état en fonction d’une variable passé par les options du widget.
Exemple pour la gestion de l’alarme de la moto où je remonte l’état de l’alarme et le niveau de batterie. Et en fonction couleur si je suis là ou non.
<div class="tooltips cmd cmd-widget #history#" data-type="info" data-subtype="numeric" data-cmd_id="#id#" data-cmd_uid="#uid#" data-version="#version#" data-eqLogic_id="#eqLogic_id#" style="display: block;">
<center>
<span class="iconCmd"></span><span><strong class="state" style="font-size: 25px;"></strong></span><span class="unite"></span>
</center>
<script>
jeedom.cmd.update['#id#'] = function(_options){
var state = _options.display_value;
var cmd = $('.cmd[data-cmd_id=#id#]');
var alarme = is_numeric('#alarme#') ? parseFloat('#alarme#'):0;
cmd.attr('title','Valeur du '+_options.valueDate+', collectée le '+_options.collectDate);
// alarme = 0 (alarme = 0, online = 1)
if (alarme == 0) {
if (state >= 40) {
// vert car alarme désactivée, vert car en ligne, vert batterie car ok
cmd.find('.iconCmd').empty().append('<i class="Mdi mdi-lock-open-variant" style="color:#30b455;font-size:20px;"></i><div style="font-size:10px;color:#30b455;">#state#<span style="font-size:10px;color:#30b455;">%</span></div>');
}
else {
// orange car alarme requiert attention, rouge var batterie déchargé
cmd.find('.iconCmd').empty().append('<i class="Mdi mdi-lock-open-variant" style="color:#ff8c00;font-size:20px;"></i><div style="font-size:10px;color:#da3037;">#state#<span style="font-size:10px;color:#da3037;">%</span></div>');
}
}
// alarme = 1 (alarme = 1, online = 1)
else if (alarme == 1) {
if (state >= 40) {
// rouge car alarme activée, vert car batterie OK
cmd.find('.iconCmd').empty().append('<i class="Mdi mdi-lock-check" style="color:#da3037;font-size:20px;"></i><div style="font-size:10px;color:#30b455;">#state#<span style="font-size:10px;color:#30b455;">%</span></div>');
}
else {
// rouge car alarme activée, rouge car batterie déchargée
cmd.find('.iconCmd').empty().append('<i class="Mdi mdi-lock-alert" style="color:#da3037;font-size:20px;"></i><div style="font-size:10px;color:#da3037;">#state#<span style="font-size:10px;color:#da3037;">%</span></div>');
}
}
// alarme = 2 (alarme = 1, online = 0)
else if (alarme == 2) {
if (state >= 40) {
// rouge car alarme activée, vert car batterie ok
cmd.find('.iconCmd').empty().append('<i class="Mdi mdi-lock-question" style="color:#da3037;font-size:20px;"></i><div style="font-size:10px;color:#30b455;">#state#%<span style="font-size:10px;color:#30b455;">%</span></div>');
}
else {
cmd.find('.iconCmd').empty().append('<i class="Mdi mdi-lock-question" style="color:#da3037;font-size:20px;"></i><div style="font-size:10px;color:#da3037;">#state#<span style="font-size:10px;color:#da3037;">%</span></div>');
}
}
// alarme = 3 (alarme = 0, online = 0)
else if (alarme == 3) {
if (state >= 40) {
// vert car alarme désactivée, vert car
cmd.find('.iconCmd').empty().append('<i class="Mdi mdi-lock-question" style="color:#30b455;font-size:20px;"></i><div style="font-size:10px;color:#30b455;">#state#<span style="font-size:10px;color:#30b455;">%</span></div>');
}
else {
cmd.find('.iconCmd').empty().append('<i class="Mdi mdi-lock-question" style="color:#30b455;font-size:20px;"></i><div style="font-size:10px;color:#da3037;">#state#<span style="font-size:10px;color:#da3037;">%</span></div>');
}
}
//cmd.find('.state').empty().append(' '+state);
//cmd.find('.unite').empty().append(' #unite#');
if(_options.alertLevel){
$('.cmd[data-cmd_id=#id#]').removeClass('label label-warning label-danger')
if(_options.alertLevel == 'warning'){
$('.cmd[data-cmd_id=#id#]').addClass('label label-warning');
}else if(_options.alertLevel == 'danger'){
$('.cmd[data-cmd_id=#id#]').addClass('label label-danger');
}
}
}
jeedom.cmd.update['#id#']({display_value:'#state#',valueDate:'#valueDate#',collectDate:'#collectDate#',alertLevel:'#alertLevel#'});
</script>
</div>
Le widget est un numeric (niveau de la batterie) et je change l’icone en fonction de l’option de l’état de l’alarme.