Commit f9eda9b33a72cae91e51c5733fdf2c0d7b37d149
1 parent
d6363e93
Exists in
master
and in
4 other branches
Group filtering on dashboard
Showing
6 changed files
with
83 additions
and
26 deletions
Show diff stats
app/controllers/dashboard_controller.rb
| @@ -2,12 +2,22 @@ class DashboardController < ApplicationController | @@ -2,12 +2,22 @@ class DashboardController < ApplicationController | ||
| 2 | respond_to :html | 2 | respond_to :html |
| 3 | 3 | ||
| 4 | def index | 4 | def index |
| 5 | - @projects = current_user.projects_with_events.page(params[:page]).per(40) | 5 | + @groups = Group.where(id: current_user.projects.pluck(:group_id)) |
| 6 | + | ||
| 7 | + @projects = current_user.projects_with_events | ||
| 8 | + | ||
| 9 | + if params[:group].present? | ||
| 10 | + @group = Group.find_by_code(params[:group]) | ||
| 11 | + @projects = @projects.where(group_id: @group.id) | ||
| 12 | + end | ||
| 13 | + | ||
| 14 | + @projects = @projects.page(params[:page]).per(40) | ||
| 15 | + | ||
| 6 | @events = Event.recent_for_user(current_user).limit(20).offset(params[:offset] || 0) | 16 | @events = Event.recent_for_user(current_user).limit(20).offset(params[:offset] || 0) |
| 7 | @last_push = current_user.recent_push | 17 | @last_push = current_user.recent_push |
| 8 | 18 | ||
| 9 | respond_to do |format| | 19 | respond_to do |format| |
| 10 | - format.html | 20 | + format.html { render 'index', layout: determine_layout } |
| 11 | format.js | 21 | format.js |
| 12 | format.atom { render layout: false } | 22 | format.atom { render layout: false } |
| 13 | end | 23 | end |
| @@ -31,4 +41,10 @@ class DashboardController < ApplicationController | @@ -31,4 +41,10 @@ class DashboardController < ApplicationController | ||
| 31 | format.atom { render layout: false } | 41 | format.atom { render layout: false } |
| 32 | end | 42 | end |
| 33 | end | 43 | end |
| 44 | + | ||
| 45 | + protected | ||
| 46 | + | ||
| 47 | + def determine_layout | ||
| 48 | + @group ? 'group' : 'application' | ||
| 49 | + end | ||
| 34 | end | 50 | end |
app/views/admin/groups/index.html.haml
| @@ -9,7 +9,7 @@ | @@ -9,7 +9,7 @@ | ||
| 9 | %table | 9 | %table |
| 10 | %thead | 10 | %thead |
| 11 | %th Name | 11 | %th Name |
| 12 | - %th Path | 12 | + %th Code |
| 13 | %th Projects | 13 | %th Projects |
| 14 | %th Edit | 14 | %th Edit |
| 15 | %th.cred Danger Zone! | 15 | %th.cred Danger Zone! |
| @@ -17,7 +17,7 @@ | @@ -17,7 +17,7 @@ | ||
| 17 | - @groups.each do |group| | 17 | - @groups.each do |group| |
| 18 | %tr | 18 | %tr |
| 19 | %td= link_to group.name, [:admin, group] | 19 | %td= link_to group.name, [:admin, group] |
| 20 | - %td= group.path | 20 | + %td= group.code |
| 21 | %td= group.projects.count | 21 | %td= group.projects.count |
| 22 | %td= link_to 'Edit', edit_admin_group_path(group), id: "edit_#{dom_id(group)}", class: "btn small" | 22 | %td= link_to 'Edit', edit_admin_group_path(group), id: "edit_#{dom_id(group)}", class: "btn small" |
| 23 | %td.bgred= link_to 'Destroy', [:admin, group], confirm: "REMOVE #{group.name}? Are you sure?", method: :delete, class: "btn small danger" | 23 | %td.bgred= link_to 'Destroy', [:admin, group], confirm: "REMOVE #{group.name}? Are you sure?", method: :delete, class: "btn small danger" |
| @@ -0,0 +1,15 @@ | @@ -0,0 +1,15 @@ | ||
| 1 | +.projects_box | ||
| 2 | + %h5 | ||
| 3 | + Groups | ||
| 4 | + %small | ||
| 5 | + (#{groups.count}) | ||
| 6 | + %ul.unstyled | ||
| 7 | + - groups.each do |group| | ||
| 8 | + %li.wll | ||
| 9 | + = link_to dashboard_path(group: group), class: dom_class(group) do | ||
| 10 | + %strong.group_name= truncate(group.name, length: 25) | ||
| 11 | + %span.arrow | ||
| 12 | + → | ||
| 13 | + %span.last_activity | ||
| 14 | + %strong Projects: | ||
| 15 | + %span= group.projects.count |
| @@ -0,0 +1,21 @@ | @@ -0,0 +1,21 @@ | ||
| 1 | +.projects_box | ||
| 2 | + %h5 | ||
| 3 | + Projects | ||
| 4 | + %small | ||
| 5 | + (#{projects.total_count}) | ||
| 6 | + - if current_user.can_create_project? | ||
| 7 | + %span.right | ||
| 8 | + = link_to new_project_path, class: "btn very_small info" do | ||
| 9 | + %i.icon-plus | ||
| 10 | + New Project | ||
| 11 | + %ul.unstyled | ||
| 12 | + - projects.each do |project| | ||
| 13 | + %li.wll | ||
| 14 | + = link_to project_path(project), class: dom_class(project) do | ||
| 15 | + %strong.project_name= truncate(project.name, length: 25) | ||
| 16 | + %span.arrow | ||
| 17 | + → | ||
| 18 | + %span.last_activity | ||
| 19 | + %strong Last activity: | ||
| 20 | + %span= project_last_activity(project) | ||
| 21 | + .bottom= paginate projects, theme: "gitlab" |
app/views/dashboard/index.html.haml
| @@ -9,28 +9,9 @@ | @@ -9,28 +9,9 @@ | ||
| 9 | .loading.hide | 9 | .loading.hide |
| 10 | .side | 10 | .side |
| 11 | = render "events/event_last_push", event: @last_push | 11 | = render "events/event_last_push", event: @last_push |
| 12 | - .projects_box | ||
| 13 | - %h5 | ||
| 14 | - Projects | ||
| 15 | - %small | ||
| 16 | - (#{@projects.total_count}) | ||
| 17 | - - if current_user.can_create_project? | ||
| 18 | - %span.right | ||
| 19 | - = link_to new_project_path, class: "btn very_small info" do | ||
| 20 | - %i.icon-plus | ||
| 21 | - New Project | ||
| 22 | - %ul.unstyled | ||
| 23 | - - @projects.each do |project| | ||
| 24 | - %li.wll | ||
| 25 | - = link_to project_path(project), class: dom_class(project) do | ||
| 26 | - %strong.project_name= truncate(project.name, length: 25) | ||
| 27 | - %span.arrow | ||
| 28 | - → | ||
| 29 | - %span.last_activity | ||
| 30 | - %strong Last activity: | ||
| 31 | - %span= project_last_activity(project) | ||
| 32 | - .bottom= paginate @projects, theme: "gitlab" | ||
| 33 | - | 12 | + - unless @group |
| 13 | + = render "groups", groups: @groups | ||
| 14 | + = render "projects", projects: @projects | ||
| 34 | %div | 15 | %div |
| 35 | %span.rss-icon | 16 | %span.rss-icon |
| 36 | = link_to dashboard_path(:atom, { private_token: current_user.private_token }) do | 17 | = link_to dashboard_path(:atom, { private_token: current_user.private_token }) do |
| @@ -0,0 +1,24 @@ | @@ -0,0 +1,24 @@ | ||
| 1 | +!!! 5 | ||
| 2 | +%html{ lang: "en"} | ||
| 3 | + = render "layouts/head" | ||
| 4 | + %body{class: "#{app_theme} application"} | ||
| 5 | + = render "layouts/flash" | ||
| 6 | + = render "layouts/head_panel", title: "#{@group.name}:Dashboard" | ||
| 7 | + .container | ||
| 8 | + %ul.main_menu | ||
| 9 | + = nav_link(path: 'dashboard#index', html_options: {class: 'home'}) do | ||
| 10 | + = link_to "Home", root_path, title: "Home" | ||
| 11 | + = nav_link(path: 'dashboard#issues') do | ||
| 12 | + = link_to dashboard_issues_path(group: @group) do | ||
| 13 | + Issues | ||
| 14 | + %span.count= current_user.assigned_issues.opened.count | ||
| 15 | + = nav_link(path: 'dashboard#merge_requests') do | ||
| 16 | + = link_to dashboard_merge_requests_path(group: @group) do | ||
| 17 | + Merge Requests | ||
| 18 | + %span.count= current_user.cared_merge_requests.count | ||
| 19 | + = nav_link(path: 'search#show') do | ||
| 20 | + = link_to "People", "#" | ||
| 21 | + = nav_link(path: 'help#index') do | ||
| 22 | + = link_to "Help", help_path | ||
| 23 | + | ||
| 24 | + .content= yield |