From 7d02b9f26da5eaf68f4aeca23911c066f68102bd Mon Sep 17 00:00:00 2001 From: Anton Date: Tue, 13 Sep 2022 09:59:11 +0200 Subject: [PATCH] Fix repository selection in reports [SCI-7167] --- app/assets/javascripts/reports/new.js | 10 +++++----- app/controllers/reports_controller.rb | 2 +- app/models/report.rb | 3 ++- app/services/report_actions/report_content.rb | 6 +++--- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/app/assets/javascripts/reports/new.js b/app/assets/javascripts/reports/new.js index 07b4f7e84..963a6123b 100644 --- a/app/assets/javascripts/reports/new.js +++ b/app/assets/javascripts/reports/new.js @@ -1020,7 +1020,7 @@ function reportHandsonTableConverter() { }); // Project content - reportData.project_content = { experiments: [], repositories: [] }; + reportData.project_content = { experiments: [] }; $.each($('.project-contents-container .experiment-element'), function(i, experiment) { let expCheckbox = $(experiment).find('.report-experiment-checkbox'); if (!expCheckbox.prop('checked') && !expCheckbox.prop('indeterminate')) return; @@ -1034,10 +1034,6 @@ function reportHandsonTableConverter() { reportData.project_content.experiments.push(experimentData); }); - $.each($('.task-contents-container .repositories-contents .repositories-setting:checked'), function(i, e) { - reportData.project_content.repositories.push(parseInt(e.value, 10)); - }); - // Settings reportData.report.settings.template = dropdownSelector.getValues('#templateSelector'); reportData.report.settings.all_tasks = $('.project-contents-container .select-all-my-modules-checkbox') @@ -1048,6 +1044,10 @@ function reportHandsonTableConverter() { $.each($('.task-contents-container .content-element .task-setting'), function(i, e) { reportData.report.settings.task[e.value] = e.checked; }); + reportData.report.settings.task.repositories = []; + $.each($('.task-contents-container .repositories-contents .repositories-setting:checked'), function(i, e) { + reportData.report.settings.task.repositories.push(parseInt(e.value, 10)); + }); reportData.report.settings.task.result_order = dropdownSelector.getValues('#taskResultsOrder'); diff --git a/app/controllers/reports_controller.rb b/app/controllers/reports_controller.rb index a82efe5c8..fdb5a1245 100644 --- a/app/controllers/reports_controller.rb +++ b/app/controllers/reports_controller.rb @@ -109,7 +109,7 @@ class ReportsController < ApplicationController @project_contents = { experiments: @report.report_elements.order(:position).experiment.pluck(:experiment_id), my_modules: @report.report_elements.order(:position).my_module.pluck(:my_module_id), - repositories: @report.report_elements.my_module_repository.distinct(:repository_id).pluck(:repository_id) + repositories: @report.settings.dig(:task, :repositories) } render :new end diff --git a/app/models/report.rb b/app/models/report.rb index f0f600a82..8f52463d2 100644 --- a/app/models/report.rb +++ b/app/models/report.rb @@ -53,7 +53,8 @@ class Report < ApplicationRecord text_results: true, result_comments: true, result_order: 'atoz', - activities: true + activities: true, + repositories: [] } }.freeze diff --git a/app/services/report_actions/report_content.rb b/app/services/report_actions/report_content.rb index 723b7f847..e5d0f3efa 100644 --- a/app/services/report_actions/report_content.rb +++ b/app/services/report_actions/report_content.rb @@ -14,9 +14,7 @@ module ReportActions @element_position = 0 @report = report @template_values = template_values - @repositories = report.project - .assigned_repositories_and_snapshots - .select { |repository| @content['repositories'].include?(repository.id) } + @repositories = @settings.dig(:task, :repositories) end def save_with_content @@ -84,6 +82,8 @@ module ReportActions my_module_element = save_element!({ 'my_module_id' => my_module.id }, :my_module, experiment_element) my_module.live_and_snapshot_repositories_list.each do |repository| + next unless @repositories.include?(repository.id) + save_element!( { 'my_module_id' => my_module.id, 'repository_id' => repository.id }, :my_module_repository,