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: '/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

  if dimension < @dimensions.size
    xml << render(partial: '/drilldown/excel_summary_total_row', locals: {
                    result: result, headers: headers.dup, dimension: 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: '/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, dimension: dimension })
  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) 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
  "#{controller.c_target_class} #{I18n.t(@search.select_value.downcase,
                                         default: @search.select_value.to_s.titleize)}" +
    (@dimensions && @dimensions.any? ? " by #{@dimensions.map { |d| d[:pretty_name] }.join(' and ')}" : '')
end