# Relatórios
>[color=#00796b]Funcionalidade que permite ao desenvolvedor criar relatórios sobre os procedimentos realizados pela Agrotis Plataforma.

## Padrão de rotas
* LIST: `/relatorios`
* ITEM: `/relatorios/:nomeEntidade/:nomeRelatorio`
>[color=#00796b]`:nomeRelatorio` é capturado como `this.props.match.params.nomeRelatorio` e é responsável por conectar as informações contidas em `RelatorioList` ao seu respectivo conteúdo em `RelatorioItem`. Ele é utilizado como chave dentro do arquivo de declaração de um relatório no frontend (arquivo `data.js` em `RelatorioItem`), e é buscado ao iniciar o processo de gerar um relatório, na função `componentDidMount` de `RelatorioItem`;
## Containers
* `RelatorioList`: Arquivo da index que lista todas opções de relatórios;
* `RelatorioItem`: Container que renderiza a parametrização através dos componentes e consultas realizadas;
## Components
* `FilterData`: componente de filtro de data com parâmetros pré definidos;
* `FilterSelect`: componente que renderiza opções requeridas pelo relatório já previamente selecionadas na aba filtros;
* `Filtering`: componente de fieldarray permite adicionar filtros como parâmetros opcionais;
* `Ordering`: componente de fieldarray permite adicionar agrupamentos e respectivas ordenações como parâmetros opcionais;
## Store
* `actions`: setam informações da maneira correta em nossa store do Redux;
* `reducers`: setam informações da maneira correta em nossa store do Redux
* `actionTypes`: responsáveis por trafegar as actions corretas ao nosso reducer;
* `thunks`: responsáveis por fazer as chamadas e invocar actions corretas passando informacoes a elas;
* `initialState`: informações do estado inicial do formulário;
## Principais Arquivos
* **Endpoints consultados para popular campos e gerar relatórios** [endpoints.js](https://bitbucket.org/agrotis/core-frontend-react/src/relatorios/src/components/Relatorio/endpoints.js)
* Endpoints para popular campos
* Endpoints para gerar um relatório
* **Arquivos com os dados da Lista** [data.js](https://bitbucket.org/agrotis/core-frontend-react/src/relatorios/src/components/Relatorio/List/data.js)
* Título de `nomeEntidade`
* Título e função de `onCLick` de `nomeRelatorio`
* **Arquivos com os dados dos Items** [data.js](https://bitbucket.org/agrotis/core-frontend-react/src/relatorios/src/components/Relatorio/Item/data.js)
* `title`: título do relatório
* `selectedFilters`: filtros previamente selecionados
* `filterOpts`: filtros como opção em `[Adicionar Filtro]`
* `groups`: opções de agrupamentos e suas respectivas ordenações
* `geraRelatorio`: função que retorna objeto para gerar relatório
* `thunkGeraRelatorio`: validação e chamada de thunk para gerar relatório
<br>
## To Do List
1. Tratar chamadas nos selects para realizar buscas `onSearchChange` e popular campos a partir de parâmetro passado ao endpoint;
2. Separar dados de cada relatório em um arquivo separado, e importar todos em um index de dados;
3. Evitar a verificação `typeof === 'function'`;
4. Revisar internacionalizações de filtros e demais possíveis labels vindos das declarações de dados dos relatórios;
---
