{% extends "base.html" %} {% block title %}Compare rounds · Competence{% endblock %} {% block crumbs %}Compare rounds{% endblock %} {% block content %}

Compare rounds

{% if teams|length > 1 %}{% endif %} {% if tags|length > 1 %}{% endif %} ?
{% if error %}{% endif %} {% macro series(values) -%} {%- for v in values %}{% if v is none %}–{% else %}{{ v|num }}{% endif %}{% if not loop.last %} → {% endif %}{% endfor -%} {%- endmacro %} {% macro change(d, decimals=1) -%} {%- if d is not none %}{% set r = d|round(decimals) %}{{ d|signed(decimals) }}{% endif -%} {%- endmacro %} {% if cmp %}{% set b, a = cmp.before, cmp.after %}

Team, {{ cmp.before_round.label }} → {{ cmp.after_round.label }}. Both rounds use today's skills and targets. Trend columns run oldest to newest: {{ cmp.rounds|map(attribute="label")|join(" → ") }}. Levels and desire are medians, which move in steps: a few people improving may not change them, so small changes can be missing from the lists below (why medians).

{% for label, field, better in [("People assessed", "people_assessed", 1), ("At or above role target (%)", "pct_at_target", 1), ("Priority-weighted shortfall per person", "weighted_shortfall_per_person", -1), ("Team gaps", "team_gaps", -1), ("Below expert target", "below_expert_target", -1), ("Key-person risks", "key_person_risks", -1), ("Median competency", "median_competency", 1)] %} {% set d = a.delta(b, field) %} {% endfor %}
{{ cmp.before_round.label }}{{ cmp.after_round.label }}Change
{{ label }}{{ b[field]|num(0) }}{{ a[field]|num(0) }} {% if d is not none %}{{ d|signed(0) }}{% endif %}

Biggest improvements

{% if cmp.improvements %} {% for r in cmp.improvements %}{% endfor %}
SkillMedian levelChange
{{ r.name }}{{ r.category }} {{ r.before.median_level|num }} → {{ r.after.median_level|num }}{{ change(r.level_delta) }}
{% else %}

None.

{% endif %}

Biggest declines

{% if cmp.declines %} {% for r in cmp.declines %}{% endfor %}
SkillMedian levelChange
{{ r.name }}{{ r.category }} {{ r.before.median_level|num }} → {{ r.after.median_level|num }}{{ change(r.level_delta) }}
{% else %}

None.

{% endif %}
{% if cmp.first_rated or cmp.retired_between %}

Skills that came and went

{% if cmp.first_rated %}

Rated in {{ cmp.after_round.label }} but not in {{ cmp.before_round.label }} (new skills, or skills nobody rated then): {{ cmp.first_rated|map(attribute="name")|join(", ") }}

{% endif %} {% if cmp.retired_between %}

Retired in between (left out of the figures above): {% for name, on in cmp.retired_between %}{{ name }} ({{ on }}){% if not loop.last %}, {% endif %}{% endfor %}

{% endif %}
{% endif %}

Per skill

{% for r in cmp.rows if r.rated_in_either and (not changed or r.changed) %} {% else %} {% endfor %}
SkillMedian levelΔMedian desire3+5+Weighted shortfallTrend (median level)
{{ r.name }} {{ r.tag|tag_badge }}{{ r.category }} {{ r.before.median_level|num }} → {{ r.after.median_level|num }} {{ change(r.level_delta) }} {{ r.before.median_desire|num }} → {{ r.after.median_desire|num }} {{ r.before.n3 }} → {{ r.after.n3 }} {{ r.before.n5 }} → {{ r.after.n5 }} {{ r.before.weighted_shortfall }} → {{ r.after.weighted_shortfall }} {{ series(r.trend) }}
No skills to show.
{% endif %} {% if pcmp %}

{{ pcmp.person.name }}, {{ pcmp.before_round.label }}{% if pcmp.before %} ({{ pcmp.before.role.name }}){% else %} (not assessed){% endif %} → {{ pcmp.after_round.label }}{% if pcmp.after %} ({{ pcmp.after.role.name }}){% else %} (not assessed){% endif %}. Targets are for the role in {{ pcmp.after_round.label }}. Trend: {{ pcmp.rounds|map(attribute="label")|join(" → ") }}.

{% if pcmp.after %}

Profile in {{ pcmp.after_round.label }}

{% endif %}

Biggest improvements

{% if pcmp.improvements %} {% for r in pcmp.improvements %}{% endfor %}
SkillLevelChange
{{ r.name }}{{ r.category }} {{ r.before_used|num }} → {{ r.after_used|num }}{{ change(r.level_delta, 0) }}
{% else %}

None.

{% endif %}

Biggest declines

{% if pcmp.declines %} {% for r in pcmp.declines %}{% endfor %}
SkillLevelChange
{{ r.name }}{{ r.category }} {{ r.before_used|num }} → {{ r.after_used|num }}{{ change(r.level_delta, 0) }}
{% else %}

None.

{% endif %}

Per skill

{% for r in pcmp.rows if (r.trend|select("ne", none)|list or r.before_desire is not none or r.after_desire is not none) and (not changed or r.changed) %} {% else %} {% endfor %}
SkillLevelΔDesireTargetTrend (level used)
{{ r.name }} {{ r.tag|tag_badge }}{{ r.category }} {{ r.before_used|num }} → {{ r.after_used|num }} {{ change(r.level_delta, 0) }} {{ r.before_desire|num }} → {{ r.after_desire|num }} {{ r.target|num }} {{ series(r.trend) }}
No skills to show.
{% endif %} {% endblock %}