Options graphiques de la modal history générent une erreur quand il y a plusieurs courbes

Bonjour,

BugReport
Les options qui permettent la gestion des courbes ont été rajoutées dans la modal history (merci à son auteur car je trouve que ça manquait vraiment) mais il semble qu’un cas peu connu du grand public n’ait pas été pris en compte, à savoir quand on fait Ctrl + Click sur commande historisée cela affiche tous les historiques de la tuile et donc les options (prévues pour une seule série) génèrent une erreur :
image

Page concernée : Dashboard et toutes les pages qui permettent d’ouvrir une modal history
Version Core : 4.4.2

Etape pour reproduire le Bug :
Ctrl + Click sur une tuile qui a plusieurs commandes historisées, puis action sur une des options suivantes :
image

Selon moi il suffit de désactiver ces options si plusieurs courbes sont affichées comme dans la page history.

Bonjour,
Va pas etre simple ce soucis, je viens de pousser un truc la deja tu peux tester et me dire si ya toujours l’erreur ?

Bonjour Loic,

Merci pour le retour.
Non malheureusement ça ne fonctionne pas par contre avec cela ça fonctionne :

Voulez-vous un PR ?

Bonjour,
A oui je veux bien ca m’évitera une erreur de copié/collé

C’est fait.

Bonsoir,

Si je peut me permettre :grin: , pour être en parfaite harmonie avec le code déja présent, il faudrait plutot utiliser self.loadIds.length au lieu de _cmdIds.length, et pourquoi pas le mettre direct dans l’initiation de la variable d :

          success: function(data) {
            self.done -= 1
            let d = (data && data.cmd && data.cmd.display && self.loadIds.length == 1) ? data.cmd.display : {groupingType:'', graphType: 'area', graphDerive: '0', graphStep: '0'}
            document.getElementById('sel_groupingType').value = (d.groupingType != null ? d.groupingType : '')
            document.getElementById('sel_chartType').value = (d.graphType != null && d.graphType != '' ? d.graphType : 'area')
            document.getElementById('cb_derive').checked = (d.graphDerive == '1')
            document.getElementById('cb_step').checked = (d.graphStep == '1')
            if (self.done == 0) {
              self.setModal()
            }
          }

ensuite pour disable les options faudrait le faire dans le setModal qui est appelé qu’une seule fois.
il suffit simplement de rajouter un else au code déja présent :

      //only one history loaded:
      if (this.loadIds.length == 1) {
        if (isset(jeedom.history.chart[this.__el__]) && isset(jeedom.history.chart[this.__el__].chart)) {
          let titleEl = this.modal.querySelector('div.jeeDialogTitle > span.title')
          let curTitle = titleEl.innerHTML
          titleEl.innerHTML = curTitle  + ' : ' + jeedom.history.chart[this.__el__].chart.series[0].name
        }
      } else {
        document.getElementById('div_historyOptions').querySelectorAll('input, select, a').forEach(_ctrl => {
          _ctrl.addClass('disabled')
        })
      }

ainsi qu’un nouveau div (id = div_historyOptions) qui encadre les options

<div id="div_historyOptions"> 
  <div class="options col-lg-4" style="display:none">
...

Je peut PR si besoin.

1 « J'aime »

En effet votre proposition me semble plus appropriée et optimisée, je ne suis pas encore au stade de l’harmonisation parfaite et quand Loic dit que ça ne va pas être simple je suis déjà en panique. :sweat_smile:
Toutes vos propositions me semblent cohérentes et logiques avec vos explications très claires.
+1 pour le PR.

PS : attention de ne pas prendre ce bouton dans le div de groupement :
image

PR fait a l’instant :wink:

1 « J'aime »

en faite je m’aperçois que dans la page history quand choix multiple, les dates début et fin ne sont pas sélectionnable, le code que j’ai PR fait la même chose, en revanche je me demande pk rendre non sélectionnable ?

Je reproduis en 4.4 mais pas en 4.3, je ne pense pas que ce soit volontaire…

Nouveau PR fait pour la partie modale, avec autorisation de changer les dates, j’ai aussi changer l’id div_historyOptions par div_modalHistoryOptions car il y avait du css derrière

1 « J'aime »

J’ai un autre PR sous le coude pendant qu’on est sur la modale history , mais ca demande votre avis :

Lorsqu’on change une option, la page se reload et les options sont automatiquement masqué, il serait mieux de garder cet Accordion ouvert ?

Bonjour,
Peux tu détailler ?

Bonjour,

Bien vu !

Moi je laisserais ouvert mais personnellement je n’aime pas cette flèche donc mon avis n’est pas très objectif.

Il parle de la flèche qui permet de masquer les options si j’ai bien compris :
Animation

Ok alors oui faudrait peut etre laisser ouvert effectivement

J’ai fait un PR pour ça du coup.

PR fait a l’instant pour garder les options ouvert lors d’un reload.

1 « J'aime »

Top merci bcp je merge ça semaine prochaine

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.