A partir do Looker 24.0, é possível desenvolver extensões para serem executadas em um bloco nos painéis. As extensões que podem ser executadas como um 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. As extensões também podem ser configuradas como blocos nos painéis do LookerML.
Estes são alguns exemplos de extensões que podem ser usadas como blocos do painel de controle:
- A extensão de visualização de blocos mostra como criar uma visualização personalizada usando o framework de extensão.
- A extensão SDK de bloco mostra os métodos de API disponíveis específicos para as extensões de bloco.
Usar o SDK da extensão do Looker com extensões de bloco
As extensões de blocos exigem que o parâmetro mount_points
seja definido no arquivo de manifesto do projeto LookML para que as extensões sejam carregadas como blocos em um dashboard. 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, onde ela pode ser selecionada como uma visualização e salva como um bloco do painel. Quando o dashboard é executado, ele executa a consulta associada ao bloco e disponibiliza os dados para a extensão. Esse processo é semelhante ao funcionamento das visualizações personalizadas. A principal diferença entre uma visualização personalizada e uma extensão em execução em um bloco do painel comdashboard_vis
ativado é que a extensão pode fazer chamadas da API Looker.dashboard_tile
: quando ativada, a extensão aparece no painel Extensões 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 extra, standalone
, faz com que a extensão apareça na seção Applications do menu principal do Looker. É possível que uma extensão tenha vários pontos de montagem definidos. No tempo de execução, a extensão é notificada de como é montada e pode ajustar seu comportamento de acordo. Por exemplo, as extensões standalone
podem precisar definir a própria altura, enquanto as extensões de blocos não.
Outras APIs da extensão de Bloco
As extensões de blocos são fornecidas com APIs e dados extras no tempo de execução. Elas são extraídas do contexto da extensão:
const {
tileSDK,
tileHostData,
visualizationData,
visualizationSDK,
} = useContext(ExtensionContext40)
tileSDK
: fornece funções específicas de 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 para a extensão. Os dados são atualizados automaticamente com base nas interações com o painel de hospedagem. Um exemplo é o indicadorisDashboardEditing
.visualizationSDK
: fornece 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 para a 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 pai do Looker é redimensionada. Isso é refletido automaticamente na janela de conteúdo do iframe. O componente do iframe não tem padding nem margem. Por isso, cabe à extensão fornecer o próprio padding e margem para que pareça consistente com o aplicativo Looker. Para extensões independentes, cabe à extensão controlar a altura da extensão. Para extensões executadas em blocos de dashboard ou visualizações de Explore, a janela de conteúdo do iframe será definida automaticamente de acordo com a altura disponibilizada pelo iframe.
Considerações de renderização
É importante observar que as extensões de bloco são renderizadas quando um painel é transferido por download como PDF ou imagem. O renderizador espera que o bloco o notifique quando a renderização terminar. Se isso não for feito, o renderizador não responderá mais. Este é 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 Tile
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) |
Dados de host específicos para a extensão de bloco. Consulte a seção Dados do SDK do Tile para ver mais detalhes. |
addError |
Quando chamado, o dashboard ou a Análise mostra uma mensagem de erro abaixo da visualização. |
clearError |
Quando chamado, o dashboard ou a Análise vai ocultar 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 será ignorada se a extensão não for uma visualização de extensão de blocos. |
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 dashboard em execução. Essa chamada é ignorada por uma extensão de visualização de blocos em execução em uma Análise |
updateFilters |
Atualiza filtros no dashboard atual ou em "Explorar". |
openScheduleDialog |
Abre a caixa de diálogo de programação. Essa chamada é ignorada durante a execução em um Explore. |
toggleCrossFilter |
Alterna entre filtros. Essa chamada é ignorada durante a execução em um Explore. |
Dados do SDK do Tile
As propriedades de dados do SDK de bloco 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 dentro de um Explore. |
dashboardId |
O ID do dashboard do bloco que está sendo renderizado. Se o bloco estiver configurado como uma Análise, essa propriedade não será preenchida. |
elementId |
O ID do elemento do bloco que está sendo renderizado. Se o bloco estiver configurado como uma Análise, essa propriedade não será preenchida. |
queryId |
O ID da consulta do bloco que está sendo renderizado se estiver associado a uma visualização. Se o bloco estiver configurado como uma Análise, essa propriedade não será preenchida.O queryId é o ID da consulta criada quando a visualização é integrada à Análise do Looker. Ele não contém filtros ou filtragem cruzada a serem aplicados ao painel. Para refletir os dados mostrados na QueryResponse , filtros e filtros cruzados precisarão ser aplicados e uma nova consulta será gerada. Como resultado, pode haver propriedades mais úteis do que queryId . Consulte filteredQuery para um objeto de consulta com filtros aplicados. |
querySlug |
A consulta slug do bloco que está sendo renderizado se estiver associada a uma visualização. Se o bloco estiver configurado como uma Análise, essa propriedade não será preenchida.O querySlug é um slug da consulta criada quando a visualização é integrada à Análise do Looker. Ele não contém filtros ou filtragem cruzada aplicados ao painel. Para refletir os dados mostrados na QueryResponse , filtros e filtros cruzados precisarão ser aplicados e uma nova consulta será gerada. Como resultado, pode haver propriedades mais úteis do que querySlug . Consulte filteredQuery para um objeto de consulta com filtros aplicados. |
dashboardFilters |
Os filtros que estão sendo aplicados ao painel. Se o bloco estiver configurado como uma Análise, 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 desempenho do painel, talvez o runstate nunca seja mostrado como em execução. Isso geralmente acontece quando não há outros blocos associados a uma consulta, incluindo aquele ao qual a extensão está associada. Se a extensão precisar saber com certeza que 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 configurado como uma Análise, essa propriedade não será preenchida. |
isDashboardCrossFilteringEnabled |
Quando verdadeiro, o cruzamento de filtros será ativado no painel. Se o bloco estiver configurado como uma Análise, essa propriedade não será preenchida. |
filteredQuery |
Um objeto de consulta que corresponde ao ID de consulta associado ao elemento do dashboard subjacente que aplica todos os filtros do painel e alterações de fuso horário feitas no nível do painel. |
lastRunSourceElementId |
O ID do elemento de extensão de bloco que acionou a última execução do dashboard. O ID será indefinido se a execução do painel for acionada pelo botão Executar ou pela atualização automática do painel, ou se a execução tiver sido acionada usando o SDK incorporado. Se o bloco estiver configurado como uma Análise, 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 do painel, ela será notificada quando a execução do painel começar e terminar. |
lastRunStartTime |
Indica o horário de início da última execução do painel. Se o bloco estiver configurado como uma Análise, 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 desempenho. |
lastRunEndTime |
Indica o horário de término da última execução do painel. Se o bloco estiver configurado como uma Análise, essa propriedade não será preenchida. Se o bloco estiver em execução, esta 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 desempenho. |
lastRunSuccess |
Indica se a última execução do painel foi bem-sucedida ou não. Se o bloco estiver configurado como uma Análise, essa propriedade não será preenchida. Se o bloco estiver em execução, esta propriedade não será preenchida. |
Funções e propriedades do SDK de visualização
As funções e propriedades do SDK de visualização disponíveis são mostradas na tabela a seguir:
Função ou propriedade | Descrição |
---|---|
visualizationData (propriedade) |
Visualização (combinação de dados visConfig e queryResponse ). |
visConfig (propriedade) |
Dados de configuração de visualização:
|
queryResponse (propriedade) |
Dados de resposta da consulta |
configureVisualization |
Define a configuração padrão de uma visualização de extensão. A configuração será renderizada no editor de visualização da Análise. Ele só deve ser chamado uma vez. |
setVisConfig |
Atualiza a configuração de 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 de visualização
- Dados de resposta de consulta
Dados de configuração de visualização
Propriedade | Descrição |
---|---|
queryFieldMeasures |
Medir as informações |
queryFieldDimensions |
Informações de dimensão |
queryFieldTableCalculations |
Informações de cálculo da tabela |
queryFieldPivots |
Informações de tabela dinâmica |
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
}
Dados de resposta de consulta
Propriedade | Descrição |
---|---|
data |
Matriz de dados da linha |
fieldMeasures |
Informações de medição de campo. |
fieldDimensions |
Informações de dimensão do campo |
fieldTableCalculations |
Informações de cálculos da tabela de campo. |
fieldPivots |
Informações de tabela dinâmica de campo. |
fieldMeasureLike |
Uma matriz concatenada de informações de medição de campo e cálculos de tabela que se comportam como medidas. |
fieldDimensionLike |
Uma matriz concatenada de informações de dimensão de campo e cálculos de tabela que se comportam como dimensões. |