Sha256: 94321e42dc51b7aa33852a31d71a1e336a27e3c35ac15a5242725d141880e563

Contents?: true

Size: 1.94 KB

Versions: 2

Compression:

Stored size: 1.94 KB

Contents

require 'colorize'
require_relative 'settings'

module Dude
  class Interface
    include Settings

    def initialize
    end

    def report(worked_week, worked_today)
      report_weekly(worked_week)
      puts ''
      report_daily(worked_today, worked_week)
    end

    def issues_list(issues)
      [['To Do', :yellow], ['Doing', :green], ['To Verify', :blue]].each do |group, color|
        puts "#{group}:".colorize(color).bold
        grouped = issues.select {|i| i.last.include?(group)}
        if grouped.length.zero?
          puts 'Nothing'
        else
          grouped.each do |id, issue, labels|
            puts "#{id}:".colorize(color) + " #{issue} #{labels.compact.to_s.gsub('"', "")}"
          end
        end
        puts ''
      end
    end

    private

    def report_weekly(worked_week)
      puts "Week".center(15).colorize(:green).bold
      puts '-' * 15
      puts "Worked:".colorize(:yellow).bold +
        " #{seconds_to_time(worked_week)} / #{settings['HOURS_PER_WEEK']}:00:00 (#{worked_week * 100 / 144000}%)"
      puts "Time left:".colorize(:yellow).bold +
        " #{seconds_to_time(144000 - worked_week)}"
    end

    def report_daily(worked_today, worked_week)
      puts "Today".center(15).colorize(:green).bold
      puts '-' * 15
      puts "Worked:".colorize(:yellow).bold +
        " #{seconds_to_time(worked_today)} / #{settings['HOURS_PER_DAY']}:00:00 (#{worked_today * 100 / 28800}%)"
      puts "Time left:".colorize(:yellow).bold +
        " #{seconds_to_time(seconds_for_today - worked_week)}"
    end

    def seconds_to_time(s)
      hms = [60,60].reduce([s]) { |m,o| m.unshift(m.shift.divmod(o)).flatten }
      "#{sprintf '%02d', hms[0]}:#{sprintf '%02d', hms[1]}:#{sprintf '%02d', hms[2]}"
    end

    def seconds_for_today
      Time.now.wday * settings['HOURS_PER_DAY'].to_i * 3600
    end

    def term
      term_size = IO.console.winsize
      @terminal = OpenStruct.new(h: term_size[0], w: term_size[1])
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
dude-cli-0.2.2 lib/dude/interface.rb
dude-cli-0.2.1 lib/dude/interface.rb