Relatório analítico / BI
Os relatórios são uma forma de transformar os dados dentro do agilityflow, em informações valiosas. Os relatórios podem trazer uma série de dados de diferentes tabelas, com inúmeros cruzamentos, que possibilitam ao usuário do agilityflow, fazer uma série de análises e auxiliam na tomada de decisões estratégicas no seu negócio.
Para criar o relatório, é necessário dar um nome. Além disso, escolhe-se um ícone e o menu onde o relatório vai ficar, além de informar uma descrição. Existem também uma opção para desativar o relatório.
Os relatórios são divididos em painéis. Esses painéis, possuem elementos, assim como os widgets do dashboard. É possível adicionar múltiplos painéis.
Filtro
Todo relatório também possui uma área de filtros. Isso possibilita que os relatórios possam ter seus dados filtrados no momento em que o usuário o acessa. Isso possibilita expor informações e permitir que o usuário interaja com esses dados como lhe convir.
Apesar de útil, os filtros são opcionais em um relatório.
Ao adicionar os filtros, você deve criar campos para que o usuário interaja com o filtro. Ao criar um novo campo para o seu filtro, você deve preencher as seguintes informações:
Nome de Apresentação
É o nome que será mostrado ao usuário, e é como esse filtro será identificado na configuração do relatório.
Id do campo
É como esse valor será levado para as queries que montarão o relatório.
Ativo
Por padrão, é marcado como Sim. Habilita ou desabilita um filtro para ser usado no relatório.
Tipo
Como esse filtro é um campo, você deve informar de qual tipo é esse campo.
Texto Livre
É um campo que o usuário pode colocar qualquer texto
Data/Hora
Um campo contendo data e/ou hora. É também necessário definir um formato:
- Data e hora no formato dd/mm/yyyy hh:mm
- Data sem hora no formato dd/mm/yyyy
- Hora no formato hh:mm
Número
Campo com um valor numérico.
É também necessário definir um formato:
- Inteiro
- Moeda (Real)
- Decimal (1 casa decimal)
- Decimal (2 casas decimal)
- Decimal (3 casas decimal)
- Decimal (4 casas decimal)
- Decimal (5 casas decimal)
Lista para Seleção ou Pesquisa com Auto Completar
Para esses tipos, é necessário escolher a base de dados que será utilizada e o campo de apresentação. Além disso, é possível adicionar uma condição na base de dados.
Após a configuração do filtro, será criada uma variável. Essa variável está indicada com "@" e deverá ser usada na query juntamente com a Função Filter.
Definir os valores e regras iniciais para os campos do filtro
Após adicionar os campos do filtro (descritos acima), é possível definir valores padrões iniciais para os filtros. Além disso, é possível bloquear a alteração desse filtro, e também o fazê-lo dependendo do usuário ou perfil do usuário. Para maiores detalhes, veja o item definir os valores e regras iniciais dos filtros do capítulo lista e consulta nas configurações do formulário.
Painel
Todo painel tem um título. Esse título pode ou não ser exibido, clicando no ícone .
Outra opção, é a cor do tema. Ela pode ser escolhida na opção tema. As opções de cores são:
- Branco (padrão)
- Cinza
- Azul
- Verde
- Roxo
- Vermelho
- Amarelo
Para alterar o tamanho de um widget, basta clicar em e deixar com o tamanho desejado.
Elementos de um painel:
Label
É um texto, que pode ser fixo ou dinâmico. Caso seja dinâmico, o texto deve ser o resultado de uma query SQL. Essa query vai ter seu resultado atribuído à variáveis. Para utilizá-las, basta escrever @ e selecionar a variável. É possível combinar textos com variáveis.
Caso seja fixo, basta digitar o texto normalmente.
Além disso, é possível formatar o texto de várias maneiras, como definir o alinhamento vertical e horizontal do texto, tamanho e fonte.
E por fim, é possível que ao clicar no texto, o usuário seja levado a um link. Basta preencher a URL.
Ao posicionar qualquer elemento no painel, é possível redimensioná-lo usando o ícone .
Ícone
É possível adicionar um ícone como elemento de um painel. Basta selecionar um ícone em uma das bibliotecas disponíveis. Ainda é possível editar alinhamento (vertical e horizontal), tamanho, cor e criar um link.
Imagem
Para fazer o upload de uma imagem, basta clicar no retângulo ou arrastar um arquivo até ele.
É possível formatar largura, altura e alinhamento (vertical e horizontal) e criar um link.
Gráfico
Ao se adicionar um gráfico, é possível escolher entre duas origem dos dados:
Criar uma tabela com dados Estáticos
Nessa opção, o usuário define os dados de maneira manual em uma tabela, como uma planilha. É possível adicionar dados em linhas e colunas, usando os botões .
Ao clicar na opção 'Editar tipo e propriedades do gráfico' ou no ícone , é possível definir o tipo do gráfico.
O sistema já sugere o gráfico mais recomendado na guia início. Clicando na aba Gráficos (ou em 'Mais »'), o sistema exibe todos os demais gráficos disponíveis.
Na aba Personalizar é possível editar as características do gráfico selecionado, como título, legenda, fonte, cores, entre outros.
Fonte de dados Dinâmica
Nesse caso, é necessário criar uma query para se obter os dados. As demais configurações, seguem o padrão do exemplo acima.
Tabela de Dados
Quando o elemento é a tabela de dados, a fonte para essa tabela, só pode ser dinâmica, ou seja, através de uma query.
Query
No exemplo abaixo, queremos uma tabela com a lista de autores cadastrados no sistema. A query está obtendo os campos 'id', 'nome', 'sexo' e 'nacionalidade' da tabela 'x_tbl_autor'.
select nome, sexo, nacionalidade from x_tbl_autor
Esse é um exemplo de um resultado dessa query:
Uma vez a query montada, é possível formatar a tabela.
Importante: caso o relatório que esteja sendo criado possua filtros, é necessário incluir a função Filter com a(s) variável(is) criadas no filtro.
A função filter tem a seguinte sintaxe:
Filter(variável, tabela, campo)
- variável: ao criar um filtro, é criada uma variável. A lista de variáveis está na tela de montagem da query;
- tabela: é a tabela onde esse filtro deve acontecer;
- campo: é o campo da tabela que será usado no filtro;
select nome, sexo, nacionalidade from x_tbl_autor
where
Filter (@sexo, x_tbl_autor, sexo) and
Filter (@nome, x_tbl_autor, nome)
No exemplo acima, existe dois filtros e suas variáveis (@sexo e @nome) que serão aplicados nos campos 'nome' e 'sexo' da tabela 'x_tbl_autor'.
Configuração das colunas da tabela
- Ordem das colunas: clique no ícone e arraste a coluna para a posição desejada;
- Nome de apresentação: edite o nome da coluna;
- Largura em %: deixe 'padrão' para uma divisão igual da largura entre as colunas. Caso contrário, informe em porcentagem a largura de cada coluna;
- Visível: ligador por padrão, é possível ocultar uma coluna sem precisar alterar a query;
- Prefixo: é possível incluir um texto antes dos valores dessa coluna;
- Sufixo: é possível incluir um texto depois dos valores dessa coluna;
- Informação no rodapé:
- Cálculo: é possível fazer um cálculo (numérico ou hora) e informar no rodapé da coluna. Os valores nessa coluna precisam ser do tipo inteiro ou decimal (para cálculo numérico) ou estar no formato de hora HH:mm (para cálculo em hora)
- Máscara: caso o cálculo seja numérico, escolha a máscara apropriada para o resultado. Para cálculo em hora, a máscara HH:mm é preenchida automaticamente.
Ordenação
Selecione o campo que será ordenada as informações, e escolha se a ordenação é crescente ou decrescente.
Paginação
Escolha a quantidade de registros por página.
Header
Permite mostrar ou não o cabeçalho da tabela;
Link da Linha
É possível redirecionar o usuário caso haja um click na linha. Esse link pode ser interno no agilityflow ou externo. Caso seja interno, é possível escolher se o link será aberto como:
- Um lightbox;
- Na mesma janela;
- Uma nova janela;
Tabelas de dados filha (Master e Detail)
Além de uma tabela, é possível agrupar uma tabela em cada linha dessa primeira tabela, configurada no exemplo acima.
Para isso, basta adicionar uma tabela de dados filha. Ao fazer isso, o mesmo processo de configuração de uma tabela de dados comum é iniciado, mas com uma diferença.
Caso essa tabela filha tenha relação com a tabela principal, basta obter a coluna id na query da tabela principal. Esse valor, é passado para a tabela filha, em uma variável chamada @master_id.
No exemplo acima, ao clicar no nome do autor, é apresentado a lista de livros cadastradas no sistema relacionados com esse autor. A query ficaria assim:
select x_tbl_livro.nome as NomeLivro, x_tbl_livro.ano as Ano from x_autor_livro
inner join x_tbl_livro on id_x_tbl_livro = x_tbl_livro.id
where id_x_tbl_autor = @master_id
A tabela filha, apesar de recomendado, não precisa ter relação com a tabela principal.