Added SEO keywords. Added medua upload indicator. Added Khabarovsk default
Build and Publish / Build and Publish Docker Image (push) Successful in 1m17s

This commit is contained in:
Ultradesu
2026-05-18 14:47:04 +03:00
parent 3a084a9d79
commit 77f6b5c5e2
10 changed files with 319 additions and 40 deletions
+11 -14
View File
@@ -32,6 +32,10 @@
.fc .fc-toolbar-title { font-size: 1.1rem !important; }
.fc .fc-button { padding: 0.25rem 0.5rem !important; font-size: 0.8rem !important; }
.fc-event { cursor: pointer; border: none !important; padding: 2px 5px; border-radius: 4px; }
.fc-event.ev-completed .fc-event-title,
.fc-event.ev-completed .fc-list-event-title { text-decoration: line-through; opacity: 0.75; }
.fc-event.ev-cancelled .fc-event-title,
.fc-event.ev-cancelled .fc-list-event-title { text-decoration: line-through; }
.fc .fc-day-today { background: #eef2ff !important; }
.fc .fc-day.day-weekend { background: #faf5f0; }
.fc .fc-day-today.day-weekend { background: #eef2ff !important; }
@@ -45,8 +49,6 @@
.visit-modal { background:#fff; border-radius:12px; padding:1.5rem; width:90%; max-width:380px; box-shadow:0 4px 24px rgba(0,0,0,0.15); }
.visit-modal h3 { margin:0 0 0.75rem; font-size:1.1rem; }
.visit-modal .meta { color:#888; font-size:0.85rem; margin-bottom:0.75rem; line-height:1.6; }
.visit-modal .actions { display:flex; gap:0.5rem; flex-wrap:wrap; }
.visit-modal .actions form { margin:0; }
.color-dot { display:inline-block; width:12px; height:12px; border-radius:50%; margin-right:6px; vertical-align:middle; }
</style>
@@ -60,12 +62,8 @@
<div id="vmTime"></div>
<div id="vmNotes" style="margin-top:0.3rem;"></div>
</div>
<div id="vmStatus" style="margin-bottom:0.75rem;"></div>
<div class="actions" id="vmActions"></div>
<div style="display:flex;gap:0.5rem;margin-top:0.5rem;">
<a id="vmEditLink" href="#" class="button is-info is-small" style="flex:1;">{{ t.schedule_edit_title }}</a>
<button class="button is-light is-small" style="flex:1;" onclick="closeModal()">OK</button>
</div>
<div id="vmStatus" style="margin-bottom:1rem;"></div>
<a id="vmEditLink" href="#" class="button is-primary is-fullwidth" style="font-size:1rem;font-weight:700;padding:0.65rem;">📋 {{ t.schedule_edit_title }}</a>
</div>
</div>
@@ -89,6 +87,11 @@ document.addEventListener('DOMContentLoaded', function() {
right: 'dayGridMonth,timeGridWeek,timeGridDay,listWeek'
},
events: '/admin/schedule/events',
eventDidMount: function(info) {
var status = info.event.extendedProps.status;
if (status === 'completed') info.el.classList.add('ev-completed');
if (status === 'cancelled') info.el.classList.add('ev-cancelled');
},
eventClick: function(info) {
info.jsEvent.preventDefault();
const ev = info.event;
@@ -102,12 +105,6 @@ document.addEventListener('DOMContentLoaded', function() {
document.getElementById('vmNotes').textContent = p.notes || '';
const badge = '<span class="badge badge-visit-' + p.status + '">' + statusLabels[p.status] + '</span>';
document.getElementById('vmStatus').innerHTML = badge;
let actions = '';
if (p.status === 'scheduled') {
actions += '<form method="post" action="/admin/schedule/' + ev.id + '/done"><button class="button is-small is-success is-outlined">{{ t.schedule_mark_done }}</button></form>';
actions += '<form method="post" action="/admin/schedule/' + ev.id + '/cancel"><button class="button is-small is-danger is-outlined">{{ t.schedule_cancel }}</button></form>';
}
document.getElementById('vmActions').innerHTML = actions;
document.getElementById('vmEditLink').href = '/admin/schedule/' + ev.id + '/edit?lang=' + lang;
document.getElementById('visitModal').classList.add('is-open');
},