AJAX indicator turns off when calls overlap
-------------------------------------------
Key: WICKET-2401
URL: https://issues.apache.org/jira/browse/WICKET-2401
Project: Wicket
Issue Type: Bug
Components: wicket
Affects Versions: 1.4.0
Reporter: John Patterson
As discussed here
http://www.nabble.com/Ajax-indicator-turning-off-td24655744.html
Overlapping AJAX calls result in the indicator being turned off when the first
call returns. This patch keeps a count property directly on the HTMLElement so
when the element goes out of scope the count does not need to be removed. Each
AJAX call increments the counter and each return decrements the counter.
Index: src/main/java/org/apache/wicket/ajax/wicket-ajax.js
===================================================================
--- src/main/java/org/apache/wicket/ajax/wicket-ajax.js (revision 797714)
+++ src/main/java/org/apache/wicket/ajax/wicket-ajax.js (working copy)
@@ -2214,3 +2214,31 @@
e.style.display = "none";
}
}
+
+function wicketIncrementDisplay(id) {
+ var e=wicketGet(id);
+ if (typeof(e.wicketDisplayCount) =="undefined") {
+ e.wicketDisplayCount = 1;
+ } else {
+ e.wicketDisplayCount++;
+ }
+
+ if (e.wicketDisplayCount > 0) {
+ e.style.display = "";
+ }
+}
+
+function wicketDecrementDisplay(id) {
+ var e=wicketGet(id);
+ if (typeof(e.wicketDisplayCount) =="undefined") {
+ e.wicketDisplayCount = 0;
+ } else {
+ e.wicketDisplayCount--;
+ }
+
+ if (e.wicketDisplayCount <= 0) {
+ e.style.display = "none";
+ }
+}
+
+
Index: src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java
===================================================================
--- src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java
(revision 797714)
+++ src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java
(working copy)
@@ -183,7 +183,7 @@
if (!Strings.isEmpty(indicatorId))
{
- String hide = ";wicketHide('" + indicatorId + "');";
+ String hide = ";wicketDecrementDisplay('" + indicatorId
+ "');";
success = success + hide;
failure = failure + hide;
}
@@ -240,7 +240,7 @@
if (!Strings.isEmpty(indicatorId))
{
- call = new
AppendingStringBuffer("wicketShow('").append(indicatorId)
+ call = new
AppendingStringBuffer("wicketIncrementDisplay('").append(indicatorId)
.append("');")
.append(call);
}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.