summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/finders/issuable_finder.rb8
-rw-r--r--app/helpers/milestones_helper.rb1
-rw-r--r--app/models/milestone.rb1
3 files changed, 10 insertions, 0 deletions
diff --git a/app/finders/issuable_finder.rb b/app/finders/issuable_finder.rb
index c88a420b412..410e6f6456c 100644
--- a/app/finders/issuable_finder.rb
+++ b/app/finders/issuable_finder.rb
@@ -94,6 +94,10 @@ class IssuableFinder
params[:milestone_title].present?
end
+ def upcoming?
+ params[:milestone_title] == 'Upcoming'
+ end
+
def filter_by_no_milestone?
milestones? && params[:milestone_title] == Milestone::None.title
end
@@ -248,6 +252,10 @@ class IssuableFinder
if milestones?
if filter_by_no_milestone?
items = items.where(milestone_id: [-1, nil])
+ elsif upcoming?
+ upcoming = Milestone.where(project_id: projects)
+ .where('due_date > ?', Time.now).order(due_date: :asc).first
+ items = items.joins(:milestone).where(milestone: { title: upcoming.title })
else
items = items.joins(:milestone).where(milestones: { title: params[:milestone_title] })
diff --git a/app/helpers/milestones_helper.rb b/app/helpers/milestones_helper.rb
index e3e7daa49c5..e8ac8788d9d 100644
--- a/app/helpers/milestones_helper.rb
+++ b/app/helpers/milestones_helper.rb
@@ -59,6 +59,7 @@ module MilestonesHelper
grouped_milestones = grouped_milestones.sort_by { |x| x.due_date.nil? ? epoch : x.due_date }
grouped_milestones.unshift(Milestone::None)
grouped_milestones.unshift(Milestone::Any)
+ grouped_milestones.unshift(Milestone::Upcoming)
options_from_collection_for_select(grouped_milestones, 'name', 'title', params[:milestone_title])
end
diff --git a/app/models/milestone.rb b/app/models/milestone.rb
index e3b6c552f92..85f7d8a7754 100644
--- a/app/models/milestone.rb
+++ b/app/models/milestone.rb
@@ -19,6 +19,7 @@ class Milestone < ActiveRecord::Base
MilestoneStruct = Struct.new(:title, :name, :id)
None = MilestoneStruct.new('No Milestone', 'No Milestone', 0)
Any = MilestoneStruct.new('Any Milestone', '', -1)
+ Upcoming = MilestoneStruct.new('Upcoming', '', -2)
include InternalId
include Sortable