feat: Добавлено AJAX обновление логов и улучшения интерфейса

Основные изменения:
- Добавлено AJAX обновление логов с чекбоксом 'Auto-update logs'
- Добавлена опция 'All logs' в выпадающий список tail lines
- Исправлено отображение длинных названий контейнеров в multi-view режиме
- Восстановлена загрузка истории логов при включенном AJAX обновлении

Новые функции:
- Чекбокс 'Auto-update logs' в секции Options (включен по умолчанию)
- Настройка интервала обновления через LOGBOARD_AJAX_UPDATE_INTERVAL
- API эндпоинт /api/settings для получения настроек приложения
- Поддержка параметра tail=all для загрузки всех логов
- Автоматический запуск AJAX обновления при включении чекбокса

Исправления UI:
- Кнопки LogLevels не уезжают вправо при длинных названиях контейнеров
- Добавлено обрезание длинных названий с многоточием
- Фиксированная высота заголовков в multi-view режиме
- Защита от сжатия кнопок LogLevels

Тестирование:
- Добавлены тесты для AJAX обновления (test_ajax_update.py)
- Тест multi-view AJAX обновления (test_multi_view_ajax.py)
- Тест опции 'all logs' (test_all_logs.py)
- Тест отображения длинных названий (test_multi_view_layout.py)
- Команды make test-ajax, make test-multi-view-ajax, make test-all-logs, make test-multi-view-layout

Документация:
- Создана подробная документация AJAX обновления (app/docs/ajax-update.md)
- Обновлен CHANGELOG.md с версиями 1.3.0, 1.5.0, 1.6.0
- Обновлен README.md с описанием новых функций

Автор: Сергей Антропов
Сайт: https://devops.org.ru
This commit is contained in:
2025-08-18 19:35:47 +03:00
parent 2d565d52a6
commit 6e51f00791
14 changed files with 2066 additions and 7 deletions

View File

@@ -1,5 +1,73 @@
# Changelog
## [1.6.0] - 2024-12-19
### Исправлено
- **Отображение длинных названий контейнеров в multi-view режиме:**
- Исправлена проблема с уезжающими вправо кнопками LogLevels при длинных названиях
- Добавлено обрезание длинных названий с многоточием (text-overflow: ellipsis)
- Установлена фиксированная высота заголовков (min-height: 40px)
- Добавлена защита от сжатия кнопок LogLevels (flex-shrink: 0)
- Новый тест `test-multi-view-layout` для проверки отображения
## [1.5.0] - 2024-12-19
### Добавлено
- **Опция "All logs" в AJAX обновлении:**
- Добавлена опция "All logs" в выпадающий список tail lines
- Возможность загружать все доступные логи контейнера через AJAX
- Поддержка параметра `tail=all` в API эндпоинте `/api/logs/{container_id}`
- Новый тест `test-all-logs` для проверки функциональности
## [1.3.0] - 2024-12-19
### Добавлено
- **Улучшенное AJAX обновление логов:**
- Чекбокс "Auto-update logs" в секции Options (включен по умолчанию)
- Настройка интервала обновления через переменную окружения `LOGBOARD_AJAX_UPDATE_INTERVAL`
- Автоматический запуск обновления при включении чекбокса
- Новый API эндпоинт `/api/settings` для получения настроек приложения
- Упрощенный интерфейс управления (убрана кнопка, добавлен чекбокс)
## [1.2.0] - 2024-12-19
### Добавлено
- **AJAX обновление логов:**
- Новый API эндпоинт `/api/logs/{container_id}` для получения логов через AJAX
- Периодическое обновление логов с настраиваемым интервалом (1с, 2с, 5с, 10с, 30с)
- Умное сравнение и добавление только новых логов
- Кнопка "Запустить AJAX" / "Остановить AJAX" в панели Actions
- Автоматическое обновление счетчиков и применение фильтров
- Остановка AJAX обновления при смене контейнера или режима просмотра
- **API эндпоинты:**
- `GET /api/logs/{container_id}` - получение логов с поддержкой параметров `tail` и `since`
- Возвращает структурированные данные с временными метками и метаданными контейнера
- Поддержка фильтрации по времени для получения только новых логов
- **Тестирование:**
- Скрипт `app/scripts/test_ajax_update.py` для тестирования AJAX функциональности
- Команда `make test-ajax` для запуска тестов
- Тестирование производительности и корректности работы API
- **Документация:**
- Подробная документация в `app/docs/ajax-update.md`
- Описание API эндпоинтов с примерами запросов и ответов
- JavaScript API для управления AJAX обновлением
### Технические детали
- Реализована функция `performAjaxLogUpdate()` для выполнения AJAX запросов
- Функция `appendNewLogs()` для добавления новых логов в DOM
- Управление состоянием через глобальные переменные `ajaxUpdateEnabled`, `lastLogTimestamp`
- Интеграция с существующими функциями фильтрации и подсчета логов
- Обработка ошибок без остановки обновления
### Преимущества
- Низкая нагрузка на сервер (только новые логи)
- Надежность HTTP архитектуры без WebSocket сложностей
- Гибкость настройки интервала обновления
- Совместимость с существующими фильтрами и счетчиками
## [1.1.0] - 2024-12-19
### Добавлено