datatracker/ietf/templates/group/reviewer_overview.html
2022-02-01 16:11:34 +00:00

142 lines
7.3 KiB
HTML

{# bs5ok #}
{% extends "group/group_base.html" %}
{# Copyright The IETF Trust 2015-2020, All Rights Reserved #}
{% load origin %}
{% origin %}
{% load ietf_filters static django_bootstrap5 person_filters %}
{% block group_subtitle %}Reviewers{% endblock %}
{% block group_content %}
{% origin %}
{% block pagehead %}
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
{% endblock %}
{% if can_access_stats %}
<div class="float-end">
<a href="{% url "ietf.stats.views.review_stats" stats_type="completion" acronym=group.acronym %}"
class="icon-link">
<span class="bi bi-bar-chart-line">&nbsp;</span>
</a>
</div>
{% endif %}
<h2 class="mt-3">Reviewers</h2>
<p>
Status of the reviewers in {{ group.acronym }}, ordered by their
rotation with the next reviewer in the rotation at the top. Rows with darker backgrounds have the following meaning:
</p>
<div class="reviewer-overview">
<p class="alert alert-secondary my-3">
Has already been assigned a document within the given interval.
</p>
<p class="alert alert-warning my-3">
Will be skipped the next time at the top of rotation.
</p>
<p class="alert alert-danger my-3">
Is not available to do reviews at this time.
</p>
</div>
{% if can_reset_next_reviewer %}
<div>
<a href="{% url 'ietf.group.views.reset_next_reviewer' acronym=group.acronym %}"
class="btn btn-primary"
id="reset_next_reviewer">
Reset head of queue
</a>
</div>
{% endif %}
{% if reviewers %}
<table class="table reviewer-overview tablesorter">
<thead>
<tr>
<th data-sort="num">Next</th>
<th data-sort="reviewer">Reviewer</th>
<th data-sort="assigned">Recent history</th>
<th data-sort="num">Days since completed</th>
<th data-sort="settings">Settings</th>
</tr>
</thead>
<tbody>
{% for person in reviewers %}
<tr {% if person.completely_unavailable %}class="table-danger" title="Is not available to do reviews at this time." {% elif person.busy %}class="table-secondary" title="Has already been assigned a document within the given interval." {% elif person.settings.skip_next %}class="table-warning" title="Will be skipped the next time at the top of rotation." {% endif %}>
<td>{{ forloop.counter }}</td>
<td>
{% person_link person %}
{% if person.settings_url %}
<a href="{{ person.settings_url }}" class="btn btn-primary btn-small float-end"
title="{{ person.settings.expertise }}">Edit
</a>
{% endif %}
</td>
<td>
{% if person.latest_reqs %}
<table class="table table-sm table-borderless">
<thead>
<tr>
<th>Assigned</th>
<th>Deadline</th>
<th>State</th>
<th>Review time</th>
<th>Document</th>
</tr>
</thead>
{% for assn_pk, req_pk, doc_name, reviewed_rev, assigned_time, deadline, state, assignment_to_closure_days in person.latest_reqs %}
<tr>
<td>
<span style="display:none">X</span>{{ assigned_time|date }}
</td>
<td>
<a href="{% url 'ietf.doc.views_review.review_request' name=doc_name request_id=req_pk %}">{{ deadline|date }}</a>
</td>
<td>
<span class="badge bg-{% if state.slug == 'completed' or state.slug == 'part-completed' %}success{% elif state.slug == 'no-response' %}danger{% elif state.slug == 'overtaken' %}warning{% elif state.slug == 'requested' or state.slug == 'accepted' %}primary{% else %}secondary{% endif %}">{{ state.name }}</span>
</td>
<td>
{% if assignment_to_closure_days != None %}
{{ assignment_to_closure_days }} day{{ assignment_to_closure_days|pluralize }}
{% endif %}
</td>
<td>
{{ doc_name }}
{% if reviewed_rev %}-{{ reviewed_rev }}{% endif %}
</td>
</tr>
{% endfor %}
</table>
{% endif %}
</td>
<td>
{% if person.days_since_completed_review != 9999 %}
{{ person.days_since_completed_review }}
{% else %}
<span style="display:none">9999</span>
</td>
{% endif %}
<td>
{% if person.settings.min_interval %}
<b>{{ person.settings.get_min_interval_display }}</b>
<br>
{% endif %}
{% if person.settings.skip_next %}
<b>Skip:</b> {{ person.settings.skip_next }}
<br>
{% endif %}
{% if person.settings.filter_re %}
<b>Filter:</b> <code title="{{ person.settings.filter_re }}">{{ person.settings.filter_re|truncatechars:15 }}</code>
<br>
{% endif %}
{% if person.unavailable_periods %}
{% include "review/unavailable_table.html" with unavailable_periods=person.unavailable_periods %}
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
<p>
No reviewers found.
</p>
{% endif %}
{% endblock %}
{% block js %}
<script src="{% static "ietf/js/list.js" %}"></script>
{% endblock %}