summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Artur <felipefac@gmail.com>2017-06-07 18:14:23 -0300
committerFelipe Artur <felipefac@gmail.com>2017-06-09 11:36:51 -0300
commitc8d0f54e6d712afd48d0e38b4b5d0cf0e7f653fa (patch)
tree84d9ee30cb27419ab8cf26dbece7376bc0c84e20
parentafc53a755ff91419c2b4b77b37fa1f0320144597 (diff)
downloadgitlab-ce-c8d0f54e6d712afd48d0e38b4b5d0cf0e7f653fa.tar.gz
Order issues by priority
-rw-r--r--app/models/concerns/milestoneish.rb12
-rw-r--r--app/models/issue.rb2
-rw-r--r--app/views/shared/milestones/_issuables.html.haml4
-rw-r--r--app/views/shared/milestones/_sidebar.html.haml8
-rw-r--r--app/views/shared/milestones/_tabs.html.haml2
-rw-r--r--changelogs/unreleased/issue_20900.yml2
-rw-r--r--lib/api/milestones.rb4
7 files changed, 18 insertions, 16 deletions
diff --git a/app/models/concerns/milestoneish.rb b/app/models/concerns/milestoneish.rb
index a3472af5c55..2b177641ecc 100644
--- a/app/models/concerns/milestoneish.rb
+++ b/app/models/concerns/milestoneish.rb
@@ -1,7 +1,7 @@
module Milestoneish
def closed_items_count(user)
memoize_per_user(user, :closed_items_count) do
- (count_issues_by_state(user)['closed'] || 0) + merge_requests.closed_and_merged.size
+ (count_issues_by_state(user)['closed'].count || 0) + merge_requests.closed_and_merged.size
end
end
@@ -12,7 +12,7 @@ module Milestoneish
end
def total_issues_count(user)
- count_issues_by_state(user).values.sum
+ issues_visible_to_user(user).length
end
def complete?(user)
@@ -39,8 +39,8 @@ module Milestoneish
def issues_visible_to_user(user)
memoize_per_user(user, :issues_visible_to_user) do
- IssuesFinder.new(user, issues_finder_params)
- .execute.includes(:assignees).where(milestone_id: milestoneish_ids)
+ IssuesFinder.new(user, issues_finder_params.merge({ sort: 'priority'}))
+ .execute.preload(:assignees).where(milestone_id: milestoneish_ids)
end
end
@@ -66,7 +66,9 @@ module Milestoneish
def count_issues_by_state(user)
memoize_per_user(user, :count_issues_by_state) do
- issues_visible_to_user(user).reorder(nil).group(:state).count
+ # Need to group and count using ruby array to not break
+ # label ordering
+ issues_visible_to_user(user).to_a.group_by(&:state)
end
end
diff --git a/app/models/issue.rb b/app/models/issue.rb
index 693cc21bb40..2cede9d284b 100644
--- a/app/models/issue.rb
+++ b/app/models/issue.rb
@@ -44,7 +44,7 @@ class Issue < ActiveRecord::Base
scope :created_after, -> (datetime) { where("created_at >= ?", datetime) }
- scope :include_associations, -> { includes(:labels, project: :namespace) }
+ scope :preload_associations, -> { preload(:labels, project: :namespace) }
after_save :expire_etag_cache
diff --git a/app/views/shared/milestones/_issuables.html.haml b/app/views/shared/milestones/_issuables.html.haml
index f683b50a62a..7175e275f95 100644
--- a/app/views/shared/milestones/_issuables.html.haml
+++ b/app/views/shared/milestones/_issuables.html.haml
@@ -8,11 +8,11 @@
= title
- if show_counter
.counter
- = number_with_delimiter(issuables.size)
+ = number_with_delimiter(issuables.length)
- class_prefix = dom_class(issuables).pluralize
%ul{ class: "well-list milestone-#{class_prefix}-list", id: "#{class_prefix}-list-#{id}" }
= render partial: 'shared/milestones/issuable',
- collection: issuables.recent,
+ collection: issuables,
as: :issuable,
locals: { show_project_name: show_project_name, show_full_project_name: show_full_project_name }
diff --git a/app/views/shared/milestones/_sidebar.html.haml b/app/views/shared/milestones/_sidebar.html.haml
index 9bb87640319..e75edd750ff 100644
--- a/app/views/shared/milestones/_sidebar.html.haml
+++ b/app/views/shared/milestones/_sidebar.html.haml
@@ -68,10 +68,10 @@
.sidebar-collapsed-icon
%strong
= icon('hashtag', 'aria-hidden': 'true')
- %span= milestone.issues_visible_to_user(current_user).count
+ %span= milestone.issues_visible_to_user(current_user).length
.title.hide-collapsed
Issues
- %span.badge= milestone.issues_visible_to_user(current_user).count
+ %span.badge= milestone.issues_visible_to_user(current_user).length
- if project && can?(current_user, :create_issue, project)
= link_to new_namespace_project_issue_path(project.namespace, project, issue: { milestone_id: milestone.id }), class: "pull-right", title: "New Issue" do
New issue
@@ -79,11 +79,11 @@
%span.milestone-stat
= link_to milestones_browse_issuables_path(milestone, type: :issues) do
Open:
- = milestone.issues_visible_to_user(current_user).opened.count
+ = milestone.issues_visible_to_user(current_user).opened.length
%span.milestone-stat
= link_to milestones_browse_issuables_path(milestone, type: :issues, state: 'closed') do
Closed:
- = milestone.issues_visible_to_user(current_user).closed.count
+ = milestone.issues_visible_to_user(current_user).closed.length
.block.merge-requests
.sidebar-collapsed-icon
diff --git a/app/views/shared/milestones/_tabs.html.haml b/app/views/shared/milestones/_tabs.html.haml
index 6a6d817b344..b18f903bc1f 100644
--- a/app/views/shared/milestones/_tabs.html.haml
+++ b/app/views/shared/milestones/_tabs.html.haml
@@ -31,7 +31,7 @@
.tab-content.milestone-content
- if milestone.is_a?(GlobalMilestone) || can?(current_user, :read_issue, @project)
.tab-pane.active#tab-issues{ data: { sort_endpoint: (sort_issues_namespace_project_milestone_path(@project.namespace, @project, @milestone) if @project && current_user) } }
- = render 'shared/milestones/issues_tab', issues: milestone.issues_visible_to_user(current_user).include_associations, show_project_name: show_project_name, show_full_project_name: show_full_project_name
+ = render 'shared/milestones/issues_tab', issues: milestone.issues_visible_to_user(current_user).preload_associations, show_project_name: show_project_name, show_full_project_name: show_full_project_name
.tab-pane#tab-merge-requests{ data: { sort_endpoint: (sort_merge_requests_namespace_project_milestone_path(@project.namespace, @project, @milestone) if @project && current_user) } }
-# loaded async
= render "shared/milestones/tab_loading"
diff --git a/changelogs/unreleased/issue_20900.yml b/changelogs/unreleased/issue_20900.yml
index 71586013b8b..e8cef6d2bce 100644
--- a/changelogs/unreleased/issue_20900.yml
+++ b/changelogs/unreleased/issue_20900.yml
@@ -1,4 +1,4 @@
---
-title: Remove Drag and drop and sorting from milestone view
+title: Remove issues/merge requests drag n drop and sorting from milestone view
merge_request:
author:
diff --git a/lib/api/milestones.rb b/lib/api/milestones.rb
index e26011db174..3541d3c95fb 100644
--- a/lib/api/milestones.rb
+++ b/lib/api/milestones.rb
@@ -117,7 +117,7 @@ module API
finder_params = {
project_id: user_project.id,
milestone_title: milestone.title,
- sort: 'created_desc'
+ sort: 'label_priority'
}
issues = IssuesFinder.new(current_user, finder_params).execute
@@ -140,7 +140,7 @@ module API
finder_params = {
project_id: user_project.id,
milestone_title: milestone.title,
- sort: 'created_desc'
+ sort: 'label_priority'
}
merge_requests = MergeRequestsFinder.new(current_user, finder_params).execute