summaryrefslogtreecommitdiff
path: root/app/models/group_milestone.rb
diff options
context:
space:
mode:
authorFatih Acet <acetfatih@gmail.com>2018-12-20 12:14:33 +0100
committerFatih Acet <acetfatih@gmail.com>2018-12-20 13:33:09 +0100
commite9ef02096be859e31c155174fe2784d8a7ba73e3 (patch)
treec839c271e35cd1474801ff20d90bf9be3a2135bf /app/models/group_milestone.rb
parentf7ac8041f7ba3639085c26b4185eda00fd54a6e7 (diff)
downloadgitlab-ce-e9ef02096be859e31c155174fe2784d8a7ba73e3.tar.gz
Add project milestone link to dashboard milestonesccr/49289_milestone_link
One of the steps to deprecate dashboard milestones. Links do dashboard milestone are replaced with links for each project milestone
Diffstat (limited to 'app/models/group_milestone.rb')
-rw-r--r--app/models/group_milestone.rb29
1 files changed, 23 insertions, 6 deletions
diff --git a/app/models/group_milestone.rb b/app/models/group_milestone.rb
index 9dfaebacc83..a58537de319 100644
--- a/app/models/group_milestone.rb
+++ b/app/models/group_milestone.rb
@@ -1,18 +1,35 @@
# frozen_string_literal: true
# Group Milestones are milestones that can be shared among many projects within the same group
class GroupMilestone < GlobalMilestone
- attr_accessor :group
+ attr_reader :group, :milestones
def self.build_collection(group, projects, params)
- super(projects, params).each do |milestone|
- milestone.group = group
+ params =
+ { state: params[:state] }
+
+ project_milestones = Milestone.of_projects(projects)
+ child_milestones = Milestone.filter_by_state(project_milestones, params[:state])
+ grouped_milestones = child_milestones.group_by(&:title)
+
+ grouped_milestones.map do |title, grouped|
+ new(title, grouped, group)
end
end
def self.build(group, projects, title)
- super(projects, title).tap do |milestone|
- milestone&.group = group
- end
+ child_milestones = Milestone.of_projects(projects).where(title: title)
+ return if child_milestones.blank?
+
+ new(title, child_milestones, group)
+ end
+
+ def initialize(title, milestones, group)
+ @milestones = milestones
+ @group = group
+ end
+
+ def milestone
+ @milestone ||= milestones.find { |m| m.description.present? } || milestones.first
end
def issues_finder_params