A partire da Looker 24.0, le estensioni possono essere sviluppate per essere eseguite in un riquadro delle dashboard. Le estensioni che supportano l'esecuzione come riquadro o visualizzazione possono essere aggiunte mentre la dashboard è in modalità di modifica o salvate in una dashboard come visualizzazione da un'esplorazione. Le estensioni possono anche essere configurate come riquadri nelle dashboard LookML.
Sono disponibili esempi di estensioni che possono essere utilizzate come riquadri delle dashboard:
- L'estensione di visualizzazione dei riquadri mostra come creare una visualizzazione personalizzata utilizzando il framework delle estensioni.
- L'estensione SDK per i riquadri mostra i metodi API disponibili specifici per le estensioni dei riquadri.
Utilizzare l'SDK per le estensioni di Looker con le estensioni dei riquadri
Per caricare le estensioni come riquadri in una dashboard, è necessario definire il mount_points parametro nel file manifest del progetto LookML. Esistono due tipi di mount_points correlati alle estensioni dei riquadri:
mount_points: {
dashboard_vis: yes
dashboard_tile: yes
standalone: yes
}
dashboard_vis— quando è abilitata, l'estensione viene visualizzata nelle opzioni di visualizzazione di un'esplorazione, dove può essere selezionata come visualizzazione e salvata come riquadro della dashboard. Quando viene eseguita la dashboard, questa esegue la query associata al riquadro e rende i dati disponibili per l'estensione. Questo è simile al funzionamento delle visualizzazioni personalizzate. La differenza principale tra una visualizzazione personalizzata e un'estensione in esecuzione in un riquadro della dashboard condashboard_visabilitata è che l'estensione può effettuare chiamate a API Looker.dashboard_tile— quando è abilitata, l'estensione viene visualizzata nel riquadro Estensioni visualizzato quando un utente modifica una dashboard e seleziona l'opzione Estensioni dopo aver fatto clic sul pulsante Aggiungi. Questo tipo di estensione è responsabile del recupero dei propri dati, anziché della query del riquadro che fornisce automaticamente i dati all'estensione.
Un punto di montaggio aggiuntivo, standalone, fa sì che l'estensione venga visualizzata nella sezione Applicazioni del menu principale di Looker. È possibile definire più punti di montaggio per un'estensione. In fase di runtime, l'estensione riceve una notifica relativa alla modalità di montaggio e può modificare il proprio comportamento di conseguenza. Ad esempio, le estensioni standalone potrebbero dover impostare la propria altezza, mentre le estensioni dei riquadri no.
API aggiuntive per le estensioni dei riquadri
In fase di runtime, le estensioni dei riquadri ricevono API e dati aggiuntivi. Questi vengono ottenuti dal contesto dell'estensione:
const {
tileSDK,
tileHostData,
visualizationData,
visualizationSDK,
} = useContext(ExtensionContext40)
tileSDK: fornisce funzioni specifiche per i riquadri per consentire all'estensione di interagire con l'host della dashboard Looker. Ad esempio, per consentire all'estensione di visualizzare e cancellare i messaggi di errore.tileHostData: fornisce i dati dei riquadri all'estensione. I dati vengono aggiornati automaticamente in base alle interazioni con la dashboard di hosting. Un esempio è l'indicatoreisDashboardEditing.visualizationSDK: fornisce funzioni specifiche per le visualizzazioni per consentire all'estensione di interagire con l'host della dashboard Looker. Un esempio è la funzioneupdateRowLimit.visualizationData: fornisce i dati di visualizzazione all'estensione. I dati vengono aggiornati automaticamente in base alle interazioni con la dashboard di hosting. I dati sono simili a quelli forniti alle visualizzazioni personalizzate.
Creare estensioni reattive
Le dimensioni degli iframe in cui vengono eseguite le estensioni vengono ridimensionate automaticamente quando viene ridimensionata la finestra host di Looker principale. Questo si riflette automaticamente nella finestra dei contenuti dell'iframe. Il componente iframe non ha padding o margini, quindi è l'estensione a dover fornire il proprio padding e i propri margini in modo che appaia coerente con l'applicazione Looker. Per le estensioni autonome, è l'estensione a dover controllare l'altezza dell'estensione. Per le estensioni eseguite nei riquadri delle dashboard o nelle visualizzazioni di esplorazione, la finestra dei contenuti dell'iframe verrà impostata automaticamente sull'altezza resa disponibile dall'iframe.
Considerazioni sul rendering
È importante notare che le estensioni dei riquadri vengono sottoposte a rendering quando una dashboard viene scaricata come PDF o immagine. Il renderer si aspetta che il riquadro lo avvisi al termine del rendering. In caso contrario, il renderer smetterà di rispondere. Di seguito è riportato un esempio di come avvisare il renderer che il riquadro è stato sottoposto a rendering.
const { extensionSDK } = useContext(ExtensionContext40)
useEffect(() => {
extensionSDK.rendered()
}, [])
Inoltre, le animazioni devono essere disattivate durante il rendering. Di seguito è riportato un esempio in cui le configurazioni delle animazioni vengono disattivate durante il rendering:
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} />
}
Funzioni e proprietà dell'SDK per i riquadri
L'SDK per i riquadri fornisce funzioni che consentono a un'estensione dei riquadri di interagire con la dashboard di hosting.
Le funzioni e le proprietà disponibili sono riportate nella tabella seguente:
| Funzione o proprietà | Descrizione |
|---|---|
tileHostData (proprietà) |
Dati host specifici per l'estensione dei riquadri. Per ulteriori dettagli, consulta la sezione Dati dell'SDK per i riquadri. |
addError |
Quando viene chiamata, la dashboard o l'esplorazione visualizza un messaggio di errore sotto la visualizzazione. |
clearError |
Quando viene chiamata, la dashboard o l'esplorazione nasconde eventuali messaggi di errore visualizzati sotto la visualizzazione. |
openDrillMenu |
Per le estensioni di visualizzazione, questa chiamata apre un menu di drill-down. Questa chiamata viene ignorata se l'estensione non è una visualizzazione di estensione dei riquadri. |
runDashboard |
Esegue la dashboard corrente. Questa chiamata viene ignorata da un'estensione di visualizzazione dei riquadri in esecuzione in un'esplorazione. |
stopDashboard |
Arresta una dashboard in esecuzione. Questa chiamata viene ignorata da un'estensione di visualizzazione dei riquadri in esecuzione in un'esplorazione. |
updateFilters |
Aggiorna i filtri nella dashboard o nell'esplorazione corrente. |
openScheduleDialog |
Apre la finestra di dialogo di pianificazione. Questa chiamata viene ignorata quando viene eseguita in un'esplorazione. |
toggleCrossFilter |
Attiva/disattiva i filtri incrociati. Questa chiamata viene ignorata quando viene eseguita in un'esplorazione. |
Dati dell'SDK per i riquadri
Le proprietà dei dati dell'SDK per i riquadri disponibili sono riportate nella tabella seguente:
| Proprietà | Descrizione |
|---|---|
isExploring |
Se il valore è true, indica che il riquadro è in fase di configurazione come visualizzazione all'interno di un'esplorazione. |
dashboardId |
L'ID dashboard del riquadro di cui è in corso il rendering. Se il riquadro è in fase di configurazione come esplorazione, questa proprietà non verrà compilata. |
elementId |
L'ID elemento del riquadro di cui è in corso il rendering. Se il riquadro è in fase di configurazione come esplorazione, questa proprietà non verrà compilata. |
queryId |
L'ID query del riquadro di cui è in corso il rendering, se associato a una visualizzazione. Se il riquadro è in fase di configurazione come esplorazione, questa proprietà non verrà compilata.queryId è l'ID della query creata quando la visualizzazione è integrata nell'esplorazione di Looker. Non contiene filtri o filtri incrociati da applicare alla dashboard. Per riflettere i dati mostrati in QueryResponse, è necessario applicare filtri e filtri incrociati e generare una nuova query. Di conseguenza, potrebbero essere presenti proprietà più utili di queryId. Consulta filteredQuery per un oggetto query con i filtri applicati. |
querySlug |
Lo slug della query del riquadro di cui è in corso il rendering, se associato a una visualizzazione. Se il riquadro è in fase di configurazione come esplorazione, questa proprietà non verrà compilata.querySlug è uno slug della query creata quando la visualizzazione è integrata nell'esplorazione di Looker. Non contiene filtri o filtri incrociati applicati alla dashboard. Per riflettere i dati mostrati in QueryResponse, è necessario applicare filtri e filtri incrociati e generare una nuova query. Di conseguenza, potrebbero essere presenti proprietà più utili di querySlug. Consulta filteredQuery per un oggetto query con i filtri applicati. |
dashboardFilters |
I filtri applicati alla dashboard. Se il riquadro è in fase di configurazione come esplorazione, questa proprietà non verrà compilata. |
dashboardRunState |
Indica se la dashboard è in esecuzione. Se il riquadro è in fase di configurazione come esplorazione, lo stato sarà UNKNOWN.Per motivi di rendimento della dashboard, lo stato di esecuzione potrebbe non essere mai visualizzato come in esecuzione. In genere, questo accade se non sono presenti altri riquadri associati a una query, incluso quello a cui è associata l'estensione. Se l'estensione deve sapere con certezza che è stata eseguita una dashboard, il modo più affidabile è rilevare le differenze in lastRunStartTime. |
isDashboardEditing |
Se il valore è true, la dashboard è in fase di modifica. Se il riquadro è in fase di configurazione come esplorazione, questa proprietà non verrà compilata. |
isDashboardCrossFilteringEnabled |
Se il valore è true, i filtri incrociati sono abilitati nella dashboard. Se il riquadro è in fase di configurazione come esplorazione, questa proprietà non verrà compilata. |
filteredQuery |
Un oggetto query che corrisponde all'ID query associato all'elemento della dashboard sottostante che applica eventuali filtri della dashboard e modifiche del fuso orario apportate a livello di dashboard. |
lastRunSourceElementId |
L'ID dell'elemento dell'estensione dei riquadri che ha attivato l'ultima esecuzione della dashboard. L'ID sarà indefinito se l'esecuzione della dashboard è stata attivata dal pulsante Esegui della dashboard o dall'aggiornamento automatico oppure se l'esecuzione è stata attivata utilizzando l'SDK Embed. Se il riquadro è in fase di configurazione come esplorazione, questa proprietà non verrà compilata.Tieni presente che lastRunSourceElementId può essere uguale all'ID elemento dell'istanza dell'estensione corrente. Ad esempio, se l'estensione attiva un'esecuzione della dashboard, riceverà una notifica all'inizio e alla fine dell'esecuzione della dashboard. |
lastRunStartTime |
Indica l'ora di inizio dell'ultima esecuzione della dashboard. Se il riquadro è in fase di configurazione come esplorazione, questa proprietà non verrà compilata.Tieni presente che gli orari di inizio e fine segnalati non devono essere utilizzati per acquisire metriche di rendimento. |
lastRunEndTime |
Indica l'ora di fine dell'ultima esecuzione della dashboard. Se il riquadro è in fase di configurazione come esplorazione, questa proprietà non verrà compilata. Se il riquadro è in esecuzione, questa proprietà non verrà compilata.Tieni presente che gli orari di inizio e fine segnalati non devono essere utilizzati per acquisire metriche di rendimento. |
lastRunSuccess |
Indica se l'ultima esecuzione della dashboard ha avuto esito positivo o meno. Se il riquadro è in fase di configurazione come esplorazione, questa proprietà non verrà compilata. Se il riquadro è in esecuzione, questa proprietà non verrà compilata. |
Funzioni e proprietà dell'SDK per le visualizzazioni
Le funzioni e le proprietà dell'SDK per le visualizzazioni disponibili sono riportate nella tabella seguente:
| Funzione o proprietà | Descrizione |
|---|---|
visualizationData (proprietà) |
Visualizzazione (combinazione di dati visConfig e queryResponse). |
visConfig (proprietà) |
Dati di configurazione della visualizzazione:
|
queryResponse (proprietà) |
Dati di risposta della query |
configureVisualization |
Imposta la configurazione predefinita per una visualizzazione dell'estensione. La configurazione verrà sottoposta a rendering all'interno dell'editor di visualizzazione dell'esplorazione. Questa chiamata deve essere eseguita una sola volta. |
setVisConfig |
Aggiorna la configurazione della visualizzazione. |
updateRowLimit |
Aggiorna il limite di righe della query. |
Dati dell'SDK per le visualizzazioni
L'SDK per le visualizzazioni è costituito da:
- Dati di configurazione della visualizzazione
- Dati di risposta della query
Dati di configurazione della visualizzazione
| Proprietà | Descrizione |
|---|---|
queryFieldMeasures |
Informazioni sulle misure |
queryFieldDimensions |
Informazioni sulle dimensioni |
queryFieldTableCalculations |
Informazioni sui calcoli tabulari |
queryFieldPivots |
Informazioni pivot |
visConfig |
Dati di configurazione visiva. Questi devono essere uniti alla configurazione predefinita e applicati alla visualizzazione sottoposta a rendering dall'estensione. |
export interface VisualizationConfig {
queryFieldMeasures: Measure[]
queryFieldDimensions: Dimension[]
queryFieldTableCalculations: TableCalculation[]
queryFieldPivots: PivotConfig[]
visConfig: RawVisConfig
}
Dati di risposta della query
| Proprietà | Descrizione |
|---|---|
data |
Array di dati riga |
fieldMeasures |
Informazioni sulle misure dei campi. |
fieldDimensions |
Informazioni sulle dimensioni dei campi. |
fieldTableCalculations |
Informazioni sui calcoli tabulari dei campi. |
fieldPivots |
Informazioni pivot dei campi. |
fieldMeasureLike |
Un array concatenato di informazioni sulle misure dei campi e calcoli tabulari che si comportano come misure. |
fieldDimensionLike |
Un array concatenato di informazioni sulle dimensioni dei campi e calcoli tabulari che si comportano come dimensioni. |
Utilizzare l'SDK Embed
L'utilizzo dell'SDK Embed in un'estensione dei riquadri non è consigliato per i seguenti motivi:
- È possibile che l'estensione finisca per eseguire il rendering di una dashboard in cui l'estensione è un riquadro. Il framework delle estensioni non è in grado di rilevarlo e, di conseguenza, il browser potrebbe bloccarsi.
- Il rendering PDF dei contenuti incorporati all'interno di un'estensione dei riquadri non funziona.