xCharts按星期几排序

时间:2014-05-08 21:41:24

标签: javascript jquery json charts bar-chart

我对xCharts有一点问题,我想弄明白。我想显示一个条形图,显示一周中的数字。我已经做到了这一点,但是我有一个问题,让它以正确的顺序出现。见下图:

enter image description here

如您所见,一周中的日期不正确。通过阅读他们网站上的文档,我可以告诉它与提供选项sortX有关,所以我尝试了一些不同的东西,这对我来说并不适用。

以下是我使用的代码:

var data3 = {
    "xScale": "ordinal",
    "yScale": "linear",
    "type": "bar",
    "main": [{
        "className": ".bstats",
        "data": [{
            "x": "Monday",
            "y": 1
        }, {
            "x": "Tuesday",
            "y": 1
        }, {
            "x": "Wednesday",
            "y": 1
        }, {
            "x": "Thursday",
            "y": 1
        }, {
            "x": "Friday",
            "y": 1
        }, {
            "x": "Saturday",
            "y": 1
        }, {
            "x": "Sunday",
            "y": 1
        }]
    }]
};

var opts = {
    "tickFormatX": function (x) {
        return x.substr(0, 3);
    },
    "sortX": function (a, b) {
        /* Not sure what to do here */
        return 0;
    }
};

var myChart = new xChart('bar', data3, '#day_chart', opts);
var set = [];

$.getJSON('/dashboard/get/busy-days', function (data) {
    $.each(data, function (key, value) {
        set.push({
            x: value.x,
            y: parseInt(value.y, 10)
        });
    });

    myChart.setData({
        "xScale": "ordinal",
        "yScale": "linear",
        "main": [{
            className: ".bstats",
            data: set
        }]
    });
});

JSON请求返回的数据如下:

[
   {
      "x":"Monday",
      "y":48
   },
   {
      "x":"Tuesday",
      "y":65
   },
   {
      "x":"Wednesday",
      "y":67
   },
   {
      "x":"Thursday",
      "y":62
   },
   {
      "x":"Friday",
      "y":83
   },
   {
      "x":"Saturday",
      "y":65
   },
   {
      "x":"Sunday",
      "y":56
   }
]

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:6)

为星期几(mydays)创建一个对象应该是:

  

[ '星期一':1 '星期二':2 ...]

在sortX上只需实现ordenation。

    "sortX": function (a, b) {
        if (mydays[a.x] > mydays[b.x])
            return 1;
        if (mydays[a.x] < mydays[b.x])
            return -1;
        return 0;
        // or return (!mydays[a.x] && !mydays[b.x]) ? 0 : (mydays[a.x] < mydays[b.x]) ? -1 : 1; 

     }

链接:

http://tenxer.github.io/xcharts/docs/#opt-sortX

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort