datatracker/ietf/templates/group/reviewer_overview.html
2020-06-27 13:51:19 +00:00

104 lines
4.6 KiB
HTML

{% extends "group/group_base.html" %}
{# Copyright The IETF Trust 2015-2020, All Rights Reserved #}
{% load origin %}{% origin %}
{% load ietf_filters static bootstrap3 %}
{% block group_subtitle %}Reviewers{% endblock %}
{% block group_content %}
{% origin %}
{% block pagehead %}
<link rel="stylesheet" href="{% static "jquery.tablesorter/css/theme.bootstrap.min.css" %}">
{% endblock %}
{% if can_access_stats %}
<h1 class="pull-right"><a href="{% url "ietf.stats.views.review_stats" stats_type="completion" acronym=group.acronym %}" class="icon-link">&nbsp;<span class="small fa fa-bar-chart">&nbsp;</span></a></h1>
{% endif %}
<h2>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="busy">Has already been assigned a document within the given interval.</p>
<p class="skip-next">Will be skipped the next time at the top of rotation.</p>
<p class="completely-unavailable">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-default" id="reset_next_reviewer">Reset head of queue</a>
</div>
{% endif %}
{% if reviewers %}
<table class="table reviewer-overview tablesorter">
<thead>
<tr>
<th>Next</th>
<th>Reviewer</th>
<th>Assigned/Deadline/state/time between assignment and closure for latest assignments</th>
<th>Days Since Com&shy;plet&shy;ed</th>
<th>Settings</th>
</tr>
</thead>
<tbody>
{% for person in reviewers %}
<tr {% if person.completely_unavailable %}class="completely-unavailable"
{% elif person.busy %}class="busy"
{% elif person.settings.skip_next %}class="skip-next"
{% endif %}>
<td>{{ forloop.counter }}</td>
<td>{% if person.settings_url %}<a href="{{ person.settings_url }}" title="{{person.settings.expertise}}">{% endif %}{{ person }}{% if person.settings_url %}</a>{% endif %}</td>
<td>
<table class="simple-table">
{% 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="label label-{% 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 %}default{% endif %}">{{ state.name }}</span>
</td>
<td>
{% if assignment_to_closure_days != None %}{{ assignment_to_closure_days }}&nbsp;day{{ assignment_to_closure_days|pluralize }}{% endif %}
</td>
<td class="text-nowrap">{{ doc_name }}{% if reviewed_rev %}-{{ reviewed_rev }}{% endif %}</td>
</tr>
{% endfor %}
</table>
</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 %}
{{ person.settings.get_min_interval_display }}<br>
{% endif %}
{% if person.settings.skip_next %}
Skip: {{ person.settings.skip_next }}<br>
{% endif %}
{% if person.settings.filter_re %}
Filter: <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 "jquery.tablesorter/js/jquery.tablesorter.combined.min.js" %}"></script>
{% endblock %}