module SimpleDrilldown::Helper
View helper for SimpleDrilldown
Public Instance Methods
caption()
click to toggle source
# File lib/simple_drilldown/helper.rb, line 17 def caption result = @search.title || caption_txt result.gsub('$date', Array(@search.filter[:calendar_date]).uniq.join(' - ')) end
excel_summary_row(result, parent_result = nil, dimension = 0, headers = [])
click to toggle source
# File lib/simple_drilldown/helper.rb, line 53 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: '/simple_drilldown/excel_summary_row', locals: { result:, parent_result:, headers: headers.dup, dimension: }) xml << render(partial: '/simple_drilldown/excel_record_list', locals: { result: }) if @search.list end if dimension < @dimensions.size xml << render(partial: '/simple_drilldown/excel_summary_total_row', locals: { result:, headers: headers.dup, dimension: }) end xml end
subcaption()
click to toggle source
# File lib/simple_drilldown/helper.rb, line 22 def subcaption @search.title || @filter_text.blank? ? '' : "for #{@filter_text}" end
summary_row(result, parent_result = nil, dimension = 0, headers = [], new_row: true)
click to toggle source
# File lib/simple_drilldown/helper.rb, line 26 def summary_row(result, parent_result = nil, dimension = 0, headers = [], new_row: true) html = render(partial: '/simple_drilldown/summary_row', locals: { result:, parent_result:, new_row:, dimension:, 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, new_row: i.positive?) end elsif @search.list html << render(partial: '/simple_drilldown/record_list', locals: { result:, dimension: }) end if dimension < @dimensions.size html << render(partial: '/simple_drilldown/summary_total_row', locals: { result:, parent_result:, headers: headers.dup, dimension: }) end html end
value_label(dimension_index, value)
click to toggle source
EMXIF
# File lib/simple_drilldown/helper.rb, line 10 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
Private Instance Methods
caption_txt()
click to toggle source
# File lib/simple_drilldown/helper.rb, line 91 def caption_txt class_txt = controller.c_target_class && I18n.t(controller.c_target_class.name.underscore.to_sym, default: [controller.c_target_class.name.underscore.to_sym, controller.c_target_class.name.titleize]) value_txt = I18n.t(@search.select_value.downcase, default: @search.select_value.to_s.titleize) dimensions_txt = " by #{@dimensions.map { |d| d[:pretty_name] }.join(' and ')}" if @dimensions&.any? "#{class_txt} #{value_txt}#{dimensions_txt}" end