The KoolReport Blog

Announcements, discussions, and more for KoolReport and its extended packages.

Inputs 2.7.0

We are glad to let you know that we have released new update for Inputs package. Although there are no new controls, there are some important changes that you need to be aware of.

The data property for selectable controls.

As you know, the data property is used to set data directly to controls. The change of data property is applied to selectable controls which are Select, MultiSelect, Select2, BSelect, RadioList, CheckBoxList. The input for data now must in associate array format with text is key "{text}"=>"{value}"

"data"=>array(
    "Awesome php report"=>1,
    "Great reporting framework"=>2,
    "Brilliant report tools"=>3
)

Another enhancement is that you may enter options as array like below example if option text and option value are the same.

"data"=>array(
    "Awesome php report",
    "Great reporting framework",
    "Brilliant report tools"
)

The defaultOption

The defaultOption format follows the same as format of data which is {text}=>{value}. You also can have as many default option as you want. All you need is to input the text and value into the array of defaultOption. For example:

"defaultOption"=>array("--"=>"")

Not forget to mention, the RadioList and CheckBoxList now have defaultOption property as well. It make these two controls more flexible in building options. You may use defaultOption to add some more choices beside those you have from dataStore.

Summary

Above are changes for Inputs 2.7.0 compared to the previous version. This version aims at the stability and conformity of input controls. In the next version, we will add some nice widgets. If you have any suggestion of new widget we should add, do not hesitate to let us know.

<3 koolreport team

It is a bug, it is a bug!!

"Ahhhh! This is a big bug! A really big bug. We gonna die..."

How many times I told my customers

Bug happens is the moment when computer and I have the same thought.

Finally, bug is gone, code is working and this is ..

.. and I always remind myself

"Dear KoolReport lovers, we have killed a bug today"

We've released KoolReport version 1.61.5 with bugs fixed for PDODataSource, MySQLDataSource and SQLSRVDataSource. The issue was raised by ashbike in the topic "Problem in binding parameter...". Thanks for your discovery.

"We, koolreport team, commit to make KoolReport the great reporting tool".

Bugs come, bugs gone, stay the spirit of developers!

<3 koolreport team

Remarkable KoolReport v1.61.2

BIG PARTY AGAIN!! We've released KoolReport version 1.61.2. We must say this is the biggest update ever. Please do not let the below picture distract you from going to our website and grasping the new version. This release really contains a lot of enhancements and deserved to be the best version.

KoolReport is a great framework to create php report for mysql and others datasources

KoolReport

KoolReport is now able to render sub view, it means that in our report view we can render another view inside. This is important feature because it helps to divide a big and complex report into smaller and less complicated ones which you can handle easily.

We also update the event handler and add a new event called OnResourceInit which happens when the resource is started and ready to receive registration. This is useful if you have intention to write extension for KoolReport. You may use this event to register resources such as js or css.

DataStore

DataStore is equipped with number of new functions to access data. Now you can filter/sort data before sending them to widgets.

Table::create(array(
    "dataStore"=>$this->dataStore("customers")->filter("age", ">", 35)->sort(array("name" => "desc")),
    ...
));

Also, you can easily get the top rows or bottom rows by those four new functions top(),bottom(), topByPercent() and bottomByPercent().

Widget

Widget now has a new static function called html(). This function instead of rendering widget, will return the widget in form of html. It opens opportunity to render a widget inside another one. For example, it is possible now to list all products with BarCode inside Table.

The most used widget, Table, now is able to set data directly without using dataStore. You can do:

Table::create(array(
    "data"=>array(
        array("name"=>"Peter","age"=>30),
        array("name"=>"Karl","age"=>29),
    ),
    ...
))

The footer is able to show count rows. Thanks Peter Gregory for his good suggestion.

Like Table widget, Google Chart widgets are able to set data as well. There is no need for dataStore property any more. By this way, you can create charts and graphs on the fly without preparing data through setup().

Bug fixes

  1. The ProcessGroup has a serious bug preventing it from receiving the starting input signal has been solved.
  2. The problem of not detecting the end of input has been solved for all processes.
  3. The problem of Group process can not receive data from multiple sources is solved as well.

Summary

Above is the summary of enhancements and bug fixes for KoolReport in this version. In this short note, we are only able to highlight some of the key changes, there are many more small improvements that we do not list. Please take some time to go to our website and download new version. To upgrade, you just need to overwrite the whole old koolreport folder with the new one. Simple as that.

Download New Version Now

Note: The KoolReport Pro is also updated with new core and all latest packages. Some new packages added are BarCode (generate barcode and qrcode), Cache (speed up your report), Statistics (calculate data statistics) and CleanData (solve missing data).

<3 koolreport team

Clean up the m_ssing data

"Garbage in, garbage out". Do not produce bad report because of bad data. Welcome to new package, CleanData, solution for solving the missing data in your report. The package is free to download.

Data cleansing

Problem

Missing data is always a problem in data analysis in general and report making in particular. It causes:

  1. Errors in your report. Missing data comes with NaN or null value which cause trouble for calculation.
  2. Wrong or bias result. For example,null value will drive the average down.

Solution

The missing data can be solved generally in two ways. You can cancel the rows with missing data or fill the missing data with reasonable value. The CleanData package provide all two solutions though two classes DropNull and FillNull.

The DropNull has capability of detecting null value in your data table. We can detect null in all columns or just some of specific columns either by column names, column types (number,string, datetime). The DropNull also take into consideration of how serious the missing data is. We can set the threshold which is the minimum number of missing values in a row to be consider being dropped.

The FillNull also detects the null value in all columns or in particular column names or types. It will try to replace the null value with a new value. That's value can be set by us for example we want to replace all null value with 0. Or we can replace missing value with smarter number such as MEAN or MEDIAN. FillNull can helps you to do that.

->pipe(new FillNull(array(
    "newValue"=>FillNull::MEAN,
    "targetColumnType"=>"number",
)))

Summary

The CleanData package is a good solution for dataset with missing data. In the future, we would like to apply some AI technique to better fill data to the missing one. The AI could suggest a reasonable value based on its observation of relation among surrounding data. KoolReport will be best report tool for php.

<3 koolreport team

BarCode and QRCode generator for your reports

We would like to introduce a new package, BarCode, the package helps you to generate BarCode and QRCode for your reports. You may use this package to create a list of your products with attached barcodes or to generate barcode in invoices for your customers.

BarCode example

BarCode

BarCode widget is a strong generator for barcode. It supports almost all types of barcode in market. If counted, it has 31 types available to be specific. View list. The BarCode widget also allows us to output in various formats: jpg, svg, html and png. The BarCode widget opens the possibility to create invoice with barcode for your customers. If you have the Export package, you can export invoice to PDF to print out or to send to your customers.

QRCode

QRCode is also an option to print product label where customers with smart phone can scan code to get information. Like BarCode, QRCode supports various output formats in jpg, png and svg. You can change the size, the fore color and background color as you wish to suit your report.

Summary

BarCode is another good extended package added to package family of KoolReport. FYI, we also released a package called Cache to improve the speed and responsiveness of output. We are working very hard and hope that more and more useful packages and functionalities to be added to KoolReport, aiming at making KoolReport the best reporting tool. Please support us!

<3 koolreport team


KoolReport helps to analyze your data and ultimately turn them into visual reports or dynamic dashboards.

"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 product and amazing."

Dr. Lew Choy Onn

"Fantastic framework for reporting!"

Greg Schneider
Get KoolReport Now, It's FREE!