Aggregate plug-in for TinyButStrong
by Skrol29, 2006-07-25
version 1.0.0
This plug-in can provide several types of aggregate
calculations when a block is merged. It can do Sum, Min, Max, Average, Count, Accumulated values and Changed values.
Note: The current version cannot deal with header or footer sections, calculations are made over all records of the block, without rupture (this will perhaps be given by a next version).
PHP side:
Requirements:
Include the file 'tbs_plugin_aggregate.php'.
This plug-in requires TBS version 3.1 or higher.
Installation mode:
Automatic when included before the creation of the TBS variable.
If you include the plug-in file after the creation of the TBS variable, you should force the installation by using the following command:
$TBS->PlugIn(TBS_INSTALL,TBS_AGGREGATE);
Command syntax: (no command)
Miscellaneous:
The last aggregate calculations are stored into a property of the TBS instance. This property is named Aggregate and its type is Array. Example:
include_once('tbs_plugin_aggregate.php');
$TBS = new clsTinyButStrong;
$TBS->MergeBlock('b',$data);
$sum = $TBS->Aggregate['price:sum'];
Template side:
1st step: Define calculations
Use parameter
aggregate to declare all computed columns you'd like to use. The name of a computed column is
columnX:operationX where
columnX is the name of the original column used for the calculation, and
operationX is the keyword of the operation (see the list below)
Example:
If you want to calculate the sum over column1, then add parameter "aggregate=column1:sum".
If you want to calculate several operations, then add "aggregate=column1:sum,column2:sum,..."
Note: Parameter
aggregate is a block parameter, you have to place it in the same TBS tag as the one containing "
block=...". Example:
[b.product;block=tr;aggregate=sum:price]
Tip: If you have many computed columns and your tag become very long, you can use parameter
comm to embed the TBS tag into a HTML comment. See parameter
comm in the manual for more information.
2nd step: Display computed values
The computed columns are added in the dataset. You can display them like any other columns
Example:
[column1:sum;frm='0,000.00']
Note:
Some columns are available during the merge (like Acc and Chg), you can display their values by placing a TBS field inside the block. Some other columns are available only after the merge (like Sum, Min, Max,...), you can display their values by placing a TBS field only outside the block, otherwise a TBS error will raise. (see le list below).
| Operation |
Description |
Placement of the TBS tag |
inside the block |
outside the block |
| sum |
Sum of non null values |
|
• |
| avg |
Average of non null values |
|
• |
| min |
Min of non null values |
|
• |
| max |
Maximum of non null values |
|
• |
| count |
Number of records with a non null value |
|
• |
| acc |
Accumulated values |
• |
• |
| chg |
Values if changed, otherwise display '' |
• |
• |
Example:
| Product |
Price |
| [b.product;aggregate=price:sum] |
[b.price] |
| Total: |
[b.price:sum] |
The field [b.price:sum] is on a computed column, this one must be placed outside the block (outise the <tr> here).