Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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.

Filtros

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), utilize DATE_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 com STR_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"
          }
      }
    }
  }
}