Project

General

Profile

Development #57616

Cellule graphe // Agenda nombre de réservations, avoir une variable pour le choix de l'agenda chrono

Added by Stéphane Guiet 8 months ago. Updated 3 months ago.

Status:
Fermé
Priority:
Normal
Target version:
-
Start date:
05 Oct 2021
Due date:
% Done:

0%

Estimated time:
Patch proposed:
Yes
Planning:
No

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

Le cas d'usage :

Files

Associated revisions

Revision 9d7cf579 (diff)
Added by Valentin Deniaud 3 months ago

dataviz: allow page variable as filter value (#57616)

History

#2

Updated by Lauréline Guerin 7 months ago

  • Assignee set to Lauréline Guerin
#3

Updated by Lauréline Guerin 7 months ago

  • Assignee deleted (Lauréline Guerin)
#4

Updated by Stéphane Guiet 7 months ago

  • Assignee set to Valentin Deniaud
#7

Updated by Valentin Deniaud 4 months ago

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é ?)

#8

Updated by Frédéric Péters 4 months ago

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.

#9

Updated by Valentin Deniaud 4 months ago

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.

#10

Updated by Frédéric Péters 4 months ago

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.

#11

Updated by Valentin Deniaud 4 months ago

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
      
  • 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.
#12

Updated by Frédéric Péters 3 months ago

  • Status changed from Solution proposée to Solution validée
#13

Updated by Valentin Deniaud 3 months ago

  • Status changed from Solution validée to 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)
#14

Updated by Transition automatique 3 months ago

  • Status changed from Résolu (à déployer) to Solution déployée
#15

Updated by Transition automatique 27 days ago

Automatic expiration

Also available in: Atom PDF