Журнал/списки: верхний бейдж статуса обновляется живьём, без F5

Поллер строк в работе (/admin/journal/live, tick в layout.html) обновлял
только нижнюю live-строку, а верхний бейдж статуса оставался тем, что
отрисовал сервер при загрузке — после отправки показывал «не отправлено»,
пока страницу не обновишь. LiveStatus получил поля badge/badgeText/outcome
(заполняются в liveOutgoing/liveIncoming из тех же источников, что и строка
журнала), tick синхронизирует верхний бейдж и бейдж исхода. Касается
журнала обмена, «Исходящих» и «Входящих» — у всех общий поллер.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
fontvielle
2026-10-14 18:36:40 +03:00
parent 4dc00cdcce
commit b442f21818
2 changed files with 17 additions and 0 deletions
+7
View File
@@ -25,6 +25,11 @@ type LiveStatus struct {
Kind string `json:"kind"` // wait | warn | ok | bad
Active bool `json:"active"` // в работе: страница продолжает опрашивать
Sig string `json:"sig,omitempty"` // отпечаток состояния: изменился — карточка перерисовывается
// Верхний бейдж статуса строки журнала/списка — чтобы поллер обновлял и его, а не только
// нижнюю live-строку (иначе бейдж застывает до перезагрузки страницы).
Badge string `json:"badge,omitempty"` // класс бейджа (как .Status в строке)
BadgeText string `json:"badgeText,omitempty"` // русский текст статуса
Outcome string `json:"outcome,omitempty"` // бейдж исхода (входящие): Принято/Отказано/Частично…
}
// liveSig — короткий отпечаток всего, что показывает карточка: сменился — страница обновляется.
@@ -52,6 +57,7 @@ func liveOutgoing(c ClaimView) LiveStatus {
}
}
st.Sig = liveSig(st.Text, c.Status, c.UpdatedAt, sendFailGet(guid), quik, depoL, watch)
st.Badge, st.BadgeText = c.Status, russianState(c.Status)
return st
}
@@ -64,6 +70,7 @@ func liveIncoming(it *IncomingTransfer) LiveStatus {
watch = globalOrderWatch.Get(it.GUID)
}
st.Sig = liveSig(st.Text, it, watch)
st.Badge, st.BadgeText, st.Outcome = incomingJournalStatus(it)
}
return st
}