TypeError /error: document.getElementById(...) is null /async:true /type:POST /dataType:json /action:getWidgetHelp

Salut,

On va dire que c’est « ma » faute.

Le titre du sujet était mauvais (cf. Comment nous aider à vous aider - ou Comment poser une bonne question?) du coup j’ai essayé de reproduire pour pouvoir copier coller l’erreur et adapter le sujet (vu qu’on n’avait qu’un screen c’était pas pratique) et je n’ai pas vu que c’était une autre erreur.

Donc il semble qu’il y ait deux problèmes à résoudre :sweat_smile:

Moi j’ai juste ouvert la config avancée de la commande.

J’ai plus l’habitude de travailler sur l’alpha :laughing:.
Mais j’ai rallumer une VM beta que je vient tout juste mettre a jour, et je reproduit aucune des 2 erreurs. Mais ma VM n’est pas très garnie en plugin, widget …

Ptite question pour l’erreur indiqué dans le titre :
L’erreur intervient que sur un certain plugin ?
quelle est le widget utilisé ?

J’ai tapé au hasard sur ma vm en beta.
Je ne vois pas comment le widget peut avoir une influence dans la config :thinking:

J’essaie de prendre quelques minutes demain pour cerner un plus le problème.

Je cherche juste des pistes, étant donné que la conf d’une commande vient extraire les <div> des <template> présent dans le widget pour les afficher dans le #cmd_display

et que le titre semble correspondre…

J’ai regardé un peu ce matin en Alpha, je m’aperçois qu’il y a plusieurs erreurs possibles en fonction du $_widgetPossibility utilisé dans la class Cmd des plugins …

Ah oui pas pensé à ça, c’est une bonne piste.
Je test plus tard.

Bon effectivement le cas sur lequel j’étais tombé c’est pour #plugin-arlo pour lequel j’ai un toHtml et du coup un $_widgetPossibility sur la class cmd

du coup c’est la ligne 963 de cmd.configure.php qui crash car le div optionalParamHelp n’existe pas; en effet dans jeedom\core\desktop\modal\cmd.configure.php ligne 772:

on test si l’option est activé avant d’écrire le div, ce qui n’est pas mon cas:

          <?php if ($cmd->widgetPossibility('custom::optionalParameters')) {
          ?>
            <legend><i class="fas fa-pencil-ruler"></i> {{Paramètres optionnels widget}}
              <a class="btn btn-xs pull-right" id="bt_addWidgetParametersCmd" style="position:relative;right:5px;"><i class="fas fa-plus-circle"></i> {{Ajouter}}</a>
            </legend>

            <div id="optionalParamHelp"></div>
...

@J2B
peux-tu nous dire sur quel plugin c’était? car ca va avoir son importance

J’ai PR une correction en Alpha :

1 « J'aime »

C’est merged en Alpha, Mips si tu peux faire un retour quand tu auras du temps, merci.

Je me met un rappel, merci

J’ai testé et je n’ai plus l’erreur; je ne l’ai plus en beta non plus d’ailleurs; p-e que ca a déjà été remonté.
Par contre il manque une partie de l’affichage maintenant

en stable:

en beta/alpha:

mais je dois surement rajouter une entrée dans widgetPossibility si je veux gérer ca.

Hello,

Effectivement Loic a poussé le PR en beta aussi.

A ce qui est affiché, je dirai que tu as déja cette entrée, tu dois avoir :

public static $_widgetPossibility = array(
  'custom' => true,
  'custom::optionalParameters' => false,
  'custom::graph' => false
);

En Stable, le custom::graph n’existe pas, c’est pour ca qu’il est toujours affiché. Pour le masquer il faudrait utiliser 'custom' => false mais cela impliquera de masquer aussi le custom::layout

En Alpha c’est pas le cas, custom::layout n’est plus lié a custom
Voici mes notes lorsque j’ai testé cette partie en Alpha :

public static $_widgetPossibility = array(
    /*  onglet Affichage */
    'custom' => true, // false = masque l'onglet.
    'custom::graph' => true, // false = masque le paramètrage du graphique de fond. Si pas initier = custom
    'custom::optionalParameters' => true, // false = masque les paramètres optionnels de l'équipement. Si pas initier = custom
    'parameters' => array(array('name' => 'test','allow_displayType' => true, 'type' => 'input', 'default' => '#FFFFFF', 'allow_transparent' => false)), // Si initié + custom=true, affiche les paramètres du template.
    
    /*  onglet Disposition */
    'custom::layout' => true, // false = masque l'onglet.
  );

Edit :
Petite précision qui peut être utile pour d’autre, ceci est valable exclusivement si le plugin utilise toHtml, dans le cas contraire tout sera affiché quelque soit le $_widgetPossibility.

1 « J'aime »