Can you feel it coming in the air tonight?

Being able to authentically represent yourself provides critical context to build a rapport with others, it affects being able to work on what gives you purpose, and it helps you find your tribe…

Smartphone

独家优惠奖金 100% 高达 1 BTC + 180 免费旋转




PDFMake com Rails

Repositório do exemplo que iremos trabalhar:

Aventurei-me por algumas opções de geração de relatório para RubyOnRails, mas infelizmente não obtive os resultados que eu desejava.

Alguns não renderizavam direito, outros pedem um monte de configurações entre outras coisas, dai me veio a cabeça, porque não usar o bom e velho JavaScript.

Foi ai que cheguei no pdfmake, bora lá para o código…

O que vamos precisar:

Copie esses dois arquivos para a pasta vendor/assets/javascripts

Em application.js adicione as duas linhas, nessa ordem:

//= require pdfmake.min

Método “relatorio” no controller “contatos” que retorna todos os contatos para o arquivo relatorio.json.jbuilder

relatorio.json.jbuilder

Se tirarmos o “.json” teremos um erro “UnknownFormat”, pois não temos um arquivo “relatorio.html.erb” mas sim um “relatorio.js.erb” e logo não podemos renderizar ele e sim executar ele. E para isso temos um link no arquivo “index.html.erb” que se encontra nas “views” do contato.

Note que temos um “remote: true” no link para o relatório, com essa opção estamos dizendo que queremos fazer uma chamada ajax e com isso conseguimos executar o nosso arquivo “relatorio.js.erb” e é nesse arquivo que a magica acontece.

Primeira função do nosso arquivo, a função “buildTableBody” como o nome mesmo diz, monta o corpo da tabela, iremos gerar um relatório com uma tabela.

Essa função recebe na ordem, os dados, as colunas e o cabeçalho.

Criamos uma variável “body” que recebe um array vazio e logo em seguida adicionamos (push) a esse array o nosso header (cabeçalho).

Logo em seguida percorremos todos os dados que foram passados pelo parâmetro “data” e montamos nossas linhas da tabela de acordo com as colunas que passamos por parâmetro em “columns”. Para isso percorremos todas as colunas informadas e localizamos uma por uma nas linhas “row” e adicionamos (push) ao array “dataRow”.

E por fim adicionamos a linha montada com todas as colunas (dataRow) ao array “body” e retornamos ele.

table

A função “table” retorna um objeto especifico do pdfmake chamado “table”. Nele se encontra todas as configurações da tabela juntamente com os dados que a função “buildTableBody” retorna.

Logo a baixo temos a nossa chamada ajax, e é nela que vamos utilizar o json que vimos anteriormente.

Bom esse trecho aqui esta bem simples também, uma chamada ajax na url que retorna o json, no fim da requisição (done) temos a chamada para nossas funções que vimos até agora.

Passamos os parâmetros e um deles é o “items” que são os dados json que a chamada ajax nos retornou.

A função “table” recebe todos os parâmetros que por sua vez repassa para a função “buildTableBody”.

E na linha 54 então finalmente fazemos uso do pdfMake, ele vai criar e abrir o pdf para nós com todos os dados e campos que solicitamos.

Bônus:

passagem de parâmetros para o json

Espero que tenha sido útil, qualquer critica ou sugestão sera bem vinda, até a próxima!

Add a comment

Related posts:

Koruptor teriak koruptor

Sebelum teriak-teriak ke orang yang kita tuduh sebagai koruptor, coba kita pertimbangkan hal ini. Di jam-jam kantor, yang mana lu dibayar, berapa banyak dari kita yang:

I left my studies to become a Data Scientist

Making a life-changing decision can make you feel paralyzed. “I’m not yet ready.” “I need one year more, that’s it.” “There’s a bunch of experienced folks out there I will never bull through.” All…