Module: Terjira::SprintPresenter
- Included in:
- BaseCLI
- Defined in:
- lib/terjira/presenters/sprint_presenter.rb
Instance Method Summary collapse
- #colorize_sprint_state(state) ⇒ Object
- #render_sprint_detail(sprint) ⇒ Object
- #render_sprints_summary(sprints) ⇒ Object
- #sort_sprint_by_state(sprints) ⇒ Object
- #summarise_sprint(sprint) ⇒ Object
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 |