Class: MetaReports::Base

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/meta_reports/base.rb

Direct Known Subclasses

Report

Constant Summary collapse

FORMATS =

Utility methods

%w[html pdf xlsx]
COLORS =
{
  even:                   'efefef',
  odd:                    'ffffff',
}
@@inline_css =
true

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.format_mask(format) ⇒ Object



20
21
22
# File 'app/models/meta_reports/base.rb', line 20

def self.format_mask(format)
  1 << (FORMATS.index(format.to_s) || -1)
end

.formats_mask(*formats) ⇒ Object



24
25
26
# File 'app/models/meta_reports/base.rb', line 24

def self.formats_mask(*formats)
  formats.inject(0) {|mask, format| mask | (1 << (FORMATS.index(format.to_s) || -1) )}
end

.helpersObject

Sorry, God doesn’t help self.helpers, which is why you need it



76
77
78
# File 'app/models/meta_reports/base.rb', line 76

def self.helpers
  ApplicationController.helpers
end

.test_report(params) ⇒ Object



10
11
12
# File 'app/models/meta_reports/base.rb', line 10

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

Returns:

  • (Boolean)


28
29
30
31
32
33
34
35
# File 'app/models/meta_reports/base.rb', line 28

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

Returns:

  • (Boolean)


37
38
39
40
41
42
43
44
# File 'app/models/meta_reports/base.rb', line 37

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

Returns:

  • (Boolean)


54
55
56
57
# File 'app/models/meta_reports/base.rb', line 54

def format?(format)
  i = FORMATS.index(format.to_s)
  i ? (formats_mask[i] == 1) : nil
end

#formatsObject



50
51
52
# File 'app/models/meta_reports/base.rb', line 50

def formats
  FORMATS.reject { |r| (formats_mask || 0)[FORMATS.index(r)].zero? }
end

#formats=(formats) ⇒ Object



46
47
48
# File 'app/models/meta_reports/base.rb', line 46

def formats=(formats)
  self.formats_mask = ([*formats] & FORMATS).inject(0) { |sum,r| sum += 1 << FORMATS.index(r) }
end

#run(params) ⇒ Object



59
60
61
62
63
64
# File 'app/models/meta_reports/base.rb', line 59

def run(params)
  report = ::MetaReports::Report.send(name, params)
  report[:id] = "report_#{name}"
  report[:report] = self
  report
end

#viewObject



66
67
68
# File 'app/models/meta_reports/base.rb', line 66

def view
  ActiveRecord::Base.connection.execute("UPDATE meta_reports_reports SET views = views + 1 WHERE id = #{id}")
end