Module: PredictabilityEngine::SummaryVisualizer::Renderer

Defined in:
lib/predictability_engine/summary_visualizer/renderer.rb

Class Method Summary collapse

Class Method Details

.aging_pairs(aging) ⇒ Object



52
53
54
55
56
# File 'lib/predictability_engine/summary_visualizer/renderer.rb', line 52

def self.aging_pairs(aging)
  [['Active WIP', "#{aging[:count]} items"],
   ['Average WIP Age', "#{aging[:avg_age]} days"],
   ['Oldest Item Age', "#{aging[:max_age]} days"]]
end

.aging_summary_lines(metrics, title, prefix, bold = '') ⇒ Object



58
59
60
61
# File 'lib/predictability_engine/summary_visualizer/renderer.rb', line 58

def self.aging_summary_lines(metrics, title, prefix, bold = '')
  lines = aging_pairs(metrics[:aging]).map { |label, value| "#{prefix}#{bold}#{label}:#{bold} #{value}" }
  [title, '', *lines, '']
end

.render_confluence_summary(work_items, metrics, percentiles) ⇒ Object



67
68
69
# File 'lib/predictability_engine/summary_visualizer/renderer.rb', line 67

def self.render_confluence_summary(work_items, metrics, percentiles)
  render_markup_summary(work_items, metrics, percentiles, { bold: '*', head2: 'h2.', head3: 'h3.' })
end

.render_html_summary(work_items, metrics, percentiles) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/predictability_engine/summary_visualizer/renderer.rb', line 8

def self.render_html_summary(work_items, metrics, percentiles)
  html = <<~HTML
    <h2>Flow Metrics Summary</h2>
    <ul>
      #{Helpers.metric_list(work_items, metrics)}
    </ul>
  HTML

  if metrics[:aging]
    items = aging_pairs(metrics[:aging]).map { |l, v| Helpers.html_metric_li(l, v) }.join("\n            ")
    html += <<~HTML
      <h3>Aging WIP Summary</h3>
      <ul>
        #{items}
      </ul>
    HTML
  end

  html += <<~HTML
    <h3>Cycle Time Percentiles</h3>
    <ul>
      #{Helpers.percentile_lines(metrics, percentiles, prefix: '<li><strong>', bold: '</strong>', suffix: '</li>')}
    </ul>
  HTML
  html
end

.render_markdown_summary(work_items, metrics, percentiles) ⇒ Object



63
64
65
# File 'lib/predictability_engine/summary_visualizer/renderer.rb', line 63

def self.render_markdown_summary(work_items, metrics, percentiles)
  render_markup_summary(work_items, metrics, percentiles, { bold: '**', head2: '##', head3: '###' })
end

.render_markup_summary(work_items, metrics, percentiles, styling) ⇒ Object



71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/predictability_engine/summary_visualizer/renderer.rb', line 71

def self.render_markup_summary(work_items, metrics, percentiles, styling)
  head2, head3, bold = styling.values_at(:head2, :head3, :bold)
  out = [
    "#{head2} Flow Metrics Summary", '',
    Helpers.metric_lines(work_items, metrics, prefix: '* ', bold: bold), ''
  ]

  out += aging_summary_lines(metrics, "#{head3} Aging WIP Summary", '* ', bold) if metrics[:aging]

  out += [
    "#{head3} Cycle Time Percentiles", '',
    Helpers.percentile_lines(metrics, percentiles, prefix: '* ', bold: bold)
  ]
  out.join("\n")
end

.render_terminal_summary(work_items, metrics, color, percentiles) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/predictability_engine/summary_visualizer/renderer.rb', line 35

def self.render_terminal_summary(work_items, metrics, color, percentiles)
  bold, cyan, reset = Helpers.terminal_colors(color)
  out = [
    "#{bold}Flow Metrics Summary#{reset}",
    '--------------------',
    Helpers.metric_lines(work_items, metrics), ''
  ]

  out += aging_summary_lines(metrics, "#{cyan}Aging WIP Summary:#{reset}", '  ') if metrics[:aging]

  out += [
    "#{cyan}Cycle Time Percentiles:#{reset}",
    Helpers.percentile_lines(metrics, percentiles, prefix: '  '), ''
  ]
  out.join("\n")
end