Je viens de voir que les minValue et maxValue sont initialisés arbitrairement à ‹ 0 › ou ‹ 100 › lors de leurs transpo dans les widget (’#minValue#’ et ‹ #maxValue# ›) si on les laissent ‹ non renseignés ›.
D’autant plus curieux que en BdD ils sont bien dans ce cas égal à « » et que le filtrage des valeurs lues par les min/max acceptent n’importe quelles valeurs du moment qu’ils ne sont pas renseignés.
Cette initialisation est pénalisante dans les codes de widget et oblige à ajouter des conditions inutiles ( if ==0, if ==100 …) si l’on utilise, comme c’est mon cas le fait que les min/max sont ou ne sont pas renseignés.
De plus la plage 0-100 n’est pas universelle, le rssi de BLEA utilise -200-0, les volets souvent la plage 0-199 (0-99 fermé, 100-199 ouvert), etc.
Changer la valeur Min/MAX n’avancera à rien. Je vais essayer de donner un exemple :
Supposons que je veuille calculer la valeur d’une commande comme égale à #minValue# SI celui ci est paramétré, sinon comme égal à #minHistoryValue#. Problème simple et très courant je pense.
Seulement là, comme #minValue# est TOUJOURS recalculé à ‹ 0 › si pas paramétré (vide donc), c’est un min = ‹ 0 › qui sera exploité.
Bien sur je peux faire :
value = (’#minValue#’ != 0 ? ‹ #minValue# › : ‹ #minHistoryValue# ›)
Seulement dans ce cas je ne pourrais plus jamais exploiter VOLONTAIREMENT la valeur ‹ 0 › !!! sauf à bidouiller en mettant en min ‹ 0.001 › par exemple … pas très élégant
Bien sur le problème est le même pour le Max.
Cette problématique est relativement courante si on travaille sur des widget de visualisation.
Ben les borne d’affichage sont toujours au pire le minhistorize et le maxhistorize donc je comprends pas trop. Surtout que si le mec active pas l’envoi des historize ça marche plus ton truc…
Deux jauges de tension, à gauche avec un mini de ‹ 0 › (valeur par défaut actuellement), à droite avec un mini à ‹ minHistoryValue ›
Maintenant si je force le mini à 230 cela donne :
Donc le but est : si je met ‹ 0 › ou rien) ou ‹ 230 › dans le mini j’ai l’image de gauche ou du bas,
Par contre si je ne RENSEIGNE PAS le mini j’ai l’image de droite avec une échelle complète basé sur l’histo et c’est cela qui n’es pas possible de faire actuellement !
Ok je comprends mais honnêtement je suis pas motivé pour faire le changement, a chaque fois que j’ai fait ça je n’ai pas maîtrisé les effets de bord et j’en ai pris plein la tête…
Alors pour essayer de te motiver je le dirais d’une autre manière
Ces min/max sont au premier chef utilisé dans :
Le filtrage des valeurs en provenance des capteurs, actuellement si non renseigné, pas de filtrage, et c’est donc OK.
Dans les widget, les widget core ont déjà prévus le coup via des lignes du type :
min: (’#minValue#’ == ‹ ›) ? 0 : parseInt(’#minValue#’),
max: (’#maxValue#’ == ‹ ›) ? 100 : parseInt(’#maxValue#’),
Les bornes recalculées a ‹ 0 › et ‹ 100 › et sont TOTALEMENTarbitraire (BLEA -200, volet 0-199, beaucoup d’équipement sont à 0-255, etc) et donc dangereuse.
C’est pour ces raisons que je pense que le bout de code gérant ces recalculs doit être une séquelle historique pas encore nettoyé pour l’instant. Mais l’intérêt de la V4 n’est il pas de remettre les choses à plat et de nettoyer au maximum ?
Et pour ce qui est d’en prendre plein la tronche, attend la sortie de la V4 :) !!!
On va déjà en prendre plein la tête en v4 je peux pas empiler encore ça qui peut casser le js de widget tierce encore une fois. Désolé mais déjà là ça va être très dur de tout encaisser je peux pas faire plus.
Quand je vois rien que ici en comité réduis ce que c’est j’ai vraiment peur quand ça sera ouvert a tous.
Les widget tierce … de toute manière il va falloir qu’ils soient retravaillés, c’est un acquis en V4, alors un peu plus, un peu moins …
Et de ce que j’ai vu tous le monde a gérés les valeurs par defaut des ‹ #xxxxxx# › en s’appuyant sur les exemples du core.
Honnêtement, je ne pense pas que la suppression de cette verrue dans le code générera plus de problèmes, au contraire.
Je vois mon exemple, il m’a fallu quelques heures pour trouver l’origine de l’anomalie d’affichage de mes jauges, et ensuite me convaincre moi même que c’était un recalcul forcé de CES valeurs.
Quoiqu’il en soit, pourrais tu me dire ou se trouve ce recalcul dans le code, cela me permettrait de le gérer à minima sur mes install … Merci d’avance
Bon j’ai du faire un retour arrière sur cette modification elle est trop impactante en plus dans certain cas de devoir ajouter un peu de code et donc de ralentir jeedom (surtout en mobile ou le min/max sont en attribut de balise html)