query_report 1.0.24 → 1.0.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 38e6dd09227f6ad51d81593b879ded5928ab3c27
4
- data.tar.gz: 72ef9413da84d9e5d0f5f802c5b7dd8e4cd4aba0
3
+ metadata.gz: f68b878d9f9684f1177070150ff83b775f92be8f
4
+ data.tar.gz: bbf996f42c71bdb634d5b6e7d1dff8aa0b7987df
5
5
  SHA512:
6
- metadata.gz: aad743d74172a389cc058f6354d819b7e1263fcea268bffcecd1c4d3a2928e38c1b02563cc8f75ff2571472300ee7a2709669cd42cc02d7a8963534599a611d3
7
- data.tar.gz: 8d5c76e9381b2df6a078f133a82d02ac459f483e93c7afa9281011a58eceb4e50fe800e33ce5add15a104a01c7f2e3da909188ae2fe5e55431c22044f1ecb209
6
+ metadata.gz: 36ede71bbff6683aafef0af8044363445736a9e115064e0009062b6c032549a4d53a94fff86c015a75a15066b2bcb32c33dffe023228aed51d38d6c29dd1d6cd
7
+ data.tar.gz: 9732143800a552f9e5a83fbeb4d2c14fef50c55e99002908b7f5903d7a95d9af0fcec747e9943ced46275ef189a0b59247d1f77d7fdd06241240aca0b074bd80
data/Rakefile CHANGED
@@ -11,43 +11,10 @@ RSpec::Core::RakeTask.new(:spec) do |spec|
11
11
  spec.pattern = FileList['spec/**/*_spec.rb']
12
12
  end
13
13
 
14
- # task :default => "spec:all"
15
- #
16
- # namespace :spec do
17
- # desc "Run Tests against all ORMs"
18
- # task :all do
19
- # sh "bundle --quiet"
20
- # sh "bundle exec rake spec"
21
- # end
22
- # end
23
- #
24
- # begin
25
- # require 'rdoc/task'
26
- #
27
- # Rake::RDocTask.new do |rdoc|
28
- # require 'query_report/version'
29
- #
30
- # rdoc.rdoc_dir = 'rdoc'
31
- # rdoc.title = "query report #{QueryReport::VERSION}"
32
- # rdoc.rdoc_files.include('README*')
33
- # rdoc.rdoc_files.include('lib/**/*.rb')
34
- # end
35
- # rescue LoadError
36
- # puts 'RDocTask is not supported on this VM and platform combination.'
37
- # end
38
-
39
14
  task :default => "spec:all"
40
- gemfiles = %w(active_record_32 active_record_4)
15
+ gemfiles = %w(active_record_32 active_record_4 active_record_4_1_1)
41
16
 
42
17
  namespace :spec do
43
- gemfiles.each do |gemfile|
44
- desc "Run Tests against #{gemfile}"
45
- task gemfile do
46
- sh "BUNDLE_GEMFILE='gemfiles/#{gemfile}.gemfile' bundle --quiet"
47
- sh "BUNDLE_GEMFILE='gemfiles/#{gemfile}.gemfile' bundle exec rake -t spec"
48
- end
49
- end
50
-
51
18
  desc "Run Tests against all ORMs"
52
19
  task :all do
53
20
  gemfiles.each do |gemfile|
@@ -7,8 +7,7 @@
7
7
  </thead>
8
8
 
9
9
  <tbody>
10
- <% records = report.has_any_rowspan? ? report.records_with_rowspan : report.records %>
11
- <% records.each do |record| %>
10
+ <% report.records_to_render.each do |record| %>
12
11
  <tr>
13
12
  <% report.columns.each do |column| %>
14
13
  <% value = record[column.humanize]
@@ -27,5 +26,5 @@
27
26
  </tbody>
28
27
  </table>
29
28
  <% else %>
30
- <p>No record found</p>
29
+ <p><%= t('query_report.no_record_found') %></p>
31
30
  <% end %>
@@ -6,4 +6,5 @@ en:
6
6
  total:
7
7
  Total
8
8
  labels:
9
- search: Search
9
+ search: Search
10
+ no_record_found: No record found
@@ -15,6 +15,7 @@ module QueryReport
15
15
  # @option options [Boolean] :only_on_web the column will appear on the web and not appear in PDF, CSV or JSON if set to true
16
16
  # @option options [Boolean] :sortable if set to true then sorts on that column, but if the sorting has to be on a joint table then you have to specify the column on which the sorting will happen
17
17
  # @option options :rowspan the rows with same values in the same column will span if set to true
18
+ # @option options :pdf[:width] pass width of the column in the pdf
18
19
  #
19
20
  # @example Row span
20
21
  # column :invoiced_to_name, rowspan: true
@@ -45,6 +46,7 @@ module QueryReport
45
46
  # ├───────────┴────────────┼─────────────────┤
46
47
  # │ Total │ 300 │
47
48
  # └────────────────────────┴─────────────────┘
49
+ # The translation key used for total is 'query_report.total'
48
50
  #
49
51
  # @example Sorting
50
52
  # column :invoice_date, sortable: true
@@ -54,10 +56,16 @@ module QueryReport
54
56
  # then just set true to make the column sortable.
55
57
  # If the column is from another table then you have to specify the column name.
56
58
  #
59
+ # @example Pdf options
60
+ # column :invoice_date, pdf: {width: 20}
61
+ # This is how you can control the width of the column in the pdf
57
62
  def column(name, options={}, &block)
58
63
  @columns << Column.new(self, name, options, block)
59
64
  end
60
65
 
66
+ # @return [Array<Hash>] the footer for the table with total with appropriate colspan and content
67
+ # Sample output
68
+ # [{content: "Total", colspan: '2'}, 200, 300]
61
69
  def column_total_with_colspan
62
70
  total_with_colspan = []
63
71
  colspan = 0
@@ -108,6 +116,10 @@ module QueryReport
108
116
  @options[:rowspan] == true || @options[:rowspan].kind_of?(Symbol)
109
117
  end
110
118
 
119
+ def pdf_options
120
+ @options[:pdf] || {}
121
+ end
122
+
111
123
  def rowspan_column_humanized
112
124
  return @rowspan_column_humanized if @rowspan_column_humanized
113
125
  rowspan_column_name = @options[:rowspan].kind_of?(Symbol) ? @options[:rowspan] : self.name
@@ -140,7 +152,7 @@ module QueryReport
140
152
  def total
141
153
  @total ||= begin
142
154
  if has_total?
143
- report.records_with_rowspan.inject(0) do |sum, r|
155
+ report.records_to_render.inject(0) do |sum, r|
144
156
  r = report.content_from_element(r[humanize])
145
157
  r = strip_tags(r) if r.kind_of? String
146
158
  sum + r.to_f
@@ -55,8 +55,10 @@ module QueryReport
55
55
  attr_reader :params, :column, :type, :comparators, :block, :options
56
56
 
57
57
  # Initializes filter with the proper parameters
58
- # Params:
59
- # +params+:: The params from the http request
58
+ # @param params [Hash] The params from the http request
59
+ # @param column [Symbol] the name of the filter or the column name for the filter to be applied on
60
+ # @param block The block is passed for a manual query, The first param the block will receive is the query chain, and the rest is the values for that particular filter.
61
+ # @see FilterModule#filter options
60
62
  def initialize(params, column, options, &block)
61
63
  @params, @column, @options, @comparators, @block = params, column, options, [], block
62
64
  @type = options.kind_of?(String) ? options : options[:type]
@@ -48,15 +48,17 @@ module QueryReport
48
48
  @has_any_rowspan
49
49
  end
50
50
 
51
- def records_with_rowspan
52
- @records_with_rowspan ||= map_rowspan(records)
51
+ def records_to_render
52
+ @records_to_render ||= map_rowspan(records)
53
53
  end
54
54
 
55
- def all_records_with_rowspan
56
- @all_records_with_rowspan ||= map_rowspan(all_records)
55
+ def all_records_to_render
56
+ @all_records_to_render ||= map_rowspan(all_records)
57
57
  end
58
58
 
59
59
  def map_rowspan(recs)
60
+ return recs unless has_any_rowspan?
61
+
60
62
  last_reset_index = @columns.select(&:rowspan?).inject({}) { |hash, column| hash[column.humanize] = 0; hash }
61
63
  rowspan_column_hash = @columns.select(&:rowspan?).inject({}) { |hash, column| hash[column.humanize] = column.rowspan_column_humanized; hash }
62
64
 
@@ -60,7 +60,7 @@ module QueryReport
60
60
  end
61
61
 
62
62
  def table_content_for(report)
63
- table_items = report.all_records_with_rowspan
63
+ table_items = report.all_records_to_render
64
64
 
65
65
  items = table_items.map do |item|
66
66
  item_values = []
@@ -104,7 +104,18 @@ module QueryReport
104
104
  font_size = options[:font_size]
105
105
  header_font_size = options[:table][:header][:font_size]
106
106
  pdf.move_down 10
107
- pdf.table(items, :row_colors => alternate_row_bg_color, :header => true, :cell_style => {:inline_format => true, :size => font_size}) do
107
+
108
+ table_options = {:row_colors => alternate_row_bg_color, :header => true, :cell_style => {:inline_format => true, :size => font_size}}
109
+
110
+ report.columns.each_with_index do |report_column, index|
111
+ width = report_column.pdf_options[:width]
112
+ if width
113
+ table_options[:column_widths] ||= {}
114
+ table_options[:column_widths].merge! index => width
115
+ end
116
+ end
117
+
118
+ pdf.table(items, table_options) do
108
119
  row(0).style(:font_style => :bold, :background_color => header_bg_color, :size => header_font_size)
109
120
  end
110
121
  end
@@ -1,3 +1,3 @@
1
1
  module QueryReport
2
- VERSION = "1.0.24"
2
+ VERSION = "1.0.25"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: query_report
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.24
4
+ version: 1.0.25
5
5
  platform: ruby
6
6
  authors:
7
7
  - A.K.M. Ashrafuzzaman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-04 00:00:00.000000000 Z
11
+ date: 2014-06-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -17,6 +17,9 @@ dependencies:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '5'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -24,160 +27,163 @@ dependencies:
24
27
  - - ">="
25
28
  - !ruby/object:Gem::Version
26
29
  version: '3'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '5'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: ransack
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
- - - ">="
37
+ - - "~>"
32
38
  - !ruby/object:Gem::Version
33
- version: 1.0.0
39
+ version: '1.0'
34
40
  type: :runtime
35
41
  prerelease: false
36
42
  version_requirements: !ruby/object:Gem::Requirement
37
43
  requirements:
38
- - - ">="
44
+ - - "~>"
39
45
  - !ruby/object:Gem::Version
40
- version: 1.0.0
46
+ version: '1.0'
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: google_visualr
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
51
  - - "~>"
46
52
  - !ruby/object:Gem::Version
47
- version: 2.1.0
53
+ version: '2.0'
48
54
  type: :runtime
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
51
57
  requirements:
52
58
  - - "~>"
53
59
  - !ruby/object:Gem::Version
54
- version: 2.1.0
60
+ version: '2.0'
55
61
  - !ruby/object:Gem::Dependency
56
62
  name: rmagick
57
63
  requirement: !ruby/object:Gem::Requirement
58
64
  requirements:
59
65
  - - "~>"
60
66
  - !ruby/object:Gem::Version
61
- version: 2.13.2
67
+ version: '2.13'
62
68
  type: :runtime
63
69
  prerelease: false
64
70
  version_requirements: !ruby/object:Gem::Requirement
65
71
  requirements:
66
72
  - - "~>"
67
73
  - !ruby/object:Gem::Version
68
- version: 2.13.2
74
+ version: '2.13'
69
75
  - !ruby/object:Gem::Dependency
70
76
  name: gruff
71
77
  requirement: !ruby/object:Gem::Requirement
72
78
  requirements:
73
79
  - - "~>"
74
80
  - !ruby/object:Gem::Version
75
- version: 0.5.1
81
+ version: '0.5'
76
82
  type: :runtime
77
83
  prerelease: false
78
84
  version_requirements: !ruby/object:Gem::Requirement
79
85
  requirements:
80
86
  - - "~>"
81
87
  - !ruby/object:Gem::Version
82
- version: 0.5.1
88
+ version: '0.5'
83
89
  - !ruby/object:Gem::Dependency
84
90
  name: kaminari
85
91
  requirement: !ruby/object:Gem::Requirement
86
92
  requirements:
87
- - - ">="
93
+ - - "~>"
88
94
  - !ruby/object:Gem::Version
89
- version: 0.14.1
95
+ version: '0.14'
90
96
  type: :runtime
91
97
  prerelease: false
92
98
  version_requirements: !ruby/object:Gem::Requirement
93
99
  requirements:
94
- - - ">="
100
+ - - "~>"
95
101
  - !ruby/object:Gem::Version
96
- version: 0.14.1
102
+ version: '0.14'
97
103
  - !ruby/object:Gem::Dependency
98
104
  name: prawn
99
105
  requirement: !ruby/object:Gem::Requirement
100
106
  requirements:
101
- - - ">="
107
+ - - "~>"
102
108
  - !ruby/object:Gem::Version
103
- version: 0.15.0
109
+ version: '1.0'
104
110
  type: :runtime
105
111
  prerelease: false
106
112
  version_requirements: !ruby/object:Gem::Requirement
107
113
  requirements:
108
- - - ">="
114
+ - - "~>"
109
115
  - !ruby/object:Gem::Version
110
- version: 0.15.0
116
+ version: '1.0'
111
117
  - !ruby/object:Gem::Dependency
112
118
  name: rake
113
119
  requirement: !ruby/object:Gem::Requirement
114
120
  requirements:
115
- - - ">="
121
+ - - "~>"
116
122
  - !ruby/object:Gem::Version
117
- version: '0'
123
+ version: '10.3'
118
124
  type: :development
119
125
  prerelease: false
120
126
  version_requirements: !ruby/object:Gem::Requirement
121
127
  requirements:
122
- - - ">="
128
+ - - "~>"
123
129
  - !ruby/object:Gem::Version
124
- version: '0'
130
+ version: '10.3'
125
131
  - !ruby/object:Gem::Dependency
126
132
  name: rspec
127
133
  requirement: !ruby/object:Gem::Requirement
128
134
  requirements:
129
- - - ">="
135
+ - - "~>"
130
136
  - !ruby/object:Gem::Version
131
- version: '0'
137
+ version: '2.14'
132
138
  type: :development
133
139
  prerelease: false
134
140
  version_requirements: !ruby/object:Gem::Requirement
135
141
  requirements:
136
- - - ">="
142
+ - - "~>"
137
143
  - !ruby/object:Gem::Version
138
- version: '0'
144
+ version: '2.14'
139
145
  - !ruby/object:Gem::Dependency
140
146
  name: rspec-mocks
141
147
  requirement: !ruby/object:Gem::Requirement
142
148
  requirements:
143
- - - ">="
149
+ - - "~>"
144
150
  - !ruby/object:Gem::Version
145
- version: '0'
151
+ version: '2.14'
146
152
  type: :development
147
153
  prerelease: false
148
154
  version_requirements: !ruby/object:Gem::Requirement
149
155
  requirements:
150
- - - ">="
156
+ - - "~>"
151
157
  - !ruby/object:Gem::Version
152
- version: '0'
158
+ version: '2.14'
153
159
  - !ruby/object:Gem::Dependency
154
- name: temping
160
+ name: sqlite3
155
161
  requirement: !ruby/object:Gem::Requirement
156
162
  requirements:
157
- - - ">="
163
+ - - "~>"
158
164
  - !ruby/object:Gem::Version
159
165
  version: '0'
160
166
  type: :development
161
167
  prerelease: false
162
168
  version_requirements: !ruby/object:Gem::Requirement
163
169
  requirements:
164
- - - ">="
170
+ - - "~>"
165
171
  - !ruby/object:Gem::Version
166
172
  version: '0'
167
173
  - !ruby/object:Gem::Dependency
168
174
  name: database_cleaner
169
175
  requirement: !ruby/object:Gem::Requirement
170
176
  requirements:
171
- - - ">="
177
+ - - "~>"
172
178
  - !ruby/object:Gem::Version
173
- version: 1.2.0
179
+ version: '1.2'
174
180
  type: :development
175
181
  prerelease: false
176
182
  version_requirements: !ruby/object:Gem::Requirement
177
183
  requirements:
178
- - - ">="
184
+ - - "~>"
179
185
  - !ruby/object:Gem::Version
180
- version: 1.2.0
186
+ version: '1.2'
181
187
  description: This is a gem to help you to structure common reports of you application
182
188
  just by writing in the controller
183
189
  email:
@@ -252,4 +258,3 @@ signing_key:
252
258
  specification_version: 4
253
259
  summary: Structure you reports
254
260
  test_files: []
255
- has_rdoc: