Les graphiques se mettent à jour automatiquement lors de l’arrivée de nouvelles valeurs - KO

Bonjour et Bonne année à tous.

J’ai mis en place la version 4.5.2 de Jeedom, dans l’annonce de la 4.5 il est indiqué « Les graphiques se mettent à jour automatiquement lors de l’arrivée de nouvelles valeurs ».

Lorsque je reste sur une page soit d’une vue ou soit d’un Design, les graphs intégrés ne se mettent pas à jour sans le rafraichissement de la page (comme avant en fait).

Y a t - il une action à mener pour que les graphs se mettent à jour automatiquement ?

Merci d’avance pour votre retour.

Hello,
dans le changelog quand on clique sur le lien en fin de phrase vers l’issue dans github on peut lire le titre « auto update graph on design ». Je pense (mais je n’ai pas plus creusé, je sais pas trop naviguer dans github :stuck_out_tongue: ) que cela ne concerne donc que l’affichage des graphiques dans un design.
@Loic peux-tu confirmer (je suppose que c’est toi zoic21 sur github :wink: ).

En fait le comportement est identique pour un design ou une vue.
La mise à jour ne se fait pas

Hello,

Il y a une boulette dans le code sur ce fichier core/js/history.class.js

Actuel en 4.5.2

jeedom.history.graphUpdate = function(_params) {
  for (var i in _params) {
    if(_params[i].cmd_id == ''){
      continue;
    }
    for(var chart in jeedom.history.chart){
      for(var serie in jeedom.history.chart[chart]){
        if(jeedom.history.chart[chart].chart.series[serie] && jeedom.history.chart[chart].chart.series[serie].options.id == _params[i].cmd_id){
          jeedom.history.chart[chart].chart.series[serie].addPoint([Date.now()+(-1*(new Date()).getTimezoneOffset()*60*1000),_params[i].value])
        }
      }
    }
  }
}

Corrigé :

jeedom.history.graphUpdate = function(_params) {
  for (var i in _params) {
    if(_params[i].cmd_id == ''){
      continue;
    }
    for(var chart in jeedom.history.chart){      
      for(var serie in jeedom.history.chart[chart].chart.series){
        if(jeedom.history.chart[chart].chart.series[serie] && jeedom.history.chart[chart].chart.series[serie].options.id == _params[i].cmd_id){
          jeedom.history.chart[chart].chart.series[serie].addPoint([Date.now()+(-1*(new Date()).getTimezoneOffset()*60*1000),_params[i].value])
        }
      }
    }
  }
}

J’ai modifié la ligne 163 :

      for(var serie in jeedom.history.chart[chart].chart.series){

Merci @Bison.
Etrange que cela soit passé à côté des tests unitaires car la fonction n’est pas effective, je sais toujours facile de critiquer :wink:
Par contre sais tu si cette modification sera intégrée lors d’une prochaine version ?

Probablement pas si personne ne fait rien

Je pourrais tenter de faire une PR demain mais pas simple de savoir vraiment sur quelle branche ça pourrait passer rapidement vu que les branches sont un peu en cours de remaniement.

A la rigueur on va essayer de mentionner @Aurelien et puis attendre ses conseils :slight_smile:

Aurelien, je fais quoi pour faire appliquer la correction sur la fonction jeedom.history.graphUpdate ?

@Franckybel, tu peux ajouter le tag bug sur ton post ?

EDIT : J’ai fais une PR en stable, on verra bien : fix graphUpdate function in history class by BisonJeedom · Pull Request #3178 · jeedom/core

C’est fait, bug inscrit

Bien vu, je vois que tu as dû jouer au chart et à la serie pour résoudre ce pb !

1 « J'aime »

Sinon il y a mon plugin jeeHistoGraph (autopub gratuite :grin:)

2 « J'aime »

Bonjour, chez moi, la mise à jour fonctionne suite à la modification de la ligne 163 mais elle se fait en dehors de la zone affichée à l’écran.
Il faut que je déplace l’index pour visualiser. Sur l’extraction ci dessous, on voit que la zone visualisée s’arrête avant 11h
image

Bonjour,

Je suis pas sûr de comprendre. Une nouvelle valeur est ajoutée, forcément, à la toute fin d’un graphique. Si tu visualises de façon volontaire sur une période qui ne montre pas la fin du graphique, ça ne me choque pas que tu ne puisse pas voir la nouvelle valeur se tracer.

Ce que je veux dire, c’est que par défaut, quand j’ouvre la vue, la plage de visualisation est figée et les nouvelles valeurs vont dans la zone non visible à droite. Il faut que je bouge la plage de visualisation une première fois vers la droite et ensuite la courbe évolue en temps réel.
Quand une seule courbe est affichée, il n’y a pas de problème.
Par contre, quand il y a plusieurs courbes, le fonctionnement est aléatoire et semble dépendre de l’évolution de le la courbe affichée sur la miniature du bas (la courbe jaune dans mon exemple)

Ah, oui, ok même soucis chez moi. En effet, ce phénomène est dans les vues. Dans un historique classique ça fonctionne comme il faut, que l’on demande une ou plusieurs commandes

Bonjour,
Je me demande si je l’avais pas fait exprès. Cette fonction avait deja était tenté en 4.3 ou 4.2 mais j’avais eu tellement de retour negatif de personne pas content que ca se mette a jour sur les vue/dashboard/design que j’avais du tout supprimer.

Hello Loïc,

Ah, ça je peux pas te dire, je ne me souvient pas d’avoir vu passer des échanges à ce propos. Personnellement ça me semble une bonne idée de permettre une mise à jour des graphiques à chaque arrivée d’une nouvelle valeur et j’ai pas eu l’impression qu’il manquait grand chose pour que ça fonctionne donc j’ai proposé une correction en pensant que c’était une erreur.

Par contre, comme tu l’indiques, ça peut gêner quand on est en train de lire un graph et qu’on reçoit une mise à jour.

Moi je rajouterais une case à cochée dans le bandeau du haut :

  • Soit pour bloquer l’update automatique en la cochant
  • Soit pour permettre un update automatique en la cochant

Peut-être que pour perturber le moins de monde possible, la 2eme solution serait la meilleure ? Ce n’est pas coché par défaut et quand quelqu’un veut un update automatique il coche la case ?

Tout dépend comment cela se fait. Sur jeedomconnect, les graphiques se mettent à jour à chaque nouvelle valeur, ce qui lance un nouveĺ affichage de la courbe: très désagréable visuellement.
Donc la mise à jour doit être « invisible » pour l’usager.

Antoine

Je suis plutôt d’accord (et c’est effectivement pénible sur JC), c’est pour ça que je propose d’adjoindre à fonctionnalité une case à cochée qui permettrait d’activer la mise à jour automatique des graphiques en la cochant. Comme elle serait décochée par défaut → pas d’impacts

1 « J'aime »

Bonjour

Dans le cas où la fonction temps réel des graphiques est implémentée, merci de préciser dans le changelog si la fonction est implémentée sur les vues ou les designs ou les 2.

Bonjour messieurs et bonne année,

Merci encore pour le travail réalisé :slight_smile:

Concernant l’option du rafraîchissement du graphique, on pourrait envisager une option non pas oui/non mais un délai tout « simplement ».

C’est ce que propose le logiciel grafana par exemple, permet suivant le cas de rafraichir régulièrement ou pas (voir capture d’écran).
Permet d’être complètement flexible et de fait conviendrait à l’ensemble des utilisateurs.

Que pensez vous de cette proposition ?

image

j’insiste peut être mais c’est le cas avec mon plugin jeeHistoGraph que je viens tout juste de mettre à jour pour y intégrer les graph 3D :wink:

1 « J'aime »