From 86fc145c3c0c5056d7c6be1d62cd0b5beec2b1a9 Mon Sep 17 00:00:00 2001 From: Felipe Artur Date: Wed, 7 Jun 2017 18:14:23 -0300 Subject: [PATCH] Order issues by priority --- app/models/concerns/milestoneish.rb | 12 +++++++----- app/models/issue.rb | 2 +- app/views/shared/milestones/_issuables.html.haml | 4 ++-- app/views/shared/milestones/_sidebar.html.haml | 8 ++++---- app/views/shared/milestones/_tabs.html.haml | 2 +- changelogs/unreleased/issue_20900.yml | 2 +- lib/api/milestones.rb | 4 ++-- 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 -- GitLab