Projet

Général

Profil

Development #48503

Utiliser sessionStorage pour maintenir le contexte de soumission des cellules soumission BO

Ajouté par Benjamin Dauvergne il y a plus de 3 ans. Mis à jour il y a plus de 3 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
13 novembre 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

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

Lié à Intégrations graphiques Publik - Development #48356: phonecalls / fiche usager : ajouter le threading du caller de la page de recherche aux fiches usagersFermé06 novembre 2020

Actions

Révisions associées

Révision c48e3bf3 (diff)
Ajouté par Benjamin Dauvergne il y a plus de 3 ans

wcs: use sessionStorage to store current submission context (#48503)

Historique

#1

Mis à jour par Benjamin Dauvergne il y a plus de 3 ans

  • Assigné à mis à Benjamin Dauvergne
#2

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.

#3

Mis à jour par Benjamin Dauvergne il y a plus de 3 ans

Erreur sur un trigger.

#4

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.

#6

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.

#7

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 */

#8

Mis à jour par Frédéric Péters il y a plus de 3 ans

à part dans chrome

qui est genre quoi, 80% ?

#10

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.

#11

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.

#12

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.

#13

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.

#14

Mis à jour par Benjamin Dauvergne il y a plus de 3 ans

  • 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
#16

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é
#17

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

  1. Je ne comprends pas pourquoi `update_submission_href` est instancié pour window.onpageshow, pour document.onpageshow et à chaque lecture du script.
  2. 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.
  3. `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.

#18

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).

  1. 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é
  1. 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.

  1. `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.

#20

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

#22

Mis à jour par Thomas Jund il y a plus de 3 ans

  • Statut changé de Solution proposée à Solution validée
#23

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)
#24

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

Formats disponibles : Atom PDF