You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2014/11/17 16:45:20 UTC

wicket git commit: WICKET-5747 Wicket Ajax Click handling gets requeued in OnDomReady so fire out of order

Repository: wicket
Updated Branches:
  refs/heads/wicket-6.x 6b50a9e94 -> 626d93fb0


WICKET-5747 Wicket Ajax Click handling gets requeued in OnDomReady so fire out of order


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/626d93fb
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/626d93fb
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/626d93fb

Branch: refs/heads/wicket-6.x
Commit: 626d93fb0f8aa1997d534f6b2f150db72d06fde6
Parents: 6b50a9e
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Mon Nov 17 17:45:00 2014 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Mon Nov 17 17:45:00 2014 +0200

----------------------------------------------------------------------
 .../wicket/ajax/res/js/wicket-event-jquery.js   | 23 ++++++++----------
 .../markup/head/OnDomReadyHeaderItem.java       |  1 -
 .../wicket/markup/head/ResourceAggregator.java  | 25 ++++++++++++++------
 3 files changed, 28 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/626d93fb/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
index ca37a13..41fca04 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
@@ -231,21 +231,18 @@
 						jQuery(fn);
 					});
 				} else {
-					// try to find the element once the DOM is ready
-					jQuery(function() {
-						type = (type === 'mousewheel' && Wicket.Browser.isGecko()) ? 'DOMMouseScroll' : type;
-						var el = element;
-						if (typeof(element) === 'string') {
-							el = document.getElementById(element);
-						}
+					type = (type === 'mousewheel' && Wicket.Browser.isGecko()) ? 'DOMMouseScroll' : type;
+					var el = element;
+					if (typeof(element) === 'string') {
+						el = document.getElementById(element);
+					}
 
-						if (!el && Wicket.Log) {
-							Wicket.Log.error('Cannot bind a listener for event "' + type +
-								'" on element "' + element + '" because the element is not in the DOM');
-						}
+					if (!el && Wicket.Log) {
+						Wicket.Log.error('Cannot bind a listener for event "' + type +
+							'" on element "' + element + '" because the element is not in the DOM');
+					}
 
-						jQuery(el).on(type, selector, data, fn);
-					});
+					jQuery(el).on(type, selector, data, fn);
 				}
 				return element;
 			},

http://git-wip-us.apache.org/repos/asf/wicket/blob/626d93fb/wicket-core/src/main/java/org/apache/wicket/markup/head/OnDomReadyHeaderItem.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/head/OnDomReadyHeaderItem.java b/wicket-core/src/main/java/org/apache/wicket/markup/head/OnDomReadyHeaderItem.java
index 8582cac..c0a415e 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/head/OnDomReadyHeaderItem.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/head/OnDomReadyHeaderItem.java
@@ -22,7 +22,6 @@ import org.apache.wicket.Application;
 import org.apache.wicket.request.Response;
 import org.apache.wicket.request.resource.ResourceReference;
 import org.apache.wicket.settings.IJavaScriptLibrarySettings;
-import org.apache.wicket.util.lang.Args;
 import org.apache.wicket.core.util.string.JavaScriptUtils;
 import org.apache.wicket.util.string.Strings;
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/626d93fb/wicket-core/src/main/java/org/apache/wicket/markup/head/ResourceAggregator.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/head/ResourceAggregator.java b/wicket-core/src/main/java/org/apache/wicket/markup/head/ResourceAggregator.java
index 67e80a9..9cad055 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/head/ResourceAggregator.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/head/ResourceAggregator.java
@@ -172,7 +172,12 @@ public class ResourceAggregator extends DecoratingHeaderResponse
 	}
 
 	private final Map<HeaderItem, RecordedHeaderItem> itemsToBeRendered;
-	private final List<OnDomReadyHeaderItem> domReadyItemsToBeRendered;
+
+	/**
+	 * Header items which should be executed once the DOM is ready.
+	 * Collects OnDomReadyHeaderItems and OnEventHeaderItems
+	 */
+	private final List<HeaderItem> domReadyItemsToBeRendered;
 	private final List<OnLoadHeaderItem> loadItemsToBeRendered;
 
 	private Object renderBase;
@@ -189,7 +194,7 @@ public class ResourceAggregator extends DecoratingHeaderResponse
 		super(real);
 
 		itemsToBeRendered = new LinkedHashMap<HeaderItem, RecordedHeaderItem>();
-		domReadyItemsToBeRendered = new ArrayList<OnDomReadyHeaderItem>();
+		domReadyItemsToBeRendered = new ArrayList<HeaderItem>();
 		loadItemsToBeRendered = new ArrayList<OnLoadHeaderItem>();
 	}
 
@@ -251,10 +256,10 @@ public class ResourceAggregator extends DecoratingHeaderResponse
 	public void render(HeaderItem item)
 	{
 		item = getItemToBeRendered(item);
-		if (item instanceof OnDomReadyHeaderItem)
+		if (item instanceof OnDomReadyHeaderItem || item instanceof OnEventHeaderItem)
 		{
 			renderDependencies(item, new LinkedHashSet<HeaderItem>());
-			domReadyItemsToBeRendered.add((OnDomReadyHeaderItem)item);
+			domReadyItemsToBeRendered.add(item);
 		}
 		else if (item instanceof OnLoadHeaderItem)
 		{
@@ -314,12 +319,18 @@ public class ResourceAggregator extends DecoratingHeaderResponse
 	private void renderCombinedEventScripts()
 	{
 		StringBuilder combinedScript = new StringBuilder();
-		for (OnDomReadyHeaderItem curItem : domReadyItemsToBeRendered)
+		for (HeaderItem curItem : domReadyItemsToBeRendered)
 		{
 			if (markItemRendered(curItem))
 			{
 				combinedScript.append('\n');
-				combinedScript.append(curItem.getJavaScript());
+				if (curItem instanceof OnDomReadyHeaderItem)
+				{
+					combinedScript.append(((OnDomReadyHeaderItem)curItem).getJavaScript());
+				} else if (curItem instanceof OnEventHeaderItem)
+				{
+					combinedScript.append(((OnEventHeaderItem)curItem).getCompleteJavaScript());
+				}
 				combinedScript.append(';');
 			}
 		}
@@ -352,7 +363,7 @@ public class ResourceAggregator extends DecoratingHeaderResponse
 	 */
 	private void renderSeperateEventScripts()
 	{
-		for (OnDomReadyHeaderItem curItem : domReadyItemsToBeRendered)
+		for (HeaderItem curItem : domReadyItemsToBeRendered)
 		{
 			if (markItemRendered(curItem))
 			{