Files
nitter-status/server/templates/instances.html.j2
T

125 lines
5.0 KiB
Django/Jinja

{# SPDX-License-Identifier: AGPL-3.0-only #}
<!DOCTYPE html>
<html lang="en" data-bs-theme="dark">
<head>
<meta charset="utf-8">
<link href="/static/bootstrap.min.css" rel="stylesheet">
<style>
.uptime-graph rect {
cursor: pointer;
}
.uptime-graph rect:hover {
fill: #5e6c84;
}
</style>
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Nitter Instance Health</title>
</head>
<body>
<div class="container">
<h1>Nitter Instance Uptime & Health</h1>
<p><a href="/about">About</a></p>
<p>Please use <a rel="nofollow" href="/api/v1/instances">/api/v1/instances</a> for bots.</p>
<p>Last Updated {{last_updated}} <a rel="nofollow" href="https://time.is/UTC">UTC</a>.</p>
<div class="table-responsive">
<table class="table sortable">
<thead>
<tr>
<th scope="col">Instance</th>
<th scope="col">Country</th>
<th scope="col">Healthy</th>
<th scope="col">Health History</th>
<th scope="col">Average (ms)</th>
<th scope="col">All Healthy %</th>
<th scope="col">RSS</th>
<th scope="col">Version</th>
<th scope="col">Points</th>
</tr>
</thead>
<tbody>
{% for host in instances -%}
<tr>
<td><a rel="nofollow external" href="{{host.url}}">{{host.domain}}</a></td>
<td>{{host.country}}</td>
<td>
{%- if host.is_bad_host -%}
<div title="Host known for blocking healthchecks">❓</div>
{%- elif host.healthy -%}
✅
{%- else -%}
❌
{%- endif -%}</td>
<td {%- if not host.recent_checks %} colspan="2" {% endif -%}>
{%- set height = 28 -%}
{%- set width = 110 -%}
{%- set width_bar = 5 -%}
{%- set offset = 5 -%}
{%- if host.recent_checks -%}
<svg class="uptime-graph" viewBox="0 0 {{width}} {{height}}" height="{{height}}">
{%- for check in host.recent_checks -%}
{%- if check.1 -%}
{%- set title = "Healthy " ~ check.0 -%}
{%- set color_bar = "#2fcc66" -%}
{%- else -%}
{%- set title = "Unhealthy " ~ check.0 -%}
{%- set color_bar = "#ff6225" -%}
{%- endif -%}
<rect x="{{(loop.index-1) * width_bar}}" y="0" width="{{width_bar - 1}}" height="{{height}}" fill="{{color_bar}}" fill-opacity="0.95" shape-rendering="auto" ><title>{{title}}</title></rect>
{%- endfor -%}
</svg>
{%- else -%}
{# <!-- no healthy entries, show last time host was seen healthy --> #}
{%- if host.last_healthy -%}
Last seen healthy: {{host.last_healthy | truncate(length=16, end="") | replace(from="-", to=".") | replace(from="T", to=" ")}}
<a rel="nofollow" href="https://time.is/UTC">UTC</a>
{%- else -%}
Never seen healthy.
{%- endif -%}
{%- endif -%}
</td>
{%- if host.recent_checks -%}
<td>{{host.ping_avg}}</td>
{% endif %}
<td>{{host.healthy_percentage_overall}}</td>
<td>{% if host.rss -%} ✅ {%- else -%} ❌ {%- endif -%}</td>
{%- if host.healthy and not host.version -%}
{%- set version = "Dmissing" -%}
{%- elif host.version and not host.is_upstream -%}
{%- set version = "Aforeign" -%}
{%- elif host.is_latest_version -%}
{%- set version = "Blatest" -%}
{%- elif host.version and not host.is_latest_version -%}
{%- set version = "Coutdated" -%}
{%- else -%}
{%- set version = "Eunknown" -%}
{%- endif -%}
<td data-sort="{{version}}{{host.version | default(value='')}}">
{%- if host.version_url -%}
<a title="{{host.version}}" href="{{host.version_url}}">
{{host.version | truncate(length=18) | default(value="missing version")}}
</a>
{%- else -%}
<a href="{{host.url ~ '/about'}}">missing version</a>
{%- endif -%}
{%- if version == "Dmissing" -%}
<span class="ms-1 badge bg-warning">missing</span>
{%- elif version == "Aforeign" -%}
<span class="ms-1 badge bg-secondary">foreign repo</span>
{%- elif version == "Blatest" -%}
<span class="ms-1 badge bg-success">latest</span>
{%- elif version == "Coutdated" -%}
<span class="ms-1 badge bg-info">outdated</span>
{%- endif -%}
</td>
<td>{{host.points}}</td>
</tr>
{%- endfor -%}
</tbody>
</table>
</div>
</div>
<script src="/static/bootstrap.min.js"></script>
<link href="/static/sorting.css" rel="stylesheet" />
<script src="/static/sortable.min.js"></script>
</body>
</html>