如何计算 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
我想做的是计算我在一列中的 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