The example demonstrates usage of Transpose
process. As the name suggested, Transpose process turn the table 90 degree, making row to column and vice versa. The new column will be named from c0
, c1
to cn
.
If you want to rename column, you may use process ColumnRename
->pipe(new Transpose())
->pipe(new ColumnRename(array(
"c0"=>"name"
"c1"=>"contribution"
)))
<?php
require_once "MyReport.php";
$report = new MyReport;
$report->run()->render();
<?php
require_once "../../../load.koolreport.php";
use \koolreport\processes\ColumnMeta;
use \koolreport\processes\Transpose;
class MyReport extends \koolreport\KoolReport
{
protected function settings()
{
return array(
"dataSources"=>array(
"data"=>array(
"class"=>'\koolreport\datasources\ArrayDataSource',
"dataFormat"=>"table",
"data"=>array(
array("Peter","David","John"),
array(5000,3000,4000),
)
)
)
);
}
protected function setup()
{
$this->src("data")
->pipe(new ColumnMeta(array(
"income"=>array(
"type"=>"number",
"prefix"=>"$"
)
)))
->saveTo($source);
$source->pipe($this->dataStore("origin"));
$source->pipe(new Transpose())
->pipe($this->dataStore("result"));
}
}
<?php
use \koolreport\widgets\koolphp\Table;
use \koolreport\widgets\google\PieChart;
?>
<div class="report-content">
<div class="text-center">
<h1>Transpose Process</h1>
<p class="lead">This example shows the usage of Transpose process</p>
</div>
<?php
Table::create(array(
"dataSource"=>$this->dataStore("origin"),
"cssClass"=>array(
"table"=>"table-bordered table-striped table-hover"
)
));
?>
<i class="fa fa-arrow-down" style="font-size:24px;"></i>
<pre style="font-weight:bold"><code>
->pipe(new Transpose())
</code></pre>
<i class="fa fa-arrow-down" style="font-size:24px;"></i>
<div style="margin-top:20px;">
<div class="row">
<div class="col-md-6">
<?php
Table::create(array(
"dataSource"=>$this->dataStore("result"),
"cssClass"=>array(
"table"=>"table-bordered table-striped table-hover"
)
));
?>
</div>
<div class="col-md-6">
<?php
PieChart::create(array(
"dataSource"=>$this->dataStore("result"),
"columns"=>array("c0","c1"),
"options"=>array(
"legend"=>array(
"position"=>"right"
),
"chartArea"=>array(
"top"=>10,
"left"=>0,
"right"=>0
)
)
));
?>
</div>
</div>
</div>
</div>