Delegação de parâmetro de URL do painel
A propriedade Delegar parâmetros de URL é habilitada UIB Páginas que contêm componentes do painel para controlar como as atualizações de parâmetro de URL são tratadas. Isso habilita a lógica de navegação personalizada para cenários incorporados ou de espaço.
Por padrão, os componentes do painel atualizam automaticamente o URL do navegador quando os usuários alternam painéis, mudam de guias ou alternam o modo de edição. Esse comportamento funciona bem para páginas de painel padrão, mas pode não se adequar a todos os cenários de implementação.
. Parâmetros de URL de delegado A propriedade fornece uma abordagem alternativa em que o componente do painel expede eventos em vez de atualizar URLs diretamente. Este mecanismo de delegação permite que as páginas primárias implementem a lógica de navegação personalizada.
Para obter informações sobre esta propriedade no contexto do painel de configuração do componente Painel, consulte Propriedades do componente do painel.
Quando usar a delegação de parâmetro de URL
A delegação de parâmetro de URL é útil nestes cenários:
- A estrutura de URL da página não inclui parâmetros de URL do painel, por exemplo, não
sys-idNo caminho do URL - A página requer lógica de navegação personalizada para mudanças no painel
- O painel é incorporado a um espaço em que a gestão de URL é tratada pelo componente primário
- Existem vários componentes do painel na mesma página e precisam de manipulação coordenada de URL
Como a delegação funciona
Quando Parâmetros de URL de delegado está desabilitado (comportamento padrão):
- O usuário executa uma ação, como alternar o painel, mudar a guia ou alternar o modo de edição
- O componente do painel expede um interno
CONTENT_UPDATEDação - UIB A estrutura processa a ação e atualiza os parâmetros de URL automaticamente
Quando Parâmetros de URL de delegado está habilitado:
- O usuário executa uma ação
- O componente do painel suprime o.
CONTENT_UPDATEDexpedição - Despachos do componente do painel
URL_PARAMS_UPDATE_REQUESTED DO PAINELcom dados de parâmetro estruturado - O script do cliente na página recebe o evento e implementa a lógica de navegação personalizada
Estrutura de carga do evento
. URL_PARAMS_UPDATE_REQUESTED DO PAINEL o evento contém um urlParamsobjeto com informações de parâmetro estruturado. Cada parâmetro inclui o valor, a descrição e os metadados adicionais, como nomes do painel e indicadores de novas guias.
Esta abordagem estruturada fornece scripts de cliente com contexto suficiente para tomar decisões de navegação informadas, incluindo o tratamento de casos especiais, como abrir painéis em novas guias do navegador.
Para obter mais informações sobre este evento, consulte Eventos do componente do painel.
Configure a delegação de parâmetro de URL do painel
Habilite a delegação de parâmetro de URL para componentes do painel para implementar a lógica de navegação personalizada em UIB páginas.
Antes de Iniciar
Função necessária: ui_builder_admin
Por Que e Quando Desempenhar Esta Tarefa
Configure a delegação de parâmetro de URL quando precisar de controle personalizado sobre como a navegação do painel atualiza os URLs do navegador. Isso é útil para painéis incorporados, cenários de espaço ou páginas com estruturas de URL não padrão.
Procedimento
Resultado
Quando os usuários interagem com o painel (alternar painéis, mudar de guias, alternar modo de edição), o componente expede eventos que o script do cliente pode manipular com a lógica de navegação personalizada.
Script de cliente de delegação básica
Este script de exemplo replica o comportamento de atualização de URL padrão:
function handler({api, event}) {
const {urlParams} = event.payload;
for (const [key, paramInfo] of Object.entries(urlParams)) {
if (key === 'sysId' && paramInfo.isNewTab === true) {
// Handle new tab navigation
api.emit('NAV_ITEM_SELECTED', {
route: 'dashboards',
title: paramInfo.dashboardName || paramInfo.value,
params: {sysId: paramInfo.value},
navigationOptions: {
navigateExternal: true,
target: '_blank'
}
});
return;
}
// Handle normal navigation
api.emit('CONTENT_UPDATED', {
route: 'dashboards',
params: {[key]: paramInfo.value}
});
}
}