Depuis la v1 de Jeedom et encore aujourd’hui dans la dernière alpha, il est possible d’implémenter la fonction javascript saveEqLogic(eqLogic) afin de modifier à la volée l’eqLogic au moment de la sauvegarde.
Or nous avons rencontré avec jMQTT des problèmes avec cette fonction, car elle reste chargée lors du changement de page, par exemple : en passant d’un équipement jMQTT (qui implémente saveEqLogic) à un équipement virtuel (qui ne l’implémente pas).
Le problème est réglé pour jMQTT, car nous avons ajouté un test supplémentaire dans la fonction pour sortir directement s’il ne s’agit pas d’un eqLogic jMQTT, mais cela soulève une question de fond quand à cette fonction.
Ce que je trouverais logique (et donc recommande) serait que cette fonction soit spécialisée par plugin, par exemple utiliser jMQTT_saveEqLogic(eqLogic) pour jMQTT, virtual_saveEqLogic(eqLogic) pour virtual, etc. Une sorte de « namespace » pour éviter qu’une fonction inadaptée soit appelée par un autre plugin.
Je peux PR le code dans ce sens en faisant uniquement l’appel à la fonction préfixée du nom du plugin si elle existe, sinon l’ancienne saveEqLogic(eqLogic).
Page concernée : (Equipement d’un plugin)
Version Core : toutes les versions
Etape pour reproduire le Bug :
De nombreuses références sont disponibles sur Commu, les plus parlantes :
Il suffit de passer de la page d’un équipement d’un plugin qui implémente la fonction (tout en utilisant des configs/variables incompatible avec un autre plugin), puis d’aller sur la page d’un équipement de l’autre plugin qui ne l’implemente pas et de sauvegarder.
Bonjour,
Désolé j’ai raté le sujet. Faut je regarde mais je crois on peu onload une fonction en javascript suffirai de la faire lors du page load. J’aurais pas le temps cette semaine avec tous ce qui me tombe dessus mais je me le note pour la 4.4
En fait je regardais pourquoi le problème ne se pose pas avec printEqLogic et dans desktop\common\js\utils.js je vois qu’on met les function à undefined
var prePrintEqLogic = undefined
var printEqLogic = undefined
var addCmdToTable = undefined
on ne devrait pas ajouter saveEqLogic là simplement?