Projet

Général

Profil

Bug #80921

affichage dynamique champ cassé suite à modif envoi événement wcs:change

Ajouté par Frédéric Péters il y a 8 mois. Mis à jour il y a 8 mois.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
05 septembre 2023
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

Description

js: fix fields prefilled with geocoding not triggering live update (#80858)

est le commit qui casse l'affichage dynamique de champs, qu'on rencontre dans #80920.

Vraisemblablement, ce qui était transmis en params :

$(this).parents('form').trigger('wcs:change', params);

ne l'est plus en faisant :

form.dispatchEvent(new Event('wcs:change', params))

(le contenu de params m'apparait ok).

Il y a peut-être une analyse à porter qui redescendrait de #80858 vers #78997, reprendre celui-ci je ne sais comment pour revenir à des événements jquery, et trouver une manière de faire différente pour s'interfacer dans l'évaluation live des champs, ou décréter que tant pis on garde le bug #78997 pour le moment. Ça me semblerait préférable à la chute actuelle.

Révisions associées

Révision 71ce5c95 (diff)
Ajouté par Corentin Séchet il y a 8 mois

js: fix dynamic fields update (#80921)

Historique

#3

Mis à jour par Robot Gitea il y a 8 mois

  • Statut changé de Nouveau à Solution proposée

Corentin Sechet (csechet) a ouvert une pull request sur Gitea concernant cette demande :

#4

Mis à jour par Corentin Séchet il y a 8 mois

J'ai été un peu vite en besogne dans #80858 : Il ne s'agissait pas d'un .addEventListener(...) qui n'attrapait pas un évènement lancé par un .trigger(...), mais un évènement lancé par un .dispatchEvent(...) qui n'était pas attrapé par un gestionnaire jQuery déclaré via :

$(parent).on('change input', '.child-selector', () => ... // $(child) == .child-selector)

Aucune idée de pourquoi, puisque :

$(parent)('.child-selector').on('change', () => ... // $(child) == .child-selector)

Fonctionne bien lorsqu'on émet un évènement via dispatchEvent. Donc en plus de repasser à du jQuery pour le trigger('wcs-change'), je suis repassé à .on pour le change sur les inputs : il y a des .trigger('change') par endroits, ça avait du casser d'autres choses.

A cause de la magie noire faite par jQuery par dessus la gestion d’évènements JS native, au moment où on a introduit du JS Vanilla pour l'évaluation live, on a commencé à tirer des fils dans toute la gestion d’évènements : on a utilisé des .addEventListener(...), qui demandent de migrer des .trigger(...) en .dispatchEvent(...), qui demandent à leur tour de migrer des .on(..) vers .addEventListener(...), etc. etc.

#5

Mis à jour par Robot Gitea il y a 8 mois

  • Statut changé de Solution proposée à Solution validée

Serghei Mihai (smihai) a approuvé une pull request sur Gitea concernant cette demande :

#6

Mis à jour par Robot Gitea il y a 8 mois

  • Statut changé de Solution validée à Résolu (à déployer)

Corentin Sechet (csechet) a mergé une pull request sur Gitea concernant cette demande :

#7

Mis à jour par Transition automatique il y a 8 mois

  • Statut changé de Résolu (à déployer) à Solution déployée
#8

Mis à jour par Transition automatique il y a 6 mois

Automatic expiration

Formats disponibles : Atom PDF