Hi, I have a question about the best way to manage state changes with an interactive gadget. My gadget has a textbox for user's to write an equation in (http://waveyscience.appspot.com). Every time the user types in the textbox I change the stored equation (submitDelta). I don't want to wait until they leave the textbox so that other user's can see any changes they make right away. Now the problem is that, for the user's who haven't edited the textbox, upon receiving a stateUpdated event they need to update the textbox, but the editing user may have written another character in the mean time and I wouldn't be polite to overwrite that.
At the moment I get around this by having a variable "lastUpdate" which records the last state update submitted, and ignores state changes until the lastUpdate state change is received. This means if user types "a" and then "b" generating state changes "a" and "ab" quickly, the stateUpdated event with just the state change 'a' (which will occur after both keypresses if typing quickly) will get ignored in the originating gadget (because it is waiting for the state change 'ab' which it know's it has submitted). This seems to work. The only problem is, that (I think) if another user types 'c' quickly, then the state might get merge on the server and so the state change to 'ab' will never be received by the gadget. This leaves it in a stuck state waiting for state change that will never come and ignoring other ones. One hack would be to have some sort of timeout. But it seems like a better way would be to have submitDelta give some sort of server side timestamp, so one can test in statedUpdated if that delta is still pending or a newer state is now available. getTime seems like it might be the kinda thing I'm after but I can't really see how to use it, and at the moment I think it just gives the client time (which won't work if the client clocks are out of sync (and they'd only need to be out by milliseconds). Basically, what I'm asking is, does anyone have a demo implementation of a gadget that is just a textbox editable by multiple users, synchronizing with each keypress. I don't quite understand the Wave way to do this, as gadget's don't have access to the full Wave OT. Thanks for any help. Jonny -- Jonathan J Hunt <[email protected]> Homepage: http://www.42quarks.com (Further contact details there) "Physics isn't the most important thing. Love is." Richard Feynman --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google Wave API" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/google-wave-api?hl=en -~----------~----~----~----~------~----~------~--~---
