### 🧩 Подробное описание JS и CSS файлов
Оба файла работают вместе как единое целое и реализуют панель "живых сообщений" — динамически обновляемую таблицу с последними сообщениями с сайта. Она вставляется на главную страницу, отображает последние сообщения с подсветкой новых, возможностью поставить обновления на паузу, а также адаптивным переключателем и стилями для удобного отображения.
---
## 🧠 JavaScript: Основная логика
### 📌 Назначение:
- Автоматически загружает и отображает последние сообщения с сервера.
- Проверяет, подключён ли jQuery — и, если нет, подключает его.
- Обновляет сообщения с интервалом, учитывая активность вкладки.
- Позволяет приостановить обновления с помощью переключателя.
- Обрабатывает ошибки загрузки, повторяет запросы при неудачах.
- Сохраняет состояние паузы в localStorage.
---
### 🔧 Ключевые функции:
#### 1. `loadjQuery()`
- Проверяет наличие jQuery.
- Если не найден — загружает из CDN с повторными попытками.
- Если не удалось загрузить — выводит ошибку.
#### 2. `initLivePanel($)`
- Инициализирует панель на главной странице (/ или index.php).
- Создаёт HTML-структуру таблицы.
- Вставляет её в нужное место на странице (например, после #pun-ulinks или в body).
- Управляет состоянием паузы и активности вкладки.
#### 3. `fetchLatestPosts()`
- Загружает данные из /export.php?type=js&max=10 с помощью $.getScript().
- Обрабатывает ошибки и повторяет запрос при необходимости.
- Добавляет новые сообщения в таблицу, удаляет старые, если превышено maxBuffer.
- Подсвечивает новые сообщения, если это не первая загрузка.
- Прокручивает таблицу вниз.
#### 4. `pause-updates (чекбокс)`
- Переключатель "Стоп" для остановки/запуска обновлений.
- Состояние сохраняется в localStorage.
#### 5. `visibilitychange / online`
- При возвращении на вкладку или восстановлении соединения — обновляет данные.
- При неактивности вкладки — увеличивает интервал обновления.
---
## 🎨 CSS: Стили и оформление
### 📌 Назначение:
- Стилизует таблицу с живыми сообщениями.
- Обеспечивает удобное отображение, фиксированную ширину колонок, прокрутку.
- Добавляет анимацию подсветки новых сообщений.
- Реализует стили для переключателя "Стоп".
---
### 🔧 Основные стили:
#### 1. `.stats (таблица)`
- table-layout: fixed — фиксированная ширина колонок.
- Без верхней границы, без внутренних отступов.
- Полностью растянута по ширине.
#### 2. `.stats .tc2 (колонка времени)`
- Фиксированная ширина 15%.
#### 3. `#live-posts-body (тело таблицы)`
- max-height: 140px, overflow-y: auto — прокрутка, если много сообщений.
- Каждая строка (tr) — отдельный table, чтобы сохранить ширину колонок.
#### 4. `.new-message`
- Подсветка новых строк: background-color: #DBCDF1.
- Плавное исчезновение подсветки за 2 секунды.
#### 5. `.switch (переключатель)`
- Кастомный стиль для чекбокса.
- Круглый слайдер, меняющий цвет при активации.
- Позиционируется рядом с заголовком таблицы.
#### 6. `.pause-label (надпись "Стоп")`
- Текст рядом с переключателем.
- Скрыта на мобильных устройствах (max-width: 600px).
---
## 🧩 Взаимодействие JS и CSS
- JS создаёт HTML-структуру, CSS её оформляет.
- Переключатель, созданный в JS, стилизуется с помощью CSS-классов .switch, .slider.
- Анимация новых сообщений реализована через CSS-переходы (transition) и JS-классы (new-message).
- Стили адаптированы под мобильные устройства.
---
## 🧪 Как использовать
1. Подключите оба файла на страницу (например, через <script> и <style> или внешние файлы).
2. Убедитесь, что /export.php?type=js&max=10 возвращает данные в нужном формате:
content = [
[timestamp, username, link, message],
...
];
3. Панель будет отображаться на главной странице сайта.
---
## 📌 Особенности
- Автоматическая загрузка jQuery, если отсутствует.
- Умная загрузка: при неактивной вкладке — увеличенный интервал.
- Сохранение состояния паузы между сессиями.
- Адаптивный дизайн и поддержка мобильных устройств.