Filtros no relatório de indicador (entidade, e datas de início e fim)
É possível adicionar filtros nesse relatório, o filtro utiliza recursos da biblioteca datatables. Os filtros estão disponiveis nos indicadores tradicionais (Query Builder) ou na nova estrutura de indicadores por entrypoint.
Disponíveis filtros por entidade, e datas de início e fim.

Sobre
Dentro da estrutura do indicador podemos adicionar uma nova propriedade chamada filters
e nela vamos configurar os filtros.
O valor no card exibido no relatório é atualizado conforme a quantidade de registros retornados.
Declarando os filtros
Usa-se o indice "entity", cujo os atributos são field
que é o idenetificador da entidade, mais, column_name
e column_pos
.
Para os filtros de data se faz necessário passar apenas os campos column_name
e column_pos
.
field
que é campo que identifica a entidade.
column_name
é o nome da coluna.
column_pos
é localização da coluna na tabela.
- Query Builder
"mais12Horas": {
"filters": {
"entity": {
"field": "funcionario_seq_db",
"column_name": "Funcionário",
"column_pos": 2
},
"ini_date": {
"column_name": "Início",
"column_pos": 3
},
"fim_date": {
"column_name": "Termino",
"column_pos": 4
}
},
"label": {...}
}
- Entrypoint
$mais12Horas = [
"filters" => [
"entity" => [
"field" => "funcionario_seq_db",
"column_name" => "Funcionário",
"column_pos" => 2
],
"ini_date" => [
"column_name" => "Início",
"column_pos" => 3
],
"fim_date" => [
"column_name" => "Término",
"column_pos" => 4
]
],
[...]
]
O atributo field
faz parte o filtro por entidade, ele que determina o campo que usaremos para identificar as entidades.
O atributo column_name
é o nome dado a coluna.
E o atributo column_pos
determina em qual coluna o campo está.
Configuração de Filtros na Tela de Indicadores (Filtros customizados)
NÃO possui compatibilidade com o filtro simples 'filters' acima.
Esta funcionalidade permite a configuração de filtros para refinar os dados exibidos na tela de Indicadores. Os filtros são definidos no objeto filters_custom
, onde cada filtro possui uma column
, um type
e options
específicas. Diferentemente do filters, o filters_custom permite criar qualquer tipo de filtro, definindo o operador lógico e o tipo de dado que será filtrado.
Tipos de Filtros
1. Filtro por Data (type: Date
)
Permite filtrar registros com base em uma data específica. O input enviará para o backend um valor no formato brasileiro 'd/m/Y'
. É importante realizar a conversão usando STR_TO_DATE
e estar atento ao tipo de dado da coluna:
- Caso a coluna seja do tipo
DATETIME
(contém hora), utilizeDATE_ADD(..., INTERVAL 1 DAY)
para garantir a inclusão de registros do mesmo dia. - Caso a coluna seja do tipo
DATE
(sem hora), a comparação direta comSTR_TO_DATE(..., '%d/%m/%Y')
é suficiente.
Exemplo de uso para intervalo de datas:
"ABERTURA_1": {
"type": "Date",
"options": {
"label": "De",
"sql-condition": "os.DATA_ABERTURA >= STR_TO_DATE(:ABERTURA_1, '%d/%m/%Y')"
}
},
"ABERTURA_2": {
"type": "Date",
"options": {
"label": "Até",
"sql-condition": "os.DATA_ABERTURA < DATE_ADD(STR_TO_DATE(:ABERTURA_2, '%d/%m/%Y'), INTERVAL 1 DAY)"
}
}
- ABERTURA_1 (De): Retorna registros cuja data de abertura seja maior ou igual à data informada.
- ABERTURA_2 (Até): Retorna registros cuja data de abertura seja menor ou igual ao final do dia informado (23:59:59), funcionando corretamente mesmo quando a coluna contém hora.
2. Filtro por Tabela (type: Table
)
Utilizado para selecionar valores de uma tabela externa.
Exemplo:
"CLIENTE": {
"type": "Table",
"options": {
"label": "Cliente",
"sql-condition": "cli.SEQ_DB = :CLIENTE",
"multiple": true
}
},
- Lógica: Permite selecionar múltiplos registros da tabela
os
para filtrar os dados.
3. Filtro por Escolha (type: Choice
)
Permite selecionar um ou mais valores predefinidos.
Exemplo:
"OT": {
"type": "Choice",
"options": {
"label": "Selecione um OT",
"sql-condition": "cli.OT = :OT",
"multiple": true,
"choices": {
"700000019622": "700000019622",
"teste 2": "teste 2",
"teste 3": "teste 3",
"teste 4": "teste 4"
}
}
}
- Lógica: O usuário pode selecionar um ou mais valores da lista predefinida. O operador
=
garante que apenas registros com os valores selecionados sejam retornados.
4. Filtro por Texto (type: Text
)
Permite pesquisar registros por um campo textual específico.
Exemplo:
"NUMERO_CHECKLIST": {
"type": "Text",
"options": {
"label": "Número do Checklist",
"sql-condition": "apn.SEQ_DB_DEVICE = :NUMERO_CHECKLIST"
}
}
- Lógica: Retorna registros onde o valor da coluna
CLIENTE
seja exatamente igual ao informado pelo usuário.
Cada filtro pode ser configurado de acordo com a necessidade do usuário, garantindo maior flexibilidade na consulta de dados na tela de Indicadores.
Exemplo de relatorio completo: Coluna CODE da tabela nfs_entry_point
{
"OSProspeccao": {
"label": "OS's Programadas (Prospecção)",
"color": "green-jungle",
"icon": "fa fa-calendar",
"display": "[result]",
"queryBuilder": { ...
},
"report": {
"displayColumns": [
"OT",
"ABERTURA",
"TECNICO",
"NUMERO_CHECKLIST",
"EQUIPAMENTO",
"CLIENTE"
],
"links": {
...
}
},
"filters_custom": {
"ABERTURA_1": {
"type": "Date",
"options": {
"label": "De",
"sql-condition": "os.DATA_ABERTURA >= STR_TO_DATE(:ABERTURA_1, '%d/%m/%Y')"
}
},
"ABERTURA_2": {
"type": "Date",
"options": {
"label": "Até",
"sql-condition": "os.DATA_ABERTURA < DATE_ADD(STR_TO_DATE(:ABERTURA_2, '%d/%m/%Y'), INTERVAL 1 DAY)"
}
},
"OS": {
"type": "Table",
"options": {
"label": "OT",
"sql-condition": "os.SEQ_DB = :OS",
"multiple": true
}
},
"FUNCIONARIO": {
"type": "Table",
"options": {
"label": "Técnico",
"sql-condition": "fun.SEQ_DB = :FUNCIONARIO",
"multiple": true
}
},
"EQUIPAMENTO": {
"type": "Table",
"options": {
"label": "Equipamento",
"multiple": true,
"sql-condition": "eqp.SEQ_DB = :EQUIPAMENTO"
}
},
"CLIENTE": {
"type": "Table",
"options": {
"label": "Cliente",
"sql-condition": "cli.SEQ_DB = :CLIENTE",
"multiple": true
}
},
"NUMERO_CHECKLIST": {
"type": "Text",
"options": {
"label": "Número do Checklist",
"sql-condition": "apn.SEQ_DB_DEVICE = :NUMERO_CHECKLIST"
}
}
}
}
}