Exemplos de filtros interativos personalizados
Como administrador, você pode criar widgets de filtro interativos personalizados para fornecer opções de filtragem avançadas nos painéis.
Caso de uso
Este exemplo detalha como criar um filtro personalizado para filtrar relatórios na tabela Tarefa ou em suas tabelas secundárias. O filtro mostra somente registros em que o usuário atual é o solicitante. O filtro expõe dois botões para o usuário, um botão para adicionar o filtro e um para remover o filtro.
Criar um widget de filtro interativo personalizado
Crie widgets de filtro interativos personalizados para fornecer opções de filtragem avançadas nos painéis.
Antes de Iniciar
Função necessária: administrador
Procedimento
O que Fazer Depois
Defina a lógica de filtragem.
Criar uma opção de filtro de data/hora personalizada
Quando a seleção padrão de opções de filtro de data/hora não atende às suas necessidades, você pode criar uma opção personalizada.
Antes de Iniciar
Siga estas etapas para criar uma opção de filtro de data/hora personalizada que pode ser incluída em qualquer filtro interativo baseado em data/hora para uso em um painel. Neste exemplo, você cria uma opção de filtro para o período de duas semanas, uma quinzena.
Função necessária: administrador
Procedimento
Definir lógica de filtragem - exemplo
Depois de criar o filtro interativo, adicione a lógica de filtragem.
Antes de Iniciar
Função necessária: administrador
Procedimento
Resultado
O filtro interativo personalizado aparece no painel ao qual você adicionou o bloco de conteúdo dinâmico. Ele também está na lista de blocos de conteúdo no painel Adicionar widgets.
Exemplo de filtro interativo personalizado - Vários relatórios
Você pode usar um filtro interativo personalizado para filtrar vários relatórios usando tabelas diferentes. Existem duas APIs diferentes para publicar um filtro interativo para uma única tabela ou várias tabelas. Este exemplo filtra um relatório nas tabelas de incidentes e problemas por grupo de atribuição usando um filtro interativo personalizado.
Sobre filtros interativos personalizados em várias tabelas
- Filtros interativos personalizados que se aplicam a apenas uma tabela usam a função DashboardMessageHandler.publishFilter().
- Filtros interativos personalizados que se aplicam a várias tabelas usam a função DashboardMessageHandler.publishMessage().
- Antes de publicar, é necessária uma chamada de filtro interativo para a função SNC.canvas.interactiveFilters.setDefaultValue().
- Uma chamada para a função SNC.canvas.interactiveFilters.removeDefaultValue() ou DashboardMessageHandler.removeFilter() é necessária antes de redefinir o filtro.
Um filtro interativo personalizado que chama o método publicarFilter() várias vezes atualiza o relatório associado o mesmo número de vezes. Chamadas repetidas para este método podem causar problemas de desempenho.
Como aplicar o filtro interativo personalizado a várias tabelas
O exemplo a seguir filtra o relatório por grupo de atribuição nas tabelas Incidente [incidente] e Problema [problema].
DashboardMessageHandler.publishMessage() aceita vários filtros como uma matriz. Construa a matriz de filtro e crie uma única instância de DashboardMessageHandler que chama DashboardMessageHandler.publishMessage([filters]). Este método atualiza o widget apenas uma vez.
<?xml version="1.0" encoding="UTF-8"?>
<j:jelly xmlns:j="jelly:core" xmlns:g="glide" xmlns:g2="null" xmlns:j2="null" trim="false">
<script>
var my_dashboardMessageHandler = new DashboardMessageHandler("my_unique_id");
function publishMultipleFilter() {
<!-- Mutliple filters can be passed as an array -->
var finalFilter = [{"table":"incident","filter":"assignment_group=6fcd3b573b331300ad3cc9bb34efc447"}, {"table":"problem","filter":"assignment_group=6fcd3b573b331300ad3cc9bb34efc447"}];
<!-- call setDefaultValue first -->
SNC.canvas.interactiveFilters.setDefaultValue({
id: my_dashboardMessageHandler._unique_id,
filters: finalFilter,
}, false);
<!-- then call Publishmessage to publish filters-->
my_dashboardMessageHandler.publishMessage(finalFilter);
}
function clearFilter() {
SNC.canvas.interactiveFilters.removeDefaultValue(my_dashboardMessageHandler._unique_id, false);
my_dashboardMessageHandler.removeFilter();
}
</script>
Example of a filter that filters incident and problem table where the assignment group is Problem solving
<input id="allTasks" type="button" value="All" onclick="clearFilter();" />
<input id="onlyMine" type="button" value="Assignment group is [Problem solving]" onclick="publishMultipleFilter();" />
</j:jelly>