Fix navigation between archived and active projects [SCI-5419] (#3100)

* Fix navigation between archived and active projects [SCI-5419]
This commit is contained in:
Alex Kriuchykhin 2021-01-19 11:28:59 +01:00 committed by GitHub
parent bba1165c7b
commit f15d984d47
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 33 additions and 19 deletions

View file

@ -332,13 +332,12 @@
}
}
$(projectsWrapper).on('click', '.project-folder-link', function(event) {
$('#content-wrapper').on('click', '.project-folder-link', function(event) {
event.preventDefault();
event.stopPropagation();
let viewContainer = $(cardsWrapper);
viewContainer.data('projects-cards-url', $(this).data('projectsCardsUrl'));
$(cardsWrapper).data('projectsCardsUrl', $(this).data('projectsCardsUrl'));
history.replaceState({}, '', this.href);
$('.sidebar-container').data('sidebar-url', $(this).data('sidebar-url'));
$('.sidebar-container').data('sidebarUrl', $(this).data('sidebarUrl'));
refreshCurrentView();
});

View file

@ -5,6 +5,9 @@ class ProjectFoldersController < ApplicationController
include ProjectsHelper
include ProjectFoldersHelper
attr_reader :current_folder
helper_method :current_folder
before_action :load_current_folder, only: %i(new)
before_action :load_project_folder, only: %i(edit update)
before_action :check_create_permissions, only: %i(new create)
@ -12,7 +15,7 @@ class ProjectFoldersController < ApplicationController
def new
@project_folder =
current_team.project_folders.new(parent_folder: @current_folder, archived: projects_view_mode_archived?)
current_team.project_folders.new(parent_folder: current_folder, archived: projects_view_mode_archived?)
respond_to do |format|
format.json do
render json: {

View file

@ -6,6 +6,9 @@ class ProjectsController < ApplicationController
include InputSanitizeHelper
include ProjectsHelper
attr_reader :current_folder
helper_method :current_folder
before_action :switch_team_with_param, only: :index
before_action :load_vars, only: %i(show edit update notifications experiment_archive sidebar)
before_action :load_current_folder, only: %i(index cards new)
@ -26,7 +29,7 @@ class ProjectsController < ApplicationController
end
def cards
overview_service = ProjectsOverviewService.new(current_team, current_user, @current_folder, params)
overview_service = ProjectsOverviewService.new(current_team, current_user, current_folder, params)
if filters_included?
render json: {
@ -38,8 +41,8 @@ class ProjectsController < ApplicationController
}
else
render json: {
projects_cards_url: @current_folder ? project_folder_cards_url(@current_folder) : cards_projects_url,
breadcrumbs_html: @current_folder ? render_to_string(partial: 'projects/index/breadcrumbs.html.erb') : '',
projects_cards_url: current_folder ? project_folder_cards_url(current_folder) : cards_projects_url,
breadcrumbs_html: current_folder ? render_to_string(partial: 'projects/index/breadcrumbs.html.erb') : '',
toolbar_html: render_to_string(partial: 'projects/index/toolbar.html.erb'),
cards_html: render_to_string(
partial: 'projects/index/team_projects.html.erb',
@ -62,7 +65,7 @@ class ProjectsController < ApplicationController
end
def new
@project = current_team.projects.new(project_folder: @current_folder)
@project = current_team.projects.new(project_folder: current_folder)
respond_to do |format|
format.json do
render json: {

View file

@ -3,6 +3,9 @@
class TeamsController < ApplicationController
include ProjectsHelper
attr_reader :current_folder
helper_method :current_folder
before_action :load_vars, only: %i(sidebar export_projects export_projects_modal)
before_action :load_current_folder, only: :sidebar
before_action :check_read_permissions

View file

@ -2,11 +2,13 @@
module ProjectsHelper
def projects_view_mode
return 'archived' if current_folder&.archived?
params[:view_mode] == 'archived' ? 'archived' : 'active'
end
def projects_view_mode_archived?
params[:view_mode] == 'archived'
projects_view_mode == 'archived'
end
def user_project_role_to_s(user_project)

View file

@ -7,7 +7,11 @@ class ProjectsOverviewService
@current_folder = folder
@params = params
@view_state = @team.current_view_state(@user)
@view_mode = params[:view_mode]
@view_mode = if @current_folder.present?
@view_mode = @current_folder.archived? ? 'archived' : 'active'
else
params[:view_mode]
end
# Update sort if chanhed
@sort = @view_state.state.dig('projects', @view_mode, 'sort') || 'atoz'

View file

@ -1,5 +1,5 @@
<% provide(:sidebar_title, t("projects.index.navigation_title")) %>
<% provide(:sidebar_url, sidebar_team_path(current_team, project_folder_id: @current_folder&.id)) %>
<% provide(:sidebar_url, sidebar_team_path(current_team, project_folder_id: current_folder&.id)) %>
<% provide(:container_class, 'no-second-nav-container') %>
<%= content_for :sidebar do %>
@ -7,7 +7,7 @@
<% end %>
<% content_for :breadcrumbs do %>
<%= render partial: 'projects/index/breadcrumbs' if @current_folder %>
<%= render partial: 'projects/index/breadcrumbs' if current_folder %>
<% end %>
<div id="projectsWrapper" class="content-pane flexible projects-index <%= projects_view_mode %>" data-view-mode="<%= projects_view_mode %>">
@ -23,7 +23,7 @@
<div class="projects-container">
<div id="toolbarWrapper">
</div>
<div class="cards-wrapper" id="cardsWrapper" data-projects-cards-url="<%= @current_folder ? project_folder_cards_url(@current_folder) : cards_projects_url %>">
<div class="cards-wrapper" id="cardsWrapper" data-projects-cards-url="<%= current_folder ? project_folder_cards_url(current_folder) : cards_projects_url %>">
<div class="table-header">
<div class="table-header-cell select-all-checkboxes">
<div class="sci-checkbox-container">

View file

@ -1,4 +1,4 @@
<% target_folder ||= @current_folder %>
<% target_folder ||= current_folder %>
<div class="projects-breadcrumbs">
<%= link_to(t('projects.index.breadcrumbs_root'),
projects_path,

View file

@ -3,7 +3,7 @@
<div class="project-actions">
<!-- new project button -->
<% if current_team && can_create_projects?(current_team) %>
<%= link_to new_project_path(project_folder_id: @current_folder),
<%= link_to new_project_path(project_folder_id: current_folder),
class: 'btn btn-primary new-project-btn',
data: { view_mode: 'active' },
remote: true do %>
@ -13,7 +13,7 @@
<% end %>
<!-- new project folder button -->
<% if current_team && can_create_project_folders?(current_team) %>
<%= link_to new_project_folder_path(project_folder_id: @current_folder, view_mode: projects_view_mode),
<%= link_to new_project_folder_path(project_folder_id: current_folder, view_mode: projects_view_mode),
class: 'btn btn-light new-project-folder-btn',
remote: true do %>
<span class="fas fa-folder" aria-hidden="true"></span>

View file

@ -11,7 +11,7 @@
<li class="sidebar-leaf">
<%= link_to projects_path(view_mode: :archived), class: "sidebar-link" do %>
<span class="fas fa-archive"></span>
<%= t("projects.index.navigation_archived_projects") %>
<%= t('projects.index.navigation_archived_projects') %>
<% end %>
</li>
<% end %>

View file

@ -13,7 +13,7 @@
<i class="fas fa-caret-right toggle-branch collapsed"></i>
<% end %>
<%= link_to project_folder_path(record[:folder]),
class: "sidebar-link project-folder-link folder #{'selected' if @current_folder == record[:folder]}",
class: "sidebar-link project-folder-link folder #{'selected' if current_folder == record[:folder]}",
data: {
sidebar_url: sidebar_team_path(current_team, project_folder_id: record[:folder].id),
projects_cards_url: project_folder_cards_url(record[:folder])