Développement #62533
Cellule Filtre : faire en sorte que les champs cochés statistiques s'affichent comme filtres quand on sélectionne un formulaire donné
0%
Description
Actuellement il faut passer par la configuration de la cellule pour pouvoir jouer avec ça.
Pour avoir une page unique permettant de remplacer avantageusement toutes les pages statiques w.c.s. pour chaque formulaire, il faut que ces filtres apparaissent "en front" quand on sélectionne un formulaire.
Files
Associated revisions
dataviz: reload chart filters cell to reflect subfilters (#62533)
History
Updated by Valentin Deniaud almost 3 years ago
J'ai regardé un peu ce ticket, as expected c'est pas évident.
Le fonctionnement normal des sous-filtres c'est :- sélection d'un formulaire
- wcs renvoie les données + les sous filtres liés au formulaire
- on enregistre ces sous filtres
- on les affiche sur le formulaire backoffice de la cellule
- sélection d'un formulaire sur la cellule filtre
- le clic sur rafraîchir déclenche le rechargement de toutes les cellules, normal
- chaque cellule récupère les données (normal) + les sous filtres qu'elle met en cache (parce qu'on ne peut pas juste faire un save() comme dans le scénario backoffice)
- cette mise en cache nécessite un ID unique généré au chargement de la page
- la cellule filtre détecte que ça y est tout le monde s'est rafraîchi, puis se rafraîchi elle-même en allant lire le cache des sous filtres de chaque cellule et en en déduisant les sous filtres à afficher
Updated by Valentin Deniaud almost 3 years ago
- File 0001-dataviz-reload-chart-filters-cell-to-reflect-subfilt.patch 0001-dataviz-reload-chart-filters-cell-to-reflect-subfilt.patch added
- Status changed from Nouveau to Solution proposée
- Patch proposed changed from No to Yes
Patch assez court au final, moitié de JS.
Updated by Frédéric Péters almost 3 years ago
Côté style JS, } else if(url.includes('?')) {
je serais assez pour l'esapce après le if. (il y en a deux autres).
dataviz-uuid
, pas formellement un uuid, pour éviter la confusion peut-être appeler ça différemment ?
Updated by Valentin Deniaud over 2 years ago
- File 0001-dataviz-reload-chart-filters-cell-to-reflect-subfilt.patch 0001-dataviz-reload-chart-filters-cell-to-reflect-subfilt.patch added
Frédéric Péters a écrit :
Côté style JS,
} else if(url.includes('?')) {
je serais assez pour l'esapce après le if. (il y en a deux autres).
Done
dataviz-uuid
, pas formellement un uuid, pour éviter la confusion peut-être appeler ça différemment ?
Renommé en filters-cell-id comme dans le python.
Aussi j'ai augmenté la durée du cache à 300 secondes, ça devrait limiter les chances qu'on perde les sous-filtres en cours de manipulation (si jamais ça arrive ça reste pas très grave, il faut juste cliquer une fois de plus sur le bouton).
Updated by Frédéric Péters over 2 years ago
combo/public/static/js/combo.public.js
} else if (url.includes('?')) { qs = '&';
C'est bizarre, window.location.search c'est la querystring (et son point d'interrogation), donc si ça existe c'est le if au-dessus, et si elle n'existe pas (et on tape un & derrière) et sinon c'est le else dessous (et on part d'une chaine avec juste "?").
Ce qu'on se trouve ici avoir c'est un data-ajax-cell-url qui contiendrait un point d'interrogation, ce qui arrive via
new_url = chart_cell.data('ajax-cell-url') + '?filters_cell_id=' + $('body').data('filters-cell-id') + '&' + $(this).serialize()
(un espace en trop devant le premier +).
mais ça vient donc mal se combiner en présence d'un window.location.search, où on va se trouver avec ...?filters_cell_id=XXX&plop=plop + le '?la-query-string&'.
Il me semble qu'avec l'introduction de la possibilité de query string dans data-ajax-cell-url il faut gérer un cas supplémentaire, dans mon faux js :
if (window.location.search and '?' dans l'url) { qs = '&' + window.location.search[1:] + '&'; } else if (window.location.search and not '?' dans l'url) { qs = window.location.search + '&'; } elif ('?' dans l'url) qs = '&'; } else { qs = '?'; }
(par exemple)
Updated by Valentin Deniaud over 2 years ago
- File 0001-dataviz-reload-chart-filters-cell-to-reflect-subfilt.patch 0001-dataviz-reload-chart-filters-cell-to-reflect-subfilt.patch added
Yep, revoilà avec une condition en plus
Updated by Valentin Deniaud over 2 years ago
- File 0001-dataviz-factorize-querystring-building-code-62533.patch 0001-dataviz-factorize-querystring-building-code-62533.patch added
- File 0002-dataviz-reload-chart-filters-cell-to-reflect-subfilt.patch 0002-dataviz-reload-chart-filters-cell-to-reflect-subfilt.patch added
Hop j'en profite que pas encore validé pour ajouter un 0001 qui factorise du code, ça réduit un peu la taille de 0002.
Updated by Frédéric Péters over 2 years ago
- Status changed from Solution proposée to Solution validée
+ if($('#chart-filters'))
Sur le style on n'a pas de règles mais quand même je préfère avec un espace derrière le if.
Updated by Valentin Deniaud over 2 years ago
- Status changed from Solution validée to Résolu (à déployer)
commit 7219f8983a582dc29d1f7d08142c037550b0479d Author: Valentin Deniaud <vdeniaud@entrouvert.com> Date: Wed Apr 27 18:03:08 2022 +0200 dataviz: reload chart filters cell to reflect subfilters (#62533) commit c8d3bb903f6643d13551764b2d74e9331fcda8e9 Author: Valentin Deniaud <vdeniaud@entrouvert.com> Date: Thu Jun 2 14:37:50 2022 +0200 dataviz: factorize querystring building code (#62533)
Updated by Transition automatique over 2 years ago
- Status changed from Résolu (à déployer) to Solution déployée
dataviz: factorize querystring building code (#62533)