Skip to content

fix(mobile): garder la tooltip du départ sous la barre du haut - #629

Merged
PaulThiberville merged 2 commits into
mainfrom
issue/626-route-tooltip-top-bar
Oct 22, 2026
Merged

PaulThiberville merged 2 commits into
mainfrom
issue/626-route-tooltip-top-bar

Conversation

@PaulThiberville

Copy link
Copy Markdown
Collaborator

Résultat et problème

Quand on sélectionne un parcours, depuis un marqueur ou un badge « 1 », la tooltip du départ passait derrière la pilule de recherche et les chips (constat de Paul, Redmi Note 9, 2026-10-22).

Cause : celle de #305, cas déjà couvert par son correctif, sur deux étages.

  1. Le cadrage par bounds est faux sur les deux systèmes. Dans @rnmapbox/maps 10.3.5, la marge demandée s'ajoute à celle que la caméra a déjà. Or la vue d'accueil a une marge, puisqu'elle suit la barre du haut et la sheet. Le départ arrive donc plus haut que screenPointOnFit ne le prévoit, sous la barre, et décalé à droite. Les mesures sont dans #305. Je l'ai reproduit aujourd'hui sur iOS à 100 % depuis main (capture « avant »).
  2. La règle de routeFramePadding plafonnait la réserve haute pour laisser 44 pt au tracé au-dessus de la sheet. Avec un résumé haut (texte agrandi), la tooltip passait donc sous la barre par construction.

Correctif, en deux commits :

  • fix(mobile): frame a selected route with its centre and zoom : c'est le commit bab02fc de la branche issue/305-route-frame-camera, repris par cherry-pick avec son auteur. Je l'ai rebasé sur main en résolvant les conflits avec tooltipWidth et tooltipPlacement (D-041). La caméra prend le centre et le zoom calculés par l'app (cameraOnFit, même projection que screenPointOnFit) avec la marge complète, sans bounds.
  • fix(mobile): keep the tooltip of a selected route under the top bar applique la règle précisée par Paul le 2026-10-22 : la tooltip du départ et toutes les étapes tiennent dans la zone visible, entre la barre de recherche et les pilules (+ 16 px) en haut et le résumé en bas. Le zoom n'est plus une contrainte : des pastilles qui se chevauchent sont acceptées, l'utilisateur peut zoomer.
    • En haut, la réserve vaut toujours au moins barre mesurée + 16 + tooltip mesurée, sans valeur fixe. L'écart sous la barre passe de 8 à 16 pt, la marge de la tooltip au bord (E-04). La moitié haute reste un plancher tant qu'elle laisse 44 pt au tracé.
    • En bas, la sheet garde sa marge. Le tracé prend la bande qui reste, même étroite, et la carte dézoome jusqu'à ce qu'il tienne. La sheet ne cède que s'il ne reste plus rien (bande de 1 pt).

Limites restantes

  • Le résumé compact de D-089 reste à faire dans Résumé compact et cadrage exact d'un parcours sélectionné (E-04) #305. Je n'y ai pas touché. Tant qu'il manque, la bande du tracé est très étroite en texte agrandi : la carte dézoome beaucoup et les étapes se chevauchent (capture XXXL).
  • La tooltip pend au-dessus du départ (D-084). Une étape située juste au-dessus du départ peut donc rester en partie sous la tooltip quand la tooltip ne peut pas passer dessous : c'est le cas du parcours « Jardin des Plantes », dont l'étape verte du haut est à moitié couverte. Ce comportement existait déjà sur main. Je l'ai déposé dans l'Inbox.

Fixes #626
Écrans : E-01, E-04
Dépendance : aucune. Reprend le commit bab02fc de #305 sans fermer #305.

Comment vérifier

  • pnpm turbo run lint typecheck --force, prettier --check . et pnpm --filter mobile test (280 tests) verts en local. Tests de la carte : 93, dont cameraOnFit et les nouveaux cas de routeFramePadding (la tooltip reste sous la barre quand la sheet et la tooltip sont hautes, le tracé est cadré dans la bande qui reste, la sheet ne cède que sans bande).
  • Testé sur iOS : simulateur iPhone 17 Pro, iOS 26.4, API locale et base seedée, à 100 % et en XXXL (le plus grand réglage standard, environ 135 %). Je n'ai pas fait d'essai à 150 % exactement : iOS n'a pas ce cran.
  • Android, à 100 % et 150 % (critères du ticket) : à vérifier par Paul, sur le Note 9 ou l'émulateur.
iOS 100 %, main (avant) iOS 100 %, marqueur (après) iOS 100 %, badge « 1 » (après) iOS 100 %, parcours court (après) iOS XXXL (après)

Sur ces captures, « De la Cité à Montparnasse » a 5 étapes. Avant le correctif, la tooltip passe sous les chips et sort à droite, et la dernière étape est coupée. Après, la tooltip est entière sous les chips et les 5 étapes sont au-dessus du résumé. En XXXL, la tooltip reste sous les chips, et les étapes sont regroupées au-dessus du résumé mais visibles. Le badge « 1 » donne le même cadrage qu'un tap sur le marqueur. Pour faire apparaître les badges en local, j'ai abaissé temporairement le réglage search.cluster_area_km2 dans la base locale, puis je l'ai retiré.

Rejouer sur simulateur depuis main, après la fusion, avec Docker et widoo-app-db-1 démarrés :

HOST=0.0.0.0 pnpm --filter api dev                         # API locale, port 8080
pnpm --filter mobile exec expo start --dev-client -c       # Metro, puis ouvrir Widoo sur le simulateur

Accessibilité inchangée : aucun composant ni libellé n'est modifié, seul le cadrage de la caméra change. Texte agrandi testé en XXXL sur iOS. L'essai à 150 % sur Android reste à faire (voir plus haut).

Formatage mécanique : non

Risque

Niveau : 1. Le changement porte seulement sur le cadrage de la caméra de la carte : aucun effet sur la sécurité, les données ou l'infrastructure. La revue OWASP ne s'applique pas.

Taille : commit 1 : 135 ajouts et 25 suppressions. Commit 2 : 81 ajouts et 32 suppressions. Les deux restent sous 400 lignes.

Retour arrière

Un revert de la PR suffit : il n'y a ni migration ni donnée.

🤖 Generated with Claude Code

PaulThiberville and others added 2 commits October 22, 2026 12:54
Fitting bounds, the native map adds the padding the camera already has
to the one given (measured on Android, same deprecated API on iOS): the
route landed elsewhere than screenPointOnFit expects, and the tooltip of
the start left the screen. The camera now takes the centre and zoom of
the fit, computed in the same projection, with the full padding.

(cherry picked from commit bab02fc, branch issue/305-route-frame-camera)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The padding of the camera gave the upper half to the tooltip but capped
its room to leave the route a touch target above the sheet: with a tall
summary, the tooltip of the start passed under the search pill and the
chips. The highest step now always sits the measured bar, a 16 point
gap and the measured tooltip below the top of the map, and the route
keeps whatever band is left above the sheet, the map zooming out until
it fits. The sheet gives way only when no band is left at all.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vercel

vercel Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
widoo-web Skipped Skipped Oct 22, 2026 11:10am UTC

@PaulThiberville

Copy link
Copy Markdown
Collaborator Author

Plan et décisions techniques :

  • Le commit bab02fc de Résumé compact et cadrage exact d'un parcours sélectionné (E-04) #305 est repris par cherry-pick, auteur conservé, avec la mention cherry picked from dans le message. Les conflits avec tooltipWidth et tooltipPlacement (D-041) sont résolus en gardant les deux. Je n'ai rien changé au calcul de cameraOnFit.
  • La règle de routeFramePadding suit la précision de Paul du 2026-10-22 : tout tient dans la zone visible, quel que soit le niveau de zoom. La barre ne cède jamais. La moitié haute cède en premier. La sheet ne cède qu'en l'absence de toute bande (leastRouteBand = 1 pt).
  • L'écart entre la barre et la tooltip passe de 8 à 16 pt, la marge de la tooltip au bord de l'écran (E-04).
  • Hors de cette PR : le résumé compact de D-089 (Résumé compact et cadrage exact d'un parcours sélectionné (E-04) #305), et le recouvrement d'une étape située juste au-dessus du départ par la tooltip (signalé dans l'Inbox).

@PaulThiberville
PaulThiberville merged commit 7efd915 into main Oct 22, 2026
6 checks passed
@PaulThiberville
PaulThiberville deleted the issue/626-route-tooltip-top-bar branch October 22, 2026 11:17
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.

Cadrer la sélection d'un parcours pour que la tooltip de la première étape reste sous la barre de recherche et les filtres (E-01)

1 participant