Opened 3 years ago

Closed 3 years ago

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

Скрывать окно платы SM-02(SM-01) после команды "рестарт"

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

Description (last modified by san)

Сейчас если пользователь перезагружает плату, то окно платы пропадает, только когда плата станет "lost in space". Это даёт пользователю возможность успеть нажать Применить или ОК в окне платы, что вызовет ошибку записи. Такое поведение хоть и корректно. но кажется мне не юзер-френдли. поэтому предлагаю скрывать окно платы сразу после того как пользователь дал команду перезагрузки(кнопкой "да" в диалоге или кнопкой "рестарт").

Change History (14)

comment:1 by san, 3 years ago

Description: modified (diff)

comment:2 by san, 3 years ago

Description: modified (diff)

comment:3 by alx, 3 years ago

Мне кажется, что предложенное решение тоже не "юзер-френдли". Мысленно поставил себя на место оператора: я открыл диалог настроек платы SM-01 и работаю в нем. Далее я решил послать плате команду "Рестарт", для чего нажимаю одноименную кнопку. И вдруг в этот момент диалог, с которым я работаю, просто исчезает! Мне кажется, такое неожиданное пропадание диалога, с которым работает оператор, вызовет некоторое замешательство...

Более того, ошибки записи, о которых говорится в описании тикета, возникают только при выполнении оператором специфических и довольно нелогичных действий - а именно, при попытке обращаться (записывать настройки) к плате, которую сам же только что отправил в перезагрузку. Если же нелогичных действий не совершать, то и никаких ошибок не возникает, и, соответственно, не выдается сообщений о них. В случае же реализации предложенного улучшения "неожиданное" пропадание диалога будет происходить всегда... А защититься от любых нелогичных действий оператора вряд ли возможно - в каком-то смысле сообщения об ошибках и являются защитой от необдуманных действий, побуждая оператора думать о том, что он делает, а не давить кнопки наугад...

Предлагаю еще раз не торопясь обдумать ситуацию и, возможно, как-то изменить предложение.

Last edited 3 years ago by alx (previous) (diff)

in reply to:  3 comment:4 by alx, 3 years ago

Replying to alx:

А защититься от любых нелогичных действий оператора вряд ли возможно

В продолжение этой своей мысли приведу такой сценарий:

  1. Оператор работает с диалогом платы SM-01 и в какой-то момент нажимает "Рестарт".
  2. Диалог внезапно пропадает.
  3. Оператор думает: "Ой, а чего это он пропал?" и кликает плату SM-01 в таблице плат чтобы открыть диалог снова (на этот момент плата еще не lost in space).
  4. При открытии нового диалога инициируются обращения к плате чтобы прочитать ее настройки, что заканчивается массой сообщений об ошибках, которых мы и хотели избежать.

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

comment:5 by alx, 3 years ago

Сейчас у меня самого возникла альтернативная идея. Так как цель - отнять у оператора возможность обращаться к плате, которой скомандовали перезагрузиться, решением этой задачи "в лоб" было бы деактивировать те элементы управления (кнопки) диалога, которые инициируют такие обращения - "OK", "Применить", "Опрос", "Сброс счетчиков" и т.п. (не помню, что там еще есть). Так как кнопки деактивированы, то и их нажатие ни к каким обращениям к плате уже не приведет.

И, возможно, стоит в РЭ что-то написать о том, что перезагрузка платы SM-* не происходит мгновенно (за 1 секунду), и что после нажатия "Рестарт" надо подождать пока плата исчезнет из списка и потом снова появится?

comment:6 by alx, 3 years ago

Или еще более простой вариант: при нажатии "Рестарт" поместить поверх всего диалога вращающийся спиннер с надписью типа "подождите, выполняется рестарт...", что заблокирует вообще весь диалог.

in reply to:  6 comment:7 by alx, 3 years ago

Replying to alx:

...что заблокирует вообще весь диалог.

Но не помешает пользователю закрыть диалог нажатием ESC и тут же открыть новый, кликнув по плате в таблице плат! :) Что еще раз подтверждает мою мысль о том, что от всех возможных нелогичных действий не защитишься. Да, можно запретить закрытие диалога по ESC (например диалог аутентификации так закрыть нельзя), но пользователь с фантазией и на этот случай что-нибудь придумает... :)

comment:8 by san, 3 years ago

От всех действий пользователя конечно нельзя защитится)
Я предлагаю всего-лишь сделать интерфейс более человекопонятным и человекоудобным.
Поясню причины странных действий пользователя: пользователь нажимая на рестарт в диалоге ожидал что "что-то произойдёт", однако после нажатия на его взгляд ничего не случилось, поэтому он подумал что "что-то не сработало" и нажал Применить ещё раз.

Цель пожалуй даже не отнять у оператора возможность что-то нажать, а проинформировать его, что плата пошла в рестарт и дополнительно ничего тыкать не надо.

Идея со спинером мне нравится больше, предлагаю запустить спиннер "подождите, выполняется рестарт...", блокирующий диалог на короткое время, примерно достаточное для того чтобы плата стала lost in space, и когда это случится диалог скроется.

in reply to:  8 comment:9 by alx, 3 years ago

Replying to san:

Поясню причины странных действий пользователя: пользователь нажимая на рестарт в диалоге ожидал что "что-то произойдёт", однако после нажатия на его взгляд ничего не случилось,

А, так вот в чем проблема! В таком случае, я (как обычно) предлагаю бороться с самой проблемой, а не с ее следствием - раз проблема в том, что после нажатия "Рестарт" ничего не произошло, предлагаю после получения ответа на команду "Рестарт" выдавать информационный диалог с подтверждением типа "Перезагрузка платы успешно инициирована".

поэтому он подумал что "что-то не сработало" и нажал Применить ещё раз.

Пдожди-ка, что-то я совсем запутался... Выше ты говорил о нажатии кнопки "Рестарт" или "Применить"? Я думал (так как это написано в описаниип тикета), что речь о кнопке "Рестарт". Если речь о кнопке "Применить", то в чем проблема, если пользователь нажал ее еще раз? Нажал еще раз - конфигурация запишется в плату еще раз. Нажмет третий раз - третий раз конфигурация запишется... В чем проблема-то?

Цель пожалуй даже не отнять у оператора возможность что-то нажать, а проинформировать его, что плата пошла в рестарт и дополнительно ничего тыкать не надо.

Смотри мое преложение выше - оно решает данную задачу "прямо в лоб". :)

comment:10 by san, 3 years ago

Пдожди-ка, что-то я совсем запутался

Речь про плату SM-02 - при нажатии применить вылезает диалог с предложением рестарта. Пользователь согласился на рестарт но ничего не произошло, поэтому он нажал применить ещё раз и получил ошибки в ответ.

информационный диалог с подтверждением типа "Перезагрузка платы успешно инициирована

Спиннер мне нравится больше т.к. скрывает "технологическую" паузу между рестартом и пропаданием платы.

in reply to:  10 comment:11 by alx, 3 years ago

Replying to san:

Речь про плату SM-02 - при нажатии применить вылезает диалог с предложением рестарта.

Спасибо, теперь понятно. А я ошибочно думал, что пользователь нажал "Рестарт" в диалоге конфигурации платы. :)

Пользователь согласился на рестарт но ничего не произошло,

Как ничего не произошло? Разве диалог, в котором он нажал кнопку "Да" не пропал?

Version 0, edited 3 years ago by alx (next)

comment:12 by san, 3 years ago

Пропал, но кроме этого ничего не случилось, плата из списка не пропала, окно платы осталось как и было, пользователь подумал что что-то не сработало.

Спиннер

Видел похожую механику в роутере Dlink - когда в браузере жмёшь рестарт роутера, на страничке запускается прогресс бар Перезагрузка.. а когда роутер перезапустится он убирает этот прогресс бар и пользователь "чувствует" весь процесс.

in reply to:  12 comment:13 by alx, 3 years ago

Replying to san:

...ожидал что "что-то произойдёт", однако после нажатия на его взгляд ничего не случилось

Пропал,

Значит "что-то" все-таки произошло!

но кроме этого ничего не случилось,

Это можно сказать всегда, что бы мы ни сделали! Если следовать этому паттерну, пользователю всегда будет мало. :) Допустим, уберем мы диалог конфигурации платы, как это предлагается в описании тикета - пользователь скажет (точнее, подумает): "Да, диалог с вопросом пропал, диалог с настройками тоже пропал, но кроме этого ничего не случилось, а я ожидал, что произойдет что-то еще!". Добавим мы сообщение, добавим мы спиннер - пользователь скажет: "Да, диалог с вопросом пропал, да, появилось сообщение о перезагрузке платы, да, появился спиннер с надписью "подождите, плата перезагружается" и да, все элементы диалога стали недоступны, но кроме этого ничего не случилось!"... Поэтому я считаю, что это плохой, негодный аргумент.

окно платы осталось как и было

Не понимаю, почему ожидалось, что в нем что-то должно было имениться. В окне отображаются настройки платы. Настройки платы не изменились. Следовательно, не было никаких оснований ожидать, что в окне что-то изменится...

пользователь подумал что что-то не сработало.

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

Вообще-то в компьютерном мире обычно принято делать наоборот: если команда выполнена успешно, не говорить ничего, а вот если возникла какая-то ошибка - сообщить о ней. То есть об успешности говорит отсутствие сообщения об ошибке. Именно так и построен наш веб-интерфейс: если запрос вернул ошибку, сразу выскакивает сообщение. Если ошибки нет, результат запроса передается для дальнейшей обработки...

когда в браузере жмёшь рестарт роутера, на страничке запускается прогресс бар Перезагрузка.. а когда роутер перезапустится он убирает этот прогресс бар и пользователь "чувствует" весь процесс.

А, кажется, я понял идею. Получается, в данном случае пользователю сообщается и о начале перезагрузки (появлением прогресс-бара), и о ее завершении (пропаданием прогресс-бара).

comment:14 by alx, 3 years ago

Resolution: fixed
Status: newclosed

In 2116/sw:

В веб-интерфейсе в диалоге конфигурации плат SM-01, SM-02 и SM-03 при нажатии кнопки "Рестарт"
поверх всего диалога помещается спиннер с надписью "Подождите, выполняется рестарт платы...".

Если после записи конфигурации в плату SM-01, SM-02 или SM-03 положительно ответить на вопрос
о рестарте платы, также поверх всего диалога помещается спиннер с надписью "Подождите, выполняется рестарт платы...".

Closes #538.

Note: See TracTickets for help on using tickets.