Merge pull request #5661 from okriuchykhin/ok_SCI_8710

Fix breadcrumbs for archived view mode [SCI-8710]
This commit is contained in:
artoscinote 2023-06-23 09:50:03 +02:00 committed by GitHub
commit f1876b4f59
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 40 additions and 23 deletions

View file

@ -12,17 +12,23 @@ module Breadcrumbs
@breadcrumbs_items = [] @breadcrumbs_items = []
folders = helpers.tree_ordered_parent_folders(current_folder) folders = helpers.tree_ordered_parent_folders(current_folder)
archived_branch = project&.archived? ||
current_folder&.archived? ||
(!project && params[:view_mode] == 'archived')
@breadcrumbs_items.push({ @breadcrumbs_items.push({
label: t('projects.index.breadcrumbs_root'), label: t('projects.index.breadcrumbs_root'),
url: projects_path(view_mode: project&.archived? ? :archived : :active), url: projects_path(view_mode: archived_branch ? :archived : :active),
archived: project&.archived? || (!project && params[:view_mode] == 'archived') archived: archived_branch
}) })
folders&.each do |project_folder| folders&.each do |project_folder|
archived_branch = project_folder.archived_branch?
@breadcrumbs_items.push({ @breadcrumbs_items.push({
label: project_folder.name, label: project_folder.name,
url: project_folder_path(project_folder) url: project_folder_path(project_folder,
view_mode: archived_branch ? :archived : :active),
archived: archived_branch
}) })
end end

View file

@ -21,7 +21,7 @@ module Navigator
{ {
id: folder.code, id: folder.code,
name: folder.name, name: folder.name,
url: projects_path(project_folder_id: folder.id, view_mode: archived ? 'archived' : 'active'), url: project_folder_path(folder, view_mode: archived ? 'archived' : 'active'),
archived: folder.archived, archived: folder.archived,
type: :folder, type: :folder,
has_children: folder.has_children, has_children: folder.has_children,
@ -173,27 +173,31 @@ module Navigator
my_modules my_modules
end end
def build_folder_tree(folder, children, archived = false) def build_folder_tree(folder, children)
archived = params[:archived] == 'true'
tree = fetch_projects(folder.parent_folder, archived).map { |i| project_serializer(i, archived) } + tree = fetch_projects(folder.parent_folder, archived).map { |i| project_serializer(i, archived) } +
fetch_project_folders(folder.parent_folder, archived).map { |i| folder_serializer(i, archived) } fetch_project_folders(folder.parent_folder, archived).map { |i| folder_serializer(i, archived) }
tree.find { |i| i[:id] == folder.code }[:children] = children tree.find { |i| i[:id] == folder.code }[:children] = children
tree = build_folder_tree(folder.parent_folder, tree, archived) if folder.parent_folder.present? tree = build_folder_tree(folder.parent_folder, tree) if folder.parent_folder.present?
tree tree
end end
def project_level_branch(object = nil, archived = false) def project_level_branch(object = nil)
archived = params[:archived] == 'true'
fetch_projects(object, archived) fetch_projects(object, archived)
.map { |i| project_serializer(i, archived) } + .map { |i| project_serializer(i, archived) } +
fetch_project_folders(object, archived) fetch_project_folders(object, archived)
.map { |i| folder_serializer(i, archived) } .map { |i| folder_serializer(i, archived) }
end end
def experiment_level_branch(object, archived = false) def experiment_level_branch(object)
archived = params[:archived] == 'true'
fetch_experiments(object, archived) fetch_experiments(object, archived)
.map { |i| experiment_serializer(i, archived) } .map { |i| experiment_serializer(i, archived) }
end end
def my_module_level_branch(experiment, archived = false) def my_module_level_branch(experiment)
archived = params[:archived] == 'true'
fetch_my_modules(experiment, archived) fetch_my_modules(experiment, archived)
.map { |i| my_module_serializer(i, archived) } .map { |i| my_module_serializer(i, archived) }
end end

View file

@ -6,16 +6,16 @@ module Navigator
before_action :check_read_permissions before_action :check_read_permissions
def show def show
my_modules = my_module_level_branch(@experiment, params[:archived] == 'true') my_modules = my_module_level_branch(@experiment)
render json: { items: my_modules } render json: { items: my_modules }
end end
def tree def tree
my_modules = my_module_level_branch(@experiment, params[:archived] == 'true') my_modules = my_module_level_branch(@experiment)
experiments = experiment_level_branch(@experiment, params[:archived] == 'true') experiments = experiment_level_branch(@experiment)
experiments.find { |i| i[:id] == @experiment.code }[:children] = my_modules experiments.find { |i| i[:id] == @experiment.code }[:children] = my_modules
tree = project_level_branch(@experiment.project, params[:archived] == 'true') tree = project_level_branch(@experiment.project)
tree.find { |i| i[:id] == @experiment.project.code }[:children] = experiments tree.find { |i| i[:id] == @experiment.project.code }[:children] = experiments
tree = build_folder_tree(@experiment.project.project_folder, tree) if @experiment.project.project_folder tree = build_folder_tree(@experiment.project.project_folder, tree) if @experiment.project.project_folder

View file

@ -6,11 +6,11 @@ module Navigator
before_action :check_read_permissions before_action :check_read_permissions
def tree def tree
my_modules = my_module_level_branch(@experiment, params[:archived] == 'true') my_modules = my_module_level_branch(@experiment)
experiments = experiment_level_branch(@experiment, params[:archived] == 'true') experiments = experiment_level_branch(@experiment)
experiments.find { |i| i[:id] == @experiment.code }[:children] = my_modules experiments.find { |i| i[:id] == @experiment.code }[:children] = my_modules
tree = project_level_branch(@experiment.project, params[:archived] == 'true') tree = project_level_branch(@experiment.project)
tree.find { |i| i[:id] == @experiment.project.code }[:children] = experiments tree.find { |i| i[:id] == @experiment.project.code }[:children] = experiments
tree = build_folder_tree(@experiment.project.project_folder, tree) if @experiment.project.project_folder tree = build_folder_tree(@experiment.project.project_folder, tree) if @experiment.project.project_folder

View file

@ -5,12 +5,12 @@ module Navigator
before_action :load_project_folder before_action :load_project_folder
def show def show
folder = project_level_branch(@project_folder, params[:archived] == 'true') folder = project_level_branch(@project_folder)
render json: { items: folder } render json: { items: folder }
end end
def tree def tree
tree = project_level_branch(@project_folder, params[:archived] == 'true') tree = project_level_branch(@project_folder)
tree = build_folder_tree(@project_folder, tree) tree = build_folder_tree(@project_folder, tree)
render json: { items: tree } render json: { items: tree }
end end

View file

@ -6,17 +6,17 @@ module Navigator
before_action :check_read_permissions, except: :index before_action :check_read_permissions, except: :index
def index def index
project_and_folders = project_level_branch(nil, params[:archived] == 'true') project_and_folders = project_level_branch(nil)
render json: { items: project_and_folders } render json: { items: project_and_folders }
end end
def show def show
experiments = experiment_level_branch(@project, params[:archived] == 'true') experiments = experiment_level_branch(@project)
render json: { items: experiments } render json: { items: experiments }
end end
def tree def tree
tree = project_level_branch(@project, params[:archived] == 'true') tree = project_level_branch(@project)
tree = build_folder_tree(@project.project_folder, tree) if @project.project_folder tree = build_folder_tree(@project.project_folder, tree) if @project.project_folder

View file

@ -571,7 +571,7 @@ class RepositoriesController < ApplicationController
def set_breadcrumbs_items def set_breadcrumbs_items
@breadcrumbs_items = [] @breadcrumbs_items = []
archived_branch = params[:archived] == 'true' || @repository&.archived? archived_branch = @repository&.archived? || (!@repository && params[:archived] == 'true')
@breadcrumbs_items.push({ @breadcrumbs_items.push({
label: t('breadcrumbs.inventories'), label: t('breadcrumbs.inventories'),

View file

@ -97,6 +97,13 @@ class ProjectFolder < ApplicationRecord
Project.where(project_folder: ProjectFolder.inner_folders(team, self) + [self]) Project.where(project_folder: ProjectFolder.inner_folders(team, self) + [self])
end end
def archived_branch?
return false if active? && parent_folder.blank?
return true if archived?
parent_folder.present? && parent_folder.archived_branch?
end
private private
def inherit_team_from_parent_folder def inherit_team_from_parent_folder

View file

@ -12,7 +12,7 @@
<span class="sci-checkbox-label"></span> <span class="sci-checkbox-label"></span>
</div> </div>
</div> </div>
<%= link_to project_folder_path(folder), <%= link_to folder.archived_branch? ? project_folder_path(folder, view_mode: :archived) : project_folder_path(folder),
class: 'project-folder-link', class: 'project-folder-link',
data: { data: {
projects_cards_url: project_folder_cards_url(folder), projects_cards_url: project_folder_cards_url(folder),