При работе в АРМ «Книговыдача» процесс блокировки читателя стал быстрее и удобнее. Теперь при нажатии кнопки «Блокировать» курсор автоматически устанавливается в поле «Причина», а если в нём уже был текст, он сразу выделяется для быстрого редактирования или удаления. Для завершения операции больше не нужно тянуться к мыши — достаточно нажать клавишу Enter, чтобы подтвердить блокировку. Сразу после закрытия окна информация в панели «Текущий читатель» обновляется автоматически, отображая актуальный статус и причину блокировки.
Технические подробности:
В конфигурацию поля f29 (причина блокировки) в действии Bookland/RdrBlock добавлен обработчик события render, инициирующий метод focus(true, 200) для установки фокуса и выделения текста.
Добавлен обработчик события specialkey, который перехватывает нажатие клавиши ENTER и программно вызывает событие click на первой кнопке формы («Ок»).
Внесены изменения в базовый класс WIA_SimpleForm (SimpleForm.inc) для корректной передачи экземпляра АРМ в callback-функции после отправки формы, а также добавлена генерация события ModalRequestSuccess.
Серверная часть действия RdrBlock доработана для возврата JSкода, использующего переданный контекст АРМ для обновления RdrPft (просмотр данных читателя) и возврата фокуса в основное поле ввода штрихкода через bIn.SetCurs().
-
Улучшение UX (пользовательского опыта): Теперь при открытии формы блокировки читателя фокус автоматически устанавливается на поле ввода причины (f29). Добавлена возможность отправки формы по нажатию клавиши Enter.
Безопасность и стабильность: Добавлено экранирование строк через addslashes() для значений и текстов ошибок перед их передачей в JSкод. Построение JSкода формы переведено на использование HEREDOC синтаксиса для лучшей читаемости.
Исправление контекста: В генерируемых JS-коллбеках исправлено обращение к методам интерфейса (RdrPft.ReLoad(), bIn.SetCurs()) — теперь они вызываются через переданный объект params, а не как глобальные переменные.
Модуль WIrbis (SimpleForm.inc):
Безопасный вызов Action: Добавлена проверка if (typeof(action.result.Action) == 'function') перед выполнением JS-кода, пришедшего в ответе от сервера (как для успешного выполнения success, так и для ошибок failure).
Передача контекста: Теперь в функцию action.result.Action(params) прокидывается объект params, содержащий необходимый контекст выполнения.
Новое событие: Добавлен вызов пользовательского события params.fireEvent('ModalRequestSuccess', action.result); при успешной отправке формы, что упрощает интеграцию и реакцию других компонентов системы на это действие.
1. Связанные задачи
1.1. 🔗 causes: IBK-426
[IBK-426] Блокировка книговыдачи для читателя в АРМ Книговыдача
Статус: Готово | Автор: Ирина Михайленко
1.2. 🔗 Соответствует задача: I128-2394
[I128-2394] Улучшение пользовательского опыта при работе с кнопкой "Блокировать" (Блокировка возможности книговыдачи для читателя)
Статус: Открытая задача | Автор: Ilya Mikhaylenko