feat(ui): фильтр уровней логов в панели «Логи»

This commit is contained in:
ki.sagidullin
2026-08-21 21:35:37 +05:00
parent ee76f9d89f
commit a762a1df80
7 changed files with 509 additions and 45 deletions

View File

@@ -170,11 +170,19 @@
### 12.9. Контракт виджета «Логи» (LogPanel)
Панель «Логи» — поток системных логов (сырые строки из `events.LogLine`).
Панель «Логи» — поток системных логов из `events.LogLine` (уровень + строка).
- `Append(text)` — добавить строку лога; при превышении лимита старые строки
отбрасываются (буфер ограничен, не расти бесконечно).
- Контейнер виджета — отдаётся окну для встраивания в таб «Логи» (Scroll).
- `Append(level, text)` — добавить запись лога; уровень нормализуется к одному
из четырёх (`ui.NormalizeLogLevel`: error/warning/info/debug, неизвестные →
info); при превышении лимита старые записи отбрасываются (буфер ограничен,
не расти бесконечно).
- **Фильтр уровней**: над лентой — выпадающий список с чекбоксами
(error/warning/info/debug). По умолчанию отмечены все уровни (виден полный
лог); показываются только записи выбранных уровней; изменение набора сразу
перерисовывает ленту — и по уже загруженным записям, и для вновь
поступающих. Если ни один уровень не выбран — лента пуста (без ошибок).
- Контейнер виджета — отдаётся окну для встраивания в таб «Логи» (строка
фильтра + Scroll с лентой).
- Обновление содержимого — на потоке Fyne (внутри панели `fyne.Do`), не из
горутины Hub.