--
JoaoCarreira - 22 Dec 2009
Menu Counter
The component
xeo:MenuCounter allows adding counters to the
TreePanel entires (think unread messages in outlook). This component extends the xvw:menu component.
Declaration
<xeo:menuCounter ... >
Properties
Property |
Type |
Description |
Possible Values |
Usage |
Example |
id |
string |
Component Id |
String (valid Java variable name) |
Required |
Default auto-generated |
boql |
string / EL |
BOQL to give the count. Eg. select Ebo_Perf where active='1' |
BOQL expression |
Optional |
|
sql |
string / EL |
SQL to give the count. Eg: select count(*) from OEbo_Perf |
SQL expression |
Optional |
|
counterValue |
string / EL |
Value to put in the counter, if the couter result is a bean property, or a fix value |
Any integer |
Optional |
|
counterMask |
string |
Value Presentation Mask: Eg: <b style='color:red'>%s</b> Where %s is replaced by the counter value. |
|
Optional |
|
updateInterval |
string |
Time in seconds between each update |
Any integer |
Optional |
|
Observations
The component to retrieve the counter value uses the following processing order:
- Checks if the counterValue has value.
- Checks if the boql property has a value.
- Checks if the sql property has a value
- Checks if the value has a JSON Object, and if it has the boql property.
Childs Elements
NO
Examples
Declaring a MenuCounter in a viewer:
<xvw:viewer (...)>
<xvw:treePanel renderComponent='false' id='tree'>
<xeo:menuCounter
id='testCounter'
boql="select MyObject"
updateInterval='60'
text='My Object'
value="{viewerName:'viewers/MyObject/list.xvw', boql:'select MyObject'}"
target='Tab'
serverAction="#{viewBean.listObject}"
/>
</xvw:treePanel>
(...)
In the previous example as the property "counterValue" is not set, the value for the counter will be retrieved by counting the results of the boql expression.
How to update a counter programatically (in a Bean action):
// Update a specific counter (using its client id)
public void updateCounter() {
MenuCounter.updateClientCounter( "formId:menuCounterId" );
}
//Update all counters
public void updateAllCounter() {
MenuCounter.updateClientCounters();
}