Évite de rejouer les déclencheurs "affichage"/l'animation quand on est déjà sur l'écran ciblé
Bug remonté : cliquer sur une ligne de Répéteur "semblait recharger la page", et devenait impossible à recliquer une deuxième fois - alors que le graphe de logique voulu (modifier la donnée + rendre visible un détail + "Ouvrir la ligne cliquée") reste sur le MÊME écran que le Répéteur. Cause : showScreen() rejouait INCONDITIONNELLEMENT les déclencheurs "À l'affichage de l'écran" et relançait la timeline d'animation depuis le début à chaque appel - même quand l'écran cible est déjà celui affiché (le cas normal pour "Ouvrir la ligne cliquée" combinée à une action "Modifier un élément → Visibilité" sur le même clic, pensées pour fonctionner ensemble SUR le même écran qu'un Répéteur). Ça rejouait donc les animations d'entrée et pouvait faire repasser la visibilité à son état initial via un déclencheur "affichage", entrant en conflit avec l'action "Rendre visible" du même clic - d'où l'impression de rechargement, et le blocage : reflow/re-rendu qui se disputent avec l'état attendu. Fix : showScreen() ne fait plus rien du tout si l'écran ciblé est déjà celui affiché - aucun changement visuel à faire, donc aucune raison de rejouer son "premier affichage". Changer vers un écran DIFFÉRENT continue de tout rejouer normalement. Les trois actions du graphe restent déclenchées à chaque clic, sans plus se marcher dessus. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
b094342097
commit
96d017c21f
@@ -89,6 +89,18 @@
|
||||
}
|
||||
|
||||
function showScreen(id) {
|
||||
// Déjà l'écran affiché : rien à refaire. Sans ce garde-fou, l'action
|
||||
// "Ouvrir la ligne cliquée" (voir plus bas) — pensée pour révéler un
|
||||
// détail SUR LE MÊME écran qu'un Répéteur, en la combinant avec une
|
||||
// action "Modifier un élément → Visibilité" sur le même clic — rejouait
|
||||
// à chaque clic sur une ligne les déclencheurs "À l'affichage de
|
||||
// l'écran" et relançait la timeline d'animation depuis le début, ce qui
|
||||
// donnait l'impression trompeuse d'un rechargement de page (éléments
|
||||
// qui rejouent leur animation d'entrée, visibilité qu'un déclencheur
|
||||
// "affichage" repasse à son état initial en écrasant l'action "Rendre
|
||||
// visible" du même clic...). Aller vers un écran DIFFÉRENT continue de
|
||||
// tout rejouer normalement, comme un vrai premier affichage.
|
||||
if (id === window.currentScreenId) return;
|
||||
document.querySelectorAll('.playScreen').forEach(s => s.style.display = 'none');
|
||||
const el = document.querySelector('.playScreen[data-screen-id="' + id + '"]');
|
||||
if (el) {
|
||||
|
||||
Reference in New Issue
Block a user