lib/branston/app/helpers/iterations_helper.rb in branston-0.4.0 vs lib/branston/app/helpers/iterations_helper.rb in branston-0.4.1

- old
+ new

@@ -1,2 +1,40 @@ module IterationsHelper + + # TODO: Untested! + # + def burndown_chart(iteration, data) + + total_points = 0 + points_data = [] + + unless data.nil? or data.empty? + total_points = data[0].total_points.to_i + points_data = data.collect{|d| d.points.to_i} + 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 +