Class: Devlog::Parsing
- Inherits:
-
Object
- Object
- Devlog::Parsing
- Defined in:
- lib/devlog.rb
Overview
the parsing object
Instance Attribute Summary collapse
-
#coding_session_time ⇒ Object
this is the total time, but each session has these same params.
-
#com_session_time ⇒ Object
this is the total time, but each session has these same params.
-
#devlog_file ⇒ Object
Returns the value of attribute devlog_file.
-
#payed_time ⇒ Object
this is the total time, but each session has these same params.
-
#zezzions ⇒ Object
Returns the value of attribute zezzions.
Instance Method Summary collapse
- #add_zezzion(zezzion) ⇒ Object
-
#charge_time ⇒ Object
total charge time in hours, coding plus communication sessions.
-
#devlog_begin ⇒ Object
global devlog start, first entry.
-
#devlog_days ⇒ Object
how many days devlog spans.
-
#devlog_end ⇒ Object
global devlog end, last entry.
- #devlog_months ⇒ Object
-
#devlog_sessions ⇒ Object
return all sessions.
-
#devlog_weeks ⇒ Object
how many weeks devlog spans.
- #first_session ⇒ Object
-
#hours_for_last(days, beginTime = DateTime.now) ⇒ Object
return hours worked for the last X days, from beginTime.
-
#initialize(viewing_time_current_date = DateTime.now) ⇒ Parsing
constructor
A new instance of Parsing.
- #last_session ⇒ Object
- #longest_session ⇒ Object
- #negative_sessions ⇒ Object
- #negative_sessions_to_s ⇒ Object
-
#per_day ⇒ Object
hours per day.
- #per_month ⇒ Object
- #per_week ⇒ Object
-
#session_time ⇒ Object
how much time between first session begin and last session end in seconds def devlog_time (self.devlog_end.to_time - self.devlog_begin.to_time)/60.0/60.0 end.
- #shortest_session ⇒ Object
- #to_info_string ⇒ Object
-
#unpayed_time ⇒ Object
total charge time in hours, coding plus communication sessions - payed hours.
- #validation_string ⇒ Object
- #zero_sessions ⇒ Object
- #zero_sessions_to_s ⇒ Object
Constructor Details
#initialize(viewing_time_current_date = DateTime.now) ⇒ Parsing
Returns a new instance of Parsing.
271 272 273 274 275 276 277 278 279 280 281 |
# File 'lib/devlog.rb', line 271 def initialize(viewing_time_current_date=DateTime.now) @viewing_time_current_date = viewing_time_current_date @zezzions = [] #backward compatible object with Tajm, from devlog 0.0.0 @coding_session_time = 0.0 @com_session_time = 0.0 @payed_time = 0.0 @devlog_file = "" end |
Instance Attribute Details
#coding_session_time ⇒ Object
this is the total time, but each session has these same params
267 268 269 |
# File 'lib/devlog.rb', line 267 def coding_session_time @coding_session_time end |
#com_session_time ⇒ Object
this is the total time, but each session has these same params
267 268 269 |
# File 'lib/devlog.rb', line 267 def com_session_time @com_session_time end |
#devlog_file ⇒ Object
Returns the value of attribute devlog_file.
269 270 271 |
# File 'lib/devlog.rb', line 269 def devlog_file @devlog_file end |
#payed_time ⇒ Object
this is the total time, but each session has these same params
267 268 269 |
# File 'lib/devlog.rb', line 267 def payed_time @payed_time end |
#zezzions ⇒ Object
Returns the value of attribute zezzions.
269 270 271 |
# File 'lib/devlog.rb', line 269 def zezzions @zezzions end |
Instance Method Details
#add_zezzion(zezzion) ⇒ Object
283 284 285 |
# File 'lib/devlog.rb', line 283 def add_zezzion(zezzion) @zezzions << zezzion end |
#charge_time ⇒ Object
total charge time in hours, coding plus communication sessions
334 335 336 |
# File 'lib/devlog.rb', line 334 def charge_time (coding_session_time + com_session_time).round(2) end |
#devlog_begin ⇒ Object
global devlog start, first entry
288 289 290 |
# File 'lib/devlog.rb', line 288 def devlog_begin @zezzions.last.zzbegin end |
#devlog_days ⇒ Object
how many days devlog spans
308 309 310 311 |
# File 'lib/devlog.rb', line 308 def devlog_days count_time(:days=>1) #(self.devlog_end - self.devlog_begin).to_i + 1 #counting days like this, would not account for daylight saving changes end |
#devlog_end ⇒ Object
global devlog end, last entry
293 294 295 |
# File 'lib/devlog.rb', line 293 def devlog_end @zezzions.first.zzend end |
#devlog_months ⇒ Object
318 319 320 |
# File 'lib/devlog.rb', line 318 def devlog_months count_time(:months=>1) end |
#devlog_sessions ⇒ Object
return all sessions
384 385 386 |
# File 'lib/devlog.rb', line 384 def devlog_sessions @zezzions end |
#devlog_weeks ⇒ Object
how many weeks devlog spans
314 315 316 |
# File 'lib/devlog.rb', line 314 def devlog_weeks (devlog_days/7.0).round(2) end |
#first_session ⇒ Object
379 380 381 |
# File 'lib/devlog.rb', line 379 def first_session @zezzions.last #devlog_end end |
#hours_for_last(days, beginTime = DateTime.now) ⇒ Object
return hours worked for the last X days, from beginTime
344 345 346 347 348 349 |
# File 'lib/devlog.rb', line 344 def hours_for_last(days, beginTime=DateTime.now) endTime = beginTime.to_time - days.days selected_zezzions = @zezzions.select{|z| z.zzbegin.to_time<beginTime && z.zzend>=endTime} #puts("Selected sessons from #{beginTime} to #{endTime}: #{selected_zezzions.size}") selected_zezzions.inject(time=0){|time, z| time+z.session_time}.round(2) end |
#last_session ⇒ Object
375 376 377 |
# File 'lib/devlog.rb', line 375 def last_session @zezzions.first #devlog_begin end |
#longest_session ⇒ Object
351 352 353 |
# File 'lib/devlog.rb', line 351 def longest_session @zezzions.max_by(&:session_time) end |
#negative_sessions ⇒ Object
359 360 361 |
# File 'lib/devlog.rb', line 359 def negative_sessions @zezzions.select{|zezzion| zezzion.session_time<0} end |
#negative_sessions_to_s ⇒ Object
371 372 373 |
# File 'lib/devlog.rb', line 371 def negative_sessions_to_s sessions_to_s(negative_sessions) end |
#per_day ⇒ Object
hours per day
323 324 325 |
# File 'lib/devlog.rb', line 323 def per_day (self.session_time/self.devlog_days).round(2) end |
#per_month ⇒ Object
329 330 331 |
# File 'lib/devlog.rb', line 329 def per_month (self.session_time/self.devlog_months).round(2) end |
#per_week ⇒ Object
326 327 328 |
# File 'lib/devlog.rb', line 326 def per_week (self.session_time/self.devlog_weeks).round(2) end |
#session_time ⇒ Object
how much time between first session begin and last session end in seconds def devlog_time
(self.devlog_end.to_time - self.devlog_begin.to_time)/60.0/60.0
end
303 304 305 |
# File 'lib/devlog.rb', line 303 def session_time @zezzions.inject(time=0){|time, zezzion| time+zezzion.session_time}.round(2) end |
#shortest_session ⇒ Object
355 356 357 |
# File 'lib/devlog.rb', line 355 def shortest_session @zezzions.min_by(&:session_time) end |
#to_info_string ⇒ Object
394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 |
# File 'lib/devlog.rb', line 394 def to_info_string s = "" s << "\nSession::Time: = #{self.session_time} [h]\n" s << ("\nCodingSession::Time = %.1f [h]" % self.coding_session_time) s << ("\nComSession::Time = %.1f [h]" % self.com_session_time) s << ("\nCharge::Time = #{self.charge_time} [h]") s << ("\nUnpayed::Time = #{self.unpayed_time.to_s.green} [h]\n") s << ("\n") s << ("Num of Sessions = #{self.devlog_sessions.size}\n") s << ("Hours per Day = #{self.per_day} [h]\n") s << ("Hours per Week = #{self.per_week} [h]\n") s << ("Hours per Month = #{self.per_month} [h]\n") s << ("Hours last 7 days = #{self.hours_for_last(7)} [h]\n") s << ("Hours last 14 days = #{self.hours_for_last(14)} [h]\n") s << ("Hours last 28 days = #{self.hours_for_last(28)} [h]\n") s << ("\n") s << ("Devlog Time = #{self.devlog_days * 24} [h]\n") s << ("Devlog Days = #{self.devlog_days} [days]\n") s << ("Devlog Weeks = #{self.devlog_weeks} [weeks]\n") s << ("Devlog Months = #{self.devlog_months} [months]\n") if self.negative_sessions.any? s << ("\n") s << ("#{'Negative Sessions'.red} = #{self.negative_sessions_to_s}\n") end if self.zero_sessions.any? s << ("\n") s << ("#{'Zero Sessions'.blue} = #{self.zero_sessions_to_s}\n") end s << ("\n") s << ("Longest Session = #{self.longest_session.to_s}\n") s << ("Shortest Session = #{self.shortest_session.to_s}\n") s << ("Last Session = #{self.devlog_end.ago_in_words}, duration: #{self.last_session.session_time.round(3)} [h]") end |
#unpayed_time ⇒ Object
total charge time in hours, coding plus communication sessions - payed hours
339 340 341 |
# File 'lib/devlog.rb', line 339 def unpayed_time (coding_session_time + com_session_time + payed_time).round(2) end |
#validation_string ⇒ Object
388 389 390 391 392 |
# File 'lib/devlog.rb', line 388 def validation_string vs = "" vs << (@zezzions.any? ? '' : "No sessions recorded, add some first...\n".red) vs << (File.exist?(self.devlog_file) ? '' : "No such file #{self.devlog_file}...\n".red) end |
#zero_sessions ⇒ Object
363 364 365 |
# File 'lib/devlog.rb', line 363 def zero_sessions @zezzions.select{|zezzion| zezzion.session_time==0.0} end |
#zero_sessions_to_s ⇒ Object
367 368 369 |
# File 'lib/devlog.rb', line 367 def zero_sessions_to_s sessions_to_s(zero_sessions) end |