module Terjira::SprintPresenter

Public Instance Methods

colorize_sprint_state(state) click to toggle source
# File lib/terjira/presenters/sprint_presenter.rb, line 41
def colorize_sprint_state(state)
  state = " #{state.to_s.capitalize} "
  if state =~ /active/i
    pastel.on_blue.bold(state)
  elsif state =~ /close/i
    pastel.dim(state)
  else
    pastel.on_magenta.bold(state)
  end
end
render_sprint_detail(sprint) click to toggle source
# File lib/terjira/presenters/sprint_presenter.rb, line 3
def render_sprint_detail(sprint)
  return render('Empty') if sprint.nil?
  attrs = sprint.attrs
  summary = [
    pastel.bold("#{sprint.id}. #{sprint.name} #{colorize_sprint_state(sprint.state)}"),
    attrs['goal'].to_s,
    "#{formatted_date(attrs['startDate'])} ~ #{formatted_date(attrs['endDate'])}"
  ]

  render(summary.reject(&:empty?).join("\n"))
end
render_sprints_summary(sprints) click to toggle source
# File lib/terjira/presenters/sprint_presenter.rb, line 15
def render_sprints_summary(sprints)
  headers = %w[ID Summary].map { |h| pastel.bold(h) }
  rows = []
  sort_sprint_by_state(sprints).each do |sprint|
    rows << [pastel.bold(sprint.id), summarise_sprint(sprint)]
  end

  table = TTY::Table.new(headers, rows)
  result = table.render(:unicode, multiline: true) do |renderer|
    renderer.border.separator = :each_row
  end
  render(result)
end
sort_sprint_by_state(sprints) click to toggle source
# File lib/terjira/presenters/sprint_presenter.rb, line 52
def sort_sprint_by_state(sprints)
  sprints.sort_by do |sprint|
    if sprint.state == 'active'
      [0, sprint.id]
    elsif sprint.state == 'future'
      [1, sprint.id]
    elsif sprint.state == 'closed'
      [2, sprint.id * -1]
    else
      [3, 0]
    end
  end
end
summarise_sprint(sprint) click to toggle source
# File lib/terjira/presenters/sprint_presenter.rb, line 29
def summarise_sprint(sprint)
  summary = colorize_sprint_state(sprint.state)
  summary += ' ' + pastel.bold(sprint.name)
  if sprint.respond_to? :startDate
    summary += "\n"
    summary += formatted_date(sprint.startDate) + ' ~ '
    summary += formatted_date(sprint.endDate) if sprint.respond_to? :endDate
  end
  summary += "\n#{sprint.goal}" if sprint.respond_to? :goal
  summary
end