You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by "Pedro Ayala (Updated) (JIRA)" <ji...@apache.org> on 2011/12/07 17:24:40 UTC

[jira] [Updated] (TAP5-1775) Improve javascript performance while creating zone events

     [ https://issues.apache.org/jira/browse/TAP5-1775?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Pedro Ayala updated TAP5-1775:
------------------------------

    Description: 
While creating eventLinks and actionLinks it is necessary to call updateZoneOnEvent to create the observe and store the zoneId in the element for future references.
The method is also checking if the zoneId exist before storing it in the element store information. While this feature is quite useful in debug mode, it is also consuming some time in production mode.
With this patch we will prevent the check while running in production mode, this improve performance in older browser like internet explorer 7.

Index: src/main/resources/org/apache/tapestry5/tapestry.js
===================================================================
--- src/main/resources/org/apache/tapestry5/tapestry.js
+++ src/main/resources/org/apache/tapestry5/tapestry.js
@@ -1020,21 +1020,32 @@ T5.extendInitializers({
     updateZoneOnEvent : function(eventName, element, zoneId, url) {
         element = $(element);
 
-        $T(element).zoneUpdater = true;
-
-        var zoneElement = zoneId == '^' ? $(element).up('.t-zone')
-            : $(zoneId);
-
-        if (!zoneElement) {
-            Tapestry
-                .error(
-                "Could not find zone element '#{zoneId}' to update on #{eventName} of element '#{elementId}'.",
-                {
-                    zoneId : zoneId,
-                    eventName : eventName,
-                    elementId : element.id
-                });
-            return;
+        var Telement = $T(element);
+        Telement.zoneUpdater = true;
+
+        var destZoneId = zoneId;
+        var zoneElement = null;
+        if (zoneId == '^') {
+        	zoneElement = element.up('.t-zone');
+        	if (zoneElement)
+        		destZoneId = zoneElement.id;
+        }
+        	
+        if (Tapestry.DEBUG_ENABLED) {
+        	if (!zoneElement && zoneId != '^')
+        		zoneElement = $(zoneId);
+
+	        if (!zoneElement) {
+	            Tapestry
+	                .error(
+	                "Could not find zone element '#{zoneId}' to update on #{eventName} of element '#{elementId}'.",
+	                {
+	                    zoneId : zoneId,
+	                    eventName : eventName,
+	                    elementId : element.id
+	                });
+	            return;
+	        }
         }
 
         /*
@@ -1042,7 +1053,7 @@ T5.extendInitializers({
          * changed dynamically on the client side.
          */
 
-        $T(element).zoneId = zoneElement.id;
+        Telement.zoneId = zoneId;
 
         if (element.tagName == "FORM") {
 


  was:
While creating eventLinks and actionLinks it is necessary to call updateZoneOnEvent to create the observe and store the zoneId in the element for future references.
The method is also checking if the zoneId exist before storing it in the element store information. While this feature is quite useful in debug mode, it is also consuming some time in production mode.
With this patch we will prevent the check while running in production mode, this improve performance in older browser like internet explorer 7.

    
> Improve javascript performance while creating zone events
> ---------------------------------------------------------
>
>                 Key: TAP5-1775
>                 URL: https://issues.apache.org/jira/browse/TAP5-1775
>             Project: Tapestry 5
>          Issue Type: Improvement
>          Components: tapestry-core
>    Affects Versions: 5.3
>            Reporter: Pedro Ayala
>              Labels: javascript, performance
>         Attachments: changes.patch
>
>
> While creating eventLinks and actionLinks it is necessary to call updateZoneOnEvent to create the observe and store the zoneId in the element for future references.
> The method is also checking if the zoneId exist before storing it in the element store information. While this feature is quite useful in debug mode, it is also consuming some time in production mode.
> With this patch we will prevent the check while running in production mode, this improve performance in older browser like internet explorer 7.
> Index: src/main/resources/org/apache/tapestry5/tapestry.js
> ===================================================================
> --- src/main/resources/org/apache/tapestry5/tapestry.js
> +++ src/main/resources/org/apache/tapestry5/tapestry.js
> @@ -1020,21 +1020,32 @@ T5.extendInitializers({
>      updateZoneOnEvent : function(eventName, element, zoneId, url) {
>          element = $(element);
>  
> -        $T(element).zoneUpdater = true;
> -
> -        var zoneElement = zoneId == '^' ? $(element).up('.t-zone')
> -            : $(zoneId);
> -
> -        if (!zoneElement) {
> -            Tapestry
> -                .error(
> -                "Could not find zone element '#{zoneId}' to update on #{eventName} of element '#{elementId}'.",
> -                {
> -                    zoneId : zoneId,
> -                    eventName : eventName,
> -                    elementId : element.id
> -                });
> -            return;
> +        var Telement = $T(element);
> +        Telement.zoneUpdater = true;
> +
> +        var destZoneId = zoneId;
> +        var zoneElement = null;
> +        if (zoneId == '^') {
> +        	zoneElement = element.up('.t-zone');
> +        	if (zoneElement)
> +        		destZoneId = zoneElement.id;
> +        }
> +        	
> +        if (Tapestry.DEBUG_ENABLED) {
> +        	if (!zoneElement && zoneId != '^')
> +        		zoneElement = $(zoneId);
> +
> +	        if (!zoneElement) {
> +	            Tapestry
> +	                .error(
> +	                "Could not find zone element '#{zoneId}' to update on #{eventName} of element '#{elementId}'.",
> +	                {
> +	                    zoneId : zoneId,
> +	                    eventName : eventName,
> +	                    elementId : element.id
> +	                });
> +	            return;
> +	        }
>          }
>  
>          /*
> @@ -1042,7 +1053,7 @@ T5.extendInitializers({
>           * changed dynamically on the client side.
>           */
>  
> -        $T(element).zoneId = zoneElement.id;
> +        Telement.zoneId = zoneId;
>  
>          if (element.tagName == "FORM") {
>  

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira