summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Artur <felipefac@gmail.com>2017-06-22 17:39:55 -0300
committerFelipe Artur <felipefac@gmail.com>2017-07-04 17:40:06 -0300
commitbb03cf35c9792c89734b0cf3544b927625bd4220 (patch)
tree7fac1243582606742d3cce56cb658d8213c33859
parent2f77030ce8d2d70d7c44abe3ca14b047cedb3d26 (diff)
downloadgitlab-ce-bb03cf35c9792c89734b0cf3544b927625bd4220.tar.gz
Tweaks go group milestone
-rw-r--r--app/controllers/groups/milestones_controller.rb9
-rw-r--r--app/finders/milestones_finder.rb11
-rw-r--r--app/models/global_milestone.rb2
-rw-r--r--app/models/group_milestone.rb10
4 files changed, 24 insertions, 8 deletions
diff --git a/app/controllers/groups/milestones_controller.rb b/app/controllers/groups/milestones_controller.rb
index 618c78df51e..43382886031 100644
--- a/app/controllers/groups/milestones_controller.rb
+++ b/app/controllers/groups/milestones_controller.rb
@@ -8,7 +8,7 @@ class Groups::MilestonesController < Groups::ApplicationController
def index
respond_to do |format|
format.html do
- @milestone_states = GlobalMilestone.states_count(@projects)
+ @milestone_states = GlobalMilestone.states_count(@projects, group)
@milestones = Kaminari.paginate_array(milestones).page(params[:page])
end
format.json do
@@ -68,11 +68,14 @@ class Groups::MilestonesController < Groups::ApplicationController
@project_milestones = Milestone.where(project_id: group.projects.pluck(:id))
@group_milestones + @project_milestones
+ #@milestones = GroupMilestone.build_collection(@group, @projects, params)
end
def milestone
- # Use a finder here
- @milestone = @group.milestones.find_by_title(params[:title])
+ @milestone =
+ @group.milestones.find_by_title(params[:title]) ||
+ GroupMilestone.build(@group, @projects, params[:title])
+
render_404 unless @milestone
end
end
diff --git a/app/finders/milestones_finder.rb b/app/finders/milestones_finder.rb
index 630c73c2a94..259d8d40d98 100644
--- a/app/finders/milestones_finder.rb
+++ b/app/finders/milestones_finder.rb
@@ -1,9 +1,12 @@
class MilestonesFinder
- def execute(projects, params)
- milestones = Milestone.of_projects(projects)
- milestones = milestones.reorder("due_date ASC")
+ def execute(projects, group = nil, params)
+ milestones = group ? group.milestones : Milestone.of_projects(projects)
- case params[:state]
+ filter_by_state(milestones, params[:state])
+ end
+
+ def filter_by_state(milestones, state)
+ case state
when 'closed' then milestones.closed
when 'all' then milestones
else milestones.active
diff --git a/app/models/global_milestone.rb b/app/models/global_milestone.rb
index 538615130a7..5d3209156cc 100644
--- a/app/models/global_milestone.rb
+++ b/app/models/global_milestone.rb
@@ -28,7 +28,7 @@ class GlobalMilestone
new(title, child_milestones)
end
- def self.states_count(projects)
+ def self.states_count(projects, group = nil)
relation = MilestonesFinder.new.execute(projects, state: 'all')
milestones_by_state_and_title = relation.reorder(nil).group(:state, :title).count
diff --git a/app/models/group_milestone.rb b/app/models/group_milestone.rb
index b9bd63656b3..87c422f33db 100644
--- a/app/models/group_milestone.rb
+++ b/app/models/group_milestone.rb
@@ -3,6 +3,16 @@ class GroupMilestone < ActiveRecord::Base
include Milestoneish
include CacheMarkdownField
+ class << self
+ # Build legacy group milestone which consists on all project milestones
+ # with the same title.
+ def build(group, projects, title)
+ GlobalMilestone.build(projects, title).tap do |milestone|
+ milestone&.group = group
+ end
+ end
+ end
+
def milestoneish_ids
id
end