From b9d13c11dee8f555b0d80fd5b9b6a42be7721461 Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Thu, 10 Mar 2016 01:49:13 +0000 Subject: [PATCH 1/6] implements upcoming filter in milstones --- app/finders/issuable_finder.rb | 8 ++++++++ app/helpers/milestones_helper.rb | 1 + app/models/milestone.rb | 1 + 3 files changed, 10 insertions(+) diff --git a/app/finders/issuable_finder.rb b/app/finders/issuable_finder.rb index c88a420b41..410e6f6456 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 e3e7daa49c..e8ac8788d9 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 e3b6c552f9..85f7d8a775 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 From 7530827ecae0596616623d1c4f7775b08d5ada3c Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Fri, 11 Mar 2016 17:46:14 +0000 Subject: [PATCH 2/6] fixes issues for mr acceptance --- app/finders/issuable_finder.rb | 13 ++++++------- app/models/milestone.rb | 7 ++++++- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/app/finders/issuable_finder.rb b/app/finders/issuable_finder.rb index 410e6f6456..d592bdd0eb 100644 --- a/app/finders/issuable_finder.rb +++ b/app/finders/issuable_finder.rb @@ -94,10 +94,6 @@ 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,14 +244,17 @@ class IssuableFinder items end + def upcoming? + params[:milestone_title] == '#upcoming' && projects + end + def by_milestone(items) 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 }) + upcoming = Milestone.upcoming(projects) + items = items.joins(:milestone).where(milestones: { title: upcoming.title }) else items = items.joins(:milestone).where(milestones: { title: params[:milestone_title] }) diff --git a/app/models/milestone.rb b/app/models/milestone.rb index 85f7d8a775..7697072d23 100644 --- a/app/models/milestone.rb +++ b/app/models/milestone.rb @@ -19,7 +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) + Upcoming = MilestoneStruct.new('Upcoming', '#upcoming', -2) include InternalId include Sortable @@ -82,6 +82,11 @@ class Milestone < ActiveRecord::Base super("milestones", /(?\d+)/) end + def self.upcoming(projects) + self.where(project_id: projects) + .where('due_date > ?', Time.now). order(due_date: :asc).first + end + def to_reference(from_project = nil) escaped_title = self.title.gsub("]", "\\]") From 0291473b98b457e85657aac29520b5f2b5b631ec Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Sat, 12 Mar 2016 16:54:05 +0000 Subject: [PATCH 3/6] fixes issues --- app/finders/issuable_finder.rb | 4 ++-- app/models/milestone.rb | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/app/finders/issuable_finder.rb b/app/finders/issuable_finder.rb index d592bdd0eb..5e22aca45f 100644 --- a/app/finders/issuable_finder.rb +++ b/app/finders/issuable_finder.rb @@ -245,7 +245,7 @@ class IssuableFinder end def upcoming? - params[:milestone_title] == '#upcoming' && projects + params[:milestone_title] == '#upcoming' end def by_milestone(items) @@ -253,7 +253,7 @@ class IssuableFinder if filter_by_no_milestone? items = items.where(milestone_id: [-1, nil]) elsif upcoming? - upcoming = Milestone.upcoming(projects) + upcoming = Milestone.where(project_id: projects).upcoming items = items.joins(:milestone).where(milestones: { title: upcoming.title }) else items = items.joins(:milestone).where(milestones: { title: params[:milestone_title] }) diff --git a/app/models/milestone.rb b/app/models/milestone.rb index 7697072d23..374590ba0c 100644 --- a/app/models/milestone.rb +++ b/app/models/milestone.rb @@ -82,9 +82,8 @@ class Milestone < ActiveRecord::Base super("milestones", /(?\d+)/) end - def self.upcoming(projects) - self.where(project_id: projects) - .where('due_date > ?', Time.now). order(due_date: :asc).first + def self.upcoming + self.where('due_date > ?', Time.now).order(due_date: :asc).first end def to_reference(from_project = nil) From 8e6bd86cf26dd6e659fc7ccaf7361029b256891a Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Sat, 12 Mar 2016 17:24:33 +0000 Subject: [PATCH 4/6] adds my name to changelog --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index d4554b9619..afef4b578c 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -35,6 +35,7 @@ v 8.5.5 - Prevent a 500 error in Todos when author was removed - Fix pagination for filtered dashboard and explore pages - Fix "Show all" link behavior + - Add #upcoming filter to Milestone filter (Tiago Botelho) v 8.5.4 - Do not cache requests for badges (including builds badge) From b94bdb698dedb519a8478440a3dc8a763856b6a0 Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Sat, 12 Mar 2016 17:44:29 +0000 Subject: [PATCH 5/6] removes tab and replaces with space in changelog --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index afef4b578c..2535a78af4 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -36,6 +36,7 @@ v 8.5.5 - Fix pagination for filtered dashboard and explore pages - Fix "Show all" link behavior - Add #upcoming filter to Milestone filter (Tiago Botelho) + - Add #upcoming filter to Milestone filter (Tiago Botelho) v 8.5.4 - Do not cache requests for badges (including builds badge) From d3b7633da4a3964eb4609c7591763aa8e43fd0eb Mon Sep 17 00:00:00 2001 From: tiagonbotelho Date: Sun, 13 Mar 2016 12:19:27 +0000 Subject: [PATCH 6/6] fixes small issues --- CHANGELOG | 1 - app/finders/issuable_finder.rb | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 2535a78af4..b7bc48802d 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -35,7 +35,6 @@ v 8.5.5 - Prevent a 500 error in Todos when author was removed - Fix pagination for filtered dashboard and explore pages - Fix "Show all" link behavior - - Add #upcoming filter to Milestone filter (Tiago Botelho) - Add #upcoming filter to Milestone filter (Tiago Botelho) v 8.5.4 diff --git a/app/finders/issuable_finder.rb b/app/finders/issuable_finder.rb index 5e22aca45f..19e8c7a92b 100644 --- a/app/finders/issuable_finder.rb +++ b/app/finders/issuable_finder.rb @@ -244,7 +244,7 @@ class IssuableFinder items end - def upcoming? + def filter_by_upcoming_milestone? params[:milestone_title] == '#upcoming' end @@ -252,7 +252,7 @@ class IssuableFinder if milestones? if filter_by_no_milestone? items = items.where(milestone_id: [-1, nil]) - elsif upcoming? + elsif filter_by_upcoming_milestone? upcoming = Milestone.where(project_id: projects).upcoming items = items.joins(:milestone).where(milestones: { title: upcoming.title }) else