Подсказка Highcharts показывает дополнительные данные

0

Я пытаюсь добавить данные в свои подсказки в highcharts. Я импортирую данные в CSV, но для этого кода я помещаю данные в var. Обычно мои данные форматируются по: Name, startDate, EndDate в CSV. Теперь я хочу попытаться использовать: Name, startDate, endDate, eventType, unitType.

Я пытаюсь выяснить, как получить данные eventType и unitType для отображения в подсказках. Я попытался вывести данные в файл series.data.com, но я думаю, что я делал неправильно!

В качестве бонуса, даты, которые всего лишь на один день, не отображаются, но они там, слишком тонкие, чтобы видеть, кто-нибудь знает о решении? Некоторое время я взломал тему, но, похоже, не помог.

Вот мой код JSFiddle.

var options = {
    chart: {
        zoomType: 'y',
        borderWidth: '0',
        borderRadius: '15',
        renderTo: 'container',
        inverted: true,
        backgroundColor: {
            linearGradient: [0, 0, 500, 500],
            stops: [
                [0, 'rgb(44, 44, 58)'],
                [1, 'rgb(62, 62, 62)']
            ]
        },
        plotBackgroundColor: 'rgba(255, 255, 255, .9)'
    },
    tooltip: {
        useHTML: true,
        formatter: function () {
            var point = this.point;
            return '<table><tr>' + point.category + '</tr><tr><td style="color:#00CC00">Start:</td><td style="text-align: right">' + Highcharts.dateFormat('%b %e, %Y', point.low) + '</td></tr><tr><td style="color:#FF0000">Finish:</td><td>' + Highcharts.dateFormat('%b %e, %Y', point.high) + '</td></tr><tr><td>Unit:</td> <td></tr></table>'
        }
    },
    subtitle: {
        text: 'MTC'
    },
    credits: {
        text: 'MTC',
        href: 'myLink'
    },
    legend: {
        enabled: true
    },
    title: {
        text: 'Calendar'
    },
    xAxis: {
        categories: []
    },
    plotOptions: {
        series: {
            grouping: false
        }
    },
    yAxis: {
        type: 'datetime',
        minRange: 0,
        startOnTick: false,
        endOnTick: false,
        title: {
            text: 'yAxis'
        }
    },
    series: []
},
categories = [];;


var data = "Soldier 1,12/1/2013,12/10/2013,Training 1,Unit 1,4/8/2014,4/10/2014,Training 3,Unit 7\nSoldier 2,4/15/2013,4/18/2013,Training 2,Unit 2,4/20/2014,4/23/2014,Training 4,Unit 8\nSoldier 3,6/3/2013,6/3/2013,Training 31,Unit 3,8/12/2014,8/13/2014,Training 66,Unit 9,6/15/2013,6/22/2013,Train 92,Unit 44\nSoldier 4,10/10/2013,10/12/2013,Training 9,Unit 4,10/13/2013,10/19/2013,Training 6,Unit 10\nSoldier 5,9/20/2013,9/24/2013,Training 5,Unit 5";
var lines = data.split('\n');

$.each(lines, function (lineNo, line) {
    var items = line.split(','),
        iLen = items.length,
        series = {
            type: 'columnrange',
            data: [],
            name: items[0],
            composition: []
        };

    categories.push(items[0]);
    for (var i = 1; i < iLen; i += 2) {
        var from = (new Date(items[i])).getTime(),
            to = (new Date(items[i + 1])).getTime();
        if (!isNaN(from) && !isNaN(to)) {
            series.data.push([lineNo, from, to]);
        }
    };
    options.series.push(series);
});

options.xAxis.categories = categories;

var chart = new Highcharts.Chart(options);
Теги:
highcharts

1 ответ

1
Лучший ответ

Ваша скрипка с новыми данными push и formatter: http://jsfiddle.net/WXLaN/2/

Ключевым моментом является то, что цикл push данных:

for (var i = 1; i < iLen; i += 4) {
    var from = (new Date(items[i])).getTime(),
        to = (new Date(items[i + 1])).getTime();
    var point = {
        x: lineNo,
        low: from,
        high: to,
        event: (items[i + 2]),
        unit: (items[i + 3])
    };
    if (!isNaN(from) && !isNaN(to)) {
        series.data.push(point);
    }
};

Поскольку в линиях данных теперь четыре блока данных, значение inc было установлено равным 4. Чтобы использовать пользовательские поля данных, вам нужно нажать объект с необходимой информацией и дополнительной информацией. Ваша необходимая информация - это X, низкий и высокий. Дополнительная информация - это событие и единица. Все эти вещи доступны в formatter в объекте point.options и ссылаются на то же самое, что вы даете им в цикле push данных.

  • 0
    Спасибо, Джек. Очень ценится Я ударился головой, пытаясь выучить JS для этого чертового календаря, но такие парни, как ты, делают это намного проще, чем могло бы быть!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню