[tools] Générateur de templates et widgets (V4)

J’ai modifié le code du plugin, et j’arrive à faire ce que je veux (et c’est bcp plus simple comme cela), enfin il me reste un peu de boulot, mais je sais comment avancer. Après le jour ou il y a une MAJ du plugin, soit je ne dois pas la faire, soit je dois refaire ma modif après.

Pour l’inclusion du toHtml, ça ne vaut probablement pas le coup de t’embêter à l’ajouter, surtout si c’est compliqué, et qu’il n’y a que moi qui en ait le besoin. Par contre si jamais tu as une idée sur comment je pourrais l’appeler depuis le code HTML, je suis preneur, rien que pour la mécanique (en gros, on parle d’appeler la méthode « toHtml » d’un eqLogic « Squeezebox », connaissant son Id par exemple, depuis l’HTML d’un widget créé dans ton plugin tools, qui viendrais du coup mettre à jour les tags de ce dernier).

@mib68

Je ne reproduis pas.tu as bien la dernière version ?

@ Dapolux

C’est pas compliqué et rapide à faire et tu ne pourras pas récupérer les infos via la méthode toHtml du plugin qui renvoit le code déjà formaté du widget. Si tu est ok je le pousse , mais je suis intéressé par le rendu :grin:

C’est bien evidement ok :slight_smile:, je teste dans la foulé.

Je suis en version 2020-05-11 18:16:29 donc la dernière me semble t’il je vien de retenté et ca fonctionne de nouveau, (j’ai désinstallé le plugin sonos hier soir je sais pas si cela peu avoir un lien)

@Dapolux

J’ai poussé une nouvelle version
Tu crées un nouveau widget et dans les paramètres optionnels tu mets comme nom « squeezebox_id » et l’id de la squeezebox en valeur. Ensuite tu récupères les infos comme dans le plugin squeezebox cad #artistalbum#,#titre#,#thumbnail# , etc …

@mib68

bizarre pas de lien avec sonos pourtant.

Je pense qu’il y a un souci de liens quelque part, dès que j’ajoute le paramètre optionnel « squeezebox_id », dans le rendu dans mon dashboard, j’ai: « 500 : Internal Server Error ».
En creusant un peu, je suis tombé dans la preview avec un msg d’erreur un peu plus parlant: Class ‹ jeedom\tools\squeeze_tools › not found (dans ton plugin, je pense que c’est la class qui est dans \tools\core\class

J’ai trouvé l’erreur là dessus, ta class s’appelle « squeezze_tools » au lieu de « squeeze_tools ».

Pour avancer, j’ai changé manuellement le nom, et je n’ai plus ce problème, par contre à l’affichage, les tags ne sont pas encore convertis.

Ps: J’ai un souci un peu plus gênant, peut être que c’est du au fait que j’ai désactivé / réactivé le plugin, mais le code de tous mes autres widgets de ton plugin a disparu, j’ai maintenant :« False » au lieu du code d’affichage. Je vais le récupérer grace aux sauvegardes, mais tu as peut être une idée de l’origine du pb?

Ps2: Si ça peux aider, j’ai regardé un peu les logs en debug, le replace ne renvoi pas les tags. Je pense que le problème vient du fait que dans la classe « tools », $queezebox n’est pas instancié par rapport au #squeezebox_id#

Ps3: Je confirme, je me suis inspiré de ce que tu as fait pour weather ($this->getId() ne renvoie pas le squeezebox_id):
if(isset($replace[’#squeezebox_id#’]) && is_numeric($replace[’#squeezebox_id#’])) {
$_id = $replace[’#squeezebox_id#’];
$queezebox = new \jeedom\tools\squeeze_tools($_id,$replace,$_version);
Je vais pouvoir faire mumuse maintenant, merci!!

C’est corrigé.

Par contre je n’arrive pas à reproduire que le code disparait . J’ai essayé d’activer et réactiver le plugin , effacer. Je sais que j’ai corrigé lors d’une dernière version une erreur lors de la duplication mais des templates.Tu avais la perte au niveau des templates et/ou widgets?

Oui template et widget, par contre étrangement 1 des widget avait gardé son code.
Je refait un copier/coller depuis la sauvegarde et c’est rentré dans l’ordre, donc pas de soucis majeurs pour moi. Je le mentionnai surtout au cas ou ce soit plus gênant pour d’autres à long terme.

Je pense savoir d’ou ça vient .
Tu avais effacé un équipement juste avant ça?

J’ai fait la MAJ, il manque dans la correction le renomage de la classe (et du fichier) en « squeeze_tools » au lieu de « squeezze_tools »

Yes, j’ai supprimé mon ancien widget que j’ai recréé.

J’espère que c’est bon maintenant.

Bon alors je rencontre quelques difficultés:

  1. Rafraîchissement:
    Lors de l’affichage de la page, les données remontent correctement, mais je n’ai aucune mise à jour si par exemple une chanson change (un coup de F5 et c’est bon par contre). J’ai repris l’HTML du Widget original (pour lequel le refresh fonctionne correctement hors tools), mais j’en déduis que j’ai peut être quelque chose à rajouter quelque part?

  2. Gestion des commandes « Liste »:
    Je veux gérer des favoris pour pouvoir lancer (playlist et/ou radio, présents dans les favoris LMS), pour ce faire, j’ai créé un virtuel avec 2 commandes:


    (Remarque: je gère les liste manuellement car pas encore trouvé de moyen de les récupérer dynamiquement, il faut juste retenir que les ID de cette liste correspondent aux numéros de favoris dans LMS que je peux lancer)
    J’ai créé un scenario qui lorsqu’il y a un changement de l’info dans mon virtuel, lance le favoris associé.
    Cela fonctionne très bien lorsque j’agis sur ce virtuel directement.
    J’ai ajouté la commande en question dans mon widget tools (car l’idée est tout de même de l’intégrer dans le widget en question), et là ça ne fonctionne pas toujours. C’est à dire que le changement de valeur coté widget tools n’impacte pas la liste coté virtuel, mais uniquement l’info. J’ai testé en cochant la première, puis la deuxième puis les 2 coches de listener dans la commande dans tools, ça ne marche pas.
    A priori, les listes repassent à la valeur « Aucun » au bout de quelques secondes et s’est ce qui pose problème: Si je change de favoris depuis le virtuel, puis que je change dans les secondes qui suivent le déroulant depuis le widget, ça fonctionne. Par contre si je change 30 secondes plus tard (donc après que la valeur soit repassée à « Aucun », soit «  », alors j’ai beau changer coté widget tools, ça n’impacte plus rien.

Si tu mets les commandes infos en listener dans la configuration , le widget devrait se mettre à jour?

Tu as mis le code html du virtuel ?

En fait initialement je n’avais aucune commande info puisque j’avais directement les valeur par tag grace au squeezebox_id. En ajoutant une seule des infos dans les commandes, et en cochant le listener (même si je n’affiche pas cette commande), ça fonctionne! Merci!! (j’ai juste un cas qui ne fonctionne pas, c’est lorsque la pochette se rafraîchi en décalé de quelques secondes. Dans la mesure ou il n’y a aucune commande d’info pour la pochette coté SB, donc pas de listener possible sur cette commande, et que c’est loin d’être prioritaire, ça restera comme ça, le titre et artiste est bien mis à jour)

J’ai mis une commande qui pointe sur le virtuel:
image
Puis j’ai inclus la valeur dans le widget via le tag
<div> <span class="hidden_title playlist_selector"> #playlist_selector# </span> </div>

C’est une commande « action » la liste.C’est pour ça que cela ne se met pas à jour. Donc le listener ne sert à rien.

Mais si tu changes le titre via cet liste , ça met peut-être à jour une commande info? Si oui, C’est celle ci qu’il faut mettre en listener

Oui ça met à jour une commande info:

Changement de titre coté virtuel (action) ==> Info mise à jour coté virtuel, également coté tools, et mise à jour de la liste coté widget tools (et le scenario se lance correctement)

Changement de titre dans la liste coté widget tools ==> les infos (coté tools et coté virtuel) se mettent à jour a peine quelques secondes, la liste (action) ne se met pas à jour coté virtuel (et le scenario ne récupère aucune valeur info, alors que le trigger lui même est le changement d’info)

Oui mais là c’est pas le plugin.

Si tu rafraîchis la page tu verras que la liste se remet selon le virtuel et ne prends pas en compte la valeur de la commande info , juste?

Bein disons que si je rafraîchis, alors que la valeur est resetée, et bien rien dans la liste ni dans l’info.

Pour moi, le souci que je n’arrive pas à résoudre est que (qui est peut être la source de mon pb), c’est d’avoir le même comportement que j’agisse d’un coté ou de l’autre:
Dès que je clic sur la liste coté tools (avant même d’avoir sélectionné une valeur), l’info associée est resetée, que dès que je sélectionne une valeur, celle ci est bien transmise à l’info (des 2 cotés), mais sans MAJ de la liste coté virtuel (alors que l’on pointe sur la même info commande), et surtout que cette valeur est à nouveau resetée au bout d’une paire de secondes.

ok , essaie de n’avoir que l’info une seule fois sur le design/dashboard pour tester.

Comme dit précédemment la liste (commande action ) ne se mettra pas à jour côté virtuel hormis si tu codes, . ce qui n’est pas le cas pour une commande action -slider par exemple car inclus dans le core de jeedom.