Module: SimpleDrilldown::Helper
- Defined in:
- lib/simple_drilldown/helper.rb
Overview
View helper for SimpleDrilldown
Instance Method Summary collapse
- #caption ⇒ Object
- #excel_summary_row(result, parent_result = nil, dimension = 0, headers = []) ⇒ Object
- #subcaption ⇒ Object
- #summary_row(result, parent_result = nil, dimension = 0, headers = [], new_row = true) ⇒ Object
- #value_label(dimension_index, value) ⇒ Object
Instance Method Details
#caption ⇒ Object
13 14 15 16 17 |
# File 'lib/simple_drilldown/helper.rb', line 13 def 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 |
#subcaption ⇒ Object
19 20 21 |
# File 'lib/simple_drilldown/helper.rb', line 19 def @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 |