Оборачивание в кавычки в 2amigos/highcharts

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Alert230
Сообщения: 56
Зарегистрирован: 2018.03.09, 13:34

Оборачивание в кавычки в 2amigos/highcharts

Сообщение Alert230 »

Всем добра!
Потратил уже недопустимо много времени, прошу совета.
используется 2amigos/highcharts

Проблема в том, как он генерирует код для spline (https://www.highcharts.com/demo/spline-irregular-time):
так нормально:

Код: Выделить всё

    series: [{
        name: "Winter 2014-2015",
        data: [
            [Date.UTC(1970, 10, 25), 0],
            [Date.UTC(1970, 11,  6), 0.25],
            [Date.UTC(1970, 11, 20), 1.41],
так генерирует виджет:

Код: Выделить всё

    series: [{
        name: "Winter 2014-2015",
        data: [
            "[Date.UTC(1970, 10, 25), 0],
            [Date.UTC(1970, 11,  6), 0.25],
            [Date.UTC(1970, 11, 20), 1.41]",
И соот-но всё что сложнее примера в документации к виджету - завести не могу.
Последний раз редактировалось Alert230 2018.06.01, 10:13, всего редактировалось 2 раза.
urichalex
Сообщения: 994
Зарегистрирован: 2015.08.07, 11:03

Re: Оборачивание в кавычки в 2amigos/highcharts

Сообщение urichalex »

Покажите как реализуете
Alert230
Сообщения: 56
Зарегистрирован: 2018.03.09, 13:34

Re: Оборачивание в кавычки в 2amigos/highcharts

Сообщение Alert230 »

На текущий момент:

Код: Выделить всё

echo \dosamigos\highcharts\HighCharts::widget([
            'clientOptions' => [
                'chart' => [
                    'type' => 'spline'
                ],
                'plotOptions'=> [
                    'spline'=> [
                        'marker'=> [
                            'enabled'=> 'true'
                        ]
                    ],
                ],
                'title' => [
                    'text' => 'График цены по контрагентам',
                ],
                'subtitle'=> ['text'=> 'за всё время'],
                'legend' => [
                    'layout'=> 'vertical',
                    'align'=> 'right',
                    'verticalAlign'=> 'middle',
                ],
               'xAxis'=> [
                    'type'=> 'datetime',
                    'dateTimeLabelFormats'=> [
                        'month'=> '%e. %b',
                        'year'=> '%b',
                    ],
                    'title'=> [
                        'text'=> 'Date',
                    ],
                ],
                'yAxis' => [
                    'type'=>'datetime',
                    'title' => [
                        'text' => 'Стоимость т/руб'
                    ]
                ],
                'series' => $arrayManager->getSeries(),
            ]
        ]);
вывод $arrayManager->getSeries()

Код: Выделить всё

Array
(
    [0] => Array
        (
            [name] => Контрагент 1
            [data] => Array
                (
                    [0] => 2018/05/24,14000
                    [1] => 2018/05/26,1440
                    [2] => 2018/05/30,1890
                )

        )

    [1] => Array
        (
            [name] => Контрагент 2
            [data] => Array
                (
                    [0] => 2018/05/21,4470
                    [1] => 2018/05/27,1600
                    [2] => 2018/05/31,1450
                )

        )
 )       
рендер:

Код: Выделить всё

"series": [{
        "name": "Контрагент 1",
        "data": ["2018/05/24,14000", "2018/05/26,1440", "2018/05/30,1890"]
    },
Вот так работает в браузере:

Код: Выделить всё

    "series": [{
        "name": "Контрагент 1",
        "data": [[2018/05/24,14000], [2018/05/26,1440], [2018/05/30,1890]]
    }]
Alert230
Сообщения: 56
Зарегистрирован: 2018.03.09, 13:34

Re: Оборачивание в кавычки в 2amigos/highcharts

Сообщение Alert230 »

разобрался с выводом графика.
нужно выводить массивом в виджет

Код: Выделить всё

[data] => Array
                (
                    [0] =>2018/05/21,4470
Но тут встал другой вопрос. Как правильно задавать разметку осей на основе даты.
В примере задаётся так:

Код: Выделить всё

            [Date.UTC(1971, 0, 24), 2.62],
У себя, если задаю строкой в массиве, то виджет оборачивает кавычками.
Распечатка массива $arrauManager->getSerials()

Код: Выделить всё

Array
(
    [0] => Array
        (
            [name] => Алейскзернопродукт ЗАО (г.Алейск)
            [data] => Array
                (
                    [0] => Array
                        (
                            [0] => Date.UTC(2018, 05, 24)
                            [1] => 14000
                        )
.....
Как задать, чтобы виджет не оборачивал?
рендер с оборачиваем выглядит так:

Код: Выделить всё

    "series": [{
        "name": "Контрагент 1",
        "data": [
            ["Date.UTC(2018, 05, 24)", 14000],
            ["Date.UTC(2018, 05, 26)", 1440],
            ["Date.UTC(2018, 05, 30)", 1890]
работает в браузере только вот так:

Код: Выделить всё

    "series": [{
        "name": "Контрагент 1",
        "data": [
            [Date.UTC(2018, 05, 24), 14000],
            [Date.UTC(2018, 05, 26), 1440],
            [Date.UTC(2018, 05, 30), 1890]
urichalex
Сообщения: 994
Зарегистрирован: 2015.08.07, 11:03

Re: Оборачивание в кавычки в 2amigos/highcharts

Сообщение urichalex »

Дату можно выводить в миллисекундах. Главное чтобы тип был числом а не строкой

Код: Выделить всё

"series": [{
        "name": "Контрагент 1",
        "data": [
        	[1527846731000,14000],
        	...
    }]
Alert230
Сообщения: 56
Зарегистрирован: 2018.03.09, 13:34

Re: Оборачивание в кавычки в 2amigos/highcharts

Сообщение Alert230 »

Сделал вывод в виде unixtime, на страницу всё рендерится нормально.
НО! ось X не отображается как нужно. Почему то градируется как 16:08, 16:09 и т.д. (хотя юникстайм нормально передаётся, данные валидны). А должны быть дни.

При попытке вывести информацию в тултипе к точке - выводится 18 января 1970г.
Вот рендер

Код: Выделить всё

  series: [{
    name: "Контрагент",
    data: [
      [1527181200, 0],
      [1527440400, 0.25],
      [1527526800, 1.41],
    ]
Я так понимаю, unixtime в библиотеку не засунешь.... какие у меня есть варианты?
Alert230
Сообщения: 56
Зарегистрирован: 2018.03.09, 13:34

Re: Оборачивание в кавычки в 2amigos/highcharts

Сообщение Alert230 »

всё понятно.... unixtime это секунды, а скормить нужно в милисекундах. Всем спасибо
Ответить