Projet

Général

Profil

Development #57616

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

Ajouté par Stéphane Guiet il y a plus de 2 ans. Mis à jour il y a environ 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
05 octobre 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

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 :

Fichiers

Révisions associées

Révision 9d7cf579 (diff)
Ajouté par Valentin Deniaud il y a environ 2 ans

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

Historique

#2

Mis à jour par Lauréline Guérin il y a plus de 2 ans

  • Assigné à mis à Lauréline Guérin
#3

Mis à jour par Lauréline Guérin il y a plus de 2 ans

  • Assigné à Lauréline Guérin supprimé
#4

Mis à jour par Stéphane Guiet il y a plus de 2 ans

  • Assigné à mis à Valentin Deniaud
#7

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

#8

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.

#9

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.

#10

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.

#11

Mis à jour par Valentin Deniaud il y a environ 2 ans

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

Mis à jour par Frédéric Péters il y a environ 2 ans

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

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

Mis à jour par Transition automatique il y a environ 2 ans

  • Statut changé de Résolu (à déployer) à Solution déployée
#15

Mis à jour par Transition automatique il y a presque 2 ans

Automatic expiration

Formats disponibles : Atom PDF