diff --git a/lib/reporting/report_headers_builder.rb b/lib/reporting/report_headers_builder.rb index 7d3a6b8e29..e52a7a6792 100644 --- a/lib/reporting/report_headers_builder.rb +++ b/lib/reporting/report_headers_builder.rb @@ -9,7 +9,7 @@ module Reporting end def table_headers - report.columns.keys.filter{ |key| !key.in?(fields_to_hide) }.map do |key| + report.columns.keys.filter{ |key| key.in?(fields_to_show) }.map do |key| translate_header(key) end end @@ -18,12 +18,15 @@ module Reporting report.columns.keys.map { |key| [translate_header(key), key] } end - def fields_to_hide - if report.display_header_row? - report.formatted_rules.map { |rule| rule[:fields_used_in_header] }.flatten.reject(&:blank?) - else - [] - end.concat(params_fields_to_hide) + def fields_to_show + fields_in_headers = if report.display_header_row? + report.formatted_rules.map { |rule| + rule[:fields_used_in_header] + }.flatten.reject(&:blank?) + else + [] + end + params_fields_to_show - fields_in_headers end private @@ -38,8 +41,8 @@ module Reporting Spree::Money.currency_symbol end - def params_fields_to_hide - report.params[:fields_to_hide]&.map(&:to_sym) || [] + def params_fields_to_show + report.params[:fields_to_show]&.map(&:to_sym) || report.columns.keys end end end diff --git a/lib/reporting/report_row_builder.rb b/lib/reporting/report_row_builder.rb index 96683138e1..88eb1a1966 100644 --- a/lib/reporting/report_row_builder.rb +++ b/lib/reporting/report_row_builder.rb @@ -27,7 +27,7 @@ module Reporting end def slice_and_format_row(row) - result = row.to_h.reject { |k, _v| k.in?(report.fields_to_hide) } + result = row.to_h.select { |k, _v| k.in?(report.fields_to_show) } unless report.raw_render? result = result.map { |k, v| [k, format_cell(v, k)] }.to_h end diff --git a/lib/reporting/report_template.rb b/lib/reporting/report_template.rb index de8f291d0f..7ecc0484be 100644 --- a/lib/reporting/report_template.rb +++ b/lib/reporting/report_template.rb @@ -9,7 +9,7 @@ module Reporting delegate :raw_render?, :html_render?, :display_header_row?, :display_summary_row?, to: :renderer delegate :rows, :table_rows, :grouped_data, to: :rows_builder - delegate :available_headers, :table_headers, :fields_to_hide, to: :headers_builder + delegate :available_headers, :table_headers, :fields_to_show, to: :headers_builder delegate :formatted_rules, :header_option?, :summary_row_option?, to: :ruler diff --git a/spec/lib/reports/report_spec.rb b/spec/lib/reports/report_spec.rb index c5d31dc369..790329f21f 100644 --- a/spec/lib/reports/report_spec.rb +++ b/spec/lib/reports/report_spec.rb @@ -101,8 +101,8 @@ module Reporting check_report end - describe "fields_to_hide" do - let(:params) { { fields_to_hide: [:product] } } + describe "fields_to_show" do + let(:params) { { fields_to_show: [:hub, :price] } } it "works" do @expected_headers = ['Hub', 'Price'] @@ -263,7 +263,7 @@ module Reporting }] end - let(:params) { { fields_to_hide: [:customer], report_format: 'json' } } + let(:params) { { fields_to_show: [:hub, :quantity], report_format: 'json' } } it "works" do @expetec_rows = [