Как я могу передать обратный вызов javascript конструкции PHP в Laravel -Charts - PullRequest
2 голосов
/ 29 марта 2020

Я использую пакет laravel -charts в Laravel 7. Я добавил плагин datalabels для диаграммы js в объект Chart следующим образом:

$this->options = [
    'responsive' => true,
    'maintainAspectRatio' => false,
    'legend' => [ 'display' => false ],
    'plugins' => [
        'datalabels' => [
            'color' => 'white',
            'weight' => 'bold',
            'font' => ['size' => 14],
            'formatter' => ''     
    ]
]

В другой версии, когда я использовал vue. js и vue -chart js, я смог отформатировать этикетку, используя это:

plugins: {
    datalabels: {
        formatter: function(value, context) {
            return '$' + Number(value).toLocaleString();
         },
   }
}

Как видите, javascript передается как массив PHP. Я не могу понять, как передать этот форматер моей версии laravel.

Любая помощь очень ценится.

1 Ответ

2 голосов
/ 03 апреля 2020

Laravel Charts plugins опция должна быть строкой, представляющей простой Javascript объект. Я не смог найти никакой фактической документации, но вы можете прочитать связанную проблему здесь "Как использовать диаграммы Js Плагин Datalabels js?" .

Вам придется передайте это так:

$chart = new ChartTest;
$chart->labels(['One Thousand', 'Two Thousand', 'Three Thousand', 'Four Thousand']);
$chart->dataset('My dataset', 'bar', [1000, 2000, 3000, 4000]);

$chart->options([
    // The whole plugins element is a string representing a JS object with plugins options
    'plugins' => "{
        datalabels: {
            color: 'red',
            font: {
                size: 14,
                weight: 'bold'
            },
            formatter: (value) => `\\$\${value}`
        }
    }"
]);

return view('chart', ['chart' => $chart]);

Примените диаграмму js -plugin-datalabels опции:

Laravel ChartsJS

PS : свойство weight должно находиться внутри объекта font, как в моем примере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...