Yii2 Chart Js throws Ошибка не числового значения c на странице - PullRequest
0 голосов
/ 14 апреля 2020

Я установил 2amigos / yii2-chart js -widget на свой yii2 project через composer и после установки я пытаюсь настроить пример, как показано в документации.

 <?php
           ChartJs::widget([
'type' => 'pie',
'id' => 'structurePie',
'options' => [
    'height' => 200,
    'width' => 400,
],
'data' => [
    'radius' =>  "90%",
    'labels' => ['Label 1', 'Label 2', 'Label 3'], // Your labels
    'datasets' => [
        [
            'data' => ['35.6', '17.5', '46.9'], // Your dataset
            'label' => '',
            'backgroundColor' => [
                    '#ADC3FF',
                    '#FF9A9A',
                'rgba(190, 124, 145, 0.8)'
            ],
            'borderColor' =>  [
                    '#fff',
                    '#fff',
                    '#fff'
            ],
            'borderWidth' => 1,
            'hoverBorderColor'=>["#999","#999","#999"],
        ]
    ]
],
'clientOptions' => [
    'legend' => [
        'display' => false,
        'position' => 'bottom',
        'labels' => [
            'fontSize' => 14,
            'fontColor' => "#425062",
        ]
    ],
    'tooltips' => [
        'enabled' => true,
        'intersect' => true
    ],
    'hover' => [
        'mode' => false
    ],
    'maintainAspectRatio' => false,

],
'plugins' =>
    new \yii\web\JsExpression('
    [{
        afterDatasetsDraw: function(chart, easing) {
            var ctx = chart.ctx;
            chart.data.datasets.forEach(function (dataset, i) {
                var meta = chart.getDatasetMeta(i);
                if (!meta.hidden) {
                    meta.data.forEach(function(element, index) {
                        // Draw the text in black, with the specified font
                        ctx.fillStyle = rgb(0, 0, 0);

                        var fontSize = 16;
                        var fontStyle = normal;
                        var fontFamily = Helvetica;
                        ctx.font = Chart.helpers.fontString(fontSize, fontStyle, fontFamily);

                        // Just naively convert to string for now
                        var dataString = dataset.data[index].toString()+'%';

                        // Make sure alignment settings are correct
                        ctx.textAlign = center;
                        ctx.textBaseline = middle;

                        var padding = 5;
                        var position = element.tooltipPosition();
                        ctx.fillText(dataString, position.x, position.y - (fontSize / 2) - padding);
                    });
                }
            });
        }
    }]')
    ])
            ?>

Но когда я обновляю sh мою страницу, я получаю эту ошибку

Обнаружено ненулевое c значение

ошибка возникает в var dataString = dataset.data[index].toString()+'%';

Я пытался решить эту проблему, но ничего не смог найти

Любая помощь будет высоко оценена.

1 Ответ

1 голос
/ 14 апреля 2020

Это потому, что вы не экранируете кавычки правильно, вам нужно экранировать одинарные кавычки в операторе

var dataString = dataset.data[index].toString()+' % ';

, потому что ваши внешние кавычки в new yii\db\Expression() используют одинарные кавычки, чтобы обернуть все javascript, поэтому измените строку на

var dataString = dataset.data[index].toString()+\' % \';
...