Commit 135597648fd2fd2051be8cf8a55a520c0801dc64
1 parent
ca3640b8
Exists in
master
and in
1 other branch
Separate count caching and sorting to simplify code in AppsController#collection.
Showing
1 changed file
with
8 additions
and
17 deletions
Show diff stats
app/controllers/apps_controller.rb
... | ... | @@ -54,31 +54,22 @@ class AppsController < InheritedResources::Base |
54 | 54 | @apps ||= begin |
55 | 55 | apps = end_of_association_chain.all |
56 | 56 | |
57 | - if apps.count > 1 | |
58 | - apps = sort_by_unresolved_errs(apps) | |
59 | - elsif apps.count > 0 | |
60 | - app = apps.first | |
57 | + # Cache counts for unresolved errs and problems | |
58 | + apps.each do |app| | |
61 | 59 | @unresolved_counts[app.id] ||= app.problems.unresolved.count |
62 | 60 | @problem_counts[app.id] ||= app.problems.count |
63 | 61 | end |
64 | 62 | |
63 | + # Sort apps by number of unresolved errs, then problem counts. | |
64 | + apps.sort! do |a,b| | |
65 | + unresolved = @unresolved_counts[b.id] <=> @unresolved_counts[a.id] | |
66 | + unresolved != 0 ? unresolved : @problem_counts[b.id] <=> @problem_counts[a.id] | |
67 | + end | |
68 | + | |
65 | 69 | apps |
66 | 70 | end |
67 | 71 | end |
68 | 72 | |
69 | - # Sort apps by number of unresolved errs, descending. | |
70 | - # Caches the unresolved err counts while performing the sort. | |
71 | - def sort_by_unresolved_errs(apps) | |
72 | - apps.sort{|a,b| | |
73 | - [a,b].each do |app| | |
74 | - @unresolved_counts[app.id] ||= app.problems.unresolved.count | |
75 | - @problem_counts[app.id] ||= app.problems.count | |
76 | - end | |
77 | - unresolved = @unresolved_counts[b.id] <=> @unresolved_counts[a.id] | |
78 | - unresolved != 0 ? unresolved : @problem_counts[b.id] <=> @problem_counts[a.id] | |
79 | - } | |
80 | - end | |
81 | - | |
82 | 73 | def initialize_subclassed_issue_tracker |
83 | 74 | if params[:app][:issue_tracker_attributes] && tracker_type = params[:app][:issue_tracker_attributes][:type] |
84 | 75 | if IssueTracker.subclasses.map(&:name).concat(["IssueTracker"]).include?(tracker_type) | ... | ... |