I failed create a chart widget in dashboard
I have installed chart libraries with this command
composer require consoletvs/charts:"6.*"
Then I created the controller
php artisan backpack:chart WeeklyPermohonans
Then I add the widget in my dashboard custom blade in a row with other widgets
[
'type' => 'chart',
'controller' => \App\Http\Controllers\Admin\Charts\WeeklyPermohonansChartController::class,
],
Below is my WeeklyPermohonans Chart Controller
<?php
namespace App\Http\Controllers\Admin\Charts;
use App\Models\Permohonan;
use Backpack\CRUD\app\Http\Controllers\ChartController;
use ConsoleTVs\Charts\Classes\Chartjs\Chart;
/**
* Class WeeklyPermohonansChartController
* @package App\Http\Controllers\Admin\Charts
* @property-read \Backpack\CRUD\app\Library\CrudPanel\CrudPanel $crud
*/
class WeeklyPermohonansChartController extends ChartController
{
public function setup()
{
$this->chart = new Chart();
// MANDATORY. Set the labels for the dataset points
$labels = [];
for ($days_backwards = 3; $days_backwards >= 0; $days_backwards--) {
if ($days_backwards == 1) {
}
$labels[] = $days_backwards . ' days ago';
}
$this->chart->labels($labels);
// RECOMMENDED.
// Set URL that the ChartJS library should call, to get its data using AJAX.
$this->chart->load(backpack_url('charts/new-entries'));
// OPTIONAL.
$this->chart->minimalist(false);
$this->chart->displayLegend(true);
}
/**
* Respond to AJAX calls with all the chart data points.
*
* @return json
*/
public function data()
{
for ($days_backwards = 3; $days_backwards >= 0; $days_backwards--) {
// Could also be an array_push if using an array rather than a collection.
$permohonan[] = Permohonan::whereDate('created_at', today()
->subDays($days_backwards))
->count();
}
$this->chart->dataset('Permohonan', 'line', $permohonan)
->color('rgb(77, 189, 116)')
->backgroundColor('rgba(77, 189, 116, 0.4)');
}
}
for the backpack/permission manager in my composer.json "backpack/permissionmanager": "^7.0",
and the spatie/laravel-permission in my composer.lock
"name": "spatie/laravel-permission",
"version": "5.11.0",
This show in console
Uncaught (in promise) Error: A listener indicated an asynchronous response by returning true, but the message channel closed before a response was received
The error is 404(not found). Your chart is calling wrong API.
You are using:
$this->chart->load(backpack_url('charts/new-entries'));
where you are supposted to use:
backpack_url('charts/weekly-permohonans')
This route was create by
php artisan backpack:chart WeeklyPermohonans
in routes/backpack/custom.php
Route::get('charts/weekly-permohonans','Charts\WeeklyPermohonansChartController@response');