Interactive Sale Report
Sale Report is built upon interactive PivotMatrix allowing you to custom dimension fields or measurement field.
PivotMatrix
is an awesome widget to let users construct their own pivot by customizing fields with drag and drop.
<?php
require_once "CustomersYears.php";
$CustomersYears = new CustomersYears;
$CustomersYears->run()->render();
?>
<?php
require_once "../../../load.koolreport.php";
use \koolreport\processes\Filter;
use \koolreport\processes\ColumnMeta;
use \koolreport\pivot\processes\Pivot;
class CustomersYears extends koolreport\KoolReport
{
function settings()
{
return array(
"dataSources" => array(
"dollarsales"=>array(
'filePath' => '../../../databases/customer_product_dollarsales2.csv',
'fieldSeparator' => ';',
'class' => "\koolreport\datasources\CSVDataSource"
),
)
);
}
function setup()
{
$this->src('dollarsales')
->pipe(new Filter(array(
array('customerName', 'startsWith', 'a'),
array('orderDate', '>', 2003),
)))
->pipe(new ColumnMeta(array(
"dollar_sales"=>array(
'type' => 'number',
"prefix" => "$",
),
)))
->pipe(new Pivot(array(
"dimensions"=>array(
"column" => "orderYear",
"row" => "customerName, productLine, productName",
),
"aggregates"=>array(
"sum"=>"dollar_sales",
"count"=>"dollar_sales"
)
)))
->pipe($this->dataStore('sales'));
}
}
<?php
use \koolreport\pivot\widgets\PivotMatrix;
use \koolreport\core\Utility;
use \koolreport\processes\Filter;
use \koolreport\processes\ColumnMeta;
use \koolreport\pivot\processes\Pivot;
use \koolreport\instant\Widget;
use \koolreport\datasources\CSVDataSource;
?>
<div class="report-content">
<div class="text-center">
<h1>Interactive Sale Report</h1>
<p class="lead">Sale Report is built upon interactive PivotMatrix allowing you
to custom dimension fields or measurement field.
</p>
</div>
<form id='form1' class="form-inline" method="post">
<?php
PivotMatrix::create(array(
"id" => "pivotMatrix1",
'dataSource' => $this->dataStore('sales'),
"measures"=>array(
"dollar_sales - sum",
),
'rowSort' => array(
'dollar_sales - sum' => 'desc',
'productLine' => 'desc',
),
'columnSort' => array(
'orderMonth' => function($a, $b) {
return (int)$a < (int)$b;
},
),
'columnCollapseLevels' => array(0),
'rowCollapseLevels' => array(0),
'width' => '100%',
'height' => '500px',
'headerMap' => function($v, $f) {
switch ($v) {
case 'dollar_sales - sum': return 'Total Sales';
case 'dollar_sales - count': return 'Number of Sales';
case 'dollar_sales - avg': return 'Average Sales';
case 'orderYear': return 'Year';
case 'orderMonth': return 'Month';
case 'orderDay': return 'Day';
case 'customerName': return 'Customer';
case 'productLine': return 'Category';
case 'productName': return 'Product';
}
$r = $v;
if ($f === 'orderYear')
$r = 'Year ' . $v;
$map = array(
'1' => 'January',
'2' => 'February',
'3' => 'March',
'4' => 'April',
'5' => 'May',
'6' => 'June',
'7' => 'July',
'8' => 'August',
'9' => 'September',
'10' => 'October',
'11' => 'November',
'12' => 'December',
);
if ($f === 'orderMonth')
$r = $map[$v];
return $r;
},
'totalName' => 'All',
'waitingFields' => array(
'dollar_sales - count' => 'data',
'orderMonth' => 'label',
'orderDay' => 'label',
),
'paging' => array(
'size' => 5,
'maxDisplayedPages' => 5,
'sizeSelect' => array(5, 10, 20, 50, 100)
)
));
?>
</form>
</div>
customerName | productName | productLine | orderDate | orderDay | orderMonth | orderYear | orderQuarter | dollar_sales |
---|---|---|---|---|---|---|---|---|
Vitachrome Inc. | 1937 Lincoln Berline | Vintage Cars | 2003-01-10 00:00:00 | 10 | 1 | 2003 | 1 | 3726.45 |
Vitachrome Inc. | 1936 Mercedes-Benz 500K Special Roadster | Vintage Cars | 2003-01-10 00:00:00 | 10 | 1 | 2003 | 1 | 1768.33 |
Baane Mini Imports | 1952 Alpine Renault 1300 | Classic Cars | 2003-01-29 00:00:00 | 29 | 1 | 2003 | 1 | 5571.8 |
Baane Mini Imports | 1962 LanciaA Delta 16V | Classic Cars | 2003-01-29 00:00:00 | 29 | 1 | 2003 | 1 | 5026.14 |
Baane Mini Imports | 1958 Setra Bus | Trucks and Buses | 2003-01-29 00:00:00 | 29 | 1 | 2003 | 1 | 3284.28 |
Baane Mini Imports | 1940 Ford Pickup Truck | Trucks and Buses | 2003-01-29 00:00:00 | 29 | 1 | 2003 | 1 | 3307.5 |
Baane Mini Imports | 1926 Ford Fire Engine | Trucks and Buses | 2003-01-29 00:00:00 | 29 | 1 | 2003 | 1 | 1283.48 |
Baane Mini Imports | 1913 Ford Model T Speedster | Vintage Cars | 2003-01-29 00:00:00 | 29 | 1 | 2003 | 1 | 2489.13 |
Baane Mini Imports | 1934 Ford V8 Coupe | Vintage Cars | 2003-01-29 00:00:00 | 29 | 1 | 2003 | 1 | 2164.4 |
Baane Mini Imports | 18th Century Vintage Horse Carriage | Vintage Cars | 2003-01-29 00:00:00 | 29 | 1 | 2003 | 1 | 2173 |
What People Are Saying
"KoolReport helps me very much in creating data report for my corporate! Keep up your good work!"
--
Alain Melsens
"The first use of your product. I was impressed by its easiness and powerfulness. This product is a great and amazing."
--
Dr. Lew Choy Onn
"Fantastic framework for reporting!"
--
Greg Schneider