Module: PredictabilityEngine::VegaVisualizer::CfdCharts
- Defined in:
- lib/predictability_engine/vega_visualizer/cfd_charts.rb
Class Method Summary collapse
- .cfd(work_items, title: 'Cumulative Flow Diagram', history_range: nil) ⇒ Object
- .cfd_layers(percentiles, forecast) ⇒ Object
- .forecasted_cfd(work_items, percentiles, title, history_range: nil) ⇒ Object
- .render_cfd(data, percentiles, title, forecast: nil) ⇒ Object
Class Method Details
.cfd(work_items, title: 'Cumulative Flow Diagram', history_range: nil) ⇒ Object
6 7 8 9 10 11 12 |
# File 'lib/predictability_engine/vega_visualizer/cfd_charts.rb', line 6 def self.cfd(work_items, title: 'Cumulative Flow Diagram', history_range: nil) data = Calculators::Cfd.calculate(work_items) days = Duration.parse(history_range) data = data.last(days) if days formatted = VegaVisualizer.format_cfd_data(data) render_cfd(formatted, [], title) end |
.cfd_layers(percentiles, forecast) ⇒ Object
39 40 41 42 43 44 45 |
# File 'lib/predictability_engine/vega_visualizer/cfd_charts.rb', line 39 def self.cfd_layers(percentiles, forecast) layers = [VegaVisualizer.cfd_area_layer(percentiles, legend: !percentiles.empty?)] return layers unless forecast layers + [VegaVisualizer.cfd_line_layer(percentiles), *VegaVisualizer.cfd_vert_layers(forecast, percentiles)] end |
.forecasted_cfd(work_items, percentiles, title, history_range: nil) ⇒ Object
14 15 16 17 18 19 20 |
# File 'lib/predictability_engine/vega_visualizer/cfd_charts.rb', line 14 def self.forecasted_cfd(work_items, percentiles, title, history_range: nil) data = Calculators::Cfd.forecast_series(work_items, percentiles: percentiles, history_range: history_range) return cfd(work_items, title: title) unless data unified = VegaVisualizer.build_cfd_unified_data(data, percentiles) render_cfd(unified, percentiles, title, forecast: data) end |
.render_cfd(data, percentiles, title, forecast: nil) ⇒ Object
22 23 24 25 26 27 28 29 |
# File 'lib/predictability_engine/vega_visualizer/cfd_charts.rb', line 22 def self.render_cfd(data, percentiles, title, forecast: nil) dom, range = VegaVisualizer.cfd_color_scale(percentiles) chart = base_cfd_chart(data, dom, range) .layer(cfd_layers(percentiles, forecast)) resolved_title = forecast ? forecast_title(title) : title padding = forecast ? { right: 80, top: 30 } : nil VegaVisualizer.apply_standard_dims(chart, title: resolved_title, padding: padding) end |