Development #57616
Cellule graphe // Agenda nombre de réservations, avoir une variable pour le choix de l'agenda chrono
0%
Description
Pour Publik Famille.
Sur les cellules graphe de cette page : https://agents-venissieux-test.demarches.sitiv.fr/manage/pages/316/
Données : "Agenda : Nombre de réservations"
Agenda : "Restauration scolaire Anatole France"
Le nom de l'agenda est en dur. C'est un agenda d'événements.
Il faudrait pouvoir y faire figurer une variable.
Ici il s'agirait de reprendre le champ "form_var_slug_restaurant_scolaire" de fiche restaurant (https://demarches-venissieux-test.demarches.sitiv.fr/backoffice/cards/138/)
- depuis cette page je recherche mon restaurant scolaire : https://agents-venissieux-test.demarches.sitiv.fr/restaurant_scolaire/
exemple : Anatole France - arrivé sur la page https://agents-venissieux-test.demarches.sitiv.fr/restaurant_scolaire/page-restaurant-scolaire/1/ les données affichées dans les tableaux statistiques seront celle du "bon" agenda chrono
exemple : restaurant-scolaire-anatole-france
Fichiers
Révisions associées
Historique
Mis à jour par Valentin Deniaud il y a environ 2 ans
L'idée c'est donc d'utiliser les toutes récentes variables de page (#59798) pour s'en sortir.
C'est à dire accéder à la page /page-restaurant-scolaire/1/ et avoir un variable de page {{ cards|objects:"restaurantscolaire"|filter_by_internal_id:activiterestaurationscolaire_id|get_full|first|get:"fields"|get:"slug_restaurant_scolaire" }}, avec activiterestaurationscolaire_id qui est l'identifiant du subslug. J'ai testé et ça marche nickel.
Et là, problème bloquant :- On va sur la page /page-restaurant-scolaire/1/, où est configurée la cellule contenu d'une fiche et la cellule stat
- Le graphe est chargé en ajax via /api/dataviz/graph/<id_cellule_graphe>/
- L'évaluation de la variable de page plante parce que activiterestaurationscolaire_id n'est pas défini, normal on ne l'a nulle part dans l'URL courante :/
Il y a besoin d'inventer un truc ici ou ça a déjà été réfléchi ?
(on a aussi les cellules qui peuvent être chargée en ajax via /ajax/cell/<page_pk>/<cell_reference>/ et où on a donc pas non plus le subslug, du coup je me dis que le problème s'est sûrement déjà posé ?)
Mis à jour par Frédéric Péters il y a environ 2 ans
Dans l'HTML d'une cellule tu as un attribut data-extra-context, son contenu est passé au chargement asynchrone dans un paramètre ctx,
{% with cell|extra_context:request as extra_context %} {% if extra_context %}data-extra-context="{{ extra_context|signed|urlencode }}"{% endif %} {% endwith %}
Le filtre |extra_context il prend request.extra_context_data + cell.repeat_index; en exemple sur une page chez moi, je retrouve :
{'absolute_uri': 'https://combo-agent.fred.local.0d.be/parkings/fiche-parking/4/', 'parkings_id': '4', 'repeat_index': 0}
Il y aurait moyen d'y intégrer aussi les variables de page.
Mis à jour par Valentin Deniaud il y a environ 2 ans
Cool, si je comprends bien il y aurait juste à passer ce même paramètre ctx à /api/dataviz/graph/<id_cellule_graphe>/.
Il y aurait moyen d'y intégrer aussi les variables de page.
Avoir la valeur du subslug suffit à pouvoir évaluer la variable dynamiquement dans la vue normalement, je ne pense pas qu'on gagne quelque chose à passer les variables déjà évaluées dans ctx.
Mis à jour par Frédéric Péters il y a environ 2 ans
Cool, si je comprends bien il y aurait juste à passer ce même paramètre ctx à /api/dataviz/graph/<id_cellule_graphe>/.
Oui et si dedans comme il est tu as déjà toutes les infos qu'il te faut c'est nickel.
Mis à jour par Valentin Deniaud il y a environ 2 ans
- Fichier 0001-dataviz-allow-page-variable-as-filter-value-57616.patch 0001-dataviz-allow-page-variable-as-filter-value-57616.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Passer le contexte à la vue de rendu du graphe marche bien.
À noter :- Ce patch n'a pas d'incidence si il n'y a pas de variable de page définie
- Si il y en a, chaque select gagne un groupe d'option « Variables de page » listant les variables
- Ce groupe apparaît sous les options déjà présentes, genre
<Agenda> * Agenda 1 * Agenda 2 * Variables de page ** Variable 1 ** Variable 2
- Ce groupe apparaît sous les options déjà présentes, genre
- Si la variable dépend du subslug, le rendu en backoffice devient impossible
- Petit problème ici parce qu'on ne peut pas dire explicitement « ta cellule est bonne, va tester en frontoffice » parce que peut-être que la variable n'existe vraiment pas. J'opte pour afficher un message d'erreur « Impossible d'évaluer la variable », en espérant que ça sous-entende que l'évaluation est possible ailleurs.
Mis à jour par Frédéric Péters il y a environ 2 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Valentin Deniaud il y a environ 2 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 9d7cf579ce0dc353845c0bf1c6a9fca4b086a98c Author: Valentin Deniaud <vdeniaud@entrouvert.com> Date: Thu Feb 10 15:00:08 2022 +0100 dataviz: allow page variable as filter value (#57616)
Mis à jour par Transition automatique il y a environ 2 ans
- Statut changé de Résolu (à déployer) à Solution déployée
dataviz: allow page variable as filter value (#57616)