Développement #61083
dataviz, extension à l'API pour permettre des sous-filtres
0%
Description
Dans l'API stat des différentes briques, on expose d'abord un catalogue des statistiques disponibles avec d'éventuels filtres par statistiques, type :
{ 'data': [ { 'name': 'Nombre de demandes', 'url': 'https://wcs.dev.publik.love/api/statistics/forms/count/', 'id': 'forms_counts', 'filters': [ { 'id': 'form', 'label': 'Formulaire', 'options': [ {'id': '_all', 'label': 'Tous'}, {'id': '1', 'label': 'Inscription piscine'}, {'id': '2', 'label': 'Commande de bacs'}, ], 'required': True, 'default': '_all', }, ], } ] }
Dans cet exemple wcs expose une statistique « Nombre de demandes », filtrable selon le formulaire.
Imaginons maintenant que l'on veuille permettre un filtrage selon les champs du formulaire, à la bijoe. Cela dépend entièrement du choix réalisé, on ne les connaît pas à l'avance.
Normalement si je sélectionne un formulaire ça donne :
GET https://wcs.dev.publik.love/api/statistics/forms/count/?form=2 { 'data': { 'series': [{'data': [1, 2], 'label': 'Nombre de demandes'}], 'x_labels': ['2020-07', '2020-08'] }, 'err': 0 }
Et je me dis que ça pourrait renvoyer des sous-filtres dans une clé supplémentaire :
GET https://wcs.dev.publik.love/api/statistics/forms/count/?form=2 { 'data': { 'series': [{'data': [1, 2], 'label': 'Nombre de demandes'}], 'x_labels': ['2020-07', '2020-08'], 'subfilters': [ { 'id': 'nb_bacs', 'label': 'Nombre de bacs', 'options': [ {'id': '1', 'label': 'Un'}, {'id': '2', 'label': 'Deux'}, ], }, ], }, 'err': 0 }
ce qui permet ensuite de réinterroger avec ?nb_bacs=xxx.
Files
Associated revisions
History
Updated by Valentin Deniaud almost 3 years ago
- File 0001-wip.patch 0001-wip.patch added
- Status changed from Nouveau to Solution proposée
- Patch proposed changed from No to Yes
Patch tout simple pour illustrer.
Le problème avec ça c'est qu'il y a besoin de deux clics sur le bouton pour avoir les nouveaux champs :- Sélection du formulaire
- Clic sur « Enregistrer »
- Les champs sont rafraîchis
- Le graphe avec les nouvelles données et les sous-filtres correspondant au formulaire choisi est récupéré en ajax
- Donc les sous-filtres n'apparaissent pas dans les champs de la cellule
- Nouveau clic sur « Enregistrer »
- Les champs sont rafraîchis, et les sous-filtres sont là
Je ne sais pas encore comment faire, sûrement du JS pour forcer le rafraîchissement du graphe avant celui du formulaire.
Updated by Valentin Deniaud almost 3 years ago
- File 0001-dataviz-add-support-for-subfilters-61083.patch 0001-dataviz-add-support-for-subfilters-61083.patch added
- Status changed from En cours to Solution proposée
Même pas de javascript, à la place une petite astuce pour recharger le formulaire après le save() (lire PageEditCellView.form_valid pour comprendre).
Aussi par rapport à la description, j'ajoute une clé has_subfilters
au filtre qui déclenche l'apparation des sous-filtres, pour ne pas recharger les données inutilement.
Updated by Frédéric Péters almost 3 years ago
Je verrais bien un commentaire au-dessus de :
self.__init__()
(ou découper l'init pour avoir une méthode avec un nom explicite qui serait appelée ici).
Updated by Valentin Deniaud almost 3 years ago
- File 0001-dataviz-add-support-for-subfilters-61083.patch 0001-dataviz-add-support-for-subfilters-61083.patch added
Frédéric Péters a écrit :
Je verrais bien un commentaire au-dessus de :
[...]
(ou découper l'init pour avoir une méthode avec un nom explicite qui serait appelée ici).
Yep, il s'agit de 1/ virer les champs obsolètes 2/ ajouter les nouveaux, je découpe pour le 2/ mais le 1/ était géré par le super().__init__(), donc il faut faire un peu autrement (et c'est tant mieux).
Updated by Frédéric Péters almost 3 years ago
- Status changed from Solution proposée to Solution validée
Updated by Valentin Deniaud almost 3 years ago
- Status changed from Solution validée to Résolu (à déployer)
commit 30d1483f03d17344bb9c7adc5f6d3d4e5e7ce1b7 Author: Valentin Deniaud <vdeniaud@entrouvert.com> Date: Mon Jan 24 18:13:24 2022 +0100 dataviz: add support for subfilters (#61083)
Updated by Transition automatique almost 3 years ago
- Status changed from Résolu (à déployer) to Solution déployée
dataviz: add support for subfilters (#61083)