Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Amélioration du fonctionnement des mosaïques (Publicodes / modèle / site) #1311

Open
Tracked by #2076
JuliePouliquen opened this issue Sep 22, 2023 · 4 comments
Open
Tracked by #2076

Comments

@JuliePouliquen
Copy link
Contributor

JuliePouliquen commented Sep 22, 2023

Usage

Les mosaïques introduisent les catégories ou sous-catégories où l’on ne sait pas encore quels sont les usages de la personne. Une fois ses usages sélectionnés, on peut poser des questions pour les préciser.

image

L’usage d’une mosaïque peut permettre de remplacer un grand nombre de questions fermées (oui / non). Sur l’exemple ci-dessus, sans mosaïque, nous aurions eu trois questions :

  • Possédez-vous un camping-car ?
  • Possédez-vous une caravane ?
  • Possédez-vous un van ? (enfin, lorsqu’on l’aura implémentée !)

D'un point de vue design, pour un usage optimisé à la fois sur mobile et desktop, une mosaïque doit comprendre de 3 à 12 réponses.

Fonctionnement

Les mosaïques n'ont pas été prévues par Publicodes. Notre usage est donc un "hack" de Publicodes pour pouvoir en faire.
Le fonctionnement côté modèle, et côté site, de ces mosaïques est complexe et pourrait être plus adapté à notre usage.

Côté (publi.)code

À ce jour, une mosaïque “standard” fonctionne comme une somme. Elle va sommer les empreintes des éléments. Pour chaque élément de la somme, nous définissons la formule de l’empreinte, et nous conditionnons cette empreinte au clic sur la mosaïque avec le paramètre “applicable si: présent”. Il faut donc rajouter une règle s’appelant élément somme . présent: qui est par défaut: non. Illustration ci-dessous :

divers . loisirs . sports:
   mosaique:
      type: selection
      clé: présent
   question: Quels sont les sports que vous pratiquez régulièrement ?
   titre: Pratiques sportives
   formule:
      somme:
         - balle ou ballon
         - aquatique
         - martial ou combat
    
divers . loisirs . sports . balle ou ballon:
   formule: XXX
   applicable si: présent
    
divers . loisirs . sports . balle ou ballon . présent:
   question: Pratiquez-vous un sport de raquette ou de ballon ? #La question ne sera pas affichée
   par défaut: non #pour que le sport ne soit pas coché par défaut
    
divers . loisirs . sports . aquatique:
   formule: XXX
   applicable si: présent

divers . loisirs . sports . aquatique . présent:
   question: Pratiquez-vous un sport aquatique ?
   par défaut: non
    
divers . loisirs . sports . martial ou combat:
   formule: XXX
   applicable si: présent

divers . loisirs . sports . martial ou combat . présent:
   question: Pratiquez-vous un art martial ou de combat ?
   par défaut: non

Pour ajouter en haut de la mosaïque l’option “aucun”, on procède par un ajout de règle sous mosaique:

   suggestions:
      aucun sport:
         balle ou ballon . présent: non
         aquatique . présent: non
         martial ou combat . présent: non

Il est possible d’attribuer une empreinte par défaut aux personnes n’ayant rien sélectionné (ou cliqué sur “Je ne sais pas”) en remplaçant la formule de la manière suivante :

   formule:
      variations:
         - si: choix utilisateur
           alors: empreinte sportif
         - sinon: empreinte par défaut
    
divers . loisirs . sports . choix utilisateur:
   description: l'utilisateur a-t-il fait un choix de sport ?
      formule:
         variations:
          - si:
              une de ces conditions:
                - balle ou ballon . présent
                - aquatique . présent
                - martial ou combat . présent
            alors: oui
          - sinon: non

Dans ce cas-là, c’est la règle empreinte sportif qui sera égale à la somme des empreintes des sports listés. Il faudra définir la règle empreinte par défaut comme la somme des valeurs par défaut des éléments :

divers . loisirs . sports . empreinte sportif:
   formule:
      somme:
         - balle ou ballon
         - aquatique
         - martial ou combat
    
divers . loisirs . sports . empreinte par défaut:
   formule:
      somme:
         - XXXXX #formule correspondant au calcul de l'empreinte par défaut "balle ou ballon"
         - XXXXX #formule correspondant au calcul de l'empreinte par défaut "aquatique"
         - XXXXX #formule correspondant au calcul de l'empreinte par défaut "martial ou combat"

La longueur du code à écrire est éprouvante et source d'erreur, et encore nous n'avons là qu'une mosaïque à trois éléments...

Pistes d'amélioration

Par défaut

Il serait idéal de ne pas avoir à passer par la règle "choix utilisateur" pour décrire que l'absence de choix doit découler sur le calcul de l'empreinte par défaut.

applicable si: présent

Il ne devrait pas être nécessaire de spécifier que les éléments sont décochés par défaut pas une règle spécifique à chaque élément de la somme. Ce devrait être le fonctionnement de la mosaïque que c'est une somme d'éléments non cochés et que tous les éléments cochés deviennent des règles qui s'appliquent car présentes.
Quelque-chose dans la mosaïque qui dirait "si clic alors: présent" et appliquerait ce paramètre à tous les éléments cliqués de la somme.

@florianpanchout
Copy link
Contributor

Est-ce qu'on est sur que toutes les mosaïques sont des sommes ? Par exemple "alimentation . boisson . chaude"

@JuliePouliquen
Copy link
Contributor Author

Est-ce qu'on est sur que toutes les mosaïques sont des sommes ? Par exemple "alimentation . boisson . chaude"

Très bonne question. C'était le cas jusque là. C'est bien le cas des boissons chaudes (c'est une somme des consos hebdomadaires de tasses de boissons chaudes multipliée par le nombre de semaines dans l'année).

Mais pour les sports, j'ai dû trouver un contournement, car le mécanisme que je cherchais à avoir était le suivant :
si tu coches : ça ou ça ou ça ou ça tu ajoutes ça (mais une seule fois)
si tu coches : ça ou ça tu ajoutes ça (une seule fois également)
si tu coches quoique ce soit tu ajoutes ça (une seule fois)

Ce n'est pas commun et c'est lié au fait d'ajouter une empreinte macro mais ça peut arriver (néanmoins je m'en suis sortie en transformant tout de même ça en somme de façon alambiquée).

@Clemog
Copy link
Contributor

Clemog commented Oct 12, 2023

Merci pour l'analyse !

Effectivement, je pense que c'est le moment de définir une nouvelle manière d'écrire ces mosaïques.

Jusqu'à maintenant, on suit cette logique: https://github.com/incubateur-ademe/nosgestesclimat-site/wiki/mosaic

Nous n'avions pas forcément anticiper l'aspect par défaut nécessaire pour les mosaïques qui doit finalement être indépendant de l'applicabilité et des valeurs de chaque élément de la mosaïque. Un "hack" particulièrement lourd niveau code (ce fameux "choix utilisateur") induit un comportement anormal au niveau de l'UI puisque la valeur par défaut est trompeuse...

Une autre évolution également, on ne souhaite pas forcément que la mosaïque possède un mécanisme somme des éléments de la mosaïque mais pourrait être une autre règle tout simplement

Une petite note sur l'ordre d'affichage des cartes qui posait pb dans certains navigateurs.

On voudrait pouvoir intégrer une valeur par défaut, de cette manière, mais aujourd'hui, la valeur n'est pas prise en compte ...

@Clemog
Copy link
Contributor

Clemog commented Oct 12, 2023

On voudrait pouvoir intégrer une valeur par défaut, de cette manière, mais aujourd'hui, la valeur n'est pas prise en compte ...

Si on revoit cette logique côté site seulement (ce qui peut etre car on pourrait set dans l'engine la valeur par défaut de la mosaïque à la règle artificiellement) mais on aurait alors 2 valeurs par défaut différentes selon une utilisation dans le test ou bien en "lisant" le modèle directement, dans la doc ou via un réutilisateur

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: 🔧 Model backlog
Development

No branches or pull requests

3 participants