Bonjour à tous,
Je commence à passer mes plugin en full JS, et déjà premier écueil.
Je suis dans le panneau de configuration du plugin, je charge le js dans l’html par :
<?php
$weenectJS=version_compare(jeedom::version(), '4.4.0', '<')?'weenect_conf_4.3':'weenect_conf_4.4';
include_file('desktop', $weenectJS, 'js', 'weenect');
?>
(ça ça fonctionne bien!)
puis je test une valeur de configuration pour afficher un indice visuel su:
/**----- vérifie si le token est renseigné dans l'input de la configuration (masqué)
*/
function check_token_status(){
var tok = document.querySelector("input[data-l1key='token']");
console.log("check_token_status :"+tok.value);
if(tok.value!= ""){
document.getElementById("token_status").html('<i class="fa fa-check" style="color:green;"></i>');
}else{
document.getElementById("token_status").html('<i class="fa fa-x" style="color:red;">X</i>');
}
}
(ça aussi ok)
Si je lancer directement :
document.querySelector("input[data-l1key='token']").addEventListener('change', check_token_status());
Ca ance le test (?), mais la configuration n’est à priori pas encore chargée, et ça ne déclenche pas le load sur la modification de l’input.
pour remplacer le lancement de la vérification initiale en jquery :
$(document).ready(function () {
check_token_status();
});
je fait :
document.addEventListener('DOMContentLoaded', function(){
check_token_status();
});
ou encore sur un window.onload
mais à priori l’event a déjà été lancé, donc ça ne se lance pas.
Si je met un setTimeout, je récupère bien le bon comportement.
setTimeout(function(){check_token_status()), 1000)
mais niveau fiabilité…
j’ai tenté avec
domUtils(function(){
check_token_status();
});
mais même problème, le check_token_status semble lancé avant la valorisation des données de conf.
Est ce qu’il y a un évent ou un hook particulier de jeedom qui indique qu’il a chargé les données de configuration?
je n’ai pas trouvé dans dom.utils.js ni ou sont chargé les donnée (j’ai bien vu des appel ajax dans config.class.js et plugin.class.js mais je ne sais quoi en faire…)