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