Google Charts使用array.push说“无数据”

时间:2016-12-28 23:01:18

标签: charts polymer google-visualization polymer-1.0

尝试将google-pie-chart小部件嵌入到自定义小部件中,我显然没有正确格式化数据。

HTML参考

<widget-piechart-daily 
    dataid="ConsentDecisionsToday" 
    charttitle="Consent Decisions Today">
</widget-piechart-daily>

小工具HTML

<template>
    <google-chart id$="piechart{{dataid}}"
                  type='pie'
                  options$='{"title": "{{charttitle}}"}'
                  cols='[{"label":"Decision", "type":"string"}, {"label":"Count", "type":"number"}]'
                  rows$='{{values}}'>
    </google-chart>
</template>

Polymer()params

    ...
    values: {
        type: Array,
        value: function() {return []}
    },
    charttitle: {
        type: String,
        value: ""
    },
    ...

Widget Javascript

    registerCallback(this.dataid, function (data) {
        var y = data.data[0];
        self.values = [];
        //var z = y[Object.keys(y)[0]];
        for (var key in y) {
            if (y.hasOwnProperty(key)) {
                var z = y[key];
                i = z;
                if (key != 'Today'){
                    var i = parseFloat(Math.round(z * 100) / 100).toFixed(self.decimals);
                    self.values.push([key,i])
                }
            }
        }
        self.isloading = false;
        console.log(self.values);
    });

回调是针对pubnub流的。当我记录self.values时,它看起来像这样:

enter image description here

但这是图表的呈现方式:

enter image description here

如何修改self.values.push([key,i])来解决此问题?

2 个答案:

答案 0 :(得分:2)

根据data formatPie Chart

第0列应为'string'
第1列应为'number'

但是,第1列'string'toFixed)的结果

if (key != 'Today'){
    var i = parseFloat(Math.round(z * 100) / 100).toFixed(self.decimals);
    self.values.push([key,i])
}

尝试使用数字

if (key != 'Today'){
    var i = parseFloat(Math.round(z * 100) / 100);
    self.values.push([key,i])
}

答案 1 :(得分:0)

您应该使用Polymer array mutation methods修改数组并通知绑定系统更改:

"channel": "U024BE7LH" ---userID
"channel": "D7Y15W6PF" ---channelID