diff options
| author | Marin Jankovski <marin@gitlab.com> | 2014-07-04 11:57:24 +0200 |
|---|---|---|
| committer | Marin Jankovski <marin@gitlab.com> | 2014-07-04 11:57:24 +0200 |
| commit | 3b5722bca9e7e853c1428631ae21c600e17ef4a5 (patch) | |
| tree | daa41aa281331e4ad535521f4cf235ac75d1d98b /app | |
| parent | 83fd03f2ddb6b2fb2088bb9b3945fe13afb91320 (diff) | |
| download | gitlab-ce-3b5722bca9e7e853c1428631ae21c600e17ef4a5.tar.gz | |
Improve performance, ordering and pagination for group milestones.
Diffstat (limited to 'app')
| -rw-r--r-- | app/controllers/groups/milestones_controller.rb | 22 | ||||
| -rw-r--r-- | app/views/groups/milestones/index.html.haml | 1 |
2 files changed, 13 insertions, 10 deletions
diff --git a/app/controllers/groups/milestones_controller.rb b/app/controllers/groups/milestones_controller.rb index 8dde8e91468..860d8e03922 100644 --- a/app/controllers/groups/milestones_controller.rb +++ b/app/controllers/groups/milestones_controller.rb @@ -4,22 +4,22 @@ class Groups::MilestonesController < ApplicationController before_filter :authorize_group_milestone!, only: :update def index - project_milestones = Milestone.where(project_id: group.projects) + project_milestones = case params[:status] + when 'all'; status + when 'closed'; status('closed') + else status('active') + end @group_milestones = Milestones::GroupService.new(project_milestones).execute - @group_milestones = case params[:status] - when 'all'; @group_milestones - when 'closed'; status('closed') - else status('active') - end + @group_milestones = Kaminari.paginate_array(@group_milestones).page(params[:page]).per(30) end def show - project_milestones = Milestone.where(project_id: group.projects) + project_milestones = Milestone.where(project_id: group.projects).order("due_date ASC") @group_milestone = Milestones::GroupService.new(project_milestones).milestone(title) end def update - project_milestones = Milestone.where(project_id: group.projects) + project_milestones = Milestone.where(project_id: group.projects).order("due_date ASC") @group_milestones = Milestones::GroupService.new(project_milestones).milestone(title) @group_milestones.milestones.each do |milestone| @@ -44,8 +44,10 @@ class Groups::MilestonesController < ApplicationController params[:title] end - def status(state) - @group_milestones.map{ |milestone| next if milestone.state != state; milestone }.compact + def status(state = nil) + conditions = { project_id: group.projects } + conditions.reverse_merge!(state: state) if state + Milestone.where(conditions).order("title ASC") end def authorize_group_milestone! diff --git a/app/views/groups/milestones/index.html.haml b/app/views/groups/milestones/index.html.haml index 18ea03b25af..54e901173f0 100644 --- a/app/views/groups/milestones/index.html.haml +++ b/app/views/groups/milestones/index.html.haml @@ -47,3 +47,4 @@ - milestone.projects.each do |project| %span.label.label-default = project.name + = paginate @group_milestones, theme: "gitlab" |
