[Seaside] A welcome; and chaining jQuery events

Robert Sirois watchlala at hotmail.com
Wed Oct 16 00:00:22 UTC 2013




Here's a little demo that should illustrate what you're attempting to do:
==============WAComponent  > IndexComponent==============Class > canBeRoot	^true.Instance > renderContentOn: html	html div		id: 'parent';		with: ChildA new.			html paragraph  		id: 'hiddenComponent';		style: 'display: none;';		with: 'I was hidden! But no longer!'.		html button		bePush;		" using a script returned from the server (in this case, it's inline, but it could be a method call) via AJAX "		" the #fadeOut: method is exactly the same as the jQuery docs. it's signature is fadeOut( [ duration Number ][, callback Function ] )"		onClick: ( (html jQuery: '#parent') children first fadeOut: 1 second callback: ( html jQuery ajax script: [ :s | s add: ( (s jQuery: '#parent') html: ChildB new ) ] ) );		value: 'Replace component via AJAX'.			html break.			html button		bePush;		" notice this is using JQAnimate to do the same thing "		" also notice that if you use this twice in the demo, the other two buttons won't load anything because there is no longer a child in #parent "		onClick: ( (html jQuery: '#parent') children first animate opacity: 0; duration: 1 second; onComplete: ( (html jQuery: '#parent') empty, (html jQuery: '#hiddenComponent') appendTo: (html jQuery: '#parent'); fadeIn: 1 second ) );		value: 'Move hidden component and show it'.			html break.		html button		bePush;		" this one just inserts some pre-rendered content "		onClick: ( (html jQuery: '#parent') children first fadeOut: 1 second callback: ( (html jQuery: '#parent') html: [ :r | r paragraph: 'blah blah' ] ) );		value: 'Replace component with static content'.
Instance  > updateRoot: html	super updateRoot: html.	html title: 'Fade out child component in parent with a different child.'.	html javascript url: 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js'.
=======WAComponent  > ChildA=======Instance  > renderContentOn: html	html paragraph: 'Child A'.
======WAComponent > ChildB======Instance  > renderContentOn: html	html paragraph: 'Child B'.
RSFrom: watchlala at hotmail.com
To: seaside at lists.squeakfoundation.org
Subject: RE: [Seaside] A welcome; and chaining jQuery events
Date: Tue, 15 Oct 2013 13:34:19 -0600




You should be able to cascade an #onComplete block to the JQAnimate object. I have a bunch of code at home I can send you later, but it should look something like this:

 

(html jQuery: id) fadeOut: 0.5; onComplete: (html jQuery: id) ....

 

Check out the examples as well: http://demo.seaside.st/javascript/jquery/animations

 

RS
 

> From: wojtekk at kofeina.net
> Date: Tue, 15 Oct 2013 16:46:00 +0200
> Subject: Re: [Seaside] A welcome; and chaining jQuery events
> To: seaside at lists.squeakfoundation.org
> 
> Hi,
> this is obvious, isn't it? Now how to do this not leaving Smalltalk
> and not introducing literal javascript?
> 
> W.
> 
> On Tue, Oct 15, 2013 at 4:38 PM, Karsten Kusche <karsten at heeg.de> wrote:
> > try the documentation:
> >
> > http://api.jquery.com/fadeout/ there's an options parameter that you can
> > pass to fadeout. In that dictionary you can specify a done-function.
> >
> > Kind Regards
> > Karsten
> >
> > --
> > Karsten Kusche - Dipl. Inf. (FH) - karsten at heeg.de
> > Georg Heeg eK - Köthen
> > Handelsregister: Amtsgericht Dortmund A 12812
> >
> > Am Dienstag, 15. Oktober 2013 um 16:04 schrieb Wojciech Kaczmarek:
> >
> > Hello,
> >
> > I'd like to welcome everyone on this list. I was playing with Seaside
> > many years ago and I'm very glad to see it not only survived but being
> > still active and evolving :)
> >
> > Now I'm trying to get my head around the idea of interactive web
> > components I always wanted to have in a library. Looks like with some
> > creativity and discipline Seaside may be the platform it's possible to
> > have such thing on.
> >
> > I am experimenting now with giving the components visual behavior via
> > jquery effects. Say I want to: fade out some dom element, then replace
> > it with another and fade in this new one. My tries now boil down to a
> > very specific question:
> >
> > How to properly chain jQuery effects?
> >
> > If I do something like:
> >
> > html fooElement
> > id: id;
> > onClick: (html jQuery ajax script: [ :s |
> > s << (s jQuery: id) fadeOut: 2 seconds.
> > s << (s jQuery: id) parent html: OtherFoo new.
> > ]
> >
> > then the fade-out action will be fired -- meaning: started, but then
> > the dom replacement will be also fired right-away, effectively
> > replacing the element being faded out.
> > I need a method for chaining actions - not only pre-existing effects
> > but also dom manipulation, and, ideally, any javascript, so that one
> > is starting upon completion of another.
> > I realize it'd require to have some Seaside API over what goes into js
> > complete() callback handlers - is there anything like this, possibly
> > undocumented?
> >
> >
> > cheers,
> >
> > Wojtek
> _______________________________________________
> seaside mailing list
> seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
 		 	   		  

_______________________________________________
seaside mailing list
seaside at lists.squeakfoundation.org
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
 		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20131015/d694726c/attachment.htm


More information about the seaside mailing list