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

gt2*_*t29 5 sorting jquery loops highcharts

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

somerhing: 10 $
something: 18 $
something: 2 $
something: 8 $
Run Code Online (Sandbox Code Playgroud)

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

somerhing: 2 $
something: 8 $
something: 10 $
something: 18 $
Run Code Online (Sandbox Code Playgroud)

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

      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;
           },
Run Code Online (Sandbox Code Playgroud)

任何想法如何排序?

谢谢.

Zre*_*ren 14

加上上面的答案.

我也希望获得工具提示的默认格式.所以我调用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
        },
    });
});
Run Code Online (Sandbox Code Playgroud)

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
},
Run Code Online (Sandbox Code Playgroud)


Sha*_*oli 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;
           },
Run Code Online (Sandbox Code Playgroud)