January 27, 2018
We have just released the Instant 2.0.0 with new features: Report Settings and new Exporter class. The Instant package is Free
to download and also be available in the KoolReport Pro 2.32.7.
Report Settings
As you may know that Instant
package helps us to use Widget
of KoolReport instantly without setting up a whole report. You can use the Widget like Table or Chart in right in your php file. However, due to not setting up report, the resources of Widget may not able to publish to assets
or public location which they can be accessed. In this new version, we allow Widget::create
function to receive the third parameter which is the settings of temporary report. This feature is extremely important if you are using modern MVC frameworks like Laravel, CodeIgniter.
Widget::create(Table::class,array(
"dataSource"=>array(
array("name"=>"Peter","age"=>35),
array("name"=>"Karl","age"=>32),
)
),array(
"assets"=>array(
"path"=>"../../public/assets",
"url"=>"/assets"
)
))
Exporter
New Exporter
class allows us to export any HTML
or PHP
file to PDF
or other format.
<?php
require_once "koolreport/autoload.php";
use \koolreport\instant\Exporter;
Exporter::export("/full/path/to/your/file.php")
->pdf(array(
"format"=>"A4",
"orientation"=>"portrait"
))
->toBrowser("myfile.pdf");
As you can see, now it is very easy to utilize the power of Export
package to export any file to PDF. It does not limit to export the report of KoolReport.
Summary
The new version of Instant
package extends the capability of using KoolReport power outside of its environment. This adds flexibility to the usage of KoolReport for general purpose. We are working hard to make KoolReport the best library for reporting as well as extend its usefulness.
<3 koolreport team
January 26, 2018
If the last version was a big improvement, this new version of KoolReport is even bigger with a lot of changes. Better structure, syntax improvement, new processes, new widget features. All backward compatible so do not hesitate to upgrade KoolReport core.
Widget's dataSource
In the new version, new dataSource
property is introduced to Widget
. dataSource
property can receive various type of source: array, DataStore
object, DataSource
object or even Process
object. Let take Table
widget as an example:
//Normal dataStore
Table::create(array(
"dataSource"=>$this->dataStore("mydata")
));
//From Array
Table::create(array(
"dataSource"=>array(
array("name"=>"Peter","age"=>35),
array("name"=>"Karl","age"=>32)
)
));
Table::create(array(
"dataSource"=>array(
array("name","age"),
array("Peter",35),
array("Karl",32),
)
));
//From DataSource
Table::create(array(
"dataSource"=>$this->src("automaker")->query("SELECT * FROM orders")
));
//From Process
Table::create(array(
"dataSource"=>(
$this->src("automaker")
->query("SELECT * FROM orders")
->pipe(new Group(array(
"by"=>"customerId",
"sum"=>"amount"
)))
)
));
The previous dataStore
property is still working so you do not need to change your code when upgrading to new KoolReport version. However, in the future, please utilize the powerful dataSource
property of Widget
.
Table Group Header
One the the most requested feature is to provide the group header for Table
widget. Now you can group some of the columns under a bigger name group.
Table::create(array(
...
"headers"=>array(
array(
"kpi"=>array(
"label"=>"All KPIs",
"colspan"=>"4",
)
),
array(
"visit_kpi"=>array(
"label"=>"Visit KPIs",
"colspan"=>"2",
),
"action_kpi"=>array(
"label"=>"Action KPIs",
"colspan"=>"2"
)
)
),
"columns"=>array("visitors","pageViews","downloads","purchases"),
))
As a result of above code, we have two bigs group which are "Visitor KPIs" and "Action KPIs" and under each, there are two sub columns. "Visitor KPIs" has "visitors" and "pageViews" and "Action KPIs" has "downloads" and "purchases". There is no limitation on number of header level you can group.
New Way To Pipe Process
We have added a static function process()
so beside the old way to create Process, this is the new way:
...
->pipe(Filter::process(array(
array("age",">",35)
)))
->pipe(Group::process(array(
"by"=>"city"
"avg"=>"income"
)))
...
QueryBuilder
QueryBuilder is our new package which helps to generate SQL Query
faster and more precisely. So instead of keying in the raw SQL Query
, now we can use the QueryBuilder
to generate.
$this->src('automaker')->query(
DB::table('payments')->whereYear('paymentDate','2017')
)
The QueryBuilder
package helps you to prevent SQL Injection
and eventually improve the security for your data. The package is free and can be downloaded here.
Note: Although QueryBuilder
is a package of KoolReport, you may download and use it as standalone to generate SQL Query
for your application. It support MySQL, SQLServer and PostgreSQL now. The more SQL language will be added in the future.
Summary
Above are some highlights for new changes, there are number of other changes inside the KoolReport that we did not list here due to the length of the list and there is no visible effect that you can see. But those changes are every important to strengthen the structure of KoolReport so that it can support new kinds of data visualization widgets and new data processes later on.
KoolReport 2.31.7 is a worth version to upgrade. If you upgrade, please also upgrade all packages that you own since the old packages may not work well with new version of KoolReport.
We also released new version of KoolReport Pro 2.31.7. This new version contains the most updated packages and the new packages also. Please download! If you have not owned KoolReport Pro, please consider to get since it is the most valuable suite that you can find for reporting. We keep adding more and more valuable packages to the suite so the price could go up further so better to get it now to secure the price. KoolReport Pro also goes with Full Source-Code and Priority Support.
Oh not to forget, please check out new DrillDown package and new PivotMatrix widget.
Enjoy!
<3 koolreport team
January 16, 2018
Drill down and drill through are two extremely powerful features in business intelligence. They both give the user the ability to see data and information in more detail–although they do so in different fashions.
Drill Down
Drill down is a capability that takes the user from a more general view of the data to a more specific one at the click of a mouse. For example, a report that shows sales revenue by state can allow the user to select a state, click on it and see sales revenue by county or city within that state. It is called “drill down” because it is a feature that allows the user to go deeper into more specific layers of the data or information being analyzed.
Further levels of drill down can be set up within the report–practically as many as supported by the data. In our example, the drill-down can go from country to state to city to zip code to specific location of stores or individual sales reps. Typically, the look and feel of each level of the report is similar–what changes is the granularity of the data.
- Example 1: Sale By Time
- Example 2: Sale By Location
Drill Through (MultiView)
Instead of taking the user to a more granular level of the data, drill through takes him to a report that is relevant to the data being analyzed, also at the click of a mouse. For example, a tabular report that shows sales revenue by state can allow the user to click on it and reveal an analysis grid of the same data, or a heat map representing the data in visual form. It is called “drill through” because it is a feature that allows the user to pass from one report to another while still analyzing the same set of data.
- Example: Sale By Month With Different Views
Benefits of Drill Down and Drill Through
Gain instant knowledge of different depths of the data – Drill down gives the user a deeper insight of the data by letting him see what makes up the figures he’s analyzing. For example, in mere seconds, drill-down answers questions such as: of my National sales figure, which states are performing better? Which states are underperforming? And within each state, which territories are driving revenue?
See data from different points of view – Drill through allows users to analyze the same data through different reports, analyze it with different features and even display it through different visualization methods. This greatly enhances the users’ understanding of the data and of the reasons behind the figures.
Keep reporting load light and enhance reporting performance – By only presenting one layer of data at a time, features like drill down lighten the load on the server at query time and greatly enhance reporting performance–while offering great value to the end-user.
<3 koolreport team
December 27, 2017
GREAT NEWS! We are happy to let you know that we have released new version for Export and Inputs package. Also, a new package called DataGrid has joined KoolReport's package family.
Export 3.0.0
In the version 3.0.0 of Export package, we have added new property to settings called resourceWaiting
. This property allows us to customize the time which Export package will wait for new coming resources. After the waiting time, Export package will start exporting content to PDF or other formats.
Previously the default waiting time is 1000ms however we found that the good amount of waiting time change server from server and case by case. For fast server and connection, you may set short waiting time to reduce the time to export. However for those slow server or bad connection, the longer waiting time should be considered otherwise page resources may not be loaded fully.
Check documentation
Inputs 3.0.0
The biggest change in new version of Inputs is the client event handling features. All input controls in Inputs package are equipped with clientEvents
property to set action. The common usage is like below example:
TextBox::create(array(
...
"clientEvents"=>array(
"focus"=>"function(){
console.log('focus');
}",
"blur"=>"function(){
console.log('blur');
}"
)
));
The event name is followed by a JavaScript function in string type.
The event handling allows us to catch what happens then take needed actions. To better understand of client-events, please view example
DataGrid
DataGrid is our new package to facilitate the data's display table format. The package now contains a widget called DataTables
. Beside displaying data, DataTables support advanced functionalities such as: table searching, column sorting, column reordering, paging and more.
DataGrid package is available in standalone package or in KoolReport Pro bundle.
Merry Christmas and Happy New Year
In this special occasion, we wish you have a full year of happiness and development. If you have not known, we are offering 30% OFF for KoolReport Pro. The promotion will ended soon so please hurry up to secure the offer.
<3 koolreport team
November 14, 2017
We have constructed a series of concise tutorials to help you get start faster with KoolReport. The tutorials will cover topics from the basic to the advanced. Enroll now!
Getting started with new things is always hard. That's why we always think about what we can do to help you master KoolReport in the easiest way. We improve our documentation, we add new examples, we write forum wiki etc. all of the efforts are just to make you get started faster and produce awesome reports.
Creating tutorials is our another effort for that purpose. We will guide you step-by-step through concept and practice. Some of the topics covered in the series are:
- Structure Of A Report
- Basic Of Data Processing
- Data Flow In KoolReport
- Time Series Aggregation
- Visualize Data With Google Charts
- Visualize Data With Koolphp Table
- Introduce Instant Package
- .. and many advanced topics waiting for you!
It's All Free! Enjoy!
<3 koolreport team