Here's the more readable version - corrected with help form Richard at JWeekend... This is the easiest way to do the animation either side of the Wicket replace function that I know of... If someone would like to wrap this up into a nice behaviour for the Scriptaculous wicketstuff library be my guest :) I probably will eventually if we get back to the project that uses it.

<script type="text/javascript"><!--

var oldF = Wicket.replaceOuterHtml

Wicket.replaceOuterHtml=function(element, text) {

        var parent = $(element.id).parentNode;

        // the disappear animation
        $(element.id).fade({ duration: 0.4, afterFinish: function(effect) {

                // call replace function
                oldF(element, text)

                // render the appear animtion on the replaced element
                $(element.id).appear({ duration: 0.4});
        }});
        
}

--></script>


Cheers,
Antony Stubbs,

sharca.com

On 29/07/2009, at 4:54 AM, Antony Stubbs wrote:

I have a workaround and it goes a little something like this:
<script type="text/ javascript">Wicket.replaceOuterHtml=function(element, text) {

new $(element.id).fade({ duration: 0.4, afterFinish: function(effect) {
                
                        if (Wicket.Browser.isIE()) {            
                                Wicket.replaceOuterHtmlIE(element, text);       
                        
} else if (Wicket.Browser.isSafari() || Wicket.Browser.isOpera()) {
                        Wicket.replaceOuterHtmlSafari(element, text);           
                    } else /* GECKO */ {
                        // create range and fragment
                        var range = element.ownerDocument.createRange();
                        range.selectNode(element);
                                var fragment = 
range.createContextualFragment(text);
                                
                        element.parentNode.replaceChild(fragment, element);
                    }           
                        
                        $(element.id).appear({ duration: 0.4});                 
                }});
        
}

</script>

Putting that at the top of the html overrides the wicket function, adds in a javascript effect, then using the onFinish hook, runs the original Wicket code, the precedes with another effect. This makes the effects run immediately after the ajax call has completed...

This adds a fade transition every time wicket replaces a dom element. A better version would allow you to do it with some hooks, passing in your transition functions.

2009/7/28 Antony Stubbs <antony.stu...@gmail.com>
(sorry, sent to wrong list before)

Is it possible to override certain methods in wicketajax.js ? In order to modify the behaviour of one of the methods.

but i'd prefer not to run a patched wicket, or have to run on a copy of the whole wicketajax.js file - but i will if i have to :/

what i want to do is add pre and post hooks processComponent#Wicket.replaceOuterHtml function - as this will solve what I want to do - i.e. run an animation on the element to be replaced, after the ajax call completes, but before the element is replaced.

p.s. martijn, is there any info available on the plan for the new ajax system?

I just found - there is a post animation hook in Scriptaculous, which I have working to run the ajax request in, however this doesn't quite get there, as there's is of course the delay between when the animation finishes, and when the ajax request actually completes - which is too long.

Update:
I've tried overriding the js functions like this:

<script type="text/javascript">

function newProcessComponent: function(steps, node) {
        alert('replaced!');
}

Wicket.Ajax.Call.prototype.processComponent = newProcessComponent

</script>
<script type="text/javascript">Wicket.replaceOuterHtml=function() {alert('replaceOuterHtml');}</script> <script type="text/ javascript">Wicket.Ajax.Call.prototype.processComponent: function(steps, node) {{alert('processComponent');}</script>

but only the replaceOuterHtml functions works, i think because the there's a difference because processComponent is a member of an object...
I need to replace processComponent so that I can have access to the

Cheers,
Antony Stubbs,

sharca.com

On 27/07/2009, at 9:31 PM, Martijn Dashorst wrote:

Not 100% sure if it's already done, but I've bugged Matej with this
request for 1.5's new Ajax implementation.

Martijn

On Mon, Jul 27, 2009 at 9:40 AM, Antony Stubbs<antony.stu...@gmail.com > wrote:
Was this ever implemented / solved?:



Nov 21, 2006; 07:09am Re: Using Javascript Effects Before An Ajax Call
This is possible to do with wicket, however it would require minor
enhancement of the ajax processing code.

We already have infrastructure for asynchronously postponing processing
steps.

However, I can't do that right now. Maybe in a week or so. So if anyone really needs to pause between executing scripts from "prependJavascript"
and replacing the elements (which is I understand right this is all
about), keep bugging me, I will eventually implement that. :)

-Matej

cygnusx2112 wrote:

Thanks for the clarification Igor. I ended up achieving the desired affect
by
using an AjaxCallDecarator in combination with a server side pause.
Basically I was trying to do the following:

  1) Run animation effect on element
  2) Use Ajax request to replace element
  3) Run another animation effect on the element

As you noticed, I needed a way to block so that #2 and #3 would not step
on
#1. As a non-Javascript guru I was unable to find a way to block the Javascript "thread" without some kind of CPU beating hack loop. However,
the
solution I am using seems to work well.

In my efforts to accomplish this I have built some pretty interesting subclasses of AjaxEventBehavior that might be worth contributing. They basically allow you to cleanly add pre/post visual effects to components
around an Ajax event.

Regards,

-MT




igor.vaynberg wrote:

....the effect is clearly executed asynchronously from the rest of the javascript "thread" so you need to find a way to block until the effect
is
complete.

-igor


... [show rest of quote]


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Wicket-user mailing list
wicket-u...@...
https://lists.sourceforge.net/lists/listinfo/wicket-user


Cheers,
Antony Stubbs,

sharca.com





--
Become a Wicket expert, learn from the best: http:// wicketinaction.com
Apache Wicket 1.3.5 is released
Get it now: http://www.apache.org/dyn/closer.cgi/wicket/1.3.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org





--
___________________________
http://stubbisms.wordpress.com/



Reply via email to