[Brouillon] Utiliser 2 selects (heures et minutes) sur le formulaire de plage d'ouverture #4971
+15
−2
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Edit : je passe cette PR en draft car j'aimerais creuser encore un peu le sujet Tod.
Contexte
Nous changeons ici la façon de saisir une heure de début de plage d'ouverture (et d'indisponibilité car c'est le même code).
Le picker actuel est un seul select qui contient les valeurs
00:00
,00:05
,00:10
->23:55
. Nous jugeons qu'il est peu pratique de naviguer ce select.Il s'agit de la V0 décrite sur cette fiche de pitch : https://www.notion.so/rdvs/Le-formulaire-des-plages-d-ouverture-1742b05ced418087b30dc0f1c0bfee78
Solution
En remplaçant le select unique par 2 selects, on facilite la saisie car on ne propose pas une liste immense, mais deux listes compréhensibles.
J'ai décidé d'essayer des incréments de 5 minutes, c'est un juste milieu entre le quart d'heure et la minute.
Côté technique
En invoquant
f.input :start_time, as: :time
on fait appel àActionView::Helpers::DateHelper#select_time
. Cette méthode génère un select pour les heures et un pour les minutes, mais pas pour les secondes. Cela a pour effet de faire crasher le processus de dé-sérialisation, qui intervient lorsque l'on instancie une absence avec des params.Il y a plusieurs solutions possibles, dont :
tod
pour s'assurer que le problème ne se produira pas ailleursJ'étais parti sur la solution 1 mais finalement je crois que je préfère la 2. En parallèle je vais ouvrir un PR pour proposer une modification de la gem.
La suite
Nous avons d'autres améliorations en tête :
Et bien sûr, le gros du sujet : permettre à l'agent de déclarer sa journée en une seule plage plutôt que d'avoir à créer une plage pour les matins et une autre pour les après-midi ! 🤪
Captures d'écran
Avant
Après