Commit 23734a71 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Dashboard filters for events

parent 899afd00
...@@ -653,3 +653,16 @@ pre { ...@@ -653,3 +653,16 @@ pre {
margin-right:5px; margin-right:5px;
} }
} }
.dashboard-search-filter {
padding:5px;
.search-text-input {
float:left;
@extend .span2;
}
.btn {
margin-left: 5px;
float:left;
}
}
class DashboardController < ApplicationController class DashboardController < ApplicationController
respond_to :html respond_to :html
before_filter :projects
before_filter :event_filter, only: :index before_filter :event_filter, only: :index
def index def index
@groups = Group.where(id: current_user.projects.pluck(:namespace_id)) @groups = Group.where(id: current_user.projects.pluck(:namespace_id))
@projects = current_user.projects_sorted_by_activity
@projects = @projects.page(params[:page]).per(30) @projects = @projects.page(params[:page]).per(30)
@events = Event.in_projects(current_user.project_ids) @events = Event.in_projects(current_user.project_ids)
@events = @event_filter.apply_filter(@events) @events = @event_filter.apply_filter(@events)
@events = @events.limit(20).offset(params[:offset] || 0) @events = @events.limit(20).offset(params[:offset] || 0)
...@@ -23,15 +22,16 @@ class DashboardController < ApplicationController ...@@ -23,15 +22,16 @@ class DashboardController < ApplicationController
# Get authored or assigned open merge requests # Get authored or assigned open merge requests
def merge_requests def merge_requests
@projects = current_user.projects.all @merge_requests = current_user.cared_merge_requests
@merge_requests = current_user.cared_merge_requests.recent.page(params[:page]).per(20) @merge_requests = dashboard_filter(@merge_requests)
@merge_requests = @merge_requests.recent.page(params[:page]).per(20)
end end
# Get only assigned issues # Get only assigned issues
def issues def issues
@projects = current_user.projects.all @issues = current_user.assigned_issues
@user = current_user @issues = dashboard_filter(@issues)
@issues = current_user.assigned_issues.opened.recent.page(params[:page]).per(20) @issues = @issues.recent.page(params[:page]).per(20)
@issues = @issues.includes(:author, :project) @issues = @issues.includes(:author, :project)
respond_to do |format| respond_to do |format|
...@@ -40,7 +40,32 @@ class DashboardController < ApplicationController ...@@ -40,7 +40,32 @@ class DashboardController < ApplicationController
end end
end end
protected
def projects
@projects = current_user.projects_sorted_by_activity
end
def event_filter def event_filter
@event_filter ||= EventFilter.new(params[:event_filter]) @event_filter ||= EventFilter.new(params[:event_filter])
end 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 end
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 ...@@ -269,4 +269,13 @@ class Project < ActiveRecord::Base
end end
end end
end end
def items_for entity
case entity
when 'issue' then
issues
when 'merge_request' then
merge_requests
end
end
end end
= 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,9 +3,13 @@ ...@@ -3,9 +3,13 @@
%small (assigned to you) %small (assigned to you)
%small.right #{@issues.total_count} issues %small.right #{@issues.total_count} issues
%br %hr
.clearfix
- if @issues.any? .row
.span3
= render 'filter', entity: 'issue'
.span9
- if @issues.any?
- @issues.group_by(&:project).each do |group| - @issues.group_by(&:project).each do |group|
%div.ui-box %div.ui-box
- @project = group[0] - @project = group[0]
...@@ -15,5 +19,5 @@ ...@@ -15,5 +19,5 @@
= render(partial: 'issues/show', locals: {issue: issue}) = render(partial: 'issues/show', locals: {issue: issue})
%hr %hr
= paginate @issues, theme: "gitlab" = paginate @issues, theme: "gitlab"
- else - else
%h3.nothing_here_message Nothing to show here %p.nothing_here_message Nothing to show here
...@@ -3,8 +3,12 @@ ...@@ -3,8 +3,12 @@
%small (authored by or assigned to you) %small (authored by or assigned to you)
%small.right #{@merge_requests.total_count} merge requests %small.right #{@merge_requests.total_count} merge requests
%br %hr
- if @merge_requests.any? .row
.span3
= render 'filter', entity: 'merge_request'
.span9
- if @merge_requests.any?
- @merge_requests.group_by(&:project).each do |group| - @merge_requests.group_by(&:project).each do |group|
%ul.unstyled.ui-box %ul.unstyled.ui-box
- @project = group[0] - @project = group[0]
...@@ -14,5 +18,5 @@ ...@@ -14,5 +18,5 @@
%hr %hr
= paginate @merge_requests, theme: "gitlab" = paginate @merge_requests, theme: "gitlab"
- else - else
%h3.nothing_here_message Nothing to show here %h3.nothing_here_message Nothing to show here
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment