Tapestry 5
  1. Tapestry 5
  2. TAP5-1539

Optimize document scans used by Tapestry.FieldEventManager to not locate the label or icon until actually needed

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 5.3, 5.2.4
    • Fix Version/s: 5.3, 5.2.6
    • Component/s: tapestry-core
    • Labels:

      Description

      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.

          1. 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()

            Unknown macro: {+ 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)

        Activity

        Pedro Ayala created issue -
        Howard M. Lewis Ship made changes -
        Field Original Value New Value
        Assignee Howard M. Lewis Ship [ hlship ]
        Howard M. Lewis Ship made changes -
        Status Open [ 1 ] In Progress [ 3 ]
        Howard M. Lewis Ship made changes -
        Summary Optimize client-side FieldEventManager initialization in IE 7 Optimize document scans used by Tapestry.FieldEventManager to not locate the label or icon until actually needed
        Labels ie perfomance
        Howard M. Lewis Ship made changes -
        Status In Progress [ 3 ] Closed [ 6 ]
        Fix Version/s 5.3.0 [ 12316023 ]
        Resolution Fixed [ 1 ]
        Howard M. Lewis Ship made changes -
        Resolution Fixed [ 1 ]
        Status Closed [ 6 ] Reopened [ 4 ]
        Howard M. Lewis Ship made changes -
        Status Reopened [ 4 ] Closed [ 6 ]
        Fix Version/s 5.2.6 [ 12316674 ]
        Resolution Fixed [ 1 ]
        Howard M. Lewis Ship made changes -
        Fix Version/s 5.3 [ 12316024 ]
        Fix Version/s 5.3.0 [ 12316023 ]

          People

          • Assignee:
            Howard M. Lewis Ship
            Reporter:
            Pedro Ayala
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development