Full-screen dog loader overlay with dim background and input blocking

- DogLoader now covers the whole window (dock top + _loading layer),
  dims the dashboard behind it ($background 80%), draws a centered
  rounded panel with a running ASCII dog and a 🐾 paw trail
- block keyboard bindings (check_action) and drop focus while refreshing;
  restore focus to models table afterwards
- removed the docked progress line (covered by the overlay)
- docs updated; tests: full-screen coverage + input blocking
This commit is contained in:
2026-09-10 13:30:00 +03:00
parent 148e0a9391
commit d7d146e586
4 changed files with 109 additions and 39 deletions
+11 -4
View File
@@ -7,13 +7,20 @@
Анимация-«собачка» при обновлении статистики.
### Добавлено
- Экран **Dashboard**: ASCII-«собачка» (`DogLoader`) как индикатор загрузки —
центрированный overlay поверх дашборда с анимацией (виляет хвостом,
кадры меняются каждые 0,15 с) и подписью «Обновление статистики…».
- Индикация обновления в нижней строке (`#progress-line`, `dock: bottom`).
- Экран **Dashboard**: полноэкранный индикатор загрузки — бегущая ASCII-собачка
поверх всего окна с полупрозрачным затемнением (`$background 80%`),
панелью по центру (рамка `border: round`), дорожкой из 🐾 и подписью
«Обновление статистики…». Анимация: переставляет лапы и виляет хвостом
(4 кадра, 0,12 с).
- На время загрузки ввод блокируется (горячие клавиши и фокус), после
завершения — возвращается.
- Показывается при автообновлении по таймеру и при ручном обновлении (`r`);
скрывается по завершении загрузки.
### Исправлено
- Индикатор больше не конфликтует со встроенным `Widget.loading` Textual
(ранее из-за одноимённого reactive показывались встроенные «точки»).
### Примечание
- Реализует задачу #1 («Новая загрузка обновления статистики»).