Files
ACORE/templates/pages/vendor-detail.html
T

163 lines
11 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{% load i18n %}
<div class="page-content">
<div style="display:flex; align-items:center; justify-content:space-between; margin-bottom:1rem; gap:1rem; flex-wrap:wrap;">
<a href="/dislocation/?tab=vendors" hx-get="/dislocation/?tab=vendors" hx-target="#main-content" hx-push-url="/dislocation/?tab=vendors" hx-indicator="#loader"
style="display:inline-flex; align-items:center; gap:0.375rem; font-size:0.8125rem; color:var(--color-muted-foreground); text-decoration:none;">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="m12 19-7-7 7-7"/><path d="M19 12H5"/>
</svg>
{% trans "К дислокации" %}
</a>
{% if can_edit_vendor %}
<div style="display:flex; gap:0.5rem; flex-wrap:wrap;">
{% if vendor_edit_mode %}
<a href="/dislocation/vendors/{{ vendor.pk }}/" hx-get="/dislocation/vendors/{{ vendor.pk }}/" hx-target="#main-content" hx-push-url="true" hx-indicator="#loader"
class="btn btn-secondary" style="font-size:0.8125rem; padding:0.3rem 0.75rem; text-decoration:none;">{% trans "Отмена" %}</a>
{% else %}
<a href="/dislocation/vendors/{{ vendor.pk }}/?edit=1" hx-get="/dislocation/vendors/{{ vendor.pk }}/?edit=1" hx-target="#main-content" hx-push-url="true" hx-indicator="#loader"
class="btn btn-primary" style="font-size:0.8125rem; padding:0.3rem 0.75rem; text-decoration:none;">{% trans "Редактировать" %}</a>
{% endif %}
</div>
{% endif %}
</div>
{% if vendor_form_message %}
<div style="margin-bottom:1rem; padding:0.75rem 1rem; border-radius:0.5rem; border:1px solid hsl(152 40% 70%); background:color-mix(in srgb, var(--color-success) 12%, var(--color-card)); color:var(--color-foreground); font-size:0.875rem;">
{{ vendor_form_message }}
</div>
{% endif %}
{% if vendor_form_error %}
<div style="margin-bottom:1rem; padding:0.75rem 1rem; border-radius:0.5rem; background:hsl(0 70% 96%); border:1px solid hsl(0 70% 85%); color:hsl(0 55% 35%); font-size:0.8125rem;">
{{ vendor_form_error }}
</div>
{% endif %}
<div style="background:var(--color-card); border-radius:0.75rem; border:1px solid var(--color-border); box-shadow:0 1px 2px rgb(0 0 0/0.05); padding:1.5rem; margin-bottom:1.25rem;">
<div style="display:flex; align-items:flex-start; justify-content:space-between; gap:1rem; flex-wrap:wrap;">
<div>
<h1 style="font-size:1.25rem; font-weight:600; color:var(--color-foreground);">{{ vendor.name|default:"—" }}</h1>
<div style="font-size:0.875rem; color:var(--color-muted-foreground); margin-top:0.25rem;">
{% trans "Сервис / поставщик" %}
{% if vendor.location_region %} · {{ vendor.location_region.name }}{% endif %}
</div>
</div>
{% if vendor.is_active %}
<span class="badge badge-success">{% trans "Активен" %}</span>
{% else %}
<span class="badge badge-secondary">{% trans "Неактивен" %}</span>
{% endif %}
</div>
</div>
{% if vendor_edit_mode and vendor_edit_form %}
<form hx-post="/dislocation/vendors/{{ vendor.pk }}/update/" hx-target="#main-content" hx-indicator="#loader" hx-disabled-elt="find button[type=submit]"
style="background:var(--color-card); border:1px solid var(--color-border); border-radius:0.75rem; padding:1.25rem; margin-bottom:1.25rem;">
{% csrf_token %}
<input type="hidden" name="from_card" value="1">
<div style="display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:0.875rem;">
<div style="grid-column:1 / -1;">
<label style="display:block; font-size:0.8125rem; font-weight:500; margin-bottom:0.375rem;">{% trans "Название" %} *</label>
{{ vendor_edit_form.name }}
</div>
<div>
<label style="display:block; font-size:0.8125rem; font-weight:500; margin-bottom:0.375rem;">{% trans "Город/район" %} *</label>
{{ vendor_edit_form.location_region }}
</div>
<div>
<label style="display:block; font-size:0.8125rem; font-weight:500; margin-bottom:0.375rem;">{% trans "Координаты" %} <span style="font-weight:400; color:var(--color-muted-foreground);">lat,lng</span></label>
{{ vendor_edit_form.location }}
</div>
<div>
<label style="display:block; font-size:0.75rem; color:var(--color-muted-foreground); margin-bottom:0.25rem;">{% trans "Улица" %}</label>
{{ vendor_edit_form.street }}
</div>
<div style="display:grid; grid-template-columns:1fr 1fr 1fr; gap:0.5rem;">
<div>
<label style="display:block; font-size:0.75rem; color:var(--color-muted-foreground); margin-bottom:0.25rem;">{% trans "Дом" %}</label>
{{ vendor_edit_form.house_number }}
</div>
<div>
<label style="display:block; font-size:0.75rem; color:var(--color-muted-foreground); margin-bottom:0.25rem;">{% trans "Корпус" %}</label>
{{ vendor_edit_form.building }}
</div>
<div>
<label style="display:block; font-size:0.75rem; color:var(--color-muted-foreground); margin-bottom:0.25rem;">{% trans "Пом." %}</label>
{{ vendor_edit_form.apartment }}
</div>
</div>
<div style="grid-column:1 / -1;">
<label style="display:block; font-size:0.8125rem; font-weight:500; margin-bottom:0.375rem;">{% trans "Комментарий" %}</label>
{{ vendor_edit_form.comments }}
</div>
<label style="display:flex; align-items:center; gap:0.5rem; font-size:0.8125rem;">
{{ vendor_edit_form.is_active }} {% trans "Активен" %}
</label>
</div>
<button type="submit" class="btn btn-primary" style="margin-top:1rem;">{% trans "Сохранить" %}</button>
</form>
{% else %}
<div style="display:grid; grid-template-columns:minmax(0,1.4fr) minmax(0,1fr); gap:1.25rem;">
<div style="background:var(--color-card); border:1px solid var(--color-border); border-radius:0.75rem; padding:1.25rem;">
<h2 style="font-size:1rem; font-weight:600; color:var(--color-foreground); margin-bottom:0.875rem;">{% trans "Данные" %}</h2>
<div style="display:grid; gap:0.75rem; font-size:0.875rem;">
<div>
<div style="font-size:0.75rem; color:var(--color-muted-foreground);">{% trans "Адрес" %}</div>
<div style="color:var(--color-foreground);">
{% if vendor.street or vendor.house_number %}
{% if vendor.street %}ул. {{ vendor.street }}{% endif %}{% if vendor.house_number %} {{ vendor.house_number }}{% endif %}{% if vendor.building %}, корп. {{ vendor.building }}{% endif %}{% if vendor.apartment %}, пом. {{ vendor.apartment }}{% endif %}
{% elif vendor.address %}
{{ vendor.address }}
{% else %}
—
{% endif %}
</div>
</div>
<div>
<div style="font-size:0.75rem; color:var(--color-muted-foreground);">{% trans "Город/район" %}</div>
<div style="color:var(--color-foreground);">{{ vendor.location_region.name|default:"—" }}</div>
</div>
<div>
<div style="font-size:0.75rem; color:var(--color-muted-foreground);">{% trans "Комментарий" %}</div>
<div style="color:var(--color-foreground); white-space:pre-wrap;">{{ vendor.comments|default:"—" }}</div>
</div>
</div>
<div style="margin-top:1.25rem; padding-top:0.875rem; border-top:1px solid var(--color-border); font-size:0.75rem; color:var(--color-muted-foreground);">
<div>{% trans "Создано:" %} {{ vendor.created_at|date:"d.m.Y H:i" }}</div>
<div style="margin-top:0.25rem;">{% trans "Обновлено:" %} {{ vendor.updated_at|date:"d.m.Y H:i" }}</div>
</div>
</div>
<div style="background:var(--color-card); border:1px solid var(--color-border); border-radius:0.75rem; padding:1.25rem;">
<h2 style="font-size:1rem; font-weight:600; color:var(--color-foreground); margin-bottom:0.875rem;">{% trans "Карта" %}</h2>
{% if vendor.has_coordinates %}
<div id="vendor-map" style="height:240px; width:100%; border-radius:0.5rem; overflow:hidden;"></div>
<div style="font-size:0.75rem; color:var(--color-muted-foreground); margin-top:0.5rem;">{{ vendor.latitude|floatformat:5 }} · {{ vendor.longitude|floatformat:5 }}</div>
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.9.4/dist/leaflet.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.9.4/dist/leaflet.css">
<script>
(function () {
var lat = parseFloat("{{ vendor.latitude|floatformat:'6' }}".replace(',', '.'));
var lng = parseFloat("{{ vendor.longitude|floatformat:'6' }}".replace(',', '.'));
var map = L.map('vendor-map', { zoomControl: false, dragging: false, scrollWheelZoom: false }).setView([lat, lng], 15);
if (typeof acoreAddMapBaseLayer === 'function') {
acoreAddMapBaseLayer(map);
} else {
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© OpenStreetMap contributors', maxZoom: 19
}).addTo(map);
}
L.marker([lat, lng]).addTo(map);
})();
</script>
{% else %}
<div style="font-size:0.8125rem; color:var(--color-warning);">{% trans "Координаты не указаны" %}</div>
{% if can_edit_vendor %}
<div style="font-size:0.75rem; color:var(--color-muted-foreground); margin-top:0.35rem;">{% trans "Укажите lat,lng в режиме редактирования." %}</div>
{% endif %}
{% endif %}
</div>
</div>
{% endif %}
</div>