Table Filter
Table Filter
1
Table Filter...................................................................................................................1
Filtering capabilities:...................................................................................................2
Quick Steps for default implementation:.........................................................................2
Step 1: Add TableFilter...............................................................................................2
Step 2: Create Nodes...................................................................................................3
Step 3: Associate Filter to Column..............................................................................4
Step 4: Create Table Filter in Context View...............................................................4
Step 5: Create filter Action..........................................................................................6
Step 6: Code Filter Action...........................................................................................6
Step 7: Code wdDoModifyView.................................................................................7
Step 8: Add explanation:.............................................................................................7
Remarks about Table Filter default implementation.......................................................8
Table Filter does not update the all data node :...........................................................8
Dynamic table..............................................................................................................8
What the Table Filter does not work for......................................................................9
Improving the default implementation............................................................................9
Filtering Icons..............................................................................................................9
Filtering Drop down:.................................................................................................11
Updating the all data node from the table node.........................................................12
Tips & Trick:.............................................................................................................13
Table Filter
Table Filter
The TableFilter is a java class. It filters the column of a table according the filter value
located at the top of a column. It can be implemented in few steps.
1
Here is an example of filtering using the TableFilter java class:
When the TableFilter’s filter action is triggered, the filter method passes two nodes. The
first node contains all the data and the table’s node, the node that show the data. The
TableFilter populates the table node from the all data node according the filter values.
Filtering is done for each filter value of each column , only the row matching all the
filters are shown.
Filtering capabilities:
The table filter has the following capabilities:
Strings : if the filter value is a “a” it returns any fields that as a “a” , what ever is the
position of the a in the string and does not makes difference between upper case and
lower case. It also accepts the # (exclude) or (=) include sign in first position.
Numeric values , dates, times: It filter for the exact value, a range(~) , include(=) ,
exclude(#) sign. The include or exclude sign should be in first position.
For range “~100”, gives the values up to 100 included;”1~100” gives all values between
1 and 100 , 1 and 100 included;” 100~” gives all the values about 100 , 100 included
Boolean values: Booleans can be filter using include (=) or exclude (#).
Icons: Icons can be filtered according there legend. Legend is language dependant.
Icons legend can be shown as a tool tip of the icon.
2
Step 2: Create Nodes
The filter table needs 3 nodes (see figure below) One table node, on filter node, one all
data node. All these nodes should be under the root node context. The All data node that
contains always all the data , it is called in the figure below “sourceNode” . The
“FilterNode” contains the filter values. The attributes of the SourceNode & TableNode
are identical. They have the same attribute names; and the attributes with the same name
are of the same type. The Filter node is of cardinality 1,1 and contains the values of the
filter , one attribute per column you want to filter. All the filter attributes are of type
string.
3
Step 3: Associate Filter to Column
Each column that you want to filter must have a filter.
4
Then select button Java Native Type & Browse button:
5
Step 5: Create filter Action
Go to the Actions tab and create an action with the name filter.
Go to the implementation tab and under the onActionFilter() put the following code:
public void
onActionfilter(com.sap.tc.webdynpro.progmodel.api.IWDCustomEvent wdEvent
)
{
//@@begin onActionfilter(ServerEvent)
wdContext.currentContextElement().getTableFilter().filter(wdContext.node
Source(), wdContext.nodeTable(),null);
//@@end
}
6
Step 7: Code wdDoModifyView
Switch to the method wdDoModifyView and enter the following source code:
public static void wdDoModifyView(IPrivateTableFilterCV wdThis,
IPrivateTableFilterCV.IContextNode wdContext,
com.sap.tc.webdynpro.progmodel.api.IWDView view, boolean firstTime)
{
//@@begin wdDoModifyView
if (firstTime ) {
//@@end
}
At the first time wdDoModifyView initialize the table filter. The constructor of the table
filter for each column finds the associated filter and the needed comparator to perform
the column filtering.
7
The text could be like this:
Character fields are filtered for any character in the field, include =, exclude #. Numeric ,
Date fields can be filtered for exact value, range ~ , exclude #. Check boxes can be
filtered for include = or exclude #. Icon by legend.
The Source Node (all data) and the Table Node should be under the root context.
If you want the table node to update the source node, see paragraph “Enhancing the
default implementation if the all data node needs to be update from the table node.”
8
Dynamic table
If the number of columns of a table changes during a application session, for example a
table that has it columns built dynamically and changed during the session, the table
filter as to be recreated , so we can put a extra condition to recreate the Table Filter.
For example now we look also at a ToRefresh flag and the code becomes:
boolean b= wdContext.currentContextElement().getToRefresh();
if (firstTime |b ) {
IWDTable table = (IWDTable) view.getElement("Table_1");
wdContext.currentContextElement().setTableFilter(
new TableFilter(table, wdThis.wdGetFilterAction(),
null));
wdContext.currentContextElement().setToRefresh(false);
}
9
new TableFilter(table, wdThis.wdGetFilterAction(),
(IWDNode)wdContext.nodeSource(),hash));
}
10
Warning : never make a column legendIcon in the table. The reason is that at
initialization of the TableFilter will automatically associate the legendIcon column with
the legendIcon attribute. The icon mapping given by the hashtable will be disregarded.
11
Updating the all data node from the table node.
If the table has be updated or if some rows have been added or deleted. The All data node
needs to be updated from the table node. TableFilter has currently two methods that are
doing that. To update the AllDataNode from the table node , each method has to know
what attribute is the unique identifier of the element (this identifier cannot be the element
index)
String attributeRowId : is the attribute name that uniquely identify the rowed, this
attribute is of type String.
Boolean addRowonFly : if a row has been added in the table not only the updated
existing row will be updated in AllDataNode but if a row has been created, if the falg is
set to true a new element is created in the AllDataNode.
12
public void deleteAllDataNodeElement(IWDNode sourceNode, IWDNode
targetNode, String attributeRowId, ArrayList idsToDelete)
String attributeRowId : is the attribute name that uniquely identify the row, this attribute
is of type String.
ArrayList idsToDelete: contains a list of the unique row identifier to
delete.
13