From bc06542ed72f6ab4bbb4fcce1ad31c63ad7e2fd4 Mon Sep 17 00:00:00 2001 From: mlorb Date: Thu, 22 Mar 2018 11:41:33 +0100 Subject: [PATCH 1/2] refactor project navigation --- app/assets/javascripts/sidebar.js.erb | 13 +- app/assets/stylesheets/partials/_sidebar.scss | 6 +- .../stylesheets/partials/_tree_view.scss | 123 ++++++++++-------- app/controllers/experiments_controller.rb | 5 + app/controllers/my_modules_controller.rb | 6 + app/controllers/projects_controller.rb | 33 +++-- app/views/projects/archive.html.erb | 1 + app/views/projects/index.html.erb | 1 + .../reports/new/_report_sidebar.html.erb | 2 +- app/views/shared/_left_menu_bar.html.erb | 2 +- app/views/shared/_sidebar.html.erb | 35 ++--- .../shared/sidebar/_experiments.html.erb | 12 +- app/views/shared/sidebar/_my_modules.html.erb | 4 +- app/views/shared/sidebar/_projects.html.erb | 35 +++++ config/locales/en.yml | 2 + 15 files changed, 173 insertions(+), 107 deletions(-) create mode 100644 app/views/shared/sidebar/_projects.html.erb diff --git a/app/assets/javascripts/sidebar.js.erb b/app/assets/javascripts/sidebar.js.erb index 612eb6266..5fbbb2c6a 100644 --- a/app/assets/javascripts/sidebar.js.erb +++ b/app/assets/javascripts/sidebar.js.erb @@ -169,7 +169,7 @@ function setupSidebarTree() { // Get the session-stored elements var collapsedIds = sessionGetCollapsedSidebarElements(); - // Get the current project stered elements + // Get the current project stored elements var currentProjectIds = _.findWhere(collapsedIds, { prid: project }); if ( currentProjectIds ){ currentProjectIds.ids = _.filter(currentProjectIds.ids, @@ -241,6 +241,15 @@ function setupSidebarTree() { e.stopPropagation(); return false; }); + + // Add bold style to all levels of selected element + $(".tree li.active ") + .parents('.parent_li[data-parent="candidate"]') + .find("> span a") + .css("font-weight", "bold"); + + // Add custom borders to tree links + $(".tree li span.tree-link ").after("
"); } /** @@ -260,7 +269,7 @@ function initializeSidebarToggle() { $(".navbar-secondary").addClass("navbar-without-sidebar"); } - $("#toggle-sidebar-link").on("click", function() { + $(".toggle-sidebar-link").on("click", function() { $("#wrapper").toggleClass("toggled"); sessionToggleSidebar(); $(".navbar-secondary").toggleClass("navbar-without-sidebar", sessionIsSidebarToggled()); diff --git a/app/assets/stylesheets/partials/_sidebar.scss b/app/assets/stylesheets/partials/_sidebar.scss index 8457e1f5b..8fb20bf6a 100644 --- a/app/assets/stylesheets/partials/_sidebar.scss +++ b/app/assets/stylesheets/partials/_sidebar.scss @@ -22,7 +22,7 @@ $toggle-btn-size: 50px; transition: all 0.5s ease; #sidebar-wrapper { - background-color: $color-alto; + background-color: $color-white; z-index: 1000; position: fixed; width: $wrapper-width; @@ -82,10 +82,10 @@ $toggle-btn-size: 50px; } .tree { - overflow-y: auto; margin-bottom: 0; - padding-top: 15px; opacity: 1; + overflow-y: auto; + padding: 20px 0; // Animations @include transition(opacity 0.5s ease); diff --git a/app/assets/stylesheets/partials/_tree_view.scss b/app/assets/stylesheets/partials/_tree_view.scss index 4fbf45684..440c188c9 100644 --- a/app/assets/stylesheets/partials/_tree_view.scss +++ b/app/assets/stylesheets/partials/_tree_view.scss @@ -1,65 +1,86 @@ -@import 'constants'; +@import "constants"; @import "mixins"; .tree { height: 100%; padding-bottom: 30px; -} -.tree > ul { - margin-bottom: 0; -} -.tree ul { - padding-left: 0; -} -.tree li { - list-style-type: none; - margin: 0; - padding: 5px 5px 5px 15px; - position: relative; - &.active > span { + ul { + padding-left: 0; + } + + > ul { + margin-bottom: 0; + } + + .no-indent { background-color: $color-white; - border: 1px solid $color-white; - border-radius: 4px; - font-weight: bold; } - &.active:not span.tree-link:hover { - text-decoration: underline; + .first-indent { + background-color: $color-wild-sand; + padding-left: 30px; } - &.leaf { - padding-left: 10px; - .tree-link::before { - content: "\25B8"; + .second-indent { + background-color: $color-gainsboro; + padding-left: 60px; + } + + li { + list-style-type: none; + margin: 0; + position: relative; + + span { + display: block; + padding: 15px; + + &.my-module-group-element { + border: 0; + padding: 0; + } + + &.glyphicon-map-marker { + border: 0; + display: inline-block; + padding: 0; + } + } + + &.active > span { + background-color: $color-theme-primary; + color: $color-white; + font-weight: bold; + + &.first-indent > span, + &.no-indent > span { + border: 0; + display: inline-block; + padding: 0; + } + } + + i.glyphicon { + font-size: 9pt; + + &.expanded { + @include rotate(90deg); + } + } + + // Links are recolored + a { + color: $color-emperor; + + &:hover { + color: $color-theme-primary; + } + } + + .border-custom { + box-shadow: 0 -.25px 0 .25px $color-alto; + margin: 0 15px; } } - - & i.glyphicon { - font-size: 9pt; - - &.expanded { - @include rotate(45deg); - } - } - - /* Links are recolored */ - a { - color: $color-emperor; - - &:hover { - color: $color-theme-primary; - } - } - - span { - display:inline-block; - padding:3px 8px; - } -} -.tree li.parent_li>span { - display: block; -} -.tree li:last-child::before { - height:30px; } diff --git a/app/controllers/experiments_controller.rb b/app/controllers/experiments_controller.rb index f2134209b..4bbc30efc 100644 --- a/app/controllers/experiments_controller.rb +++ b/app/controllers/experiments_controller.rb @@ -11,6 +11,7 @@ class ExperimentsController < ApplicationController before_action :set_project, only: [:new, :create, :samples_index, :samples, :module_archive, :clone_modal, :move_modal, :delete_samples] + before_action :load_projects_by_teams, only: %i(canvas samples) before_action :check_view_permissions, only: [:canvas, :module_archive] before_action :check_manage_permissions, only: :edit @@ -348,6 +349,10 @@ class ExperimentsController < ApplicationController params.require(:experiment).permit(:name, :description, :archived) end + def load_projects_by_teams + @projects_by_teams = current_user.projects_by_teams + end + def check_view_permissions render_403 unless can_read_experiment?(@experiment) end diff --git a/app/controllers/my_modules_controller.rb b/app/controllers/my_modules_controller.rb index ea73d7b88..508edae24 100644 --- a/app/controllers/my_modules_controller.rb +++ b/app/controllers/my_modules_controller.rb @@ -17,6 +17,8 @@ class MyModulesController < ApplicationController before_action :load_repository, only: %i(assign_repository_records unassign_repository_records repository_index) + before_action :load_projects_by_teams, + only: %i(protocols results activities samples repository) before_action :check_manage_permissions, only: %i(update destroy description due_date) before_action :check_view_info_permissions, only: :show @@ -605,6 +607,10 @@ class MyModulesController < ApplicationController render_403 unless can_read_team?(@repository.team) end + def load_projects_by_teams + @projects_by_teams = current_user.projects_by_teams + end + def check_manage_permissions render_403 unless can_manage_module?(@my_module) end diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 59ab65127..776bad318 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -8,6 +8,7 @@ class ProjectsController < ApplicationController :notifications, :reports, :samples, :experiment_archive, :delete_samples, :samples_index] + before_action :load_projects_by_teams, only: %i(index show samples) before_action :check_view_permissions, only: %i(show reports notifications samples experiment_archive samples_index) @@ -17,7 +18,7 @@ class ProjectsController < ApplicationController @filter_by_archived = false # except parameter could be used but it is not working. - layout :choose_layout + layout 'fluid' # Action defined in SampleActions DELETE_SAMPLES = 'Delete'.freeze @@ -27,18 +28,6 @@ class ProjectsController < ApplicationController current_team_switch(Team.find_by_id(params[:team])) end - if current_user.teams.any? - @current_team_id = current_team.id if current_team - - @current_team_id ||= current_user.teams.first.id - @current_sort = params[:sort].to_s - @projects_by_teams = current_user.projects_by_teams(@current_team_id, - @current_sort, - @filter_by_archived) - else - @projects_by_teams = [] - end - @teams = current_user.teams # New project for create new project modal @@ -318,6 +307,20 @@ class ProjectsController < ApplicationController end end + def load_projects_by_teams + if current_user.teams.any? + @current_team_id = current_team.id if current_team + + @current_team_id ||= current_user.teams.first.id + @current_sort = params[:sort].to_s + @projects_by_teams = current_user.projects_by_teams(@current_team_id, + @current_sort, + @filter_by_archived) + else + @projects_by_teams = [] + end + end + def check_view_permissions render_403 unless can_read_project?(@project) end @@ -329,8 +332,4 @@ class ProjectsController < ApplicationController def check_manage_permissions render_403 unless can_manage_project?(@project) end - - def choose_layout - action_name.in?(['index', 'archive']) ? 'main' : 'fluid' - end end diff --git a/app/views/projects/archive.html.erb b/app/views/projects/archive.html.erb index 6cac501d4..1b5b1a8bf 100644 --- a/app/views/projects/archive.html.erb +++ b/app/views/projects/archive.html.erb @@ -1,4 +1,5 @@ <% provide(:head_title, t("projects.archive.head_title")) %> +<%= render partial: "shared/sidebar" %> <% if @projects_by_teams.length > 0 %>
diff --git a/app/views/projects/index.html.erb b/app/views/projects/index.html.erb index d6eae5032..ab36a4963 100644 --- a/app/views/projects/index.html.erb +++ b/app/views/projects/index.html.erb @@ -1,4 +1,5 @@ <% provide(:head_title, t("projects.index.head_title")) %> +<%= render partial: "shared/sidebar" %> <% if can_create_projects?(current_team) %> diff --git a/app/views/reports/new/_report_sidebar.html.erb b/app/views/reports/new/_report_sidebar.html.erb index e0735f247..808a3fb89 100644 --- a/app/views/reports/new/_report_sidebar.html.erb +++ b/app/views/reports/new/_report_sidebar.html.erb @@ -7,7 +7,7 @@
diff --git a/app/views/shared/_left_menu_bar.html.erb b/app/views/shared/_left_menu_bar.html.erb index 805727fa2..e76629ed1 100644 --- a/app/views/shared/_left_menu_bar.html.erb +++ b/app/views/shared/_left_menu_bar.html.erb @@ -1,7 +1,7 @@