Skip to content

Conversation

LeSim
Copy link
Member

@LeSim LeSim commented Sep 26, 2025

Constat: il est aujourd'hui difficile de conditionner une section de formulaire.
Pour savoir si un champ est visible on doit vérifier les parents, et il n'est pas facile de trouver une section parente aujourd'hui.

Proposition : on relie en mémoire les champs entre eux par des méthodes (children, parent). Le code se situe dans link_parent_and_children!

Ainsi, il devient trivial de faire un def visible? = parent.visible? && conditional.compute (champ_conditional_concern.rb)

Ce qui marche à la fois pour l'affichage et pour la validation (on ne valide pas un champ caché)

Bonus :

  • une fois les champs liés entre eux, les composants section, repetition, row deviennent beaucoup plus simple car ils n'ont plus besoin de récursivité pour construire l'arbre

PLAN :
idéalement, il faudrait dérouler par étape

  • mep de la méthode link_parent_and_children pour la lecture
  • interdiction de mettre des conditions sur les sections dans l interface admin + tache de suppression des conditions
  • mep pour l'édition (impact aussi la mise a jour turbo des champs, la visibilité et la validation)
  • ré-autorisation de condition sur les sections
  • mep pour afficher un dossier a la version soumise (UX à déterminer)

Par ailleurs:

  • cleaning global pour tirer bénéfice de l'arbre, calcul des niveaux d imbrications etc ...
  • voir comment construire l'arbre au plus tot dans la stack pour ne plus se poser de questions.
    • Peut être renommage de champs -> db_champs et ajout de def champ(revision: nil) qui accède aux champs en arbre
  • ajout d un modèle RepetitionRow, aujourd'hui les rows sont représentés en base par des RepetitionChamp, ce qui n'est pas top
  • L'arbre a besoin des RevisionTypeDeChamp pour être construit et c'est une données quasi static, voir si on a des pbs de perf / besoin de cache
  • L'arbre aujourd'hui travaille sur les champs, mais pourrait travailler uniquement sur les RevisionTypeDeChamp ce qui permettrait de faire des sommaires sans dossier fictif

Copy link

codecov bot commented Sep 26, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 89.55%. Comparing base (de86565) to head (a720d7f).
⚠️ Report is 7 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main   #12123   +/-   ##
=======================================
  Coverage   89.54%   89.55%           
=======================================
  Files        1331     1332    +1     
  Lines       30142    30147    +5     
  Branches     6308     6298   -10     
=======================================
+ Hits        26992    26997    +5     
  Misses       3150     3150           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@LeSim LeSim force-pushed the another_dossier_tree branch from e27477a to c200b5e Compare September 26, 2025 16:02
@LeSim LeSim changed the title Un autre arbre WIP: Un autre arbre Sep 27, 2025
@LeSim LeSim force-pushed the another_dossier_tree branch 4 times, most recently from 6d77d3a to 8ccd562 Compare October 4, 2025 13:15
@LeSim LeSim force-pushed the another_dossier_tree branch 4 times, most recently from 75785f6 to 6593d1e Compare October 6, 2025 07:29
@LeSim LeSim force-pushed the another_dossier_tree branch from 6593d1e to 54188ab Compare October 6, 2025 08:35
@LeSim LeSim force-pushed the another_dossier_tree branch from 54188ab to 1bbc102 Compare October 6, 2025 08:42
@LeSim LeSim force-pushed the another_dossier_tree branch from 1bbc102 to 16a6221 Compare October 6, 2025 10:08
in repetition if head.repetition?
rows = row_ids(repetition).map do |row_id|
repetition_champ = champs
.filter { it.type == 'Champs::RepetitionChamp' }
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
.filter { it.type == 'Champs::RepetitionChamp' }
.filter(&:row?)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants