Commit Graph

87 Commits

Author SHA1 Message Date
Mikhail Chusavitin
9dfef30ad7 Fix row copy selection and table bottom spacing placement 2026-02-04 17:08:10 +03:00
Mikhail Chusavitin
2a41c5fd0a Add row copy action and improve table bottom spacing 2026-02-04 16:59:46 +03:00
Mikhail Chusavitin
b67bac89ee Harden auth session handling and SQL identifier validation 2026-02-04 16:56:53 +03:00
155b1ba9d0 Update documentation files (README.md and claude.md) based on codebase analysis 2026-01-31 00:33:25 +03:00
73c63b5d86 Обновлён README: Docker как рекомендуемый метод установки
- Добавлена секция Installation (Docker) с примером запуска
- Таблица переменных окружения (DB_HOST, DB_PORT, DB_CHARSET)
- Обновлена секция Configuration и Troubleshooting

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 04:02:17 +03:00
e03c0b2208 Добавлен Dockerfile на базе Alpine Linux
- Dockerfile с PHP 8.3 и необходимыми расширениями
- Конфигурация БД через переменные окружения: DB_HOST, DB_PORT, DB_CHARSET
- .dockerignore для оптимизации сборки

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 03:43:29 +03:00
de477c3e64 Исправлено восстановление скрытых столбцов из сессии
Код восстановления видимости столбцов перемещён внутрь события tableBuilt,
чтобы он выполнялся после полного построения таблицы, когда все столбцы доступны.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
v1.0.0
2026-01-24 19:22:14 +03:00
654233936e Выравнивание чисел по правому краю в таблице
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 13:30:02 +03:00
09d62fe433 Разделение app.js на модули
- core.js: API wrapper и утилиты (~150 строк)
- user.js: авторизация и localStorage (~240 строк)
- table.js: дерево и Tabulator (~770 строк)
- operations.js: CRUD операции (~740 строк)
- io.js: импорт/экспорт CSV и бэкап (~600 строк)
- app.js: точка входа (~30 строк)

Старый файл сохранён как app.js.bak

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 08:50:16 +03:00
647ab96d1a Сохранение и восстановление состояния таблицы
- Сохранение последней открытой таблицы в localStorage
- Сохранение фильтров и страницы при изменении
- Восстановление таблицы, фильтров и страницы при входе
- Сброс настроек теперь включает фильтры и последнюю таблицу

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 08:38:06 +03:00
f3be92d1f9 wip commit 2026-01-23 22:55:20 +03:00
5ccc16d1b8 Новый дизайн авторизации и сохранение сессии в localStorage
- Красивый экран авторизации с градиентным фоном
- Header с именем пользователя и dropdown-меню
- Меню: "Сбросить настройки" и "Выйти"
- Автологин при загрузке страницы из localStorage
- Настройки столбцов сохраняются в localStorage (между сессиями)
- Credentials хранятся в localStorage (автоматический вход)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 22:50:33 +03:00
cc75ba85e3 Добавлен экспорт неимпортированных строк в CSV при ошибках
Backend:
- insertMultipleRows возвращает failedRows с данными и описанием ошибки
- getShortErrorMessage формирует понятные сообщения об ошибках

Frontend:
- Диалог с результатами импорта (успешных/ошибок)
- Группировка ошибок по типу
- Кнопка "Скачать ошибки CSV" - файл с проблемными строками + колонки _ОШИБКА и _СТРОКА

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 22:39:06 +03:00
15214b2f69 Добавлена очистка пробелов при вставке чисел из Excel
mutatorEdit для числовых колонок:
- Удаляет все пробелы (обычные, неразрывные)
- Заменяет запятую на точку для дробных чисел
- " 20 138 " → 20138

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 22:34:46 +03:00
3f10c49ddc Объединены кнопки Экспорт CSV и Бэкап в одну кнопку Экспорт
- Единый диалог с вкладками: CSV таблицы и Бэкап БД
- Удалена отдельная кнопка Бэкап
- Удалён дублирующий код showExportModal

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 22:32:44 +03:00
07b27a6514 Изменён формат имён скачиваемых файлов: YYYY-MM-DD-filename
- Бэкапы: 2026-01-23-backup_all.sql.gz, 2026-01-23-dbname.sql.gz
- CSV экспорт: 2026-01-23-tablename.csv

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 22:28:17 +03:00
666a24c971 Исправлено подключение mysqldump - убраны --host/--port
mysqldump теперь использует Unix сокет по умолчанию вместо TCP.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 22:25:51 +03:00
978f6b3cd8 Исправлен битый архив бэкапа - использование временного файла
shell_exec некорректно работает с бинарными данными.
Теперь mysqldump пишет во временный файл, который потом стримится клиенту.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 22:24:11 +03:00
cf275bba9c Исправлена ошибка: получение списка БД через API
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 22:22:12 +03:00
b76402694a Добавлен функционал резервного копирования баз данных
- Кнопка "Бэкап" в toolbar открывает диалог выбора БД
- Можно скачать дамп одной БД или всех сразу
- Дамп создаётся через mysqldump и сразу стримится пользователю (gzip)
- Без сохранения на сервере

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 22:20:32 +03:00
3cd138cd2d Убрано ложное окрашивание строк при начале редактирования
Строка теперь окрашивается в жёлтый только при реальном изменении значения,
а не при клике на ячейку для редактирования.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 22:08:38 +03:00
f7c90aca76 Исправлено сравнение значений для выпадающих списков и форматирование чисел
- Унифицировано сравнение через normalizeValue() для всех типов ячеек
- Intl.NumberFormat с сохранением исходного количества знаков после запятой

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 22:06:04 +03:00
1f9183f04e Добавлено форматирование чисел с разделителем тысяч и запятой
Числовые колонки теперь отображаются в русской локализации:
- Пробел как разделитель тысяч (90217 → 90 217)
- Запятая для дробной части (90217.4 → 90 217,4)

Fixes #5

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 22:01:34 +03:00
b9ce7c6d04 Исправлено сравнение типов при проверке изменений ячейки
Добавлена проверка для случая, когда oldValue - число, а newValue - строка
(например, 90217.4 vs "90217.4"), что вызывало ложное срабатывание сохранения.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 21:59:13 +03:00
5eee3bbf70 Исправлено ложное срабатывание сохранения при выборе того же значения
- Добавлена проверка изменения значения в cellEdited (oldValue vs newValue)
- Добавлен обработчик cellEditCancelled для сброса подсветки при отмене
- Устранена отправка запросов в БД без реальных изменений

Fixes #4

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 21:47:49 +03:00
9da765de77 Delete .vscode/launch.json 2026-01-23 18:48:01 +03:00
Mikhail Chusavitin
c001aed149 Исправлена работа чекбоксов и пагинации в таблице
- Чекбоксы теперь работают только при клике на сам чекбокс (не на строку)
- Повторный клик на чекбокс снимает выделение
- Множественное выделение строк работает корректно
- Исправлен выбор количества записей на странице (сервер читает параметр 'size')

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 15:17:46 +03:00
Mikhail Chusavitin
0700fcd584 Улучшена обработка ошибок API
Бэкенд:
- Добавлен try-catch для insert, update, delete, delete-batch
- Ошибки возвращаются как JSON с полем message

Фронтенд:
- Улучшена функция api() для парсинга JSON ошибок
- Извлечение понятного сообщения из ответа сервера

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 11:41:39 +03:00
Mikhail Chusavitin
23e557d792 Фильтр FK колонок: заменён dropdown на ввод с автоподстановкой
- autocomplete: true - показывает подсказки при вводе
- freetext: true - разрешает свободный ввод
- filterFunc - фильтрация по вхождению подстроки
- clearable: true - кнопка очистки

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 11:23:40 +03:00
Mikhail Chusavitin
9ac52afb8b Удалена ошибочная ссылка на $logFile 2026-01-22 11:21:47 +03:00
Mikhail Chusavitin
fcfd785b04 Исправлена сортировка: обработка массива sort от Tabulator
Tabulator отправляет sort как массив [{"field":..., "dir":...}],
а код ожидал объект {"field":..., "dir":...}. Добавлена конвертация.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 11:18:16 +03:00
Mikhail Chusavitin
d5602ae398 Логирование в файл debug.log 2026-01-22 11:17:06 +03:00
Mikhail Chusavitin
1d4bb980c0 Добавлено логирование сортировки для отладки 2026-01-22 11:14:46 +03:00
Mikhail Chusavitin
198571ecf5 Исправление сортировки: явное включение headerSort и sorter
- Добавлен headerSort: true для каждой колонки
- Добавлен sorter на основе типа данных (string/number/datetime)
- Добавлены обработчики событий dataSorting/dataSorted для отладки

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 11:12:34 +03:00
Mikhail Chusavitin
d0605c722e Добавлен функционал множественного редактирования записей
1. Добавлена кнопка "Изменить" в toolbar
2. Модальное окно редактирования:
   - Для одной записи: все поля доступны для редактирования
   - Для нескольких записей: галочки для выбора изменяемых полей
   - Поля с одинаковыми значениями показывают текущее значение
   - Поля с разными значениями отображаются пустыми с пометкой
3. Исправлена сортировка: добавлен headerSort: true в columnDefaults

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 11:09:57 +03:00
Mikhail Chusavitin
10cd6e36df Исправлена фильтрация и сортировка таблицы
- Исправлен ajaxParams: использование this вместо глобальной переменной
- Добавлен headerFilterFunc для всех колонок для серверной фильтрации
- Исправлены параметры headerFilter для FK колонок

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 11:02:17 +03:00
Mikhail Chusavitin
d23a5dd829 Исправления таблицы: сортировка, фильтры FK, экспорт CSV, выделение строк
1. Исправлена сортировка по дате - заменён ajaxParams на ajaxRequestFunc
   для корректной передачи параметров сортировки на сервер

2. Добавлен dropdown фильтр для FK колонок - теперь в заголовке таблицы
   для колонок с внешними ключами отображается выпадающий список
   со всеми допустимыми значениями

3. Добавлено модальное окно экспорта CSV с опциями:
   - Экспорт всех строк / только выделенных / шаблона (только заголовки)
   - Выбор отдельных столбцов для экспорта
   - Кнопки "Выбрать все" / "Снять все" для столбцов

4. Исправлено множественное выделение строк:
   - Включён selectableRows: true
   - Добавлен selectableRowsRangeMode: "click" для выбора нескольких строк
   - Убран конфликтующий cellClick обработчик

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 10:51:47 +03:00
edf2bdbcce Теперь заголовок и ячейки столбца с чекбоксами должны иметь одинаковую ширину (40px) и одинаковый padding (4px), что устраняет несоответствие. 2026-01-21 22:18:22 +03:00
05c62440b3 Упростил код, убрав лишние правила, которые ломали макет. 2026-01-21 22:15:51 +03:00
03f7b08f25 Упростил код, убрав лишние правила, которые ломали макет 2026-01-21 22:15:30 +03:00
5f52a3ad8e another column size fix atempt 2026-01-21 22:12:34 +03:00
ba5a11c6c2 Enhance table header cell styling with consistent padding and box-sizing 2026-01-21 22:06:47 +03:00
19905cef4e fix duplicate styles 2026-01-21 22:03:15 +03:00
Mikhail Chusavitin
71e6b3f271 one more resize fix 2026-01-21 19:15:18 +03:00
Mikhail Chusavitin
0d9436977e check box table fi 2026-01-21 19:13:19 +03:00
Mikhail Chusavitin
74ebea7077 fix uneven row size 2026-01-21 19:09:11 +03:00
Mikhail Chusavitin
698a99afc5 Pretier rows 2026-01-21 19:05:10 +03:00
Mikhail Chusavitin
2f3ec82424 comment for optional fields 2026-01-21 18:54:20 +03:00
Mikhail Chusavitin
f727d6c742 typo fix 2026-01-21 18:53:14 +03:00
Mikhail Chusavitin
cce71a095c SQL comments for rows used now in tolltips 2026-01-21 18:52:17 +03:00