Добавлена проверка для случая, когда oldValue - число, а newValue - строка
(например, 90217.4 vs "90217.4"), что вызывало ложное срабатывание сохранения.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Добавлена проверка изменения значения в cellEdited (oldValue vs newValue)
- Добавлен обработчик cellEditCancelled для сброса подсветки при отмене
- Устранена отправка запросов в БД без реальных изменений
Fixes#4
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Чекбоксы теперь работают только при клике на сам чекбокс (не на строку)
- Повторный клик на чекбокс снимает выделение
- Множественное выделение строк работает корректно
- Исправлен выбор количества записей на странице (сервер читает параметр 'size')
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Бэкенд:
- Добавлен try-catch для insert, update, delete, delete-batch
- Ошибки возвращаются как JSON с полем message
Фронтенд:
- Улучшена функция api() для парсинга JSON ошибок
- Извлечение понятного сообщения из ответа сервера
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Добавлен headerSort: true для каждой колонки
- Добавлен sorter на основе типа данных (string/number/datetime)
- Добавлены обработчики событий dataSorting/dataSorted для отладки
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1. Добавлена кнопка "Изменить" в toolbar
2. Модальное окно редактирования:
- Для одной записи: все поля доступны для редактирования
- Для нескольких записей: галочки для выбора изменяемых полей
- Поля с одинаковыми значениями показывают текущее значение
- Поля с разными значениями отображаются пустыми с пометкой
3. Исправлена сортировка: добавлен headerSort: true в columnDefaults
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Исправлен ajaxParams: использование this вместо глобальной переменной
- Добавлен headerFilterFunc для всех колонок для серверной фильтрации
- Исправлены параметры headerFilter для FK колонок
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1. Исправлена сортировка по дате - заменён ajaxParams на ajaxRequestFunc
для корректной передачи параметров сортировки на сервер
2. Добавлен dropdown фильтр для FK колонок - теперь в заголовке таблицы
для колонок с внешними ключами отображается выпадающий список
со всеми допустимыми значениями
3. Добавлено модальное окно экспорта CSV с опциями:
- Экспорт всех строк / только выделенных / шаблона (только заголовки)
- Выбор отдельных столбцов для экспорта
- Кнопки "Выбрать все" / "Снять все" для столбцов
4. Исправлено множественное выделение строк:
- Включён selectableRows: true
- Добавлен selectableRowsRangeMode: "click" для выбора нескольких строк
- Убран конфликтующий cellClick обработчик
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Убрано глобальное хранилище selectedRowsData для строк текущей страницы
- Используется встроенный механизм Tabulator getSelectedData() при операциях
- Добавлено глобальное хранилище только для кросс-страничного выделения (кнопка "Выделить все")
- Упрощена логика - убраны сложные синхронизации
- Выделение через header checkbox теперь работает стабильно
- Функция selectTable была определена дважды, вызывая SyntaxError
- Удалено первое неполное определение функции
- Оставлено только корректное определение с исправленным rowSelectionChanged
- Исправлена структура файла app.js
- Изменена логика rowSelectionChanged: теперь используется параметр data вместо rows
- Параметр data содержит ВСЕ выделенные строки, а rows - только измененные
- При клике на header checkbox параметр rows пустой, поэтому selectedRowsData не обновлялся
- Добавлена правильная синхронизация выделенных строк между Tabulator и selectedRowsData
- Упрощена логика: полная пересинхронизация при каждом изменении выделения
- Упрощен обработчик rowSelectionChanged (используется только параметр rows)
- Добавлена отладочная информация для диагностики проблем
- Исправлена логика синхронизации selectedRowsData
- Добавлен console.log для отслеживания процесса выделения
- Проверка работы getRowKey для корректной идентификации строк
- В сообщениях об ошибках теперь отображается содержимое проблемной строки
- Добавлена специальная обработка ошибки Data truncated (обрезание данных)
- Показывается конкретное значение поля, вызвавшего ошибку
- Добавлена информация о типе и размере столбца при truncation
- Улучшено форматирование вывода ошибок (JSON для больших данных)
- Номер строки теперь соответствует номеру в исходном CSV файле (+2 для учета заголовка)
- Удалена кнопка "Выделить страницу" (дублирует функционал чекбокса в заголовке)
- Исправлен обработчик rowSelectionChanged - теперь корректно обрабатывает выделение через header checkbox
- Изменен подход: при каждом изменении выделения обновляется вся коллекция selectedRowsData
- Добавлена синхронизация выделенных строк между страницами
- Исправлена ошибка "строки не выбраны" при удалении после выделения через header checkbox
- Добавлена функция createProgressModal в правильное место в app.js
- Упрощен код удаления до одного варианта (без излишней сложности)
- Функция определена до использования
- Проверена работоспособность batch delete
- Добавлен batch delete метод на бэкенде (удаление множества строк за один запрос)
- Использование WHERE IN для удаления нескольких строк одним SQL запросом
- Добавлен прогресс-бар при удалении большого количества строк
- Удаление 1000 строк теперь занимает секунды вместо минут
- Добавлена поддержка транзакций для атомарности операций
- Оптимизирован размер батчей для баланса производительности и надежности
- Добавлена кнопка "Выделить все на странице" - выделяет записи текущей страницы
- Добавлена кнопка "Выделить все" - выделяет все записи с учетом фильтров (все страницы)
- Добавлена кнопка "Снять выделение" - убирает выделение со всех строк
- Добавлен счетчик выделенных строк в toolbar
- Добавлено предупреждение при выделении большого количества записей
- Оптимизировано удаление выделенных строк (batch delete)
- Удалено детальное логирование каждой строки импорта в PHP (error_log в циклах)
- Убраны console.log при парсинге и обработке CSV на фронтенде
- Оставлено только логирование начала/конца импорта и ошибок
- Значительно улучшена производительность при импорте больших файлов (тысячи строк)