Fala, pessoal! Beleza?
Bom, neste artigo falarei sobre como podemos criar visualizações de dados & Dashboards totalmente interativos com a bibliotecas do JavaScript: D3.js.
Já estava sentindo saudades de vocês! Vamos matar essa saudade agora?
O que é D3.js?
O D3.js é uma biblioteca do JavaScript que ajuda a manipular documentos baseados em dados, e o mais legal dessa biblioteca é que você pode fazer a integração desses dados usando: HTML, CSS e SVG.
Por que eu resolvi escrever sobre isso? Porque eu estava realizando um trabalho dentro de uma empresa de seguros (a qual não posso mencionar), e eles precisavam fazer uso de alguma biblioteca que precisasse integrar as informações/dados do sistema para a WEB.
E a solução (até o momento) que eles estavam pensando, era o Neo4j Graph, outra excelente biblioteca – a qual poderei escrever outro artigo a respeito. Mas, devido a alta complexidade da biblioteca e falta de documentação, acabaram desistindo e indo para uma outra opção (agora não sei, uma vez que não estou mais lá).
Bom, como sou uma pessoa super curiosa, quando cheguei em casa eu procurei realmente testar o Neo4j e também achei um pouco complexo. Mas, quando eu encontrei o D3.js, foi desse jeito:
Por que do nome D3.js? Significa “Data-Driven Documents”, e o melhor disso; é open source e vocês podem ajudar na contribuição dessa maravilhosa biblioteca!
Os recursos que essa biblioteca nos fornece são inúmeros! Entre eles: geração de visualizações simples e complexas, interações com o usuário e efeitos de transição, fácil manipulação, já que faz uso de programação declarativa, e entre vários outros recursos!
E os benefícios também são inúmeros entre elas: você não precisa de nenhum plugin, ótima visualização de dados, e a melhor parte: permite a manipulação do DOM.
Veja abaixo alguns gráficos feitos usando o D3.js:
Ok, eu falei bastante sobre os benefícios e recursos que essa biblioteca JavaScript nos dá, mas, como todo bom desenvolvedor(a), vamos começar a brincar!
Demo! Demo! Demo!
Calma, gente! Vamos à demo, então. Para isso, peço que usem os seguintes recursos:
- Visual Studio Code
- Node.Js
Sim, simplesmente disso que precisaremos. Vamos agora, passo a passo, desenvolver um simples gráfico usando o D3.js.
Primeira coisa: peço que procurem estruturar o projeto, conforme a imagem abaixo:
Notem que incluí três arquivos na pasta ‘src’:
- index.html
- index.js
- index.css
Vamos focar nesses três arquivos contidos dentro da pasta src! É justamente aí que toda a brincadeira vai começar! Vamos instalar o D3.js via npm no projeto. Para isso, peço que executem os seguintes comandos:
npm install http-server -g npm install --save-dev d3
Feito isso, podemos agora começar a desenvolver. Abram o Visual Studio Code e vamos começar criando o estilo para o nosso gráfico. Para isso, vamos começar a desenvolver o arquivo: index.css:
.chart div { font: 12pxsans-serif; background-color: #8A2BE2; padding: 4px; margin: 2px; color: #FFF8DC; }
Até aqui, nada diferente. Estamos criando uma classe chamada ‘chart’, a qual, dentro dessa div, haverá todo esse estilo pré-determinado aqui!
Bom, vamos ao segundo passo, dessa vez, no arquivo ‘index.html‘. Inclua o seguinte código abaixo:
<div class="chart"> </div>
Beleza! Agora vamos para o arquivo onde a brincadeira vai funcionar! Abra o arquivo ‘index.js‘ e coloque o seguinte bloco de código abaixo:
/** * * Arquivo: index.js * Data: 17/07/2018 * Descrição: Desenvolvimento de um simples gráfico usando a biblioteca do Js: D3.js * Author: Glaucia Lemos * */ var data = [56, 89, 125, 264, 397, 451, 582, 654]; d3.select(".chart") .selectAll("div") .data(data) .enter() .append("div") .style("width", (d) => { return 'R$ '+ d; });
Bom, vamos entender alguns pontos aqui. Na linha 10 podemos ver a criação de um array com oito valores que estarão no nosso bar chart.
Das linhas 14 a 19, já estamos definindo alguns itens que serão importantes para a criação do nosso gráfico. O ‘selectAll‘ pegará todos os itens dentro de uma determinada ‘div‘. Já o método ‘data’ retornará o nosso array declarado acima e o método ‘enter‘ servirá para retornar um determinado elemento do DOM, que será encontrado. Já o método ‘append‘ retornará uma nova seleção contendo elementos anexados, que neste exemplo é a ‘div‘.
Bom, explicando agora o que é cada parte, vamos prosseguir com o nosso desenvolvimento.
Voltemos ao arquivo ‘index.html’. Inclua o seguinte bloco de código:
<!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Gráfico de Ganhos - iMasters</title> <!-- Inclusão da biblioteca do D3.js via cdn --> <script src="https://d3js.org/d3.v3.min.js"></script> <!-- Inclusão do estilo do gráfico --> <link rel="stylesheet" href="index.css"> </head> <body> <div id="dashboard"> <p>Ganhos de Vendas</p> <div class="chart"> </div> </div> <!-- Chamada do arquivo 'index.js' (parte da lógica) --> <script src="index.js"></script> </body> </html>
Feito isso, vamos voltar agora para o arquivo ‘index.css’ para fazer algumas alterações por lá. Vejam o código abaixo:
.chart div { font: 12px sans-serif; background-color: #8A2BE2; padding: 4px; margin: 2px; color: #FFF8DC; } #dashboard { width: 450px; border: 1px solid black; } p { text-align: center; }
Aqui, incluímos os estilos para ‘dashboard’ e ‘p’; simples assim e em seguida, vamos para o arquivo ‘index.js’:
/** * * Arquivo: index.js * Data: 17/07/2018 * Descrição: Desenvolvimento de um simples gráfico usando a biblioteca do Js: D3.js * Author: Glaucia Lemos * */ var data = [56, 89, 125, 264, 397, 451, 582, 654]; var scale = d3.scale.linear() .domain([0, 654]) .range([0, 400]) d3.select(".chart") .selectAll("div") .data(data) .enter() .append("div") .style("width", (d) => { return scale(d) + 'px' }) .text((d) => {return 'R$ ' + d; });
Notem que houve uma alteração no código comparado a primeira parte do desenvolvimento desse arquivo. Incluímos uma variável ‘scale’, justamente para determinar o range do tamanho do gráfico dentro da div!
Vamos ver como vai ficará em ação? Abram o prompt de comando dentro da pasta onde vocês criaram o projeto e execute o seguinte comando:
http-server
Vá até o browser e digite: localhost:8080/src/index.html e veja o resultado:
Lindo, não? Dá para fazer muita coisa com o D3.js. Basta dar uma olhada nos examples contidos no repositório da biblioteca, neste link.
Palavras finais
Já venho mostrando em alguns artigos o poder que o JavaScript nos dá. Simplesmente podemos fazer qualquer coisa – mas qualquer coisa quando fazemos uso do JavaScript. Procurem sempre estudar JS e terão o poder em suas mãos!
Falando em estudar, estou com o seguinte workshop: “Criando uma App REST API com Node.js & MongoDb” voltado para níveis iniciante a intermediário! Para quem quiser, está um preço muito bom e será totalmente online.
Caso estejam interessados, façam a inscrição através deste link, mesmo que não dê para fazer online no dia, não tem problema, eu enviarei o material do workshop por e-mail para cada participante que se inscrever.
É isso, pessoal! Até a próxima.