Peter Robinett
unread,Nov 10, 2009, 12:52:28 PM11/10/09Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Sign in to report message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to Lift
Hi David,
Thanks for presenting your latest work on Wizard last night at the Bay
Area Scala Enthusiasts meetup. I enjoyed hearing about Wizard and have
a few comments that I wanted to share with you and the rest of the
Lift community. I know Wizard is very new and I'm only going by what I
learned last night, so please bear with me if I misunderstood
anything!
As I understand it a Wizard instance is composed of screens
('questions'? I forget the exact terminology), each of which can have
multiple inputs, each input having a prompt ('Name', 'Your mother or
father's name', etc) and multiple validation rules. User input is
saved each time the user hits the Submit (or Next, in your example)
button. User state is stored from screen to screen and can be rolled
backwards but not forward. This is analogous to checking out an older
revision in a version control system, with each submitted screen being
a revision, but then loosing all revisions since the checkout
(rebasing the HEAD I believe it's called in Git).
What I expected, and what I think many other people would expect, is
that going back and forward among screens does not change the Wizard
state but simply changes what portion of the questions and responses
the user sees. In this case each screen is a simple, reduced view of
the current state, rather than a state in itself.
To use an analogy, think of a Wizard instance as an (annoying)
adventure game and each screen as a dungeon room. Let's say I fight my
way through several rooms full of grues, only to reach a locked door.
I'm told that the switch to unlock the door is 2 rooms back. I go back
(ie the previous screen method is fired twice) and I throw the switch.
Unfortunately, Wizard has also rolled back the dungeon state two
revisions and the intermediate room and room with the door now have
fearsome grues in them again! (In fact, I think Wizard could be used
quite easily for adventure games like that. Cool! I'm reminded of my
time making games in HyperCard. =)
To give another example, let's say I have a Wizard representing an e-
commerce site and have the following screens: shopping cart -> name
and shipping address -> credit card and billing address ->
confirmation. If I get to the confirmation screen and see that I added
2 Widgets and only want to buy 1, I want to be able to go back to the
shopping cart screen to make my change without losing the addresses
and payment details I entered in the intermediate screens.
Am I describing Wizard correctly, and if so, why did you chose the
first method of operation over the second? Can the second mode be
added?
Thanks for all the great work and I'm really looking forward to using
Wizard!
Peter Robinett