Core 4.3 : Beta

Bonjour,

Pour information la semaine prochaine le core 4.3 va passer en beta. En plus des changements du changelog que je vous laisse consulter il y a quelques changement pour les dev :

  • il ne sera plus obligatoire d’avoir une fonction addCmdToTable dans votre js du plugin, si elle n’y ait pas la fonction par defaut sera utilisée
  • si vous n’avez pas de addCmdToTable alors il faut juste déclarer la table des cmd dans votre html comme ca : <table id="table_cmd" class="table table-bordered table-condensed"></table> , le core s’occupant de lui meme du header et body
  • il est possible d’avoir les valeurs des commandes (avec mise à jour en temps réel) directement dans la table comme cela :

    Vous pouvez aussi les retrouver dans la configuration avancé de l’équipement et avancé de la commande. Pour l’ajouter dans vos plugins il y a juste besoin de cette ligne <span class="cmdAttr" data-l1key="htmlstate"></span> dans votre tableau de commande la ou vous voulez l’avoir (voir plugin template pour l’exemple complet). Cet ajout ne casse pas la compatibilité avec la 4.2 (juste en 4.2 ca sera vide)
  • Dans les widgets des commandes il faut (pas obligatoire mais conseillé) remplacer la declaration de la fonction d’update :
jeedom.cmd.update['#id#'] = function(_options) {
      $('.cmd[data-cmd_id=#id#]').attr('title', '{{Date de valeur}} : '+_options.valueDate+'<br/>{{Date de collecte}} : '+_options.collectDate)
      $('.cmd[data-cmd_id=#id#] .state').empty().append(_options.display_value)
    }

jeedom.cmd.refreshValue([{cmd_id :'#id#',display_value: '#state#', valueDate: '#valueDate#', collectDate: '#collectDate#', alertLevel: '#alertLevel#'}])

Par :

jeedom.cmd.addUpdateFunction('#id#',function(_options) {
      $('.cmd[data-cmd_id=#id#]').attr('title', '{{Date de valeur}} : '+_options.valueDate+'<br/>{{Date de collecte}} : '+_options.collectDate)
      $('.cmd[data-cmd_id=#id#] .state').empty().append(_options.display_value)
      $('.cmd[data-cmd_id=#id#] .unit').empty().append(_options.unit)
    });

jeedom.cmd.refreshValue([{cmd_id :'#id#',display_value: '#state#', valueDate: '#valueDate#', collectDate: '#collectDate#', alertLevel: '#alertLevel#', unit: '#unite#'}])

Dessus 2 changements a bien noter :

  • une fonction gère l’ajout de votre fonction d’update (ca permet de gérer l’update si la même commande est présente plusieurs fois sur la même page avec des représentation différente)
  • l’ajout d’un paramètre unit (ou #unite#, ya un aussi Français anglais la j’en suis bien conscient mais c’est du vieux code et je voulais pas casser la compatibilité). Le core est capable de transformer par exemple 3500W en 3.5kW pour rendre la lecture plus facile, ce paramètre en plus permet de rester cohérent sur le widget (sinon ca affiche 3.5W).

Tous les widgets du core sont normalement a jour, si vous utilisez pas de widget personnalisé ou si c’est des générer par le core (template), aucune adaptation a faire de votre coté.

Cette version peut sembler plus petite que d’habitude, elle se concentre surtout sur un travails de fond dans jeedom.

4 « J'aime »

sympa d’intégrer au core :slight_smile:
pour ceux qui ont déjà ça dans leur plugins, j’aurais juste à ajouter une condition en javascript pour tester si core >=4.3 ? (ca existe en js ??)

EDIT ma modif :

Pas sur de comprendre pourquoi tu es dans une function refreshValue tu as normalement juste a poser le htmlstate le core s’occupe lui meme du refresh

car ça fonctionne déjà depuis 4.0 comme ça :wink: mais je veux profiter de la feature en 4.3 (et failback sur la mienne en dessous)

Ton code met en jaune lors d’une maj c’est ca ? Je pourrais reprendre l’idée dans le core faut je vois mais c’est pas con en soit.

Pour la version en 4.3 ya jeeFrontEnd.jeedomVersion mais pas avant (ou sous un autre nom). Tu peux tout simplement tester si jeeFrontEnd existe, si oui c’est 4.3 ou plus

oui ca met temporairement en jaune pour faire une sorte de clignottement quand c’est mis à jour. possible peut-etre de faire mieux avec du jquery animate…

sur une 4.2 jeedomVersion tout court existe apparemment (pas encore namespacé) mais oui plus simple de vérifier jeeFrontEnd

cool ça permettra d’avoir un code qui peut passer sur 4.0 et 4.3 :slight_smile: merci !

J’ai rajouté une coloration rouge de 1s lors de la mise a jour de la valeur. Ca pourra evoluer le coté CSS avec les retour utilisateurs.

jaune est peut-etre plus passe partout ? 1sec c’est long, 200ms permettait un petit clignottage discret. mais bon là on chipotte

ou encore mieux, le vert jeedom :wink:

Le vert jeedom pas bete je vais tester

petite question à nouveau, ici comment gérer le failback si jeedom <4.3 ?

et je ne suis peut-être pas le seulm mais j’utilisais directement la fonction update, je suppose que ça ne sera plus supporté ?

Pour l’utilisation direct tu peux faire :

jeedom.cmd.refreshValue([{cmd_id :'#id#',display_value: '#state#', valueDate: '#valueDate#', collectDate: '#collectDate#', alertLevel: '#alertLevel#', unit: '#unite#'}])

Ca va appeler la fonction du core, c’est retrocompatible jusqu’en v3 je pense meme.

Si <4.3 pas de solution a part le test de version. L’inverse pose pas de soucis donc tu peux attendre la 4.4 pour le faire par exemple.

ok je vais attendre la 4.4 alors

ma question était plutot pour ceux qui utilisent comme moi jeedom.cmd.update en direct, ça sera toujours compatible en 4.3 du coup ?

Non ca marchera plus car ca peut dans certain cas etre un tableau et non une function. Dans le core on a ca mtn :

if(typeof jeedom.cmd.update[_params[i].cmd_id] == 'function'){
      jeedom.cmd.update[_params[i].cmd_id](_params[i]);
}
for(var j in jeedom.cmd.update[_params[i].cmd_id]){
      jeedom.cmd.update[_params[i].cmd_id][j](_params[i]);
}
1 « J'aime »

donc pour un plugin qui a son propre widget toHtml ça continuera à fonctionner non ? si personne d’autre ne register une fonction update il n’y aura pas de tableau…

ça a l’air de fonctionner…

if(typeof jeedom.cmd.addUpdateFunction !== 'function') {
			jeedom.cmd.addUpdateFunction = function(id,func) {
				jeedom.cmd.update[id]=func;
			}
		}

Oui si personne enregistre une nouvelle fonction d’update ça marchera sans soucis. Vu qu’il y a peu de chance que ça arrive sur le dashboard ça ne devrait pas poser de soucis

Je n’ai pas réussi à trouver cette var, mais depuis la 4.0.62 il existe la fonction jeedom.version() :
image

C’est bien KO en 3.3.59:
image