Patch #40798 » 0001-Improve-performance-of-Version-model-by-reducing-red.patch
app/models/version.rb | ||
---|---|---|
45 | 45 |
# Returns the completion percentage of this version based on the amount of open/closed issues |
46 | 46 |
# and the time spent on the open issues. |
47 | 47 |
def completed_percent |
48 |
if count == 0 |
|
49 |
0 |
|
50 |
elsif open_count == 0 |
|
51 |
100 |
|
52 |
else |
|
53 |
issues_progress(false) + issues_progress(true) |
|
54 |
end |
|
48 |
return 0 if open_count + closed_count == 0 |
|
49 |
return 100 if open_count == 0 |
|
50 | ||
51 |
issues_progress(false) + issues_progress(true) |
|
55 | 52 |
end |
56 | 53 | |
57 | 54 |
# Returns the percentage of issues that have been marked as 'closed'. |
58 | 55 |
def closed_percent |
59 |
if count == 0 |
|
60 |
0 |
|
61 |
else |
|
62 |
issues_progress(false) |
|
63 |
end |
|
56 |
return 0 if open_count + closed_count == 0 |
|
57 | ||
58 |
issues_progress(false) |
|
64 | 59 |
end |
65 | 60 | |
66 | 61 |
private |
... | ... | |
105 | 100 |
@issues_progress ||= {} |
106 | 101 |
@issues_progress[open] ||= begin |
107 | 102 |
progress = 0 |
108 |
if count > 0 |
|
103 |
issues_count = open_count + closed_count |
|
104 |
if issues_count > 0 |
|
109 | 105 |
done = self.open(open).sum do |c| |
110 | 106 |
estimated = c.total_estimated_hours.to_f |
111 | 107 |
estimated = estimated_average unless estimated > 0.0 |
112 | 108 |
ratio = c.closed? ? 100 : (c.done_ratio || 0) |
113 | 109 |
estimated * ratio |
114 | 110 |
end |
115 |
progress = done / (estimated_average * count) |
|
111 |
progress = done / (estimated_average * issues_count)
|
|
116 | 112 |
end |
117 | 113 |
progress |
118 | 114 |
end |