Module: PredictabilityEngine::RawDataExporter
- Defined in:
- lib/predictability_engine/raw_data_exporter.rb
Constant Summary collapse
- DONE_THRESHOLDS =
[1, 7, 14, 21, 28].freeze
- DONE_THRESHOLD_LABELS =
(DONE_THRESHOLDS.map { |d| d == 1 ? '≤ 1 day' : "≤ #{d} days" } + ["> #{DONE_THRESHOLDS.last} days"]).freeze
- HEADERS =
[ 'ID', 'Title', 'Type', 'Priority', 'Start Date', 'End Date', 'Status', 'YYYY-Week', 'YYYY-MM', 'YYYY', 'Cycle Time (days)', 'Current Age (days)', 'URL', 'Done ≤ 1 day', 'Done ≤ 7 days', 'Done ≤ 14 days', 'Done ≤ 21 days', 'Done ≤ 28 days' ].freeze
Class Method Summary collapse
Class Method Details
.generate_csv(items) ⇒ Object
39 40 41 42 43 44 |
# File 'lib/predictability_engine/raw_data_exporter.rb', line 39 def self.generate_csv(items) CSV.generate do |csv| csv << HEADERS items.each { |item| csv << item_row(item) } end end |
.item_row(item) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/predictability_engine/raw_data_exporter.rb', line 20 def self.item_row(item) today = PredictabilityEngine.today ct = item.cycle_time age = item.completed? ? nil : item.age(today) flags = DONE_THRESHOLDS.map { |d| ct ? ct <= d : nil } date = item.end_date [item.id, item.title, item.type, item.priority, item.start_date, item.end_date, (item.completed? ? 'Done' : 'In Progress'), PredictabilityEngine.format_year_week(date), PredictabilityEngine.format_year_month(date), date&.to_date&.year, ct, age, item.url.to_s, *flags] end |
.threshold_index(cycle_time) ⇒ Object
35 36 37 |
# File 'lib/predictability_engine/raw_data_exporter.rb', line 35 def self.threshold_index(cycle_time) DONE_THRESHOLDS.index { |d| cycle_time <= d } || DONE_THRESHOLDS.size end |