From e25f4b1daabeda53ba85f3a7a225d9a2322cf095 Mon Sep 17 00:00:00 2001 From: Mohamed ABDELLANI Date: Thu, 24 Nov 2022 10:26:51 +0100 Subject: [PATCH] integrate ReportRenderingOptions in the View/Controller --- app/controllers/admin/reports_controller.rb | 10 +----- app/controllers/concerns/reports_actions.rb | 33 +++++++++++++++++++ app/models/spree/user.rb | 2 +- .../reports/_rendering_options.html.haml | 6 ++-- 4 files changed, 38 insertions(+), 13 deletions(-) diff --git a/app/controllers/admin/reports_controller.rb b/app/controllers/admin/reports_controller.rb index 9c88a0bd09..cfdabcbbd7 100644 --- a/app/controllers/admin/reports_controller.rb +++ b/app/controllers/admin/reports_controller.rb @@ -48,15 +48,7 @@ module Admin else I18n.t(:name, scope: [:admin, :reports, @report_type]) end - - # Initialize data - params[:display_summary_row] = true if request.get? - @params_fields_to_show = if request.get? - @report.columns.keys - @report.fields_to_hide - else - params[:fields_to_show] - end - + @rendering_options = rendering_options @data = Reporting::FrontendData.new(spree_current_user) end end diff --git a/app/controllers/concerns/reports_actions.rb b/app/controllers/concerns/reports_actions.rb index 6cd9e5157c..4f6a8994c4 100644 --- a/app/controllers/concerns/reports_actions.rb +++ b/app/controllers/concerns/reports_actions.rb @@ -62,4 +62,37 @@ module ReportsActions def i18n_scope 'admin.reports' end + + def rendering_options + @rendering_options ||= ReportRenderingOptions.where( + user: spree_current_user, + report_type: report_type, + report_subtype: 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_summary_row: request.get?, + display_header_row: false + } + end + update_rendering_options + @rendering_options + end + + def update_rendering_options + return unless request.post? + + @rendering_options.update( + options: { + fields_to_show: params[:fields_to_show], + display_summary_row: params[:display_summary_row].present?, + display_header_row: params[:display_header_row].present? + } + ) + end end diff --git a/app/models/spree/user.rb b/app/models/spree/user.rb index 2f29c28a65..e95df0fcfd 100644 --- a/app/models/spree/user.rb +++ b/app/models/spree/user.rb @@ -37,7 +37,7 @@ module Spree foreign_key: :owner_id, inverse_of: :owner has_many :customers has_many :credit_cards - has_many :report_rendering_options, class_name:"::ReportRenderingOptions",dependent: :destroy + has_many :report_rendering_options, class_name: "::ReportRenderingOptions", dependent: :destroy accepts_nested_attributes_for :enterprise_roles, allow_destroy: true accepts_nested_attributes_for :bill_address diff --git a/app/views/admin/reports/_rendering_options.html.haml b/app/views/admin/reports/_rendering_options.html.haml index 8ba2a4a1ba..dc00db24d0 100644 --- a/app/views/admin/reports/_rendering_options.html.haml +++ b/app/views/admin/reports/_rendering_options.html.haml @@ -16,16 +16,16 @@ .omega.fourteen.columns - if @report.header_option? %span.inline-checkbox{ style: "margin-right: 1rem;" } - = check_box_tag :display_header_row, true, params[:display_header_row] + = check_box_tag :display_header_row, true, @rendering_options.options[:display_header_row] = label_tag :display_header_row, t(".header_row") - if @report.summary_row_option? %span.inline-checkbox - = check_box_tag :display_summary_row, true, params[:display_summary_row], { "data-csv-select-target": "checkbox" } + = check_box_tag :display_summary_row, true, @rendering_options.options[:display_summary_row], { "data-csv-select-target": "checkbox" } = label_tag :display_summary_row, t(".summary_row"), { "data-csv-select-target": "label" } - if @report.available_headers.present? .row .alpha.two.columns= label_tag nil, t(:report_columns) .omega.fourteen.columns - = render MultipleCheckedSelectComponent.new(name: "fields_to_show", options: @report.available_headers, selected: @params_fields_to_show) + = render MultipleCheckedSelectComponent.new(name: "fields_to_show", options: @report.available_headers, selected: @rendering_options.options[:fields_to_show]) \ No newline at end of file