想要对高图表工具提示结果进行排序

发布于 2024-11-26 21:57:22 字数 670 浏览 2 评论 0原文

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

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

我想将它们从最低 $ 到最高 $ 从 2 $ 到 18 $ 排序,如下所示:

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

这是工具提示结果的 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;
           },

任何想法如何要排序吗?

谢谢。

I have 4 results inside my highcharts tooltip and they are not sorted they looks like this:

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

I want to sort them from lowest $ to highest $ from 2$ to 18$ like this:

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

Here is the highcharts loop for tooltip results:

      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;
           },

Any ideas how to sort it ?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

无法言说的痛 2024-12-03 21:57:22

补充一下上面的答案。

我也想拥有工具提示的默认格式。所以我在 格式化程序中调用了 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
},

Adding on to the above answer.

I wanted to have the default formatting of the tooltip as well. So I called tooltip.defaultFormatter.call(this, tooltip) inside the formatter callback.

Note that it is sorted in descending order. Just remove the items.reverse() if you want ascending order.

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

Based on the defaultFormatter function with the above applied to it.

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
},
山川志 2024-12-03 21:57:22

试试这个

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;
           },

Try this

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;
           },
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文