fix(ui): убрать неиспользуемый код прежней таблицы мониторинга
This commit is contained in:
1 parent
e4f951175c
commit
65c63e2860
4 files changed
+10
-45
No files matched your search
@@ -44,7 +44,7 @@ import {
|
|||||||
RefreshCwIcon, PlusIcon, SearchIcon, XIcon,
|
RefreshCwIcon, PlusIcon, SearchIcon, XIcon,
|
||||||
ChevronDownIcon, ChevronRightIcon,
|
ChevronDownIcon, ChevronRightIcon,
|
||||||
TrashIcon, ArrowRightIcon,
|
TrashIcon, ArrowRightIcon,
|
||||||
CpuIcon, HardDriveIcon, ThermometerIcon, ClockIcon,
|
CpuIcon, HardDriveIcon,
|
||||||
AlertCircleIcon, ServerIcon, PauseIcon, PlayIcon,
|
AlertCircleIcon, ServerIcon, PauseIcon, PlayIcon,
|
||||||
ArrowUpIcon, ArrowDownIcon, ArrowUpDownIcon,
|
ArrowUpIcon, ArrowDownIcon, ArrowUpDownIcon,
|
||||||
ServerCrashIcon, ChevronUpIcon, DownloadIcon,
|
ServerCrashIcon, ChevronUpIcon, DownloadIcon,
|
||||||
@@ -142,7 +142,6 @@ function ProbePingRttDetailChart({
|
|||||||
const minVal = Math.min(...chartPts)
|
const minVal = Math.min(...chartPts)
|
||||||
const span = Math.max(1, maxVal - minVal) * 1.08
|
const span = Math.max(1, maxVal - minVal) * 1.08
|
||||||
const y0 = minVal - (span - (maxVal - minVal)) / 2
|
const y0 = minVal - (span - (maxVal - minVal)) / 2
|
||||||
const y1 = y0 + span
|
|
||||||
const xAt = (i: number) => pad.l + (chartPts.length <= 1 ? iw / 2 : (i / (chartPts.length - 1)) * iw)
|
const xAt = (i: number) => pad.l + (chartPts.length <= 1 ? iw / 2 : (i / (chartPts.length - 1)) * iw)
|
||||||
const yAt = (v: number) => pad.t + (1 - (v - y0) / span) * ih
|
const yAt = (v: number) => pad.t + (1 - (v - y0) / span) * ih
|
||||||
const lineD = chartPts
|
const lineD = chartPts
|
||||||
@@ -812,18 +811,6 @@ function fmtUptime(sec: number): string {
|
|||||||
return `${m}м`
|
return `${m}м`
|
||||||
}
|
}
|
||||||
|
|
||||||
function resPctColor(pct: number, warn = 70, crit = 85): string {
|
|
||||||
if (pct >= crit) return "text-red-600 dark:text-red-400"
|
|
||||||
if (pct >= warn) return "text-amber-600 dark:text-amber-400"
|
|
||||||
return "text-emerald-600 dark:text-emerald-400"
|
|
||||||
}
|
|
||||||
|
|
||||||
function resBarColor(pct: number, warn = 70, crit = 85): string {
|
|
||||||
if (pct >= crit) return "bg-red-500"
|
|
||||||
if (pct >= warn) return "bg-amber-500"
|
|
||||||
return "bg-emerald-500"
|
|
||||||
}
|
|
||||||
|
|
||||||
const BOARD_MAP: Record<string, string> = {
|
const BOARD_MAP: Record<string, string> = {
|
||||||
"jump-host": "RB5009UG+S+IN",
|
"jump-host": "RB5009UG+S+IN",
|
||||||
"exit-node": "RB4011iGS+RM",
|
"exit-node": "RB4011iGS+RM",
|
||||||
@@ -855,32 +842,6 @@ const INIT_RESOURCES: ServerResource[] = mockServers.map(s => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
// ── MiniBar ───────────────────────────────────────────────────────────────────
|
|
||||||
|
|
||||||
function MiniBar({ pct, warn = 70, crit = 85, className }: {
|
|
||||||
pct: number; warn?: number; crit?: number; className?: string
|
|
||||||
}) {
|
|
||||||
return (
|
|
||||||
<div className={cn("h-1.5 rounded-full bg-muted overflow-hidden", className)}>
|
|
||||||
<div
|
|
||||||
className={cn("h-full rounded-full transition-all duration-700", resBarColor(pct, warn, crit))}
|
|
||||||
style={{ width: `${Math.min(100, Math.max(0, pct))}%` }}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
// ── Sort indicator ─────────────────────────────────────────────────────────────
|
|
||||||
|
|
||||||
type ResSortKey = "name" | "cpu" | "ram" | "hdd" | "uptime" | "temp"
|
|
||||||
|
|
||||||
function SortIcon({ k, sortKey, sortAsc }: { k: ResSortKey; sortKey: ResSortKey; sortAsc: boolean }) {
|
|
||||||
if (sortKey !== k) return <ArrowUpDownIcon className="size-3 opacity-25 ml-0.5" />
|
|
||||||
return sortAsc
|
|
||||||
? <ArrowUpIcon className="size-3 ml-0.5 text-foreground" />
|
|
||||||
: <ArrowDownIcon className="size-3 ml-0.5 text-foreground" />
|
|
||||||
}
|
|
||||||
|
|
||||||
// ── ResourcesTab ──────────────────────────────────────────────────────────────
|
// ── ResourcesTab ──────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
type ResTypeFilter = "all" | "jump-host" | "exit-node" | "home-router"
|
type ResTypeFilter = "all" | "jump-host" | "exit-node" | "home-router"
|
||||||
@@ -1138,7 +1099,6 @@ function UptimePageContent({ selectedProbeId, allProbesHref }: { selectedProbeId
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (liveApi) return
|
if (liveApi) return
|
||||||
// eslint-disable-next-line react-hooks/set-state-in-effect
|
|
||||||
setAllServers(mockServers)
|
setAllServers(mockServers)
|
||||||
setProbes(mockProbesWithSavedStars(INIT_PROBES))
|
setProbes(mockProbesWithSavedStars(INIT_PROBES))
|
||||||
setResources(INIT_RESOURCES)
|
setResources(INIT_RESOURCES)
|
||||||
@@ -1329,14 +1289,12 @@ function UptimePageContent({ selectedProbeId, allProbesHref }: { selectedProbeId
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!sheetOpen) return
|
if (!sheetOpen) return
|
||||||
if (!newSrcId || !selectableSources.some(s => s.id === newSrcId)) {
|
if (!newSrcId || !selectableSources.some(s => s.id === newSrcId)) {
|
||||||
// eslint-disable-next-line react-hooks/set-state-in-effect
|
|
||||||
setNewSrcId(selectableSources[0]?.id ?? "")
|
setNewSrcId(selectableSources[0]?.id ?? "")
|
||||||
}
|
}
|
||||||
}, [sheetOpen, newSrcId, selectableSources])
|
}, [sheetOpen, newSrcId, selectableSources])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!sheetOpen || !newSrcId) {
|
if (!sheetOpen || !newSrcId) {
|
||||||
// eslint-disable-next-line react-hooks/set-state-in-effect
|
|
||||||
setSrcInterfaces([])
|
setSrcInterfaces([])
|
||||||
setNewSrcInterface("")
|
setNewSrcInterface("")
|
||||||
return
|
return
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
# План реализации UX/UI по пятичасовым окнам
|
# План реализации UX/UI по пятичасовым окнам
|
||||||
|
|
||||||
Актуальное продолжение 2026-10-07: 12.3.78 завершён: snapshot reset смены пары, stale draft/история,14pure+backend HTTP/RBAC,73browser/8context/type/lint/build. Общие main1176(579e816)/context221(a3fcba0) и текущий delta различаются. Следующий12.3.79: строгий runtime body POST /uptime/speed-test (prefix IDs/невалидные enums/duration) до native операции. Внешняя12.5 не выполнена.
|
Актуальное продолжение 2026-10-07: 12.3.78/78.1 завершены: pair snapshot/history,73browser/8context,14pure+HTTP/RBAC,types/build; uptime lint0warnings. Общие main1176(579e816)/context221(a3fcba0) сохранены отдельно. Следующий12.3.79: строгий runtime body POST /uptime/speed-test до native операции (prefix IDs/enums/duration), команды/права сохранить. Внешняя12.5 не выполнена.
|
||||||
|
|
||||||
Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-04. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат.
|
Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-04. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат.
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# UX/UI: журнал реализации
|
# UX/UI: журнал реализации
|
||||||
|
|
||||||
Актуальное продолжение 2026-10-07: 12.3.78 завершён: snapshot reset смены пары, stale draft/история,14pure+backend HTTP/RBAC,73browser/8context/type/lint/build. Общие main1176(579e816)/context221(a3fcba0) и текущий delta различаются. Следующий12.3.79: строгий runtime body POST /uptime/speed-test (prefix IDs/невалидные enums/duration) до native операции. Внешняя12.5 не выполнена.
|
Актуальное продолжение 2026-10-07: 12.3.78/78.1 завершены: pair snapshot/history,73browser/8context,14pure+HTTP/RBAC,types/build; uptime lint0warnings. Общие main1176(579e816)/context221(a3fcba0) сохранены отдельно. Следующий12.3.79: строгий runtime body POST /uptime/speed-test до native операции (prefix IDs/enums/duration), команды/права сохранить. Внешняя12.5 не выполнена.
|
||||||
|
|
||||||
Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения.
|
Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения.
|
||||||
|
|
||||||
|
|||||||
@@ -887,3 +887,10 @@ Main1176 на579e816 и backend ownership delta25pure/5browser наa3fcba0 ос
|
|||||||
14pure (5новых frontend snapshot+9persistence), HTTP/DI/RBAC speed-probes write, contracts/backend build,73browser uptime/large history,8uptime context, non-incremental TypeScript, targeted lint (0errors,9предыдущих предупреждений uptime) и frontend production build passed. Финальная новая проверка: API save error сохраняет прежние80; успешная смена/возврат пары не показывает их как новый snapshot, history/KPI1run сохранены. Historic2speed PNG восстановлены. Реальное FOR UPDATE/concurrency требует12.5; здесь DI и source review.
|
14pure (5новых frontend snapshot+9persistence), HTTP/DI/RBAC speed-probes write, contracts/backend build,73browser uptime/large history,8uptime context, non-incremental TypeScript, targeted lint (0errors,9предыдущих предупреждений uptime) и frontend production build passed. Финальная новая проверка: API save error сохраняет прежние80; успешная смена/возврат пары не показывает их как новый snapshot, history/KPI1run сохранены. Historic2speed PNG восстановлены. Реальное FOR UPDATE/concurrency требует12.5; здесь DI и source review.
|
||||||
|
|
||||||
Этот delta выполнен после общих main579e816/contexta3fcba0; общие результаты не переименованы в проверку нового HEAD. Следующий79: POST command body ещё использует parseInt/enum defaults; проверить строгий DTO до DB/native, сохранив валидные ad-hoc/scheduled сценарии и существующие команды/права. Полный CAS параметров пробы и реальные native timestamps также не объявлены проверенными. Внешняя12.5 отдельно.
|
Этот delta выполнен после общих main579e816/contexta3fcba0; общие результаты не переименованы в проверку нового HEAD. Следующий79: POST command body ещё использует parseInt/enum defaults; проверить строгий DTO до DB/native, сохранив валидные ad-hoc/scheduled сценарии и существующие команды/права. Полный CAS параметров пробы и реальные native timestamps также не объявлены проверенными. Внешняя12.5 отдельно.
|
||||||
|
|
||||||
|
|
||||||
|
## 12.3.78.1 — удаление неиспользуемого кода прежней таблицы
|
||||||
|
|
||||||
|
2026-10-07. Из uptime удалены неиспользуемые MiniBar/resBarColor/resPctColor/SortIcon/ResSortKey,2импорта и чистое вычислениеy1,3неактуальных eslint-disable directives. Reference search и предыдущий lint подтверждали отсутствие использования; активные render/API/measurement paths не менялись. Установленные ReUI primitives/hooks/theme не изменены.
|
||||||
|
|
||||||
|
Targeted lint страницы/helpers/tests теперь0errors/0warnings (до этого9warnings), non-incremental TypeScript и production frontend build passed. Для удаления неиспользуемых объявлений не добавлены повторяющие реализацию тесты; функциональный78 delta73browser/8context/14pure+backend HTTP/RBAC сохранён в предыдущем блоке. Следующий79: runtime command body schema до DB/native. Внешняя12.5 не выполнена; полная матрица относится к точным ранее указанным HEAD.
|
||||||
Reference in new issue
Block a user