Opened 3 years ago

Closed 2 weeks ago

#1216 closed дефект (готово)

Не работает поиск в интерфейсе "Несоответствия"

Reported by: alx Owned by: Denis_N
Priority: minor Component: БД изделий АДС
Keywords: Cc:

Description (last modified by alx)

В r313/base открываю страницу "Несоответствия" и в поле "S/N" вверху страницы ввожу какой-нибудь номер (например "C03024") вставкой из буфера обмена. Сразу после этого начинается поиск (данные из таблицы пропадают и появляется индикатор ожидания результата описка). Через 5-6 секунд поиск заканчивается и появляются данные, которые не соответствуют введенному мной серийному номеру:


Как видно на приложенном скриншоте, отображаются комментарии изделий, серийные номера которых не соответствуют введенному. Ожидалось, что будут отображаться комментарии только тех изделий, в серийных номерах которых есть введенная мной строка. Похоже, что отображаются все записи, которые были при первоначальном открытии страницы (то есть без учета введенной строки поиска).

Аналогично (то есть неправильно) работает поиск при вставке строки из буфера в поле "Имя" и "Комментарий".

Дополнительная информация: если после ввода поместить фокус в одно из полей ввода и нажать любую клавишу (даже ничего не вводящую, например shift), выполняется новый поиск, который на этот раз дает правильный результат. О причинах такого поведения немного обсуждалось в комментариях к тикету #1189 (начиная с комментария 14). Только на тот момент поиск вообще не начинался после вставки текста, что заставляло пользователя (меня) после вставки нажимать ENTER, в результате я получал правильный результат, и даже не подозревал, что было задумано не так. Теперь же поиск начинается, но дает неверный результат, то есть стало хуже!

Attachments (1)

ss1.jpg (188.2 KB ) - added by alx 3 years ago.

Download all attachments as: .zip

Change History (4)

by alx, 3 years ago

Attachment: ss1.jpg added

comment:1 by alx, 3 years ago

Description: modified (diff)

comment:2 by alx, 3 years ago

Description: modified (diff)

comment:3 by Denis_N, 2 weeks ago

Resolution: готово
Status: newclosed

Исправлено в r537/base.

Причина была в обработке ввода: при вставке текста из буфера обмена поиск мог запускаться раньше, чем новое значение фактически попадало в поле ввода. В результате первый AJAX-запрос уходил со старым или пустым значением фильтра, поэтому таблица показывала результаты без учета введенного S/N/имени/комментария. После нажатия любой клавиши значение поля уже было актуальным, и повторный поиск давал правильный результат.

В r537/base поиск в интерфейсе "Несоответствия" переведен на событие input для полей S/N, Имя и Комментарий. Теперь запрос запускается после фактического изменения значения поля. Также отменяются устаревшие AJAX-запросы, а состояние галочки фильтра передается в запрос явно.

Закрываю как исправленный

Note: See TracTickets for help on using tickets.