Creare estensioni dei riquadri degli edifici

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 con dashboard_vis abilitata è 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'indicatore isDashboardEditing.
  • visualizationSDK: fornisce funzioni specifiche per le visualizzazioni per consentire all'estensione di interagire con l'host della dashboard Looker. Un esempio è la funzione updateRowLimit.
  • 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:

  • Configurazioni delle misure
  • Configurazioni delle dimensioni
  • Calcoli tabulari
  • Configurazioni pivot
  • Configurazioni delle visualizzazioni

Questi vengono utilizzati per personalizzare l'aspetto e il design di una visualizzazione in un'esplorazione.
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.