Формы, undo/redo
От: c-smile Канада http://terrainformatica.com
Дата: 25.10.05 22:12
Оценка:
Скажем есть некая веб страница или форма в программе с
неким набором полей ввода.

Встает вопрос об имплементация undo/redo для полей. Имеем
два подхода:
1) IE — вся форма есть один большой документ и стек undo/redo общий на все элементы.
Т.е. изменили поле A а потом B. Затем жмем Ctrl-Z не важно где и откатываем все изменения —
сначала в B потом в A.
2) FF (и любые другие программы Windows ) — каждый элемент имеет свой собственный независимый стек.

Что еще интересно: undo/redo есть только для edit fields в обоих случаях.
Radio и check boxes, selects — лишены такой возможности (так надо?)

Соответсвенно возникает вопрос: куда податься крестьянину — жителю деревни Юзабиловки?

Давайте ваши умные мысли
Re: Формы, undo/redo
От: Real 3L0 Россия http://prikhodko.blogspot.com
Дата: 26.10.05 04:06
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Встает вопрос об имплементация undo/redo для полей. Имеем

CS>два подхода:

Внутренний голос подсказывает мне, что можно посмотреть на задачу:
— если это что-то типа графического редактора, то андо необходимо делать только по всем изменениям;
— если это что-то типа екселя, то я бы дал пользователю возможность отката либо только в ячейке, либо по всем изменениям.
Тектовой процессор в этом случае я считаю аналогом графического редактора. Форму с кучей полей — аналогом екселя.
О! Родилось: откат производить в зависимости от того, откуда этот откат вызван: редактируем ячейку — откат в ячейке, редактируем рисунок — откат в рисунке, фокус на форме (не элементе) — откат по элементам формы.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Вселенная бесконечна как вширь, так и вглубь.
Re: Формы, undo/redo
От: Бушин Илья  
Дата: 26.10.05 05:20
Оценка: +1
Здравствуйте, c-smile, Вы писали:

CS>Скажем есть некая веб страница или форма в программе с

CS>неким набором полей ввода.

CS>Встает вопрос об имплементация undo/redo для полей. Имеем

CS>два подхода:
CS>1) IE — вся форма есть один большой документ и стек undo/redo общий на все элементы.
CS> Т.е. изменили поле A а потом B. Затем жмем Ctrl-Z не важно где и откатываем все изменения -
CS> сначала в B потом в A.

ИМХО крайне порочный путь... Причина: пользователь работал с формой, пользователь отвлекся, затем вернулся к работе...
Какое поле он менял последним еще можно при помощи фокуса отметить. А вот какое поле он менял перед этим? И соответственно, какое поле пойдет в undo после нажатия Ctrl-Z? Пользователь уже не помнит...
Так что смысл такого механизма стремится к нулю.

CS>2) FF (и любые другие программы Windows ) — каждый элемент имеет свой собственный независимый стек.


CS>Что еще интересно: undo/redo есть только для edit fields в обоих случаях.

CS>Radio и check boxes, selects — лишены такой возможности (так надо?)

CS>Соответсвенно возникает вопрос: куда податься крестьянину — жителю деревни Юзабиловки?


Второй способ соответственно более правильный. Но!
Мое мнение такое, что вообще при грамотном проектировании форм механизм undo/redo для форм не требуется. Максимум что может потребоваться это кнопка сброса всех настроек в первоначальное состояние (чтобы не закрывать форму без изменений — "Отмена" и снова не открывать для изменения какой-нибудь одной настройки). Такой механизм, кстати, будет более понятен пользвателям чем undo/redo.

PS. И вообще-то на будущее... Слишком мало данных Вы даете, чтобы дать какой-нибудь более или менее правильный совет. Что за программа? Что за форма? Как много элементов в этой форме? Кто пользователи Вашей программы? Ведь, если опытные пользователи компьютера воспринимают возможность undo/redo как само собой разумеющееся, то начинающим пользователям зачастую не понятна сама концепция этого действия... А уж объяснять, что каждое поле имеет свой собственный стек undo/redo — увольте меня!
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Формы, undo/redo
От: Real 3L0 Россия http://prikhodko.blogspot.com
Дата: 26.10.05 06:34
Оценка:
Здравствуйте, Бушин Илья, Вы писали:

БИ>ИМХО крайне порочный путь... Причина: пользователь работал с формой, пользователь отвлекся, затем вернулся к работе...


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

БИ>Мое мнение такое, что вообще при грамотном проектировании форм механизм undo/redo для форм не требуется. Максимум что может потребоваться это кнопка сброса всех настроек в первоначальное состояние (чтобы не закрывать форму без изменений — "Отмена" и снова не открывать для изменения какой-нибудь одной настройки). Такой механизм, кстати, будет более понятен пользвателям чем undo/redo.


Более понятен, но не эффективен. Есть формы (и их не мало) которые используются для ввода данных с бумаги: пользователь смотрит на бумагу, читает, на экран, вбивает, на бумагу, читает, на экран, вбивает, и случается, что вбивая строку N, он промахивается и смотрит на бумагу на продолжение строки N+/-1, на экран, вбивает, матерится.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Вселенная бесконечна как вширь, так и вглубь.
Re: Формы, undo/redo
От: Mamut Швеция http://dmitriid.com
Дата: 26.10.05 09:13
Оценка:
CS>Давайте ваши умные мысли

Имхо, надо оставить default behaviour такой, как в браузерах — undo/redo только в пределах input/textarea/htmlarea. Если понадобится хитрая функциональность, требующая undo/redo пол всей форме, то пусть юзер сам ее и имплементирует. Потому что ни один элемент на форме, кроме текстовых, не требует, в принципе, undo/redo.


dmitriid.comGitHubLinkedIn
Re[2]: Формы, undo/redo
От: Real 3L0 Россия http://prikhodko.blogspot.com
Дата: 26.10.05 09:47
Оценка:
Здравствуйте, Mamut, Вы писали:

M> Если понадобится хитрая функциональность, требующая undo/redo пол всей форме, то пусть юзер сам ее и имплементирует.


.

M> Потому что ни один элемент на форме, кроме текстовых, не требует, в принципе, undo/redo.


А селективные?
Пример: счет-фактура.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Вселенная бесконечна как вширь, так и вглубь.
Re[3]: Формы, undo/redo
От: Бушин Илья  
Дата: 26.10.05 10:38
Оценка:
Здравствуйте, Real 3L0, Вы писали:

БИ>>Мое мнение такое, что вообще при грамотном проектировании форм механизм undo/redo для форм не требуется. Максимум что может потребоваться это кнопка сброса всех настроек в первоначальное состояние (чтобы не закрывать форму без изменений — "Отмена" и снова не открывать для изменения какой-нибудь одной настройки). Такой механизм, кстати, будет более понятен пользвателям чем undo/redo.


R3>Более понятен, но не эффективен. Есть формы (и их не мало) которые используются для ввода данных с бумаги: пользователь смотрит на бумагу, читает, на экран, вбивает, на бумагу, читает, на экран, вбивает, и случается, что вбивая строку N, он промахивается и смотрит на бумагу на продолжение строки N+/-1, на экран, вбивает, матерится.


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

А по сути Вашего примера могу сказать следующее. Насколько я понял из Вашего описания, эту ошибку можно классифицировать как опечатку вызванную недостаточным вниманием человека выполняемому действию. Соответственно эту проблему (привлечение большего внимания) и надо решать, а не придумывать "костыли" в виде механизма undo/redo.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Формы, undo/redo
От: Mamut Швеция http://dmitriid.com
Дата: 26.10.05 16:38
Оценка:
M>> Потому что ни один элемент на форме, кроме текстовых, не требует, в принципе, undo/redo.

R3>А селективные?

R3>Пример: счет-фактура.

Селективные — типа list? Имхо, все равно не надо


dmitriid.comGitHubLinkedIn
Re[4]: Формы, undo/redo
От: c-smile Канада http://terrainformatica.com
Дата: 26.10.05 17:13
Оценка:
Здравствуйте, Бушин Илья, Вы писали:

БИ>Здравствуйте, Real 3L0, Вы писали:



БИ>Хм-м-м-м-м-м... Мы сейчас разводим спор на пустом месте. Как я уже писал в предыдущем сообщении, автором дано слишком мало информации о сути вопроса для того, чтобы давать какие-либо конкретные рекомендации.


Автор т.е. я имплементирует вот это http://www.terrainformatica.com/htmlayout/
Будем считать это броузером. Вопрос стал о разработке общего механизма undo/redo
т.е. делать его сквозным как в IE или локальным как в FF.

Собственно об этом я и спрашивал.
Re[2]: Формы, undo/redo
От: c-smile Канада http://terrainformatica.com
Дата: 26.10.05 17:15
Оценка:
Здравствуйте, Mamut, Вы писали:

CS>>Давайте ваши умные мысли


M>Имхо, надо оставить default behaviour такой, как в браузерах — undo/redo только в пределах input/textarea/htmlarea. Если понадобится хитрая функциональность, требующая undo/redo пол всей форме, то пусть юзер сам ее и имплементирует. Потому что ни один элемент на форме, кроме текстовых, не требует, в принципе, undo/redo.


Наверное ты прав. Тем более в свете <htmlarea> будет грустно если в процесс откакта будет встревать нечто еще.
Re[4]: Формы, undo/redo
От: Real 3L0 Россия http://prikhodko.blogspot.com
Дата: 27.10.05 05:49
Оценка:
Здравствуйте, Бушин Илья, Вы писали:

БИ> Соответственно эту проблему (привлечение большего внимания) и надо решать


Интересно, как по твоему решить эту аппаратную проблему программным методом?

БИ>, а не придумывать "костыли" в виде механизма undo/redo.


Это не костыль, а механизм исправления ошибок.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Вселенная бесконечна как вширь, так и вглубь.
Re[4]: Формы, undo/redo
От: Real 3L0 Россия http://prikhodko.blogspot.com
Дата: 27.10.05 05:49
Оценка: 3 (1)
Здравствуйте, Mamut, Вы писали:

M>Селективные — типа list?


Да, а также чекбокс, сомбобокс и т.п.

M> Имхо, все равно не надо


Ну вот лично мне такая функциональность не помешала бы: а то apply есть, а андо нет. Пример: настройка цветов в виндовсе — настроил, apply, настроил, apply, не понравилось (окно настроект открыто), откатил.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Вселенная бесконечна как вширь, так и вглубь.
Re[5]: Формы, undo/redo
От: Mamut Швеция http://dmitriid.com
Дата: 27.10.05 06:36
Оценка:
M>>Селективные — типа list?

R3>Да, а также чекбокс, сомбобокс и т.п.


M>> Имхо, все равно не надо


R3>Ну вот лично мне такая функциональность не помешала бы: а то apply есть, а андо нет. Пример: настройка цветов в виндовсе — настроил, apply, настроил, apply, не понравилось (окно настроект открыто), откатил.


Ну, это решает кнопочка "reset" или общая "undo last changes"


dmitriid.comGitHubLinkedIn
Re[6]: Формы, undo/redo
От: Real 3L0 Россия http://prikhodko.blogspot.com
Дата: 27.10.05 07:21
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Ну, это решает кнопочка "reset"


Ресет не решает — она сбрасывает всё.

M> или общая "undo last changes"


А про это я, собственно, и говорю.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Вселенная бесконечна как вширь, так и вглубь.
Re[7]: Формы, undo/redo
От: Mamut Швеция http://dmitriid.com
Дата: 27.10.05 08:40
Оценка:
M>>Ну, это решает кнопочка "reset"

R3>Ресет не решает — она сбрасывает всё.


Поэтому я подумал и дописал следующее

M>> или общая "undo last changes"


R3>А про это я, собственно, и говорю.


Ну а это должно быть на совести создателя программы, имхо. Как фреймворк, HTMLLayout должен позволять такое сделать, но не навязывать. ИМХО.

Хм. Интересная идея — получить snapshot текущего состояния системы.


dmitriid.comGitHubLinkedIn
Re[8]: Формы, undo/redo
От: Real 3L0 Россия http://prikhodko.blogspot.com
Дата: 27.10.05 08:58
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Ну а это должно быть на совести создателя программы, имхо. Как фреймворк, HTMLLayout должен позволять такое сделать, но не навязывать. ИМХО.


Ну, навязать то, чего не видно — трудно. А вот знать, что это есть — приятно.

M>Хм. Интересная идея — получить snapshot текущего состояния системы.


Если ты о виндовых формах, то в чем проблема? Это элементарно делается, наверно, ещё с 3.11ых. Можно даже отдельным приложением.
А если о фэбформах/страницах, то тут я не силен.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Вселенная бесконечна как вширь, так и вглубь.
Re[5]: Формы, undo/redo
От: Бушин Илья  
Дата: 27.10.05 09:47
Оценка:
Здравствуйте, Real 3L0, Вы писали:

БИ>> Соответственно эту проблему (привлечение большего внимания) и надо решать

R3>Интересно, как по твоему решить эту аппаратную проблему программным методом?

Честно сказать?
Не знаю... Если бы знал уже все давно пользовались бы. Держать при себе не стал бы...
Но думать-то над этой проблемой мне никто не мешает...
Кстати сказать, не знаю как эту проблему решить кардинально... Но! Придумано куча, на мой взгляд, более правильных способов уменьшения значимости таких проблем.
Пример: Индуктивный пользовательский интерфейс

БИ>>, а не придумывать "костыли" в виде механизма undo/redo.

R3>Это не костыль, а механизм исправления ошибок.

Ну если принять за допущение, что человеческие ошибки существуют, то да...
Но я более согласен с мнением автора книги "Дизайн пользовательского интерфейса", о том что ошибок пользователя не существует как таковых. Есть ошибки проектирования систем. И вот когда фантазии проектировщиков не хватает (или просто лень что-либо другое придумывать, или от незнания) появляются на свет такие костыли.
В некоторых задачах без такого механизма действительно не обойдешься. Например, текстовый или графический редактор. Но в формах, где и так все разложено по полям и совершенно ясно какую информацию пользователь может ввести, а какую не может, городить такой достаточно сложный для понимания и использования механизм. На мой взгляд — нонсенс!
Re[9]: Формы, undo/redo
От: Mamut Швеция http://dmitriid.com
Дата: 27.10.05 10:32
Оценка:
M>>Ну а это должно быть на совести создателя программы, имхо. Как фреймворк, HTMLLayout должен позволять такое сделать, но не навязывать. ИМХО.

R3>Ну, навязать то, чего не видно — трудно. А вот знать, что это есть — приятно.


M>>Хм. Интересная идея — получить snapshot текущего состояния системы.


R3>Если ты о виндовых формах, то в чем проблема? Это элементарно делается, наверно, ещё с 3.11ых. Можно даже отдельным приложением.


Ээээ....

R3>А если о фэбформах/страницах, то тут я не силен.


Ну, тут, теоретически, надо DOM созранить, я так полагаю.


dmitriid.comGitHubLinkedIn
Re[6]: Формы, undo/redo
От: Real 3L0 Россия http://prikhodko.blogspot.com
Дата: 27.10.05 10:46
Оценка:
Здравствуйте, Бушин Илья, Вы писали:

БИ>Пример: Индуктивный пользовательский интерфейс


Ага, я прям слышу, что кричат бухи, при вбивании счет-фактуры.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Вселенная бесконечна как вширь, так и вглубь.
Re[6]: Формы, undo/redo
От: c-smile Канада http://terrainformatica.com
Дата: 27.10.05 15:24
Оценка:
Здравствуйте, Mamut, Вы писали:

M>>>Селективные — типа list?


M>Ну, это решает кнопочка "reset" или общая "undo last changes"


Reset он есть (в смысле будет) — его никто не отменял.

Вопрос был немного о другом.


Кстати еще один — гранулярность.
Для <input type="text"> IE считает одним действом все что произошло между focus-in и focus-out.
FF — бъет на более мелкие гранулы.

Как правильно?
Re[7]: Формы, undo/redo
От: Бушин Илья  
Дата: 27.10.05 15:39
Оценка:
Здравствуйте, Real 3L0, Вы писали:

БИ>>Пример: Индуктивный пользовательский интерфейс

R3>Ага, я прям слышу, что кричат бухи, при вбивании счет-фактуры.

Да что Вы привязались к этой счет-фактуре? Я, между прочим, тоже в основном работаю на ниве автоматизации бухгалтерской/управленческой деятельности. И смею Вас уверить, что счет-фактура не самый сложный документ... И многие бухгалтеры нормально воспринимают перемены в организации интерфейса. А то что есть часть (довольно небольшая часть) кричаших, это при любом внедрении новых технологий есть недовольные. Я бы назвал это нежеланием перемен вообще.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[7]: Формы, undo/redo
От: Mamut Швеция http://dmitriid.com
Дата: 27.10.05 15:52
Оценка:
CS>Кстати еще один — гранулярность.
CS>Для <input type="text"> IE считает одним действом все что произошло между focus-in и focus-out.
CS>FF — бъет на более мелкие гранулы.

CS>Как правильно?




Не знаю, как правильно , но удобней с более мелкими гранулами. то есть знаешь, что ткнешь туда и можешь при помощи Ctrl+z вернуться в то место, которое сам захочешь. Кстати, Опера тоже дробит на гранулы


dmitriid.comGitHubLinkedIn
Re[8]: Формы, undo/redo
От: Real 3L0 Россия http://prikhodko.blogspot.com
Дата: 28.10.05 04:38
Оценка:
Здравствуйте, Бушин Илья, Вы писали:

БИ>Да что Вы привязались к этой счет-фактуре?


Потому что, как уже неоднократно сказано в темах по обсуждению IUI, не везде его можно использовать, и это просто один пример.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Вселенная бесконечна как вширь, так и вглубь.
Re[10]: Формы, undo/redo
От: Real 3L0 Россия http://prikhodko.blogspot.com
Дата: 28.10.05 04:38
Оценка:
Здравствуйте, Mamut, Вы писали:

R3>>Если ты о виндовых формах, то в чем проблема? Это элементарно делается, наверно, ещё с 3.11ых. Можно даже отдельным приложением.


M>Ээээ....


Находим окно, находим элементы окна, записываем их состояние ...
Или я плохо знаю WinAPI?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Вселенная бесконечна как вширь, так и вглубь.
Re[11]: Формы, undo/redo
От: Mamut Швеция http://dmitriid.com
Дата: 28.10.05 10:49
Оценка: :)
R3>>>Если ты о виндовых формах, то в чем проблема? Это элементарно делается, наверно, ещё с 3.11ых. Можно даже отдельным приложением.

M>>Ээээ....


R3>Находим окно, находим элементы окна, записываем их состояние ...

R3>Или я плохо знаю WinAPI?

Тьфу блин, EnumChildWindows, GetWindowText и так далее А я-то думал, что-то такое, навороченное


dmitriid.comGitHubLinkedIn
Re[3]: Формы, undo/redo
От: Mamut Швеция http://dmitriid.com
Дата: 28.10.05 10:56
Оценка:
M>>Имхо, надо оставить default behaviour такой, как в браузерах — undo/redo только в пределах input/textarea/htmlarea. Если понадобится хитрая функциональность, требующая undo/redo пол всей форме, то пусть юзер сам ее и имплементирует. Потому что ни один элемент на форме, кроме текстовых, не требует, в принципе, undo/redo.

CS>Наверное ты прав. Тем более в свете <htmlarea> будет грустно если в процесс откакта будет встревать нечто еще.


Я тут подумал (навеяно мыслей о снэпшоте
Автор: Mamut
Дата: 27.10.05
) текущего состояния системы. В целом, undo по состоянию прочих объектов уже ведь сейчас можно легко имплементировать, как я понимаю, достаточно сохранить DOM документа. Ну или ту часть, которая изменяется. То есть — оставить на совесть разработчика. А вот undo в тексте — это да


dmitriid.comGitHubLinkedIn
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.