如何使用salesforce analaytics api在Matrixreport中为nvd3行和Barchart构建数据

时间:2015-05-01 14:54:17

标签: javascript ajax d3.js nvd3.js

我是NVD3的新手。我试图从销售人员的Matrix报告中获取数据,并在Line plus条形图中显示该数据。好像我得到没有数据的图表。在特定位置悬停工具提示时,它显示NAN。所以我认为我无法在报告中正确构建数据。所以你们有任何建议,如果可能的话你也可以粘贴代码。 提前致谢。 我把这作为参考并尝试。 http://nvd3.org/examples/linePlusBar.html

1 个答案:

答案 0 :(得分:0)

正如您在评论中所说,测试数据一切正常。然后,问题必须与解析数据的方式有关。此外,您在使用nvd3时遇到一些问题。

快速查看代码会显示一些问题:

  1. 以下一行是写' + matrixReportId'在每个请求中:

    $.ajax('/services/data/v29.0/analytics/reports/+matrixReportId', {
    

    我想你可能想写matrixReportId的内容,对吧?所以你需要这样做:

    $.ajax('/services/data/v29.0/analytics/reports/' + matrixReportId, {
    
  2. 您正在对空值数组执行chartData.push()。只有在将元素添加到数组后才应该这样做:

    $.each(response.groupingsDown.groupings, function(di, de) {
        var values = [];
        $.each(response.groupingsAcross.groupings, function(ai, ae) {
            values.push({"x": ae.label, "y": response.factMap[de.key+"!"+ae.key].aggregates[0].value});
        });
        chartData.push({"key":de.label, "values": values});
    });
    
  3. 每次数据更改时,都应重新创建图表。您应该只更改基准,然后更新图表。

  4. 您忘记致电nv.utils.windowResize()。

  5. 我编辑了jsfiddle以包含这些更改。请测试一下: https://jsfiddle.net/egLgaxc4/5/

    另外,你可能最好不要使用jquery,因为d3 + jquery会变得非常沉重。 D3有自己的ajax(看看d3.xhr),foreach和选择方法。你真的不需要jquery。

    在这里,我创建了一个仅使用d3:https://jsfiddle.net/fwuzk3y6/5/

    的示例