Module: SimpleDrilldown::Helper

Defined in:
lib/simple_drilldown/helper.rb

Overview

View helper for SimpleDrilldown

Instance Method Summary collapse

Instance Method Details

#captionObject



13
14
15
16
17
# File 'lib/simple_drilldown/helper.rb', line 13

def caption
  result = @search.title || "#{controller.c_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



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
# File 'lib/simple_drilldown/helper.rb', line 39

def excel_summary_row(result, parent_result = nil, dimension = 0, headers = [])
  xml = +''
  if result[:rows]
    significant_rows = result[:rows].reject { |r| r[:row_count].zero? }
    significant_rows.each_with_index do |r, i|
      sub_headers = if i.zero?
                      if dimension.zero?
                        headers
                      else
                        headers + [{ value: result[:value], display_row_count: result[:nodes] + result[:row_count] * (@search.list ? 1 : 0) }]
                      end
                    else
                      [] # [{: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 })

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

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

#subcaptionObject



19
20
21
# File 'lib/simple_drilldown/helper.rb', line 19

def subcaption
  @search.title || @filter_text.blank? ? '' : "for #{@filter_text}"
end

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



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

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].reject { |r| r[:row_count].zero? }
    significant_rows.each_with_index do |r, i|
      html << summary_row(r, result, dimension + 1, sub_headers, i.positive?)
    end
  elsif @search.list
    html << render(partial: '/drilldown/record_list', locals: { result: result })
  end
  html << render(partial: '/drilldown/summary_total_row', locals: { result: result, parent_result: parent_result, headers: headers.dup, dimension: dimension }) if dimension < @dimensions.size

  html
end

#value_label(dimension_index, value) ⇒ Object



6
7
8
9
10
11
# File 'lib/simple_drilldown/helper.rb', line 6

def value_label(dimension_index, value)
  dimension = @dimensions[dimension_index]
  return nil if dimension.nil?

  h(dimension[:label_method] ? dimension[:label_method].call(value) : value)
end