[cells-devel] family hierarchies
Ken Tilton
kennytilton at optonline.net
Wed Mar 26 17:28:53 UTC 2008
Andy Chambers wrote:
> I've picked off some of the low-hanging fruit in an effort to make
> hunchentoot handlers cells-aware. Most of the code so far has just been
> doing the equivalent of deftk but creating "html" widgets instead of tk ones.
>
> http://gitorious.org/projects/hunchncells
>
> The way this will work I think is as follows:- (most of this is vaporware)
>
> 1) request comes in from hunchentoot
> 2) cells handler gets "root" family object from hunchentoot session
> (or creates a fresh one)
> 3) kick off the propagation by setf'ing the request slot on root
> 4) an initial response is created from the xhtml slot of the root
> ...user does something on the browser end...
> 5) make ajax call to updates service
> 6) the update handler feeds some new paramaters into the model
> 5) observers on .kids, and .value log changes into an updates slot on the root
> 6) the updates are sent back down to the client
Sounds good, tho of course the devil is in the details and I am new to
all this interwebby stuff.
Food for thought if it comes up: Cells3 introduced a mechanism whereby
observers could queue their output to a client-queue and likewise
specify a client queue handler for those cases where custom handling is
required. Tk, eg, is a little fussy about the order in which things
happen, so observers (who do most of the talking to tk) rather than
talking directly to tcl/tk had to queue up their actions along with a
keyword used by a tk-specific client-q handler to sort things into the
right order.
eg, if you are introducing a new node to the dom in one place and
referencing it in another, mebbe you have to make sure those bits go to
the browser in that order (create before reference) and you'll need to
borrow that bit as well from Celtk.
>
> The updates would be a list of strings representing updates to the
> DOM. When it gets to the
> client, it is simply eval'd and hopefully, the page reflects the new state.
Flapjax, OpenLaszlo move over! :)
>
> Here's some other stuff I've been thinking about.
>
> 1) In celtk, it seems like pretty much all events are sent from tk to
> cells for handling
> by the widget-event-handle. I think that doing the same for
> javascript events would be too
> expensive.
Right, Celtk uses the C FFI so we can pin our ears back and go, LTk does
not have that much performance hence access to the event stream.
> Perhaps we could classify events into those that need
> to be sent immediately,
> those that can be sent periodically (say every 5 seconds), and
> those that can be
> ignored. I think even this would be probably not be scalable but
> I don't work for
> google so I don't have to worry about that ;-).
>
> 2) How do we feed these javascript events into the model? This would
> probably be another
> handler on a different url that listens for events specified as
> ajax GETs like this...
>
> GET /events?event=change&id=I034&new=somevalue
>
> It feeds these onto an events slot on the model and returns the
> current value of the
> updates slot mentioned above to the client
I am afraid it's all Greek to me, but if you really need the input lemme
know and you can bring me up to speed on the technology.
If this is at all relevant, I have always anticipated a Cells.js support
module to make it all go.
kt
ps. I am tempted to mention all this on comp.lang.lisp, mebbe scare up
some more interested parties. k
More information about the cells-devel
mailing list