Class: MetaReports::Base
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- MetaReports::Base
- Defined in:
- app/models/meta_reports/base.rb
Direct Known Subclasses
Constant Summary collapse
- FORMATS =
Utility methods
%w[html pdf xlsx]- COLORS =
{ even: 'efefef', odd: 'ffffff', }
Class Method Summary collapse
Instance Method Summary collapse
- #displays_all_formats?(*formats) ⇒ Boolean
- #displays_any_format?(*formats) ⇒ Boolean
- #format?(format) ⇒ Boolean
- #formats ⇒ Object
- #formats=(formats) ⇒ Object
- #run(params) ⇒ Object
- #view ⇒ Object
Class Method Details
.format_mask(format) ⇒ Object
17 18 19 |
# File 'app/models/meta_reports/base.rb', line 17 def self.format_mask(format) 1 << (FORMATS.index(format.to_s) || -1) end |
.formats_mask(*formats) ⇒ Object
21 22 23 |
# File 'app/models/meta_reports/base.rb', line 21 def self.formats_mask(*formats) formats.inject(0) {|mask, format| mask | (1 << (FORMATS.index(format.to_s) || -1) )} end |
.test_report(params) ⇒ Object
7 8 9 |
# File 'app/models/meta_reports/base.rb', line 7 def self.test_report(params) {title: 'Test Report', subtitle: 'this is a test report', tables: {'Table 1' => [['One','Two','Three'],[1,2,3]]}} end |
Instance Method Details
#displays_all_formats?(*formats) ⇒ Boolean
25 26 27 28 29 30 31 32 |
# File 'app/models/meta_reports/base.rb', line 25 def displays_all_formats?(*formats) has_all = true ([*formats] & FORMATS).each do |format| i = FORMATS.index(format.to_s) has_any = false if formats_mask[i] != 1 end has_all end |
#displays_any_format?(*formats) ⇒ Boolean
34 35 36 37 38 39 40 41 |
# File 'app/models/meta_reports/base.rb', line 34 def displays_any_format?(*formats) has_any = false ([*formats] & FORMATS).each do |format| i = FORMATS.index(format.to_s) has_any = true if formats_mask[i] == 1 end has_any end |
#format?(format) ⇒ Boolean
51 52 53 54 |
# File 'app/models/meta_reports/base.rb', line 51 def format?(format) i = FORMATS.index(format.to_s) i ? (formats_mask[i] == 1) : nil end |
#formats ⇒ Object
47 48 49 |
# File 'app/models/meta_reports/base.rb', line 47 def formats FORMATS.reject { |r| (formats_mask || 0)[FORMATS.index(r)].zero? } end |
#formats=(formats) ⇒ Object
43 44 45 |
# File 'app/models/meta_reports/base.rb', line 43 def formats=(formats) self.formats_mask = ([*formats] & FORMATS).inject(0) { |sum,r| sum += 1 << FORMATS.index(r) } end |
#run(params) ⇒ Object
56 57 58 59 60 61 |
# File 'app/models/meta_reports/base.rb', line 56 def run(params) report = ::MetaReports::Report.send(name, params) report[:id] = "report_#{name}" report[:report] = self report end |
#view ⇒ Object
63 64 65 |
# File 'app/models/meta_reports/base.rb', line 63 def view ActiveRecord::Base.connection.execute("UPDATE meta_reports_reports SET views = views + 1 WHERE id = #{id}") end |