想要对highcharts工具提示结果进行排序

时间:2011-07-29 01:11:57

标签: jquery sorting loops highcharts

我的highcharts工具提示中有4个结果,它们没有排序,看起来像这样:

somerhing: 10 $
something: 18 $
something: 2 $
something: 8 $

我希望将它们从最低$到最高$ 2从$ $排序到18 $这样:

somerhing: 2 $
something: 8 $
something: 10 $
something: 18 $

以下是工具提示结果的高图循环:

      tooltip: {
           formatter: function() {
           var s = '<strong>something: '+ this.x +'</strong>';

           $.each(this.points, function(i, point) {
           s += '<br/>'+ point.series.name +': '+ point.y +currency;
           });

           return s;
           },

任何想法如何排序?

感谢。

2 个答案:

答案 0 :(得分:14)

添加上述答案。

我也希望获得工具提示的默认格式。所以我在formatter回调中调用了tooltip.defaultFormatter.call(this, tooltip)

请注意,它按降序排序。如果您想升序,只需删除items.reverse()即可。

HighCharts v4.0.4

JSFiddle

function isArray(obj) {
    return Object.prototype.toString.call(obj) === '[object Array]';
}

function splat(obj) {
    return isArray(obj) ? obj : [obj];
}

$(function () {
    $('#container').highcharts({
        tooltip: {
            formatter: function (tooltip) {
                var items = this.points || splat(this),
                    series = items[0].series,
                    s;

                // sort the values
                items.sort(function(a, b){
                    return ((a.y < b.y) ? -1 : ((a.y > b.y) ? 1 : 0));
                });
                items.reverse();

                return tooltip.defaultFormatter.call(this, tooltip);
            },
            shared: true
        },
    });
});

HighCharts v3.0.2

基于适用上述defaultFormatter功能。

tooltip: {
    formatter: function (tooltip) {
        var items = this.points || splat(this),
            series = items[0].series,
            s;

        // build the header
        s = [series.tooltipHeaderFormatter(items[0])];

        // sort the values
        items.sort(function(a, b){
            return ((a.y < b.y) ? -1 : ((a.y > b.y) ? 1 : 0));
        });
        items.reverse();

        // build the values
        $.each(items, function (i, item) {
            series = item.series;
            s.push((series.tooltipFormatter && series.tooltipFormatter(item)) ||
                item.point.tooltipFormatter(series.tooltipOptions.pointFormat));
        });

        // footer
        s.push(tooltip.options.footerFormat || '');

        return s.join('');
    },
    shared: true
},

答案 1 :(得分:5)

试试这个

tooltip: {
           formatter: function() {
           var s = '<strong>something: '+ this.x +'</strong>';

           var sortedPoints = this.points.sort(function(a, b){
                 return ((a.y < b.y) ? -1 : ((a.y > b.y) ? 1 : 0));
             });
           $.each(sortedPoints , function(i, point) {
           s += '<br/>'+ point.series.name +': '+ point.y +currency;
           });

           return s;
           },