A partir do Looker 24.0, as extensões podem ser desenvolvidas para serem executadas em um bloco nos painéis. As extensões que podem ser executadas como bloco ou visualização podem ser adicionadas enquanto o painel está no modo de edição ou salvas em um painel como uma visualização de uma análise detalhada. As extensões também podem ser configuradas como blocos nos painéis do LookML.
Confira exemplos de extensões que podem ser usadas como blocos do painel:
- A extensão de visualização de blocos mostra como criar uma visualização personalizada usando o framework de extensão.
- A extensão do SDK de blocos mostra os métodos de API disponíveis específicos para extensões de blocos.
Como usar o SDK da extensão do Looker com extensões de blocos
As extensões de Bloco exigem que o parâmetro mount_points
seja definido no arquivo de manifesto do projeto do LookML para que as extensões sejam carregadas como Blocos em um painel. Há dois tipos de mount_points
relacionados às extensões de blocos:
mount_points: {
dashboard_vis: yes
dashboard_tile: yes
standalone: yes
}
dashboard_vis
: quando ativada, a extensão aparece nas opções de visualização de uma Análise detalhada, onde pode ser selecionada como uma visualização e salva como um bloco do painel. Quando o painel for executado, ele vai executar a consulta associada ao bloco e disponibilizar os dados para a extensão. Isso é semelhante ao funcionamento das visualizações personalizadas. A principal diferença entre uma visualização personalizada e uma extensão executada em um bloco do painel comdashboard_vis
ativada é que a extensão pode fazer chamadas da API Looker.dashboard_tile
: quando ativada, a extensão aparece no painel Extensões, que é exibido quando um usuário está editando um painel e seleciona a opção Extensões depois de clicar no botão Adicionar. Esse tipo de extensão é responsável por recuperar os próprios dados, em vez de fazer com que a consulta de Bloco forneça dados automaticamente à extensão.
Um ponto de montagem adicional, standalone
, faz com que a extensão apareça na seção Aplicativos do menu principal do Looker. É possível que uma extensão tenha vários pontos de montagem definidos. No momento da execução, a extensão é notificada sobre como ela é montada e pode ajustar o comportamento de acordo. Por exemplo, as extensões standalone
precisam definir a própria altura, enquanto as extensões de bloco não precisam.
Outras APIs da extensão de blocos
As extensões de Bloco são fornecidas com APIs e dados adicionais no momento da execução. Elas são obtidas do contexto da extensão:
const {
tileSDK,
tileHostData,
visualizationData,
visualizationSDK,
} = useContext(ExtensionContext40)
tileSDK
: fornece funções específicas do bloco para permitir que a extensão interaja com o host do painel do Looker. Por exemplo, para permitir que a extensão mostre e limpe mensagens de erro.tileHostData
: fornece dados de Bloco à extensão. Os dados são atualizados automaticamente com base nas interações com o painel de hospedagem. Um exemplo é o indicadorisDashboardEditing
.visualizationSDK
: oferece funções específicas de visualização para permitir que a extensão interaja com o host do painel do Looker. Um exemplo é a funçãoupdateRowLimit
.visualizationData
: fornece dados de visualização à extensão. Os dados são atualizados automaticamente com base nas interações com o painel de hospedagem. Os dados são semelhantes aos fornecidos para visualizações personalizadas.
Como criar extensões reativas
Os iframes em que as extensões são executadas são redimensionados automaticamente conforme a janela do host principal do Looker é redimensionada. Isso é refletido automaticamente na janela de conteúdo do iframe. O componente de iframe não tem preenchimento nem margem. Portanto, cabe à extensão fornecer o próprio preenchimento e margem para que ele fique consistente com o aplicativo do Looker. Para extensões independentes, a altura é controlada pela extensão. Para extensões executadas em blocos do painel ou visualizações do recurso "Explorar", a janela de conteúdo do iframe será definida automaticamente com a altura disponibilizada pelo iframe.
Considerações sobre renderização
É importante observar que as extensões de blocos são renderizadas quando um painel é baixado como PDF ou imagem. O renderizador espera que o bloco o notifique quando a renderização for concluída. Se isso não for feito, o renderizador vai parar de responder. Confira a seguir um exemplo de como notificar o renderizador de que o bloco foi renderizado.
const { extensionSDK } = useContext(ExtensionContext40)
useEffect(() => {
extensionSDK.rendered()
}, [])
As animações também precisam ser desativadas durante a renderização. Confira a seguir um exemplo em que as configurações de animação são desativadas durante a renderização:
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} />
}
Funções e propriedades do SDK do bloco
O SDK do bloco oferece funções que permitem que uma extensão de bloco interaja com o painel de hospedagem.
As funções e propriedades disponíveis são mostradas na tabela a seguir:
Função ou propriedade | Descrição |
---|---|
tileHostData (propriedade) |
Hospedar dados específicos da extensão do bloco. Consulte a seção Dados do SDK do bloco para mais detalhes. |
addError |
Quando for chamado, o painel ou a Análise vai mostrar uma mensagem de erro abaixo da visualização. |
clearError |
Quando chamado, o painel ou a Análise oculta qualquer mensagem de erro mostrada abaixo da visualização. |
openDrillMenu |
Para extensões de visualização, essa chamada abre um menu de detalhamento. Essa chamada é ignorada se a extensão não for uma visualização de extensão de bloco. |
runDashboard |
Executa o painel atual. Essa chamada é ignorada por uma extensão de visualização de blocos em execução em uma Análise. |
stopDashboard |
Interrompe um painel em execução. Essa chamada é ignorada por uma extensão de visualização de blocos em execução em uma Análise. |
updateFilters |
Atualiza os filtros no painel atual ou na Análise. |
openScheduleDialog |
Abre a caixa de diálogo de programação. Essa chamada é ignorada quando executada em uma Análise. |
toggleCrossFilter |
Alterna os filtros cruzados. Essa chamada é ignorada quando executada em uma Análise. |
Dados do SDK do bloco
As propriedades de dados do SDK de blocos disponíveis são mostradas na tabela a seguir:
Propriedade | Descrição |
---|---|
isExploring |
Quando verdadeiro, indica que o bloco está sendo configurado como uma visualização em uma seção "Explorar". |
dashboardId |
O ID do painel do bloco que está sendo renderizado. Se o Bloco estiver sendo configurado como um recurso "Explorar", essa propriedade não será preenchida. |
elementId |
O ID do elemento do bloco que está sendo renderizado. Se o Bloco estiver sendo configurado como um recurso "Explorar", essa propriedade não será preenchida. |
queryId |
O ID da consulta do bloco que está sendo renderizado, se ele estiver associado a uma visualização. Se o Bloco estiver sendo configurado como um recurso "Explorar", essa propriedade não será preenchida.O queryId é o ID da consulta criada quando a visualização é integrada ao Looker Explore. Ele não contém filtros ou filtragem cruzada para serem aplicados ao painel. Para refletir os dados mostrados no QueryResponse , é necessário aplicar filtros e filtros cruzados e gerar uma nova consulta. Como resultado, pode haver propriedades mais úteis do que queryId . Consulte filteredQuery para ver um objeto de consulta com filtros aplicados. |
querySlug |
O slug da consulta do bloco que está sendo renderizado, se ele estiver associado a uma visualização. Se o Bloco estiver sendo configurado como um recurso "Explorar", essa propriedade não será preenchida.O querySlug é um slug da consulta que é criado quando a visualização é integrada ao recurso Explorar do Looker. Ele não contém filtros ou filtragem cruzada aplicados ao painel. Para refletir os dados mostrados no QueryResponse , é necessário aplicar filtros e filtros cruzados e gerar uma nova consulta. Como resultado, pode haver propriedades mais úteis do que querySlug . Consulte filteredQuery para ver um objeto de consulta com filtros aplicados. |
dashboardFilters |
Os filtros que estão sendo aplicados ao painel. Se o bloco estiver sendo configurado como um recurso "Explorar", essa propriedade não será preenchida. |
dashboardRunState |
Indica se o painel está em execução. Se o bloco estiver sendo configurado como uma Análise, o estado será UNKNOWN .Por motivos de performance do painel, o estado de execução pode nunca ser mostrado como "Em execução". Isso geralmente acontece se não houver outros blocos associados a uma consulta, incluindo a que está associada à extensão. Se a extensão precisar saber com certeza se um painel foi executado, a detecção de diferenças no lastRunStartTime é a maneira confiável. |
isDashboardEditing |
Quando verdadeiro, o painel está sendo editado. Se o Bloco estiver sendo configurado como um recurso "Explorar", essa propriedade não será preenchida. |
isDashboardCrossFilteringEnabled |
Quando verdadeiro, a filtragem cruzada é ativada no painel. Se o Bloco estiver sendo configurado como um recurso "Explorar", essa propriedade não será preenchida. |
filteredQuery |
Um objeto de consulta que corresponde ao ID da consulta associado ao elemento do painel que aplica os filtros e as mudanças de fuso horário feitas no painel. |
lastRunSourceElementId |
O ID do elemento de extensão do bloco que acionou a última execução do painel. O ID será indefinido se a execução do painel tiver sido acionada pelo botão Run ou autorefresh do painel ou se a execução tiver sido acionada usando o SDK incorporado. Se o Bloco estiver sendo configurado como um recurso "Explorar", essa propriedade não será preenchida.O lastRunSourceElementId pode ser igual ao ID do elemento da instância de extensão atual. Por exemplo, se a extensão acionar uma execução de painel, ela vai receber uma notificação quando a execução de painel começar e terminar. |
lastRunStartTime |
Indica o horário de início da última execução do painel. Se o bloco estiver sendo configurado como um recurso "Explorar", essa propriedade não será preenchida.Os horários de início e término informados não devem ser usados para capturar métricas de performance. |
lastRunEndTime |
Indica o horário de término da última execução do painel. Se o Bloco estiver sendo configurado como um recurso "Explorar", essa propriedade não será preenchida. Se o Bloco estiver em execução, essa propriedade não será preenchida.Os horários de início e término informados não devem ser usados para capturar métricas de performance. |
lastRunSuccess |
Indica se a última execução do painel foi bem-sucedida ou não. Se o bloco estiver sendo configurado como um recurso "Explorar", essa propriedade não será preenchida. Se o Bloco estiver em execução, essa propriedade não será preenchida. |
Funções e propriedades do SDK de visualização
As funções e propriedades disponíveis do SDK de visualização são mostradas na tabela a seguir:
Função ou propriedade | Descrição |
---|---|
visualizationData (propriedade) |
Visualização (combinação de dados de visConfig e queryResponse ). |
visConfig (propriedade) |
Dados de configuração da visualização:
|
queryResponse (propriedade) |
Dados de resposta da consulta |
configureVisualization |
Define a configuração padrão para uma visualização de extensão. A configuração será renderizada no editor de visualização "Explorar". Ele só precisa ser chamado uma vez. |
setVisConfig |
Atualiza a configuração da visualização. |
updateRowLimit |
Atualiza o limite de linhas da consulta. |
Dados do SDK de visualização
O SDK de visualização consiste no seguinte:
- Dados de configuração da visualização
- Consultar dados de resposta
Dados de configuração da visualização
Propriedade | Descrição |
---|---|
queryFieldMeasures |
Medir informações |
queryFieldDimensions |
Informações de dimensão |
queryFieldTableCalculations |
Informações sobre o cálculo da tabela |
queryFieldPivots |
Informações do Pivot |
visConfig |
Dados de configuração visual. Ela precisa ser mesclada com a configuração padrão e aplicada à visualização renderizada pela extensão. |
export interface VisualizationConfig {
queryFieldMeasures: Measure[]
queryFieldDimensions: Dimension[]
queryFieldTableCalculations: TableCalculation[]
queryFieldPivots: PivotConfig[]
visConfig: RawVisConfig
}
Consultar dados de resposta
Propriedade | Descrição |
---|---|
data |
Matriz de dados de linha |
fieldMeasures |
Informações sobre a medição do campo. |
fieldDimensions |
Informações de dimensão do campo. |
fieldTableCalculations |
Informações sobre os cálculos da tabela de campos. |
fieldPivots |
Informações de pivot de campo. |
fieldMeasureLike |
Uma matriz concatenada de informações de medição de campo e cálculos de tabela que se comportam como medições. |
fieldDimensionLike |
Uma matriz concatenada de informações de dimensão de campo e cálculos de tabela que se comportam como dimensões. |