/query_report

This is a gem to help you to structure common reports of you application just by writing in the controller

Primary LanguageRubyMIT LicenseMIT

Query report By Ashrafuzzaman.

Build Status Gem Version Code Climate Code coverage Dependencies

###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.

Bitdeli Badge