Skip to content
Snippets Groups Projects
Commit e6ee8d0e authored by Dominik Sander's avatar Dominik Sander
Browse files

Group milestones by title in the dashboard and all other issue views

This groups milestones by title for issue views like it has been done for
the milestone dashboard/project overview. Before milestones with the
same title would show up multiple times in the filter dropdown and one could
only filter per project and milestone. Now the milestone filter is based
on the title of the milestone, i.e. all issues marked with the same
milestone title are shown.
parent 8d17e79d
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -20,6 +20,7 @@ v 7.11.0 (unreleased)
- Don't crash when an MR from a fork has a cross-reference comment from the target project on of its commits.
- Include commit comments in MR from a forked project.
- Fix adding new group members from admin area
- Group milestones by title in the dashboard and all other issue views.
- Add default project and snippet visibility settings to the admin web UI.
-
- Fix bug where commit data would not appear in some subdirectories (Stan Hu)
Loading
Loading
Loading
Loading
@@ -113,8 +113,9 @@ class IssuableFinder
end
 
def by_milestone(items)
if params[:milestone_id].present?
items = items.where(milestone_id: (params[:milestone_id] == NONE ? nil : params[:milestone_id]))
if params[:milestone_title].present?
milestone_ids = (params[:milestone_title] == NONE ? nil : Milestone.where(title: params[:milestone_title]).pluck(:id))
items = items.where(milestone_id: milestone_ids)
end
 
items
Loading
Loading
Loading
Loading
@@ -28,6 +28,7 @@ module MilestonesHelper
Milestone.where(project_id: @projects)
end.active
 
options_from_collection_for_select(milestones, 'id', 'title', params[:milestone_id])
grouped_milestones = Milestones::GroupService.new(milestones).execute
options_from_collection_for_select(grouped_milestones, 'title', 'title', params[:milestone_title])
end
end
Loading
Loading
@@ -15,7 +15,7 @@
#{state_filters_text_for(:all, @project)}
 
.issues-details-filters
= form_tag page_filter_path(without: [:assignee_id, :author_id, :milestone_id, :label_name]), method: :get, class: 'filter-form' do
= form_tag page_filter_path(without: [:assignee_id, :author_id, :milestone_title, :label_name]), method: :get, class: 'filter-form' do
- if controller.controller_name == 'issues'
.check-all-holder
= check_box_tag "check_all_issues", nil, false,
Loading
Loading
@@ -31,7 +31,7 @@
placeholder: 'Author', class: 'trigger-submit', any_user: true, first_user: true)
 
.filter-item.inline.milestone-filter
= select_tag('milestone_id', projects_milestones_options, class: "select2 trigger-submit", prompt: 'Milestone')
= select_tag('milestone_title', projects_milestones_options, class: "select2 trigger-submit", prompt: 'Milestone')
 
- if @project
.filter-item.inline.labels-filter
Loading
Loading
Loading
Loading
@@ -95,7 +95,7 @@ describe 'Issues', feature: true do
let(:issue) { @issue }
 
it 'should allow filtering by issues with no specified milestone' do
visit namespace_project_issues_path(project.namespace, project, milestone_id: IssuableFinder::NONE)
visit namespace_project_issues_path(project.namespace, project, milestone_title: IssuableFinder::NONE)
 
expect(page).not_to have_content 'foobar'
expect(page).to have_content 'barbaz'
Loading
Loading
@@ -103,7 +103,7 @@ describe 'Issues', feature: true do
end
 
it 'should allow filtering by a specified milestone' do
visit namespace_project_issues_path(project.namespace, project, milestone_id: issue.milestone.id)
visit namespace_project_issues_path(project.namespace, project, milestone_title: issue.milestone.title)
 
expect(page).to have_content 'foobar'
expect(page).not_to have_content 'barbaz'
Loading
Loading
Loading
Loading
@@ -43,7 +43,7 @@ describe IssuesFinder do
end
 
it 'should filter by milestone id' do
params = { scope: "all", milestone_id: milestone.id, state: 'opened' }
params = { scope: "all", milestone_title: milestone.title, state: 'opened' }
issues = IssuesFinder.new.execute(user, params)
expect(issues).to eq([issue1])
end
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment