хочу отсортировать результаты всплывающей подсказки - PullRequest
5 голосов
/ 29 июля 2011

У меня есть 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 ]

14 голосов
/ 06 июня 2013

Добавление к ответу выше.

Я также хотел иметь форматирование всплывающей подсказки по умолчанию.Поэтому я позвонил tooltip.defaultFormatter.call(this, tooltip) внутри обратного вызова formatter .

Обратите внимание, что он отсортирован в порядке убывания.Просто удалите 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
},
5 голосов
/ 29 июля 2011

Попробуйте это

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;
           },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...