Feature #2182 » version_completion.patch
app/models/version.rb (copie de travail) | ||
---|---|---|
55 | 55 |
elsif open_issues_count == 0 |
56 | 56 |
100 |
57 | 57 |
else |
58 |
(closed_issues_count * 100 + Issue.sum('done_ratio', :include => 'status', :conditions => ["fixed_version_id = ? AND is_closed = ?", id, false]).to_f) / fixed_issues.count
|
|
58 |
issues_progress(false) + issues_progress(true)
|
|
59 | 59 |
end |
60 | 60 |
end |
61 | 61 |
|
... | ... | |
63 | 63 |
if fixed_issues.count == 0 |
64 | 64 |
0 |
65 | 65 |
else |
66 |
closed_issues_count * 100.0 / fixed_issues.count
|
|
66 |
issues_progress(false)
|
|
67 | 67 |
end |
68 | 68 |
end |
69 | 69 |
|
... | ... | |
103 | 103 |
def check_integrity |
104 | 104 |
raise "Can't delete version" if self.fixed_issues.find(:first) |
105 | 105 |
end |
106 |
|
|
107 |
def estimated_average |
|
108 |
if @estimated_average.nil? |
|
109 |
average = Issue.average(:estimated_hours, |
|
110 |
:conditions => ["fixed_version_id = ?", id]).to_f |
|
111 |
if average == 0 |
|
112 |
average = 1 |
|
113 |
end |
|
114 |
@estimated_average = average |
|
115 |
end |
|
116 |
@estimated_average |
|
117 |
end |
|
118 |
|
|
119 |
def issues_progress(open) |
|
120 |
progress = 0 |
|
121 |
if fixed_issues.count > 0 |
|
122 |
ratio = open ? 'done_ratio' : 100 |
|
123 |
done = Issue.sum("COALESCE(estimated_hours, #{estimated_average}) * #{ratio}", |
|
124 |
:include => :status, |
|
125 |
:conditions => ["fixed_version_id = ? AND is_closed = ?", id, !open]).to_f |
|
126 |
|
|
127 |
progress = done / (estimated_average * fixed_issues.count) |
|
128 |
end |
|
129 |
progress |
|
130 |
end |
|
106 | 131 |
end |