Lien interne dans le document

Astuce : créer des liens internes entre vues avec sélection automatique de la ligne

Bonjour à tous :wave:

Je partage une petite astuce pour créer des liens internes au sein d’un document Grist afin de :

  • passer d’une vue à une autre,
  • pré-sélectionner automatiquement la bonne ligne dans la vue cible (si les deux vues reposent sur la même table/source de données),
  • éventuellement ouvrir la vue cible en popup,
  • ou même ouvrir directement “nouvelle ligne”.

L’astuce repose sur le système d’ancres (déjà utilisé pour le Document Tour).


Exemple rapide

Imaginons une page avec deux vues de la même table Personnes :

  • une vue Liste,
  • une vue Fiche (détail d’une personne sélectionnée).

Depuis la vue Liste, on peut générer un lien qui ouvre la vue Fiche avec la bonne ligne déjà sélectionnée.


Récupérer l’ancre et comprendre sa structure

Dans la vue Liste, faites clic droit sur une ligne puis Copier l’ancre.
Vous obtenez un lien de ce type :

https://grist.numerique.gouv.fr/o/docs/6c6cnB2kGX4z/Untitled-document/p/2#a1.s4.r1.c5

Focus sur la partie ancre : #a1.s4.r1.c5

  • a1 : aire principale de la page (voir plus bas pour la popup).
  • s4 : section (la vue ciblée sur la page).
  • r1 : record (la ligne à sélectionner — ici l’ID = 1).
  • c5 : colonne (position du curseur).

:point_right: Le r correspond à “record” et le chiffre qui suit est l’ID de la ligne dans la table.


Générer le lien automatiquement (formule)

Vous pouvez générer ce lien dans une colonne calculée, par exemple avec une formule (Python) :

return f"https://grist.numerique.gouv.fr/o/docs/6c6cnB2kGX4z/Untitled-document/p/2#a1.s4.r{id}.c5"

En cliquant sur ce lien depuis la Liste, vous serez redirigé vers la Fiche avec la bonne ligne sélectionnée. :sparkles:


Variantes utiles

1) Ouvrir la vue cible en popup

Si vous copiez un lien depuis la popup, vous obtiendrez la même ancre, mais pour ouvrir la cible en popup, remplacez simplement a1 par a2 dans l’ancre.

Ex. #a2.s4.r{Id}.c5

2) Ouvrir directement “Nouvelle ligne”

Pour pointer vers la création d’une nouvelle ligne dans la table ciblée, utilisez rnew :

#a1.s4.rnew.c5

Démo


Remarques

  • Les valeurs a* et s* dépendent de la mise en page et des vues de votre page. Copiez une ancre une fois, puis généralisez en remplaçant uniquement la partie r{Id} dans votre formule.
  • Assurez-vous que la vue cible est bien configurée pour afficher la ligne sélectionnée de la même table/source.
  • On peut bien sûr adapter la chose et utiliser l’ID d’une référence au sein de la vue source pour rediriger vers une vue d’une autre donnée :slight_smile:

Thibaud

6 « J'aime »

Merci @thibaud !

Pour la formule de création du lien, je propose (dans ma FAQ) cette formule encore plus générique (fonctionne quelle que soit l’instance de Grist) :

return f"{SELF_HYPERLINK(page='2')}#a1.s4.r{$id}.c5"

3 « J'aime »