Implement layout breadcrumbs for Experiments and Tasks [SCI-8087]

This commit is contained in:
sboursen-scinote 2023-03-30 17:01:47 +02:00
parent 6cf3782339
commit eda4f140ee
2 changed files with 77 additions and 0 deletions

View file

@ -77,6 +77,7 @@ class ExperimentsController < ApplicationController
end
def canvas
@breadcrumbs_items = breadcrumbs_items
redirect_to module_archive_experiment_path(@experiment) if @experiment.archived_branch?
@project = @experiment.project
@active_modules = @experiment.my_modules.active.order(:name)
@ -89,6 +90,7 @@ class ExperimentsController < ApplicationController
end
def table
@breadcrumbs_items = breadcrumbs_items
@project = @experiment.project
@experiment.current_view_state(current_user)
@my_module_visible_table_columns = current_user.my_module_visible_table_columns
@ -372,6 +374,7 @@ class ExperimentsController < ApplicationController
end
def module_archive
@breadcrumbs_items = breadcrumbs_items
@project = @experiment.project
@my_modules = @experiment.archived_branch? ? @experiment.my_modules : @experiment.my_modules.archived
@my_modules = @my_modules.with_granted_permissions(current_user, MyModulePermissions::READ_ARCHIVED)
@ -658,4 +661,38 @@ class ExperimentsController < ApplicationController
end
end
end
def breadcrumbs_items
experiment = @experiment
project = experiment.project
current_folder = project&.project_folder
breadcrumbs_items = []
folders = helpers.tree_ordered_parent_folders(current_folder)
breadcrumbs_items.push({
label: t('projects.index.breadcrumbs_root'),
url: projects_path,
class: 'project-folder-link'
})
folders&.each do |project_folder|
breadcrumbs_items.push({
label: project_folder.name,
url: project_folder_path(project_folder),
class: 'project-folder-link'
})
end
breadcrumbs_items.push({
label: project.name,
url: project_path(project)
})
breadcrumbs_items.push({
label: experiment.name,
url: my_modules_experiment_path(experiment)
})
breadcrumbs_items
end
end

View file

@ -19,6 +19,7 @@ class MyModulesController < ApplicationController
before_action :check_update_state_permissions, only: :update_state
before_action :set_inline_name_editing, only: %i(protocols results activities archive)
before_action :load_experiment_my_modules, only: %i(protocols results activities archive)
before_action :set_breadcrumbs_items, only: %i(results protocols activities signatures)
layout 'fluid'.freeze
@ -607,4 +608,43 @@ class MyModulesController < ApplicationController
my_module: link_to(@my_module.name, protocols_my_module_url(@my_module)))
)
end
def set_breadcrumbs_items
my_module = @my_module
experiment = my_module.experiment
project = experiment.project
current_folder = project&.project_folder
breadcrumbs_items = []
folders = helpers.tree_ordered_parent_folders(current_folder)
breadcrumbs_items.push({
label: t('projects.index.breadcrumbs_root'),
url: projects_path,
class: 'project-folder-link'
})
folders&.each do |project_folder|
breadcrumbs_items.push({
label: project_folder.name,
url: project_folder_path(project_folder),
class: 'project-folder-link'
})
end
breadcrumbs_items.push({
label: project.name,
url: project_path(project)
})
breadcrumbs_items.push({
label: experiment.name,
url: my_modules_experiment_path(experiment)
})
breadcrumbs_items.push({
label: my_module.name,
url: my_module_path(my_module)
})
@breadcrumbs_items = breadcrumbs_items
end
end