class BacklogApi::Command

Public Instance Methods

progress() click to toggle source
# File lib/backlog_api/command.rb, line 60
def progress
  # data = [
  #   {:foo => '123', :bar => '456', :buz => '789'},
  #   {:foo => 'abc', :bar => 'def', :buz => 'ghi'},
  #   {:foo => 'alpha', :bar => 'beta', :buz => 'gamma'},
  # ]
  
  issues = BacklogApi::Client.new.find_issue(projectId: PROJECT_ID)
  issues = group_issues_by_assigner(issues)
  data = issues.map do |name,issues|
    {
      "名前" => (name || '未割当'),
      "進捗" => progress_bar(issues),
      "完了件数" => completed_count_per_total_count(issues),
      "完了率" => progress_rate(issues),
    }
  end
  Formatador.display_table(data)
end
server() click to toggle source
# File lib/backlog_api/command.rb, line 52
def server
  puts "Start sinatra app..."
  root = File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
  exec "cd #{root} && rackup config.ru"
end

Private Instance Methods

completed_count_per_total_count(issues) click to toggle source
# File lib/backlog_api/command.rb, line 93
def completed_count_per_total_count(issues)
  total_count = issues.count
  completed_count = issues.count{|issue|issue["status"]["id"] == 4}
  "%d/%d" % [completed_count, total_count]
end
group_issues_by_assigner(issues) click to toggle source
# File lib/backlog_api/command.rb, line 83
def group_issues_by_assigner(issues)
  issues.group_by{|issue|issue["assigner"]["name"] if issue["assigner"]}
end
progress_bar(issues) click to toggle source
# File lib/backlog_api/command.rb, line 99
def progress_bar(issues)
  issues.inject('') do |ret, issue|
    ret << 
      case issue["status"]["id"]
      when 1
        "|".red
      when 2
        "|".yellow
      when 3
        "|".green
      when 4
        "|".blue
      end
  end.tapp.tapp(&:size)
  
end
progress_rate(issues) click to toggle source
# File lib/backlog_api/command.rb, line 87
def progress_rate(issues)
  total_count = issues.count
  completed_count = issues.count{|issue|issue["status"]["id"] == 4}
  "%d%" % (completed_count.to_f / total_count * 100)
end