mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-24 20:36:49 +00:00
105 lines
2.3 KiB
Ruby
105 lines
2.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module ReportsActions
|
|
extend ActiveSupport::Concern
|
|
|
|
def reports
|
|
Reporting::Reports::List.all
|
|
end
|
|
|
|
private
|
|
|
|
def authorize_report
|
|
authorize! report_type.to_sym, :report
|
|
end
|
|
|
|
def report_class
|
|
return if report_type.blank?
|
|
|
|
report_loader.report_class
|
|
end
|
|
|
|
def report_loader
|
|
@report_loader ||= ::Reporting::ReportLoader.new(report_type, report_subtype)
|
|
end
|
|
|
|
def report_type
|
|
params[:report_type]
|
|
end
|
|
|
|
def report_subtypes
|
|
reports[report_type.to_sym] || []
|
|
end
|
|
|
|
def report_subtypes_codes
|
|
report_subtypes.map(&:second).map(&:to_s)
|
|
end
|
|
|
|
def report_subtype
|
|
params[:report_subtype] || report_subtypes_codes.first
|
|
end
|
|
|
|
def report_title
|
|
if report_subtype
|
|
report_subtype_title
|
|
else
|
|
I18n.t(:name, scope: [:admin, :reports, report_type])
|
|
end
|
|
end
|
|
|
|
def report_subtype_title
|
|
report_subtypes.select { |_name, key| key.to_sym == report_subtype.to_sym }.first[0]
|
|
end
|
|
|
|
def ransack_params
|
|
raw_params[:q]
|
|
end
|
|
|
|
def report_format
|
|
params[:report_format].presence || "html"
|
|
end
|
|
|
|
def report_filename
|
|
"#{report_type || action_name}_#{file_timestamp}.#{report_format}"
|
|
end
|
|
|
|
def file_timestamp
|
|
Time.zone.now.strftime("%Y%m%d")
|
|
end
|
|
|
|
def i18n_scope
|
|
'admin.reports'
|
|
end
|
|
|
|
def rendering_options
|
|
@rendering_options ||= ReportRenderingOptions.where(
|
|
user: spree_current_user,
|
|
report_type:,
|
|
report_subtype:
|
|
).first_or_create do |report_rendering_options|
|
|
report_rendering_options.options = {
|
|
fields_to_show: if request.get?
|
|
@report.columns.keys -
|
|
@report.fields_to_hide
|
|
else
|
|
params[:fields_to_show]
|
|
end,
|
|
display_metadata_rows: false,
|
|
display_summary_row: request.get?,
|
|
display_header_row: false
|
|
}
|
|
end
|
|
end
|
|
|
|
def update_rendering_options
|
|
rendering_options.update(
|
|
options: {
|
|
fields_to_show: params[:fields_to_show],
|
|
display_metadata_rows: params[:display_metadata_rows].present?,
|
|
display_summary_row: params[:display_summary_row].present?,
|
|
display_header_row: params[:display_header_row].present?
|
|
}
|
|
)
|
|
end
|
|
end
|