meta_reports 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +58 -33
- data/app/helpers/meta_reports/reports_helper.rb +37 -20
- data/app/models/meta_reports/base.rb +9 -1
- data/config/routes.rb +3 -1
- data/lib/generators/meta_reports/templates/models/report.rb +5 -17
- data/lib/generators/meta_reports/templates/models/report_non_activerecord.rb +5 -17
- data/lib/generators/meta_reports/templates/views/_form.html.erb +9 -0
- data/lib/generators/meta_reports/templates/views/templates/_default_header.pdf.prawn +0 -1
- data/lib/generators/meta_reports/templates/views/templates/_default_header.xlsx.axlsx +5 -11
- data/lib/generators/meta_reports/templates/views/templates/_default_table.html.erb +14 -5
- data/lib/generators/meta_reports/templates/views/templates/_default_table.pdf.prawn +5 -1
- data/lib/generators/meta_reports/templates/views/templates/default.pdf.prawn +7 -5
- data/lib/meta_reports/version.rb +1 -1
- data/lib/tasks/meta_reports_tasks.rake +9 -8
- data/spec/dummy/app/assets/stylesheets/lib/metareports_color_variables.scss +7 -9
- data/spec/dummy/app/assets/stylesheets/lib/metareports_colors.scss +7 -9
- data/spec/dummy/app/models/meta_reports/report.rb +5 -17
- data/spec/dummy/app/views/meta_reports/reports/_form.html.erb +16 -0
- data/spec/dummy/app/views/meta_reports/reports/templates/_default_header.pdf.prawn +0 -1
- data/spec/dummy/app/views/meta_reports/reports/templates/_default_header.xlsx.axlsx +5 -11
- data/spec/dummy/app/views/meta_reports/reports/templates/_default_table.html.erb +14 -5
- data/spec/dummy/app/views/meta_reports/reports/templates/_default_table.pdf.prawn +5 -1
- data/spec/dummy/app/views/meta_reports/reports/templates/default.pdf.prawn +1 -1
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/log/development.log +806 -0
- data/spec/dummy/tmp/capybara/capybara-201310282335386823859116.html +268 -0
- data/spec/dummy/tmp/capybara/capybara-201310282336101820292402.html +268 -0
- data/spec/dummy/tmp/capybara/capybara-201310282338439674392250.html +60 -0
- data/spec/dummy/tmp/capybara/capybara-201310282350595445887206.html +60 -0
- data/spec/dummy/tmp/capybara/capybara-201310282351429822980920.html +60 -0
- data/spec/dummy/tmp/capybara/capybara-201310282354523302677005.html +60 -0
- data/spec/features/dummy_spec.rb +10 -0
- data/spec/support/utilities.rb +27 -0
- data/spec/tasks/meta_reports_rake_spec.rb +14 -18
- metadata +30 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 27a12febca4612c8f05d6e12f765657f2f6e49c5
|
4
|
+
data.tar.gz: 81d294309e4a203108ce5c29ce0933e05eddbc36
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 200b4175aece9f9eef2fda927af223aacc38f0f3720e39a5b277e488aaea220c7bf2b5c2d41378edda7a17872d3a84c36bd13bb4887cea7707c1173942c4165a
|
7
|
+
data.tar.gz: 38f42bd8de5d7d93c7c6739338f941a135b5e656eac23ce42a90d495d3734c8871fb7d4941a5c2f5a46af3648201925f921585e41db071e05d07367d1f83b58a
|
data/README.md
CHANGED
@@ -117,6 +117,7 @@ The key component of MetaReports is the metadata format. This allows you to writ
|
|
117
117
|
- **options:** The options for the whole table. If you are using a plain array, this hash must be the last item in the table.
|
118
118
|
- **column_widths:** Column widths hash, used only on Prawn PDF output.
|
119
119
|
- **font_size:** Font size for content. Used on PDF and XLSX output.
|
120
|
+
- **group:** Group the header and table together on one page. This will throw an error if it cannot be fit on one page.
|
120
121
|
- **row_classes:** A hash with keys specifying row number (0 first), and values being a string of classes.
|
121
122
|
- **table_header:** Defaults to true. First row in the table is a header row. Causes the row to be repeated on Prawn PDF tables if it breaks to another page.
|
122
123
|
|
@@ -150,59 +151,82 @@ Here is a simple example. See the [example class](spec/dummy/app/models/meta_rep
|
|
150
151
|
|
151
152
|
###Colors
|
152
153
|
|
153
|
-
There is currently an incomplete implementation of shared colors. You will define your colors by name in the MetaReports::Report class in the COLORS hash constant. If a table row contains a corresponding class name it will have that color in HTML
|
154
|
+
There is currently an incomplete implementation of shared colors. You will define your colors by name in the MetaReports::Report class in the COLORS hash constant. If a table row or cell contains a corresponding class name it will have that color in HTML and PDF. XLSX support is planned. It is also intended to implement a means of specifying cell text color.
|
154
155
|
|
155
|
-
|
156
|
+
#### Declaring Colors
|
157
|
+
|
158
|
+
Specify colors using the COLORS hash constnat in your MetaReports::Report class. An example COLORS hash is below:
|
156
159
|
|
157
160
|
```ruby
|
158
161
|
COLORS = {
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
162
|
+
even: 'efefef',
|
163
|
+
odd: 'ffffff',
|
164
|
+
yellow: ['ffffaa', 'ffffcc', 'f9f9a4', 'f9f9c6'],
|
165
|
+
highlight: '$yellow_1 !important',
|
166
|
+
hover: ['ffcccc', 'ffc5c5']
|
164
167
|
}
|
165
168
|
```
|
166
169
|
|
170
|
+
#### Specifying colors for rows or cells
|
171
|
+
|
172
|
+
To specify a color for a cell, use a hash and specify the color name in the class:
|
173
|
+
|
174
|
+
```ruby
|
175
|
+
table << [{content: "Colored cell", class: 'yellow'}]
|
176
|
+
```
|
177
|
+
|
178
|
+
To specify a color for a row, store the row's color in the table row_classes hash:
|
179
|
+
|
180
|
+
```ruby
|
181
|
+
table.row_classes[row] = 'yellow'
|
182
|
+
```
|
183
|
+
|
184
|
+
Note the row number begins with zero, and excludes the header if enabled.
|
185
|
+
|
186
|
+
#### Inline CSS
|
187
|
+
|
188
|
+
MetaReports defaults to inline styling for HTML. If you wish to turn this off (and use either your own styles or the export below) set the following:
|
189
|
+
|
190
|
+
```ruby
|
191
|
+
MetaReports::Base.inline_css = false
|
192
|
+
```
|
193
|
+
|
194
|
+
#### Export SCSS / CSS
|
195
|
+
|
167
196
|
When you run `rake meta_reports:export_colors` task it exports two SCSS files, one including HTML styles, the other including SCSS variables (for your use in other files.) The export uses the following conventions:
|
168
197
|
|
169
198
|
- The corresponding SASS variable will be named the same as the key (with $ prepended of course). If the value is an array, the variable names will be the class name plus a numerical suffix for each entry.
|
170
|
-
- The corresponding CSS entry will
|
171
|
-
-
|
172
|
-
- '__' will be converted to a hash (id indicator)
|
173
|
-
- '_' will be converted to a period (class indicator)
|
174
|
-
- '--' (double dash) will be converted to to a colon (pseudo class)
|
199
|
+
- The corresponding CSS entry will:
|
200
|
+
- be prefixed with 'tr.' to match table rows
|
175
201
|
- arrays of values will be converted into nth-child rules to color consecutive rows
|
176
202
|
|
177
|
-
This means '____' will be converted to a space and period (' .'), '_____' to ' #', and 'a--first-child' will become 'a:first-child'.
|
178
|
-
|
179
203
|
Given the above example the generated `lib/metareports_color_variables.scss` SASS file will be:
|
180
204
|
|
181
205
|
```scss
|
182
|
-
$
|
183
|
-
$
|
184
|
-
$
|
185
|
-
$
|
186
|
-
$
|
187
|
-
$
|
188
|
-
$
|
189
|
-
$
|
190
|
-
$
|
206
|
+
$even: #efefef;
|
207
|
+
$odd: #ffffff;
|
208
|
+
$yellow_0: #ffffaa;
|
209
|
+
$yellow_1: #ffffcc;
|
210
|
+
$yellow_2: #f9f9a4;
|
211
|
+
$yellow_3: #f9f9c6;
|
212
|
+
$highlight: $_yellow_1;
|
213
|
+
$hover_0: #ffcccc;
|
214
|
+
$hover_1: #ffc5c5;
|
191
215
|
```
|
192
216
|
|
193
217
|
And the generated `assets/stylesheets/lib/metareports_colors.scss` SASS file would be:
|
194
218
|
|
195
219
|
```scss
|
196
220
|
@import 'metareports_color_variables.scss';
|
197
|
-
.even { background: $
|
198
|
-
.odd { background: $
|
199
|
-
.yellow:nth-child(4n+0) { background: $
|
200
|
-
.yellow:nth-child(4n+1) { background: $
|
201
|
-
.yellow:nth-child(4n+2) { background: $
|
202
|
-
.yellow:nth-child(4n+3) { background: $
|
203
|
-
tr
|
204
|
-
|
205
|
-
|
221
|
+
tr.even { background: $even; }
|
222
|
+
tr.odd { background: $odd; }
|
223
|
+
tr.yellow:nth-child(4n+0) { background: $yellow_0; }
|
224
|
+
tr.yellow:nth-child(4n+1) { background: $yellow_1; }
|
225
|
+
tr.yellow:nth-child(4n+2) { background: $yellow_2; }
|
226
|
+
tr.yellow:nth-child(4n+3) { background: $yellow_3; }
|
227
|
+
tr.highlight { background: $yellow_1 !important; }
|
228
|
+
tr.hover:nth-child(2n+0) { background: $hover_0; }
|
229
|
+
tr.hover:nth-child(2n+1) { background: $hover_1; }
|
206
230
|
```
|
207
231
|
|
208
232
|
Note that you can specify `!important` and it will be reproduced in the CSS style.
|
@@ -212,7 +236,7 @@ To export only the colors file, use the `meta_reports:export_colors_only` Rake t
|
|
212
236
|
|
213
237
|
##TODO
|
214
238
|
|
215
|
-
-
|
239
|
+
- Expand common colors to spreadsheets, and enable coloring of text / individual cells
|
216
240
|
- Charts based on table data
|
217
241
|
- More formats (e.g. csv, json, text)
|
218
242
|
- Direct to email / print (using IPP) / fax
|
@@ -220,6 +244,7 @@ To export only the colors file, use the `meta_reports:export_colors_only` Rake t
|
|
220
244
|
|
221
245
|
##Changelog
|
222
246
|
|
247
|
+
- **0.0.5:** (11/16/13) Simplify color handling, color individual cells
|
223
248
|
- **0.0.4:** (10/7/13) Colors rake task
|
224
249
|
- **0.0.3:** (10/7/13) Template/model/helper generator
|
225
250
|
- **0.0.2:** (9/29/13) Relax rails requirement, better testing
|
@@ -1,22 +1,22 @@
|
|
1
1
|
module MetaReports
|
2
2
|
module ReportsHelper
|
3
3
|
def meta_report_color(klass, row = 0)
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
# the trailing gsub is to drop any !important directive
|
10
|
-
color = color[row%color.length].to_s.gsub(/\s.*$/,'')
|
11
|
-
end
|
12
|
-
if color.gsub!(/^\$/, '') # we have a variable
|
13
|
-
color = COLORS[color.to_sym]
|
4
|
+
@meta_reports_colors ||= {}
|
5
|
+
@meta_reports_colors[klass.to_sym] ||= begin
|
6
|
+
Rails.logger.info "getting color"
|
7
|
+
color = MetaReports::Report::COLORS[klass.to_sym]
|
8
|
+
return nil unless color
|
14
9
|
if color.is_a? Array
|
15
|
-
|
16
|
-
color = color[
|
10
|
+
# the trailing split first is to drop any !important directive
|
11
|
+
color = color[row%color.length].to_s.split.first
|
12
|
+
end
|
13
|
+
if color.gsub!(/^\$/, '') # we have a variable
|
14
|
+
index = 0
|
15
|
+
index = $1 if color.gsub!(/_(\d+)$/,'')
|
16
|
+
color = meta_report_color(color, index)
|
17
17
|
end
|
18
|
+
color
|
18
19
|
end
|
19
|
-
color
|
20
20
|
end
|
21
21
|
|
22
22
|
def convert_margins_to_xlsx(margins)
|
@@ -37,6 +37,15 @@ module MetaReports
|
|
37
37
|
if cell.is_a? Hash
|
38
38
|
tags = cell.reject {|k,v| k == :content || k == :html}
|
39
39
|
tags[:class] ||= 'textcenter'
|
40
|
+
if MetaReports::Base.inline_css
|
41
|
+
color = nil
|
42
|
+
tags[:class].split(/\s+/).each do |token|
|
43
|
+
if color = meta_report_color(token)
|
44
|
+
break
|
45
|
+
end
|
46
|
+
end
|
47
|
+
tags[:style] = "background-color: ##{color}"
|
48
|
+
end
|
40
49
|
content_tag tag, (cell[:html] || cell[:content]).to_s.html_safe, tags
|
41
50
|
elsif cell.is_a? Array
|
42
51
|
else
|
@@ -66,11 +75,19 @@ module MetaReports
|
|
66
75
|
if data[i][j].is_a? Hash
|
67
76
|
[:html, :title, :id].each {|sym| data[i][j].delete(sym)}
|
68
77
|
_class = data[i][j].delete(:class)
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
78
|
+
unless _class.blank?
|
79
|
+
[:right, :left, :center].each do |sym|
|
80
|
+
set_style(styling, sym, i, j) if _class =~ /\b#{sym}\b|[^a-z]#{sym}/i
|
81
|
+
end
|
82
|
+
if _class =~ /\bbold\b|\bstrong\b/
|
83
|
+
set_style(styling, :bold, i, j)
|
84
|
+
end
|
85
|
+
_class.to_s.split(/\s+/).each do |token|
|
86
|
+
if color = meta_report_color(token)
|
87
|
+
set_style(styling, :cell_bg_colors, i, j, color)
|
88
|
+
break
|
89
|
+
end
|
90
|
+
end
|
74
91
|
end
|
75
92
|
unless data[i][j][:image] || data[i][j][:content].is_a?(String)
|
76
93
|
data[i][j][:content] = data[i][j][:content].to_s
|
@@ -143,9 +160,9 @@ module MetaReports
|
|
143
160
|
links.join(' ').html_safe
|
144
161
|
end
|
145
162
|
|
146
|
-
def set_style(styling, style, row, col)
|
163
|
+
def set_style(styling, style, row, col, val = nil)
|
147
164
|
styling[style] ||= []
|
148
|
-
styling[style] << [row,col]
|
165
|
+
styling[style] << (val ? [row,col,val] : [row,col])
|
149
166
|
end
|
150
167
|
|
151
168
|
def to_xls_col(column)
|
@@ -1,6 +1,9 @@
|
|
1
1
|
class MetaReports::Base < ActiveRecord::Base
|
2
|
-
attr_accessible :description, :direct, :group, :name, :target, :title, :views, :formats_mask
|
2
|
+
attr_accessible :description, :direct, :group, :name, :target, :title, :views, :formats_mask, :formats
|
3
3
|
validates_presence_of :name, :title, :group
|
4
|
+
|
5
|
+
cattr_accessor :inline_css
|
6
|
+
@@inline_css = true
|
4
7
|
|
5
8
|
self.table_name = "meta_reports_reports"
|
6
9
|
|
@@ -68,4 +71,9 @@ class MetaReports::Base < ActiveRecord::Base
|
|
68
71
|
even: 'efefef',
|
69
72
|
odd: 'ffffff',
|
70
73
|
}
|
74
|
+
|
75
|
+
# Sorry, God doesn't help self.helpers, which is why you need it
|
76
|
+
def self.helpers
|
77
|
+
ApplicationController.helpers
|
78
|
+
end
|
71
79
|
end
|
data/config/routes.rb
CHANGED
@@ -2,8 +2,10 @@ MetaReports::Engine.routes.draw do
|
|
2
2
|
root to: "reports#index"
|
3
3
|
|
4
4
|
get 'reports/file/:dir' => 'reports#file', as: 'file'
|
5
|
-
|
5
|
+
get 'new' => 'reports#new', as: 'short_new'
|
6
|
+
post 'reports' => 'reports#create', as: 'normal_create'
|
6
7
|
match ':id(.:format)' => 'reports#show', as: 'short_show', via: [:get, :post]
|
7
8
|
get ':id/edit' => 'reports#edit', as: 'short_edit'
|
8
9
|
get ':id/form' => 'reports#form', as: 'short_form'
|
10
|
+
resources :reports
|
9
11
|
end
|
@@ -3,26 +3,14 @@ class MetaReports::Report < MetaReports::Base
|
|
3
3
|
#
|
4
4
|
# Shared colors. The key is the class name, value is RGB in hex format
|
5
5
|
#
|
6
|
-
#
|
7
|
-
# * In the SASS CSS file:
|
8
|
-
# - '___' will be changed to ' '
|
9
|
-
# - '__' will be changed to '#'
|
10
|
-
# - '_' will be changed to '.'
|
11
|
-
# - '--' will be changed to ':'
|
12
|
-
# - an array of values will be changed to nth-child rules for consecutive rows
|
13
|
-
# * In the SASS variables file:
|
14
|
-
# - the variable name will be the same as the key
|
15
|
-
# - an array of values will be changed into variables whose name is the class name plus a numerical suffix for each entry
|
16
|
-
#
|
17
|
-
# Example: 'tr____highlight' is 'tr .highlight {}' in CSS, and $tr____highlight as a SASS variable.
|
6
|
+
# Example: "highlight: 'ffcccc'" is 'tr.highlight {background: #ffcccc}' in CSS, and "$highlight: #ffcccc;"" as a SASS variable.
|
18
7
|
#
|
19
8
|
|
20
9
|
COLORS = {
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
'a--hover' => ['ffcccc', 'ffc5c5']
|
10
|
+
even: 'efefef',
|
11
|
+
odd: 'ffffff',
|
12
|
+
yellow: ['ffffaa', 'ffffcc', 'f9f9a4', 'f9f9c6'],
|
13
|
+
highlight: '$yellow_1 !important',
|
26
14
|
}
|
27
15
|
|
28
16
|
|
@@ -3,26 +3,14 @@ class MetaReports::Report
|
|
3
3
|
#
|
4
4
|
# Shared colors. The key is the class name, value is RGB in hex format
|
5
5
|
#
|
6
|
-
#
|
7
|
-
# * In the SASS CSS file:
|
8
|
-
# - '___' will be changed to ' '
|
9
|
-
# - '__' will be changed to '#'
|
10
|
-
# - '_' will be changed to '.'
|
11
|
-
# - '--' will be changed to ':'
|
12
|
-
# - an array of values will be changed to nth-child rules for consecutive rows
|
13
|
-
# * In the SASS variables file:
|
14
|
-
# - the variable name will be the same as the key
|
15
|
-
# - an array of values will be changed into variables whose name is the class name plus a numerical suffix for each entry
|
16
|
-
#
|
17
|
-
# Example: 'tr____highlight' is 'tr .highlight {}' in CSS, and $tr____highlight as a SASS variable.
|
6
|
+
# Example: "highlight: 'ffcccc'" is 'tr.highlight {background: #ffcccc}' in CSS, and "$highlight: #ffcccc;"" as a SASS variable.
|
18
7
|
#
|
19
8
|
|
20
9
|
COLORS = {
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
'a--hover' => ['ffcccc', 'ffc5c5']
|
10
|
+
even: 'efefef',
|
11
|
+
odd: 'ffffff',
|
12
|
+
yellow: ['ffffaa', 'ffffcc', 'f9f9a4', 'f9f9c6'],
|
13
|
+
highlight: '$yellow_1 !important',
|
26
14
|
}
|
27
15
|
|
28
16
|
|
@@ -39,6 +39,15 @@
|
|
39
39
|
<%= f.label :target %><br />
|
40
40
|
<%= f.text_field :target %>
|
41
41
|
</div>
|
42
|
+
<div class="field">
|
43
|
+
<% formats = @report.formats %>
|
44
|
+
<% for format in MetaReports::Base::FORMATS.sort %>
|
45
|
+
<%= check_box_tag "report[formats][]", format, formats.include?(format) %>
|
46
|
+
<span class='bold'><%= format.humanize %></span>
|
47
|
+
<br />
|
48
|
+
<% end %>
|
49
|
+
<%= hidden_field_tag "report[formats][]", "" %>
|
50
|
+
</div>
|
42
51
|
<div class="actions">
|
43
52
|
<%= f.submit %>
|
44
53
|
</div>
|
@@ -1,17 +1,11 @@
|
|
1
1
|
wb = sheet.workbook
|
2
2
|
styles = {} unless defined?(styles)
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
end
|
9
|
-
unless styles[:subtitle]
|
10
|
-
styles[:subtitle] = wb.styles.add_style :sz => 12, :alignment => { :horizontal => :center}, :b => true
|
11
|
-
end
|
3
|
+
styles[:bold] ||= wb.styles.add_style :b => true
|
4
|
+
styles[:title] ||= wb.styles.add_style :sz => 14, :alignment => { :horizontal => :center}, :b => true
|
5
|
+
styles[:subtitle] ||= wb.styles.add_style :sz => 12, :alignment => { :horizontal => :center}, :b => true
|
6
|
+
columns ||= 8
|
7
|
+
subtitle ||= ''
|
12
8
|
|
13
|
-
columns = columns || 8
|
14
|
-
subtitle = subtitle || ''
|
15
9
|
sheet.add_row ["Company Name, Address"] + ['']*(columns-3) + [Date.today().to_s, Time.now().strftime("%I:%M")], :style => styles[:bold]
|
16
10
|
sheet.add_row [' '] * columns
|
17
11
|
sheet.add_row [title], :style => styles[:title]
|
@@ -4,16 +4,25 @@ table_class = table.options[:table_class].to_s if !defined?(table_class) || tabl
|
|
4
4
|
%>
|
5
5
|
<%= content_tag(:h4, table_name) %>
|
6
6
|
<div class='list_container'>
|
7
|
-
<%= content_tag(:table, :class => "table #{table_class}") do %>
|
7
|
+
<%= content_tag(:table, :class => "table table-condensed #{table_class}") do %>
|
8
8
|
<% unless @report[:table_header] == false %>
|
9
9
|
<%= content_tag(:thead, content_tag(:tr, table.to_a.shift.map { |h| html_cell(h, :th)}.join.html_safe ) ) %>
|
10
10
|
<% end %>
|
11
11
|
<tbody>
|
12
|
-
<% table.to_a.each_with_index do |row, i|
|
13
|
-
|
14
|
-
|
12
|
+
<% table.to_a.each_with_index do |row, i|
|
13
|
+
style = nil
|
14
|
+
if MetaReports::Base.inline_css && row_classes[i]
|
15
|
+
color = nil
|
16
|
+
row_classes[i].split(/\s+/).each do |token|
|
17
|
+
if color = meta_report_color(token)
|
18
|
+
break
|
19
|
+
end
|
20
|
+
end
|
21
|
+
style = "background-color: ##{color}"
|
22
|
+
#TODO: handle bold, alignment
|
23
|
+
end
|
15
24
|
%>
|
16
|
-
<%= content_tag(:tr, :
|
25
|
+
<%= content_tag(:tr, class: row_classes[i], style: style) do
|
17
26
|
row.each do |cell|
|
18
27
|
%><%= html_cell(cell) %><%
|
19
28
|
end
|
@@ -5,6 +5,7 @@ styling = {}
|
|
5
5
|
column_widths = {} if !defined?(column_widths) || column_widths.blank?
|
6
6
|
font_size = table[:font_size] || 8
|
7
7
|
table_header = table[:table_header] != false
|
8
|
+
row_offset = table_header ? 1 : 0
|
8
9
|
pdf.table prep_pdf_table(table, styling), :header => table_header, :row_colors => ["EEEEEE", "FFFFFF"], :width => pdf.bounds.width, :cell_style => {:padding => 2, :size => font_size, :align => :center} do |t|
|
9
10
|
t.cells.borders = []
|
10
11
|
t.style t.row(0), :borders => [:bottom], :background_color => "DDDDDD", :font_style => :bold
|
@@ -17,7 +18,10 @@ pdf.table prep_pdf_table(table, styling), :header => table_header, :row_colors =
|
|
17
18
|
t.style t.row(cell[0]).column(cell[1]), :font_style => :bold
|
18
19
|
end
|
19
20
|
styling[:row_colors].each do |row, color|
|
20
|
-
t.style t.row(row), :background_color => color
|
21
|
+
t.style t.row(row+row_offset), :background_color => color
|
22
|
+
end
|
23
|
+
styling[:cell_bg_colors].to_a.each do |cell|
|
24
|
+
t.style t.row(cell[0]).column(cell[1]), :background_color => cell[2]
|
21
25
|
end
|
22
26
|
if styling[:column_widths]
|
23
27
|
t.column_widths = styling[:column_widths]
|
@@ -1,5 +1,5 @@
|
|
1
1
|
margin = @report[:page_margin] && [*@report[:page_margin]][0,4] || nil
|
2
|
-
prawn_document(
|
2
|
+
prawn_document(page_layout: @report[:page_orientation] || :portrait, page_size: @report[:page_size] || 'LETTER', margin: margin) do |pdf|
|
3
3
|
|
4
4
|
render :partial => "meta_reports/reports/templates/default_header", :locals => { :pdf => pdf, :title => @report[:title], :subtitle => @report[:subtitle] }
|
5
5
|
pdf.font_size = @report[:font_size] || 8
|
@@ -13,11 +13,13 @@ table_names = @report[:table_order] || @report[:tables].keys.sort_by {|k| k.to_s
|
|
13
13
|
table_names.each do |table_name|
|
14
14
|
table = @report[:tables][table_name]
|
15
15
|
pdf.pad_bottom(25) do
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
if table[:group]
|
17
|
+
pdf.group do #if the table is larger than a page this will throw an error
|
18
|
+
render :partial => 'meta_reports/reports/templates/default_table', :locals => {:pdf => pdf, :title => table_name, :table => table}
|
19
|
+
end
|
20
|
+
else
|
19
21
|
render :partial => 'meta_reports/reports/templates/default_table', :locals => {:pdf => pdf, :title => table_name, :table => table}
|
20
|
-
|
22
|
+
end
|
21
23
|
end
|
22
24
|
end
|
23
25
|
|