Bonjour,
Je galère depuis plusieurs heures / jours sur mon problème, peut être que vous aurez une idée éclairée!
-Objectif: Changer le visuel d’un bouton en fonction de la l’état d’une autre commande (lorsqu’il serait équivalent à l’état de la commande de référence)
-Solution envisagée: passer a chaque commande susceptible de changer d’apparence, la #commande_status# de référence à vérifier, puis dans le code spécifique du widget, j’affecte une nouvelle classe CSS
-Problème: Je n’arrive pas à récupérer la valeur de la commande de référence dans mon JS, tout en « restant? » dans le code du widget du bouton en cours. (j’ai mis dans mon code les valeurs de débug pour mieux comprendre)
Code du widget :
Ce que je souhaite: Si la valeur de la commande #commande_status# = au #display_name#, alors j’affecte a mon bouton la classe « bouton_selection »
Remarque: je passe par l’ID de la commande car c’est la seule syntax que j’ai trouvé sur le forum, pour utiliser le [objet][equipement][commande] j’aitrouvé la syntax que en PHP, or dans les widgets de ce que j’ai compris, c’est JS, pas de PHP possible.
<div class="cmd cmd-widget reportModeHidden" data-type="action" data-subtype="other" data-template="default" data-cmd_id="#id#" data-cmd_uid="#uid#" data-version="#version#" data-eqLogic_id="#eqLogic_id#">
<div class="content-xs" id="my_id#uid#">
<a class="btn btn-sm btn-default action tooltips">#name_display#</a>
</div>
<script>
var commande_status = "#commande_status#";
var my_name = '#name_display#';
my_name.replace("/", "");
my_name.replace(" ", "");
console.log("Bouton en cours:"+ my_name + "| Cmd de référence: " + commande_status + "|");
//==> Boutons Ok, Cmd Ok
//Récupération de la valeur de la commande de référence
jeedom.cmd.update[commande_status] = function(_options){
jeedom.cmd.execute({ // Récupération de la valeur
id: commande_status,
success: function(resultat) {
console.log("Resultat :"+ resultat + "| my_name:" + my_name +"|");
//==> Résultat est ok
//==> my_name est KO, valeur identique tous boutons
check_value(resultat);
}
})
};
jeedom.cmd.update[commande_status]();
//Comparaison de la commande de référence avec le bouton en cours
function check_value(my_value) {
var my_status = my_value.replace(" ", "");
my_status = my_status.replace("/", "");
console.log("Status de référence:"+ my_status + "| Bouton:" + my_name + "|");
// ==> Référence Ok
// ==> Bouton Ko, valeur identique tous boutons
if (my_status == my_name) {
set_selected();
}
}
//Affectation d'une nouvelle classe
function set_selected() {
var my_div = document.getElementById("my_id#uid#");
my_div.classList.add("bouton_selection");
}
$('.cmd[data-cmd_uid=#uid#]:last .action').off('click').on('click', function () {
jeedom.cmd.execute({id: '#id#'});
});
if ($('.cmd[data-cmd_uid=#uid#]').last().prev().data('subtype') != undefined && $('.cmd[data-cmd_id=#id#]').last().prev().data('subtype') != 'other'
&& $('.cmd[data-cmd_uid=#uid#]').last().prev().css('display') != 'block') {
$('.cmd[data-cmd_uid=#uid#]').last().prepend('<br/>');
}
if("#name#" != '#name_display#'){
$('.cmd[data-cmd_uid=#uid#]:last .action').attr('title',"#name#")
}
</script>
</div>
Remarque: Le Widget de Salvialf 3State bien que super, ne convient pas à mon besoin qui est plus « basique » et sans animations graphiques (juste des boutons, et des images), et qui ne se base pas sur des sliders. Au passage, merci Salvialf pour tous tes Widget que j’utilise bcp!
Bonne journée,
Dapolux