最近接收一个公司内部需求,需要在后台新增一个统计图表。于是通过Laravel-Admin官方插件库里看到了chartJs,于是开始上手。

首先,安装chartJS.


composer require laravel-admin-ext/chartjs

然后发布公共资源:


php artisan vendor:publish --tag=laravel-admin-chartjs

执行完后得到如下信息即表示安装成功:


Copied Directory [/vendor/laravel-admin-ext/chartjs/resources/assets] To [/public/vendor/laravel-admin-ext/chartjs]
Publishing complete.

然后在config/admin.php中启用插件:


'extensions' => [

        'chartjs' => [
        
            // Set to `false` if you want to disable this extension
            'enable' => true,
        ]
    ]

此时要使用我们还需要创建视图文件,在resources/views/admin中创建chartjs.blade.php视图文件,文件内容如下:

body部分

<canvas id="myChart" style="width:200px;hegiht:200px;"></canvas>

JS部分


    $(function () {
        var ctx = document.getElementById("myChart").getContext('2d');
        var myChart = new Chart(ctx, {
            type: 'bar',  //>bar为柱状图,line为折线图,还有其他的图表方式,可以按照自己需求,从官方文档中获取更多类型
            data: {
                labels: ['数据1','数据2','数据3','数据4','数据5','数据6'],      //>x轴标签
                datasets: [{
                    label: "当前在办项目",         //>第一个标签
                    data: ['3','5','2','6','8','9'],   //>展示数据
                    backgroundColor: [      //>柱状图背景色,折线图的话就是填充背景色,如果存在多个数据则用数组,单条数据则不需使用数组。
                        'rgba(255, 99, 132, 0.2)',
                        'rgba(26,66,230,0.2)',
                        'rgba(54, 162, 235, 0.2)',
                        'rgba(255, 206, 86, 0.2)',
                        'rgba(75, 192, 192, 0.2)',
                        'rgba(153, 102, 255, 0.2)',
                    ],
                    borderColor: [           //>边框颜色
                        'rgba(255,99,132,1)',
                        'rgba(26,66,230,1)',
                        'rgba(54, 162, 235, 1)',
                        'rgba(255, 206, 86, 1)',
                        'rgba(75, 192, 192, 1)',
                        'rgba(153, 102, 255, 1)',
                    ],
                    borderWidth: 1    //>边框宽度
                }]
            },
            options: {
                categoryPercentage: 1.0,
                legend:false,    //>是否显示图标顶部图示
                title: {       //>图标顶部标题显示,可以用来显示一些统计信息之类的
                    display: true,
                    text: 'this is title'
                },
                tooltips: {
                    mode: 'index',
                    intersect: false
                },
                responsive: true,
                scales: {
                    xAxes: [{
                        beginAtZero: true,     
                    }],
                    yAxes: [{
                       ticks:{
                           barPercentage: 1.0,
                           beginAtZero: true
                       },
                    }]
                }
            }
        });
    });

上面两个部分写在一个blade文件中。然后在控制器中调用view,传入数据。数据自行根据自己需求替换就行了。
然后在控制器中调用:
官方文档中如下实例:


class ChartjsController extends Controller
{
    public function index(Content content)
    {
        returncontent
            ->header('Chartjs')
            ->body(new Box('Bar chart', view('admin.chartjs')));
    }
}

在row中调用方式也类似,


 $row->column('width',new Box('title',view('admin.chartjs',compact('数据渲染')));