Chartello provides a simple UI for visualizing your data in your Laravel 9+ apps that use MySQL.
Add the package to your project via composer:
composer require chartello/chartelloPublish the package resources:
php artisan chartello:installRun new migrations:
php artisan migrateVoilà! Open yourapp.test/chartello on your local machine. You should see the Chartello dashboard.
Chartello dashboards allow users to write SQL queries against your database. This makes it important for you to ensure that they are protected behind appropriate permissions.
When you install Chartello, it adds a app\Http\Middleware\ProtectChartello middleware to your app. This,
by default, limits the access to these dashboards only to your local environment. You should modify this
middleware to define how access to these dashboards should be restricted in your production environment.
/**
* Define the authorization logic for accessing Chartello.
*
* @param $request
* @return bool
*/
protected function authorize($request)
{
if (App::environment('local')) {
return true;
}
return $request->user() && in_array($request->user()->email, [
//
]);
}After installing Chartello, its configuration file will be located at config/chartello.php. This file allows you to
customize the path to the Chartello dashboards and adjust HTTP middleware that should be used when serving them.
Chartello currently supports two types of panels:
A trend chart expects an x column with date/datetime values and a numeric y column.
To populate a trend chart, create a new panel in the UI and enter a query similar to this one:
SELECT DATE(created_at) AS x, COUNT(*) AS y
FROM users
WHERE created_at BETWEEN @start AND @end
GROUP BY x
ORDER BY x ASCIncluding the BETWEEN @start AND @end filter ensures that your
chart reflects the date range selection available in the UI.
Tables are flexible and accept almost any SELECT queries.
If you wish the data in your table to reflect the date selection from the UI,
you should include the BETWEEN @start AND @end filter in your query.
Here is an example query for populating a table panel:
SELECT name, email, created_at
FROM users
WHERE created_at BETWEEN @start AND @end
ORDER BY created_at DESC
LIMIT 5When upgrading to a new version of Chartello, you should re-publish its assets:
php artisan vendor:publish --tag=chartello-assets --force
The MIT License (MIT). Please see License File for more information.