Accéder à la cellule sélectionnée dans un widget js

Bonjour,
Est-il possible, en plus de récupérer l’enregistrement sélectionné via le callback onRecord, de savoir sur quelle colonne/cellule le curseur se trouve ?

Merci beaucoup

Bonjour,
Pas à ma connaissance, mais curieuse de connaître le cas d’usage ? :smiley:

Bonjour,

Merci beaucoup pour votre réponse. Mince alors. Le cas d’usage est le suivant :

L’utilisateur clique sur une cellule. Le plugin expose un moteur de recherche plein-texte dans des concepts issus d’un thésaurus hébergé sur Opentheso (https://opentheso.huma-num.fr/, Opentheso étant l’outil de gestion de thésaurus du CNRS), l’API Opentheso renvoie une URI, et Grist devrait écrire cette URI dans la cellule sélectionnée.

En clair : notre plugin est une sorte de helper qui va chercher une valeur via une API publique en fonction d’un input utilisateur, puis il doit être en capacité d’écrire cette valeur dans la cellule sélectionnée.

Merci beaucoup,

Avec plaisir, et vous avez plusieurs colonnes « uri » ? Comment est structurée la table ?

Un exemple concret issu d’un projet en cours : chaque record représente une œuvre picturale dont on veut décrire le contenu en l’annotant avec des concepts issus d’un thésaurus. Les URI des concepts (par exemple : Chœur d'anges) se trouvent dans une colonne (pour Grist, c’est juste du texte : une séquence d’URI séparées par des « ; ».

Dac, mais du coup si vous avez une seule colonne « uri » il suffit de connaître la ligne sélectionnée (onRecord) pour remplir la colonne.

Vous récupérez l’id de la colonne sélectionnée, et ensuite vous mettez à jour la colonne uri

// récupérer id de ligne
grist.onRecord(record => {
  rowId = record.id
});

// mettre à jour la cellule
grist.MA_TABLE.update({
      id: rowId,
      fields: {
        uri: valeur_que_vous_voulez
      }
}) 

Il y a un exemple ici : Ex - custom widget - Grist

Mais il me manque peut-être une info ou j’ai mal compris quelque chose ?

Pardon, my mistake, mon exemple était incorrect : non, j’ai plusieurs colonnes, dont les noms sont arbitraires (définis par l’utilisateur), qui peuvent contenir des listes d’URL. Ainsi leur nom ne peut être codé en dur dans le plugin.

Sinon en effet votre code serait parfait.

Un truc qui me semble étrange ou bien c’est moi qui comprend mal : la struct CursorPos (Interface: CursorPos - Grist Help Center) n’est utilisée qu’en écriture (fn setCursorPos). Ce serait génial d’accéder à une telle struct en lecture, par exemple sur un event onRecord.

Merci pour les échanges !

Est-ce que ceci pourrait être acceptable :
Dans votre cw vous affichez :
1. Choisissez la colonne à remplir
avec la liste déroulante des colonnes
2. Placez-vous sur une ligne

D’ailleurs pourquoi vous devez attendre le clic dans la cellule pour aller chercher la valeur dans l’API ? Car vous disiez que vous allez chercher une valeur de l’api en fonction d’un input, alors pourquoi ne pas remplir directement la colonne uri après l’input (si l’utilisateur vous indique quelle colonne remplir) ?

Sinon vous pouvez toujours proposer ce développement sur le forum anglais Grist Creators ou directement sur github GitHub · Where software is built