Development #48503
Utiliser sessionStorage pour maintenir le contexte de soumission des cellules soumission BO
0%
Description
Ça devrait éviter de trop jouer avec les URLs et rendre la navigation au sein d'une session d'accueil d'une demande plus clair, de plus ça affiche clairement le contexte au niveau de la cellule de soumission et permet de le supprimer.
C'est spécialisé pour le cas 'téléphone' pour l'instant.
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a plus de 3 ans
Mmm, avoir une indépendance des onglets c'est quand même appréciable; faudrait pas trop que ça empêche ça, i.e. un truc assurément attaché au poste comme le numéro de téléphone, ok, mais je ne vois pas vers quoi ça pourrait être étendu.
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
- Fichier 0001-wcs-use-sessionStorage-to-store-current-submission-c.patch 0001-wcs-use-sessionStorage-to-store-current-submission-c.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Erreur sur un trigger.
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
Frédéric Péters a écrit :
Mmm, avoir une indépendance des onglets c'est quand même appréciable; faudrait pas trop que ça empêche ça, i.e. un truc assurément attaché au poste comme le numéro de téléphone, ok, mais je ne vois pas vers quoi ça pourrait être étendu.
J'utilise justement sessionStorage, il me semblait qu'à part dans chrome avec un middle-click ou window.open() normalement le sessionStorage est unique à l'onglet.
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
- Fichier Kazam_screencast_00001.mp4 Kazam_screencast_00001.mp4 ajouté
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
C'est un w.c.s. patché vite fait pour stocker/afficher le numéro de téléphone pour la démo, en vrai ça viendra de #48354.
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
Coté phonecalls ça peut s'utiliser comme ça :
window.sessionStorage.wcs_submission_context_channel = 'phone'; window.sessionStorage.wcs_submission_context_phone = phone_number; $(document).trigger('combo:submission-context-update'); /* parce que l'evènement storage est seulement lancé quand le storage est modifié dans d'autres pages; pas sûr que ce soit vraiment utile que je le gère, j'avais commencé avec localStorage */
Mis à jour par Frédéric Péters il y a plus de 3 ans
Cela étant,
En revanche, une session de navigation n'est valable que pour le contexte de navigation actuel, c'est-à-dire que le fait d'ouvrir une page dans un nouvel onglet ou dans une nouvelle fenêtre provoquera l'initialisation d'une nouvelle session de navigation, — https://developer.mozilla.org/fr/docs/Web/API/Window/sessionStorage
ce serait curieux d'avoir un comportement différent de Chrome. Mais c'est donc à tester.
Mis à jour par Frédéric Péters il y a plus de 3 ans
Sur le patch, pourquoi xstatic/jquery-ui.min.js ?
Pas fan de modifier les titres, s'il doit y avoir un contexte d'appel il peut/doit être fourni par genre la cellule phonecalls.html mise en barre latérale.
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
Frédéric Péters a écrit :
ce serait curieux d'avoir un comportement différent de Chrome. Mais c'est donc à tester.
Je viens de tester un middle click sur ma sous-page avec cellule de soumission perd le contexte (dans firefox). Et dans chromium aussi, fausse alerte donc, ça a du être corrigé depuis les commentaires dans StackOverflow et ailleurs.
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
Frédéric Péters a écrit :
Sur le patch, pourquoi xstatic/jquery-ui.min.js ?
Pas bien réveillé j'ai copié ça depuis une cellule lingo, c'est jquery tout court que je voulais.
Pas fan de modifier les titres, s'il doit y avoir un contexte d'appel il peut/doit être fourni par genre la cellule phonecalls.html mise en barre latérale.
J'ai peur que les gens le ratent et soient surpris, ensuite je ne sais pas si on peut espérer avoir cette barre à chaque fois qu'une cellule soumission est utilisée.
Mais je vais virer ça on pourra toujours le rajouter comme tu le souhaites ou avoir un autre code qui réagit à combo:submission-context-update.
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
- Fichier 0001-wcs-use-sessionStorage-to-store-current-submission-c.patch 0001-wcs-use-sessionStorage-to-store-current-submission-c.patch ajouté
- j'ai viré toute référence à jquery de Media, jquery est toujours présent
- j'ai aussi retiré la modification au titre de la cellule
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
- Fichier 0001-wcs-use-sessionStorage-to-store-current-submission-c.patch 0001-wcs-use-sessionStorage-to-store-current-submission-c.patch ajouté
Variable phone renommée en caller.
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
- Lié à Development #48356: phonecalls / fiche usager : ajouter le threading du caller de la page de recherche aux fiches usagers ajouté
Mis à jour par Thomas Jund il y a plus de 3 ans
Ne comprenant pas vraiment le pourquoi du ticket, je fais juste un retour syntaxique sur combo.submission.js
- Je ne comprends pas pourquoi `update_submission_href` est instancié pour window.onpageshow, pour document.onpageshow et à chaque lecture du script.
- la fonction sera lancée systématiquement à la présence du script, sans condition. Donc
- Soit le script est chargée seulement quand on en a besoin
- Soit il est toujours chargé mais dépend de la présence des éléments `.wcs-bo-submission-link` et dans ce cas le lancer uniquement en présence dans le DOM de ces éléments.
- `url` a une portée globale (non défini à l'aide de var en intro de la boucle each). C'est pas bien.
Sur les nouveaux scripts, on peut utiliser `const` et `let` à la place de `var`, on gagnera sur la refacto.
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
Thomas Jund a écrit :
Ne comprenant pas vraiment le pourquoi du ticket, je fais juste un retour syntaxique sur combo.submission.js
Oui effectivement: le besoin de base c'est de pouvoir ajouter aux URLs des liens pour la soumission backoffice des informations de contexte (canal d'accueil, téléphone, courrier, guichet, etc..) et des métadonnées, comme ici le numéro de téléphone dans le cas du canal téléphonique. Ces informations seront posées par une autre cellule sur la page en cours ou une page précédente dans la navigation (dans le cas d'usage qui nous intéresse actuellement, c'est par la cellule phonecalls qui affiche les appels téléphonique en cours, quand il existe un appel en cours ou qu'un nouvel appel arrive, le contexte est posé et l'évènement combo:submission-context-update est lancé).
On était parti initialement sur l'idée de passer ces informations dans l'URL, mais ça nécessitait de modifier toutes les URLs vers n'importe quel page de combo dès qu'un tel contexte est mis en place et j'ai trouvé ça un peu casse-gueule (facile de repartir d'une URL dans l'historique qui n'ait pas les bons paramètres, ou qui en ait des mauvais).
- Je ne comprends pas pourquoi `update_submission_href` est instancié pour window.onpageshow, pour document.onpageshow et à chaque lecture du script.
- alors c'est fait sur onload parce que le contexte étant maintenu dans sessionStorage il faut mettre à jour dès que la page s'affiche
- c'est aussi fait sur onpageshow parce que sur une navigation via le bouton Back du navigateur la page peut-être chargé depuis le cache sans évènement onload, dans ce cas c'est onpageshow qui le remplace (trouvé sur MDN)
- c'est fait aussi sur combo:cell-loaded parce que les cellules se chargent en Ajax
- et sur combo:submission-context-update parce que c'est l'évènement qui est lancé pour notifier que le contexte a changé
- la fonction sera lancée systématiquement à la présence du script, sans condition. Donc
- Soit le script est chargée seulement quand on en a besoin
Il est chargé via déclaration Media.js sur la cellule de soumission backoffice, donc la condition c'est qu'une telle cellule soit présente sur la page.
- Soit il est toujours chargé mais dépend de la présence des éléments `.wcs-bo-submission-link` et dans ce cas le lancer uniquement en présence dans le DOM de ces éléments.
Ce n'est pas nécessaire voir réponse précédent, le chargement et la présence de .wcs-bo... sont concomitants.
- `url` a une portée globale (non défini à l'aide de var en intro de la boucle each). C'est pas bien.
Yep je corrige ça.
Sur les nouveaux scripts, on peut utiliser `const` et `let` à la place de `var`, on gagnera sur la refacto.
Ok je mets let partout.
Mis à jour par Thomas Jund il y a plus de 3 ans
Merci pour les explications
c'est fait sur onload …
c'est aussi fait sur onpageshow parce que sur une navigation via le bouton Back du navigateur la page peut-être chargé depuis le cache sans évènement onload, dans ce cas c'est onpageshow qui le remplace (trouvé sur MDN)
Je soupçonne du coup que `pageshow` suffise, et que dans ton cas au chargement de la page la fonction soit lancée 3x. Mais pas testé.
Ok je mets let partout.
Même pas vrai :).
Dernière petite remarque, l'élément window est implicite, donc inutile de le noter
`window.sessionStorage.wcs_submission_context_channel`
identique à
`sessionStorage.wcs_submission_context_channel`
par exemple
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
- Fichier 0001-wcs-use-sessionStorage-to-store-current-submission-c.patch 0001-wcs-use-sessionStorage-to-store-current-submission-c.patch ajouté
- Fichier 0003-remove-update-on-onload-to-fixup.patch 0003-remove-update-on-onload-to-fixup.patch ajouté
- Fichier 0002-use-let-and-const-to-fixup.patch 0002-use-let-and-const-to-fixup.patch ajouté
Effectivement sans onload ça marche aussi.
Mis à jour par Thomas Jund il y a plus de 3 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit c48e3bf3c922730e610a79156657d230f751a3a0 Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Fri Nov 13 08:28:57 2020 +0100 wcs: use sessionStorage to store current submission context (#48503)
Mis à jour par Frédéric Péters il y a plus de 3 ans
- Statut changé de Résolu (à déployer) à Solution déployée
wcs: use sessionStorage to store current submission context (#48503)