{% extends "psynet_dashboard.html" %} {% block scripts %} {{ super() }} {% endblock %} {% block body %}

{{ title }}

{% if grouper_progress and grouper_progress | length > 0 %}

Grouper progress

Participants currently waiting at each grouper; groups form when the required number is reached.

{% for r in grouper_progress %} {% endfor %}
Grouper Group type Waiting Required
{{ r.barrier_id }} {{ r.group_type }} {{ r.waiting_count }} ({{ r.participant_ids | join(", ") or "—" }}) {% if r.batch_size is not none %}{{ r.batch_size }}{% else %}—{% endif %}
{% endif %} {% if groups | length == 0 %}

No sync groups found.

{% else %}

Showing up to 500 most recent sync groups (newest first).

{% if has_simple_groups %} {% endif %} {% for g in groups %} {% if has_simple_groups %} {% endif %} {% endfor %}
ID Type Status Participants Leader Waiting at barrierMin / Max sizeLast barrier pass End time
{{ g.id }} {{ g.group_type }} {% if g.active %} Active {% else %} Closed {% endif %} {{ g.n_active_participants }} ({% for p in g.participants %}{% if p.can_fail_manually %}{% else %}{{ p.id }}{% endif %}{% if not loop.last %}, {% endif %}{% endfor %}) {% if g.leader_id is not none %} P{{ g.leader_id }} {% if g.leader_worker_id != "—" %} ({{ g.leader_worker_id }}) {% endif %} {% else %} — {% endif %} {% if g.waiting_at_barriers %} {% for b in g.waiting_at_barriers %} {{ b.waiting_count }} at {{ b.barrier_id }} ({{ b.participant_ids | join(", ") }}){% if not loop.last %}, {% endif %} {% endfor %} {% else %} — {% endif %} {% if g.min_group_size is not none %} {{ g.min_group_size }} / {{ g.max_group_size }} {% if g.initial_group_size is not none %} (init: {{ g.initial_group_size }}) {% endif %} {% else %} — {% endif %} {{ g.last_barrier_pass_time.strftime("%Y-%m-%d %H:%M:%S") if g.last_barrier_pass_time else "—" }} {{ g.end_time.strftime("%Y-%m-%d %H:%M:%S") if g.end_time else "—" }}
{% endif %} {% endblock %}