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

          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

            People

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

              Dates

              • Created:
                Updated:
                Resolved: