Module: DecisionGrouping

Included in:
CriticalChainPage, DecisionsOverview
Defined in:
lib/almirah/doc_types/decision_grouping.rb

Overview

Shared helper for the planning views: the non-empty decision groups (ADR-197) paired with their Scope-row work items. Used by the overview's group-segmented Gantt (ADR-201) and the dedicated Critical Chain page (ADR-195 / ENH-202).

Instance Method Summary collapse

Instance Method Details

#grouped_work_itemsObject

[[group-name, [WorkItem, ...]], ...] in decision_groups (folder-encounter) order, only groups that have at least one work item.



9
10
11
12
13
14
15
16
# File 'lib/almirah/doc_types/decision_grouping.rb', line 9

def grouped_work_items
  by_record = @project.project_data.work_items.values.group_by(&:record_id)
  @project.project_data.decision_groups.filter_map do |group|
    name = group.keys.first
    items = group.values.first.flat_map { |doc| by_record[doc.id] || [] }
    [name, items] unless items.empty?
  end
end