ICEfaces
  1. ICEfaces
  2. ICE-7008

Support user-specified Data Filtering on ace:dataTable

    Details

    • Type: New Feature New Feature
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.1-Beta, 3.0
    • Component/s: ACE-Components
    • Labels:
      None
    • Environment:
      ICEfaces 2.1, ace:dataTable
    • Assignee Priority:
      P2
    • Affects:
      Documentation (User Guide, Ref. Guide, etc.), Sample App./Tutorial

      Description

      Add  optional  support  for  user-specified  filtering  of  visible  ace:dataTable  rows. This feature is enabled with the ace:column "filterBy" attribute. Data filters can be user-specified as follows:

      - text-entry  field:  text-­‐entry  field  at  bottom  of  column  header  region
           1. User  types  characters  into  text-­‐field,  presses  the  "Enter"  key to  initiate  filter  operation.
           2. Filter  criteria  is  submitted  to  server  for  processing via ajax-submit
           3. Server-side data-filtering is performed via a data-filter handler. Included is a Java-based  "Match  text  anywhere  in  string"  algorithm (included with component),  or  via  deferral  to  a  data  provider  (db  query based  implementation).  

      - Client-­‐side  filtering  is  NOT  required  (would  only  work  against   subset  of  data  currently  rendered  to  client).

        Issue Links

          Activity

          Ken Fyten created issue -
          Ken Fyten made changes -
          Field Original Value New Value
          Salesforce Case []
          Fix Version/s 2.1 [ 10241 ]
          Affects [Documentation (User Guide, Ref. Guide, etc.), Sample App./Tutorial]
          Assignee Ken Fyten [ ken.fyten ]
          Ken Fyten made changes -
          Link This issue blocks ICE-6997 [ ICE-6997 ]
          Ken Fyten made changes -
          Link This issue blocks ICE-7013 [ ICE-7013 ]
          Ken Fyten made changes -
          Salesforce Case []
          Assignee Priority P2
          Assignee Ken Fyten [ ken.fyten ] Nils Lundquist [ nils.lundquist ]
          Nils Lundquist made changes -
          Status Open [ 1 ] Resolved [ 5 ]
          Fix Version/s 2.1-Beta [ 10291 ]
          Fix Version/s 2.1 [ 10241 ]
          Resolution Fixed [ 1 ]
          Ken Fyten made changes -
          Salesforce Case []
          Security Private [ 10001 ]
          Hide
          Nils Lundquist added a comment -

          Added TableFilterEvent and FilterListener field to table.
          TableFilterEvent provides the column that filtering occurred for, and the list of row data post-filtering.

          Show
          Nils Lundquist added a comment - Added TableFilterEvent and FilterListener field to table. TableFilterEvent provides the column that filtering occurred for, and the list of row data post-filtering.
          Hide
          Nils Lundquist added a comment -

          Moved the filterEvent property from the column to the data table. Seemed foolish to allow inconsistent behaviour per-filter.

          Added 'enter' (submit on enter key) and 'change' (400ms delay following last keypress submit) filterEvent options.

          Show
          Nils Lundquist added a comment - Moved the filterEvent property from the column to the data table. Seemed foolish to allow inconsistent behaviour per-filter. Added 'enter' (submit on enter key) and 'change' (400ms delay following last keypress submit) filterEvent options.
          Hide
          Nils Lundquist added a comment -

          This feature recently encountered issues related to the removal of custom update. It resulted in the header being subject to updates which caused the focus of the browser to be reapplied to the component making the submit. However, the input field making the submit has just been updated due to the submission of the value within it. The result is a correct tab index, but the text entry caret being unset in the field.

          To correct this I'd added code in the filter request onsuccess event, that would reset the value in the input with the value given during the submit. This value reset worked in all browser but Firefox.

          To ultimately get the correct behavior I combined a jQuery approach I'd found that worked correctly for Webkit, with one from a toolkit for jQuery called a-tools that gave alot of effort towards compatibility between IE and Mozilla.

          Show
          Nils Lundquist added a comment - This feature recently encountered issues related to the removal of custom update. It resulted in the header being subject to updates which caused the focus of the browser to be reapplied to the component making the submit. However, the input field making the submit has just been updated due to the submission of the value within it. The result is a correct tab index, but the text entry caret being unset in the field. To correct this I'd added code in the filter request onsuccess event, that would reset the value in the input with the value given during the submit. This value reset worked in all browser but Firefox. To ultimately get the correct behavior I combined a jQuery approach I'd found that worked correctly for Webkit, with one from a toolkit for jQuery called a-tools that gave alot of effort towards compatibility between IE and Mozilla.
          Hide
          Nils Lundquist added a comment -

          Filtering had been refactored to use a filterValueChanged boolean to track when refiltering should occur.

          filterValueChanged is initialized to true to allow the table to process on load a filter from a previous session. When this functionality isn't desired, the true value causes a filter process on null filter values. This was a special case caught by the filter processing, however it refrained from setting filterValueChanged to false like it should. The result was a constantRefilter like effect where filterValueChanged was always true, until the first non-null filtering was applied.

          Corrected handling of filterValueChanged has been added, fixing the above issue.

          Show
          Nils Lundquist added a comment - Filtering had been refactored to use a filterValueChanged boolean to track when refiltering should occur. filterValueChanged is initialized to true to allow the table to process on load a filter from a previous session. When this functionality isn't desired, the true value causes a filter process on null filter values. This was a special case caught by the filter processing, however it refrained from setting filterValueChanged to false like it should. The result was a constantRefilter like effect where filterValueChanged was always true, until the first non-null filtering was applied. Corrected handling of filterValueChanged has been added, fixing the above issue.
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #26733 Sun Dec 04 13:46:21 MST 2011 nils.lundquist ICE-7008 - Fixed filter + enter key double submit.
          Files Changed
          Commit graph MODIFY /icefaces3/trunk/icefaces/ace/component/resources/icefaces.ace/datatable/datatable.js
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #26739 Mon Dec 05 09:53:18 MST 2011 nils.lundquist ICE-7008 - Support null cell-values when filtering.
          Files Changed
          Commit graph MODIFY /icefaces3/trunk/icefaces/ace/component/src/org/icefaces/ace/util/collections/PropertyConstraintPredicate.java
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #26818 Sun Dec 11 20:59:40 MST 2011 nils.lundquist ICE-7008 - Fix for filtering in IE browsers. JS references were stale in IE browsers, solution was to search the fresh elements in the dom referenced by the stale ID.
          Files Changed
          Commit graph MODIFY /icefaces3/trunk/icefaces/ace/component/resources/icefaces.ace/datatable/datatable.js
          Ken Fyten made changes -
          Fix Version/s 3.0 [ 10241 ]
          Ken Fyten made changes -
          Status Resolved [ 5 ] Closed [ 6 ]

            People

            • Assignee:
              Nils Lundquist
              Reporter:
              Ken Fyten
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: