Projet

Général

Profil

Development #51688

préremplissage dynamique vers des champs de blocs

Ajouté par Frédéric Péters il y a environ 3 ans. Mis à jour il y a environ 3 ans.

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

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

(là ça ne passe pas).


Fichiers


Demandes liées

Lié à w.c.s. - Development #51330: préremplissage dynamique d'un champ sur la même pageFermé22 février 2021

Actions

Révisions associées

Révision c6a9bfb5 (diff)
Ajouté par Frédéric Péters il y a environ 3 ans

forms: allow dynamic prefill of block sub fields (#51688)

Historique

#1

Mis à jour par Frédéric Péters il y a environ 3 ans

  • Lié à Development #51330: préremplissage dynamique d'un champ sur la même page ajouté
#2

Mis à jour par Frédéric Péters il y a environ 3 ans

Voilà, deux endroits concernés, pour passer également sur les champs des blocs :

  • le code qui marque les champs à "suivre"
  • le code du live, pour fournir dans la réponse json les nouvelles valeurs de préremplissage

+ la petite mise à jour du js pour prendre ça en compte.

Pour être complet je pense qu'il y a un bug sur la situation de plusieurs blocs et uniquement certains à mettre à jour,

              if ($widget.is('.widget-prefilled') || $widget.is('.widget-readonly') || data.modified_field == 'user') {
                $widget.find('input, textarea').val(value.content);
              }

parce que ça va actualiser toutes les occurences, alors qu'il pourrait y en avoir certaines qui ont été modifiées manuellement.

Mais je souhaiterais ne pas me soucier de cette situation.

#3

Mis à jour par Thomas Noël il y a environ 3 ans

Frédéric Péters a écrit :

parce que ça va actualiser toutes les occurences (...)

Si je pige c'est parce que le selecteur « var $widget = $('[data-field-id="' + value.block_id + '"] [data-field-id="' + value.field_id + '"]'); » va pointer toutes les occurrences ?

Ca sonne un peu bizarre effectivement. On ne pourrait pas se cantonner à la première occurrence ? Parce que dans la gestion de la mise à jour $widget (lignes 310 et suivantes de qommon.forms.js), j'ai l'impression que ça peut faire n'importe quoi si $widget est un sélecteur sur plusieurs champs (genre le « var $select = $widget.find('select'); » il va faire quoi ?).

(disclaimer: pas testé en vrai, juste lu le code)

#4

Mis à jour par Frédéric Péters il y a environ 3 ans

cantonner à la première occurrence

On a changé il y a vraiment peu de temps le préremplissage sur les blocs de champs pour s'appliquer à toutes les lignes, donc plutôt non.

Pour le reste : "je souhaiterais ne pas me soucier de cette situation".

#5

Mis à jour par Frédéric Péters il y a environ 3 ans

(genre le « var $select = $widget.find('select'); » il va faire quoi ?)

Ce qui est attendu, il fournira les "select" enfants des divers widget matchés. (i.e. "ça va actualiser toutes les occurences").

#6

Mis à jour par Thomas Noël il y a environ 3 ans

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

Frédéric Péters a écrit :

(genre le « var $select = $widget.find('select'); » il va faire quoi ?)

Ce qui est attendu, il fournira les "select" enfants des divers widget matchés. (i.e. "ça va actualiser toutes les occurences").

C'est trop fort pour moi Javascript :-)

#7

Mis à jour par Frédéric Péters il y a environ 3 ans

Cela étant, ça me saoulait parce que j'aurais aimé quelque chose comme dans django où on peut "affiner" un queryset, mais j'ai ajouté dans la branche une boucle pour évaluer individuellement chaque ligne :

           if (value.content) {
-            if ($widget.hasClass('comment-field')) {
-              // replace comment content
-              $widget.html(value.content);
-            } else {
-              // replace text input value
-              if ($widget.is('.widget-prefilled') || $widget.is('.widget-readonly') || data.modified_field == 'user') {
-                $widget.find('input, textarea').val(value.content);
+            $widget.each(function(idx, widget) {
+              if ($widget.hasClass('comment-field')) {
+                // replace comment content
+                $widget.html(value.content);
+              } else {
+                // replace text input value
+                if ($(widget).is('.widget-prefilled') || $(widget).is('.widget-readonly') || data.modified_field == 'user') {
+                  $(widget).find('input, textarea').val(value.content);
+                }
               }
-            }
+            });
#8

Mis à jour par Frédéric Péters il y a environ 3 ans

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

Je l'ai poussé ainsi,

commit c6a9bfb5350abd6b551254289a9a474d770dd44e
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Fri Mar 5 10:23:56 2021 +0100

    forms: allow dynamic prefill of block sub fields (#51688)
#9

Mis à jour par Frédéric Péters il y a environ 3 ans

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

Formats disponibles : Atom PDF