Does anyone have a strategy for implementing strong undo in a Seaside app?
Thanks Paul _______________________________________________ seaside mailing list [hidden email] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside |
On Thu, Dec 12, 2013 at 8:09 PM, Paul DeBruicker <[hidden email]> wrote:
> Does anyone have a strategy for implementing strong undo in a Seaside app? What is strong undo? Cheers Philippe _______________________________________________ seaside mailing list [hidden email] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside |
maybe something like (from Gimp):
Strong undo/redo By pressing Shift+Ctrl+Z /
Shift+Ctrl+Y it is now possible to undo a bunch of actions at one
time. This is good for experimenting on something!
On 12/12/13 4:05 PM, Philippe Marschall
wrote:
On Thu, Dec 12, 2013 at 8:09 PM, Paul DeBruicker [hidden email] wrote:Does anyone have a strategy for implementing strong undo in a Seaside app?What is strong undo? Cheers Philippe _______________________________________________ seaside mailing list [hidden email] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside _______________________________________________ seaside mailing list [hidden email] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside |
Something like that. I don't know where to find a definition I can point to. So to be less vague this is what I have in mind. As you both know the back button 'undoes' your navigation on regular links but can't undo a form submission or ajax requests that change things in the app. I'd like to be able to offer a way to undo/redo those too, when appropriate. To make experimenting and mistakes less costly for a user. So that they do not have to remember what they changed, and when. Ideally the undo of the navigation and the undo of the app changes would be tied either to the back button or just a button on the page. One canonical spot for 'undo-ing' things a user does. I know I can't undo things like sending emails, but I'd like to be able to say: if you spend a half hour experimenting on this you can get back to where you were exactly before you started. If it were a single user app I could probably get away with keeping a stack of model states for the user's whole model. Since it is a multi-user app that seems really complicated. User A's temporary changes may or may not conflict with user B's permanent changes. Maybe, as a first step, what I need is to just let a user make a copy of their whole model and pretend there is a playground/walled garden/simulator where a they can do experiments, and then when they're done either let them adopt the copy as their new model or keep it to mess with later. Anyway, if you have any ideas I'd love to hear them. Thanks Paul
|
Figuring out what you really want seems like
the first step...
- if you save successive model states, rolling them back could obliterate (part of) someone else's work. Is this really a problem - do two people work on the same thing? - if you save deltas ("I added 2 to bucket 7", e.g.), then you could reverse that action leaving changes mage by others in place. But, did another user see what was in bucket 7 and make a big decision based on that? Perhaps in many applications, but not in some. - if you give a user a copy of the world to play with, how would you merge those changes back into the trunk if that were desired in the end? Maybe something like this would work: - keep a list of modifications as user1 makes them - undo as many of the modifications as user1 wishes - if user2 ever reads or writes something that user1 has modified, then user1's undo stack is truncated at that point. Nothing that user2 has seen may be reverted. Cheers, Bob On 12/12/13 5:38 PM, Paul DeBruicker
wrote:
Something like that. I don't know where to find a definition I can point to. So to be less vague this is what I have in mind. As you both know the back button 'undoes' your navigation on regular links but can't undo a form submission or ajax requests that change things in the app. I'd like to be able to offer a way to undo/redo those too, when appropriate. To make experimenting and mistakes less costly for a user. So that they do not have to remember what they changed, and when. Ideally the undo of the navigation and the undo of the app changes would be tied either to the back button or just a button on the page. One canonical spot for 'undo-ing' things a user does. I know I can't undo things like sending emails, but I'd like to be able to say: if you spend a half hour experimenting on this you can get back to where you were exactly before you started. If it were a single user app I could probably get away with keeping a stack of model states for the user's whole model. Since it is a multi-user app that seems really complicated. User A's temporary changes may or may not conflict with user B's permanent changes. Maybe, as a first step, what I need is to just let a user make a copy of their whole model and pretend there is a playground/walled garden/simulator where a they can do experiments, and then when they're done either let them adopt the copy as their new model or keep it to mess with later. Anyway, if you have any ideas I'd love to hear them. Thanks Paul Bob Arning-2 wrotemaybe something like (from Gimp): *Strong undo/redo* By pressing Shift+Ctrl+Z / Shift+Ctrl+Y it is now possible to undo a bunch of actions at one time. This is good for experimenting on something! On 12/12/13 4:05 PM, Philippe Marschall wrote:On Thu, Dec 12, 2013 at 8:09 PM, Paul DeBruicker <pdebruic@> wrote:Does anyone have a strategy for implementing strong undo in a Seaside app?What is strong undo? Cheers Philippe _______________________________________________ seaside mailing list[hidden email]http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside_______________________________________________ seaside mailing list[hidden email]http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside-- View this message in context: http://forum.world.st/strong-undo-tp4729692p4729742.html Sent from the Seaside General mailing list archive at Nabble.com. _______________________________________________ seaside mailing list [hidden email] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside _______________________________________________ seaside mailing list [hidden email] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside |
In reply to this post by Paul DeBruicker
On Thu, Dec 12, 2013 at 11:38 PM, Paul DeBruicker <[hidden email]> wrote:
> > > Something like that. I don't know where to find a definition I can point > to. So to be less vague this is what I have in mind. > > As you both know the back button 'undoes' your navigation on regular links > but can't undo a form submission or ajax requests that change things in the > app. I'd like to be able to offer a way to undo/redo those too, when > appropriate. To make experimenting and mistakes less costly for a user. So > that they do not have to remember what they changed, and when. > > > Ideally the undo of the navigation and the undo of the app changes would be > tied either to the back button or just a button on the page. One canonical > spot for 'undo-ing' things a user does. I know I can't undo things like > sending emails, but I'd like to be able to say: if you spend a half hour > experimenting on this you can get back to where you were exactly before you > started. > > > If it were a single user app I could probably get away with keeping a stack > of model states for the user's whole model. Since it is a multi-user app > that seems really complicated. User A's temporary changes may or may not > conflict with user B's permanent changes. > > > Maybe, as a first step, what I need is to just let a user make a copy of > their whole model and pretend there is a playground/walled garden/simulator > where a they can do experiments, and then when they're done either let them > adopt the copy as their new model or keep it to mess with later. > > > Anyway, if you have any ideas I'd love to hear them. So you would like to be able to undo a database insert for example? Strictly speaking through #states you can make any object backtracked. The messages sent to it are #snapshotCopy and #restoreFromSnapshot:. Cheers Philippe _______________________________________________ seaside mailing list [hidden email] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside |
Free forum by Nabble | Edit this page |