ICEfaces
  1. ICEfaces
  2. ICE-8922

Implement server-side determination of 'onElementUpdate' callback lists for each DOM update

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: EE-3.3.0.GA, 4.0.BETA, 4.0
    • Component/s: Bridge, Framework
    • Labels:
      None
    • Environment:
      ICEfaces framework, bridge
    • Assignee Priority:
      P2
    • Affects:
      Documentation (User Guide, Ref. Guide, etc.)

      Description

      Currently (3.2), when the bridge applies DOM updates it then scans all components looking for components with 'onElementUpdate' callbacks defined that are affected by the updated DOM region. This process occurs in JavaScript on the browser, and can be very expensive/slow particularly on IE7/8 browsers. This performance issue is preventing wide-scale adoption of the the onElementUpdate callback to improve JS memory cleanup in the ACE components.

      An improved implementation may be to compile a list of the components affected by a particular DOM update on the server, such that the bridge could then simply call each one's onElementUpdate callback in sequence and avoid the expensive searching through the component list on the browser. Presumably the callback list would be sent to the bridge as part of each DOM update message.

        Activity

        Hide
        Mircea Toma added a comment -

        Mark, I don't understand your last comment. The components are not notified, the elements renderer by a certain component might have their onElementUpdate callbacks invoked.

        Ted, what exactly is not clear in ancestor/child aspect? I did explain in here in my previous comment plus you can always look for more details into the code.

        Show
        Mircea Toma added a comment - Mark, I don't understand your last comment. The components are not notified, the elements renderer by a certain component might have their onElementUpdate callbacks invoked. Ted, what exactly is not clear in ancestor/child aspect? I did explain in here in my previous comment plus you can always look for more details into the code.
        Hide
        Mircea Toma added a comment -

        Test for the existence of the looked up element before trying to assign its corresponding onElementUpdate callback. If not found a warning is logged.

        Show
        Mircea Toma added a comment - Test for the existence of the looked up element before trying to assign its corresponding onElementUpdate callback. If not found a warning is logged.
        Hide
        Mircea Toma added a comment - - edited

        Modified server-side algorithm of finding elements marked as requiring onElementUpdate notification. Now the search starts from the updated elements and sends only the IDs of the marked child elements. Introduced org.icefaces.clientSideElementUpdateDetermination context parameter that can be used to switch the implementation of finding the elements with onElementUpdate callbacks to client or server side.

        org.icefaces.clientSideElementUpdateDetermination is set to false by default.

        Show
        Mircea Toma added a comment - - edited Modified server-side algorithm of finding elements marked as requiring onElementUpdate notification. Now the search starts from the updated elements and sends only the IDs of the marked child elements. Introduced org.icefaces.clientSideElementUpdateDetermination context parameter that can be used to switch the implementation of finding the elements with onElementUpdate callbacks to client or server side. org.icefaces.clientSideElementUpdateDetermination is set to false by default.
        Hide
        Mark Collette added a comment -

        ACE SubmitMonitor now supported.

        icefaces3 trunk
        Subversion 34997

        Show
        Mark Collette added a comment - ACE SubmitMonitor now supported. icefaces3 trunk Subversion 34997
        Hide
        Mark Collette added a comment -

        ICE PanelTabSet now supported.

        icefaces3 trunk
        Subversion 34998

        Show
        Mark Collette added a comment - ICE PanelTabSet now supported. icefaces3 trunk Subversion 34998

          People

          • Assignee:
            Mircea Toma
            Reporter:
            Ken Fyten
          • Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: