mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-10-11 06:16:32 +08:00
Merge pull request #5661 from okriuchykhin/ok_SCI_8710
Fix breadcrumbs for archived view mode [SCI-8710]
This commit is contained in:
commit
f1876b4f59
9 changed files with 40 additions and 23 deletions
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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'),
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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),
|
||||||
|
|
Loading…
Add table
Reference in a new issue