You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by "Howard M. Lewis Ship (JIRA)" <ji...@apache.org> on 2011/06/04 01:56:47 UTC
[jira] [Commented] (TAP5-1539) Optimize client-side
FieldEventManager initialization in IE 7
[ https://issues.apache.org/jira/browse/TAP5-1539?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13044141#comment-13044141 ]
Howard M. Lewis Ship commented on TAP5-1539:
--------------------------------------------
I appreciate the patch, but it's only useful as an attachment, not inline. It gets too corrupted by being translated to HTML by Jira.
> Optimize client-side FieldEventManager initialization in IE 7
> -------------------------------------------------------------
>
> Key: TAP5-1539
> URL: https://issues.apache.org/jira/browse/TAP5-1539
> Project: Tapestry 5
> Issue Type: Improvement
> Components: tapestry-core
> Affects Versions: 5.3, 5.2.4
> Reporter: Pedro Ayala
> Assignee: Howard M. Lewis Ship
>
> While creating the Field Event Manager we are initializing not only the basic features but also extra information for being use later, like label and icon.
> For getting the icon we need to search for the element in the DOM (using a $) and for the label it is searching the DOM for a specific label, which is a very expensive operation in ie7.
> If we move the initialization of these elements until they are really needed, we are saving some client side timing.
> ### Eclipse Workspace Patch 1.0
> #P tapestry-core
> Index: src/main/resources/org/apache/tapestry5/tapestry.js
> ===================================================================
> --- src/main/resources/org/apache/tapestry5/tapestry.js (revision 1131061)
> +++ src/main/resources/org/apache/tapestry5/tapestry.js (working copy)
> @@ -1667,13 +1667,6 @@
> initialize : function(field) {
> this.field = $(field);
>
> - var id = this.field.id;
> -
> - var selector = "label[for='" + id + "']";
> -
> - this.label = this.field.up("form").down(selector);
> - this.icon = $(id + '_icon');
> -
> this.translator = Prototype.K;
>
> var fem = $(this.field.form).getFormEventManager();
> @@ -1698,7 +1691,24 @@
> this.validateInput.bindAsEventListener(this));
> }
> },
> +
> + getLabel : function() {
> + if (!this.label) {
> + var id = this.field.id;
> + var selector = "label[for='" + id + "']";
> + this.label = this.field.form.down(selector);
> + }
> + return this.label;
> + },
>
> + getIcon : function() {
> + if (!this.icon) {
> + var id = this.field.id;
> + this.icon = $(id + '_icon');
> + }
> + return this.icon;
> + },
> +
> /**
> * Removes validation decorations if present. Hides the ErrorPopup, if it
> * exists.
> @@ -1706,11 +1716,11 @@
> removeDecorations : function() {
> this.field.removeClassName("t-error");
>
> - if (this.label)
> - this.label.removeClassName("t-error");
> + if (this.getLabel())
> + this.getLabel().removeClassName("t-error");
>
> - if (this.icon)
> - this.icon.hide();
> + if (this.getIcon())
> + this.getIcon().hide();
>
> if (this.errorPopup)
> this.errorPopup.hide();
> @@ -1730,12 +1740,12 @@
>
> this.field.addClassName("t-error");
>
> - if (this.label)
> - this.label.addClassName("t-error");
> + if (this.getLabel())
> + this.getLabel().addClassName("t-error");
>
> - if (this.icon) {
> - if (!this.icon.visible())
> - new Effect.Appear(this.icon);
> + if (this.getIcon()) {
> + if (!this.getIcon().visible())
> + new Effect.Appear(this.getIcon());
> }
>
> if (this.errorPopup == undefined)
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira