{% extends "base.html" %} {% load static from staticfiles %} {% load mirror_status %} {% load flags %} {% block title %}Arch Linux - {{ mirror.name }} - Mirror Details{% endblock %} {% block head %}<link rel="stylesheet" type="text/css" href="{% static "flags/fam.css" %}" media="screen, projection" />{% endblock %} {% block content %} <div class="box"> <h2>Mirror Details: {{ mirror.name }}</h2> <table class="compact"> <tr> <th>Name:</th> <td>{{ mirror.name }}</td> </tr> <tr> <th>Tier:</th> <td>{{ mirror.get_tier_display }}</td> </tr> <tr> <th>Has ISOs:</th> <td>{{ mirror.isos|yesno|capfirst }}</td> </tr> {% if user.is_authenticated %} <tr> <th>Public:</th> <td>{{ mirror.public|yesno|capfirst }}</td> </tr> <tr> <th>Active:</th> <td>{{ mirror.active|yesno|capfirst }}</td> </tr> <tr> <th>Rsync IPs:</th> <td class="wrap">{{mirror.rsync_ips.all|join:', '}}</td> </tr> <tr> <th>Admin Email:</th> <td>{% if mirror.admin_email %}<a href="mailto:{{ mirror.admin_email }}">{{ mirror.admin_email }}</a>{% else %}None{% endif %}</td> </tr> <tr> <th>Notes:</th> <td>{{ mirror.notes|linebreaks }}</td> </tr> <tr> <th>Upstream:</th> <td>{% if mirror.upstream %} <a href="{{ mirror.upstream.get_absolute_url }}" title="Mirror details for {{ mirror.upstream.name }}">{{ mirror.upstream.name }}</a> {% else %}None{% endif %}</td> </tr> <tr> <th>Downstream:</th> {% with mirror.downstream as ds_mirrors %} <td>{% if ds_mirrors %} {% for ds in ds_mirrors %} <a href="{{ ds.get_absolute_url }}" title="Mirror details for {{ ds.name }}">{{ ds.name }}</a> {% if not ds.active %}<span class="testing-dep">(inactive)</span>{% endif %} {% if not ds.public %}<span class="testing-dep">(private)</span>{% endif %} <br/> {% endfor %} {% else %}None{% endif %}</td> {% endwith %} </tr> {% endif %} </table> <h3>Available URLs</h3> <table id="available_urls" class="results"> <thead> <tr> <th>Mirror URL</th> <th>Protocol</th> <th>Country</th> <th>IPv4</th> <th>IPv6</th> <th>Last Sync</th> <th>Completion %</th> <th>μ Delay (hh:mm)</th> <th>μ Duration (secs)</th> <th>σ Duration (secs)</th> <th>Mirror Score</th> </tr> </thead> <tbody> {% for m_url in urls %} <tr class="{% cycle 'odd' 'even' %}"> <td>{% if m_url.protocol.is_download %}<a href="{{ m_url.url }}">{{ m_url.url }}</a>{% else %}{{ m_url.url }}{% endif %}</td> <td>{{ m_url.protocol }}</td> <td class="country">{% country_flag m_url.country %}{{ m_url.country.name }}</td> <td>{{ m_url.has_ipv4|yesno|capfirst }}</td> <td>{{ m_url.has_ipv6|yesno|capfirst }}</td> <td>{{ m_url.last_sync|date:'Y-m-d H:i'|default:'unknown' }}</td> <td>{{ m_url.completion_pct|percentage:1 }}</td> <td>{{ m_url.delay|duration|default:'unknown' }}</td> <td>{{ m_url.duration_avg|floatformat:2 }}</td> <td>{{ m_url.duration_stddev|floatformat:2 }}</td> <td>{{ m_url.score|floatformat:1|default:'∞' }}</td> </tr> {% endfor %} </tbody> </table> <h3>Error Log</h3> {% include "mirrors/error_table.html" %} </div> <div class="box"> <h2>Mirror Status Charts</h2> <p>Periodic checks of the mirrors are done from various geographic locations, IP addresses, and using IPv4 or IPv6. These results are summarized in graphical form below.</p> <div id="charts-container"></div> </div> {% endblock %} {% block script_block %} {% load cdn %}{% jquery %}{% jquery_tablesorter %} <script type="text/javascript" src="{% static "d3-3.0.6.min.js" %}"></script> <script type="text/javascript" src="{% static "archweb.js" %}"></script> <script type="text/javascript" src="{% static "mirror_status.js" %}"></script> <script type="text/javascript"> $(document).ready(function() { $("#available_urls:has(tbody tr)").tablesorter( {widgets: ['zebra'], sortList: [[1,0], [2,0]], headers: { 8: { sorter: 'mostlydigit' }, 9: { sorter: 'mostlydigit' }, 10: { sorter: 'mostlydigit' } } }); }); $(document).ready(function() { draw_graphs("/mirrors/locations/json/", "./json/", "#charts-container"); }); </script> {% endblock %}