格式化Google可视化表中每条记录的最小值和最大值

时间:2014-06-09 17:39:51

标签: php ajax formatting google-visualization

我可以通过简单的方法格式化表格中的每条记录,以区分该记录的最高记录和最低记录吗?我已经看过箭头格式化程序,但看起来我需要提供一个值,然后将它添加到每个单元格。不是我需要的,但也许我可以修改它以某种方式使它适用于我的情况。这是我想要应用它的表。

http://s27.postimg.org/d0kw6x8zn/COGS.png

例如,
在第一个记录中,JTB将是红色,而Orange Park将是绿色,因为它是商品成本(越低越好)。如果需要,我可以提供代码,但我大多只需要朝着正确的方向努力。我使用ajax来请求表,然后php生成表,然后编码为JSON并返回到ajax,然后生成Google可视化。

1 个答案:

答案 0 :(得分:0)

您必须手动添加单元格属性以突出显示低/高值。假设你有低级和高级值的CSS类'low''high',你可以这样做:

for (var i = 0; i < data.getNumberOfRows(); i++) {
    var lowIndices = [], highIndices = [], lowVal = null, highVal = null;
    for (var j = 1; j < data.getNumberOfColumns(); j++) {
        if (lowVal == null || data.getValue(i, j) < lowVal) {
            // if we have a new lowVal, reset lowVal and lowIndices
            lowVal = data.getValue(i, j);
            lowIndices = [j];
        }
        else if (data.getValue(i, j) == lowVal) {
            // if we tied a lowVal, add the new index
            lowIndices.push(j);
        }

        if (highVal == null || data.getValue(i, j) > highVal) {
            // if we have a new highVal, reset highVal and highIndices
            highVal = data.getValue(i, j);
            highIndices = [j];
        }
        else if (data.getValue(i, j) == highVal) {
            // if we tied a highVal, add the new index
            highIndices.push(j);
        }
    }
    // add the high/low classes to the appropriate cells
    for (var k = 0; k < lowIndices.length; k++) {
        data.setProperty(i, lowIndices[k], 'className', 'low');
    }
    for (var l = 0; l < highIndices.length; l++) {
        data.setProperty(i, highIndices[l], 'className', 'high');
    }
}