prawn_report 1.9.18 → 1.9.21
Sign up to get free protection for your applications and to get access to all the features.
- data/app/controllers/ac_filter_defs_controller.rb +0 -0
- data/app/controllers/custom_generate_report_controller.rb +0 -0
- data/app/controllers/generate_report_controller.rb +0 -0
- data/app/controllers/report_templates_controller.rb +17 -9
- data/app/models/ac_filter.rb +0 -0
- data/app/models/ac_filter_def.rb +7 -5
- data/app/models/ac_filter_option.rb +0 -0
- data/app/models/report_template.rb +9 -4
- data/app/serializers/ac_filter_def_serializer.rb +10 -0
- data/app/serializers/ac_filter_option_serializer.rb +7 -0
- data/app/serializers/ac_filter_serializer.rb +9 -0
- data/app/serializers/report_template_basic_serializer.rb +4 -0
- data/app/serializers/report_template_serializer.rb +9 -0
- data/lib/ac_filters_utils.rb +12 -10
- data/lib/active_record_helpers.rb +3 -2
- data/lib/bands/band.rb +0 -0
- data/lib/bands/footer_band.rb +0 -0
- data/lib/bands/header_band.rb +0 -0
- data/lib/bands/summary_band.rb +0 -0
- data/lib/custom_report_controller.rb +28 -16
- data/lib/generators/prawn_report/install/install_generator.rb +15 -15
- data/lib/generators/prawn_report/install/templates/20120108210141_create_prawn_report_catalogs.rb +14 -14
- data/lib/generators/prawn_report/install/templates/20120124012653_add_filter_defs.rb +35 -35
- data/lib/generators/prawn_report/install/templates/20120209231821_add_filters_to_reports.rb +13 -13
- data/lib/generators/prawn_report/install/templates/20120222021437_add_order_to_filter_def.rb +9 -9
- data/lib/generators/prawn_report/install/templates/20120222025632_add_select_sql.rb +9 -9
- data/lib/generators/prawn_report/install/templates/20120222030526_create_ac_filter_joins.rb +12 -12
- data/lib/generators/prawn_report/install/templates/20120222122507_add_serialization_params_to_report.rb +9 -9
- data/lib/generators/prawn_report/install/templates/20120222134101_create_ac_filter_includes.rb +12 -12
- data/lib/generators/prawn_report/install/templates/20120222150029_change_includes_and_joins_to_hash.rb +21 -21
- data/lib/generators/prawn_report/install/templates/20120229134810_add_group_to_filter_def.rb +9 -9
- data/lib/generators/prawn_report/install/templates/20120229194434_add_system_criteria_to_ac_filter.rb +9 -9
- data/lib/generators/prawn_report/install/templates/20120301063031_change_select_sql.rb +11 -11
- data/lib/generators/prawn_report/install/templates/20120303104431_change_filled_criteria_unfilled_criteria.rb +15 -15
- data/lib/generators/prawn_report/install/templates/20120316162712_add_filled_criteria_to_options.rb +9 -9
- data/lib/generators/prawn_report/install/templates/20120323124446_add_fields_to_filter.rb +17 -17
- data/lib/generators/prawn_report/install/templates/20130122101313_add_sql_query_to_ac_filter_def.rb +5 -5
- data/lib/generators/prawn_report/install/templates/20131107172133_add_excluir_to_report_template.rb +10 -9
- data/lib/generators/prawn_report/install/templates/20140529153300_add_description_to_report_template.rb +6 -0
- data/lib/prawn_report.rb +0 -0
- data/lib/prawn_report/engine.rb +9 -9
- data/lib/prawn_report_seeds.rb +13 -0
- data/lib/report.rb +6 -1
- data/lib/report_helpers.rb +15 -14
- data/lib/report_info.rb +0 -0
- data/repo/bands/footers/footer_001.rb +0 -0
- data/repo/bands/headers/header_001.rb +0 -0
- data/repo/bands/headers/header_002.rb +0 -0
- data/repo/reports/column_group.rb +3 -4
- data/repo/reports/listing.rb +59 -1
- data/repo/reports/simple_listing.rb +21 -2
- metadata +87 -59
- checksums.yaml +0 -7
- data/lib/prawn_report/version.rb +0 -3
File without changes
|
File without changes
|
File without changes
|
@@ -1,14 +1,14 @@
|
|
1
1
|
class ReportTemplatesController < ApplicationController
|
2
|
-
|
2
|
+
|
3
3
|
unloadable
|
4
|
-
|
4
|
+
|
5
5
|
def index
|
6
6
|
conditions = []
|
7
7
|
conditions = ['report_type in (?)', parse_array(params['report_type'])] unless params['report_type'].blank?
|
8
|
-
|
9
|
-
@templates = ReportTemplate.find(:all,
|
8
|
+
|
9
|
+
@templates = ReportTemplate.find(:all,
|
10
10
|
:conditions => conditions)
|
11
|
-
|
11
|
+
|
12
12
|
respond_to do |format|
|
13
13
|
format.html # index.html.erb
|
14
14
|
format.xml { render :xml => @templates }
|
@@ -22,11 +22,19 @@ class ReportTemplatesController < ApplicationController
|
|
22
22
|
}
|
23
23
|
)
|
24
24
|
end
|
25
|
+
format.json { render :json => @templates }
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
def show
|
31
|
+
@report_template = ReportTemplate.find(params[:id])
|
32
|
+
|
33
|
+
respond_to do |format|
|
34
|
+
format.json { render :json => @report_template, :root => 'reports' }
|
25
35
|
end
|
26
|
-
|
27
36
|
end
|
28
|
-
|
29
|
-
|
37
|
+
|
30
38
|
private
|
31
39
|
|
32
40
|
def parse_array(s_array)
|
@@ -36,5 +44,5 @@ class ReportTemplatesController < ApplicationController
|
|
36
44
|
}
|
37
45
|
retorno
|
38
46
|
end
|
39
|
-
|
47
|
+
|
40
48
|
end
|
data/app/models/ac_filter.rb
CHANGED
File without changes
|
data/app/models/ac_filter_def.rb
CHANGED
@@ -1,12 +1,14 @@
|
|
1
1
|
class AcFilterDef < ActiveRecord::Base
|
2
|
-
|
2
|
+
|
3
3
|
has_many :ac_filters, :dependent => :destroy
|
4
4
|
accepts_nested_attributes_for :ac_filters
|
5
5
|
|
6
|
+
has_many :report_templates
|
7
|
+
|
6
8
|
def joins_param=(value)
|
7
9
|
write_marshal_attribute(:joins_param, value)
|
8
10
|
end
|
9
|
-
|
11
|
+
|
10
12
|
def joins_param
|
11
13
|
read_marshal_attribute(:joins_param)
|
12
14
|
end
|
@@ -14,7 +16,7 @@ class AcFilterDef < ActiveRecord::Base
|
|
14
16
|
def include_param=(value)
|
15
17
|
write_marshal_attribute(:include_param, value)
|
16
18
|
end
|
17
|
-
|
19
|
+
|
18
20
|
def include_param
|
19
21
|
read_marshal_attribute(:include_param)
|
20
22
|
end
|
@@ -24,11 +26,11 @@ class AcFilterDef < ActiveRecord::Base
|
|
24
26
|
end
|
25
27
|
|
26
28
|
protected
|
27
|
-
|
29
|
+
|
28
30
|
def write_marshal_attribute(name, value)
|
29
31
|
write_attribute name, Marshal.dump(value)
|
30
32
|
end
|
31
|
-
|
33
|
+
|
32
34
|
def read_marshal_attribute(name)
|
33
35
|
value = read_attribute name
|
34
36
|
value.nil? ? nil : Marshal.load(value)
|
File without changes
|
@@ -2,21 +2,26 @@ require 'yaml'
|
|
2
2
|
|
3
3
|
class ReportTemplate < ActiveRecord::Base
|
4
4
|
belongs_to :ac_filter_def
|
5
|
-
|
5
|
+
|
6
|
+
has_many :filters, :through => :ac_filter_def, :source => :ac_filters
|
7
|
+
|
8
|
+
|
6
9
|
def serialization_params=(value)
|
7
10
|
if value.is_a? Hash
|
8
11
|
value = Marshal.dump(value)
|
9
12
|
end
|
10
13
|
write_attribute :serialization_params, value
|
11
14
|
end
|
12
|
-
|
15
|
+
|
13
16
|
def serialization_params
|
14
17
|
value = read_attribute :serialization_params
|
18
|
+
#value.nil? ? {} : Marshal.load(value)
|
15
19
|
begin
|
16
20
|
value.nil? ? {} : Marshal.load(value)
|
21
|
+
#value.nil? ? {} : YAML.load(value)
|
17
22
|
rescue TypeError
|
18
|
-
|
23
|
+
|
19
24
|
end
|
20
25
|
end
|
21
|
-
|
26
|
+
|
22
27
|
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
class AcFilterSerializer < ActiveModel::Serializer
|
2
|
+
embed :ids, :include => true
|
3
|
+
|
4
|
+
attributes :id, :data_type, :label, :target_model, :target_field, :required, :required_from, :required_to, :query_user
|
5
|
+
|
6
|
+
has_one :ac_filter_def, :root => 'ac_filter_defs'
|
7
|
+
has_many :ac_filter_options
|
8
|
+
end
|
9
|
+
|
data/lib/ac_filters_utils.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
def parse_ac_filters(params)
|
4
4
|
parsed_filters = {}
|
5
5
|
parsed_filters['filter_def_id'] = params['filter_def_id'].to_i
|
6
|
-
params.each_pair do |k,v|
|
6
|
+
params.each_pair do |k,v|
|
7
7
|
md = /^ac_filter_(\d+)_(.+)/.match(k)
|
8
8
|
if md
|
9
9
|
filter_id = md[1]
|
@@ -26,14 +26,14 @@ def get_ac_filters_applied(params, ac_filter_def)
|
|
26
26
|
if ['text', 'options'].include? f.data_type
|
27
27
|
val = pf['filter_value']
|
28
28
|
elsif ['period', 'timezone_period'].include?(f.data_type)
|
29
|
-
if (!pf['from_date'].empty?) && (!pf['to_date'].empty?)
|
29
|
+
if (!pf['from_date'].empty?) && (!pf['to_date'].empty?)
|
30
30
|
val = "#{Date.parse(pf['from_date']).strftime('%d/%m/%Y')} até #{Date.parse(pf['to_date']).strftime('%d/%m/%Y')}"
|
31
31
|
elsif !pf['from_date'].empty?
|
32
32
|
val = "Desde #{Date.parse(pf['from_date']).strftime('%d/%m/%Y')}"
|
33
33
|
elsif
|
34
34
|
val = "Até #{Date.parse(pf['to_date']).strftime('%d/%m/%Y')}"
|
35
35
|
end
|
36
|
-
elsif f.data_type
|
36
|
+
elsif ['autocomplete', 'storecombo'].include?(f.data_type)
|
37
37
|
val = Kernel.const_get(f.target_model).find(pf['filter_value']).send(f.target_field)
|
38
38
|
end
|
39
39
|
r << [f.label, val]
|
@@ -63,7 +63,7 @@ def parse_conditions(parsed_filter, system_params)
|
|
63
63
|
filter_def = AcFilterDef.find(parsed_filter['filter_def_id'])
|
64
64
|
conditions = []
|
65
65
|
conditions[0] = ['1=1']
|
66
|
-
|
66
|
+
|
67
67
|
filter_def.ac_filters.each do |f|
|
68
68
|
if f.query_user?
|
69
69
|
parse_condition(conditions, parsed_filter, f)
|
@@ -74,14 +74,14 @@ def parse_conditions(parsed_filter, system_params)
|
|
74
74
|
conditions[0] << f.filled_criteria
|
75
75
|
end
|
76
76
|
end
|
77
|
-
|
77
|
+
|
78
78
|
conditions[0] = conditions[0].join(' and ')
|
79
79
|
conditions
|
80
|
-
end
|
80
|
+
end
|
81
81
|
|
82
82
|
def parse_condition(conditions, parsed_filter, filter)
|
83
83
|
filled = parsed_filter[filter.id]['is_filled'] == 'true'
|
84
|
-
|
84
|
+
|
85
85
|
if filter.data_type == 'checkbox'
|
86
86
|
fill_with_checkbox(conditions, filled, parsed_filter, filter)
|
87
87
|
elsif filter.data_type == 'options'
|
@@ -161,11 +161,11 @@ def fill_with_others(conditions, filled, parsed_filter, filter)
|
|
161
161
|
end
|
162
162
|
|
163
163
|
def get_param_by_label(params, label)
|
164
|
-
filter = AcFilter.find(:first, :conditions => ['ac_filter_def_id = ? and label = ?',params['filter_def_id'], label])
|
164
|
+
filter = AcFilter.find(:first, :conditions => ['ac_filter_def_id = ? and label = ?',params['filter_def_id'], label])
|
165
165
|
'ac_filter_'+filter.id.to_s
|
166
166
|
end
|
167
167
|
|
168
|
-
module AcFilters
|
168
|
+
module AcFilters
|
169
169
|
def apply_ac_filter(parsed_filter, system_params)
|
170
170
|
conditions = parse_conditions(parsed_filter, system_params)
|
171
171
|
find_params = {:conditions => conditions}
|
@@ -173,6 +173,8 @@ module AcFilters
|
|
173
173
|
if filter_def.has_sql_query?
|
174
174
|
sql_to_execute = ActiveRecord::Base.send(:sanitize_sql_array, conditions)
|
175
175
|
r = []
|
176
|
+
#ActiveRecord::Base.connection.instance_exec(sql_to_execute).each(:as => :hash) {|i| r << i}
|
177
|
+
# Ticket_id: 52283 - Seed não exclui mais relatórios existentes
|
176
178
|
ActiveRecord::Base.connection.instance_exec(sql_to_execute).each(as :hash) {|i| r << i}
|
177
179
|
else
|
178
180
|
find_params[:select] = filter_def.select_sql.to_s unless filter_def.select_sql.nil?
|
@@ -183,5 +185,5 @@ module AcFilters
|
|
183
185
|
r = find(:all, find_params)
|
184
186
|
end
|
185
187
|
r
|
186
|
-
end
|
188
|
+
end
|
187
189
|
end
|
@@ -100,10 +100,10 @@ class ActiveRecordYAMLSerializer
|
|
100
100
|
r += "|-\n"
|
101
101
|
s.lines.each do |l|
|
102
102
|
r += ' ' * (@indent_level + 1)
|
103
|
-
r += l
|
103
|
+
r += l.to_s.gsub('\\', '\\\\\\').gsub('"', '\"')
|
104
104
|
end
|
105
105
|
else
|
106
|
-
r += '"' + s.to_s.gsub('"', '\"') + '"'
|
106
|
+
r += '"' + s.to_s.gsub('\\', '\\\\\\').gsub('"', '\"') + '"'
|
107
107
|
end
|
108
108
|
r + "\n"
|
109
109
|
end
|
@@ -129,6 +129,7 @@ class ActiveRecordYAMLSerializer
|
|
129
129
|
|
130
130
|
def serialize_belongs_tos(rec, first_line, params)
|
131
131
|
r = ''
|
132
|
+
params.symbolize_keys!
|
132
133
|
if params[:include_all_belongs_to] == true
|
133
134
|
rec.class.reflect_on_all_associations(:belongs_to).collect do |a|
|
134
135
|
r += render_indent(first_line)
|
data/lib/bands/band.rb
CHANGED
File without changes
|
data/lib/bands/footer_band.rb
CHANGED
File without changes
|
data/lib/bands/header_band.rb
CHANGED
File without changes
|
data/lib/bands/summary_band.rb
CHANGED
File without changes
|
@@ -1,48 +1,60 @@
|
|
1
1
|
#coding: utf-8
|
2
2
|
|
3
3
|
module PrawnReportController
|
4
|
-
|
4
|
+
|
5
5
|
def get_pr_report_data
|
6
6
|
[]
|
7
7
|
end
|
8
|
-
|
8
|
+
|
9
9
|
def get_pr_report_class
|
10
10
|
@pr_report_class
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
def get_pr_suggested_filename; end
|
14
|
-
|
14
|
+
|
15
15
|
def get_pr_report_params
|
16
16
|
@pr_report_params || {}
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
def get_pr_serialization_params
|
20
20
|
@serialization_params || {}
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
def get_pr_filters
|
24
24
|
@filters
|
25
25
|
end
|
26
|
-
|
26
|
+
|
27
27
|
def index
|
28
28
|
@filters = []
|
29
29
|
rec = get_pr_report_data
|
30
30
|
if rec.nil? || (rec.is_a?(Array) && rec.count == 0)
|
31
|
-
|
31
|
+
cookies[:fileDownload] = true
|
32
|
+
render :nothing => true, :status => :no_content
|
32
33
|
else
|
33
34
|
report_content = rec.pr_serialize(get_pr_serialization_params)
|
34
35
|
report = get_pr_report_class.new(get_pr_report_params)
|
35
36
|
report.report_params[:filters] = get_pr_filters
|
36
|
-
report_content = report.draw(report_content.get_yaml)
|
37
37
|
|
38
38
|
fn = get_pr_suggested_filename
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
39
|
+
|
40
|
+
respond_to do |format|
|
41
|
+
format.pdf do
|
42
|
+
cookies[:fileDownload] = true
|
43
|
+
report_content = report.draw(report_content.get_yaml)
|
44
|
+
if fn
|
45
|
+
send_data(report_content, :filename => "#{fn}.pdf")
|
46
|
+
else
|
47
|
+
send_data(report_content, :disposition => 'inline', :type => 'application/pdf')
|
48
|
+
end
|
49
|
+
end
|
50
|
+
format.csv do
|
51
|
+
report_content = report.draw_csv(report_content.get_yaml)
|
52
|
+
fn ||= "report"
|
53
|
+
send_data(report_content, :filename => "#{fn}.csv")
|
54
|
+
end
|
44
55
|
end
|
56
|
+
|
45
57
|
end
|
46
58
|
end
|
47
|
-
|
48
|
-
end
|
59
|
+
|
60
|
+
end
|
@@ -1,16 +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
|
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
16
|
end
|
data/lib/generators/prawn_report/install/templates/20120108210141_create_prawn_report_catalogs.rb
CHANGED
@@ -1,14 +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
|
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
|
@@ -1,35 +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
|
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
|