[BETA] Vue JSON ne fonctionne pas/plus

Bonjour,

Je suis en

  • jeedom alpha 4.4.0
  • jmqtt beta version du 2023-02-07 01:01:23

Depuis quelques temps (impossible de dire quand), je n’ai plus la vue JSON.
Qu’importe la vue choisie, la mise en page ne change pas.
Que j’ajoute manuellement une ou des commande info ou action, cela reste sans effet lorsque je sauvegarde.

Vue classique:

Vu JSON:

Que faire ?

Merci pour votre aide

Hello,

Dans ce post tu semblais dire que c’était OK pour la sauvegarde avec la version 2023-02-04, non ?

C’est KO depuis la version du 2023-02-07 ?
As-tu désactivé jQuery ? (je ne pense pas)
Peux-tu me fournir d’autres traces intéressantes et captures d’écran stp ?

Bad

Bonsoir,
@Bad, je confirme aussi.
Je n’avais pas testé sur le json.

OK, je n’arrive pas à reproduire en v4.3.15 et c’est plutôt pas mal.

Je pense que ça vient de ce commit :wink: :

Ca remarche en supprimant les tests if ($("#table_cmd").sortable("instance")), mais ce commit était justement là pour corriger un problème en v4.4…

EDIT : Pas trop de temps cette semaine, si ça ne concerne que l’alpha, je regarde de près ce weekend.

Pour info, même en commentant la totalité du PR + sortable , JSON → HS sans aucune erreur js :

image

jMQTT_1

Oui, j’ai exactement le même symptôme (le petit décalage)

Ok, merci :slight_smile:

J’ai peut-être une piste…

@kiboost peut sans doute confirmer :wink:

Voici l’ordre des évènements :

  • en stable : printEqLogic puis addCmdToTable
  • en alpha : addCmdToTable puis printEqLogic

C’est donc peut-être le core le « problème »

Edit :
J’ai trouvé, c’est le setTimeout() qui rend printEqlogic() asynchrone :

En mettant simplement printEqLogic(data) c’est good.

Faudrait s’assurer que ce ne pose pas de problème sur d’autres plugins.

PS : j’ai supprimé le timeout, à surveiller …

Je viens de faire cette modif.
image

Et cela refonctionne de nouveau !

Je vous tiens au courant s’il y a des effets de bords sur d’autres plugins.

Merci :slight_smile:

Bon, je me suis peut-être emaballé trop vite: La sauvegarde ne fonctionne pas lorsque j’ajoute deux entrées:

Alors, du coup, je supprime toutes les lignes (sauf celles que je veux garder)

Et lorsque je sauvegarde, il me dit bien que 2 commandes sont ajoutées, mais elles ne s’affichent pas:

Bonsoir,

J’ai une piste :

dans la function saveEqLogic du plugin il y a une boucle qui permet de supprimer les commandes qui ont un id et name vide :

hors le core semble maintenant envoyer un null pour l’id
En remplaçant par
if ((_eqLogic.cmd[i].id == "" || _eqLogic.cmd[i].id === null) && _eqLogic.cmd[i].name == "") {

il n’y a plus l’erreur « Le nom de la commande ne peut pas être vide … »

Mais, et oui il y a un mais :rofl:

Lors du save, la commande n’est pas réellement save, une nouvelle erreur dans le http.log :

  • PHP Notice: Array to string conversion in /var/www/html/core/class/DB.class.php on line 84
  • PHP Notice: Array to string conversion in /var/www/html/core/php/utils.inc.php on line 140

En mettant quelque log supplémentaire, je me suis aperçu qu’après ce traitement :

_eqLogic.cmd, ne semble plus un array :

Avant
image

Après :
image

En commentant cette ligne _eqLogic = jmqtt.substractKeys(_eqLogic, $('#brokertab').getValues('.eqLogicAttr')[0]);

plus aucun soucis.

@Bad , je te laisse voir ceci, car je ne comprend pas a quoi sert cette ligne :wink:
du moins j’ai bien trouvé la fonction dans jMQTT.function.js, mais je ne la comprend pas :rofl:

1 « J'aime »

je suis épaté par tant de précisions. Cela dépasse mes compétences techniques, et de loin :slight_smile:

Re @kiboost , je revient vers toi pour la nouvelle méthode SortableJS.
Si je comprend bien, en 4.4, il n’est plus possible de faire un enable/disable.
J’ai regardé la lib, est j’ai pas trouvé d’équivalent.

Ne peut-on pas mettre une class en plus (Ex: .static) dans le filter du Sortable.create pour laisser au Dev la possibilité de désactiver le dragg sur certains éléments ?.

J’ai fait le test sur jMQTT, et c’est convainquant :wink:

Je peux registerer le sortable dans jeeFrontEnd.pluginTemplate.cmdSortable

Pour le desactiver : jeeFrontEnd.pluginTemplate.cmdSortable.options.disabled = true

C’est poussé, je le store aussi sur la table :

document.getElementById(‹ table_cmd ›)._sortable

en verifiant qu’il n’est pas null

Je vient de tester… et c’est good comme d’habitude :wink:
Merci, je veut dire Bad te remercie :rofl:

image

Hello,

Je viens d’implémenter le correctif suivant en m’inspirant de votre travail :

Si vous pouviez tester ce serait top :slight_smile:

Si c’est OK pour vous, je le passe en stable cette nuit.

Hello @Bad,

Testé sur la beta du 2023-02-07 01:01:23 avec Alpha :+1:
Testé sur stable du 2023-02-07 01:01:25 avec 4.3.15 :+1:

3 « J'aime »

Par contre sur Alpha toujours les problème cité ci-dessus. :wink: