如何计算 google 图表仪表板上的仪表板控件

How to count dashboard control on google chart dashboard

我想做的是计算我在一列中的 2 个或更多 ControlWrapper 上的值,但到目前为止我只意识到我只能看到 1 ControlWrapper "and" 另一个 ControlWrapper 和我之间的值希望使用 "or" 而不是 "and".

http://i.stack.imgur.com/fl2kd.png

这是一张关于我要做什么的示例图片,我希望看到 1-3 和 6-8 之间的内容以及我在 return 中的内容(至少在这个示例中) 为空

Google 默认情况下不提供实现此功能的功能,但您有非常好的工具。
我已经利用了他们的 data.getFilteredRows([{column:X, minValue:XY, maxValue:YY}]),通过简单地创建两个滑块(就像你的图片),只要两个滑块中的任何一个 "changed on" 添加一个监听器,检查两者的 minValue 和 maxValue,传递所有将四个值放入函数中,然后将另一个图表的视图设置为返回的行。

我的听众长这样

google.visualization.events.addListener(control, 'statechange', function () {
    stateChangeFunction();
});

stateChangeFunction() 看起来像这样

function stateChangeFunction() {
    var lowFilter1 = control.getState().lowValue;
    var highFilter1 = control.getState().highValue;
    var lowFilter2 = control2.getState().lowValue;
    var highFilter2 = control2.getState().highValue;

    customFilterChart.setView({
        'rows': customFilter(lowFilter1, highFilter1, lowFilter2, highFilter2)
    });
    customFilterChart.draw();
};

它只是读取两个滑块的最高值和最低值,然后将我的 customFilteredChart 的视图设置为该函数返回的行

function customFilter(low1, high1, low2, high2) {
    var rows = []
//Using googles own getFilteredRows
    rows = data.getFilteredRows([{
        column: 1,
        minValue: low1,
        maxValue: high1
    }]);
//Then doing the same with the other two values.
    rows = rows.concat(data.getFilteredRows([{
        column: 1,
        minValue: low2,
        maxValue: high2
    }]));
//Removing duplicate rows to avoid displaying them twice.
    var uniqueRows = rows.reduce(function(a,b){if(a.indexOf(b)<0)a.push(b);return a;},[]);

    return uniqueRows
}

另外我想感谢 Christian Landgren for this wonderful 回复。

最后,这是我在 fiddle 中制作的:Fiddle