Projet

Général

Profil

Development #45695

blocs de champs : disposer d'une variable block_counter

Ajouté par Thomas Noël il y a plus de 3 ans. Mis à jour il y a environ 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
03 août 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Principalement pour l'affichage, disposer d'une variable block_counter, sur le modèle de forloop de Django, permettant de faire par exemple un titre ou un commentaire « Déclaration du véhicule n°{{block_counter.index}} »


Fichiers


Demandes liées

Lié à w.c.s. - Development #56939: Numéroter les blocs de champs à l'affichageFermé05 août 2021

Actions
Lié à w.c.s. - Development #67812: {{ block_counter.index}} n'est pas interprété lors de la saisie en BORejeté29 juillet 2022

Actions

Révisions associées

Révision 5d88590b (diff)
Ajouté par Lauréline Guérin il y a environ 2 ans

blocks: block_counter variable in context (#45695)

Historique

#2

Mis à jour par Lauréline Guérin il y a plus de 2 ans

#3

Mis à jour par Lauréline Guérin il y a environ 2 ans

#4

Mis à jour par Pierre Cros il y a environ 2 ans

Pour préciser l'usage (et vérifier que je le comprends comme il faut), ça va permettre de numéroter les occurrences d'un bloc de champs.

On va mettre dans le bloc de champs un champ titre ou un champ commentaire qui comprendra la variable {{bloc_loop.counter}}, cette dernière étant incrémentée à chaque occurrence.

Exemple, un bloc avec un champ titre "Enfant {{bloc_loop.counter}}" permettra d'afficher dans un formulaire dans lequel deux enfants sont renseignés :

Enfant 1
[...]
Enfant 2
[...]

#5

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

Oui, ou "Déclaration du véhicule n°1", "Déclaration du véhicule n°2", pour reprendre l'exemple de la description; techniquement ça permet éventuellement des débordements, dont il pourrait être utile de se prémunir.

#6

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

Pierre Cros a écrit :

Pour préciser l'usage (et vérifier que je le comprends comme il faut), ça va permettre de numéroter les occurrences d'un bloc de champs.
On va mettre dans le bloc de champs un champ titre ou un champ commentaire qui comprendra la variable {{bloc_loop.counter}}, cette dernière étant incrémentée à chaque occurrence.

Exactement. Et ça peut paraître un peu alambiqué comme formule, mais c'est pour rejoindre un peu la syntaxe de "forloop" (voir en bas de la doc de "for" dans Django https://docs.djangoproject.com/fr/2.2/ref/templates/builtins/#for).

A noter un petit glitch : avec 3 fois le blocs, on aura "nom 1", "nom 2" et "nom 3", tout va bien. Si on supprime le deuxième, il restera affiché "nom 1" et "nom 3". Mais après cliqué sur suivant, l'affichage sera bien "nom 1" et "nom 2" dans la page de recap finale (puisqu'il n'y a finalement que deux bloc). Aussi, si on ajoute un élément alors que l'affichage est un peu bogué (en mode "nom 1" et "nom 3"), ça redevient correct aussi, on a les trois "nom 1, "nom 2" (qui a le contenu du "nom 3" boguant) et "nom 3".

Ca ne me semble pas très gênant, peut-être au contraire ça peut faire comprendre à l'usager qu'il a bien supprimé le deuxième (puisqu'il reste 1 et 3). Ca me semble par ailleurs un bogue assez complexe à éviter (javascript).

Je valide en tout cas le code, si quelqu'un pense que le glitch d'affichage décrit ici est trop problématique, le dire vite avant que Zébu pouche.

#7

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

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

(...) techniquement ça permet éventuellement des débordements, dont il pourrait être utile de se prémunir.

Je n'ai pas compris ça, tu peux détailler ?

#8

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

Sur le patch (et l'intitulé du ticket), j'aurais dit block_loop plutôt que bloc_loop, mais même, pour quelque chose qui me semble plus clair que venir parler de boucle, block_counter, qui aurait block_counter.index et block_counter.index0.

Par rapport à mon commentaire précédent, "ça permet éventuellement des débordements", je serais pour avoir le with get_publisher().substitutions.temporary_feed(context): appliqué uniquement quand on est sur un champ ('title', 'subtitle', 'comment'), ne pas permettre dès ce patch que ça se trouve détourné dans du préremplissage ou autre, qu'on attende le moment d'un besoin explicitement décrit pour l'autoriser.

#10

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

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

Mis à jour par Lauréline Guérin il y a environ 2 ans

  • Sujet changé de blocs de champs : disposer d'une variable bloc_loop à blocs de champs : disposer d'une variable block_counter
  • Description mis à jour (diff)
#12

Mis à jour par Lauréline Guérin il y a environ 2 ans

  • Assigné à mis à Lauréline Guérin
#13

Mis à jour par Lauréline Guérin il y a environ 2 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 5d88590b00559fae7d8ddc4a36f5cc6c9fdb8588
Author: Lauréline Guérin <zebuline@entrouvert.com>
Date:   Fri Feb 25 15:49:26 2022 +0100

    blocks: block_counter variable in context (#45695)
#14

Mis à jour par Transition automatique il y a environ 2 ans

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

Mis à jour par Transition automatique il y a presque 2 ans

Automatic expiration

#16

Mis à jour par Lauréline Guérin il y a plus d'un an

  • Lié à Development #67812: {{ block_counter.index}} n'est pas interprété lors de la saisie en BO ajouté

Formats disponibles : Atom PDF