diff --git a/app/assets/javascripts/milestone_select.js.coffee b/app/assets/javascripts/milestone_select.js.coffee index 10c776a05019c2785ca7ab309c44b834abd4c67b..b569b7eb7bf12d2a543500e068fb4e8e5763853a 100644 --- a/app/assets/javascripts/milestone_select.js.coffee +++ b/app/assets/javascripts/milestone_select.js.coffee @@ -50,19 +50,22 @@ class @MilestoneSelect extraOptions = [] if showAny extraOptions.push( - isAny: true + id: 0 + name: '' title: 'Any Milestone' ) if showNo extraOptions.push( - id: '0' + id: -1 + name: 'No Milestone' title: 'No Milestone' ) if showUpcoming extraOptions.push( - id: '#upcoming' + id: -2 + name: '#upcoming' title: 'Upcoming' ) >>>>>>> Updated to only include upcoming on filters @@ -84,14 +87,11 @@ class @MilestoneSelect milestone.title id: (milestone) -> if !useId - if !milestone.isAny? - milestone.title - else - '' + milestone.name else milestone.id isSelected: (milestone) -> - milestone.title is selectedMilestone + milestone.name is selectedMilestone hidden: -> $selectbox.hide() $value.show() @@ -99,8 +99,10 @@ class @MilestoneSelect if $dropdown.hasClass 'js-filter-bulk-update' return - if $dropdown.hasClass 'js-filter-submit' - if selected.title? + if $dropdown.hasClass('js-filter-submit') and (isIssueIndex or isMRIndex) + if selected.name? + selectedMilestone = selected.name + else if selected.title? selectedMilestone = selected.title $dropdown.parents('form').submit() else diff --git a/app/controllers/projects/milestones_controller.rb b/app/controllers/projects/milestones_controller.rb index 5b0a63a933cce51b63d203b5eb03a50c0db8f175..f7b6d137bde73e3e54a2870dd7e470d3bcfd47d9 100644 --- a/app/controllers/projects/milestones_controller.rb +++ b/app/controllers/projects/milestones_controller.rb @@ -24,7 +24,7 @@ class Projects::MilestonesController < Projects::ApplicationController @milestones = @milestones.page(params[:page]) end format.json do - render json: @milestones + render json: @milestones.to_json(methods: :name) end end end diff --git a/app/finders/issuable_finder.rb b/app/finders/issuable_finder.rb index a7799b91eb8a9abbb4d2027712524fc75e994b6b..f1df6832bf661eda41d1a811b1614b5901950184 100644 --- a/app/finders/issuable_finder.rb +++ b/app/finders/issuable_finder.rb @@ -243,7 +243,7 @@ class IssuableFinder end def filter_by_upcoming_milestone? - params[:milestone_title] == 'Upcoming' + params[:milestone_title] == Milestone::Upcoming.name end def by_milestone(items) diff --git a/app/helpers/issuables_helper.rb b/app/helpers/issuables_helper.rb index 62050691a39505971abeedb54ef25872de5f3418..53e53977da260db5700a7ed52326940c693bcec6 100644 --- a/app/helpers/issuables_helper.rb +++ b/app/helpers/issuables_helper.rb @@ -47,6 +47,20 @@ module IssuablesHelper end end + def milestone_dropdown_label(milestone_title, default_label) + milestone_title = if milestone_title == Milestone::Upcoming.name + Milestone::Upcoming.title + else + milestone_title + end + + if !milestone_title.nil? && !milestone_title.empty? + h(milestone_title) + else + default_label + end + end + private def sidebar_gutter_collapsed? diff --git a/app/models/global_milestone.rb b/app/models/global_milestone.rb index 97bd79af083027cdbd9c0fcac1250364fb397ac8..9c0e7e4fb63cf216b34a8d7d821f1a57dd75dbbf 100644 --- a/app/models/global_milestone.rb +++ b/app/models/global_milestone.rb @@ -8,12 +8,13 @@ class GlobalMilestone milestones = milestones.group_by(&:title) milestones.map do |title, milestones| - new(title, milestones) + new(title, milestones) end end def initialize(title, milestones) @title = title + @name = title @milestones = milestones end diff --git a/app/views/shared/issuable/_milestone_dropdown.html.haml b/app/views/shared/issuable/_milestone_dropdown.html.haml index 05841ba4392698de75a6f17c3e4c167f8ad7c0c1..cfa45d22b3e03cf5f7fe9c88349fc99da380fe59 100644 --- a/app/views/shared/issuable/_milestone_dropdown.html.haml +++ b/app/views/shared/issuable/_milestone_dropdown.html.haml @@ -1,6 +1,6 @@ - if params[:milestone_title] = hidden_field_tag(:milestone_title, params[:milestone_title]) -= dropdown_tag(h(params[:milestone_title].presence || "Milestone"), options: { title: "Filter by milestone", toggle_class: 'js-milestone-select js-filter-submit', filter: true, dropdown_class: "dropdown-menu-selectable", += dropdown_tag(milestone_dropdown_label(params[:milestone_title], "Milestone"), options: { title: "Filter by milestone", toggle_class: 'js-milestone-select js-filter-submit', filter: true, dropdown_class: "dropdown-menu-selectable", placeholder: "Search milestones", footer_content: @project.present?, data: { show_no: true, show_any: true, show_upcoming: true, field_name: "milestone_title", selected: params[:milestone_title], project_id: @project.try(:id), milestones: milestones_filter_dropdown_path, default_label: "Milestone" } }) do - if @project %ul.dropdown-footer-list