Module: PredictabilityEngine::VegaVisualizer
- Extended by:
- TooltipHelpers
- Defined in:
- lib/predictability_engine/vega_visualizer.rb,
lib/predictability_engine/vega_visualizer/cfd_charts.rb,
lib/predictability_engine/vega_visualizer/cfd_layout.rb,
lib/predictability_engine/vega_visualizer/basic_charts.rb,
lib/predictability_engine/vega_visualizer/tooltip_helpers.rb,
lib/predictability_engine/vega_visualizer/aging_wip_visualizer.rb
Defined Under Namespace
Modules: AgingWipVisualizer, BasicCharts, CfdCharts, CfdLayout, TooltipHelpers
Constant Summary
collapse
- CHART_WIDTH =
500
- CHART_HEIGHT =
300
- LABEL_AXIS =
{ labelAngle: -45, labelOverlap: 'parity' }.freeze
TooltipHelpers::TOOLTIP_WRAP_WIDTH
Class Method Summary
collapse
-
.aging_wip(items, title: 'Aging Work In Progress', percentiles: PredictabilityEngine::DEFAULT_PERCENTILES) ⇒ Object
-
.apply_standard_dims(chart, title: nil, padding: nil) ⇒ Object
-
.build_cfd_unified_data(data, percentiles) ⇒ Object
-
.cfd(work_items, title: 'Cumulative Flow Diagram', history_range: nil, **_opts) ⇒ Object
-
.cfd_area_layer(pcts, legend: true) ⇒ Object
-
.cfd_color_scale(pcts) ⇒ Object
-
.cfd_line_layer(_pcts) ⇒ Object
-
.cfd_vert_layers(forecast, percentiles) ⇒ Object
-
.cycle_time_bands(items, title: 'Cycle Time Bands Over Time') ⇒ Object
-
.cycle_time_scatter(items, percentiles: PredictabilityEngine::DEFAULT_PERCENTILES, title: 'Cycle Time Scatter Plot') ⇒ Object
-
.dashboard(items, percentiles: PredictabilityEngine::DEFAULT_PERCENTILES) ⇒ Object
-
.date_axis_base(title: 'Date') ⇒ Object
-
.date_x_axis(title: 'Date', **opts) ⇒ Object
-
.forecasted_cfd(work_items, percentiles: PredictabilityEngine::DEFAULT_PERCENTILES, title: 'Forecasted Cumulative Flow Diagram', history_range: nil, **_opts) ⇒ Object
-
.format_cfd_data(cfd) ⇒ Object
-
.quantitative_x_axis ⇒ Object
-
.quantitative_y_axis ⇒ Object
-
.throughput_histogram(items, title: 'Throughput Histogram') ⇒ Object
cfd_tooltip_fields, cycle_time_tooltip_field, item_href_and_tooltip, item_id_tooltip_field, standard_item_tooltip_fields, title_tooltip_field, url_href, wrap_tooltip_title
Class Method Details
.aging_wip(items, title: 'Aging Work In Progress', percentiles: PredictabilityEngine::DEFAULT_PERCENTILES) ⇒ Object
.apply_standard_dims(chart, title: nil, padding: nil) ⇒ Object
18
19
20
21
22
23
|
# File 'lib/predictability_engine/vega_visualizer.rb', line 18
def self.apply_standard_dims(chart, title: nil, padding: nil)
chart = chart.title(title) if title
cfg = { autosize: { type: 'fit', contains: 'padding' }, axis: { grid: false } }
cfg[:padding] = padding if padding
chart.width('container').height('container').config(cfg)
end
|
.build_cfd_unified_data(data, percentiles) ⇒ Object
72
73
74
|
# File 'lib/predictability_engine/vega_visualizer.rb', line 72
def self.build_cfd_unified_data(data, percentiles)
CfdLayout.build_unified_data(data, percentiles)
end
|
.cfd(work_items, title: 'Cumulative Flow Diagram', history_range: nil, **_opts) ⇒ Object
63
64
65
|
# File 'lib/predictability_engine/vega_visualizer.rb', line 63
def self.cfd(work_items, title: 'Cumulative Flow Diagram', history_range: nil, **_opts)
CfdCharts.cfd(work_items, title: title, history_range: history_range)
end
|
.cfd_area_layer(pcts, legend: true) ⇒ Object
80
81
82
|
# File 'lib/predictability_engine/vega_visualizer.rb', line 80
def self.cfd_area_layer(pcts, legend: true)
CfdLayout.area_layer(pcts, legend: legend)
end
|
.cfd_color_scale(pcts) ⇒ Object
76
77
78
|
# File 'lib/predictability_engine/vega_visualizer.rb', line 76
def self.cfd_color_scale(pcts)
CfdLayout.color_scale(pcts)
end
|
.cfd_line_layer(_pcts) ⇒ Object
84
85
86
|
# File 'lib/predictability_engine/vega_visualizer.rb', line 84
def self.cfd_line_layer(_pcts)
CfdLayout.line_layer
end
|
.cfd_vert_layers(forecast, percentiles) ⇒ Object
88
89
90
|
# File 'lib/predictability_engine/vega_visualizer.rb', line 88
def self.cfd_vert_layers(forecast, percentiles)
CfdLayout.vert_layers(forecast, percentiles)
end
|
.cycle_time_bands(items, title: 'Cycle Time Bands Over Time') ⇒ Object
54
55
56
|
# File 'lib/predictability_engine/vega_visualizer.rb', line 54
def self.cycle_time_bands(items, title: 'Cycle Time Bands Over Time', **)
BasicCharts.cycle_time_bands(items, title: title)
end
|
.cycle_time_scatter(items, percentiles: PredictabilityEngine::DEFAULT_PERCENTILES, title: 'Cycle Time Scatter Plot') ⇒ Object
.dashboard(items, percentiles: PredictabilityEngine::DEFAULT_PERCENTILES) ⇒ Object
99
100
101
102
103
104
|
# File 'lib/predictability_engine/vega_visualizer.rb', line 99
def self.dashboard(items, percentiles: PredictabilityEngine::DEFAULT_PERCENTILES)
charts = [aging_wip(items), forecasted_cfd(items, percentiles: percentiles), cfd(items),
cycle_time_scatter(items, percentiles: percentiles),
throughput_histogram(items)]
Vega.lite.vconcat(charts.map { |c| c.spec.except('$schema') })
end
|
.date_axis_base(title: 'Date') ⇒ Object
25
26
27
|
# File 'lib/predictability_engine/vega_visualizer.rb', line 25
def self.date_axis_base(title: 'Date')
{ field: 'date', type: 'temporal', title: title, axis: { format: '%Y-%m-%d' } }
end
|
.date_x_axis(title: 'Date', **opts) ⇒ Object
29
30
31
32
33
|
# File 'lib/predictability_engine/vega_visualizer.rb', line 29
def self.date_x_axis(title: 'Date', **opts)
base = date_axis_base(title: title)
base[:axis] = base[:axis].merge(labelAngle: -45).merge(opts)
base
end
|
.forecasted_cfd(work_items, percentiles: PredictabilityEngine::DEFAULT_PERCENTILES, title: 'Forecasted Cumulative Flow Diagram', history_range: nil, **_opts) ⇒ Object
67
68
69
70
|
# File 'lib/predictability_engine/vega_visualizer.rb', line 67
def self.forecasted_cfd(work_items, percentiles: PredictabilityEngine::DEFAULT_PERCENTILES,
title: 'Forecasted Cumulative Flow Diagram', history_range: nil, **_opts)
CfdCharts.forecasted_cfd(work_items, percentiles, title, history_range: history_range)
end
|
92
93
94
95
96
97
|
# File 'lib/predictability_engine/vega_visualizer.rb', line 92
def self.format_cfd_data(cfd)
cfd.flat_map do |d|
[{ date: PredictabilityEngine.format_date(d[:date]), count: d[:arrived], type: 'Arrivals', order: 0 },
{ date: PredictabilityEngine.format_date(d[:date]), count: d[:departed], type: 'Departures', order: 1 }]
end
end
|
.quantitative_x_axis ⇒ Object
36
|
# File 'lib/predictability_engine/vega_visualizer.rb', line 36
def self.quantitative_x_axis(...) = quantitative_axis(...)
|
.quantitative_y_axis ⇒ Object
35
|
# File 'lib/predictability_engine/vega_visualizer.rb', line 35
def self.quantitative_y_axis(...) = quantitative_axis(...)
|
.throughput_histogram(items, title: 'Throughput Histogram') ⇒ Object
50
51
52
|
# File 'lib/predictability_engine/vega_visualizer.rb', line 50
def self.throughput_histogram(items, title: 'Throughput Histogram', **)
BasicCharts.throughput_histogram(items, title: title)
end
|