Erreur Javascript sur fonction recherche dans scénario

Bonjour,

Quand j’utlise la fonction recherche dans certains scénarios, j’ai un temps de latence élevé et une erreur Javascript (mais j’ai bien le surlignage du résultat de la recherche après le temps de latence et c’est après cette latence que j’ai l’erreur).

Jeedom 4.5.1
Chrome Version 143.0.7499.169 (version LInux)
Debian 12

Fichier	                                                                                                                   Ligne	Message
http://192.168.1.20/core/php/getResource.php?file=desktop/js/scenario.js&md5=6217c360e0e8fdc852e97dc4f9668a55&lang=fr_FR	2003	Uncaught TypeError: _code.querySelector(...).show is not a function

Salut,

L’erreur est systématique quand elle se produit ? Elle est reproductible avec un même scénario et une même recherche ?

Si tu ouvres le debugger du navigateur (F12), tu vois l’erreur dans la partie Console avec une pile d’appel pour voir d’où vient l’appel qui provoque l’erreur ?

C’est seulement depuis la version 4.5.1 ? Pas d’erreur en 4.4 ?

Salut,

Sur un même scénario oui. Avec le même mot clé de recherche également. Je n’ai pas essayé avec un autre mot de recherche.

Je n’ai pas eu le réflexe. Je ne sais d’ailleurs pas ce qu’est une pile d’appel :sweat_smile:

Je ne sais pas. Ici je remplaçais mes commandes trigger via le menu Recherche. En général j’utilise la recherche du navigateur.

Je vais tester après manger pour avoir un peu plus d’infos.

1 « J'aime »

Re-salut,

J’ai eu des difficultés à reproduire. Cela m’a pris cette fois 5-10 min alors que tout à l’heure cétait 80 % des scénarios ouverts à partir du menu Recherche.
J’ai réussi avec le mot-clé « trigger_name » (comme tout à l’heure). Avec d’autres mot-clés et le même scénario je n’ai pas reproduit.

Je suis passé par le menu Recherche, dans lequel j’ai cliqué sur le lien vers le scénario.

Uncaught TypeError: _code.querySelector(...).show is not a function
    at getResource.php?file=desktop/js/scenario.js&md5=6217c360e0e8fdc852e97dc4f9668a55&lang=fr_FR:2003:66
    at NodeList.forEach (<anonymous>)
    at HTMLDivElement.<anonymous> (getResource.php?file=desktop/js/scenario.js&md5=6217c360e0e8fdc852e97dc4f9668a55&lang=fr_FR:2001:89)
    at getResource.php?file=desktop/js/scenario.js&md5=6217c360e0e8fdc852e97dc4f9668a55&lang=fr_FR:55:69
    at domUtils.<anonymous> (getResource.php?file=desktop/js/scenario.js&md5=6217c360e0e8fdc852e97dc4f9668a55&lang=fr_FR:489:15)
    at domUtils.DOMReady (getResource.php?file=core/dom/dom.utils.js&md5=50cb8b30d40a2f5d42362691f8999066&lang=fr_FR:57:9)
    at domUtils.set [as DOMloading] (getResource.php?file=core/dom/dom.utils.js&md5=50cb8b30d40a2f5d42362691f8999066&lang=fr_FR:71:16)
    at domUtils.parseHTML (getResource.php?file=core/dom/dom.utils.js&md5=50cb8b30d40a2f5d42362691f8999066&lang=fr_FR:404:23)
    at Object.success (getResource.php?file=core/js/eqLogic.class.js&md5=13ca67beb5ed6f50863e78c04efe2df4&lang=fr_FR:492:25)
    at Object.success (getResource.php?file=core/js/private.class.js&md5=7b733ae0373ba388cc1760c4b3287ff6&lang=fr_FR:115:17)

Si je retappe un nouveau ou le même mot-clé dans le scénario il n’y a plus d’erreur. J’ai l’impression que ce n’est que la 1ère fois que tu ouvres le scénario avec la recherche déjà lancée.

EDIT : j’ai ouvert le même scénario (trigger_name est dans un bloc code) cette fois-ci directement, et dès que j’ai cliqué sur la loupe pour rechercher sans avoir tapé le moindre mot-clé j’ai eu l’erreur.

Uncaught TypeError: _code.querySelector(...).show is not a function
    at getResource.php?file=desktop/js/scenario.js&md5=6217c360e0e8fdc852e97dc4f9668a55&lang=fr_FR:2003:66
    at NodeList.forEach (<anonymous>)
    at HTMLDivElement.<anonymous> (getResource.php?file=desktop/js/scenario.js&md5=6217c360e0e8fdc852e97dc4f9668a55&lang=fr_FR:2001:89)

J’ai aussi essayé en navigation privée sans extension : pareil.

Je n’ai pas encore installé la 4.5 mais tu peux tester ça dans /desktop/js/scenario.js (ligne 2000) ?

Remplacer :

      //open code blocks for later search:
      document.querySelectorAll('#div_scenarioElement div.elementCODE.elementCollapse').forEach(_code => {
        _code.removeClass('elementCollapse')
        _code.querySelector('textarea[data-l1key="expression"]').show()
      })

par

// open code blocks for later search
document
  .querySelectorAll('#div_scenarioElement div.elementCODE.elementCollapse')
  .forEach(_code => {
    _code.classList.remove('elementCollapse');

    const textarea = _code.querySelector('textarea[data-l1key="expression"]');
    if (textarea) {
      textarea.style.display = 'block';
    }
  });
1 « J'aime »

Merci pour tes précisions pour indiquer où coller ton code :sweat_smile:

Ca a l’air de fonctionner : plus d’erreur dans les conditions où je reproduisais le problème (soit directement dans le scénario soit via le menu Recherche de Jeedom). J’ai effacé tes modifs et celui-ci est réapparu.

Je dois faire d’autres tests pour savoir s’il y a des effets de bord ?

Merci :slight_smile:

Bonne nouvelle :slight_smile:
Je ne vois pas de scénarios particuliers à tester, à voir si d’autres personnes en 4.5 ont rencontré le problème.
Je ne reproduis pas en 4.4.

J’ai modifié légèrement le code pour me rapprocher de l’original, ça devrait toujours être ok.
Je verrai pour faire un PR.

EDIT : PR créé sur la branche 4.5.2 :

2 « J'aime »

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