Laravel-Backpack / community-forum

A workspace to discuss improvement and feature ideas, before they're actually implemented.
28 stars 0 forks source link

Failed create Chart Pro in Backpack 6 using theme-tabler and Backpack Permission Manager #659

Closed haniramadhan-kkp closed 1 year ago

haniramadhan-kkp commented 1 year ago

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 when I load the dashboard page

Uncaught (in promise) Error: A listener indicated an asynchronous response by returning true, but the message channel closed before a response was received
haniramadhan-kkp commented 1 year ago

This problem has been solved, thanks. Answer in stackoverflow