Module: SimpleDrilldown::DrilldownHelper

Defined in:
lib/simple_drilldown/drilldown_helper.rb

Instance Method Summary collapse

Instance Method Details

#captionObject



10
11
12
13
14
# File 'lib/simple_drilldown/drilldown_helper.rb', line 10

def caption
  result = @search.title ? @search.title : "#{@target_class} #{t(@search.select_value.downcase)}" +
    ((@dimensions && @dimensions.any?) ? ' by ' + @dimensions.map { |d| d[:pretty_name] }.join(' and ') : '')
  result.gsub('$date', [*@search.filter[:calendar_date]].uniq.join(' - '))
end

#excel_summary_row(result, parent_result = nil, dimension = 0, headers = []) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/simple_drilldown/drilldown_helper.rb', line 38

def excel_summary_row(result, parent_result = nil, dimension = 0, headers = [])
  xml = ''
  if result[:rows]
    significant_rows = result[:rows].select { |r| r[:row_count] != 0 }
    significant_rows.each_with_index do |r, i|
      if i == 0
        if dimension == 0
          sub_headers = headers
        else
          sub_headers = headers + [{ :value => result[:value], :display_row_count => result[:nodes] + result[:row_count] * (@search.list ? 1 : 0) }]
        end
      else
        sub_headers = [] # [{:value => result[:value], :row_count => result[:row_count]}]
      end
      xml << excel_summary_row(r, result, dimension + 1, sub_headers)
    end
  else
    xml << render(:partial => '/drilldown/excel_summary_row', :locals => { :result => result, :parent_result => parent_result, :headers => headers.dup, :dimension => dimension })

    if @search.list
      xml << render(:partial => '/drilldown/excel_record_list', :locals => { :result => result })
    end
  end

  if dimension < @dimensions.size
    xml << render(:partial => '/drilldown/excel_summary_total_row', :locals => { :result => result, :headers => headers.dup, :dimension => dimension })
  end
  xml
end

#subcaptionObject



16
17
18
# File 'lib/simple_drilldown/drilldown_helper.rb', line 16

def subcaption
  @search.title ? '' : @filter_text && @filter_text.size > 0 ? "for #{@filter_text}" : ''
end

#summary_row(result, parent_result = nil, dimension = 0, headers = [], new_row = true) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/simple_drilldown/drilldown_helper.rb', line 20

def summary_row(result, parent_result = nil, dimension = 0, headers = [], new_row = true)
  html = render(:partial => '/drilldown/summary_row', :locals => { :result => result, :parent_result => parent_result, :new_row => new_row, :dimension => dimension, :headers => headers, :with_results => !result[:rows] })
  if result[:rows]
    sub_headers = headers + [{ :value => result[:value], :display_row_count => result[:nodes] + result[:row_count] * (@search.list ? 1 : 0) }]
    significant_rows = result[:rows].select { |r| r[:row_count] != 0 }
    significant_rows.each_with_index do |r, i|
      html << summary_row(r, result, dimension + 1, sub_headers, i > 0)
    end
  elsif @search.list
    html << render(:partial => '/drilldown/record_list', :locals => { :result => result })
  end
  if dimension < @dimensions.size
    html << render(:partial => '/drilldown/summary_total_row', :locals => { :result => result, :parent_result => parent_result, :headers => headers.dup, :dimension => dimension })
  end

  html
end

#value_label(dimension_index, value) ⇒ Object



3
4
5
6
7
8
# File 'lib/simple_drilldown/drilldown_helper.rb', line 3

def value_label(dimension_index, value)
  return nil if @dimensions[dimension_index].nil?
  h(@dimensions[dimension_index][:label_method] ?
      @dimensions[dimension_index][:label_method].call(value) :
      value)
end