Skip to content
Snippets Groups Projects
Commit 23734a71 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets
Browse files

Dashboard filters for events

parent 899afd00
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -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;
}
}
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)
Loading
Loading
@@ -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|
Loading
Loading
@@ -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
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
Loading
Loading
@@ -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
= 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'
Loading
Loading
@@ -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
Loading
Loading
@@ -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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment