prawn_report 1.9.18
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/app/controllers/ac_filter_defs_controller.rb +17 -0
- data/app/controllers/custom_generate_report_controller.rb +18 -0
- data/app/controllers/generate_report_controller.rb +24 -0
- data/app/controllers/report_templates_controller.rb +40 -0
- data/app/models/ac_filter.rb +15 -0
- data/app/models/ac_filter_def.rb +38 -0
- data/app/models/ac_filter_option.rb +5 -0
- data/app/models/report_template.rb +22 -0
- data/lib/ac_filters_utils.rb +187 -0
- data/lib/active_record_helpers.rb +218 -0
- data/lib/bands/band.rb +23 -0
- data/lib/bands/footer_band.rb +7 -0
- data/lib/bands/header_band.rb +9 -0
- data/lib/bands/summary_band.rb +7 -0
- data/lib/custom_report_controller.rb +48 -0
- data/lib/generators/prawn_report/install/install_generator.rb +16 -0
- data/lib/generators/prawn_report/install/templates/20120108210141_create_prawn_report_catalogs.rb +14 -0
- data/lib/generators/prawn_report/install/templates/20120124012653_add_filter_defs.rb +35 -0
- data/lib/generators/prawn_report/install/templates/20120209231821_add_filters_to_reports.rb +13 -0
- data/lib/generators/prawn_report/install/templates/20120222021437_add_order_to_filter_def.rb +9 -0
- data/lib/generators/prawn_report/install/templates/20120222025632_add_select_sql.rb +9 -0
- data/lib/generators/prawn_report/install/templates/20120222030526_create_ac_filter_joins.rb +12 -0
- data/lib/generators/prawn_report/install/templates/20120222122507_add_serialization_params_to_report.rb +9 -0
- data/lib/generators/prawn_report/install/templates/20120222134101_create_ac_filter_includes.rb +12 -0
- data/lib/generators/prawn_report/install/templates/20120222150029_change_includes_and_joins_to_hash.rb +21 -0
- data/lib/generators/prawn_report/install/templates/20120229134810_add_group_to_filter_def.rb +9 -0
- data/lib/generators/prawn_report/install/templates/20120229194434_add_system_criteria_to_ac_filter.rb +9 -0
- data/lib/generators/prawn_report/install/templates/20120301063031_change_select_sql.rb +11 -0
- data/lib/generators/prawn_report/install/templates/20120303104431_change_filled_criteria_unfilled_criteria.rb +15 -0
- data/lib/generators/prawn_report/install/templates/20120316162712_add_filled_criteria_to_options.rb +9 -0
- data/lib/generators/prawn_report/install/templates/20120323124446_add_fields_to_filter.rb +17 -0
- data/lib/generators/prawn_report/install/templates/20130122101313_add_sql_query_to_ac_filter_def.rb +5 -0
- data/lib/generators/prawn_report/install/templates/20131107172133_add_excluir_to_report_template.rb +9 -0
- data/lib/prawn_report.rb +21 -0
- data/lib/prawn_report/engine.rb +9 -0
- data/lib/prawn_report/version.rb +3 -0
- data/lib/prawn_report_seeds.rb +46 -0
- data/lib/report.rb +190 -0
- data/lib/report_helpers.rb +82 -0
- data/lib/report_info.rb +27 -0
- data/repo/bands/footers/footer_001.rb +20 -0
- data/repo/bands/headers/header_001.rb +61 -0
- data/repo/bands/headers/header_002.rb +31 -0
- data/repo/reports/column_group.rb +58 -0
- data/repo/reports/listing.rb +144 -0
- data/repo/reports/simple_listing.rb +130 -0
- metadata +93 -0
data/lib/bands/band.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
module PrawnReport
|
2
|
+
|
3
|
+
class Band
|
4
|
+
|
5
|
+
attr_accessor :height, :report
|
6
|
+
|
7
|
+
def initialize(report, params = {})
|
8
|
+
@report = report
|
9
|
+
end
|
10
|
+
|
11
|
+
def draw
|
12
|
+
internal_draw
|
13
|
+
end
|
14
|
+
|
15
|
+
def internal_draw; end
|
16
|
+
|
17
|
+
def self.height
|
18
|
+
20
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
#coding: utf-8
|
2
|
+
|
3
|
+
module PrawnReportController
|
4
|
+
|
5
|
+
def get_pr_report_data
|
6
|
+
[]
|
7
|
+
end
|
8
|
+
|
9
|
+
def get_pr_report_class
|
10
|
+
@pr_report_class
|
11
|
+
end
|
12
|
+
|
13
|
+
def get_pr_suggested_filename; end
|
14
|
+
|
15
|
+
def get_pr_report_params
|
16
|
+
@pr_report_params || {}
|
17
|
+
end
|
18
|
+
|
19
|
+
def get_pr_serialization_params
|
20
|
+
@serialization_params || {}
|
21
|
+
end
|
22
|
+
|
23
|
+
def get_pr_filters
|
24
|
+
@filters
|
25
|
+
end
|
26
|
+
|
27
|
+
def index
|
28
|
+
@filters = []
|
29
|
+
rec = get_pr_report_data
|
30
|
+
if rec.nil? || (rec.is_a?(Array) && rec.count == 0)
|
31
|
+
render :nothing => true, :status => :no_content
|
32
|
+
else
|
33
|
+
report_content = rec.pr_serialize(get_pr_serialization_params)
|
34
|
+
report = get_pr_report_class.new(get_pr_report_params)
|
35
|
+
report.report_params[:filters] = get_pr_filters
|
36
|
+
report_content = report.draw(report_content.get_yaml)
|
37
|
+
|
38
|
+
fn = get_pr_suggested_filename
|
39
|
+
|
40
|
+
if fn
|
41
|
+
send_data(report_content, :filename => fn)
|
42
|
+
else
|
43
|
+
send_data(report_content, :disposition => 'inline', :type => 'application/pdf')
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module PrawnReport
|
2
|
+
module Generators
|
3
|
+
class InstallGenerator < ::Rails::Generators::Base
|
4
|
+
desc "Copies migrations to app db/migrate folder"
|
5
|
+
dirname = File.expand_path('../templates/', __FILE__)
|
6
|
+
Dir.glob(File.join(dirname, '*.rb')).each do |mig|
|
7
|
+
destfilename = Rails.root.join('db', 'migrate', Pathname.new(mig).basename)
|
8
|
+
unless File.exists?(destfilename)
|
9
|
+
puts "Imported migration #{Pathname.new(mig).basename}"
|
10
|
+
FileUtils.copy(mig, destfilename)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/generators/prawn_report/install/templates/20120108210141_create_prawn_report_catalogs.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
class CreatePrawnReportCatalogs < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table :report_templates do |t|
|
4
|
+
t.string :name
|
5
|
+
t.string :report_type
|
6
|
+
t.string :controller_name
|
7
|
+
t.timestamps
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.down
|
12
|
+
drop_table :report_templates
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
class AddFilterDefs < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
|
4
|
+
create_table :ac_filter_defs do |t|
|
5
|
+
t.string :name
|
6
|
+
t.text :description
|
7
|
+
t.string :model_class
|
8
|
+
t.timestamps
|
9
|
+
end
|
10
|
+
|
11
|
+
create_table :ac_filters do |t|
|
12
|
+
t.integer :ac_filter_def_id, :name => 'filter_def_in_filter'
|
13
|
+
t.boolean :query_user
|
14
|
+
t.string :data_type
|
15
|
+
t.string :label
|
16
|
+
t.string :filled_criteria
|
17
|
+
t.string :unfilled_criteria
|
18
|
+
t.string :target_model
|
19
|
+
t.string :target_field
|
20
|
+
end
|
21
|
+
|
22
|
+
create_table :ac_filter_options do |t|
|
23
|
+
t.integer :ac_filter_id, :name => 'filter_in_filter_options'
|
24
|
+
t.string :label
|
25
|
+
t.string :value
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.down
|
31
|
+
drop_table :ac_filter_options
|
32
|
+
drop_table :ac_filters
|
33
|
+
drop_table :ac_filter_defs
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class AddFiltersToReports < ActiveRecord::Migration
|
2
|
+
|
3
|
+
def self.up
|
4
|
+
add_column :report_templates, :ac_filter_def_id, :integer, :name => 'filter_in_report_template'
|
5
|
+
add_column :report_templates, :report_class, :string
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.down
|
9
|
+
remove_column :report_templates, :ac_filter_def_id
|
10
|
+
remove_column :report_templates, :report_class
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class CreateAcFilterJoins < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table :ac_filter_joins do |t|
|
4
|
+
t.integer :ac_filter_def_id, :name => 'filter_join_in_filter'
|
5
|
+
t.string :name
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.down
|
10
|
+
drop_table :ac_filter_joins
|
11
|
+
end
|
12
|
+
end
|
data/lib/generators/prawn_report/install/templates/20120222134101_create_ac_filter_includes.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
class CreateAcFilterIncludes < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table :ac_filter_includes do |t|
|
4
|
+
t.integer :ac_filter_def_id, :name => 'filter_include_in_filter'
|
5
|
+
t.string :name
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.down
|
10
|
+
drop_table :ac_filter_includes
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
class ChangeIncludesAndJoinsToHash < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
drop_table :ac_filter_includes
|
4
|
+
drop_table :ac_filter_joins
|
5
|
+
add_column :ac_filter_defs, :include_param, :text
|
6
|
+
add_column :ac_filter_defs, :joins_param, :text
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.down
|
10
|
+
create_table :ac_filter_includes do |t|
|
11
|
+
t.integer :ac_filter_def_id, :name => 'filter_include_in_filter'
|
12
|
+
t.string :name
|
13
|
+
end
|
14
|
+
create_table :ac_filter_joins do |t|
|
15
|
+
t.integer :ac_filter_def_id, :name => 'filter_join_in_filter'
|
16
|
+
t.string :name
|
17
|
+
end
|
18
|
+
remove_column :ac_filter_defs, :include_param
|
19
|
+
remove_column :ac_filter_defs, :joins_param
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
class ChangeSelectSql < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
remove_column :ac_filter_defs, :select_sql
|
4
|
+
add_column :ac_filter_defs, :select_sql, :text
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.down
|
8
|
+
remove_column :ac_filter_defs, :select_sql
|
9
|
+
add_column :ac_filter_defs, :select_sql, :string
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class ChangeFilledCriteriaUnfilledCriteria < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
remove_column :ac_filters, :filled_criteria
|
4
|
+
add_column :ac_filters, :filled_criteria, :text
|
5
|
+
remove_column :ac_filters, :unfilled_criteria
|
6
|
+
add_column :ac_filters, :unfilled_criteria, :text
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.down
|
10
|
+
remove_column :ac_filters, :filled_criteria
|
11
|
+
add_column :ac_filters, :filled_criteria, :string
|
12
|
+
remove_column :ac_filters, :unfilled_criteria
|
13
|
+
add_column :ac_filters, :unfilled_criteria, :string
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class AddFieldsToFilter < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
add_column :ac_filters, :filled_criteria_from, :text
|
4
|
+
add_column :ac_filters, :filled_criteria_to, :text
|
5
|
+
add_column :ac_filters, :required, :boolean, :default => false
|
6
|
+
add_column :ac_filters, :required_from, :boolean, :default => false
|
7
|
+
add_column :ac_filters, :required_to, :boolean, :default => false
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.down
|
11
|
+
remove_column :ac_filters, :filled_criteria_from
|
12
|
+
remove_column :ac_filters, :filled_criteria_to
|
13
|
+
remove_column :ac_filters, :required
|
14
|
+
remove_column :ac_filters, :required_from
|
15
|
+
remove_column :ac_filters, :required_to
|
16
|
+
end
|
17
|
+
end
|
data/lib/prawn_report.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
|
4
|
+
module PrawnReport
|
5
|
+
mattr_accessor :parent_controller
|
6
|
+
@@parent_controller = "CustomGenerateReportController"
|
7
|
+
end
|
8
|
+
|
9
|
+
|
10
|
+
require "report"
|
11
|
+
require "bands/band"
|
12
|
+
require "bands/summary_band"
|
13
|
+
require "active_record_helpers"
|
14
|
+
require "ac_filters_utils"
|
15
|
+
require File.expand_path(File.dirname(__FILE__) + "/../repo/bands/headers/header_001.rb")
|
16
|
+
require File.expand_path(File.dirname(__FILE__) + "/../repo/bands/footers/footer_001.rb")
|
17
|
+
require File.expand_path(File.dirname(__FILE__) + "/../repo/reports/simple_listing.rb")
|
18
|
+
require File.expand_path(File.dirname(__FILE__) + "/../repo/reports/column_group.rb")
|
19
|
+
|
20
|
+
# Rails 3 compatibility
|
21
|
+
require 'prawn_report/engine' if ((defined? Rails) and (Rails::version >= '3.0.0'))
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
require 'yaml'
|
4
|
+
|
5
|
+
ReportTemplate.update_all({:ac_filter_def_id => nil, :excluir => true})
|
6
|
+
AcFilterOption.delete_all
|
7
|
+
AcFilter.delete_all
|
8
|
+
AcFilterDef.delete_all
|
9
|
+
|
10
|
+
puts "Iniciando importação dos filtros"
|
11
|
+
Dir.glob("#{Rails.root}/db/filters/*.yml").each do |f|
|
12
|
+
params = YAML::load(File.open(f, 'r'))
|
13
|
+
AcFilterDef.create(params)
|
14
|
+
puts "Criado filtro: " + params["name"]
|
15
|
+
end
|
16
|
+
puts "FIM"
|
17
|
+
|
18
|
+
puts "Iniciando importação dos reports"
|
19
|
+
Dir.glob("#{Rails.root}/db/reports/*.yml").each do |f|
|
20
|
+
params = YAML::load(File.open(f, 'r'))
|
21
|
+
r = ReportTemplate.find_by_name(params["name"])
|
22
|
+
if r.nil?
|
23
|
+
if params["filter_name"]
|
24
|
+
f = AcFilterDef.find_by_name(params.delete("filter_name"))
|
25
|
+
if f
|
26
|
+
params["ac_filter_def_id"] = f.id
|
27
|
+
end
|
28
|
+
end
|
29
|
+
params["excluir"] = false
|
30
|
+
ReportTemplate.create(params)
|
31
|
+
puts "Criado relatório: " + params["name"]
|
32
|
+
else
|
33
|
+
if params["filter_name"]
|
34
|
+
f = AcFilterDef.find_by_name(params.delete("filter_name"))
|
35
|
+
if f
|
36
|
+
params["ac_filter_def_id"] = f.id
|
37
|
+
end
|
38
|
+
end
|
39
|
+
params["excluir"] = false
|
40
|
+
r.update_attributes(params)
|
41
|
+
puts "Atualizado relatório: " + params["name"]
|
42
|
+
end
|
43
|
+
end
|
44
|
+
ReportTemplate.destroy_all(:excluir => true)
|
45
|
+
puts "finishing, closing, and going home"
|
46
|
+
|