Files
web-petting/templates/admin/dashboard.html
T
Aleksandr Bogomiakov 79c287eaa0
Build and Publish / Build and Publish Docker Image (push) Successful in 1m42s
Reworked admin style
2026-08-09 03:19:47 +01:00

84 lines
3.6 KiB
HTML

{% extends "admin/layout.html" %}
{% let active_page = "dashboard" %}
{% block title %}{{ t.dashboard_title }}{% endblock %}
{% block content %}
<div class="page-head">
<h1>{{ t.dashboard_today_visits }}</h1>
<a href="/admin/schedule/new?lang={{ lang.code() }}" class="button is-primary is-small">+ {{ t.schedule_new }}</a>
</div>
{% if today_visits.is_empty() %}
<p class="empty-state">{{ t.dashboard_no_visits }}</p>
{% else %}
{% for tv in &today_visits %}
<div class="item-card">
<div class="item-card-header">
<a href="/admin/schedule/{{ tv.visit.id }}/edit?lang={{ lang.code() }}" class="name card-link">
<span class="color-dot" style="background:{{ tv.client_color }}"></span>{{ tv.client_name }}
</a>
<span class="badge badge-visit-{{ tv.visit.status }}">{{ t.visit_status(&tv.visit.status) }}</span>
</div>
<div class="item-card-meta">
<span>🕐 {{ tv.visit.time_start }} — {{ tv.visit.time_end }}</span>
{% if !tv.client_phone.is_empty() %}
<span><a href="tel:{{ tv.client_phone }}" class="card-link">📞 {{ tv.client_phone }}</a></span>
{% endif %}
{% if !tv.client_address.is_empty() %}
<span>📍 {{ tv.client_address }}</span>
{% endif %}
</div>
{% if let Some(notes) = tv.visit.notes.as_deref() %}
<div class="card-note">{{ notes }}</div>
{% endif %}
<div class="item-card-actions">
{% if tv.visit.status == "scheduled" %}
<form method="post" action="/admin/schedule/{{ tv.visit.id }}/done">
<button class="button is-small is-success is-outlined btn-sm">{{ t.schedule_mark_done }}</button>
</form>
<form method="post" action="/admin/schedule/{{ tv.visit.id }}/cancel">
<button class="button is-small is-danger is-outlined btn-sm">{{ t.schedule_cancel }}</button>
</form>
{% endif %}
<a href="/admin/media/{{ tv.visit.id }}/upload?lang={{ lang.code() }}" class="button is-small is-info is-outlined btn-sm">📷 {{ t.media_upload }}</a>
</div>
</div>
{% endfor %}
{% endif %}
<!-- Feedbacks -->
<h2 class="section-title">{{ t.dashboard_recent_feedbacks }}</h2>
{% if feedbacks.is_empty() %}
<p class="empty-state">{{ t.dashboard_no_feedbacks }}</p>
{% else %}
{% for fb in &feedbacks %}
<a href="/admin/schedule/{{ fb.visit_id }}/edit?lang={{ lang.code() }}" class="item-card feedback-card">
<div class="feedback-head">
<strong>{{ fb.client_name }}</strong>
<span class="feedback-date">{{ fb.visit_date }}</span>
</div>
<div class="feedback-text">{{ fb.feedback }}</div>
</a>
{% endfor %}
{% if feedback_total_pages > 1 %}
<div class="pagination-row">
{% if feedback_page > 1 %}
<a href="/admin/?lang={{ lang.code() }}&page={{ feedback_page - 1 }}" class="button is-small is-light">&laquo;</a>
{% endif %}
{% for p in 1..=feedback_total_pages %}
{% if p == feedback_page %}
<span class="button is-small is-primary">{{ p }}</span>
{% else %}
<a href="/admin/?lang={{ lang.code() }}&page={{ p }}" class="button is-small is-light">{{ p }}</a>
{% endif %}
{% endfor %}
{% if feedback_page < feedback_total_pages %}
<a href="/admin/?lang={{ lang.code() }}&page={{ feedback_page + 1 }}" class="button is-small is-light">&raquo;</a>
{% endif %}
</div>
{% endif %}
{% endif %}
{% endblock %}