À partir de Looker 24.0, il est possible de développer des extensions pour qu'elles s'exécutent dans une vignette de tableau de bord. Les extensions qui peuvent être exécutées en tant que vignette ou visualisation peuvent être ajoutées lorsque le tableau de bord est en mode édition ou enregistrées dans un tableau de bord en tant que visualisation à partir d'une exploration. Les extensions peuvent également être configurées en tant que tuiles dans les tableaux de bord LookML.
Voici des exemples d'extensions pouvant être utilisées comme vignettes de tableau de bord :
- L'extension de visualisation de tuiles montre comment créer une visualisation personnalisée à l'aide du framework d'extension.
- L'extension SDK de tuiles affiche les méthodes d'API disponibles spécifiques aux extensions de tuiles.
Utiliser le SDK d'extension Looker avec des extensions de tuiles
Les extensions de tuiles nécessitent que le paramètre mount_points
soit défini dans le fichier manifeste du projet LookML pour que les extensions soient chargées en tant que tuiles dans un tableau de bord. Il existe deux types de mount_points
liés aux extensions de tuiles :
mount_points: {
dashboard_vis: yes
dashboard_tile: yes
standalone: yes
}
dashboard_vis
: lorsqu'elle est activée, l'extension s'affiche dans les options de visualisation d'une exploration, où elle peut être sélectionnée comme visualisation et enregistrée en tant que vignette de tableau de bord. Lorsque le tableau de bord est exécuté, il exécute la requête associée au bloc et met les données à la disposition de l'extension. Ce mode de fonctionnement est semblable à celui des visualisations personnalisées. La principale différence entre une visualisation personnalisée et une extension exécutée dans une vignette de tableau de bord pour laquelledashboard_vis
est activé est que l'extension peut effectuer des appels à l'API Looker.dashboard_tile
: lorsque cette option est activée, l'extension s'affiche dans le panneau Extensions qui s'affiche lorsqu'un utilisateur modifie un tableau de bord et sélectionne l'option Extensions après avoir cliqué sur le bouton Ajouter. Ce type d'extension est responsable de la récupération de ses propres données, au lieu de laisser la requête de tuile fournir automatiquement les données à l'extension.
Un point de montage supplémentaire, standalone
, permet à l'extension d'apparaître dans la section Applications du menu principal de Looker. Il est possible qu'une extension comporte plusieurs points de montage. Lors de l'exécution, l'extension est informée de la façon dont elle est montée et peut ajuster son comportement en conséquence. Par exemple, les extensions standalone
peuvent avoir besoin de définir leur propre hauteur, contrairement aux extensions de tuiles.
API supplémentaires pour l'extension de tuiles
Les extensions de tuiles fournissent des API et des données supplémentaires au moment de l'exécution. Ils sont obtenus à partir du contexte de l'extension :
const {
tileSDK,
tileHostData,
visualizationData,
visualizationSDK,
} = useContext(ExtensionContext40)
tileSDK
: fournit des fonctions spécifiques aux blocs pour permettre à l'extension d'interagir avec l'hôte du tableau de bord Looker. Par exemple, pour permettre à l'extension d'afficher et d'effacer les messages d'erreur.tileHostData
: fournit des données de carte à l'extension. Les données sont automatiquement mises à jour en fonction des interactions avec le tableau de bord d'hébergement. Par exemple, l'indicateurisDashboardEditing
.visualizationSDK
: fournit des fonctions spécifiques à la visualisation pour permettre à l'extension d'interagir avec l'hôte du tableau de bord Looker. Par exemple, la fonctionupdateRowLimit
.visualizationData
: fournit des données de visualisation à l'extension. Les données sont automatiquement mises à jour en fonction des interactions avec le tableau de bord d'hébergement. Ces données sont semblables à celles fournies aux visualisations personnalisées.
Créer des extensions réactives
Les iFrames dans lesquels les extensions s'exécutent sont automatiquement redimensionnés lorsque la fenêtre hôte Looker parente est redimensionnée. Cela se reflète automatiquement dans la fenêtre de contenu de l'iFrame. Le composant iframe ne comporte aucune marge intérieure ni extérieure. C'est donc à l'extension de fournir sa propre marge intérieure et extérieure pour qu'elle soit cohérente avec l'application Looker. Pour les extensions autonomes, il incombe à l'extension de contrôler sa hauteur. Pour les extensions qui s'exécutent dans des vignettes de tableau de bord ou des visualisations Explorer, la hauteur de la fenêtre de contenu de l'iframe est automatiquement définie sur la hauteur disponible dans l'iframe.
Remarques sur le rendu
Il est important de noter que les extensions de tuiles seront affichées lorsqu'un tableau de bord est téléchargé au format PDF ou image. Le moteur de rendu s'attend à ce que le bloc l'informe lorsque le rendu est terminé. Si vous ne le faites pas, le moteur de rendu cessera de répondre. Voici un exemple de notification au moteur de rendu indiquant que le bloc a été rendu.
const { extensionSDK } = useContext(ExtensionContext40)
useEffect(() => {
extensionSDK.rendered()
}, [])
Les animations doivent également être désactivées lors du rendu. Voici un exemple où les configurations d'animation sont désactivées lors du rendu :
const { lookerHostData} = useContext(ExtensionContext40)
const isRendering = lookerHostData?.isRendering
const config = isRendering
? {
...visConfig,
valueCountUp: false,
waveAnimateTime: 0,
waveRiseTime: 0,
waveAnimate: false,
waveRise: false,
}
: visConfig
if (mountPoint === MountPoint.dashboardVisualization) {
return <VisualizationTile config={config} />
}
Fonctions et propriétés du SDK Tile
Le SDK de blocs fournit des fonctions qui permettent à une extension de bloc d'interagir avec son tableau de bord hôte.
Le tableau suivant présente les fonctions et propriétés disponibles :
Fonction ou propriété | Description |
---|---|
tileHostData (propriété) |
Données de l'hôte spécifiques à l'extension de tuile. Pour en savoir plus, consultez la section Données du SDK Tile. |
addError |
Lorsqu'il est appelé, le tableau de bord ou Explore affiche un message d'erreur sous la visualisation. |
clearError |
Lorsqu'il est appelé, le tableau de bord ou l'exploration masquent tout message d'erreur affiché sous la visualisation. |
openDrillMenu |
Pour les extensions de visualisation, cet appel ouvre un menu d'analyse. Cet appel est ignoré si l'extension n'est pas une visualisation d'extension de carte. |
runDashboard |
Exécute le tableau de bord actuel. Cet appel est ignoré par une extension de visualisation de tuiles exécutée dans une exploration. |
stopDashboard |
Arrête un tableau de bord en cours d'exécution. Cet appel est ignoré par une extension de visualisation de tuiles exécutée dans une exploration. |
updateFilters |
Met à jour les filtres dans le tableau de bord ou l'exploration actuels. |
openScheduleDialog |
Ouvre la boîte de dialogue de planification. Cet appel est ignoré lors de l'exécution dans une exploration. |
toggleCrossFilter |
Active/Désactive les filtres croisés. Cet appel est ignoré lors de l'exécution dans une exploration. |
Données du SDK Tile
Le tableau suivant présente les propriétés de données du SDK de tuiles disponibles :
Propriété | Description |
---|---|
isExploring |
Lorsque la valeur est "true", cela indique que le bloc est configuré en tant que visualisation dans une exploration. |
dashboardId |
ID du tableau de bord du bloc en cours d'affichage. Si le bloc est configuré en tant qu'exploration, cette propriété ne sera pas renseignée. |
elementId |
ID de l'élément de la tuile en cours de rendu. Si le bloc est configuré en tant qu'exploration, cette propriété ne sera pas renseignée. |
queryId |
ID de la requête de la vignette affichée, si elle est associée à une visualisation. Si le bloc est configuré en tant qu'exploration, cette propriété ne sera pas renseignée.queryId correspond à l'ID de la requête créée lorsque la visualisation est intégrée à l'outil Explorer de Looker. Il ne contient aucun filtre ni filtrage croisé à appliquer au tableau de bord. Pour refléter les données affichées dans QueryResponse , vous devrez appliquer des filtres et des filtres croisés, puis générer une nouvelle requête. Par conséquent, il peut y avoir plus de propriétés utiles que queryId . Consultez filteredQuery pour obtenir un objet de requête avec des filtres appliqués. |
querySlug |
Le slug de la requête de la vignette en cours de rendu, si elle est associée à une visualisation. Si le bloc est configuré en tant qu'exploration, cette propriété ne sera pas renseignée.querySlug est un slug de requête créé lorsque la visualisation est intégrée à l'exploration Looker. Il ne contient aucun filtre ni filtrage croisé appliqué au tableau de bord. Pour refléter les données affichées dans QueryResponse , vous devrez appliquer des filtres et des filtres croisés, puis générer une nouvelle requête. Par conséquent, il peut y avoir plus de propriétés utiles que querySlug . Consultez filteredQuery pour obtenir un objet de requête avec des filtres appliqués. |
dashboardFilters |
Filtres appliqués au tableau de bord. Si le bloc est configuré en tant qu'exploration, cette propriété ne sera pas renseignée. |
dashboardRunState |
Indique si le tableau de bord est en cours d'exécution. Si la vignette est configurée en tant qu'exploration, l'état est UNKNOWN .Pour des raisons de performances du tableau de bord, l'état d'exécution peut ne jamais être affiché comme "en cours d'exécution". Cela se produit généralement s'il n'y a pas d'autres tuiles associées à une requête, y compris celle à laquelle l'extension est associée. Si l'extension doit savoir avec certitude qu'un tableau de bord a été exécuté, la méthode fiable consiste à détecter les différences dans lastRunStartTime . |
isDashboardEditing |
Si la valeur est "true", le tableau de bord est en cours de modification. Si le bloc est configuré en tant qu'exploration, cette propriété ne sera pas renseignée. |
isDashboardCrossFilteringEnabled |
Si la valeur est "true", le filtrage croisé est activé dans le tableau de bord. Si le bloc est configuré en tant qu'exploration, cette propriété ne sera pas renseignée. |
filteredQuery |
Objet de requête correspondant à l'ID de requête associé à l'élément de tableau de bord sous-jacent qui applique les filtres et les modifications du fuseau horaire effectués au niveau du tableau de bord. |
lastRunSourceElementId |
ID de l'élément d'extension de vignette qui a déclenché la dernière exécution du tableau de bord. L'ID sera indéfini si l'exécution du tableau de bord a été déclenchée par le bouton Exécuter ou l'actualisation automatique du tableau de bord, ou si l'exécution a été déclenchée à l'aide du SDK d'intégration. Si le bloc est configuré en tant qu'exploration, cette propriété ne sera pas renseignée.Notez que lastRunSourceElementId peut être identique à l'ID d'élément de l'instance d'extension actuelle. Par exemple, si l'extension déclenche l'exécution d'un tableau de bord, elle recevra une notification au début et à la fin de l'exécution. |
lastRunStartTime |
Indique l'heure de début de la dernière exécution du tableau de bord. Si le bloc est configuré en tant qu'exploration, cette propriété ne sera pas renseignée.Notez que les heures de début et de fin indiquées ne doivent pas être utilisées pour capturer les métriques de performances. |
lastRunEndTime |
Indique l'heure de fin de la dernière exécution du tableau de bord. Si le bloc est configuré en tant qu'exploration, cette propriété ne sera pas renseignée. Si le bloc est en cours d'exécution, cette propriété ne sera pas renseignée.Notez que les heures de début et de fin indiquées ne doivent pas être utilisées pour capturer les métriques de performances. |
lastRunSuccess |
Indique si la dernière exécution du tableau de bord a réussi ou non. Si le bloc est configuré en tant qu'exploration, cette propriété ne sera pas renseignée. Si le bloc est en cours d'exécution, cette propriété ne sera pas renseignée. |
Fonctions et propriétés du SDK de visualisation
Le tableau suivant présente les fonctions et propriétés du SDK de visualisation disponibles :
Fonction ou propriété | Description |
---|---|
visualizationData (propriété) |
Visualisation (combinaison des données visConfig et queryResponse ). |
visConfig (propriété) |
Données de configuration de la visualisation :
|
queryResponse (propriété) |
Données de réponse de la requête |
configureVisualization |
Définit la configuration par défaut d'une visualisation d'extension. La configuration sera affichée dans l'éditeur de visualisation Explorer. Cette méthode ne doit être appelée qu'une seule fois. |
setVisConfig |
Met à jour la configuration de la visualisation. |
updateRowLimit |
Met à jour la limite de lignes de la requête. |
Données du SDK Visualization
Le SDK de visualisation se compose des éléments suivants :
- Données de configuration de la visualisation
- Données de réponse aux requêtes
Données de configuration de la visualisation
Propriété | Description |
---|---|
queryFieldMeasures |
Informations sur la mesure |
queryFieldDimensions |
Informations sur la dimension |
queryFieldTableCalculations |
Informations sur les calculs de tables |
queryFieldPivots |
Informations sur le tableau croisé dynamique |
visConfig |
Données de configuration visuelle. Elle doit être fusionnée avec la configuration par défaut et appliquée à la visualisation affichée par l'extension. |
export interface VisualizationConfig {
queryFieldMeasures: Measure[]
queryFieldDimensions: Dimension[]
queryFieldTableCalculations: TableCalculation[]
queryFieldPivots: PivotConfig[]
visConfig: RawVisConfig
}
Données de réponse aux requêtes
Propriété | Description |
---|---|
data |
Tableau de données de ligne |
fieldMeasures |
Informations sur les mesures sur le terrain. |
fieldDimensions |
Informations sur la dimension du champ. |
fieldTableCalculations |
Informations sur les calculs de table des champs. |
fieldPivots |
Informations sur le tableau croisé dynamique du champ. |
fieldMeasureLike |
Tableau concaténé d'informations sur les mesures de champ et les calculs de tables qui se comportent comme des mesures. |
fieldDimensionLike |
Tableau concaténé d'informations sur les dimensions de champ et les calculs de table qui se comportent comme des dimensions. |
Utiliser le SDK d'intégration
L'utilisation du SDK d'intégration dans une extension de tuile n'est pas recommandée pour les raisons suivantes :
- Il est possible que l'extension finisse par afficher un tableau de bord dans lequel elle est une vignette. Le framework d'extension n'a aucun moyen de le détecter. Par conséquent, le navigateur peut planter.
- Le rendu PDF du contenu intégré dans une extension de carte ne fonctionne pas.