lib/branston/app/helpers/iterations_helper.rb in branston-0.4.5 vs lib/branston/app/helpers/iterations_helper.rb in branston-0.4.6
- old
+ new
@@ -1,40 +1,46 @@
module IterationsHelper
-
+
# TODO: Untested!
#
def burndown_chart(iteration, data)
-
- total_points = 0
- points_data = []
-
+
+ total_points = iteration.velocity
+ running_total = 0
+
unless data.nil? or data.empty?
- total_points = data[0].total_points.to_i
- points_data = data.collect{|d| d.points.to_i}
+ points_data = data.map { |d|
+ running_total += d.points.to_i
+ total_points - running_total
+ }
+
+
+ points_data = [total_points] + points_data unless points_data.nil?
+
+ work_days = [nil]
+ (iteration.start_date.to_date..iteration.end_date.to_date).to_a.each do |date|
+ work_days.push date.strftime('%d/%m') unless date.wday == 0 or date.wday == 6
+ end
+
+ # Keep adding the last value to flatline the chart
+ while work_days.length > points_data.length
+ points_data.push points_data.last
+ end
+
+ # Make some gradations for the y axis labels
+ y_scale = [0]
+ [4, 2, 1.5, 1.25, 1].each do |n|
+ unit = (total_points / n).floor
+ y_scale.push unit if unit > 0
+ end
+
+ image_tag Gchart.line(:size => '800x360',
+ :title => "Iteration #{iteration.name} burndown",
+ :data => points_data, :axis_with_labels => 'x,y',
+ :axis_labels => [work_days, y_scale])
+
+ end
+
end
-
- work_days = []
- (iteration.start_date.to_date..iteration.end_date.to_date).to_a.each do |date|
- work_days.push date.strftime('%d/%m') unless date.wday == 0 or date.wday == 6
- end
-
- # Keep adding the last value to flatline the chart
- while work_days.length > data.length
- data.push data[data.length - 1]
- end
-
- # Make some gradations for the y axis labels
- y_scale = [0]
- [4, 2, 1.5, 1.25, 1].each do |n|
- unit = (total_points / n).floor
- y_scale.push unit if unit > 0
- end
-
- image_tag Gchart.line(:size => '500x300',
- :title => "#{iteration.name} burndown",
- :data => points_data, :axis_with_labels => 'x,y',
- :axis_labels => [work_days, y_scale])
-
+
end
-
-end