Query report By Ashrafuzzaman.
Write the action with a simple DSL and get a report with PDF and CSV export, gorgeous charts, out of box filters, with I18n support, etc...
Create a report in Rails
You would have to do the following tasks to create a report in rails,
- Create a route
- Create an action with following logic
- Logic for filters
- Logic for pagination
- Create a view
- Write code to show HTML
- Write code to generate Graph
- Generate PDF with prawn pdf and graph
- Logic to send that PDF file as email
Create a report with query report
- Create a route
- Create an action with following logic
- ~~Logic for filters~~
- ~~Logic for pagination~~
- ~~Create a view~~
- ~~Write code to show HTML~~
- ~~Write code to generate Graph~~
- ~~Generate PDF with prawn pdf and graph~~
- ~~Logic to send that PDF file as email~~
For email, you have to implement the popup once.
Features
- Allow to use and reuse filters using ransack, and also with custom query
- Paginates kaminari
- Supports ajax out of box
- Exports to PDF prawn, csv, json
- Supports to send report pdf as email
- Supports I18N
For a demo see here
The purpose
The purpose of this gem is to produce consistent reports quickly and manage them easily. Because all we need to concentrate in a report is the query and filter.
Getting started
Query report is tested with Rails 3. You can add it to your Gemfile with:
gem "query_report"
Run the bundle command to install it.
Here is a sample controller which uses query report. And that is all you need, query report will generate all the view for you.
require 'query_report/helper' #need to require the helper
class InvoicesController < ApplicationController
include QueryReport::Helper #need to include it
def index
@invoices = Invoice.scoped
reporter(@invoices) do
filter :title, type: :text
filter :created_at, type: :date, default: [5.months.ago, 1.months.from_now]
filter :paid, type: :boolean, default: false
column :title do |invoice|
link_to invoice.title, invoice
end
column :total_paid, show_total: true
column :total_charged, show_total: true
column :paid
end
end
end
License
MIT License. Copyright © 2014 Ashrafuzzaman. See MIT-LICENSE for further details.