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 )
В r313/base открываю страницу "Несоответствия" и в поле "S/N" вверху страницы ввожу какой-нибудь номер (например "C03024") вставкой из буфера обмена. Сразу после этого начинается поиск (данные из таблицы пропадают и появляется индикатор ожидания результата описка). Через 5-6 секунд поиск заканчивается и появляются данные, которые не соответствуют введенному мной серийному номеру:
Как видно на приложенном скриншоте, отображаются комментарии изделий, серийные номера которых не соответствуют введенному. Ожидалось, что будут отображаться комментарии только тех изделий, в серийных номерах которых есть введенная мной строка. Похоже, что отображаются все записи, которые были при первоначальном открытии страницы (то есть без учета введенной строки поиска).
Аналогично (то есть неправильно) работает поиск при вставке строки из буфера в поле "Имя" и "Комментарий".
Дополнительная информация: если после ввода поместить фокус в одно из полей ввода и нажать любую клавишу (даже ничего не вводящую, например shift), выполняется новый поиск, который на этот раз дает правильный результат. О причинах такого поведения немного обсуждалось в комментариях к тикету #1189 (начиная с комментария 14). Только на тот момент поиск вообще не начинался после вставки текста, что заставляло пользователя (меня) после вставки нажимать ENTER, в результате я получал правильный результат, и даже не подозревал, что было задумано не так. Теперь же поиск начинается, но дает неверный результат, то есть стало хуже!
Attachments (1)
Change History (4)
by , 3 years ago
comment:1 by , 3 years ago
| Description: | modified (diff) |
|---|
comment:2 by , 3 years ago
| Description: | modified (diff) |
|---|
comment:3 by , 2 weeks ago
| Resolution: | → готово |
|---|---|
| Status: | new → closed |
![[MC-04 logo]](/mc-04/chrome/site/logo.png)

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