Re: JavaScript execution on Ajax response in Wicket

2012-09-17 Thread seba.wag...@gmail.com
Thanks Sebastian,

I was able to resolve it based on your examples!

Sebastian

2012/9/16 Sebastien :
> Hi Sebastian
>
>>The issue is that "$(document).ready( function()" is not called (or only
> the first time) a Panel is loaded via Ajax.
> IMHO, the main thing to understand while working with jQuery is that, when
> you re-attach your component, you need to re-execute the jQuery statement.
>
> A generic way to achieve this is to add (jQuery)behavior added to your
> component.
> In behavior#renderHead()):
>
> AjaxRequestTarget target =
> component.getRequestCycle().find(AjaxRequestTarget.class);
>
> if (target != null)
> {
> target.appendJavaScript(this.$());
> }
> else
> {
> 
> response.render(JavaScriptHeaderItem.forScript(this.$(), this.getToken()));
> }
>
> where #$() gets the jQuery statement.
>
>> Additionally to the load of the Ajax Panel, we need to trigger an
> JavaScript event every time the table dynamically loads new records to the
> grid/table.
> You can achieve this in the same way as describe above, by attaching the
> statement you want to be executed.
>
> Feel free to have a look to the code severals jQuery / Wicket integrations
> did. For instance, the base JQueryAbstractBehavior of wicket-jquery-ui
> could be found here:
> https://github.com/sebfz1/wicket-jquery-ui/blob/wicket6/wicket-jquery-ui-core/src/main/java/com/googlecode/wicket/jquery/ui/JQueryAbstractBehavior.java
>
> Also, these integrations are designed to be extended and already solve
> these kind of issues...
>
> Best regards,
> Sebastien.
>
> On Sun, Sep 16, 2012 at 10:25 AM, seba.wag...@gmail.com <
> seba.wag...@gmail.com> wrote:
>
>> Hi,
>>
>> we build a single page application and want to extend that with some
>> jQuery plugins.
>>
>> The issue is that "$(document).ready( function()" is not called (or
>> only the first time) a Panel is loaded via Ajax.
>>
>> Example1 "JavaScript in HTML wicket:head":
>>
>> https://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/configurations/ConfigsPanel.html?view=markup
>> Line 27ff
>> => Works, but only one time: The first time you initialize the Panel,
>> $(document).ready is executed, the second time you click on the menu
>> item / load the Panel via Ajax,the JavaScript is not executed
>>
>> Example2 "JavaScript pragmatically injected by overwriting
>> renderHead(HtmlHeaderContainer container)":
>>
>> https://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/configurations/ConfigsPanel.java?view=markup
>> Line 45ff
>> => Works but $(document).ready is executed before the table with the
>> id "example" is rendered in the UI, so you can't see any effect
>>
>> Additionally to the load of the Ajax Panel, we need to trigger an
>> JavaScript event every time the table dynamically loads new records to
>> the grid/table.
>>
>> From examples in the Net I can ready that AjaxRequestTarget is used
>> for that. However the Panel itself does not provide a method to
>> overwrite or similar to catch such events globally for a the
>> component.
>>
>> I guess this is a common issue in Wicket, how do folks solve it?
>>
>> Thanks!
>> Sebastian
>>
>> --
>> Sebastian Wagner
>> https://twitter.com/#!/dead_lock
>> http://www.webbase-design.de
>> http://www.wagner-sebastian.com
>> seba.wag...@gmail.com
>>
>> -
>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>> For additional commands, e-mail: users-h...@wicket.apache.org
>>
>>



-- 
Sebastian Wagner
https://twitter.com/#!/dead_lock
http://www.webbase-design.de
http://www.wagner-sebastian.com
seba.wag...@gmail.com

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



Re: JavaScript execution on Ajax response in Wicket

2012-09-16 Thread Sebastien
Hi Sebastian

>The issue is that "$(document).ready( function()" is not called (or only
the first time) a Panel is loaded via Ajax.
IMHO, the main thing to understand while working with jQuery is that, when
you re-attach your component, you need to re-execute the jQuery statement.

A generic way to achieve this is to add (jQuery)behavior added to your
component.
In behavior#renderHead()):

AjaxRequestTarget target =
component.getRequestCycle().find(AjaxRequestTarget.class);

if (target != null)
{
target.appendJavaScript(this.$());
}
else
{

response.render(JavaScriptHeaderItem.forScript(this.$(), this.getToken()));
}

where #$() gets the jQuery statement.

> Additionally to the load of the Ajax Panel, we need to trigger an
JavaScript event every time the table dynamically loads new records to the
grid/table.
You can achieve this in the same way as describe above, by attaching the
statement you want to be executed.

Feel free to have a look to the code severals jQuery / Wicket integrations
did. For instance, the base JQueryAbstractBehavior of wicket-jquery-ui
could be found here:
https://github.com/sebfz1/wicket-jquery-ui/blob/wicket6/wicket-jquery-ui-core/src/main/java/com/googlecode/wicket/jquery/ui/JQueryAbstractBehavior.java

Also, these integrations are designed to be extended and already solve
these kind of issues...

Best regards,
Sebastien.

On Sun, Sep 16, 2012 at 10:25 AM, seba.wag...@gmail.com <
seba.wag...@gmail.com> wrote:

> Hi,
>
> we build a single page application and want to extend that with some
> jQuery plugins.
>
> The issue is that "$(document).ready( function()" is not called (or
> only the first time) a Panel is loaded via Ajax.
>
> Example1 "JavaScript in HTML wicket:head":
>
> https://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/configurations/ConfigsPanel.html?view=markup
> Line 27ff
> => Works, but only one time: The first time you initialize the Panel,
> $(document).ready is executed, the second time you click on the menu
> item / load the Panel via Ajax,the JavaScript is not executed
>
> Example2 "JavaScript pragmatically injected by overwriting
> renderHead(HtmlHeaderContainer container)":
>
> https://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/configurations/ConfigsPanel.java?view=markup
> Line 45ff
> => Works but $(document).ready is executed before the table with the
> id "example" is rendered in the UI, so you can't see any effect
>
> Additionally to the load of the Ajax Panel, we need to trigger an
> JavaScript event every time the table dynamically loads new records to
> the grid/table.
>
> From examples in the Net I can ready that AjaxRequestTarget is used
> for that. However the Panel itself does not provide a method to
> overwrite or similar to catch such events globally for a the
> component.
>
> I guess this is a common issue in Wicket, how do folks solve it?
>
> Thanks!
> Sebastian
>
> --
> Sebastian Wagner
> https://twitter.com/#!/dead_lock
> http://www.webbase-design.de
> http://www.wagner-sebastian.com
> seba.wag...@gmail.com
>
> -
> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
>
>


JavaScript execution on Ajax response in Wicket

2012-09-16 Thread seba.wag...@gmail.com
Hi,

we build a single page application and want to extend that with some
jQuery plugins.

The issue is that "$(document).ready( function()" is not called (or
only the first time) a Panel is loaded via Ajax.

Example1 "JavaScript in HTML wicket:head":
https://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/configurations/ConfigsPanel.html?view=markup
Line 27ff
=> Works, but only one time: The first time you initialize the Panel,
$(document).ready is executed, the second time you click on the menu
item / load the Panel via Ajax,the JavaScript is not executed

Example2 "JavaScript pragmatically injected by overwriting
renderHead(HtmlHeaderContainer container)":
https://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/configurations/ConfigsPanel.java?view=markup
Line 45ff
=> Works but $(document).ready is executed before the table with the
id "example" is rendered in the UI, so you can't see any effect

Additionally to the load of the Ajax Panel, we need to trigger an
JavaScript event every time the table dynamically loads new records to
the grid/table.

>From examples in the Net I can ready that AjaxRequestTarget is used
for that. However the Panel itself does not provide a method to
overwrite or similar to catch such events globally for a the
component.

I guess this is a common issue in Wicket, how do folks solve it?

Thanks!
Sebastian

-- 
Sebastian Wagner
https://twitter.com/#!/dead_lock
http://www.webbase-design.de
http://www.wagner-sebastian.com
seba.wag...@gmail.com

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