diff --git a/app/controllers/report_controller/reports/editor.rb b/app/controllers/report_controller/reports/editor.rb index 7fb4f65e9e6..81128d7d1b9 100644 --- a/app/controllers/report_controller/reports/editor.rb +++ b/app/controllers/report_controller/reports/editor.rb @@ -1405,17 +1405,9 @@ def set_form_vars def cb_entities_by_provider @edit[:cb_providers] = { :container_project => {}, :container_image => {} } - @cb_entities_by_provider_id = { :container_project => {}, :container_image => {} } ManageIQ::Providers::ContainerManager.includes(:container_projects, :container_images).all.each do |provider| @edit[:cb_providers][:container_project][provider.name] = provider.id @edit[:cb_providers][:container_image][provider.name] = provider.id - @cb_entities_by_provider_id[provider.id] = {:container_project => {}, :container_image => {}} - provider.container_projects.all.each do |project| - @cb_entities_by_provider_id[provider.id][:container_project][project.id] = project.name - end - provider.container_images.all.each do |image| - @cb_entities_by_provider_id[provider.id][:container_image][image.id] = image.name - end end end diff --git a/app/helpers/report_helper.rb b/app/helpers/report_helper.rb index 3fcadcf1691..c2fe74455b2 100644 --- a/app/helpers/report_helper.rb +++ b/app/helpers/report_helper.rb @@ -1,4 +1,6 @@ module ReportHelper + include_concern 'Editor' + STYLE_CLASSES = { :miq_rpt_red_text => _("Red Text"), :miq_rpt_red_bg => _("Red Background"), diff --git a/app/helpers/report_helper/editor.rb b/app/helpers/report_helper/editor.rb new file mode 100644 index 00000000000..e58d9164bd1 --- /dev/null +++ b/app/helpers/report_helper/editor.rb @@ -0,0 +1,12 @@ +module ReportHelper::Editor + def cb_entities_by_provider_id(provider_id, entity_type) + provider = ManageIQ::Providers::ContainerManager.find(provider_id) + return [] if provider.nil? + case entity_type.underscore.to_sym + when :container_project + provider.container_projects.order(:name).pluck(:name, :id) + when :container_image + provider.container_images.order(:name).pluck(:name, :id) + end + end +end diff --git a/app/views/report/_form_filter_chargeback.html.haml b/app/views/report/_form_filter_chargeback.html.haml index 45a98f1b84b..ca0dd8aa23e 100644 --- a/app/views/report/_form_filter_chargeback.html.haml +++ b/app/views/report/_form_filter_chargeback.html.haml @@ -105,8 +105,7 @@ .col-md-8 - opts = [["<#{_('Choose %{entity}')}>" % {:entity => ui_lookup(:model => @edit[:new][:cb_model])}, nil], [_("All %{chargeback_type}") % {:chargeback_type => ui_lookup(:tables => @edit[:new][:cb_model].to_s)}, :all]] - - if @cb_entities_by_provider_id[@edit[:new][:cb_provider_id].to_i].present? - - opts += Array(@cb_entities_by_provider_id[@edit[:new][:cb_provider_id].to_i][@edit[:new][:cb_model].underscore.to_sym].invert).sort_by { |a| a.first.downcase } + - opts += cb_entities_by_provider_id(@edit[:new][:cb_provider_id].to_i, @edit[:new][:cb_model]) = select_tag('cb_entity_id', options_for_select(opts, @edit[:new][:cb_entity_id]), :class => "selectpicker") diff --git a/spec/controllers/report_controller_spec.rb b/spec/controllers/report_controller_spec.rb index a2d64299ae4..07c994a9721 100644 --- a/spec/controllers/report_controller_spec.rb +++ b/spec/controllers/report_controller_spec.rb @@ -1285,28 +1285,6 @@ expect(MiqReport.last.db).to eq(chosen_model) end - it "cb_entities_by_provider_id is set for chargeback based reports" do - post :x_button, :params => {:pressed => "miq_report_new"} - post :form_field_changed, :params => {:id => "new", :chosen_model => "ChargebackContainerImage"} - post :form_field_changed, :params => {:id => "new", :title => "test"} - post :form_field_changed, :params => {:id => "new", :name => "test"} - post :form_field_changed, :params => {:button => "right", :available_fields => ["ChargebackContainerImage-archived"]} - - post :miq_report_edit, :params => {:button => "add"} - expect(assigns(:cb_entities_by_provider_id)).not_to be_nil - end - - it "cb_entities_by_provider_id is not set for not chargeback reports" do - post :x_button, :params => {:pressed => "miq_report_new"} - post :form_field_changed, :params => {:id => "new", :chosen_model => "Host"} - post :form_field_changed, :params => {:id => "new", :title => "test"} - post :form_field_changed, :params => {:id => "new", :name => "test"} - post :form_field_changed, :params => {:button => "right", :available_fields => ["Host-name"]} - - post :miq_report_edit, :params => {:button => "add"} - expect(assigns(:cb_entities_by_provider_id)).to be_nil - end - it 'allows user to remove columns while editing' do post :x_button, :params => {:pressed => 'miq_report_new'} post :form_field_changed, :params => {:id => 'new', :chosen_model => chosen_model}