diff options
author | Fatih Acet <acetfatih@gmail.com> | 2018-12-20 12:14:33 +0100 |
---|---|---|
committer | Fatih Acet <acetfatih@gmail.com> | 2018-12-20 13:33:09 +0100 |
commit | e9ef02096be859e31c155174fe2784d8a7ba73e3 (patch) | |
tree | c839c271e35cd1474801ff20d90bf9be3a2135bf /app/models/group_milestone.rb | |
parent | f7ac8041f7ba3639085c26b4185eda00fd54a6e7 (diff) | |
download | gitlab-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.rb | 29 |
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 |