prawn_report 1.9.21 → 1.9.22

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +7 -0
  2. data/app/controllers/ac_filter_defs_controller.rb +16 -17
  3. data/app/controllers/custom_generate_report_controller.rb +18 -18
  4. data/app/controllers/generate_report_controller.rb +24 -24
  5. data/app/controllers/report_templates_controller.rb +40 -48
  6. data/app/models/ac_filter.rb +15 -15
  7. data/app/models/ac_filter_def.rb +38 -40
  8. data/app/models/ac_filter_option.rb +5 -5
  9. data/app/models/report_template.rb +22 -27
  10. data/lib/ac_filters_utils.rb +187 -189
  11. data/lib/active_record_helpers.rb +218 -219
  12. data/lib/bands/band.rb +23 -23
  13. data/lib/bands/footer_band.rb +7 -7
  14. data/lib/bands/header_band.rb +9 -9
  15. data/lib/bands/summary_band.rb +7 -7
  16. data/lib/custom_report_controller.rb +48 -60
  17. data/lib/generators/prawn_report/install/templates/20131107172133_add_excluir_to_report_template.rb +0 -1
  18. data/lib/prawn_report.rb +21 -21
  19. data/lib/prawn_report/version.rb +3 -0
  20. data/lib/prawn_report_seeds.rb +45 -59
  21. data/lib/report.rb +189 -195
  22. data/lib/report_helpers.rb +82 -83
  23. data/lib/report_info.rb +27 -27
  24. data/repo/bands/footers/footer_001.rb +20 -20
  25. data/repo/bands/headers/header_001.rb +61 -61
  26. data/repo/bands/headers/header_002.rb +31 -31
  27. data/repo/reports/column_group.rb +4 -3
  28. data/repo/reports/listing.rb +1 -59
  29. data/repo/reports/simple_listing.rb +130 -149
  30. metadata +58 -90
  31. data/app/serializers/ac_filter_def_serializer.rb +0 -10
  32. data/app/serializers/ac_filter_option_serializer.rb +0 -7
  33. data/app/serializers/ac_filter_serializer.rb +0 -9
  34. data/app/serializers/report_template_basic_serializer.rb +0 -4
  35. data/app/serializers/report_template_serializer.rb +0 -9
  36. data/lib/generators/prawn_report/install/templates/20140529153300_add_description_to_report_template.rb +0 -6
@@ -27,8 +27,9 @@ module PrawnReport
27
27
  @grouping_context_field = report_params[:grouping_context_field]
28
28
  end
29
29
 
30
- def before_draw
31
- @data = traverse_data(@data)
30
+ def draw(data)
31
+ data = traverse_data(data)
32
+ super(data)
32
33
  end
33
34
 
34
35
  protected
@@ -54,4 +55,4 @@ module PrawnReport
54
55
 
55
56
 
56
57
  end
57
- end
58
+ end
@@ -4,7 +4,6 @@ require File.expand_path(File.dirname(__FILE__) + "/../../lib/report.rb")
4
4
  require File.expand_path(File.dirname(__FILE__) + "/../bands/headers/header_001.rb")
5
5
  require File.expand_path(File.dirname(__FILE__) + "/../bands/headers/header_002.rb")
6
6
  require File.expand_path(File.dirname(__FILE__) + "/../bands/footers/footer_001.rb")
7
- require 'iconv'
8
7
 
9
8
  module PrawnReport
10
9
  class Listing < Report
@@ -141,62 +140,5 @@ module PrawnReport
141
140
  render_multi_column_title
142
141
  end
143
142
  end
144
-
145
- def draw_csv(data)
146
- @data = data
147
-
148
- before_draw
149
-
150
- if @report_params[:field]
151
- @report_params[:columns] = [@report_params[:field]]
152
- end
153
-
154
- str = CSV.generate(:col_sep => ";", :encoding => 'utf-8') do |csv|
155
- csv << draw_column_titles_csv(csv)
156
- @data[@detail_name].each do |row|
157
- @current_row = row
158
- before_render_line
159
- csv << render_line_csv(@current_row, csv)
160
- after_render_line
161
- end
162
- end
163
- Iconv.conv('latin1', 'utf-8', str)
164
- end
165
-
166
- def render_line_csv(row, csv)
167
- fields = []
168
- @report_params[:columns].each do |c|
169
- unless c[:formatter] == :invisible
170
- formatter = c[:formatter] || :none
171
- raw_value = get_raw_field_value(row, c[:name].to_s)
172
- formatter_options = build_formatter_options(formatter, c)
173
- # exceção é currency, deixamos o número sem separador de milhares
174
- if formatter == :currency
175
- if raw_value.blank?
176
- formatted_text = ''
177
- elsif raw_value < 0
178
- formatted_text = raw_value.to_i.to_s + ',' + ('%02d' % ((raw_value.abs * 100).round % 100))
179
- else
180
- formatted_text = raw_value.to_i.to_s + ',' + ('%02d' % ((raw_value * 100).round % 100))
181
- end
182
- else
183
- formatted_text = format(raw_value, formatter, formatter_options)
184
- end
185
- fields << formatted_text
186
- end
187
- end
188
- fields
189
- end
190
-
191
- def draw_column_titles_csv(csv)
192
- fields = []
193
- @report_params[:columns].each do |c|
194
- unless c[:formatter] == :invisible
195
- fields << c[:title].to_s
196
- end
197
- end
198
- fields
199
- end
200
143
  end
201
-
202
- end
144
+ end
@@ -1,149 +1,130 @@
1
- #coding: utf-8
2
-
3
- require File.expand_path(File.dirname(__FILE__) + "/listing.rb")
4
- require 'csv'
5
-
6
- module PrawnReport
7
- #Generates a listing report with or without multiple columns.
8
- #
9
- #==Creating a SimpleListing Report
10
- #To create a simple listing report you must inherit from PrawnReport::SimpleListing class
11
- #and fill some parameters. The +report_name+ parameter is mandatory. The other parameters depends
12
- #if you want a single or multi column listing.
13
- #
14
- #The parameters are filled setting the instance variable +params+ hash in initialize after calling
15
- #super.
16
- #
17
- #==Single column listing
18
- #For single column listings you must fill the +field+ parameter and, optionally, the +title+
19
- #parameter. Like the code bellow
20
- # class ProductTypeListing < PrawnReport::SimpleListing
21
- # def initialize
22
- # super
23
- # @report_params = {
24
- # :report_name => 'Product Type Listing',
25
- # :field => 'name',
26
- # :title => 'Name'
27
- # }
28
- # end
29
- # end
30
- #
31
- #==Multiple column listing
32
- #To have a multiple column listing you must fill the +columns+ hash inside +params+ hash. Each column
33
- #has the following properties:
34
- #* +name+: The name of the field
35
- #* +title+: The title to be rendered above the first row
36
- #* +width+: The width of the column. Default value is 60
37
- #
38
- #The code belloow shows a listing of people with 3 columns
39
- #
40
- # class PeopleListing < PrawnReport::SimpleListing
41
- # def initialize
42
- # super
43
- # @report_params = {
44
- # :report_name => 'People Listing',
45
- # :columns => [
46
- # {:name => 'name', :title => 'Name', :width => 200},
47
- # {:name => 'age', :title => 'Age', :width => 30},
48
- # {:name => 'phone_number', :title => 'Phone #', :width => 100}
49
- # ]
50
- # }
51
- # end
52
- # end
53
- #
54
- #==Default behaviour
55
- #The listing bellow shows the default behaviour of this class. This is not changeable at this
56
- #momment. Any of this behaviour can become changeable in future versions of this gem.
57
- #
58
- #* Font: size 12. normal. Times-Roman
59
- #* Row background color: Alternate between white and gray (cccccc)
60
- #* First page Header class: PrawnReport::Header001
61
- #* Other pages Header class: PrawnReport::Header002
62
- #* Footer class: PrawnReport::Footer001
63
-
64
-
65
- class SimpleListing < Listing
66
-
67
- attr_reader :grouping_info
68
-
69
- def initialize(report_params = {})
70
- super(report_params)
71
- @grouping_info = {:last_group_value => nil,
72
- :groups_running => false}
73
- end
74
-
75
- def new_page(print_titles = true)
76
- super(print_titles)
77
- draw_group_header if grouped? and @report_params[:group][:header_reprint_new_page] and !last_group_summary?
78
- if print_titles
79
- draw_column_titles unless (!draw_group_column_titles? && !@printing_internal) || last_group_summary?
80
- end
81
- end
82
-
83
- protected
84
-
85
- def run_groups(row)
86
- group_value = get_raw_field_value(row, params[:group][:field])
87
- start_new_group = !@grouping_info[:groups_running]
88
- start_new_group |= group_value != @grouping_info[:last_group_value]
89
- if start_new_group
90
- if(@grouping_info[:groups_running] &&
91
- @grouping_info[:last_group_value] != group_value)
92
- draw_group_summary
93
- new_page(false) if params[:group][:new_page]
94
- end
95
- @grouping_info[:last_group_value] = group_value
96
- @grouping_info[:groups_running] = true
97
- draw_group_header
98
- draw_column_titles if draw_group_column_titles?
99
- reset_group_totals
100
- end
101
- end
102
-
103
- def grouped?
104
- params[:group]
105
- end
106
-
107
- def draw_group_column_titles?
108
- ( params[:group].nil? ? false : (params[:group][:print_group_column_title].nil? ? true :
109
- params[:group][:print_group_column_title]))
110
- end
111
-
112
- def last_group_summary?
113
- @data_end
114
- end
115
-
116
- def before_draw_lines
117
- super
118
- draw_column_titles unless draw_group_column_titles?
119
- end
120
-
121
- def after_draw_lines
122
- draw_group_summary if @data[@detail_name].count > 0
123
- end
124
-
125
- def before_render_line
126
- super
127
- run_groups(@current_row) if grouped?
128
- end
129
-
130
- def draw_column_titles_csv(csv)
131
- # mostra agrupamento antes do resto
132
- if grouped?
133
- [@report_params[:group][:title].to_s] + super(csv)
134
- else
135
- super(csv)
136
- end
137
- end
138
-
139
- def render_line_csv(row, csv)
140
- # mostra agrupamento antes do resto
141
- if grouped?
142
- [get_raw_field_value(row, @report_params[:group][:field].to_s)] + super(row,csv)
143
- else
144
- super(row, csv)
145
- end
146
- end
147
-
148
- end
149
- end
1
+ #coding: utf-8
2
+
3
+ require File.expand_path(File.dirname(__FILE__) + "/listing.rb")
4
+
5
+ module PrawnReport
6
+ #Generates a listing report with or without multiple columns.
7
+ #
8
+ #==Creating a SimpleListing Report
9
+ #To create a simple listing report you must inherit from PrawnReport::SimpleListing class
10
+ #and fill some parameters. The +report_name+ parameter is mandatory. The other parameters depends
11
+ #if you want a single or multi column listing.
12
+ #
13
+ #The parameters are filled setting the instance variable +params+ hash in initialize after calling
14
+ #super.
15
+ #
16
+ #==Single column listing
17
+ #For single column listings you must fill the +field+ parameter and, optionally, the +title+
18
+ #parameter. Like the code bellow
19
+ # class ProductTypeListing < PrawnReport::SimpleListing
20
+ # def initialize
21
+ # super
22
+ # @report_params = {
23
+ # :report_name => 'Product Type Listing',
24
+ # :field => 'name',
25
+ # :title => 'Name'
26
+ # }
27
+ # end
28
+ # end
29
+ #
30
+ #==Multiple column listing
31
+ #To have a multiple column listing you must fill the +columns+ hash inside +params+ hash. Each column
32
+ #has the following properties:
33
+ #* +name+: The name of the field
34
+ #* +title+: The title to be rendered above the first row
35
+ #* +width+: The width of the column. Default value is 60
36
+ #
37
+ #The code belloow shows a listing of people with 3 columns
38
+ #
39
+ # class PeopleListing < PrawnReport::SimpleListing
40
+ # def initialize
41
+ # super
42
+ # @report_params = {
43
+ # :report_name => 'People Listing',
44
+ # :columns => [
45
+ # {:name => 'name', :title => 'Name', :width => 200},
46
+ # {:name => 'age', :title => 'Age', :width => 30},
47
+ # {:name => 'phone_number', :title => 'Phone #', :width => 100}
48
+ # ]
49
+ # }
50
+ # end
51
+ # end
52
+ #
53
+ #==Default behaviour
54
+ #The listing bellow shows the default behaviour of this class. This is not changeable at this
55
+ #momment. Any of this behaviour can become changeable in future versions of this gem.
56
+ #
57
+ #* Font: size 12. normal. Times-Roman
58
+ #* Row background color: Alternate between white and gray (cccccc)
59
+ #* First page Header class: PrawnReport::Header001
60
+ #* Other pages Header class: PrawnReport::Header002
61
+ #* Footer class: PrawnReport::Footer001
62
+
63
+
64
+ class SimpleListing < Listing
65
+
66
+ attr_reader :grouping_info
67
+
68
+ def initialize(report_params = {})
69
+ super(report_params)
70
+ @grouping_info = {:last_group_value => nil,
71
+ :groups_running => false}
72
+ end
73
+
74
+ def new_page(print_titles = true)
75
+ super(print_titles)
76
+ draw_group_header if grouped? and @report_params[:group][:header_reprint_new_page] and !last_group_summary?
77
+ if print_titles
78
+ draw_column_titles unless (!draw_group_column_titles? && !@printing_internal) || last_group_summary?
79
+ end
80
+ end
81
+
82
+ protected
83
+
84
+ def run_groups(row)
85
+ group_value = get_raw_field_value(row, params[:group][:field])
86
+ start_new_group = !@grouping_info[:groups_running]
87
+ start_new_group |= group_value != @grouping_info[:last_group_value]
88
+ if start_new_group
89
+ if(@grouping_info[:groups_running] &&
90
+ @grouping_info[:last_group_value] != group_value)
91
+ draw_group_summary
92
+ new_page(false) if params[:group][:new_page]
93
+ end
94
+ @grouping_info[:last_group_value] = group_value
95
+ @grouping_info[:groups_running] = true
96
+ draw_group_header
97
+ draw_column_titles if draw_group_column_titles?
98
+ reset_group_totals
99
+ end
100
+ end
101
+
102
+ def grouped?
103
+ params[:group]
104
+ end
105
+
106
+ def draw_group_column_titles?
107
+ ( params[:group].nil? ? false : (params[:group][:print_group_column_title].nil? ? true :
108
+ params[:group][:print_group_column_title]))
109
+ end
110
+
111
+ def last_group_summary?
112
+ @data_end
113
+ end
114
+
115
+ def before_draw_lines
116
+ super
117
+ draw_column_titles unless draw_group_column_titles?
118
+ end
119
+
120
+ def after_draw_lines
121
+ draw_group_summary if @data[@detail_name].count > 0
122
+ end
123
+
124
+ def before_render_line
125
+ super
126
+ run_groups(@current_row) if grouped?
127
+ end
128
+
129
+ end
130
+ end
metadata CHANGED
@@ -1,121 +1,89 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: prawn_report
3
- version: !ruby/object:Gem::Version
4
- hash: 25
5
- prerelease:
6
- segments:
7
- - 1
8
- - 9
9
- - 21
10
- version: 1.9.21
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.9.22
11
5
  platform: ruby
12
- authors:
13
- - Ricardo Acras
14
- - Egon Hilgenstieler
15
- - Juliano Andrade
16
- - Vinicius Cubas Brand
17
- - Wellington Torrejais da Silva
6
+ authors:
7
+ - Ricardo AcrasEgon HilgenstielerJuliano AndradeWellington Torrejais
18
8
  autorequire:
19
9
  bindir: bin
20
10
  cert_chain: []
21
-
22
- date: 2016-11-23 00:00:00 -02:00
23
- default_executable:
11
+ date: 2018-06-18 00:00:00.000000000 Z
24
12
  dependencies: []
25
-
26
- description: Prawn report is a class repository wich uses prawn gem capabilities to generate PDF documents in order to make it easy to create real life reports.
27
- email: ricardo@acras.com.br julianoch@gmail.com egon@acras.com.br viniciuscb@gmail.com wtds.trabalho@gmail.com desenv2@labplus.com.br
13
+ description: Prawn report is a class repository wich uses prawn gem capabilities to
14
+ generate PDF documents in order to make it easy to create real life reports.
15
+ email: ricardo@acras.com.br julianoch@gmail.com egon@acras.com.br wtds.trabalho@gmail.com
28
16
  executables: []
29
-
30
17
  extensions: []
31
-
32
18
  extra_rdoc_files: []
33
-
34
- files:
19
+ files:
20
+ - app/controllers/ac_filter_defs_controller.rb
21
+ - app/controllers/custom_generate_report_controller.rb
22
+ - app/controllers/generate_report_controller.rb
23
+ - app/controllers/report_templates_controller.rb
24
+ - app/models/ac_filter.rb
25
+ - app/models/ac_filter_def.rb
26
+ - app/models/ac_filter_option.rb
27
+ - app/models/report_template.rb
35
28
  - lib/ac_filters_utils.rb
36
- - lib/prawn_report/engine.rb
29
+ - lib/active_record_helpers.rb
30
+ - lib/bands/band.rb
31
+ - lib/bands/footer_band.rb
32
+ - lib/bands/header_band.rb
33
+ - lib/bands/summary_band.rb
37
34
  - lib/custom_report_controller.rb
38
- - lib/report_info.rb
39
- - lib/report.rb
40
- - lib/prawn_report.rb
41
- - lib/generators/prawn_report/install/templates/20140529153300_add_description_to_report_template.rb
42
- - lib/generators/prawn_report/install/templates/20120222122507_add_serialization_params_to_report.rb
43
- - lib/generators/prawn_report/install/templates/20120222030526_create_ac_filter_joins.rb
44
- - lib/generators/prawn_report/install/templates/20131107172133_add_excluir_to_report_template.rb
45
- - lib/generators/prawn_report/install/templates/20120323124446_add_fields_to_filter.rb
46
- - lib/generators/prawn_report/install/templates/20120124012653_add_filter_defs.rb
47
- - lib/generators/prawn_report/install/templates/20120303104431_change_filled_criteria_unfilled_criteria.rb
48
- - lib/generators/prawn_report/install/templates/20120229134810_add_group_to_filter_def.rb
49
- - lib/generators/prawn_report/install/templates/20120222134101_create_ac_filter_includes.rb
50
- - lib/generators/prawn_report/install/templates/20130122101313_add_sql_query_to_ac_filter_def.rb
51
- - lib/generators/prawn_report/install/templates/20120301063031_change_select_sql.rb
52
- - lib/generators/prawn_report/install/templates/20120316162712_add_filled_criteria_to_options.rb
35
+ - lib/generators/prawn_report/install/install_generator.rb
53
36
  - lib/generators/prawn_report/install/templates/20120108210141_create_prawn_report_catalogs.rb
54
- - lib/generators/prawn_report/install/templates/20120222025632_add_select_sql.rb
37
+ - lib/generators/prawn_report/install/templates/20120124012653_add_filter_defs.rb
38
+ - lib/generators/prawn_report/install/templates/20120209231821_add_filters_to_reports.rb
55
39
  - lib/generators/prawn_report/install/templates/20120222021437_add_order_to_filter_def.rb
40
+ - lib/generators/prawn_report/install/templates/20120222025632_add_select_sql.rb
41
+ - lib/generators/prawn_report/install/templates/20120222030526_create_ac_filter_joins.rb
42
+ - lib/generators/prawn_report/install/templates/20120222122507_add_serialization_params_to_report.rb
43
+ - lib/generators/prawn_report/install/templates/20120222134101_create_ac_filter_includes.rb
56
44
  - lib/generators/prawn_report/install/templates/20120222150029_change_includes_and_joins_to_hash.rb
57
- - lib/generators/prawn_report/install/templates/20120209231821_add_filters_to_reports.rb
45
+ - lib/generators/prawn_report/install/templates/20120229134810_add_group_to_filter_def.rb
58
46
  - lib/generators/prawn_report/install/templates/20120229194434_add_system_criteria_to_ac_filter.rb
59
- - lib/generators/prawn_report/install/install_generator.rb
60
- - lib/active_record_helpers.rb
61
- - lib/bands/footer_band.rb
62
- - lib/bands/header_band.rb
63
- - lib/bands/summary_band.rb
64
- - lib/bands/band.rb
47
+ - lib/generators/prawn_report/install/templates/20120301063031_change_select_sql.rb
48
+ - lib/generators/prawn_report/install/templates/20120303104431_change_filled_criteria_unfilled_criteria.rb
49
+ - lib/generators/prawn_report/install/templates/20120316162712_add_filled_criteria_to_options.rb
50
+ - lib/generators/prawn_report/install/templates/20120323124446_add_fields_to_filter.rb
51
+ - lib/generators/prawn_report/install/templates/20130122101313_add_sql_query_to_ac_filter_def.rb
52
+ - lib/generators/prawn_report/install/templates/20131107172133_add_excluir_to_report_template.rb
53
+ - lib/prawn_report.rb
54
+ - lib/prawn_report/engine.rb
55
+ - lib/prawn_report/version.rb
65
56
  - lib/prawn_report_seeds.rb
57
+ - lib/report.rb
66
58
  - lib/report_helpers.rb
59
+ - lib/report_info.rb
60
+ - repo/bands/footers/footer_001.rb
61
+ - repo/bands/headers/header_001.rb
62
+ - repo/bands/headers/header_002.rb
67
63
  - repo/reports/column_group.rb
68
- - repo/reports/simple_listing.rb
69
64
  - repo/reports/listing.rb
70
- - repo/bands/headers/header_002.rb
71
- - repo/bands/headers/header_001.rb
72
- - repo/bands/footers/footer_001.rb
73
- - app/controllers/custom_generate_report_controller.rb
74
- - app/controllers/report_templates_controller.rb
75
- - app/controllers/generate_report_controller.rb
76
- - app/controllers/ac_filter_defs_controller.rb
77
- - app/serializers/ac_filter_def_serializer.rb
78
- - app/serializers/ac_filter_option_serializer.rb
79
- - app/serializers/ac_filter_serializer.rb
80
- - app/serializers/report_template_serializer.rb
81
- - app/serializers/report_template_basic_serializer.rb
82
- - app/models/ac_filter_option.rb
83
- - app/models/ac_filter_def.rb
84
- - app/models/ac_filter.rb
85
- - app/models/report_template.rb
86
- has_rdoc: true
65
+ - repo/reports/simple_listing.rb
87
66
  homepage: http://www.acras.com.br/
88
67
  licenses: []
89
-
68
+ metadata: {}
90
69
  post_install_message:
91
70
  rdoc_options: []
92
-
93
- require_paths:
71
+ require_paths:
94
72
  - lib
95
- required_ruby_version: !ruby/object:Gem::Requirement
96
- none: false
97
- requirements:
73
+ required_ruby_version: !ruby/object:Gem::Requirement
74
+ requirements:
98
75
  - - ">="
99
- - !ruby/object:Gem::Version
100
- hash: 3
101
- segments:
102
- - 0
103
- version: "0"
104
- required_rubygems_version: !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ required_rubygems_version: !ruby/object:Gem::Requirement
79
+ requirements:
107
80
  - - ">="
108
- - !ruby/object:Gem::Version
109
- hash: 3
110
- segments:
111
- - 0
112
- version: "0"
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
113
83
  requirements: []
114
-
115
84
  rubyforge_project:
116
- rubygems_version: 1.6.2
85
+ rubygems_version: 2.7.6
117
86
  signing_key:
118
- specification_version: 3
87
+ specification_version: 4
119
88
  summary: Prawn Report makes it easy to create PDF reports.
120
89
  test_files: []
121
-