Dashboard filters for events
This commit is contained in:
parent
899afd0067
commit
23734a715e
|
@ -653,3 +653,16 @@ pre {
|
|||
margin-right:5px;
|
||||
}
|
||||
}
|
||||
|
||||
.dashboard-search-filter {
|
||||
padding:5px;
|
||||
|
||||
.search-text-input {
|
||||
float:left;
|
||||
@extend .span2;
|
||||
}
|
||||
.btn {
|
||||
margin-left: 5px;
|
||||
float:left;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,13 +1,12 @@
|
|||
class DashboardController < ApplicationController
|
||||
respond_to :html
|
||||
|
||||
before_filter :projects
|
||||
before_filter :event_filter, only: :index
|
||||
|
||||
def index
|
||||
@groups = Group.where(id: current_user.projects.pluck(:namespace_id))
|
||||
@projects = current_user.projects_sorted_by_activity
|
||||
@projects = @projects.page(params[:page]).per(30)
|
||||
|
||||
@events = Event.in_projects(current_user.project_ids)
|
||||
@events = @event_filter.apply_filter(@events)
|
||||
@events = @events.limit(20).offset(params[:offset] || 0)
|
||||
|
@ -23,15 +22,16 @@ class DashboardController < ApplicationController
|
|||
|
||||
# Get authored or assigned open merge requests
|
||||
def merge_requests
|
||||
@projects = current_user.projects.all
|
||||
@merge_requests = current_user.cared_merge_requests.recent.page(params[:page]).per(20)
|
||||
@merge_requests = current_user.cared_merge_requests
|
||||
@merge_requests = dashboard_filter(@merge_requests)
|
||||
@merge_requests = @merge_requests.recent.page(params[:page]).per(20)
|
||||
end
|
||||
|
||||
# Get only assigned issues
|
||||
def issues
|
||||
@projects = current_user.projects.all
|
||||
@user = current_user
|
||||
@issues = current_user.assigned_issues.opened.recent.page(params[:page]).per(20)
|
||||
@issues = current_user.assigned_issues
|
||||
@issues = dashboard_filter(@issues)
|
||||
@issues = @issues.recent.page(params[:page]).per(20)
|
||||
@issues = @issues.includes(:author, :project)
|
||||
|
||||
respond_to do |format|
|
||||
|
@ -40,7 +40,32 @@ class DashboardController < ApplicationController
|
|||
end
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def projects
|
||||
@projects = current_user.projects_sorted_by_activity
|
||||
end
|
||||
|
||||
def event_filter
|
||||
@event_filter ||= EventFilter.new(params[:event_filter])
|
||||
end
|
||||
|
||||
def dashboard_filter items
|
||||
if params[:project_id]
|
||||
items = items.where(project_id: params[:project_id])
|
||||
end
|
||||
|
||||
if params[:search].present?
|
||||
items = items.search(params[:search])
|
||||
end
|
||||
|
||||
case params[:status]
|
||||
when 'closed'
|
||||
items.closed
|
||||
when 'all'
|
||||
items
|
||||
else
|
||||
items.opened
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
10
app/helpers/dashboard_helper.rb
Normal file
10
app/helpers/dashboard_helper.rb
Normal file
|
@ -0,0 +1,10 @@
|
|||
module DashboardHelper
|
||||
def dashboard_filter_path(entity, options={})
|
||||
case entity
|
||||
when 'issue' then
|
||||
dashboard_issues_path(options)
|
||||
when 'merge_request'
|
||||
dashboard_merge_requests_path(options)
|
||||
end
|
||||
end
|
||||
end
|
|
@ -269,4 +269,13 @@ class Project < ActiveRecord::Base
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
def items_for entity
|
||||
case entity
|
||||
when 'issue' then
|
||||
issues
|
||||
when 'merge_request' then
|
||||
merge_requests
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
32
app/views/dashboard/_filter.html.haml
Normal file
32
app/views/dashboard/_filter.html.haml
Normal file
|
@ -0,0 +1,32 @@
|
|||
= form_tag dashboard_filter_path(entity), method: 'get' do
|
||||
%fieldset.dashboard-search-filter
|
||||
= search_field_tag "search", nil, { placeholder: 'Search', class: 'search-text-input' }
|
||||
= button_tag type: 'submit', class: 'btn' do
|
||||
%i.icon-search
|
||||
|
||||
%fieldset
|
||||
%legend Status:
|
||||
%ul.nav.nav-pills.nav-stacked
|
||||
%li{class: ("active" if !params[:status])}
|
||||
= link_to dashboard_filter_path(entity) do
|
||||
Open
|
||||
%li{class: ("active" if params[:status] == 'closed')}
|
||||
= link_to dashboard_filter_path(entity, status: 'closed') do
|
||||
Closed
|
||||
%li{class: ("active" if params[:status] == 'all')}
|
||||
= link_to dashboard_filter_path(entity, status: 'all') do
|
||||
All
|
||||
|
||||
%fieldset
|
||||
%legend Projects:
|
||||
%ul.nav.nav-pills.nav-stacked
|
||||
- @projects.each do |project|
|
||||
%li{class: ("active" if params[:project_id] == project.id.to_s)}
|
||||
= link_to dashboard_filter_path(entity, project_id: project.id) do
|
||||
= project.name_with_namespace
|
||||
%small.right= project.items_for(entity).where(assignee_id: current_user.id).count
|
||||
|
||||
%fieldset
|
||||
%hr
|
||||
= link_to "Reset", dashboard_filter_path(entity), class: 'btn right'
|
||||
|
|
@ -3,17 +3,21 @@
|
|||
%small (assigned to you)
|
||||
%small.right #{@issues.total_count} issues
|
||||
|
||||
%br
|
||||
.clearfix
|
||||
- if @issues.any?
|
||||
- @issues.group_by(&:project).each do |group|
|
||||
%div.ui-box
|
||||
- @project = group[0]
|
||||
%h5= @project.name
|
||||
%ul.unstyled.issues_table
|
||||
- group[1].each do |issue|
|
||||
= render(partial: 'issues/show', locals: {issue: issue})
|
||||
%hr
|
||||
= paginate @issues, theme: "gitlab"
|
||||
- else
|
||||
%h3.nothing_here_message Nothing to show here
|
||||
%hr
|
||||
|
||||
.row
|
||||
.span3
|
||||
= render 'filter', entity: 'issue'
|
||||
.span9
|
||||
- if @issues.any?
|
||||
- @issues.group_by(&:project).each do |group|
|
||||
%div.ui-box
|
||||
- @project = group[0]
|
||||
%h5= @project.name
|
||||
%ul.unstyled.issues_table
|
||||
- group[1].each do |issue|
|
||||
= render(partial: 'issues/show', locals: {issue: issue})
|
||||
%hr
|
||||
= paginate @issues, theme: "gitlab"
|
||||
- else
|
||||
%p.nothing_here_message Nothing to show here
|
||||
|
|
|
@ -3,16 +3,20 @@
|
|||
%small (authored by or assigned to you)
|
||||
%small.right #{@merge_requests.total_count} merge requests
|
||||
|
||||
%br
|
||||
- if @merge_requests.any?
|
||||
- @merge_requests.group_by(&:project).each do |group|
|
||||
%ul.unstyled.ui-box
|
||||
- @project = group[0]
|
||||
%h5= @project.name
|
||||
- group[1].each do |merge_request|
|
||||
= render(partial: 'merge_requests/merge_request', locals: {merge_request: merge_request})
|
||||
%hr
|
||||
= paginate @merge_requests, theme: "gitlab"
|
||||
%hr
|
||||
.row
|
||||
.span3
|
||||
= render 'filter', entity: 'merge_request'
|
||||
.span9
|
||||
- if @merge_requests.any?
|
||||
- @merge_requests.group_by(&:project).each do |group|
|
||||
%ul.unstyled.ui-box
|
||||
- @project = group[0]
|
||||
%h5= @project.name
|
||||
- group[1].each do |merge_request|
|
||||
= render(partial: 'merge_requests/merge_request', locals: {merge_request: merge_request})
|
||||
%hr
|
||||
= paginate @merge_requests, theme: "gitlab"
|
||||
|
||||
- else
|
||||
%h3.nothing_here_message Nothing to show here
|
||||
- else
|
||||
%h3.nothing_here_message Nothing to show here
|
||||
|
|
Loading…
Reference in a new issue