ICEfaces
  1. ICEfaces
  2. ICE-5522

Reduce server notifications for select traversal

    Details

    • Type: New Feature New Feature
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 1.8.2-EE-GA_P01, 1.8.3
    • Component/s: ICE-Components
    • Labels:
      None
    • Environment:
      All

      Description

      Any of the select based input components, which use onchange to do a partial submit, such as selectOneListbox, selectManyListbox and selectManyMenu, have an issue with keyboard navigation. On the one hand, a user may need to press the down arrow, in the select, to get to their desired option, somewhere down the list, and won't want to incur the latency of partial submits as they go. On the other hand, an application may wish for users to cycle through their options, updating the rest of the display as they go. So we need to differentiate between selections that are just the user flitting through, versus selections where the user wishes to remain for a bit, and only partial submit in the latter.

      We'll use the selectInputText technique of using a timer, so that multiple change events within a certain time range will result in only the last one causing a partial submit.

        Issue Links

          Activity

          Mark Collette created issue -
          Ken Fyten made changes -
          Field Original Value New Value
          Salesforce Case []
          Fix Version/s 1.8.2-EE-GA_P01 [ 10220 ]
          Fix Version/s 1.8.3 [ 10211 ]
          Assignee Priority P1
          Assignee Mark Collette [ mark.collette ]
          Mark Collette made changes -
          Link This issue blocks ICE-5489 [ ICE-5489 ]
          Mark Collette made changes -
          Salesforce Case []
          Description Any of the select based input components, which use onchange to do a partial submit, such as selectOneListbox and possibly selectOneMenu, have an issue with keyboard navigation. On the one hand, a user may need to press the down arrow, in the select, to get to their desired option, somewhere down the list, and won't want to incur the latency of partial submits as they go. On the other hand, an application may wish for users to cycle through their options, updating the rest of the display as they go. So we need to differentiate between selections that are just the user flitting through, versus selections where the user wishes to remain for a bit, and only partial submit in the latter.

          We'll use the selectInputText technique of using a timer, so that multiple change events within a certain time range will result in only the last one causing a partial submit.
          Any of the select based input components, which use onchange to do a partial submit, such as selectOneListbox, selectManyListbox and selectManyMenu, have an issue with keyboard navigation. On the one hand, a user may need to press the down arrow, in the select, to get to their desired option, somewhere down the list, and won't want to incur the latency of partial submits as they go. On the other hand, an application may wish for users to cycle through their options, updating the rest of the display as they go. So we need to differentiate between selections that are just the user flitting through, versus selections where the user wishes to remain for a bit, and only partial submit in the latter.

          We'll use the selectInputText technique of using a timer, so that multiple change events within a certain time range will result in only the last one causing a partial submit.
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #21043 Mon Mar 22 17:58:11 MDT 2010 mark.collette ICE-5522 : Reduce server notifications for select traversal
          Files Changed
          Commit graph ADD /icefaces/trunk/icefaces/bridge/lib/extras/select.js
          Commit graph MODIFY /icefaces/trunk/icefaces/component/src/com/icesoft/faces/component/ext/renderkit/MenuRenderer.java
          Commit graph MODIFY /icefaces/trunk/icefaces/component/src/com/icesoft/faces/component/ext/HtmlSelectOneListbox.java
          Commit graph MODIFY /icefaces/trunk/icefaces/component/src/com/icesoft/faces/component/ext/HtmlSelectManyMenu.java
          Commit graph MODIFY /icefaces/trunk/icefaces/component-metadata/src/main/resources/conf/ice_properties/ice-selectOneListbox-props.xml
          Commit graph ADD /icefaces/trunk/icefaces/component-metadata/src/main/resources/conf/ice_properties/ice-att-partialSubmitDelay-props.xml
          Commit graph MODIFY /icefaces/trunk/icefaces/component-metadata/src/main/resources/conf/extended-faces-config.xml
          Commit graph MODIFY /icefaces/trunk/icefaces/component-metadata/src/main/resources/conf/ice_properties/ice-selectManyListbox-props.xml
          Commit graph MODIFY /icefaces/trunk/icefaces/component-metadata/src/main/resources/conf/ice_properties/ice-selectManyMenu-props.xml
          Commit graph MODIFY /icefaces/trunk/icefaces/component/src/com/icesoft/faces/component/ext/renderkit/ListboxRenderer.java
          Commit graph MODIFY /icefaces/trunk/icefaces/bridge/build.xml
          Commit graph MODIFY /icefaces/trunk/icefaces/component/src/com/icesoft/faces/component/ext/HtmlSelectManyListbox.java
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #21044 Mon Mar 22 18:01:47 MDT 2010 mark.collette ICE-5522 : Reduce server notifications for select traversal
          Files Changed
          Commit graph MODIFY /icefaces/trunk/icefaces/component-metadata/src/main/resources/conf/ice_properties/ice-att-partialSubmitDelay-props.xml
          Hide
          Mark Collette added a comment -

          Balanced the two requirements of responsiveness and avoiding redundant partialSubmits by creating an algorithm that immediately does a partialSubmit, on an initial change of value, or on a change of value that was not preceded by another within a certain time-frame. Then, subsequent change events will use the timer method. If a second change starts up a timer, and then a third change happens while the timer is set, but has not yet rung, then the timer is canceled, and begun anew. The timer was then tuned to be 300 ms, so that the smallest perceptible user delay between change events would trigger a partialSubmit, but all changes with no delay, from an intentional desire to skip over them, would result in no partialSubmit. In this way, the default delay adds no perceptible latency, while still improving performance and reducing server load. The delay is configurable, so that applications may set it to their varying needs.

          TRUNK
          Subversion 21043
          icefaces\bridge\build.xml
          icefaces\bridge\lib\extras\select.js
          icefaces\component-metadata\src\main\resources\conf\extended-faces-config.xml
          icefaces\component-metadata\src\main\resources\conf\ice_properties\ice-att-partialSubmitDelay-props.xml
          icefaces\component-metadata\src\main\resources\conf\ice_properties\ice-selectManyListbox-props.xml
          icefaces\component-metadata\src\main\resources\conf\ice_properties\ice-selectManyMenu-props.xml
          icefaces\component-metadata\src\main\resources\conf\ice_properties\ice-selectOneListbox-props.xml
          icefaces\component\src\com\icesoft\faces\component\ext\HtmlSelectManyListbox.java
          icefaces\component\src\com\icesoft\faces\component\ext\HtmlSelectManyMenu.java
          icefaces\component\src\com\icesoft\faces\component\ext\HtmlSelectOneListbox.java
          icefaces\component\src\com\icesoft\faces\component\ext\renderkit\ListboxRenderer.java
          icefaces\component\src\com\icesoft\faces\component\ext\renderkit\MenuRenderer.java
          Subversion 21044
          icefaces\component-metadata\src\main\resources\conf\ice_properties\ice-att-partialSubmitDelay-props.xml

          icefaces-ee-1.8.2_p01
          Subversion 21045
          icefaces\bridge\build.xml
          icefaces\bridge\lib\extras\select.js
          icefaces\component-metadata\src\main\resources\conf\extended-faces-config.xml
          icefaces\component-metadata\src\main\resources\conf\ice_properties\ice-att-partialSubmitDelay-props.xml
          icefaces\component-metadata\src\main\resources\conf\ice_properties\ice-selectManyListbox-props.xml
          icefaces\component-metadata\src\main\resources\conf\ice_properties\ice-selectManyMenu-props.xml
          icefaces\component-metadata\src\main\resources\conf\ice_properties\ice-selectOneListbox-props.xml
          icefaces\component\src\com\icesoft\faces\component\ext\HtmlSelectManyListbox.java
          icefaces\component\src\com\icesoft\faces\component\ext\HtmlSelectManyMenu.java
          icefaces\component\src\com\icesoft\faces\component\ext\HtmlSelectOneListbox.java
          icefaces\component\src\com\icesoft\faces\component\ext\renderkit\ListboxRenderer.java
          icefaces\component\src\com\icesoft\faces\component\ext\renderkit\MenuRenderer.java

          Show
          Mark Collette added a comment - Balanced the two requirements of responsiveness and avoiding redundant partialSubmits by creating an algorithm that immediately does a partialSubmit, on an initial change of value, or on a change of value that was not preceded by another within a certain time-frame. Then, subsequent change events will use the timer method. If a second change starts up a timer, and then a third change happens while the timer is set, but has not yet rung, then the timer is canceled, and begun anew. The timer was then tuned to be 300 ms, so that the smallest perceptible user delay between change events would trigger a partialSubmit, but all changes with no delay, from an intentional desire to skip over them, would result in no partialSubmit. In this way, the default delay adds no perceptible latency, while still improving performance and reducing server load. The delay is configurable, so that applications may set it to their varying needs. TRUNK Subversion 21043 icefaces\bridge\build.xml icefaces\bridge\lib\extras\select.js icefaces\component-metadata\src\main\resources\conf\extended-faces-config.xml icefaces\component-metadata\src\main\resources\conf\ice_properties\ice-att-partialSubmitDelay-props.xml icefaces\component-metadata\src\main\resources\conf\ice_properties\ice-selectManyListbox-props.xml icefaces\component-metadata\src\main\resources\conf\ice_properties\ice-selectManyMenu-props.xml icefaces\component-metadata\src\main\resources\conf\ice_properties\ice-selectOneListbox-props.xml icefaces\component\src\com\icesoft\faces\component\ext\HtmlSelectManyListbox.java icefaces\component\src\com\icesoft\faces\component\ext\HtmlSelectManyMenu.java icefaces\component\src\com\icesoft\faces\component\ext\HtmlSelectOneListbox.java icefaces\component\src\com\icesoft\faces\component\ext\renderkit\ListboxRenderer.java icefaces\component\src\com\icesoft\faces\component\ext\renderkit\MenuRenderer.java Subversion 21044 icefaces\component-metadata\src\main\resources\conf\ice_properties\ice-att-partialSubmitDelay-props.xml icefaces-ee-1.8.2_p01 Subversion 21045 icefaces\bridge\build.xml icefaces\bridge\lib\extras\select.js icefaces\component-metadata\src\main\resources\conf\extended-faces-config.xml icefaces\component-metadata\src\main\resources\conf\ice_properties\ice-att-partialSubmitDelay-props.xml icefaces\component-metadata\src\main\resources\conf\ice_properties\ice-selectManyListbox-props.xml icefaces\component-metadata\src\main\resources\conf\ice_properties\ice-selectManyMenu-props.xml icefaces\component-metadata\src\main\resources\conf\ice_properties\ice-selectOneListbox-props.xml icefaces\component\src\com\icesoft\faces\component\ext\HtmlSelectManyListbox.java icefaces\component\src\com\icesoft\faces\component\ext\HtmlSelectManyMenu.java icefaces\component\src\com\icesoft\faces\component\ext\HtmlSelectOneListbox.java icefaces\component\src\com\icesoft\faces\component\ext\renderkit\ListboxRenderer.java icefaces\component\src\com\icesoft\faces\component\ext\renderkit\MenuRenderer.java
          Mark Collette made changes -
          Status Open [ 1 ] Resolved [ 5 ]
          Resolution Fixed [ 1 ]
          Tyler Johnson made changes -
          Link This issue blocks ICE-5629 [ ICE-5629 ]
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #21300 Fri Apr 23 11:59:13 MDT 2010 mark.collette ICE-5658 : ICE-5522 doesn't work in IE8
          Files Changed
          Commit graph MODIFY /icefaces/trunk/icefaces/bridge/lib/extras/select.js
          Mark Collette made changes -
          Link This issue blocks ICE-5658 [ ICE-5658 ]
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #21304 Fri Apr 23 16:48:31 MDT 2010 mark.collette ICE-5629 : Add ICE-5522 to selectOneMenu component
          Files Changed
          Commit graph MODIFY /icefaces/trunk/icefaces/component/src/com/icesoft/faces/component/ext/renderkit/MenuRenderer.java
          Commit graph MODIFY /icefaces/trunk/icefaces/component-metadata/src/main/resources/conf/ice_properties/ice-selectOneMenu-props.xml
          Commit graph MODIFY /icefaces/trunk/icefaces/component/src/com/icesoft/faces/component/ext/HtmlSelectOneMenu.java
          Ken Fyten made changes -
          Status Resolved [ 5 ] Closed [ 6 ]
          Assignee Priority P1
          Assignee Mark Collette [ mark.collette ]

            People

            • Assignee:
              Unassigned
              Reporter:
              Mark Collette
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: