Bonjour,
Je souhaite récupérer la valeur d’une info/numérique via son « ID », dans un widget script, pour pouvoir y faire une comparaison.
seulement cette comparaison n’est jamais vraie.
var val100 = is_numeric(‹ #val100# ›) ? parseFloat(‹ #val100# ›):0;
var maValeur = parseFloat($(‹ .cmd[data-cmd_id=#val100#] ›).value());
if (_options.display_value == ‹ 1 ›) {
cmd.attr(‹ data-state ›,‹ on ›)
if (val100 != 0 && maValeur == 100)
Pour info:
var ‹ val100 › , est l’ID de la ‹ commande/info/numérique › que je veux récupérer.
var ‹ maValeur › , est la valeur de l’info ci-dessus.
la comparaison ‹ maValeur == 100 › n’est jamais vraie, alors que la valeur de la commande info est ‹ 100 ›.
le but de cette modif, est d’avoir 3 états sur un widget 'data-type=« info » data-subtype=« binary » ’
j’ai éssayé enormément de syntaxes, mais rien y fait, je dois passer à coté de quelque chose, mais quoi ?
retour console :
var val100 = is_numeric(‹ 2013 ›) ? parseFloat(‹ 2013 ›):0;
var maValeur = parseFloat($(‹ .cmd[data-cmd_id=2013] ›).value());
if (_options.display_value == ‹ 1 ›) {
cmd.attr(‹ data-state ›,‹ on ›)
if (val100 != 0 && maValeur == 100) {
Alors c’est pas comme ceci qu’il faut procéder, car actuellement tu essaie de récupérer la valeur par un selector, ce qui oblige d’avoir la commande info numérique d’affiché sur la même page, et quelle soit chargé avant ce widget de comparaison.
Il faut utiliser jeedom.cmd.execute pour récupérer la valeur :
var maValeur = false
if(is_numeric('#val100#')){
jeedom.cmd.execute({
id : '#val100#',
async: false,
noCache: true,
error: function(error) {
console.log('| | ERREUR jeedom.cmd.execute(val100) !!!')
},
success: function (value) {
console.log('value = ' + value)
maValeur = value
}
})
if (_options.display_value == '1') {
cmd.attr('data-state','on')
if (maValeur == 100) {
...
Alors je sais pas si c’est possible d’ajouter des lignes dans un log avec un widget, mais dans tous les cas c’est a mon avis une mauvaise idée. Quelle serait l’intérêt ?
Sachant que le js du widget n’est executé que si tu l’affiche, un console.log devrait être suffisant.