Details
-
Type: New Feature
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: EE-1.8.2.GA_P03
-
Fix Version/s: 3.0, EE-1.8.2.GA_P04
-
Component/s: ACE-Components, ICE-Components
-
Labels:None
-
Environment:ICEfaces 3, ice:dataTable component
-
Assignee Priority:P2
-
Affects:Documentation (User Guide, Ref. Guide, etc.), Sample App./Tutorial
Description
It would be a useful addition to the ice:dataTable component if application developers could implement a Find function that would search for a matching substring within a set of specified columns to include in the search. Upon finding the first match, the dataTable would navigate to ensure that row was visible on the screen, and use an effect to highlight the matching row.
It would be the responsibility of the application to provide the search string and trigger the find operation via new APIs on the dataTable component. This approach provides the maximum flexibility for applications in terms of how the find text is acquired from the user, etc.
In order to provide a Search/Find capability to the ace:dataTable, we need to add new component APIs as described below:
double findRow(String str, Array columns, double startRow)
The findRow API will accept a String argument ("str") to locate within the specified dataTable "columns". An optional startRow argument can be specified to begin searching at a specific row number (this enables a "Find Next" type functionality). The return value for this API is the first row number that has a column string value that matches the str argument value anywhere in the string. If no match is found, -1 is returned.
Also might make sense to make the actual match condition a config. parameter in the findRow api. Possible settings would be Anywhere in String, StartsWith, endsWith.
void navigateToRow( double row, EffectQueue highlightEffect)
The navigateToRow API will accept a row number to navigate the datatable to such that the specified row number is made visible in the datatable, either via pagination to the page that contains the specified row, or via scrolling a scrollable datatable until the specified row is within the visible region on the page. An optional highlightEffect type may be specified that will be applied to the row once it is visible to draw the user's attention to the row.
It would be the responsibility of the application to provide the search string and trigger the find operation via new APIs on the dataTable component. This approach provides the maximum flexibility for applications in terms of how the find text is acquired from the user, etc.
In order to provide a Search/Find capability to the ace:dataTable, we need to add new component APIs as described below:
double findRow(String str, Array columns, double startRow)
The findRow API will accept a String argument ("str") to locate within the specified dataTable "columns". An optional startRow argument can be specified to begin searching at a specific row number (this enables a "Find Next" type functionality). The return value for this API is the first row number that has a column string value that matches the str argument value anywhere in the string. If no match is found, -1 is returned.
Also might make sense to make the actual match condition a config. parameter in the findRow api. Possible settings would be Anywhere in String, StartsWith, endsWith.
void navigateToRow( double row, EffectQueue highlightEffect)
The navigateToRow API will accept a row number to navigate the datatable to such that the specified row number is made visible in the datatable, either via pagination to the page that contains the specified row, or via scrolling a scrollable datatable until the specified row is within the visible region on the page. An optional highlightEffect type may be specified that will be applied to the row once it is visible to draw the user's attention to the row.
Revision #27328
ICE-7678- Added findRow and navigateToRow.Added to icefaces/trunk. Forthcoming to IF 3.