7. Delivery Timeline
{% if delivery_timeline %}
{% set phases = {} %}
{% for t in delivery_timeline %}
{% set p = t.phase or 'Unknown' %}
{% if p not in phases %}{% set _ = phases.update({p: []}) %}{% endif %}
{% set _ = phases[p].append(t) %}
{% endfor %}
{% set tasks_json = [] %}
{% for phase_name in phases %}
{% for t in phases[phase_name] %}
{% set sub = t.sub_phase or '' %}
{% set start = t.start_date or '' %}
{% set end = t.end_date or '' %}
{% set sub_lower = sub|lower %}
{% if 'publish' in sub_lower or 'release' in sub_lower %}
{% set css = 'gantt-crit' %}
{% elif 'development' in sub_lower %}
{% set css = 'gantt-active' %}
{% else %}
{% set css = 'gantt-standard' %}
{% endif %}
{% set name = phase_name ~ ' - ' ~ sub if sub else phase_name %}
{% set task = '{id:"' ~ t.id ~ '",name:"' ~ name ~ '",start:"' ~ start ~ '",end:"' ~ end ~ '",progress:0,custom_class:"' ~ css ~ '",dependencies:""}' %}
{% set _ = tasks_json.append(task) %}
{% endfor %}
{% endfor %}
| Phase | Sub-Phase | Start | End | Weeks | Deliverables |
{% for phase_name in phases %}
{% for t in phases[phase_name] %}
| {{ t.phase }} | {{ t.sub_phase }} | {{ t.start_date }} | {{ t.end_date }} | {{ t.duration_weeks }} | {{ t.deliverables }} |
{% endfor %}
{% endfor %}
{% else %}
No timeline data. Run 'fscope timeline plan' first.
{% endif %}