Сложенная область Highchart не работает с отсутствующим назначением данных - PullRequest
1 голос
/ 17 марта 2019

Проблема заключается в том, что функция процентной площади не работает, когда в серии дата-время отсутствует точка данных для некоторых t .

Например, удаление

{
x: new Date("2008-10-31T00:00:00.000Z"),
y: 0,
drilldown: 'my_drilldown'
}

из серии в http://jsfiddle.net/qtoas0jg/3/,, дающей http://jsfiddle.net/qtoas0jg/4/.

Ожидаемое / желаемое поведение заключается в том, что область должна заполняться за все время t .Изучив документацию, я пришел к выводу, что connectNulls:false, также используя step:"left", я могу достичь желаемого поведения для одной серии, в которой содержатся значения для всех t , но опять же не для второй серии.

Есть идеи?

РЕДАКТИРОВАТЬ:

Мне не удалось решить проблему с помощью функциональности Highcharts.Вместо этого я (довольно недоверчиво) манипулировал серией, которую я вставил, добавив значение 0 для отсутствующих t .Если кто-то запутается в этой проблеме, может быть полезно следующее:

    let asd = []
    // Firstly finding which t:s that need to be added for respective series
    let to_be_added = series.map(arg_a => {
        return([arg_a.name,arg_a.data.reduce((acc_b,arg_b) => {
            // Adding all available t:s
            (asd.indexOf(arg_b.x.toString())>=0?0:asd.push(arg_b.x.toString()))
            acc_b.push(arg_b.x.toString())
            return acc_b
        },[])])
    }).map(arg_a => {
        return [arg_a[0],asd.filter(arg_b => arg_a[1].indexOf(arg_b)<0)]
    })
    // Adding the new timestamps with y:0
    to_be_added.map(arg_a => {
        series.map((arg_b,ind) => {
            if (arg_b.name == arg_a[0]) {
                arg_a[1].reverse().map(arg_c => {
                    series[ind].data.unshift({x:new Date(arg_c),y:0})
                })
            }
        })
    })

1 Ответ

1 голос
/ 19 марта 2019

Эта проблема вызвана ошибкой Highcharts: https://github.com/highcharts/highcharts/issues/5634

Для обхода проблемы используйте timestamps вместо Date объекта:

data: [{
    x: new Date("2008-10-31T00:00:00.000Z").getTime(),
    ...
}, ...]

Демонстрационная версия: http://jsfiddle.net/BlackLabel/0wr3kvt1/

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