fix(ui): сократить сводку большого списка WAN
This commit is contained in:
1 parent
0355343f9f
commit
8e3b7a65ce
7 files changed
+33
-5
No files matched your search
@@ -298,7 +298,8 @@ function HomeRouterCard({ entry, jumpHosts, pinned, applied, applying, onPin, on
|
||||
<span className="text-[10px] text-muted-foreground border border-border rounded px-1.5 py-0.5 font-mono break-all">{home.model}</span>
|
||||
</div>
|
||||
<div className="text-[11px] text-muted-foreground font-mono mt-0.5 break-all">
|
||||
{home.wans.map(w => `${w.name} (${w.isp} · ${w.ip})`).join(" · ")}
|
||||
{home.wans.slice(0,3).map(w => `${w.name} (${w.isp} · ${w.ip})`).join(" · ")}
|
||||
{home.wans.length>3&&<p className="font-sans mt-1">Ещё {home.wans.length-3} WAN. Все {home.wans.length} аплинков — во вкладке WAN × JH.</p>}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -154,3 +154,12 @@ WAN1000×JH1:1000→50rows,28019→1419tableDOM,28712→2149pageDOM,2264ms dev-r
|
||||
1000source→50 rendered/1024tableDOM/1751pageDOM/1851ms dev-ready; раньше24 rendered соответствовали24 в модели,976 правил терялись. Проверены page20 и правило1000/search/unknown indices безExit/no simulation buttons/refresh/clamp1/320px/pinned column/axe.7 main browser,8 pure tests (1200 assignment fixtures и новый1000 ownership/unknown), TypeScript, targeted lint и production build прошли. Снимок docs/ux-ui/screens/optimizer-community-320.png просмотрен.
|
||||
|
||||
Осталось5manualPagination:true: scheduler11 fixedkeys, live GRE pools пусты/demo ограничен fixtures, probes schedule толькоdemo, subusers не подключён, trafficflows серверныйtop50 принят с честным указанием среза. Не мигрировать искусственно недостижимые live каталоги. Дальше12.4.6/12.4.7 — повтор общей main/context матрицы после delta. Внешняя12.5 не выполнена.
|
||||
|
||||
|
||||
## 12.3.64 — компактная текстовая сводка WAN
|
||||
|
||||
2026-10-04. Baseline1000WAN:31783chars/13695px высоты summary на320px, хотя grid уже50rows/1419DOM. В HomeCard теперь preview первых3 WAN с прежними ISP/IP, точный remaining/total и понятная ссылка в copy на существующую вкладку WAN×JH. Для ≤3WAN описание не сокращено. Исходный массив/расчёт/поиск/таблица не срезаются.
|
||||
|
||||
Final1000WAN:134chars/86.5px высоты summary; WAN10:130chars/86.5px. В тест добавлены реальные размеры/длина preview, точные counts и мобильный snapshot.12 profile browser +1 screenshot repeat, full ESLint страницы/test и production build прошли. Полный search WAN1000, последняя страница, refresh/clamp/pinnedWAN/320px/axe сохранены. Снимок docs/ux-ui/screens/optimizer-wan-summary-320.png просмотрен;9 historical optimizer PNG восстановлены по явному списку.
|
||||
|
||||
Общие main/context доказательства относятся к прежним HEAD; этот небольшой текстовый delta проверен профильными сценариями. Исторический context-delta(a558412/36) сохранён отдельно от нового context-final-delta(b1f8326/221), чтобы ссылки12.4.3 не изменили смысл. Следующий12.3.65 — pure CPU7WAN×1000pool с hard timeout; не запускать в UI. KPI captions/native selector и худшая DFS/full-route комбинация не приняты этим блоком. Внешняя12.5 остаётся.
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
# План реализации UX/UI по пятичасовым окнам
|
||||
|
||||
Актуальное продолжение 2026-10-04: 12.4.7 context221/26 passed наb1f8326; main1161/1162 и focus fix20+15 записаны. Следующий12.3.64: измерить/ограничить текстовую сводку1000WAN; затем дополнительные CPU-профили и внешняя12.5. Недельной квоты1%.
|
||||
Актуальное продолжение 2026-10-04: 12.3.64 завершён: сводка1000WAN13695→86.5px/134chars, полный каталог сохранён;12+1browser/lint/build passed. Следующий12.3.65: CPU7WAN×1000 probes в child с timeout, без запуска тяжёлого расчёта в UI; затем KPI captions/внешняя12.5. Main1161/1162+focus fix20+15,context221/26 записаны.
|
||||
|
||||
Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-04. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат.
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# UX/UI: журнал реализации
|
||||
|
||||
Актуальное продолжение 2026-10-04: 12.4.7 context221/26 passed наb1f8326; main1161/1162 и focus fix20+15 записаны. Следующий12.3.64: измерить/ограничить текстовую сводку1000WAN; затем дополнительные CPU-профили и внешняя12.5. Недельной квоты1%.
|
||||
Актуальное продолжение 2026-10-04: 12.3.64 завершён: сводка1000WAN13695→86.5px/134chars, полный каталог сохранён;12+1browser/lint/build passed. Следующий12.3.65: CPU7WAN×1000 probes в child с timeout, без запуска тяжёлого расчёта в UI; затем KPI captions/внешняя12.5. Main1161/1162+focus fix20+15,context221/26 записаны.
|
||||
|
||||
Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения.
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
| 10 | Маршрутизация, диагностика, карта и терминал | Завершён в границах локальной приёмки 2026-10-01; блоки 10.1–10.71, внешние ограничения в 10.71 |
|
||||
| 11А | Пользователи, контейнеры, сертификаты и резервные копии | Завершён в границах локальной приёмки 2026-10-01; 11А.1–11А.33, внешние ограничения в 11А.33 |
|
||||
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Завершён в границах локальной приёмки 2026-10-03; ограничения и evidence в11Б.7 |
|
||||
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | В работе;12.1/12.2 и12.3.1–12.3.63 приняты в локальных границах. Общая main1161/1162 выявила focus race, исправленный в12.4.6.1 с20+15 repeats. Общая context221/26 прошла в12.4.7; внешняя12.5 и дополнительные performance границы впереди. |
|
||||
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | В работе;12.1/12.2 и12.3.1–12.3.64 приняты в локальных границах. Общая main1161/1162 выявила focus race, исправленный в12.4.6.1 с20+15 repeats. Общая context221/26 прошла в12.4.7; внешняя12.5 и дополнительные performance границы впереди. |
|
||||
|
||||
## 12.3.49 — большая таблица соседей OSPF (2026-10-04)
|
||||
|
||||
|
||||
@@ -731,3 +731,12 @@ WAN1000×JH1:1000→50rows,28019→1419tableDOM,28712→2149pageDOM,2264ms dev-r
|
||||
2026-10-04, HEADb1f8326.221/221passed/26files за15.8min,0unexpected/0skipped/0flaky,Edge/1worker/retries0/maxFailures12. Включены Firewall context и все поздние read/write/backend/mode/ABA/checkpoint сценарии. Evidence docs/ux-ui/acceptance/context-final-delta-2026-10-04.json. Terminal context прошёл на исправленном source. Перегенерированных tracked screenshots нет.
|
||||
|
||||
Main12.4.6 относится к991f2b3:1161/1162; единственный focus race исправлен и проверен20+15 в12.4.6.1. Полный main после этого маленького исправления не повторялся. Внешняя12.5 PG/RouterOS/integrations не выполнена; stage12 не завершён. Следующий12.3.64 — высота сводки1000WAN, затем дополнительные CPU/pool профили.
|
||||
|
||||
|
||||
## 12.3.64 — компактная текстовая сводка WAN
|
||||
|
||||
2026-10-04. Baseline1000WAN:31783chars/13695px высоты summary на320px, хотя grid уже50rows/1419DOM. В HomeCard теперь preview первых3 WAN с прежними ISP/IP, точный remaining/total и понятная ссылка в copy на существующую вкладку WAN×JH. Для ≤3WAN описание не сокращено. Исходный массив/расчёт/поиск/таблица не срезаются.
|
||||
|
||||
Final1000WAN:134chars/86.5px высоты summary; WAN10:130chars/86.5px. В тест добавлены реальные размеры/длина preview, точные counts и мобильный snapshot.12 profile browser +1 screenshot repeat, full ESLint страницы/test и production build прошли. Полный search WAN1000, последняя страница, refresh/clamp/pinnedWAN/320px/axe сохранены. Снимок docs/ux-ui/screens/optimizer-wan-summary-320.png просмотрен;9 historical optimizer PNG восстановлены по явному списку.
|
||||
|
||||
Общие main/context доказательства относятся к прежним HEAD; этот небольшой текстовый delta проверен профильными сценариями. Исторический context-delta(a558412/36) сохранён отдельно от нового context-final-delta(b1f8326/221), чтобы ссылки12.4.3 не изменили смысл. Следующий12.3.65 — pure CPU7WAN×1000pool с hard timeout; не запускать в UI. KPI captions/native selector и худшая DFS/full-route комбинация не приняты этим блоком. Внешняя12.5 остаётся.
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 8.1 KiB |
@@ -26,7 +26,16 @@ for (const [wanCount,jhCount] of [[1000,1],[10,100]]) {
|
||||
const started=Date.now(); await page.goto("/route-optimizer?server=1&keep=1")
|
||||
const table=page.getByRole("table").filter({hasText:"WAN-аплинк"})
|
||||
await expect(table.locator("tr[data-row-id]")).toHaveCount(Math.min(50,wanCount))
|
||||
const profile={wanCount,jhCount,bytes:Buffer.byteLength(JSON.stringify(servers)),rows:await table.locator("tr[data-row-id]").count(),columns:await table.getByRole("columnheader").count(),tableNodes:await table.locator("*").count(),pageNodes:await page.locator("*").count(),readyMs:Date.now()-started}
|
||||
await page.setViewportSize({width:320,height:1000})
|
||||
const summary=page.getByText(/^WAN1 \(ISP ·/)
|
||||
const summaryHeight320=await summary.evaluate(el=>el.getBoundingClientRect().height)
|
||||
const summaryChars=await summary.evaluate(el=>el.textContent!.length)
|
||||
await summary.screenshot({path:info.outputPath("wan-summary-320.png"),animations:"disabled"})
|
||||
await page.setViewportSize({width:1440,height:1000})
|
||||
const profile={summaryHeight320,summaryChars,wanCount,jhCount,bytes:Buffer.byteLength(JSON.stringify(servers)),rows:await table.locator("tr[data-row-id]").count(),columns:await table.getByRole("columnheader").count(),tableNodes:await table.locator("*").count(),pageNodes:await page.locator("*").count(),readyMs:Date.now()-started}
|
||||
expect(summaryHeight320).toBeLessThan(160)
|
||||
expect(summaryChars).toBeLessThan(300)
|
||||
await expect(page.getByText(`Ещё ${wanCount-3} WAN. Все ${wanCount} аплинков — во вкладке WAN × JH.`,{exact:true})).toBeVisible()
|
||||
console.log("WAN matrix",JSON.stringify(profile)); writeFileSync(info.outputPath("matrix-profile.json"),JSON.stringify(profile,null,2))
|
||||
const root=page.getByRole("region",{name:"Матрица WAN и Jump Host"})
|
||||
await expect(table.getByRole("columnheader")).toHaveCount(3+Math.min(5,jhCount))
|
||||
|
||||
Reference in new issue
Block a user