81 Commits

Author SHA1 Message Date
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
Mikhail Chusavitin
5c917c5d7c dynamic dropdown menus 2026-01-21 18:37:35 +03:00
Mikhail Chusavitin
2f7a180543 add dropdown menu for FK values 2026-01-21 18:32:53 +03:00
Mikhail Chusavitin
44ad6785a8 v 2.0 2026-01-21 18:08:09 +03:00
Mikhail Chusavitin
b3edd03b3e больше логирования! 2026-01-21 18:00:47 +03:00
Mikhail Chusavitin
179d17259a select talbe fix and additional loging 2026-01-21 17:57:39 +03:00
Mikhail Chusavitin
a6362d6116 select table with double click 2026-01-21 17:55:13 +03:00