- Version 4.8.3
- Version 4.8.2
- Version 4.8.1
- Version 4.8.0
- Version 4.7.2
- Version 4.7.1
- Version 4.7.0
- Version 4.6.0
- Version 4.5.0
- Version 4.2.0
- Version 4.1.7
- Version 4.1.6
- Version 4.1.5
- Version 4.1.4
- Version 4.1.3
- Version 4.1.2
- Version 4.0.1
- Version 4.0.0
- Version 3.5.0
- Version 3.3.1
- Version 3.3.0
- Version 3.2.4
- Version 3.2.0
- Version 3.1.1
- Version 3.1.0
- Version 3.0.0
- Version 2.0.0
- Version 1.3.5
- Version 1.3.1
- Version 1.3.0
- Version 1.2.6
- Version 1.0.1
- Version 1.0.0
Change Log
Version 4.8.3 #
- Add "onReady" property for PivotMatrix KWidget
- Add actionRefreshPage to Page class that allows page to be refreshed when called.
Version 4.8.2 #
- Fix
ConfirmandAlertrendering bug
Version 4.8.1 #
- Add
pivotClassprop to PivotTable and PivotMatrix widgets
Version 4.8.0 #
- Fixed: Fix FileUPloader to show file error messages if there are and waiting icon while uploading.
- Added: Add the
response()method to Application so that all elements of dashboard can be accessed and provide extra response. - Add
jsonRenderproperty to comply with CSP's unsafe-eval
Version 4.7.2 #
- Added: Added property
deleteFileAfterDownloadtoExportHandler, set to true will delete file from storage after being downloaded - Added: Ability to export selected rows with
ExportAction - Changed: TFields's getFields() function will generate fields on-demand
- Added: AdminTable has new prop
contextConditionsto make table show only rows that satisfy conditions. - Added: Action class is added new prop
checkEmptySelection
Version 4.7.1 #
- Added: New
fileNameprop is added to ExportAction to customize the exported file name - Added: Ability to export JPG and PNG with ExportAction
Version 4.7.0 #
- Fixed: Now we can use different class name for Application rather than just App.
- Fixed: Use new
isFilteredSinglemethod instead ofisFilteredin RowSelect class - Added: A new
ExportActionis added to admin panel to provide export capability
Version 4.6.0 #
- Added: Ability the set new session handler
- Added: JWTSession to handle session using JWT
- Added: Able to create Dashboard with different name using code style Dashboard::create('privateName')
- Fixed: Table's search bug when there's where method in dataSource's query builder
- Added: "scope" property to DrillDown
- Fixed: "between" filter for Trend.php and Value.php in metrics based on data handler = SQLHanlder or PipeHandler
Version 4.5.0 #
- Added: ApexCharts charts
- Added: VisualQuery widget
- Added: multiple upload mode in FileUploader
- Added: drag and drop in FileUploader
- Added: useCoreDataSource() method in data source for users to decide whether to use pdo or other koolreport datasource classes
- Added: "Others" category in chart to language files
- Fixed: The app() is not available in TEnabledPermit which is caused null issue for permission anonymous function
- Fixed: Google Chart's ComboChart to show multiple types of charts instead of just column
- Fixed: Util's arrayToDataStore() function issue when there's only one column
- Fixed: Metrics' Value card's lastQuarter range and value.
Version 4.2.0 #
- Fixed: Error message in Application
- Fixed: Change bind() to bindTo() in TEnabledPermit to avoid error message
- Added: custom Excel export setting for Table and PivotTable/PivotMatrix
- Added: custom PDF and Excel view files for dashboard and widget export
- Added: general engine() method for ExportHandler, nearly similar to {type}Engine() methods.
- Added: ability to set export engine name and choose exactly which engine to be use when exporting any dashboard or widget.
Version 4.1.7 #
- Added: Ability to set theme assets via application
- Fixed: Solve the issue of using dashboard inside other frameworks
Version 4.1.6 #
- Fixed: Login does not direct to previous page and dashboard
- Added: Client class for page
Version 4.1.5 #
- Fixed: Undefined "showOnUpdate" on Calculated field in Admin Panel
Version 4.1.4 #
- Added: Provide more translation text
Version 4.1.3 #
- Added: FlexView is able to clear state on view first load
- Added: Provide option to use state for
showView()method
Version 4.1.2 #
- Added: Add validators to inline editing for AdminTable
- Added: FlexView now has history and can go back to previous view with
historyBack()method - Added: Provide validators to inline editing for RelationTable
- Fixed: Not being able to init validators
- Fixed: Issue with language cookie
Version 4.0.1 #
- Fixed: Issue with navigation after login
Version 4.0.0 #
- Fixed: Not perform rowSelect if there is no state available in Table
- Fixed: Prevent null in convertToSeconds method of Util class
- Added: Add Timeline chart for chartjs
- Fixed: String function with null parameter for PHP 8.1
- Fixed: Issue with PipeHandler aggregates when there is no data
- Added: formatValue() function of field takes into account the formatUsing settings
- Added: Category metrics support resolve category field's value with resolveUsing property
- Added: Provide client event
onClientLoadingandonClientLoadedto Dashboard - Added: Provide client event
onClientLoadingandonClientLoadedto Widget - Added: Add
appKeyto Dashboard application to improve security - Added: Provide
pagesmethod to set extra pages in application - Added: Property
successGoToPagefor Login to set the page to go to after user login succesfully - Added: Ability to create new page to hold dashboard
- Improved: Separate the theme's javascript from application javascript
- Fixed: Adding row into second parameter of field's nullValue and emptyValue properties.
- Improved: Remove the assets property in App
- Added: Flexibilty in setting theme.
- Added: Able to add menuitem to sidebar
- Changed: Add sidebar() method to replace the dashboard() method in Application
- Added: Add new Wrapper page to hold custom content
- Added: Add content() method to replace the widgets() method in Dashboard
- Added: Add params() to PDOSource so that rawSQL() can be bound with parameters
- Added: Able to set language dynamically
- Added: Ability to list available languages and allow user to choose
- Added: Page has loginRequired property to decide whether page need login
- Added: Page has allowAccess() method to filter request
- Improved: Change the request and response mechanism.
- Added: Add translation content to metrics widget
- Added: AdminTable is able to do inline editing
- Added: RelationTable is able to do inline editing
- Added: Login page is able to catch the previous route and comeback after successful login.
- Added: Provide FlexView widget to dynamically loading an view
- Added: Provide action() method for Page and Application
- Added: Page and Application is able to use notification widget like Alert, Modal and Note
Version 3.5.0 #
- Fixed: Remove redundant code in FileUploader
- Fixed: Disabling createScreen should not disable the searchBox
- Fixed: Remove
koolTypeproperty in TimeAgo - Added: Adding
Createdevent to User and new propertyothersto store other information. - Fixed: Attach managed table name to id in UpdateScreen and DetailScreen
- Added: Add
BSelectto inputs family - Added:
settingsto LocalExport and ChromeHeadlessio - Improved: Make relation work smoother
- Fixed: Set default resolveUrl property of FileUploader to the formatUsing property of Image
- Added: New Link field to handle tag
- Fixed: The generation of count query in SQLHandler when raw query is provided to dataSource().
- Added: Adding language translation
- Fixed:
ActionCheck if selected ids is available before querying related models - Added: Add
emptySelectionWarningproperty to Action to control the warning when no rows is selected - Changed: Remove the RowSelect's property
allSelectableand make all checkbox always available - Added: Able to select rows with conditions
- Removed: Remove
showRowSelectandshowRowActionsin Admin table - Added: New
rowSelectFieldandrowActionsFieldto Admin table - Removed: Remove
showRowActionsproeprty of relation table - Added: New
rowSelectFieldproperty to relation table - Added: New server-events:
onRecordDeleting,onRecordDeleted,onRecordUpdating,onRecordUpdated - Added: Add
onFileHandlingandonFileHandledevent to FileUploader - Added: New
Firebirddatasource - Added: Adding
pageSizeOptionsproperty to table to let user changes page size of table
Version 3.3.1 #
- Added: Click on Table header to sort
- Fixed: Very rare case that
echomethod does not work with static function of a class - Fixed: Terminate widget autoUpdate when moving to another dashboard
Version 3.3.0 #
- Fixed: Change group by alias to group by expression in SQLHandler
- Fixed: Change 12h format to 24h format in SQLServer
- Added: Add
shouldUpdateto set anonymous function to determine whether a field should be updated. - Added: Add
processValueToDatabaseproperty to field to alternate value saved to database. - Added: Add
Passwordfield - Added: Add static
updateAction(),detailAction(),deleteAction()to return corresponding default actions for resources. - Added: Add
dateFormat()for Sqlite - Added: Add translation for new terms
Version 3.2.4 #
- Fixed: Adding CSRF to file uploader widget to avoid issue with Laravel security
- Fixed: Not set the field original value to default value of input as it will be null
- Fixed: Make the onConFirm and onCancel text be run separately from text
- Added: Ability to validate inputs inside the action modal form.
Version 3.2.0 #
- Fixed: SQL Handle for SQL Server, PostgreSQL, Oracle date format
- Fixed: Missing onConfirm on Action
- Added: Add
bottomproperty to DetailScreen, UpdateScreen and CreateScreen so that we can set bottom widgets display - Added: Ability to fall back on nested query on performing aggregations.
Version 3.1.1 #
- Fixed: Not able to get enabled dashboards
Version 3.1.0 #
- Added: Adding bottom() to facilitate bottom widgets display.
Version 3.0.0 #
- Added: Ability to set disabled menu items for Dropdown, Panel menu and account menu
- Added: Provided
Dropdown::menuItem()to create MenuItem object - Added: Provided
Panel::menuItem()to create MenuItem object - Added:
Tabhasiconproperty - Added: Property
disabledto MenuItem - Added: Provided
TWidgetStateto Dropdown - Added: Provide error message to actionLost in Dashboard
- Improved: Add static
tab()function to Tabs container - Added: Add
onShow,onShown,onHideandonHiddento Tab - Added: Provide
cssClassandcssStyleproperty to Tabs - Fixed: Use nested query to calculate the total rows correctly in SQLHandler
- Fixed: Make Row's cssClass property working
- Added: Provide
PropSetevent for TProps - Added: Request params is able to get/set by keys
- Added: Add property
nullDisplayto Field - Added:
Panelheader and footer is able to receive both text and widgets - Added: Adding
hidePagingOnSinglePageproperty for Table widget - Added: Adding
TextAreainput - Fixed: Able to set global property of in settings for `DrillDown
- Added: Adding input field validator
- Added:
TextBoxis able to pre-process value with processValue() method - Added:
TextAreais able to pre-process value with processValue() method - Added:
TextBoxandTextAreahas new propertytrimValueto indicate value will be trimmed off space - Added: Provide
disabledproperty to input widgets - Added: Adding list of common filters to admin
- Added: Adding
FileUploaderto input - Added: Adding
hiddenproperty to Field - Added: Adding
customRenderto Field to alternate display of field - Added: Provide property
disableRangeSelecttoTrendandValuemetrics - Added: Provide
show()method to Response to open modal - Added: Add secret Tunnel ajax panel to Dashboard
- Added: Adding
Alertnotification - Added: Panel has short-handed static method to create Panel with type
- Fixed: Remove monolog requirement, developer can add when needed.
- Added: General error message in non-debug mode.
- Added: Provide
cssClassandcssStylefor Button inputs - Added: Provide
formatErrorto DateTime field - Fixed: Ability to handle nullValue for Field in common
- Added: Add
emptyValueproperty for Field to handle both null and empty value - Added: Add
Booleanfield to handle Boolean column - Added: Bring back
SimpleCardin widgets - Added: Special Admin Panel with full CRUD capability to manage database.
- Added: Provide list of validators
- Added: Provide
Confirmnotification - Added: Provide
Notenotification - Added: New
htmlproperty for Text field to control whether value is rendered in html - Added: Able to show notification or run script by return INofitication object or script in action
- Added: Provide short-handed static function to create Button with type and text
Version 2.0.0 #
- Added: Make Application
assetsbecome property so that we are able to set assets() from outside - Added: Able to connect to Oracle
- Added: Able to connect to SQLite
- Fixed: Widgets able to update inside Modal
- Added: Show error when debugMode is on
- Added: Ability to show unexpected response when debugMode is on
- Fixed: Better exception message for Application, Dashboard and Widget
- Added: Able to provide items to top menu
- Added: Able to provide items inside account menu
- Added: CustomBoard use
method="ajax"to enable form performing data post back via ajax - Added: Adding Logging feature with monolog
- Added: Fire event
Errorwhen something wrong happens - Added: Add
errorBubbleto App to control whether error event is bubbled to parent - Added: Make
registerEventandfireEventpublic so that they can be called from outside of object - Added: Add
showRawValueproperty for count field of Category metric. - Added: Allow dataSource() function receive parameters
- Added: Properties of fields now is able to receive function with standardized parameters $value and $row.
- Fixed: Remove
extractProps()from TProps trait - Added:
TPropshas ability to get property value by function simply by prefixing underscore(_) to the property name. - Added: Ability to set property by anonymous function for all inputs
- Added: Ability to set property by anonymous function for all widgets
- Added: Ability to set property by anonymous function for all metrics
- Added:
DataReadyevent for widgets, fired when data is queried and be available - Added:
hiddenproperty for widgets - Added:
hasWidget()method to Dashboard to check if a widget is available - Added:
hasSibling()method to Widget to check if a sibling widget is available - Added: Ability to perform search on table
- Added: Ability to perform search for file sources
- Added: Ability for Trend and Value metrics to work with array or file sources
- Added: Provide menu capability for Panel
- Added: Able to export widget or dashboard to pdf, png and jpg
- Added: Provide ChromeHeadlessio and LocalExport engine
- Added: Ability to get data view of an widget
- Added: Ability to show modal detail for widget
- Added: Ability to show table containing detail data for Google Charts
- Fixed: Change "after{Event}" to "beforeOn{Event}"
- Added: Add event handler "afterOn{Event}"
- Added: Widget is able to function inside detail modal
- Added: Ability to navigate to a dashboard by url
- Added: Add
Dropdowninputs - Added: Provide D3 chart library to widgets
- Added: Provide ChartJs library to widgets
- Added: Bring drilldown widget to dashboard
- Added: Ability to provide custom data process to handle data post-processing
- Added: Ability to call SQL procedure with parameters
- Added: CustomBoard is able to host multiple actions and views
- Added: Provide ajax method to the form inside CustomBoard
- Added:
Modalnow has 4 client events"onShow", "onShown", "onHide", "onHidden" - Added: Add
Toggleinto input widget list - Fixed: Encode request parameters and state to ensure value remain intact during transmission.
- Added: Provide TParamsPersisted trait that allows parameters of display widgets and metrics be persisted
- Added: Adding
Htmlcontainer to facilitate Html elements inside dashboard. - Added: Provide
exportedView()function to allow view customization for exporting. - Added: Detail modal is able to set via property
Version 1.3.5 #
- Added: Ability to set CSRF token on each request
- Fixed: Able to work with CSRF rules from Laravel
Version 1.3.1 #
- Fixed: Disable code-cleaning before output as it causes trouble to
textareaorpreelement and potentially break html attributes.
Version 1.3.0 #
- Added: Control the responsive of table
- Fixed: Button onClick event is not working
- Added: Able to set widget's name by anonymous function
- Fixed: ClientDashboard javascript is not able to execute
- Fixed: ClientWidget javascript is not able to execute
Version 1.2.6 #
- Fixed: Not being responsive in Mobile
- Added: New property
faviconto Application to show favicon - Fixed: Not able to set title for Section and Group in menu
- Fixed: ClientDashboard command is not working with Button onClick
- Fixed: Not able to set number of second to cache() function
- Fixed: TField can auto generate fields for Table
- Added: Ability to set badge to
DashboardandGroupmenu - Fixed: Ability to close the menu on mobile when click to menu item
Version 1.0.1 #
- Fixed: Showing deprecated (real) error in PHP7.4
Version 1.0.0 #
- The beginning, nothing to say!
Get started with KoolReport
KoolReport will help you to construct good php data report by gathering your data from multiple sources, transforming them into valuable insights, and finally visualizing them in stunning charts and graphs.