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

Mode management (suivi) #1003

Open
AnneHuSKa opened this issue May 15, 2024 · 2 comments · May be fixed by #1047
Open

Mode management (suivi) #1003

AnneHuSKa opened this issue May 15, 2024 · 2 comments · May be fixed by #1047
Labels
Type: Feature New feature

Comments

@AnneHuSKa
Copy link

AnneHuSKa commented May 15, 2024

  • voir les échanges avec Estanp
    => proposition de Jonathan

Dans l'issue Bowie générique, on liste les sujets à garder en mémoire lors des tests

@AnneHuSKa AnneHuSKa added the Type: Feature New feature label May 15, 2024
@Grafikart
Copy link
Collaborator

Grafikart commented May 21, 2024

Le mode management doit permettre de modifier les valeurs entrées dans les formulaire en prenant en compte les différents états des variables.

  • COLLECTED, la variable entrée par l'utilisateur
  • EDITED, variable modifiée par l'administrateur
  • FORCED, variable modifiée par une valeur calculée

Cela se traduit au niveau de l'interface par de nouveaux boutons situés à droite des champs qui permettent d'agir sur la valeur et son état.

On veut aussi pouvoir suivre l'historique des changement avec plusieurs valeurs associé à chaque réponse.

Proposition technique

D'après les besoins, Lunatic ne peut pas porter la responsabilité de cette logique car l'état des variables et la priorité dans le choix de la valeur est dépendant de la logique choisit par l'orchestrateur (la notion de "valeur la plus récente" varie en fonction du contexte). Il est d'ailleurs prévu dans Lunatic de retirer cette notion d'état pour qu'il ne reçoive que les valeur associé à chaque question (plutôt qu'un objet d'état qu'il ignore actuellement).

// Lunatic actuel
{
  "NOM": {  
    "COLLECTED": "John", 
    "PREVIOUS": null, // Ignoré par lunatic 
    "FORCED": null,   // Ignoré par lunatic  
    "EDITED": null,   // Ignoré par lunatic  
    "INPUTTED": null, // Ignoré par lunatic
  }
}

// A l'avenir
{
	"NOM": "John"
}

C'est l'orchestrateur qui se chargera de réconcilier les variables à envoyer au hook useLunatic() en correspondance avec ses propre règles. Lunatic conservera lui les variable entrée dans le formulaire mais ne se charge pas de gérer l'état. Côté orchestrateur les variables pourront être sauvegardé avec une historisation.

   {
      "type": "PREVIOUS",
      "value": "John1",
      "timestamp": "2021-01-01T08:05:32:011"
    },
    {
      "type": "COLLECTED",
      "value": "John",
      "timestamp": "2022-01-02T08:05:32:011"
    },
    {
      "type": "EDITED",
      "value": "john doe",
      "timestamp": "2022-01-03T11:47:27:128"
    },
    {
      "type": "FORCED",
      "value": "John Doe",
      "timestamp": "2022-01-03T12:05:32:011"
    },
    {
      "type": "EDITED",
      "value": "Jane Doe",
      "timestamp": "2022-01-04T11:47:27:128"
    }

Comme on le voit ici c'est l'ordre qui détermine la valeur à sélectionner pour l'affichage plutôt que l'état de la variable. Cette logique ne peut être portée que par l'orchestrateur qui a une connaissance de la logique métier (reprise des variable).

Implications côté orchestrateur

Dans le cadre de la solution précédente il y a plusieurs développement à prévoir côté orchestrateur :

  • Création d'une fonction qui permet de réconcilier les données pour les envoyer ensuite à plat à Lunatic (prendre la valeur la plus récente).
  • Écoute du changement des valeur (via onChange) pour enregistrer les modifications des variables dans l'historique.
  • Création de composants react pour créer les boutons de changement d'état (libellé de l'état de la variable, bouton reset...)

Implication côté Lunatic

Côté Lunatic il faudra prévoir un moyen de simplifier l'injection de composants avant et après un champs pour permettre l'intégration des nouveaux contrôles attendu pour la reprise des données.

Il faudra aussi prévoir un moyen de désactiver les filtres pour permettre une navigation dans le formulaire dans son intégralité en cas de besoin (à confirmer).

@AnneHuSKa AnneHuSKa changed the title Compléments mode management Mode management May 22, 2024
@AnneHuSKa AnneHuSKa changed the title Mode management Mode management (proposition) May 22, 2024
@laurentC35
Copy link
Contributor

Grafikart added a commit that referenced this issue Jun 24, 2024
@Grafikart Grafikart linked a pull request Jun 24, 2024 that will close this issue
@laurentC35 laurentC35 changed the title Mode management (proposition) Mode management (suivi) Aug 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Type: Feature New feature
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants