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',
}

Class Method Summary collapse

Instance Method Summary collapse

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

Returns:

  • (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

Returns:

  • (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

Returns:

  • (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

#formatsObject



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

#viewObject



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