mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-03-04 19:53:19 +08:00
Merge pull request #3397 from okriuchykhin/ok_SCI_5831
Fix repositories selection in report wizard and deleted repositories handling [SCI-5831]
This commit is contained in:
commit
945d5ea6c6
9 changed files with 44 additions and 69 deletions
|
@ -975,7 +975,7 @@ function reportHandsonTableConverter() {
|
|||
reportData.report = {
|
||||
name: $('.report-name').val(),
|
||||
description: $('#projectDescription').val(),
|
||||
settings: { task: { protocol: {} }, deleted_repositories: [] }
|
||||
settings: { task: { protocol: {} } }
|
||||
};
|
||||
// Project
|
||||
reportData.project_id = dropdownSelector.getValues('#projectSelector');
|
||||
|
@ -1046,9 +1046,6 @@ function reportHandsonTableConverter() {
|
|||
$.each($('.task-contents-container .content-element .task-setting'), function(i, e) {
|
||||
reportData.report.settings.task[e.value] = e.checked;
|
||||
});
|
||||
$.each($('.task-contents-container .repositories-contents .deleted-repositories-setting:checked'), function(i, e) {
|
||||
reportData.report.settings.deleted_repositories.push(parseInt(e.value, 10));
|
||||
});
|
||||
|
||||
reportData.report.settings.task.result_order = dropdownSelector.getValues('#taskResultsOrder');
|
||||
|
||||
|
|
|
@ -25,12 +25,11 @@ class ReportsController < ApplicationController
|
|||
before_action :load_vars, only: %i(edit update document_preview generate_pdf generate_docx status
|
||||
save_pdf_to_inventory_modal save_pdf_to_inventory_item)
|
||||
before_action :load_vars_nested, only: BEFORE_ACTION_METHODS
|
||||
before_action :load_visible_projects, only: %i(new edit)
|
||||
before_action :load_wizard_vars, only: %i(new edit)
|
||||
before_action :load_available_repositories, only: %i(index save_pdf_to_inventory_modal available_repositories)
|
||||
|
||||
before_action :check_manage_permissions, only: BEFORE_ACTION_METHODS
|
||||
before_action :switch_team_with_param, only: :index
|
||||
before_action :load_repositories, only: %i(new edit)
|
||||
|
||||
after_action :generate_pdf_report, only: %i(create update generate_pdf)
|
||||
|
||||
|
@ -112,7 +111,6 @@ class ReportsController < ApplicationController
|
|||
|
||||
def edit
|
||||
@edit = true
|
||||
@templates = Extends::REPORT_TEMPLATES
|
||||
@active_template = @report.settings[:template]
|
||||
@report.settings = Report::DEFAULT_SETTINGS if @report.settings.blank?
|
||||
|
||||
|
@ -496,16 +494,6 @@ class ReportsController < ApplicationController
|
|||
include StringUtility
|
||||
AvailableRepository = Struct.new(:id, :name)
|
||||
|
||||
def load_repositories
|
||||
@repositories = Repository.accessible_by_teams(current_team).order(:name)
|
||||
@deleted_repositories = RepositorySnapshot.where(team: current_team)
|
||||
.group(:parent_id, :name)
|
||||
.where.not(
|
||||
original_repository: Repository.accessible_by_teams(current_team)
|
||||
)
|
||||
.select(:parent_id, :name)
|
||||
end
|
||||
|
||||
def load_vars
|
||||
@report = current_team.reports.find_by(id: params[:id])
|
||||
render_404 unless @report
|
||||
|
@ -518,12 +506,14 @@ class ReportsController < ApplicationController
|
|||
render_403 unless can_read_project?(@project)
|
||||
end
|
||||
|
||||
def check_manage_permissions
|
||||
render_403 unless can_manage_reports?(@project.team)
|
||||
end
|
||||
|
||||
def load_visible_projects
|
||||
render_404 unless current_team
|
||||
def load_wizard_vars
|
||||
@templates = Extends::REPORT_TEMPLATES
|
||||
live_repositories = Repository.accessible_by_teams(current_team)
|
||||
snapshots_of_deleted = RepositorySnapshot.left_outer_joins(:original_repository)
|
||||
.where(team: current_team)
|
||||
.where.not(original_repository: live_repositories)
|
||||
.select('DISTINCT ON ("repositories"."parent_id") "repositories".*')
|
||||
@repositories = (live_repositories + snapshots_of_deleted).sort_by { |r| r.name.downcase }
|
||||
@visible_projects = Project.active
|
||||
.viewable_by_user(current_user, current_team)
|
||||
.joins(experiments: :my_modules)
|
||||
|
@ -532,6 +522,10 @@ class ReportsController < ApplicationController
|
|||
.select(:id, :name)
|
||||
end
|
||||
|
||||
def check_manage_permissions
|
||||
render_403 unless can_manage_reports?(@project.team)
|
||||
end
|
||||
|
||||
def load_available_repositories
|
||||
@available_repositories = []
|
||||
repositories = Repository.active
|
||||
|
|
|
@ -45,6 +45,7 @@ module ReportsHelper
|
|||
end
|
||||
children_html.safe_concat render_new_element(false)
|
||||
end
|
||||
locals[:report_element] = element
|
||||
locals[:children] = children_html
|
||||
|
||||
if provided_locals[:export_all]
|
||||
|
@ -116,19 +117,15 @@ module ReportsHelper
|
|||
)
|
||||
end
|
||||
|
||||
def assigned_repository_or_snapshot(my_module, element_id, snapshot, repository)
|
||||
if element_id
|
||||
repository = Repository.accessible_by_teams(my_module.experiment.project.team).find_by(id: element_id)
|
||||
# Check for default set snapshots when repository still exists
|
||||
if repository
|
||||
selected_snapshot = repository.repository_snapshots.where(my_module: my_module).find_by(selected: true)
|
||||
repository = selected_snapshot if selected_snapshot
|
||||
end
|
||||
repository ||= RepositorySnapshot.joins(my_module: { experiment: :project })
|
||||
.where(my_module: { experiments: { project: my_module.experiment.project } })
|
||||
.find_by(id: element_id)
|
||||
def assigned_repository_or_snapshot(my_module, repository)
|
||||
if repository.is_a?(RepositorySnapshot)
|
||||
return my_module.repository_snapshots.find_by(parent_id: repository.parent_id, selected: true)
|
||||
end
|
||||
repository || snapshot
|
||||
|
||||
return nil unless my_module.assigned_repositories.exists?(id: repository.id)
|
||||
|
||||
selected_snapshot = repository.repository_snapshots.find_by(my_module: my_module, selected: true)
|
||||
selected_snapshot || repository
|
||||
end
|
||||
|
||||
def assigned_repositories_in_project_list(project)
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
module ReportActions
|
||||
class ReportContent
|
||||
include Canaid::Helpers::PermissionsHelper
|
||||
include ReportsHelper
|
||||
|
||||
MY_MODULE_ADDONS_ELEMENTS = []
|
||||
|
||||
|
@ -81,7 +82,8 @@ module ReportActions
|
|||
my_module_element = save_element!({ 'my_module_id' => my_module.id }, :my_module, experiment_element)
|
||||
|
||||
@repositories.each do |repository|
|
||||
next unless my_module.live_and_snapshot_repositories_list.pluck(:id).include?(repository.id)
|
||||
repository = assigned_repository_or_snapshot(my_module, repository)
|
||||
next unless repository
|
||||
|
||||
save_element!(
|
||||
{ 'my_module_id' => my_module.id, 'repository_id' => repository.id },
|
||||
|
|
|
@ -88,11 +88,6 @@ module Reports::Docx::DrawMyModule
|
|||
end
|
||||
end
|
||||
|
||||
@settings['deleted_repositories']&.each do |repo|
|
||||
snapshot = my_module.repository_snapshots.where(parent_id: repo).find_by(selected: true)
|
||||
draw_my_module_repository(nil, my_module, snapshot) if snapshot
|
||||
end
|
||||
|
||||
@docx.p
|
||||
subject.children.active.each do |child|
|
||||
public_send("draw_#{child.type_of}", child)
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Reports::Docx::DrawMyModuleRepository
|
||||
def draw_my_module_repository(subject, my_module = nil, snapshot = nil)
|
||||
my_module ||= subject&.my_module
|
||||
repository = subject&.repository
|
||||
repository = assigned_repository_or_snapshot(my_module, repository&.id, nil, snapshot)
|
||||
def draw_my_module_repository(subject)
|
||||
my_module = subject.my_module
|
||||
repository = subject.repository
|
||||
repository = assigned_repository_or_snapshot(my_module, repository)
|
||||
return unless can_read_experiment?(@user, my_module.experiment) &&
|
||||
(can_read_repository?(@user, repository) || repository.is_a?(RepositorySnapshot))
|
||||
(repository.is_a?(RepositorySnapshot) || can_read_repository?(@user, repository))
|
||||
|
||||
repository_data = my_module.repository_docx_json(repository)
|
||||
|
||||
|
|
|
@ -98,11 +98,6 @@
|
|||
<%= render partial: 'reports/elements/my_module_result_text_element.html.erb', locals: { result: result, export_all: export_all } %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
<% @settings['deleted_repositories']&.each do |repo| %>
|
||||
<% snapshot = my_module.repository_snapshots.where(parent_id: repo).find_by(selected: true) %>
|
||||
<%= render partial: 'reports/elements/my_module_repository_element.html.erb', locals: { repository_snapshot: snapshot, export_all: export_all, my_module: my_module } if snapshot %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<% if defined?(children) %>
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
<% my_module ||= @my_module %>
|
||||
<% repository ||= nil %>
|
||||
<% repository_snapshot ||= nil %>
|
||||
<% repository ||= report_element.repository %>
|
||||
<% element_id ||= repository&.id %>
|
||||
<% repository ||= assigned_repository_or_snapshot(my_module, element_id, repository, repository_snapshot) %>
|
||||
<% repository ||= assigned_repository_or_snapshot(my_module, repository) %>
|
||||
<% timestamp = Time.current + 1.year - 1.days %>
|
||||
<% rows_json = my_module.repository_json_hot(repository, :desc) %>
|
||||
<div class="report-element report-module-repository-element"
|
||||
|
|
|
@ -69,31 +69,27 @@
|
|||
<% @repositories.each do |repository| %>
|
||||
<li>
|
||||
<span class="sci-checkbox-container">
|
||||
<input type="checkbox" class="sci-checkbox repositories-setting" value="<%= repository.id %>" <%= 'checked' if report.new_record? || @project_contents[:repositories].include?(repository.id) %> />
|
||||
<input type="checkbox"
|
||||
class="sci-checkbox repositories-setting"
|
||||
value="<%= repository.id %>"
|
||||
<%= 'checked' if report.new_record? ||
|
||||
@project_contents[:repositories].include?(repository.id) ||
|
||||
(repository.is_a?(Repository) && repository.repository_snapshots.exists?(id: @project_contents[:repositories])) %> />
|
||||
<span class="sci-checkbox-label"></span>
|
||||
</span>
|
||||
<%= repository.name %>
|
||||
<% unless repository.active? %>
|
||||
<% if repository.archived? %>
|
||||
<span class="archived">
|
||||
<%= t("projects.reports.wizard.third_step.archived") %>
|
||||
</span>
|
||||
<% elsif repository.is_a?(RepositorySnapshot) %>
|
||||
<span class="deleted">
|
||||
<%= t("projects.reports.wizard.third_step.deleted") %>
|
||||
</span>
|
||||
<% end %>
|
||||
<div class="divider"></div>
|
||||
</li>
|
||||
<% end %>
|
||||
<% @deleted_repositories.each do |repository| %>
|
||||
<li>
|
||||
<span class="sci-checkbox-container">
|
||||
<input type="checkbox" class="sci-checkbox deleted-repositories-setting" value="<%= repository.parent_id %>" <%= 'checked' if report.new_record? || report.settings.dig(:deleted_repositories).include?(repository.parent_id) %> />
|
||||
<span class="sci-checkbox-label"></span>
|
||||
</span>
|
||||
<%= repository.name %>
|
||||
<span class="deleted">
|
||||
<%= t("projects.reports.wizard.third_step.deleted") %>
|
||||
</span>
|
||||
<div class="divider"></div>
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
Loading…
Reference in a new issue