Opened 7 years ago

Closed 7 years ago

#211 closed улучшение (fixed)

Улучшить логику выдачи сообщений об ошибках API

Reported by: alx Owned by: alx
Priority: средний Milestone: 1 очередь
Component: web-интерфейс (sw) Keywords:
Cc:

Description (last modified by alx)

Сейчас есть механизм блокировки параллельных периодических запросов к серверу путем инкремента и декремента переменной updates_in_progress.

Когда сервер в ответ на запрос возвращает ошибку, устанавливается блокировка и выводится сообщение об ошибке. При нажатии кнопки "Закрыть" окно сообщения закрывается и блокировка снимается.

Этот механизм неудобен тем, что нельзя закрывать окно нажатием ESC, так как в этом случае окно закрылось бы без снятия блокировки. Для исключения этого закрытие окна клавишей ESC заблокировано, и это плохо, так как все остальные окна закрываются нажатием ESC.

Предлагается ввести механизм установки действий, выполняющихся при закрытии окна, действующий независимо от того, каким бы образом оно не было инициировано. Как вариант - устанавливать окну (через .data()) некую функцию, которая будет выполняться из closePopup() непосредственно перед закрытием окна.

Change History (4)

comment:1 by alx, 7 years ago

In 1458/sw:

В веб-интерфейсе запрещено закрытие окна с сообщением об ошибке API
клавишей ESC, так как в этом случае не снимается блокировка последующих
периодических запросов. Позднее это ограничение планируется устранить
(see #211).

comment:2 by alx, 7 years ago

Description: modified (diff)

comment:3 by alx, 7 years ago

In 1528/sw:

В веб-интерфейсе функция request при получении от сервера ответа с сообщением об ошибке
теперь выполняет deferred.reject() не в момент получения ответа и создания окна
с сообщением об ошибке, а в момент закрытия окна пользователем.

Кроме этого, перед deferred.reject() или deferred.resolve() вызывается deferred.notify(100),
чем сигнализируется завершение собственно запроса к серверу. Это позволяет использовать
конструкцию .progress(function(x){x < 100 || ctrl.remove();}) для убирания спиннера.

See #211, #212.

comment:4 by alx, 7 years ago

Resolution: fixed
Status: newclosed

In 1530/sw:

Снятие блокировки периодических запросов после получения от сервера ответа на запрос API с ошибкой
перенесено в обработчик .always() и, таким образом, выполняется при любом закрытии окна
с сообщением об ошибке. Запрет закрытия окна клавишей ESC убран. Closes #211.

Note: See TracTickets for help on using tickets.