我正在使用 Google 可视化 GeoChart 根据各州的数量网络警报对美国各州进行颜色编码。我通过 Solarwinds Orion 获得这些警报,其中我的所有节点都有一个自定义属性分配给一个状态。当节点宕机时,它会触发警报,并且节点的分配状态也包括在内。我要解决的问题是,我有一些状态为零警报,我可以将其设置为默认颜色绿色,但是有些状态我们不操作,我希望将这些状态排除在任何颜色之外全部,并且只有一个单独的灰色,null。
我在底部添加了一个指向我的 Geochart 图像的链接。例如。我在加利福尼亚有东西,但没有警报,所以我希望它是绿色的。但是我在蒙大拿州没有任何东西,所以我希望该州显示为灰色。我有所有的代码来绘制确实触发了警报的状态,并且对于具有零警报的任何状态,我确实有一个“默认”背景颜色,除非我无法弄清楚代码来排除我们根本不存在的某些状态我想是灰色或空的颜色。
这是我的代码...
<!--Begin GeoMap code-->>
var swql="\
SELECT SUBSTRING(TOSTRING(DATETRUNC('Day',TimeStamp)),0,12) AS Day,\
COUNT(*) AS Qty,\
ISNULL(AlertHistory.AlertObjects.Node.CustomProperties.State,'Unknown') AS State\
FROM Orion.AlertHistory\
WHERE YEAR(TOLOCAL(TimeStamp)) = YEAR(GETDATE()) AND MONTH(TOLOCAL(TimeStamp)) = "+querymonth+ "\
AND\
DAY(TOLOCAL(TimeStamp)) = "+querydate+" AND EVENTTYPE='0'\
GROUP BY DATETRUNC('Day',TimeStamp),AlertHistory.AlertObjects.Node.CustomProperties.State\
ORDER BY DATETRUNC('Day',TimeStamp) DESC,QTY DESC"
var params = JSON.stringify({
query: swql,
parameters: {
}
});
$.ajax({
type: 'POST',
url: '/Orion/Services/Information.asmx/QueryWithParameters',
data: params,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(response) {
console.log(response.d.Rows);
google.charts.load('current', {'packages':['geochart'],'mapsApiKey': 'MyGoogleAPIKeyRemoved'});
google.charts.setOnLoadCallback(drawRegionsMap);
function drawRegionsMap() {
var dataTable = new google.visualization.DataTable();
dataTable.addColumn({ type: 'string', id: 'State' });
dataTable.addColumn({ type: 'number', id: 'Qty' });
for(var i=0; i < response.d.Rows.length; i++){
var row = [response.d.Rows[i][2],response.d.Rows[i][1]];
dataTable.addRow(row);
}
var options = {
region: 'US',
resolution: 'provinces',
colorAxis: {colors:['yellow','red']},
datalessRegionColor: '#AADAA6',
legend: 'none',
};
var chart = new google.visualization.GeoChart(document.getElementById('regions_div'));
chart.draw(dataTable, options);
}
}
})
<!--end GeoMap code-->>