lib/saga/planning.rb in saga-0.7.1 vs lib/saga/planning.rb in saga-0.8.0

- old
+ new

@@ -35,10 +35,23 @@ end end unestimated end + def statusses + statusses = {} + @document.stories.values.each do |stories| + stories.each do |story| + if story[:estimate] and story[:status] + statusses[story[:status]] ||= 0 + statusses[story[:status]] += self.class.estimate_to_hours(story[:estimate]) + end + end + end + statusses + end + def to_s if @document.empty? "There are no stories yet." else parts = iterations.keys.sort.map do |iteration| @@ -47,15 +60,22 @@ unless parts.empty? formatted_totals = self.class.format_properties(false, total) parts << '-'*formatted_totals.length parts << formatted_totals end - parts << self.class.format_unestimated(unestimated) if unestimated > 0 + if unestimated > 0 or !statusses.empty? + parts << '' + parts << self.class.format_unestimated(unestimated) if unestimated > 0 + parts << self.class.format_statusses(statusses) unless statusses.empty? + end + parts.shift if parts[0] == '' parts.join("\n") end end + FIRST_COLUMN_WIDTH = 14 + def self.estimate_to_hours(estimate) case estimate[1] when :days estimate[0] * 8 when :weeks @@ -70,13 +90,21 @@ label = (iteration == -1) ? "Unplanned" : "Iteration #{iteration}" else label = 'Total' end story_column = (properties[:story_count] == 1) ? "#{properties[:story_count]} story" : "#{properties[:story_count]} stories" - "#{label.ljust(14)}: #{properties[:estimate_total_in_hours]} (#{story_column})" + "#{label.ljust(FIRST_COLUMN_WIDTH)}: #{properties[:estimate_total_in_hours]} (#{story_column})" end def self.format_unestimated(unestimated) "Unestimated : #{unestimated > 1 ? "#{unestimated} stories" : 'one story' }" + end + + def self.format_statusses(statusses) + parts = [] + statusses.each do |status, hours| + parts << "#{status.capitalize.ljust(FIRST_COLUMN_WIDTH)}: #{hours}" + end + parts.join("\n") end end end \ No newline at end of file