Class: TimeTree::ActivityTree
- Inherits:
-
Object
- Object
- TimeTree::ActivityTree
- Defined in:
- lib/time_tree/activity_tree.rb
Instance Attribute Summary collapse
-
#activities ⇒ Object
readonly
Returns the value of attribute activities.
-
#output ⇒ Object
readonly
Returns the value of attribute output.
Instance Method Summary collapse
-
#initialize ⇒ ActivityTree
constructor
A new instance of ActivityTree.
- #load(activities, minutes, description, level = 0, target = @activities) ⇒ Object
- #print ⇒ Object
- #process(level = 0, target = activities) ⇒ Object
- #to_hrs_mins(mins) ⇒ Object
Constructor Details
#initialize ⇒ ActivityTree
Returns a new instance of ActivityTree.
5 6 7 8 |
# File 'lib/time_tree/activity_tree.rb', line 5 def initialize @activities = {} @output = [] end |
Instance Attribute Details
#activities ⇒ Object (readonly)
Returns the value of attribute activities.
3 4 5 |
# File 'lib/time_tree/activity_tree.rb', line 3 def activities @activities end |
#output ⇒ Object (readonly)
Returns the value of attribute output.
3 4 5 |
# File 'lib/time_tree/activity_tree.rb', line 3 def output @output end |
Instance Method Details
#load(activities, minutes, description, level = 0, target = @activities) ⇒ Object
10 11 12 13 14 15 16 17 |
# File 'lib/time_tree/activity_tree.rb', line 10 def load(activities, minutes, description, level = 0, target = @activities) activities.unshift 'All' if level == 0 activity = activities.shift target[activity] = {:minutes => 0, :children => {}, :descriptions => []} unless target[activity] target[activity][:minutes] += minutes target[activity][:descriptions] << description if activities.size == 0 && description load(activities, minutes, description, level+1, target[activity][:children]) if activities.any? end |
#print ⇒ Object
34 35 36 |
# File 'lib/time_tree/activity_tree.rb', line 34 def print puts output.join("\n") end |
#process(level = 0, target = activities) ⇒ Object
19 20 21 22 23 24 25 26 27 |
# File 'lib/time_tree/activity_tree.rb', line 19 def process(level = 0, target = activities) target.sort.each do |activity, values| output << "%-25s %4d min (%s) %s" % ["#{(1..level*2).to_a.map{' '}.join}#{activity}", values[:minutes], to_hrs_mins(values[:minutes]), values[:descriptions].uniq.join(' - ')] process(level+1, values[:children]) if values[:children].any? end end |
#to_hrs_mins(mins) ⇒ Object
29 30 31 32 |
# File 'lib/time_tree/activity_tree.rb', line 29 def to_hrs_mins(mins) hours = (mins/60.0).floor "%d:%02d" % [hours, mins - (hours*60)] end |