fix(dashboard): командный центр — навигация ведёт в /admin, дни в «висит»
Кнопки инбокса (Открыть/Разблокировать/Разобрать) и ссылки все алерты/все сессии вели на голый #hash и оставались на /dashboard. Теперь ведут в /admin#sessions|#users. fmtSince показывает дни для сессий старше 48ч (1888ч → 78д 16ч). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -83,6 +83,7 @@
|
||||
let min = Math.floor((Date.now() - d.getTime()) / 60000);
|
||||
if (min < 0) min = 0;
|
||||
const hr = Math.floor(min / 60);
|
||||
if (hr >= 48) return Math.floor(hr / 24) + 'д ' + (hr % 24) + 'ч';
|
||||
return hr > 0 ? hr + 'ч ' + (min % 60) + 'м' : min + 'м';
|
||||
}
|
||||
function fmtBannedDate(s) {
|
||||
@@ -187,7 +188,7 @@
|
||||
sev: 'rose', kind: 'block', kindLabel: 'Блокировка',
|
||||
title: u.name || '—',
|
||||
meta: `<span class="acc-mono">${e(u.email || '')}</span> · ${fmtBannedDate(u.banned_at)}`,
|
||||
act: 'Разблокировать', actHash: '#users', solid: false,
|
||||
act: 'Разблокировать', actHash: '/admin#users', solid: false,
|
||||
});
|
||||
});
|
||||
(d.stuckSessions || []).forEach((s) => {
|
||||
@@ -195,7 +196,7 @@
|
||||
sev: 'amber', kind: 'stuck', kindLabel: 'Зависла',
|
||||
title: s.user_name || '—',
|
||||
meta: `${e(s.subject_name || '—')} · висит <span class="acc-mono">${fmtSince(s.started_at)}</span>`,
|
||||
act: 'Открыть', actHash: '#sessions', solid: true,
|
||||
act: 'Открыть', actHash: '/admin#sessions', solid: true,
|
||||
});
|
||||
});
|
||||
const ab = d.abandonedSessions24h || 0;
|
||||
@@ -204,7 +205,7 @@
|
||||
sev: 'amber', kind: 'stuck', kindLabel: 'Брошено',
|
||||
title: 'Всплеск брошенных сессий',
|
||||
meta: `<span class="acc-mono">${ab}</span> сессий прервано за 24ч`,
|
||||
act: 'Разобрать', actHash: '#sessions', solid: false,
|
||||
act: 'Разобрать', actHash: '/admin#sessions', solid: false,
|
||||
});
|
||||
}
|
||||
return items;
|
||||
@@ -246,7 +247,7 @@
|
||||
<div class="acc-ttl-ic"><svg class="acc-ic sm" viewBox="0 0 24 24"><path d="M12 3l9 16H3z"/><path d="M12 10v4M12 17h.01"/></svg></div>
|
||||
<h2>Требует внимания</h2>
|
||||
<span class="acc-count">${items.length} ${items.length === 1 ? 'событие' : 'событий'}</span>
|
||||
<span class="acc-more" data-go="#sessions">все алерты <svg class="acc-ic xs" viewBox="0 0 24 24"><path d="M5 12h14M13 6l6 6-6 6"/></svg></span>
|
||||
<span class="acc-more" data-go="/admin#sessions">все алерты <svg class="acc-ic xs" viewBox="0 0 24 24"><path d="M5 12h14M13 6l6 6-6 6"/></svg></span>
|
||||
</div>
|
||||
<div class="acc-attn-tabs">
|
||||
<button class="acc-attn-tab${_tab === 'all' ? ' on' : ''}" data-tab="all">Все <span class="acc-tag">${items.length}</span></button>
|
||||
@@ -303,7 +304,7 @@
|
||||
<div class="acc-card-head">
|
||||
<div class="acc-ttl-ic" style="background:var(--acc-green-50)"><svg class="acc-ic sm" style="stroke:var(--acc-green)" viewBox="0 0 24 24"><path d="M4 18V7M9 18V4M14 18v-7M19 18V9"/></svg></div>
|
||||
<h2>Топ сегодня</h2>
|
||||
<span class="acc-more" data-go="#sessions">все сессии <svg class="acc-ic xs" viewBox="0 0 24 24"><path d="M5 12h14M13 6l6 6-6 6"/></svg></span>
|
||||
<span class="acc-more" data-go="/admin#sessions">все сессии <svg class="acc-ic xs" viewBox="0 0 24 24"><path d="M5 12h14M13 6l6 6-6 6"/></svg></span>
|
||||
</div>
|
||||
<div class="acc-feed">${feedHtml}</div>
|
||||
${subjBlock}
|
||||
|
||||
Reference in New Issue
Block a user