{% extends "base.html" %} {% block title %}Charts · {{ project.title }} · Projects · {{ project.owner }}{% endblock %} {% block mainclass %} class="wide"{% endblock %} {% block content %}

{{ project.title }} {{ project.owner }}'s projects · #{{ project.number }}

From the board's own history: when each card joined each column. No estimates; the forecasts sample the weeks the board has had.

Forecasts

{% for f in c.forecasts %} {% match f.p50 %}{% when Some(d) %}{% when None %}{% endmatch %} {% if let Some(d) = f.p85 %}{% else if f.p50.is_some() %}{% endif %}{% endfor %}
CardsLeft50% done by85% done by
{{ f.scope }}{{ f.remaining }}{{ d }}no forecast: no card has reached Done in the weeks it draws from{{ d }}beyond ten years
{% if let Some(f) = c.forecasts.first() %}

From {{ f.weeks_of_history }} week{% if f.weeks_of_history != 1 %}s{% endif %} of throughput (cards reaching Done each week), sampled {{ crate::web::board_charts::TRIALS_SHOWN }} times; the same history gives the same dates all day.

{% endif %}
Timeline
{% if timeline_svg.is_empty() %}

No iterations yet, and no open card with a milestone. Start an iteration on the board, or give cards milestones, and they appear here.

{% else %}{{ timeline_svg|safe }}
open iterationpast iterationforecast: 50% to 85%milestone due
{% endif %}
{% if let Some((name, _, days)) = c.burn %}
{{ name }}: burn-down
{{ burn_svg|safe }}
cards leftscope

{% if let Some((l, s)) = days.last() %}{{ l }} left of {{ s }} after {{ days.len() }} day{% if days.len() != 1 %}s{% endif %}{% endif %}.

{% endif %}
Cycle time
{% match c.cycle_median_days %}{% when Some(m) %}

{{ m }} d median · {% if let Some(p) = c.cycle_p85_days %}{{ p }}{% endif %} d 85th percentile

From leaving the first column to reaching Done, over {{ c.cycle_finished }} finished card{% if c.cycle_finished != 1 %}s{% endif %}.

{% when None %}

No card has gone from started to Done yet.

{% endmatch %}
Throughput: cards done each week
{{ throughput_svg|safe }}
the numbers{% for (w, n) in week_table %}{% endfor %}
Week fromDone
{{ w }}{{ n }}
Cumulative flow
{{ flow_svg|safe }}
{% for name in c.columns %}{{ name }}{% endfor %}

Cards in each column at the end of each day. A band that keeps widening is where work waits.

the last fortnight's numbers
{% for name in c.columns %}{% endfor %}{% for (d, row) in flow_table %}{% for n in row %}{% endfor %}{% endfor %}
Day{{ name }}
{{ d }}{{ n }}
{% endblock %}