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
- #has_info? ⇒ Boolean
-
#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(short = false) ⇒ 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.
304 305 306 307 308 309 310 311 312 313 314 |
# File 'lib/devlog.rb', line 304 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
300 301 302 |
# File 'lib/devlog.rb', line 300 def coding_session_time @coding_session_time end |
#com_session_time ⇒ Object
this is the total time, but each session has these same params
300 301 302 |
# File 'lib/devlog.rb', line 300 def com_session_time @com_session_time end |
#devlog_file ⇒ Object
Returns the value of attribute devlog_file.
302 303 304 |
# File 'lib/devlog.rb', line 302 def devlog_file @devlog_file end |
#payed_time ⇒ Object
this is the total time, but each session has these same params
300 301 302 |
# File 'lib/devlog.rb', line 300 def payed_time @payed_time end |
#zezzions ⇒ Object
Returns the value of attribute zezzions.
302 303 304 |
# File 'lib/devlog.rb', line 302 def zezzions @zezzions end |
Instance Method Details
#add_zezzion(zezzion) ⇒ Object
320 321 322 |
# File 'lib/devlog.rb', line 320 def add_zezzion(zezzion) @zezzions << zezzion end |
#charge_time ⇒ Object
total charge time in hours, coding plus communication sessions
373 374 375 |
# File 'lib/devlog.rb', line 373 def charge_time (coding_session_time + com_session_time).round(2) end |
#devlog_begin ⇒ Object
global devlog start, first entry
325 326 327 |
# File 'lib/devlog.rb', line 325 def devlog_begin @zezzions.last.zzbegin end |
#devlog_days ⇒ Object
how many days devlog spans
345 346 347 348 |
# File 'lib/devlog.rb', line 345 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
330 331 332 |
# File 'lib/devlog.rb', line 330 def devlog_end @zezzions.first.zzend end |
#devlog_months ⇒ Object
355 356 357 |
# File 'lib/devlog.rb', line 355 def devlog_months count_time( :months => 1) end |
#devlog_sessions ⇒ Object
return all sessions
423 424 425 |
# File 'lib/devlog.rb', line 423 def devlog_sessions @zezzions end |
#devlog_weeks ⇒ Object
how many weeks devlog spans
351 352 353 |
# File 'lib/devlog.rb', line 351 def devlog_weeks (devlog_days/7.0).round(2) end |
#first_session ⇒ Object
418 419 420 |
# File 'lib/devlog.rb', line 418 def first_session @zezzions.last # devlog_end end |
#has_info? ⇒ Boolean
316 317 318 |
# File 'lib/devlog.rb', line 316 def has_info? @zezzions.any? end |
#hours_for_last(days, beginTime = DateTime.now) ⇒ Object
return hours worked for the last X days, from beginTime
383 384 385 386 387 388 |
# File 'lib/devlog.rb', line 383 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(0) { |time, z| time + z.session_time }.round(2) end |
#last_session ⇒ Object
414 415 416 |
# File 'lib/devlog.rb', line 414 def last_session @zezzions.first # devlog_begin end |
#longest_session ⇒ Object
390 391 392 |
# File 'lib/devlog.rb', line 390 def longest_session @zezzions.max_by(&:session_time) end |
#negative_sessions ⇒ Object
398 399 400 |
# File 'lib/devlog.rb', line 398 def negative_sessions @zezzions.select{|zezzion| zezzion.session_time<0} end |
#negative_sessions_to_s ⇒ Object
410 411 412 |
# File 'lib/devlog.rb', line 410 def negative_sessions_to_s sessions_to_s(negative_sessions) end |
#per_day ⇒ Object
hours per day
360 361 362 |
# File 'lib/devlog.rb', line 360 def per_day (self.session_time/self.devlog_days).round(2) end |
#per_month ⇒ Object
368 369 370 |
# File 'lib/devlog.rb', line 368 def per_month (self.session_time/self.devlog_months).round(2) end |
#per_week ⇒ Object
364 365 366 |
# File 'lib/devlog.rb', line 364 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
340 341 342 |
# File 'lib/devlog.rb', line 340 def session_time @zezzions.inject(0) { |time, zezzion| time + zezzion.session_time }.round(2) end |
#shortest_session ⇒ Object
394 395 396 |
# File 'lib/devlog.rb', line 394 def shortest_session @zezzions.min_by(&:session_time) end |
#to_info_string(short = false) ⇒ Object
433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 |
# File 'lib/devlog.rb', line 433 def to_info_string(short=false) s = '' s << "\nSession::Time: = #{self.session_time} [h]\n" s << ("\nCodingSession::Time = %.1f [h]\n" % self.coding_session_time) s << ("\nComSession::Time = %.1f [h]\n" % self.com_session_time) s << ("\nCharge::Time = #{self.charge_time} [h]\n") s << ("\nUnpayed::Time = #{self.unpayed_time.to_s} [h]\n") s << ("\n") unless short 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 s end |
#unpayed_time ⇒ Object
total charge time in hours, coding plus communication sessions - payed hours
378 379 380 |
# File 'lib/devlog.rb', line 378 def unpayed_time (coding_session_time + com_session_time + payed_time).round(2) end |
#validation_string ⇒ Object
427 428 429 430 431 |
# File 'lib/devlog.rb', line 427 def validation_string vs = '' vs << (@zezzions.any? ? '' : "No sessions recorded, add some first...\n".red) vs << (File.exist?(devlog_file) ? '' : "No such file #{devlog_file}...\n".red) end |
#zero_sessions ⇒ Object
402 403 404 |
# File 'lib/devlog.rb', line 402 def zero_sessions @zezzions.select{|zezzion| zezzion.session_time==0.0} end |
#zero_sessions_to_s ⇒ Object
406 407 408 |
# File 'lib/devlog.rb', line 406 def zero_sessions_to_s sessions_to_s(zero_sessions) end |