From 3b5722bca9e7e853c1428631ae21c600e17ef4a5 Mon Sep 17 00:00:00 2001 From: Marin Jankovski <marin@gitlab.com> Date: Fri, 4 Jul 2014 11:57:24 +0200 Subject: [PATCH] Improve performance, ordering and pagination for group milestones. --- .../groups/milestones_controller.rb | 22 ++++++++++--------- 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 8dde8e9146..860d8e0392 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 18ea03b25a..54e901173f 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" -- 2.30.9