由于使用DataMap接收的值,Google图表会因无效颜色而引发错误

时间:2016-07-30 11:16:39

标签: javascript arrays

由于使用DataMap收到的值,Google图表会因无效颜色而引发错误。

您可以在选项中看到颜色:[颜色]。

如果我直接使用如下的颜色值,那么它可以正常工作。

colors: ['#006400', '#3cb371', 'red', '#f5fffa'],

但是如果我通过数据映射获取值并且它具有相同的输出,则它不起作用并抛出错误:

"'#006400' is not a valid color string".

是否存在任何数据格式问题?

示例JSON数据:

{"cols":[{"label":"status","type":"string"},{"label":"count","type":"string"}],"rows":[{"c":[{"v":"CLOSED"},{"v":3}]},{"c":[{"v":"VERIFIED"},{"v":35}]},{"c":[{"v":"RESOLVED"},{"v":15}]},{"c":[{"v":"IN_PROGRESS"},{"v":92}]},{"c":[{"v":"ASSIGNED"},{"v":63}]},{"c":[{"v":"NEW"},{"v":16}]},{"c":[{"v":""},{"v":0}]}]}

自定义颜色(有问题):

const DataMap = {
    CLOSED: '#006400',
    VERIFIED: '#006400',
    RESOLVED: '#3cb371',
    REOPENED: 'red',
    IN_PROGRESS: '#f5fffa',
    ASSIGNED: 'brown',
    NEW: 'brown',
    UNCONFIRMED: 'brown'
};

let myColors = [];
Object.keys(DataMap).forEach((key, index) => {
    if (jsonData.search(key) !== -1) {
        myColors.push("'" + DataMap[key] + "'");
    }
});

options = {
    title: chartTitle,
    width: '410',
    height: '320',
    backgroundColor: '#f5fffa',
    is3D: true,
    colors: [myColors],
    chartArea: {
        left: "20%",
        top: "20%",
        height: "100%",
        width: "100%"
    }
    };
    chart.draw(data, options);

直接颜色(工作正常):

 options = {
    title: chartTitle,
    width: '410',
    height: '320',
    backgroundColor: '#f5fffa',
    is3D: true,
    colors: ['#006400', '#3cb371', 'red', '#f5fffa'],
    chartArea: {
        left: "20%",
        top: "20%",
        height: "100%",
        width: "100%"
        }
     };
    chart.draw(data, options);

可能是什么问题,我该如何解决?

1 个答案:

答案 0 :(得分:1)

我现在能说的是:

myColors.push("'" + DataMap[key] + "'");

应改为

myColors.push(DataMap[key]);

因为DataMap中每个键的值都已经是字符串,即DataMap[key]是一个字符串。

其次,而不是

colors: [myColors],

应该只是

colors: myColors,

因为myColors已经是一个数组。