Class: Rtt::Task
- Inherits:
-
Object
- Object
- Rtt::Task
- Includes:
- DataMapper::Resource
- Defined in:
- lib/rtt/task.rb
Constant Summary collapse
- DEFAULT_NAME =
'Default task'
Class Method Summary collapse
Instance Method Summary collapse
- #add_current_spent_time_to_accumulated_spent_time ⇒ Object
- #clone_task(task) ⇒ Object
- #duration ⇒ Object
- #duration=(d) ⇒ Object
- #pause ⇒ Object
- #set_default_project ⇒ Object
- #set_default_user ⇒ Object
- #start ⇒ Object
- #stop ⇒ Object
- #time_difference_since_start_at ⇒ Object
Class Method Details
.task(task_name) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/rtt/task.rb', line 24 def self.task(task_name) base_attributes = { :name => task_name, :user => Rtt.current_user, :date => Date.today, :rate => (Rtt.current_project.rate if Rtt.current_project.present?) } if task_name.nil? existing_task = Task.first :active => true if existing_task existing_task else base_attributes.merge!(:name => DEFAULT_NAME) if task_name.blank? Task.create(base_attributes) end elsif (existing_task = Task.first base_attributes.merge({:start_at.gte => Date.today.beginning_of_day})).present? existing_task else Task.create(base_attributes) end end |
Instance Method Details
#add_current_spent_time_to_accumulated_spent_time ⇒ Object
48 49 50 |
# File 'lib/rtt/task.rb', line 48 def add_current_spent_time_to_accumulated_spent_time self.accumulated_spent_time = self.accumulated_spent_time + self.time_difference_since_start_at end |
#clone_task(task) ⇒ Object
52 53 54 55 56 57 |
# File 'lib/rtt/task.rb', line 52 def clone_task(task) task = Task.new task.attributes = self.attributes task.id = nil task end |
#duration ⇒ Object
59 60 61 62 |
# File 'lib/rtt/task.rb', line 59 def duration return '-' if end_at.blank? convert_to_hour_and_minutes(accumulated_spent_time) end |
#duration=(d) ⇒ Object
64 65 66 67 68 69 |
# File 'lib/rtt/task.rb', line 64 def duration=(d) return unless !!/^(\d{1,2})[hH]{1,2}(\d{1,2})[mM]{1,2}$/.match(d) self.start_at = DateTime.parse('00:00:01', self.date) self.end_at = DateTime.parse('00:00:01', self.date).advance(:hours => $1.to_i, :minutes => $2.to_i, :seconds => 1) self.accumulated_spent_time = self.time_difference_since_start_at end |
#pause ⇒ Object
85 86 87 88 89 |
# File 'lib/rtt/task.rb', line 85 def pause split_task if span_multiple_days? finish(DateTime.now, true) self end |
#set_default_project ⇒ Object
71 72 73 |
# File 'lib/rtt/task.rb', line 71 def set_default_project self.project = Project.default if self.project.nil? end |
#set_default_user ⇒ Object
75 76 77 |
# File 'lib/rtt/task.rb', line 75 def set_default_user self.user = User.default if self.user.nil? end |
#start ⇒ Object
41 42 43 44 45 46 |
# File 'lib/rtt/task.rb', line 41 def start self.start_at = DateTime.now self.active = true save self end |
#stop ⇒ Object
79 80 81 82 83 |
# File 'lib/rtt/task.rb', line 79 def stop split_task if span_multiple_days? finish self end |
#time_difference_since_start_at ⇒ Object
91 92 93 94 |
# File 'lib/rtt/task.rb', line 91 def time_difference_since_start_at end_date_or_now = self.end_at ? self.end_at : DateTime.now end_date_or_now - self.start_at end |