fix: More fixes for narrow screens (#3662)

* fix: More fixes for narrow screens

Need to keep checking for issues, there are more.

* Make columns more narrow on narrow screens

* More fixes

* More fixes

* Test fixes

* Fix more tests

* Close tbody
This commit is contained in:
Lars Eggert 2022-03-24 16:40:48 +01:00 committed by GitHub
parent 66feccbc67
commit 870fed030f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
40 changed files with 194 additions and 145 deletions

View file

@ -562,7 +562,7 @@ Man Expires September 22, 2015 [Page 3]
self.assertEqual(r.status_code, 200)
self.assertContains(r, "Active Internet-Draft")
if settings.USER_PREFERENCE_DEFAULTS['full_draft'] == 'off':
self.assertContains(r, "Show full document text")
self.assertContains(r, "Show full document")
self.assertNotContains(r, "Deimos street")
self.assertContains(r, replaced.canonical_name())
self.assertContains(r, replaced.title)
@ -579,7 +579,7 @@ Man Expires September 22, 2015 [Page 3]
r = self.client.get(urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name=draft.name)) + "?include_text=0")
self.assertEqual(r.status_code, 200)
self.assertContains(r, "Active Internet-Draft")
self.assertContains(r, "Show full document text")
self.assertContains(r, "Show full document")
self.assertNotContains(r, "Deimos street")
self.assertContains(r, replaced.canonical_name())
self.assertContains(r, replaced.title)
@ -596,7 +596,7 @@ Man Expires September 22, 2015 [Page 3]
r = self.client.get(urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name=draft.name)) + "?include_text=foo")
self.assertEqual(r.status_code, 200)
self.assertContains(r, "Active Internet-Draft")
self.assertNotContains(r, "Show full document text")
self.assertNotContains(r, "Show full document")
self.assertContains(r, "Deimos street")
self.assertContains(r, replaced.canonical_name())
self.assertContains(r, replaced.title)
@ -613,7 +613,7 @@ Man Expires September 22, 2015 [Page 3]
r = self.client.get(urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name=draft.name)) + "?include_text=1")
self.assertEqual(r.status_code, 200)
self.assertContains(r, "Active Internet-Draft")
self.assertNotContains(r, "Show full document text")
self.assertNotContains(r, "Show full document")
self.assertContains(r, "Deimos street")
self.assertContains(r, replaced.canonical_name())
self.assertContains(r, replaced.title)
@ -631,7 +631,7 @@ Man Expires September 22, 2015 [Page 3]
r = self.client.get(urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name=draft.name)))
self.assertEqual(r.status_code, 200)
self.assertContains(r, "Active Internet-Draft")
self.assertNotContains(r, "Show full document text")
self.assertNotContains(r, "Show full document")
self.assertContains(r, "Deimos street")
self.assertContains(r, replaced.canonical_name())
self.assertContains(r, replaced.title)
@ -649,7 +649,7 @@ Man Expires September 22, 2015 [Page 3]
r = self.client.get(urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name=draft.name)))
self.assertEqual(r.status_code, 200)
self.assertContains(r, "Active Internet-Draft")
self.assertContains(r, "Show full document text")
self.assertContains(r, "Show full document")
self.assertNotContains(r, "Deimos street")
self.assertContains(r, replaced.canonical_name())
self.assertContains(r, replaced.title)
@ -668,7 +668,7 @@ Man Expires September 22, 2015 [Page 3]
self.assertEqual(r.status_code, 200)
self.assertContains(r, "Active Internet-Draft")
if settings.USER_PREFERENCE_DEFAULTS['full_draft'] == 'off':
self.assertContains(r, "Show full document text")
self.assertContains(r, "Show full document")
self.assertNotContains(r, "Deimos street")
self.assertContains(r, replaced.canonical_name())
self.assertContains(r, replaced.title)
@ -2807,4 +2807,4 @@ class PdfizedTests(TestCase):
self.should_succeed(dict(name=rfc.name,rev=f'{r:02d}'))
for ext in ('pdf','txt','html','anythingatall'):
self.should_succeed(dict(name=rfc.name,rev=f'{r:02d}',ext=ext))
self.should_404(dict(name=rfc.name,rev='02'))
self.should_404(dict(name=rfc.name,rev='02'))

View file

@ -360,9 +360,9 @@ def document_main(request, name, rev=None):
if can_adopt_draft(request.user, doc) and not doc.get_state_slug() in ["rfc"] and not snapshot:
if doc.group and doc.group.acronym != 'none': # individual submission
# already adopted in one group
button_text = "Change Document Adoption to other Group (now in %s)" % doc.group.acronym
button_text = "Switch adoption"
else:
button_text = "Manage Document Adoption in Group"
button_text = "Adopt"
actions.append((button_text, urlreverse('ietf.doc.views_draft.adopt_draft', kwargs=dict(name=doc.name))))
if can_unadopt_draft(request.user, doc) and not doc.get_state_slug() in ["rfc"] and not snapshot:

View file

@ -2320,7 +2320,7 @@ class InterimTests(IetfSeleniumTestCase):
end = ts.utc_end_time().astimezone(zone).strftime('%H:%M')
meeting_link = self.driver.find_element(By.LINK_TEXT, session.meeting.number)
time_td = meeting_link.find_element(By.XPATH, '../../td[contains(@class, "session-time")]')
self.assertIn('%s - %s' % (start, end), time_td.text)
self.assertIn('%s-%s' % (start, end), time_td.text)
def _assert_ietf_tz_correct(meetings, tz):
zone = pytz.timezone(tz)
@ -2339,7 +2339,7 @@ class InterimTests(IetfSeleniumTestCase):
end = end_dt.astimezone(zone).strftime('%Y-%m-%d')
meeting_link = self.driver.find_element(By.LINK_TEXT, "IETF " + meeting.number)
time_td = meeting_link.find_element(By.XPATH, '../../td[contains(@class, "meeting-time")]')
self.assertIn('%s - %s' % (start, end), time_td.text)
self.assertIn('%s to %s' % (start, end), time_td.text)
sessions = [m.session_set.first() for m in self.displayed_interims()]
self.assertGreater(len(sessions), 0)

View file

@ -4307,7 +4307,7 @@ class InterimTests(TestCase):
q = PyQuery(r.content)
#id="-%s" % interim.group.acronym
#self.assertIn('Cancelled', q('[id*="'+id+'"]').text())
self.assertIn('Cancelled', q('tr>td>a>span').text())
self.assertIn('Cancelled', q('tr>td>a+span').text())
def do_upcoming_test(self, querystring=None, create_meeting=True):
if create_meeting:

View file

@ -92,13 +92,26 @@ table tbody.meta {
th:first-child,
td:first-child {
width: 9em;
width: 4em;
}
th:nth-child(2),
td:nth-child(2) {
// text-align: right;
width: 14em;
width: 7em;
}
// See https://getbootstrap.com/docs/5.0/layout/breakpoints/#media-queries
@include media-breakpoint-up(md) {
th:first-child,
td:first-child {
width: 9em;
}
th:nth-child(2),
td:nth-child(2) {
width: 14em;
}
}
td.edit {

View file

@ -126,20 +126,20 @@ function format_tooltip_table(start, end) {
var current_timezone = get_current_tz_cb();
var out = '<div class="text-start"><table class="table table-sm"><tr><th></th><th>Session start</th><th>Session end</th></tr>';
if (window.meeting_timezone !== "") {
out += '<tr><th class="timehead">Meeting timezone</th><td class="text-nowrap">' +
format_time(start, window.meeting_timezone, 0) + '</td><td class="text-nowrap">' +
out += '<tr><th class="timehead">Meeting timezone</th><td>' +
format_time(start, window.meeting_timezone, 0) + '</td><td>' +
format_time(end, window.meeting_timezone, 0) + '</td></tr>';
}
out += '<tr><th class="timehead">Local timezone</th><td class="text-nowrap">' +
format_time(start, local_timezone, 0) + '</td><td class="text-nowrap">' +
out += '<tr><th class="timehead">Local timezone</th><td>' +
format_time(start, local_timezone, 0) + '</td><td>' +
format_time(end, local_timezone, 0) + '</td></tr>';
if (current_timezone !== 'UTC') {
out += '<tr><th class="timehead">Selected Timezone</th><td class="text-nowrap">' +
format_time(start, current_timezone, 0) + '</td><td class="text-nowrap">' +
out += '<tr><th class="timehead">Selected Timezone</th><td>' +
format_time(start, current_timezone, 0) + '</td><td>' +
format_time(end, current_timezone, 0) + '</td></tr>';
}
out += '<tr><th class="timehead">UTC</th><td class="text-nowrap">' +
format_time(start, 'UTC', 0) + '</td><td class="text-nowrap">' +
out += '<tr><th class="timehead">UTC</th><td>' +
format_time(start, 'UTC', 0) + '</td><td>' +
format_time(end, 'UTC', 0) + '</td></tr>';
out += '</table>' + format_tooltip_notice(start, end) + '</div>';
return out;

View file

@ -46,6 +46,49 @@ $(document)
.tooltip();
});
// Help browser to wrap long link texts (esp. email addresses) more sensibly.
$(document)
.ready(function () {
$("#content a")
.each(function () {
// get the text of the <a> element
var text = $(this)
.text();
// insert some <wbr> at strategic places
var newtext = text.replace(/([@._])/g, "$1<wbr>");
if (newtext === text) {
return;
}
// now replace only that text inside the element's HTML
var newhtml = $(this)
.html()
.replace(text, newtext);
$(this)
.html(newhtml);
});
// $("#content table.tablesorter")
// .on("tablesorter:done", function () {
// $("#content table.tablesorter .date")
// .each(function () {
// // get the text of the <a> element
// var text = $(this)
// .text();
// // insert some <wbr> at strategic places
// var newtext = text.replace(/([-])/g, "$1<wbr>");
// if (newtext === text) {
// return;
// }
// // now replace only that text inside the element's HTML
// var newhtml = $(this)
// .html()
// .replace(text, newtext);
// $(this)
// .html(newhtml);
// });
// });
});
$(document)
.ready(function () {

View file

@ -273,5 +273,7 @@ $(document)
});
$(table.addClass("tablesorter-done"));
n++;
$(table)[0]
.dispatchEvent(new Event("tablesorter:done"));
});
});

View file

@ -122,7 +122,7 @@ function format_session_time(session_elt, tz) {
.attr('data-start-utc'));
var end = moment.utc($(session_elt)
.attr('data-end-utc'));
return format_moment(start, tz, 'datetime') + ' - ' + format_moment(end, tz, 'time');
return format_moment(start, tz, 'datetime') + '-' + format_moment(end, tz, 'time');
}
function format_meeting_time(meeting_elt, tz) {
@ -134,7 +134,7 @@ function format_meeting_time(meeting_elt, tz) {
var end = moment.tz($(meeting_elt)
.attr('data-end-date'), meeting_tz)
.endOf('day');
return format_moment(start, tz, 'date') + ' - ' + format_moment(end, tz, 'date');
return format_moment(start, tz, 'date') + ' to ' + format_moment(end, tz, 'date');
}
window.timezone_changed = function (newtz) {

View file

@ -32,7 +32,7 @@
<thead>
<tr>
<th data-sort="name">Name</th>
<th data-sort="date">Date</th>
<th class="d-none d-sm-table-cell" data-sort="date">Date</th>
<th data-sort="title">Title</th>
<th data-sort="responsible">Responsible</th>
<th data-sort="editors">Editors</th>
@ -44,7 +44,7 @@
<td>
<a href="{% url 'ietf.doc.views_doc.document_main' name=req.name %}">{{ req.name }}-{{ req.rev }}</a>
</td>
<td>{{ req.latest_revision_event.time|date:"Y-m-d" }}</td>
<td class="d-none d-sm-table-cell">{{ req.latest_revision_event.time|date:"Y-m-d" }}</td>
<td>{{ req.title }}</td>
<td>
{% for person in req.responsible %}

View file

@ -1152,7 +1152,7 @@
<a class="btn btn-primary my-3" href="?include_text=1">
<i class="bi bi-caret-down">
</i>
Show full document text
Show full document
</a>
{% endif %}
{% else %}

View file

@ -120,7 +120,7 @@
<tbody>
{% for e in events %}
<tr id="history-{{ e.pk }}">
<td class="text-nowrap">
<td>
<div title="{{ e.time|date:'Y-m-d H:i:s O' }}">{{ e.time|date:"Y-m-d" }}</div>
</td>
<td class="text-end">{{ e.rev }}</td>

View file

@ -16,7 +16,7 @@
<tr>
<th data-sort="document">Document</th>
<th data-sort="status">Status</th>
<th data-sort="responsible">Responsible AD</th>
<th class="d-none d-sm-table-cell" data-sort="responsible">Responsible AD</th>
<th data-sort="discusses">Discusses</th>
</tr>
</thead>
@ -25,7 +25,7 @@
<tr>
<td>{{ doc.displayname_with_link }}</td>
{% include "doc/search/status_columns.html" %}
<td>
<td class="d-none d-sm-table-cell">
{% if doc.ad %}
{% person_link doc.ad %}
{% else %}
@ -40,11 +40,8 @@
{% else %}
{% person_link p.balloter %}
{% endif %}
(
{% if p.discuss_time %}{{ p.discuss_time|timesince_days }}{% endif %}
days ago
{% if doc.get_state_url != "rfc" and p.rev != doc.rev %}for -{{ p.rev }}{% endif %}
)
({% if p.discuss_time %}{{ p.discuss_time|timesince_days }}{% endif %}
days ago{% if doc.get_state_url != "rfc" and p.rev != doc.rev %} for -{{ p.rev }}{% endif %})
<br>
</span>
{% endfor %}

View file

@ -17,7 +17,7 @@
{% cycle '' 'table-active' as alternator silent %}
{% for item in alias.list %}
<tr {% if alternator %}class="{{ alternator }}"{% endif %}>
<td class="text-nowrap">{{ alias.grouper }}{{ item.alias_type|default:'' }}@{{ ietf_domain }}</td>
<td>{{ alias.grouper }}{{ item.alias_type|default:'' }}@{{ ietf_domain }}</td>
<td>{{ item.expansion }}</td>
</tr>
{% endfor %}

View file

@ -46,7 +46,7 @@
{% endfor %}
</td>
<td class="doc">
{% if doc.pages %}<small class="float-end text-muted">{{ doc.pages }} page{{ doc.pages|pluralize }}</small>{% endif %}
{% if doc.pages %}<small class="float-end text-muted d-none d-sm-block">{{ doc.pages }} page{{ doc.pages|pluralize }}</small>{% endif %}
<div>
<a href="{{ doc.get_absolute_url }}">
{% if doc.get_state_slug == "rfc" %}
@ -106,7 +106,6 @@
{% endif %}
</td>
<td>
<span class="text-nowrap">
{% if doc.latest_revision_date|timesince_days|new_enough:request and doc.get_state_slug != "rfc" %}
{% if doc.rev != "00" %}
<a href="{{ rfcdiff_base_url }}?url2={{ doc.name }}-{{ doc.rev }}">
@ -122,7 +121,6 @@
{% if doc.latest_revision_date|timesince_days|new_enough:request and doc.get_state_slug != "rfc" %}
{% if doc.rev != "00" or doc.replaces %}</a>{% endif %}
{% endif %}
</span>
{% if doc.latest_revision_date|timesince_days|new_enough:request %}
<br>
<div class="float-end">
@ -135,7 +133,7 @@
{% endif %}
</td>
{% include "doc/search/status_columns.html" %}
<td class="text-center">
<td class="text-center d-none d-sm-table-cell">
{% if doc.related_ipr %}
<a href="{% url "ietf.ipr.views.search" %}?submit=draft&amp;id={{ doc.name }}">
<span class="badge bg-info">{{ doc.related_ipr|length }}</span>
@ -143,7 +141,7 @@
{% endif %}
</td>
{% if ad_name == None or ad_name != doc.ad.plain_name %}
<td>
<td class="d-none d-sm-table-cell">
{% if doc.ad %}
{% person_link doc.ad title="Area Director" %}
{% endif %}

View file

@ -17,7 +17,10 @@
<th></th>
{% for h in meta.headers %}
{% if h.title != "Title" %}
<th data-sort="{{ h.key }}">
<th data-sort="{{ h.key }}"
{% if h.title|slugify == "ipr" or h.title|slugify == "ad-shepherd" %}
class="d-none d-sm-table-cell"
{% endif %}>
{% if "sort_url" in h %}
<a href="{{ h.sort_url }}">
{{ h.title|cut:" " }}

View file

@ -64,7 +64,7 @@
<br>
Action Holder{{ doc.documentactionholder_set.all|pluralize }}:
{% for action_holder in doc.documentactionholder_set.all %}
{% person_link action_holder.person title=action_holder.role_for_doc %} {{ action_holder|action_holder_badge }}{% if not forloop.last %},{% endif %}
{% person_link action_holder.person title=action_holder.role_for_doc %}{% if action_holder|action_holder_badge %} {{ action_holder|action_holder_badge }}{% endif %}{% if not forloop.last %},{% endif %}
{% endfor %}
{% endif %}
{% else %}

View file

@ -16,18 +16,18 @@
<table class="table table-sm table-borderless">
<tbody>
<tr {% if warn.intended_std_level %}class="table-warning"{% endif %}>
<th class="text-nowrap">Intended status level</th>
<th>Intended status level</th>
<td {% if warn.intended_std_level %}class="text-danger"{% endif %}>
{% if warn.intended_std_level %}<i class="bi bi-exclamation-circle"></i>{% endif %}
{{ doc.intended_std_level }}
</td>
</tr>
<tr>
<th class="text-nowrap">Responsible AD</th>
<th>Responsible AD</th>
<td>{% person_link ad %}</td>
</tr>
<tr {% if warn.shepherd %}class="table-warning"{% endif %}>
<th class="text-nowrap">Document shepherd</th>
<th>Document shepherd</th>
<td {% if warn.shepherd %}class="text-danger"{% endif %}>
{% if warn.shepherd %}<i class="bi bi-exclamation-circle"></i>{% endif %}
{% if doc.shepherd %}
@ -38,7 +38,7 @@
</td>
</tr>
<tr {% if warn.shepherd_writeup %}class="table-warning"{% endif %}>
<th class="text-nowrap">Shepherd write-up exists</th>
<th>Shepherd write-up exists</th>
<td {% if warn.shepherd_writeup %}class="text-danger"{% endif %}>
{% if warn.shepherd_writeup %}<i class="bi bi-exclamation-circle"></i>{% endif %}
{% if shepherd_writeup %}
@ -49,7 +49,7 @@
</td>
</tr>
<tr>
<th class="text-nowrap">Also notify</th>
<th>Also notify</th>
<td>
{% if notify %}
{{ notify }}
@ -59,7 +59,7 @@
</td>
</tr>
<tr {% if warn.tags %}class="table-warning"{% endif %}>
<th class="text-nowrap">Annotation tags</th>
<th>Annotation tags</th>
<td {% if warn.tags %}class="text-danger"{% endif %}>
{% if warn.tags %}<i class="bi bi-exclamation-circle"></i>{% endif %}
{% if not tags %}

View file

@ -50,7 +50,7 @@
<td>
<a href="{% url "ietf.doc.views_doc.document_main" name=g.charter.name %}">{{ g.name }}</a>
</td>
<td class="text-nowrap">{{ g.charter.time|date:"Y-m-d" }}</td>
<td>{{ g.charter.time|date:"Y-m-d" }}</td>
<td>
<div class="float-end">{% ballot_icon g.charter %}</div>
{{ g.charter.get_state.name }}

View file

@ -28,8 +28,8 @@
<tbody>
{% for e in events %}
<tr>
<td class="text-nowrap">{{ e.time|date:"Y-m-d" }}</td>
<td class="text-nowrap">{% person_link e.by %}</td>
<td>{{ e.time|date:"Y-m-d" }}</td>
<td>{% person_link e.by %}</td>
<td>{{ e.desc|format_history_text }}</td>
</tr>
{% endfor %}

View file

@ -20,7 +20,7 @@
<tbody>
{% for stream in streams %}
<tr>
<td class="text-nowrap">
<td>
<a href="/stream/{{ stream.acronym }}/">{{ stream.acronym }}</a>
</td>
<td>{{ stream.name }}</td>

View file

@ -7,7 +7,7 @@
<div class="position-absolute top-0 end-0 m-3">{% ballot_icon doc %}</div>
<div class="card-body">
<div class="row">
<div class="col-sm-3 text-end fw-bold">{{ doc.group.type }} name</div>
<div class="col-3 text-end fw-bold">{{ doc.group.type }} name</div>
<div class="col">
<b>{{ doc.group.name }}
<a href="{{ doc.group.about_url }}">({{ doc.group.acronym|upper }})</a>
@ -15,7 +15,7 @@
</div>
</div>
<div class="row">
<div class="col-sm-3 text-end fw-bold">Charter</div>
<div class="col-3 text-end fw-bold">Charter</div>
<div class="col">
<a href="{{ doc.get_href }}">
<i class="bi bi-file-earmark-fill"></i>
@ -24,7 +24,7 @@
</div>
</div>
<div class="row">
<div class="col-sm-3 text-end fw-bold">Area</div>
<div class="col-3 text-end fw-bold">Area</div>
<div class="col">
<a href="{% url 'ietf.group.views.active_groups' group_type='wg' %}#{{ doc.group.parent.acronym }}">
{{ doc.group.parent.acronym|upper }}</a>

View file

@ -7,7 +7,7 @@
<div class="card-body">
{% with doc.conflictdoc as conflictdoc %}
<div class="row">
<div class="col-sm-3 text-end fw-bold">Conflict review</div>
<div class="col-3 text-end fw-bold">Conflict review</div>
<div class="col">
<div class="fw-bold">{{ doc.title }}</div>
<a href="{{ doc.get_href }}">
@ -17,7 +17,7 @@
</div>
</div>
<div class="row">
<div class="col-sm-3 text-end fw-bold">{{ conflictdoc.stream }} {{ conflictdoc.intended_std_level }}</div>
<div class="col-3 text-end fw-bold">{{ conflictdoc.stream }} {{ conflictdoc.intended_std_level }}</div>
<div class="col">
<div class="fw-bold">{{ conflictdoc.title }}</div>
<a href="{{ settings.IETF_ID_ARCHIVE_URL }}{{ conflictdoc.name }}-{{ conflictdoc.rev }}.txt">
@ -28,25 +28,25 @@
</div>
{% if conflictdoc.note %}
<div class="row">
<div class="col-sm-3 text-end fw-bold">Note</div>
<div class="col-3 text-end fw-bold">Note</div>
<div class="col">{{ conflictdoc.note|linebreaksbr }}</div>
</div>
{% endif %}
<div class="row">
<div class="col-sm-3 text-end fw-bold">Token</div>
<div class="col-3 text-end fw-bold">Token</div>
<div class="col">{% person_link doc.ad %}</div>
</div>
{% with doc.active_defer_event as defer %}
{% if defer %}
<div class="row">
<div class="col-sm-3 text-end fw-bold">Deferred by</div>
<div class="col-3 text-end fw-bold">Deferred by</div>
<div class="col">{{ defer.by }} on {{ defer.time|date:"Y-m-d" }}</div>
</div>
{% endif %}
{% endwith %}
{% if conflictdoc.ipr %}
<div class="row">
<div class="col-sm-3 text-end fw-bold">IPR</div>
<div class="col-3 text-end fw-bold">IPR</div>
<div class="col">
{% for ipr in conflictdoc.ipr %}
{% if ipr.disclosure.state_id == "posted" %}

View file

@ -6,13 +6,13 @@
<div class="position-absolute top-0 end-0 m-3">{% ballot_icon doc %}</div>
<div class="card-body">
<div class="row">
<div class="col-sm-3 text-end fw-bold">{{ doc.intended_std_level }}</div>
<div class="col-3 text-end fw-bold">{{ doc.intended_std_level }}</div>
<div class="col">
<b>{{ doc.title }}</b>
</div>
</div>
<div class="row">
<div class="col-sm-3 text-end fw-bold">
<div class="col-3 text-end fw-bold">
{% if doc.stream %}{{ doc.stream }} stream{% endif %}
</div>
<div class="col">
@ -31,12 +31,12 @@
</div>
{% if doc.note %}
<div class="row">
<div class="col-sm-3 text-end fw-bold">Note</div>
<div class="col-3 text-end fw-bold">Note</div>
<div class="col">{{ doc.note|urlize_ietf_docs|linkify|linebreaksbr }}</div>
</div>
{% endif %}
<div class="row">
<div class="col-sm-3 text-end fw-bold">Token</div>
<div class="col-3 text-end fw-bold">Token</div>
<div class="col">
{% person_link doc.ad %}
<a href="{% url 'ietf.group.views.active_groups' group_type='wg' %}#{{ doc.group.parent.acronym }}">
@ -47,14 +47,14 @@
{% with doc.active_defer_event as defer %}
{% if defer %}
<div class="row">
<div class="col-sm-3 text-end fw-bold">Deferred by</div>
<div class="col-3 text-end fw-bold">Deferred by</div>
<div class="col">{{ defer.by }} on {{ defer.time|date:"Y-m-d" }}</div>
</div>
{% endif %}
{% endwith %}
{% if doc.iana_review_state %}
<div class="row">
<div class="col-sm-3 text-end fw-bold">IANA review</div>
<div class="col-3 text-end fw-bold">IANA review</div>
<div class="col {% if doc.iana_review_state|slice:7 != "IANA OK" %}text-danger{% else %}text-success{% endif %}">
{{ doc.iana_review_state }}
</div>
@ -62,13 +62,13 @@
{% endif %}
{% if doc.consensus %}
<div class="row">
<div class="col-sm-3 text-end fw-bold">Consensus</div>
<div class="col-3 text-end fw-bold">Consensus</div>
<div class="col {% if doc.consensus != "Yes" %}text-danger{% else %}text-success{% endif %}">{{ doc.consensus }}</div>
</div>
{% endif %}
{% if doc.review_assignments %}
<div class="row">
<div class="col-sm-3 text-end fw-bold">Reviews</div>
<div class="col-3 text-end fw-bold">Reviews</div>
<div class="col">
{% for review_assignment in doc.review_assignments %}
{% include "doc/review_assignment_summary.html" with current_doc_name=doc.name current_rev=doc.rev %}
@ -78,13 +78,13 @@
{% endif %}
{% if doc.lastcall_expires %}
<div class="row">
<div class="col-sm-3 text-end fw-bold">Last call expires</div>
<div class="col-3 text-end fw-bold">Last call expires</div>
<div class="col">{{ doc.lastcall_expires|date:"Y-m-d" }}</div>
</div>
{% endif %}
{% if doc.ipr %}
<div class="row">
<div class="col-sm-3 text-end fw-bold">IPR</div>
<div class="col-3 text-end fw-bold">IPR</div>
<div class="col">
{% for ipr in doc.ipr %}
{% if ipr.disclosure.state_id == "posted" %}

View file

@ -49,8 +49,8 @@
<th data-sort="document">Document</th>
<th data-sort="date">Date</th>
<th data-sort="status">Status</th>
<th data-sort="ipr">IPR</th>
<th data-sort="ad">AD/Shepherd</th>
<th class="d-none d-sm-table-cell" data-sort="ipr">IPR</th>
<th class="d-none d-sm-table-cell" data-sort="ad">AD/Shepherd</th>
<th></th>
</tr>
</thead>

View file

@ -42,7 +42,7 @@
<tr>
<th data-sort="document">Document</th>
<th data-sort="status">Status</th>
<th data-sort="ad" class="text-nowrap">Responsible AD</th>
<th data-sort="ad" class="d-none d-sm-table-cell">Responsible AD</th>
<th data-sort="discusses">Discusses</th>
</tr>
</thead>
@ -57,13 +57,12 @@
{% endif %}">
<td>{{ doc.displayname_with_link }}</td>
{% include "doc/search/status_columns.html" %}
<td>{% person_link doc.ad %}</td>
<td class="d-none d-sm-table-cell">{% person_link doc.ad %}</td>
<td>
{% for p in doc.blocking_positions %}
{% if p.is_old_pos %}<span class="text-muted">{% endif %}
{% person_link p.balloter %}
({% if p.discuss_time %}{{ p.discuss_time|timesince_days }} days ago{% endif %}
{% if doc.get_state_url != "rfc" and p.rev != doc.rev %}for -{{ p.rev }}{% endif %})
({% if p.discuss_time %}{{ p.discuss_time|timesince_days }} days ago{% endif %}{% if doc.get_state_url != "rfc" and p.rev != doc.rev %}for -{{ p.rev }}{% endif %})
<br>
{% if p.is_old_pos %}</span>{% endif %}
{% endfor %}

View file

@ -23,9 +23,9 @@
<thead>
<tr>
<th data-sort="doc">Document</th>
<th data-sort="date">Telechat Date</th>
<th class="d-none d-sm-table-cell" data-sort="date">Telechat Date</th>
<th data-sort="status">Status</th>
<th data-sort="ad">Responsible AD</th>
<th class="d-none d-sm-table-cell" data-sort="ad">Responsible AD</th>
<th data-sort="discusses">Discusses</th>
</tr>
</thead>
@ -44,15 +44,14 @@
<br>
<span class="fw-bold">{{ doc.title }}</span>
</td>
<td>{{ doc.telechat }}</td>
<td class="d-none d-sm-table-cell">{{ doc.telechat }}</td>
{% include "doc/search/status_columns.html" %}
<td>{% person_link doc.ad %}</td>
<td class="d-none d-sm-table-cell">{% person_link doc.ad %}</td>
<td>
{% for p in doc.blocking_positions %}
{% if p.is_old_pos %}<span class="text-muted">{% endif %}
{% person_link p.balloter %}
({% if p.discuss_time %}{{ p.discuss_time|timesince_days }} days ago{% endif %}
{% if doc.get_state_url != "rfc" and p.rev != doc.rev %}for -{{ p.rev }}{% endif %})
({% if p.discuss_time %}{{ p.discuss_time|timesince_days }} days ago{% endif %}{% if doc.get_state_url != "rfc" and p.rev != doc.rev %}for -{{ p.rev }}{% endif %})
<br>
{% if p.is_old_pos %}</span>{% endif %}
{% endfor %}

View file

@ -41,7 +41,7 @@
<tbody>
{% for e in events %}
<tr id="history-{{ e.pk }}">
<td class="text-nowrap">{{ e.time|date:"Y-m-d" }}</td>
<td>{{ e.time|date:"Y-m-d" }}</td>
<td>
{{ e.type }}
{% if e.response_due and e.response_past_due %}

View file

@ -18,7 +18,7 @@
<tbody>
{% for ipr in iprs %}
<tr>
<td class="text-nowrap text-end">{{ ipr.time|date:"Y-m-d" }}</td>
<td class="text-end">{{ ipr.time|date:"Y-m-d" }}</td>
<td class="text-end">{{ ipr.id }}</td>
<td>
{% if ipr.state_id == 'posted' or administrative_list %}

View file

@ -20,60 +20,60 @@
<td>{{ liaison.state }}</td>
</tr>
<tr>
<th class="text-nowrap">Submitted Date</th>
<th>Submitted Date</th>
<td>{{ liaison.submitted|date:"Y-m-d" }}</td>
</tr>
<tr>
<th class="text-nowrap">From Group{{ liaison.from_groups.all|pluralize }}</th>
<th>From Group{{ liaison.from_groups.all|pluralize }}</th>
<td>{{ liaison.from_groups_display }}</td>
</tr>
{% if liaison.from_contact %}
<tr>
<th class="text-nowrap">From Contact</th>
<th>From Contact</th>
<td>{% person_link liaison.from_contact.person %}</td>
</tr>
{% endif %}
<tr>
<th class="text-nowrap">To Group{{ liaison.to_groups.all|pluralize }}</th>
<th>To Group{{ liaison.to_groups.all|pluralize }}</th>
<td>{{ liaison.to_groups_display }}</td>
</tr>
{% if liaison.to_contacts %}
<tr>
<th class="text-nowrap">To Contacts</th>
<th>To Contacts</th>
<td>{{ liaison.to_contacts|linkify|make_one_per_line|safe|linebreaksbr }}</td>
</tr>
{% endif %}
{% if liaison.cc_contacts %}
<tr>
<th class="text-nowrap">Cc</th>
<th>Cc</th>
<td>{{ liaison.cc_contacts|linkify|make_one_per_line|safe|linebreaksbr }}</td>
</tr>
{% endif %}
{% if liaison.response_contacts %}
<tr>
<th class="text-nowrap">Response Contact</th>
<th>Response Contact</th>
<td>{{ liaison.response_contacts|linkify|make_one_per_line|safe|linebreaksbr }}</td>
</tr>
{% endif %}
{% if liaison.technical_contacts %}
<tr>
<th class="text-nowrap">Technical Contact</th>
<th>Technical Contact</th>
<td>{{ liaison.technical_contacts|linkify|make_one_per_line|safe|linebreaksbr }}</td>
</tr>
{% endif %}
{% if liaison.action_holder_contacts %}
<tr>
<th class="text-nowrap">Action Holder Contacts</th>
<th>Action Holder Contacts</th>
<td>{{ liaison.action_holder_contacts|linkify|make_one_per_line|safe|linebreaksbr }}</td>
</tr>
{% endif %}
<tr>
<th class="text-nowrap">Purpose</th>
<th>Purpose</th>
<td>{{ liaison.purpose.name }}</td>
</tr>
{% if liaison.deadline %}
<tr>
<th class="text-nowrap">Deadline</th>
<th>Deadline</th>
<td>
{{ liaison.deadline }}
{% if liaison.action_taken %}
@ -95,7 +95,7 @@
{% endif %}
{% if relations %}
<tr>
<th class="text-nowrap">
<th>
Liaisons referring to this
</th>
<td>
@ -115,7 +115,7 @@
{% if liaison.related_to %}
{% if liaison.related_to.approved or is_approving %}
<tr>
<th class="text-nowrap">
<th>
Referenced liaison
</th>
<td>
@ -132,7 +132,7 @@
{% endif %}
{% if liaison.other_identifiers %}
<tr>
<th class="text-nowrap">
<th>
Other Identifiers
</th>
<td>
@ -141,7 +141,7 @@
</tr>
{% endif %}
<tr>
<th class="text-nowrap">
<th>
Attachments
</th>
<td>
@ -157,7 +157,7 @@
</tr>
{% if relations_by %}
<tr>
<th class="text-nowrap">
<th>
Liaisons referred by this one
</th>
<td>
@ -176,7 +176,7 @@
{% endif %}
{% if relations_to %}
<tr>
<th class="text-nowrap">
<th>
Liaisons referring to this one
</th>
<td>
@ -195,7 +195,7 @@
{% endif %}
{% if liaison.from_contact and liaison.body %}
<tr>
<th class="text-nowrap">
<th>
Body
</th>
<td>

View file

@ -33,7 +33,7 @@
<tbody>
{% for e in events %}
<tr>
<td class="text-nowrap">{{ e.time|date:"Y-m-d" }}</td>
<td>{{ e.time|date:"Y-m-d" }}</td>
<td>
{{ e.type }}
{% if e.response_due and e.response_past_due %}

View file

@ -5,8 +5,8 @@
<tr>
<th data-sort="date">Date</th>
<th data-sort="from">From</th>
<th data-sort="to">To</th>
<th data-sort="date">Deadline</th>
<th class="d-none d-sm-table-cell" data-sort="to">To</th>
<th class="d-none d-sm-table-cell" data-sort="date">Deadline</th>
<th data-sort="title">Title</th>
</tr>
</thead>
@ -14,10 +14,10 @@
<tbody>
{% for liaison in liaisons %}
<tr>
<td class="text-nowrap">{{ liaison.sort_date|date:"Y-m-d" }}</td>
<td>{{ liaison.sort_date|date:"Y-m-d" }}</td>
<td class="liaison-group-col">{{ liaison.from_groups_display }}</td>
<td class="liaison-group-col">{{ liaison.to_groups_display }}</td>
<td class="text-nowrap">
<td class="liaison-group-col d-none d-sm-table-cell">{{ liaison.to_groups_display }}</td>
<td class="d-none d-sm-table-cell">
{{ liaison.deadline|default:"-"|date:"Y-m-d" }}
{% if liaison.deadline and not liaison.action_taken %}
<br>

View file

@ -20,7 +20,7 @@
<tbody>
{% for list in lists %}
<tr>
<td class="text-nowrap">
<td>
<a href="{{ list.info_url }}">{{ list.name.lower }}</a>
</td>
<td>{{ list.description|urlize_ietf_docs }}</td>

View file

@ -134,7 +134,7 @@
{% endif %}
</td>
{% endif %}
<td class="text-nowrap text-end">{% include "meeting/timeslot_start_end.html" %}</td>
<td class="text-end">{% include "meeting/timeslot_start_end.html" %}</td>
<td colspan="3">
{% if item.timeslot.show_location and item.timeslot.location %}
{% location_anchor item.timeslot %}
@ -184,7 +184,7 @@
data-slot-start-ts="{{ item.start_timestamp }}"
data-slot-end-ts="{{ item.end_timestamp }}">
{% if personalize %}<th class="text-center"></th>{% endif %}
<th class="text-nowrap text-end">{% include "meeting/timeslot_start_end.html" %}</th>
<th class="text-end">{% include "meeting/timeslot_start_end.html" %}</th>
<th colspan="4">
{{ item.timeslot.time|date:"l" }}
{{ item.timeslot.name|capfirst_allcaps }}
@ -212,7 +212,7 @@
</td>
{% endif %}
{% if item.slot_type.slug == 'plenary' %}
<td class="text-nowrap text-end">{% include "meeting/timeslot_start_end.html" %}</td>
<td class="text-end">{% include "meeting/timeslot_start_end.html" %}</td>
<td colspan="3">
{% if item.timeslot.show_location and item.timeslot.location %}
{% location_anchor item.timeslot %}

View file

@ -16,7 +16,7 @@
<th data-sort="date">Date</th>
<th data-sort="group">Group</th>
<th data-sort="name">Name</th>
<th></th>
<th class="d-none d-sm-table-cell"></th>
</tr>
</thead>
<tbody>
@ -34,15 +34,13 @@
</td>
<td>
{% if meeting.type_id == "interim" %}
<a href="{% url 'ietf.meeting.views.session_details' num=meeting.number acronym=meeting.responsible_group.acronym %}">
{{ meeting.number }}
{% if meeting.interim_meeting_cancelled %}<span class="badge bg-warning">Cancelled</span>{% endif %}
</a>
<a href="{% url 'ietf.meeting.views.session_details' num=meeting.number acronym=meeting.responsible_group.acronym %}">{{ meeting.number }}</a>
{% if meeting.interim_meeting_cancelled %}<span class="badge bg-warning">Cancelled</span>{% endif %}
{% else %}
<a href="{% url 'ietf.meeting.views.agenda' num=meeting.number %}">IETF-{{ meeting.number }}</a>
{% endif %}
</td>
<td>
<td class="d-none d-sm-table-cell">
{% if meeting.type_id == "interim" %}
{% else %}
{% if meeting.get_number > 97 %}

View file

@ -60,7 +60,7 @@
<td>
<a href="{{ rfc.doc.group.about_url }}">{{ rfc.doc.group.acronym }}</a>
</td>
<td class="text-nowrap">{{ rfc.time|date:"F Y" }}</td>
<td>{{ rfc.time|date:"F Y" }}</td>
<td>{{ rfc.doc.title }}</td>
</tr>
{% endfor %}

View file

@ -32,21 +32,22 @@
<th data-sort="group">Group</th>
<th data-sort="num">Length</th>
<th data-sort="num">Size</th>
<th data-sort="requester">Requester</th>
<th data-sort="ad">AD</th>
<th class="d-none d-sm-table-cell" data-sort="requester">Requester</th>
<th class="d-none d-sm-table-cell" data-sort="ad">AD</th>
<th data-sort="constraints">Constraints</th>
<th data-sort="special">Special requests</th>
</tr>
</thead>
{% for session in area.list %}
{% ifchanged %}
{% if not forloop.first %}</tbody>{% endif %}
<tbody>
<tr>
<th class="table-warning" colspan="7">{{ session.current_status_name|capfirst }}</th>
</tr>
</tbody>
<tbody>
{% endifchanged %}
<tbody>
<tr>
<td>
<a href="{% url "ietf.secr.sreq.views.edit" num=meeting.number acronym=session.group.acronym %}">
@ -58,8 +59,8 @@
{% if session.requested_duration %}{{ session.requested_duration|stringformat:"s"|slice:"0:4" }}{% endif %}
</td>
<td>{{ session.attendees|default:"" }}</td>
<td>{% person_link session.requested_by_person %}</td>
<td>
<td class="d-none d-sm-table-cell">{% person_link session.requested_by_person %}</td>
<td class="d-none d-sm-table-cell">
{% if session.group.ad_role %}
{% person_link session.group.ad_role.person %}
{% endif %}
@ -79,16 +80,12 @@
{% with constraint.source.parent.id as constraint_source_parent_id %}
{% with constraint.person as constraint_person %}
{% if constraint_target_parent_id == constraint_source_parent_id and not constraint_person %}<b>{% endif %}
{% if constraint.name.slug == "bethere" %}
{% person_link constraint_person %}
{% if constraint.name.slug == "bethere" %}{% person_link constraint_person %}
{% else %}
{% with constraint.name.slug as constraint_name_slug %}
<span class="{% if constraint_name_slug == 'conflict' %}text-danger{% elif constraint_name_slug == 'conflic2' %}text-warning{% elif constraint_name_slug == 'conflic3' %}text-success{% else %}{{ constraint_name_slug }}{% endif %}">
<span class="{% if constraint_name_slug == 'chair_conflict' %}text-danger{% elif constraint_name_slug == 'tech_overlap' %}text-info{% elif constraint_name_slug == 'key_participant' %}text-success{% else %}{{ constraint_name_slug }}{% endif %}">
{% endwith %}
{{ constraint.brief_display }}
</span>
{% endif %}{% if not forloop.last %},{% endif %}
{% if constraint_target_parent_id == constraint_source_parent_id and not constraint_person %}</b>{% endif %}
{{ constraint.brief_display.strip }}</span>{% endif %}{% if constraint_target_parent_id == constraint_source_parent_id and not constraint_person %}</b>{% endif %}{% if not forloop.last %}, {% endif %}
{% endwith %}
{% endwith %}
{% endwith %}
@ -100,7 +97,7 @@
{% if session.comments %}{{ session.comments|linebreaksbr }}{% endif %}
</td>
</tr>
</tbody>
{% if forloop.last %}</tbody>{% endif %}
{% endfor %}
</table>
{% endfor %}

View file

@ -53,7 +53,7 @@
data-start-date="{{ meeting.date }}"
data-end-date="{{ meeting.end }}"
data-time-zone="{{ meeting.time_zone }}">
{{ meeting.date }} - {{ meeting.end }}
{{ meeting.date }} to {{ meeting.end }}
</td>
<td>ietf</td>
<td>
@ -69,7 +69,7 @@
<td class="session-time"
data-start-utc="{{ session.official_timeslotassignment.timeslot.utc_start_time | date:'Y-m-d H:i' }}Z"
data-end-utc="{{ session.official_timeslotassignment.timeslot.utc_end_time | date:'Y-m-d H:i' }}Z">
{{ session.official_timeslotassignment.timeslot.utc_start_time | date:"Y-m-d H:i" }} - {{ session.official_timeslotassignment.timeslot.utc_end_time | date:"H:i" }}
{{ session.official_timeslotassignment.timeslot.utc_start_time | date:"Y-m-d H:i" }}-{{ session.official_timeslotassignment.timeslot.utc_end_time | date:"H:i" }}
</td>
<td>
<a href="{% url 'ietf.group.views.group_home' acronym=group.acronym %}">{{ group.acronym }}</a>

View file

@ -90,15 +90,15 @@
<tbody>
{% for doc in person.rfcs %}
<tr>
<td class="text-nowrap">
<a href="{{ doc.get_absolute_url }}">RFC {{ doc.rfc_number }}</a>
<td>
<a class="text-nowrap" href="{{ doc.get_absolute_url }}">RFC {{ doc.rfc_number }}</a>
</td>
<td>{{ doc.pub_date|date:"b Y"|title|nbsp }}</td>
<td>{{ doc.title|urlize_ietf_docs }}</td>
<td class="text-end">
{% with doc.referenced_by_rfcs.count as refbycount %}
{% if refbycount %}
<a class="text-nowrap text-end"
<a class="text-end"
href="{% url 'ietf.doc.views_doc.document_referenced_by' doc.canonical_name %}"
rel="nofollow">
{{ refbycount }} RFC{{ refbycount|pluralize }}

View file

@ -61,19 +61,19 @@
</tbody>
<tbody>
<tr>
<th class="text-nowrap">.txt format</th>
<th>.txt format</th>
<td>Button to select a plain-text file of an I-D from a user's local file system.</td>
</tr>
<tr>
<th class="text-nowrap">.xml format</th>
<th>.xml format</th>
<td>Button to select an XML file of an I-D from a user's local file system.</td>
</tr>
<tr>
<th class="text-nowrap">.pdf format</th>
<th>.pdf format</th>
<td>Button to select a PDF file of an I-D from a user's local file system.</td>
</tr>
<tr>
<th class="text-nowrap">Upload</th>
<th>Upload</th>
<td>
Button to upload the document(s). The tool will begin parsing the plain-text document (or creating it from the xml if only xml is provided) and validate the document. The parsed meta-data will be displayed for user confirmation along with the validation results.
</td>