Initial commit
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
{% extends "base.html" %}
|
||||
{% from "macros.html" import guide_box %}
|
||||
{% block title %}داشبورد{% endblock %}
|
||||
{% block content %}
|
||||
<h2 class="mb-4">داشبورد</h2>
|
||||
{{ guide_box(guide, 'dashboard') }}
|
||||
|
||||
{% if pending and not pending.confirmed %}
|
||||
<div class="alert alert-warning">
|
||||
<strong>اعمال در انتظار تأیید!</strong>
|
||||
پروفایل «{{ pending.profile.name if pending.profile else '-' }}» اعمال شده.
|
||||
<a href="{{ url_for('apply.status', log_id=pending.id) }}" class="alert-link">مشاهده و تأیید / rollback</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="row g-3 mb-4">
|
||||
<div class="col-md-6">
|
||||
<div class="card h-100">
|
||||
<div class="card-header">اطلاعات سیستم</div>
|
||||
<div class="card-body">
|
||||
<p><strong>Ubuntu:</strong> {{ status.ubuntu_description }}</p>
|
||||
<p><strong>Codename:</strong> {{ status.ubuntu_codename }}</p>
|
||||
<p><strong>Host root:</strong> <code>{{ status.host_root }}</code></p>
|
||||
{% if state and state.initial_backup_done %}
|
||||
<span class="badge bg-success">Backup اولیه گرفته شده</span>
|
||||
{% else %}
|
||||
<span class="badge bg-warning">Backup اولیه در انتظار</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="card h-100">
|
||||
<div class="card-header">دسترسی سریع</div>
|
||||
<div class="card-body d-grid gap-2">
|
||||
<a href="{{ url_for('apply.index') }}" class="btn btn-primary">اعمال پروفایل</a>
|
||||
<a href="{{ url_for('mirrors.list_mirrors') }}" class="btn btn-outline-secondary">مدیریت میرورها</a>
|
||||
<a href="{{ url_for('restore.index') }}" class="btn btn-outline-warning">بازگردانی</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row g-3">
|
||||
<div class="col-md-6">
|
||||
<div class="card">
|
||||
<div class="card-header d-flex justify-content-between">
|
||||
<span>DNS</span>
|
||||
<a href="{{ url_for('main.guide', section='dns') }}" class="btn btn-sm btn-outline-info">راهنما</a>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
{% if status.dns.dropin_exists %}
|
||||
<pre class="small bg-light p-2">{{ status.dns.content }}</pre>
|
||||
{% else %}
|
||||
<p class="text-muted">drop-in Mirror Manager تنظیم نشده</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="card">
|
||||
<div class="card-header d-flex justify-content-between">
|
||||
<span>Docker</span>
|
||||
<a href="{{ url_for('main.guide', section='docker') }}" class="btn btn-sm btn-outline-info">راهنما</a>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<pre class="small bg-light p-2">{{ status.docker.config | tojson(indent=2) }}</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<div class="card-header d-flex justify-content-between">
|
||||
<span>APT sources.list</span>
|
||||
<a href="{{ url_for('main.guide', section='apt') }}" class="btn btn-sm btn-outline-info">راهنما</a>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<pre class="small bg-light p-2">{{ status.apt.sources_list or 'تنظیم نشده' }}</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if recent_tests %}
|
||||
<h4 class="mt-4">آخرین تستها</h4>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-sm table-striped">
|
||||
<thead>
|
||||
<tr><th>میرور</th><th>نوع</th><th>نتیجه</th><th>تأخیر</th><th>زمان</th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for r in recent_tests %}
|
||||
<tr>
|
||||
<td>{{ r.mirror.name }}</td>
|
||||
<td>{{ r.test_type }}</td>
|
||||
<td>{% if r.success %}<span class="text-success">✓</span>{% else %}<span class="text-danger">✗</span>{% endif %}</td>
|
||||
<td>{{ '%.0f'|format(r.latency_ms) if r.latency_ms else '-' }} ms</td>
|
||||
<td>{{ r.tested_at.strftime('%Y-%m-%d %H:%M') }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user