Undo и несколько разных View
От: Amon_RA Россия  
Дата: 27.10.12 08:34
Оценка:
Есть программка моделирования шкафов для iPad. Два вида — один 2D, другой 3D
На 2D виде и происходит моделирование. 3D вид просто для просмотра-кручения и настройки материалов.
Для удобства моделирования на 2D виде кроме самих объектов есть еще вспомогательные линейки для выравнивания объектов. Пользваотель добавляет линейки и сами объекты в любом порядке

Вот коротенько как это выглядит — http://dl.dropbox.com/u/42518432/job/job.mp4

И есть кнопка Undo — она убирает последний добавленную сущность (линейка или объект). На 2D виде все ок — нам и линейки и объекты есть и видно что откатилось при нажатии на Undo. Но вот на 3D виде нет линеек, там только объекты. И нажатие на Undo там может визуально вообще никак не менять сцену, так как откатилась линйка. Что есть криво. Юзер жмет-жмет, а ничего не происходит. Как быть?
Re: Undo и несколько разных View
От: Sharov Россия  
Дата: 27.10.12 10:08
Оценка: +1 -1
Здравствуйте, Amon_RA, Вы писали:

disable undo кнопку в 3d режиме?
Кодом людям нужно помогать!
Re[2]: Undo и несколько разных View
От: goto Россия  
Дата: 29.10.12 11:04
Оценка:
Здравствуйте, Sharov, Вы писали:

S>Здравствуйте, Amon_RA, Вы писали:


S>disable undo кнопку в 3d режиме?


Не есть гут. Там же выполняются определенные действия. Почему их вдруг нельзя откатить? Это противоестественно.
Re: Undo и несколько разных View
От: goto Россия  
Дата: 29.10.12 11:16
Оценка:
Здравствуйте, Amon_RA, Вы писали:

A_R>Есть программка моделирования шкафов для iPad. Два вида — один 2D, другой 3D

A_R>На 2D виде и происходит моделирование. 3D вид просто для просмотра-кручения и настройки материалов.
A_R>Для удобства моделирования на 2D виде кроме самих объектов есть еще вспомогательные линейки для выравнивания объектов. Пользваотель добавляет линейки и сами объекты в любом порядке

Информации не хватает. Нужно больше букв.

Насколько виды 2d и 3d пересекаются по функциям? Это 2 независимых редактора? Если так, то можно откатывать в каждом только "его" функции.

Пусть функциональность пересекается. Возьмем 2 категории пользователей: профессиональные и домашние. Для профи сквозной undo и невидимость эффекта от некоторых откатов проблемы не составит, они поймут и привыкнут. Домашних же пользователей может запутать, хотя, я считаю, не насмерть. Ситуация с невидимым эффектом от undo встречается не так уж редко.

Можно о домашних позаботиться. Откаты, не имеющие видимого эффекта, можно обозначать. Например, "пролетающей" строкой; символической анимашкой, на долю секунды показывать полупрозрачный вид 2d с изменением и т.п. Необычно, конечно. Да, спикером посвистывать.

Но в целом надо смотреть конкретно по воркфлоу. Так трудно что-то сказать. Допустим, может оказаться, что откатывать в каждом виде только его ф-ии будет в целом хорошо для всех.
Re: Undo и несколько разных View
От: BulatZiganshin  
Дата: 29.10.12 22:23
Оценка:
Здравствуйте, Amon_RA, Вы писали:

A_R>И есть кнопка Undo — она убирает последний добавленную сущность (линейка или объект). На 2D виде все ок — нам и линейки и объекты есть и видно что откатилось при нажатии на Undo. Но вот на 3D виде нет линеек, там только объекты. И нажатие на Undo там может визуально вообще никак не менять сцену, так как откатилась линйка. Что есть криво. Юзер жмет-жмет, а ничего не происходит. Как быть?


отменять несколько действий вплоть до видимого
Люди, я люблю вас! Будьте бдительны!!!
Re: Undo и несколько разных View
От: Кодт Россия  
Дата: 13.11.12 09:29
Оценка:
Здравствуйте, Amon_RA, Вы писали:

A_R>И есть кнопка Undo — она убирает последний добавленную сущность (линейка или объект). На 2D виде все ок — нам и линейки и объекты есть и видно что откатилось при нажатии на Undo. Но вот на 3D виде нет линеек, там только объекты. И нажатие на Undo там может визуально вообще никак не менять сцену, так как откатилась линйка. Что есть криво. Юзер жмет-жмет, а ничего не происходит. Как быть?


Почему бы не отображать линейку и в 3D, скажем, в виде полоски на полу? Тем более, вдруг она там пригодится.
Перекуём баги на фичи!
Re: Undo и несколько разных View
От: Baudolino  
Дата: 24.12.12 12:07
Оценка:
Сложное решение: допустим вы собираетесь откатить создание линейки в 3D: сразу после нажатия кнопки Undo можно эту линейку в 3D нарисовать и медленно (за 2-3 секунды) показать, как она исчезает. Тогда пользователь получит необходимую обратную связь, но при этом вы не засорите интерфейс лишними объектами.

Решение попроще: подсвечивать ненадолго при Undo тот элемент интерфейса, который ведет к списку линеек или интерфейсу, в котором они видны. Тогда пользователь хотя бы будет знать, где примерно что-то поменялось.
Re: Undo и несколько разных View
От: ylem  
Дата: 24.12.12 16:27
Оценка:
Пользователь смотрит на 3D вид. Жмет undo -- откатилось. Жмет еще раз undo -- откатилось.
Следующим в истории стоит вставка линейки а потом изменение элемента, которые в 3d видно.
Пользователь по-прежнему хочет откатить еще на шаг.

По-моему самое нелогичное тут это откатить шаг линейки (что бы пользователь получил то, что он хочет, ему придется нажать undo два раза).

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

Еще один совсем простой вариант именно для линеек: вообще исключать операции с ними из истории, если после них в стеке появились изменения модели-артефакта.

Поправьте, пожалуйста, где ошибаюсь.
Re: Undo и несколько разных View
От: DmitryMS  
Дата: 07.01.13 16:59
Оценка:
Активный регион редактирования выделять красной жирной рамкой (2D or 3D) можно обыграть светом откат тоже сделать крансым, например.
Re: Undo и несколько разных View
От: Sinclair Россия https://github.com/evilguest/
Дата: 14.01.13 07:39
Оценка:
Здравствуйте, Amon_RA, Вы писали:


A_R>И есть кнопка Undo — она убирает последний добавленную сущность (линейка или объект). На 2D виде все ок — нам и линейки и объекты есть и видно что откатилось при нажатии на Undo. Но вот на 3D виде нет линеек, там только объекты. И нажатие на Undo там может визуально вообще никак не менять сцену, так как откатилась линйка. Что есть криво. Юзер жмет-жмет, а ничего не происходит. Как быть?

К сожалению, ссылка на ролик даёт 404, так что буду угадывать телепатически
Я в своё время неоднократно задумывался о семантике Undo для настроек View.
Классический Undo действует только на "Document", т.е. ту модель, которую мы редактируем. Именно действия над ней записываются в лог, и именно они откатываются.
А вот настройки View обычно считаются несущественными, и их откатить нельзя.
Меня периодически бесило то, что можно лёгким движением руки сломать какую-то визуальную настройку, и потом долго искать способ её восстановить. Скажем, закрыть какое-то окно, нечаянно сдвинуть тулбар, изменить масштаб и т.д.
В некоторых программах (сейчас уж не вспомню в каких) изменения настроек View сваливаются в тот же лог, и это тоже адски неудобно — скажем, я изменил текст, поменял масштаб, и только после этого понял, что надо откатить изменение текста. Увы, изменение масштаба тоже открутится назад.

Так вот, если бы ваши линейки были бы объектами View (как линейки в программах Microsoft Office), а не Document, а программа была бы для Windows, то я бы сделал отдельные пункты Undo ... /Redo ... в меню View (и, конечно же, как и в меню Edit, я бы переименовывал их в соответствии с конкретикой — Undo Hide Ruler, Undo Close Properties Pane, ...).

А вот если линейки являются частью модели редактируемого документа и сохраняются вместе с ним, но просто невидимы в одном из режимов, то я бы выбрал один из двух вариантов:
1. Добавить смену режимов между 2d и 3d в undo-log. Т.е. перед тем, как удалить линейку, пользователя принудительно переключают в 2d режим. Примерно так работает Excel — чтобы показать, какое именно изменение откатывается, пользователя перекидывают туда, где он его сделал.
2. Выводить неинтрузивную нотификацию типа "Ruler A creation has been undone".
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.