Module: Terjira::SprintPresenter

Included in:
BaseCLI
Defined in:
lib/terjira/presenters/sprint_presenter.rb

Instance Method Summary collapse

Instance Method Details

#colorize_sprint_state(state) ⇒ Object



43
44
45
46
47
48
49
50
51
52
# File 'lib/terjira/presenters/sprint_presenter.rb', line 43

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) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
# File 'lib/terjira/presenters/sprint_presenter.rb', line 5

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) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/terjira/presenters/sprint_presenter.rb', line 17

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) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/terjira/presenters/sprint_presenter.rb', line 54

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) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
# File 'lib/terjira/presenters/sprint_presenter.rb', line 31

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