class UserSessionsPrinter
Attributes
pastel[R]
user_sessions[R]
Public Class Methods
new(user_sessions)
click to toggle source
# File lib/ft_42.rb, line 466 def initialize(user_sessions) @pastel = Pastel.new @user_sessions = user_sessions end
Public Instance Methods
active_or_last_active()
click to toggle source
# File lib/ft_42.rb, line 492 def active_or_last_active unless user_sessions.sessions.empty? active = false user_sessions.sessions.each do |session| unless session.end_at.nil? if session.end_at - session.begin_at == 600.0 unless active puts "Is #{highlight('active')} at " + highlight("#{cluster(session.host)}") + " computer #{session.host}." end unless session.primary? puts warning("Warning: Logged in on more than one computer. Please logout from #{session.host} ASAP.") end active = true end end end unless active last_active end end end
all()
click to toggle source
# File lib/ft_42.rb, line 471 def all active_or_last_active hours_this_week end
hours_progress_bar()
click to toggle source
# File lib/ft_42.rb, line 530 def hours_progress_bar percent_complete = ((hours.to_f / HOURS_NEEDED.to_f) * 100).round if (percent_complete <= 100) progressbar_needed = ProgressBar.create(progress_mark: "█", length: 64, format: "%t: |" + warning("%B") + "| #{hours}/38 hours") percent_complete.times { progressbar_needed.increment } print "Minimum " print progressbar_needed puts end end
hours_progress_bar_achievement()
click to toggle source
# File lib/ft_42.rb, line 541 def hours_progress_bar_achievement percent_complete = ((hours.to_f / HOURS_ACHIEVEMENT.to_f) * 100).round if (percent_complete <= 100) progressbar_needed = ProgressBar.create(progress_mark: "█", length: 60, format: "%t: |" + warning("%B") + "| #{hours}/90 hours") percent_complete.times { progressbar_needed.increment } print "Achievement " print progressbar_needed puts end end
hours_progress_bar_challenge()
click to toggle source
# File lib/ft_42.rb, line 552 def hours_progress_bar_challenge percent_complete = ((hours.to_f / HOURS_CHALLENGE.to_f) * 100).round if (percent_complete <= 100) progressbar_needed = ProgressBar.create(progress_mark: "█", length: 63, format: "%t: |" + warning("%B") + "| #{hours}/100 hours") percent_complete.times { progressbar_needed.increment } print "Challenge " print progressbar_needed puts end end
hours_this_week()
click to toggle source
# File lib/ft_42.rb, line 519 def hours_this_week puts "Has " + highlight("#{hours} #{hours_pluralize}") + " in the clusters this week, starting #{last_monday}." end
last_active()
click to toggle source
# File lib/ft_42.rb, line 515 def last_active puts "Was last active " + (last_active_time_ago || "") + " at #{last_active_computer}." end
progress_bar()
click to toggle source
# File lib/ft_42.rb, line 524 def progress_bar hours_progress_bar hours_progress_bar_achievement hours_progress_bar_challenge end
sessions()
click to toggle source
# File lib/ft_42.rb, line 476 def sessions unless user_sessions.sessions.empty? user_sessions.sessions.each do |session| session_start = "Session start: " + session.begin_at.to_time.strftime("%A, %B %d at %I:%M:%S %p") session_end = "Session end: " + session.end_at.to_time.strftime("%A, %B %d at %I:%M:%S %p") duration_in_hours = ActiveSupport::NumberHelper.number_to_rounded((session.end_at.to_time - session.begin_at.to_time) / 60 / 60, :precision => 2) puts puts "Session duration: " + highlight("#{duration_in_hours} hours") puts session_start puts session_end puts "Session host: " + session.host + " at " + cluster(session.host) end puts end end
sessions_this_week()
click to toggle source
# File lib/ft_42.rb, line 563 def sessions_this_week unless user_sessions.sessions.empty? user_sessions.sessions.each do |session| puts "#{session.host} from #{session.begin_at} to #{session.end_at}" end end end
Private Instance Methods
cluster(host)
click to toggle source
# File lib/ft_42.rb, line 593 def cluster(host) case true when host.include?("z1") then "Cluster 1" when host.include?("z2") then "Cluster 2" when host.include?("z3") then "Cluster 3" when host.include?("z3") then "Cluster 4" else host end end
highlight(string)
click to toggle source
# File lib/ft_42.rb, line 585 def highlight(string) pastel.bright_green.bold(string) end
hours()
click to toggle source
# File lib/ft_42.rb, line 573 def hours user_sessions.total_hours_this_week end
hours_pluralize()
click to toggle source
# File lib/ft_42.rb, line 577 def hours_pluralize if hours == 1 "hour" else "hours" end end
last_active_computer()
click to toggle source
# File lib/ft_42.rb, line 607 def last_active_computer highlight(cluster(user_sessions.sessions.first.host)) end
last_active_time_ago()
click to toggle source
# File lib/ft_42.rb, line 603 def last_active_time_ago highlight("#{ActionView::Base.new.time_ago_in_words(user_sessions.sessions.first.end_at)} ago") unless user_sessions.sessions.first.end_at.nil? end
last_monday()
click to toggle source
# File lib/ft_42.rb, line 611 def last_monday Time.current.beginning_of_week.strftime("%A, %B #{Time.current.beginning_of_week.day.ordinalize}") end
warning(string)
click to toggle source
# File lib/ft_42.rb, line 589 def warning(string) pastel.red(string) end