Commit 909deaa3 authored by Dan Rowden's avatar Dan Rowden Committed by Alfredo Sumaran

Improved milestone counts with a single query

parent 431506bf
...@@ -35,17 +35,16 @@ module MilestonesHelper ...@@ -35,17 +35,16 @@ module MilestonesHelper
milestone.issues.with_label(label.title).send(state).size milestone.issues.with_label(label.title).send(state).size
end end
def milestone_count_by_state(project, state) # Returns count of milestones for different states
if project.nil? # Uses explicit hash keys as the 'opened' state URL params differs from the db value
nil # and we need to add the total
else def milestone_counts(project:)
case state counts = @project.milestones.reorder(nil).group(:state).count()
when 'all' then @project.milestones.size {
when 'closed' then @project.milestones.closed.size 'opened' => counts['active'],
when 'opened' then @project.milestones.active.size 'closed' => counts['closed'],
else nil 'all' => counts['active'] + counts['closed']
end }
end
end end
def milestone_progress_bar(milestone) def milestone_progress_bar(milestone)
......
- counts = milestone_counts(project: @project)
%ul.nav-links %ul.nav-links
%li{class: ("active" if params[:state].blank? || params[:state] == 'opened')} %li{class: ("active" if params[:state].blank? || params[:state] == 'opened')}
= link_to milestones_filter_path(state: 'opened') do = link_to milestones_filter_path(state: 'opened') do
Open Open
%span.badge #{milestone_count_by_state(@project, 'opened')} %span.badge #{counts['opened']}
%li{class: ("active" if params[:state] == 'closed')} %li{class: ("active" if params[:state] == 'closed')}
= link_to milestones_filter_path(state: 'closed') do = link_to milestones_filter_path(state: 'closed') do
Closed Closed
%span.badge #{milestone_count_by_state(@project, 'closed')} %span.badge #{counts['closed']}
%li{class: ("active" if params[:state] == 'all')} %li{class: ("active" if params[:state] == 'all')}
= link_to milestones_filter_path(state: 'all') do = link_to milestones_filter_path(state: 'all') do
All All
%span.badge #{milestone_count_by_state(@project, 'all')} %span.badge #{counts['all']}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment