MTESSDev / FRW

Documentation et support de l'outil de création de formulaires web "low code"
5 stars 1 forks source link

Validation d'un champs obligatoire affiché sur une condition dans un groupe répétable #247

Closed jpbeaulieu1 closed 1 month ago

jpbeaulieu1 commented 2 months ago

Description du problème Dans un groupe répétable, j'ai un champ "Nom" qui s'affiche seulement si on sélectionne "Autre" dans un droplist. Il est obligatoire lorsqu'affiché. Quand le champs "Nom" n'est pas affiché, il y a un plantage dans la page de révision.

Étapes pour reproduire le bogue

  1. Configurer une section tel que définit plus bas
  2. Accéder au formulaire et naviguer à la section
  3. Sélectionner une valeur dans la liste différentes de "Autre"
  4. Aller à la page de révision
  5. BANG!

Si vous sélectionnez la valeur "Autre" dans la liste et saisissez un "Nom" et que vous allez à la page de révisions, il n'y a pas d'erreur

Comportement attendu Le champ masqué doit être ignoré et ne pas avoir de plantage dans la page de révision.

Captures écran image image image

pas d'erreur: image

Appareil utilisé/fureteur utilisé

Configuration de la section

#Ordre professionnel
        - section:
            fr: Ordres professionnels
            en: (eng) Ordres professionnels
          id: secOrdre
          components:
            - type: radio
              name: membreOrdre
              label:
                fr: Êtes-vous membre d'un ou de plusieurs ordres professionnels constitués conformément au Code des professions du Québec?
                en: (eng) Êtes-vous membre d'un ou de plusieurs ordres professionnels constitués conformément au Code des professions du Québec?
              options: yesno
            - type: radio
              name: eteMembreOrdre
              label:
                fr: Avez-vous été membre d'un ou de plusieurs ordres professionnels constitués conformément au Code des professions du Québec au cours des 5 dernières années? 
                en: (eng) Avez-vous été membre d'un ou de plusieurs ordres professionnels constitués conformément au Code des professions du Québec au cours des 5 dernières années?
              options: yesno

            - type: repeatableGroup
              name: ordres
              repeatable: true
              v-if: val('membreOrdre') === 'true' || val('eteMembreOrdre') === 'true'
              label:
                fr: Ordres professionnels
                en: Professional order
              instanceLabel:
                fr: "Ordre professionnel"
                en: Professional order
              addLabel:
                fr: Ajouter un ordre
                en: Add an order
              removeLabel:
                fr: Supprimer
                en: Remove
              components:
              - type: listeDeroulante
                name: nomOrdre
                additionals:
                  largeur: lg
                options: 
                  Ordre ingenieurs:
                    fr: Ordre des ingénieurs du Québec
                    en: (eng) Ordre des ingénieurs du Québec
                  Ordre architectes:
                    fr: Ordre des architectes du Québec
                    en: (eng) Ordre des architectes du Québec
                  Ordre technologues:
                    fr: Ordre des technologues professionnels du Québec
                    en: (eng) Ordre des technologues professionnels du Québec
                  Autre:
                    fr: Autre
                    en: (eng) Autre
              - type: text
                name: nomOrdreAutre
                label:
                  fr: "Nom"
                  en: "Name"
                v-if: val('ordres.nomOrdre', index) === 'Autre'
              - type: text
                name: numeroOrdre
                label:
                  fr: "Numéro"
                  en: (eng) Numéro

AB#82606

j0ber commented 1 month ago

Bonjour,

Désolé du délai, cet issue est passée inaperçue...

Je crois que le problème vient du fait que le champ liste déroulante N'A PAS DE LIBELLÉ.

Pouvez-vous essayer avec un libellé s.v.p. ?

Normalement TOUS les champs devraient avoir un libellé.

Merci!

jpbeaulieu1 commented 1 month ago

Bonjour

Même erreur

- type: listeDeroulante
  name: nomOrdre
  label:
    fr: Nom de l'ordre
    en: Name of the order
  additionals:
    largeur: lg
  options: 
    Ordre ingenieurs:
      fr: Ordre des ingénieurs du Québec
      en: (eng) Ordre des ingénieurs du Québec
    Ordre architectes:
      fr: Ordre des architectes du Québec
      en: (eng) Ordre des architectes du Québec
    Ordre technologues:
      fr: Ordre des technologues professionnels du Québec
      en: (eng) Ordre des technologues professionnels du Québec
    Autre:
      fr: Autre
      en: (eng) Autre
- type: text

https://formulaires.it.mtess.gouv.qc.ca/api/Soumettre/ObtenirChampsObsoletes/367000/REIBH01/0/DU0CTTKaK0qOI6bS2Oi7Bw

j0ber commented 1 month ago

Après vérification, tel que mentionné il faut spécifié un label (question accessibilité). Cela enlève la première erreur image qui est liée au fait que le contrôle de liste déroulante n'a pas de label.

Cependant la seconde erreur demeure, et c'est la plus importante. Il semble qu'il y ait un problème avec le traitement de nettoyage du modèle de données effectué côté backend. On voit les détails suivants dans l'erreur 500 : image

Le message ne semble pas bon car il n'y a aucune duplication du champ mentionné (ni d'aucun autre d'ailleurs). @anisite peux-tu regarder ça s.v.p. ?

J'ai créé un form très simple pour reproduire le problème "BUG_NETTOYAGE_MODELE_GROUPE".

Ouvrir le formulaire en ayant spécifié les données de pré-remplissage ci-dessous et aller à la page révision afin de constater le problème.


{
  "form": {
    "validAll": false,
    "EtatRevision": "initial",
    "PjManquantes": [],
    "membreOrdre": "true",
    "eteMembreOrdre": "true",
    "ordres": [
      {
        "nomOrdre": "Ordre ingenieurs",
        "numeroOrdre": "12345"
      }
    ]
  }
}
j0ber commented 1 month ago

Je constate un autre problème du côté frontend, dans cette situation le spinner reste là à tout jamais lorsque la révision est automatique dans la config (pas de bouton affiché). Je vais corriger ça.

anisite commented 1 month ago

@jpbeaulieu1 peux tu ajouter une propriété limit

 - type: repeatableGroup
   name: ordres
   limit: 10
   repeatable: true
   v-if: val('membreOrdre') === 'true' || val('eteMembreOrdre') === 'true'
        [...]

peu importe la limite, mais ajoute une limite je crois que ça va passer, confirme moi quand tu pourras, merci

j0ber commented 1 month ago

Nous avons ajouté une limite de 50 par défaut.

Le bogue ne se produit plus.

Cela dit je te suggère tout de même de mettre une limite réaliste sur tes repeatableGroup c'est préférable.

Une autre issue sera créée pour le bug du spinner affiché à l'infini lors d'une erreur au retour du nettoyage du modèle de données.