Solved the problem. You give every function a uuid.

I spend last night and wrote my own module based off of yours.

Here is the lastest version of the code: http://pastebin.com/m570fe50a

It is a bit more involved to set up than your clienttools, however it uses
polymorphism and interfaces (I never thought I would say that outside of
college haha).

Obviously, this allows scripts to extend other scripts, to provide more
functionality. This also allows scripts, to call other scripts, either by
their function name (if they are a function) or by including their xml
representation directly.

Every script can be assigned a UUID, which allows you for multiple events on
the same object.

Every Script objects have the def xml(): so that they can be called directly
from the template without the need for a manager class, so that they can be
returned from ajax.

Scripts can also have global javascript variables, based off their name and
assigned uuid. For example, a Timer() will create a javascript variable such
as "interval_uuid_timerid", this allows for the timer to be accessed by a
StopTimer() script, so that it can stop the timer, even from ajax, without
having to write any javascript :)

-Thadeus




On Wed, Sep 23, 2009 at 6:07 PM, mr.freeze <nat...@freezable.com> wrote:

>
> Not sure if it's a best practice, but you could do a separate client
> handler and server handler to get a Please Wait effect:
>
> d = DIV("Click Me",_id="clickme")
> event.listen("click", d, "jQuery('#clickme').html('Please Wait...');")
> event.listen("click",d, handle_it, d)
>
> def handle_it():
>    return "Done!"
>
>
> On Sep 23, 5:37 pm, Thadeus Burgess <thadeus.burg...@gmail.com> wrote:
> > Yes it would.
> >
> > But would you ever place the same event on two different callbacks?
> >
> > -Thadeus
> >
> > On Wed, Sep 23, 2009 at 12:18 PM, mr.freeze <nat...@freezable.com>
> wrote:
> >
> > > I get it now. I like the idea but I'm worried it will break multiple
> > > subscriptions. Currently you can do:
> >
> > > d = DIV("clickme",_id="clickme")
> > > event.listen("click",d,"alert('hello');")
> > > event.listen("click",d,"alert('hello again');")
> >
> > > Wouldn't this create two functions with the same name?
> >
> > > On Sep 23, 11:39 am, Thadeus Burgess <thadeus.burg...@gmail.com>
> > > wrote:
> > > > Yeah, Like put the jQuery commands in their own little function.
> >
> > > > So instead of
> >
> > > > function page_onready(){
> > > > jQuery().click(blahblah);
> > > > jQuery().change(blahblah);}
> >
> > > > jQuery().page_onready();
> >
> > > > It will become
> >
> > > > function my_div__click(){
> > > >         jQuery.click(blahblah);}
> >
> > > > function my_input__change(){
> > > >         jQuery.change(blahblah);}
> >
> > > > function page_onready(){
> > > > my_div__click()
> > > > my_input__change()}
> >
> > > > jquery().page_onready();
> >
> > > > Hope that helps clear up what I ment.
> >
> > > > I'm not sure of any big advantage except it helps make it more
> organized.
> > > > That and it would make using the legacy rebinding easier.
> >
> > > > -Thadeus
> >
> > > > On Wed, Sep 23, 2009 at 11:28 AM, mr.freeze <nat...@freezable.com>
> > > wrote:
> >
> > > > > I think I missed your point.  Let me take a closer look.
> >
> > > > > On Sep 23, 11:22 am, "mr.freeze" <nat...@freezable.com> wrote:
> > > > > > I actually realized that last night and refactored everything.
>  Can
> > > > > > you check out the latest version and see if it does what you
> want?
> >
> > > > > > On Sep 23, 11:14 am, Thadeus Burgess <thadeus.burg...@gmail.com>
> > > > > > wrote:
> >
> > > > > > > What about grouping the actions in individual functions, that
> way
> > > > > calling
> > > > > > > these functions from returned jQuery commands, or from other
> > > JavaScript
> > > > > > > would make it easier! (also if you needed to support a legacy
> > > version
> > > > > of
> > > > > > > jQuery for add-on compatibility, you could use it for rebinding
> > > much
> > > > > easier.
> >
> > > > > > > This includes example output of what I'm talking about, and
> code to
> > > > > make
> > > > > > > that happen, note this doesn't include your recent additions
> Nathan
> > > > > (live or
> > > > > > > args)
> >
> > > > > > >http://pastebin.com/m70de2cc0
> >
> > > > > > > -Thadeus
> >
> > > > > > > On Tue, Sep 22, 2009 at 8:53 PM, mr.freeze <
> nat...@freezable.com>
> > > > > wrote:
> >
> > > > > > > > As promised, I have added some new examples.  I have also
> added
> > > > > > > > several new things to the module:
> >
> > > > > > > > ScriptManager - a collection of reusable scripts that include
> (so
> > > > > > > > far):
> > > > > > > >    1) call_server (generates the script for an ajax callback)
> > > > > > > >    2) alert and confirm  (exactly what you think)
> > > > > > > >    3) delay (setTimeout)
> > > > > > > >    4) timer (setInterval)
> > > > > > > >    5) stop_timer (clearTimeout)
> >
> > > > > > > > *experimental*
> > > > > > > > JQuery - helper to generate jQuery script string from Python
> (to
> > > > > > > > reduce nested quotes):
> > > > > > > >    JQuery("#servertime").css("color","red")() # produces
> 'jQuery
> > > > > > > > ("#servertime").css("color", "red");'
> >
> > > > > > > > You can check out examples here:
> > > > > > > >http://www.web2pyslices.com/main/slices/take_slice/8
> >
> > > > > > > > The timer example is the most interesting I think.  Enjoy
> and, as
> > > > > > > > always, feedback is welcome.
> >
> > > > > > > > On Sep 20, 6:57 am, Iceberg <iceb...@21cn.com> wrote:
> > > > > > > > > On Sep20, 2:14am, "mr.freeze" <nat...@freezable.com>
> wrote:
> >
> > > > > > > > > > Hi folks,
> >
> > > > > > > > > >     I just wanted to share a module that I'm working on
> for a
> > > > > > > > > > project.  It containstoolsfor managingclientevents and
> > > resources
> > > > > > > > > > from the server.  Here are the main features:
> >
> > > > > > > > > > 1) Dynamic inclusion and downloading of resources
> > > (scripts/css).
> > > > > > > > > > 2) Server side event handling forclientside events.
> > > > > > > > > > 3) Dynamic execution of script from the controller.
> (through
> > > > > > > > > > document.ready injection)
> > > > > > > > > > 4) Helpers for google hosted ajax APIs.
> >
> > > > > > > > > > You can see instructions and examples here:
> >
> > > > > > > > > >http://www.web2pyslices.com/main/slices/take_slice/8
> >
> > > > > > > > > > It's definitely a work in progress, but let me know what
> you
> > > > > think.
> >
> > > > > > > > > > -Nathan
> >
> > > > > > > > > After trying to implement your 4 examples in a "normal"
> way,
> > > which
> > > > > > > > > turns out to be tricky or even difficult (especially in the
> > > last
> > > > > two
> > > > > > > > > cases), I am convinced that thisclienttoolshave its great
> > > value!
> > > > > > > > > Well done, Nathan!
> >
> > > > > > > > > This stuff looks cool. Would you please give some more
> example
> > > (in
> > > > > > > > > your slice site) to demonstrate what mission this tool
> performs
> > > > > easier
> > > > > > > > > than otherwise?
> >
> > > > > > > > > I don't mean this stuff is not good. I just have poor
> > > imagination
> > > > > and
> > > > > > > > > sorry for that. :-)
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To post to this group, send email to web2py@googlegroups.com
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to