我正在构建一个绘制一些数据的仪表板。使用splunk js图表显示数据。
我的问题不在于图表。但我怀疑我的逻辑。
发生了什么:
一
Object { splunkResults: Array[3],
metricHTML: "<div id="MetricOne" class="metric"><p class="lead"…s="metric">
<p class="lead">Metric Three</p></div>", metricID: Array[3]}
我的问题是只显示了一个图表,第一个图表。
如果你在view.js中查看这个函数:
splunkjs.UI.ready(chartToken, function() {});
我有一个console.log(&#34; test&#34;);这只打印一次。
我的错误是什么?
如果我能提供更多信息,请告诉我,我尝试了一些方法并且已经用完了想法。
Model.js
dashboard.getSystemMetrics = function(callback) {
var url = "/services/systemMetrics/?";
if (dashboard.url[1]) {
url = url + dashboard.url[1];
}
if (dashboard.limit) {
url = url + "&limit=" + dashboard.limit;
}
$.get(url, function(response) {
callback(response.metricHTML, null);
for (var i = 0; i < response.splunkResults.length; i++) {
console.log(i);
callback(null, response.splunkResults[i], response.metricID[i]);
}
});
};
View.js
view.graphsReady = function (data, id) {
console.log(id);
var chart = null;
var chartToken = splunkjs.UI.loadCharting('/javascripts/splunk.ui.charting.js', function() {
// Once we have the charting code, create a chart and update it.
chart = new splunkjs.UI.Charting.Chart($("#" + id), splunkjs.UI.Charting.ChartType.AREA, false);
});
splunkjs.UI.ready(chartToken, function() {
chart.setData(data, {
"chart.stackMode": "stacked",
"legend.placement": "top",
"axisTitleX.text": "Time",
"axisTitleY.text": "Data"
});
chart.draw();
});
};
Controller.js
$(function(){
// Grab user params
dashboard.url = window.location.href;
dashboard.url = dashboard.url.split("/?");
dashboard.limit = "day";
// Get Service Statuses
//dashboard.getQuickStatus(controller.quickStatusReady);
// TODO listener events
dashboard.getSystemMetrics(controller.systemMetricsReady);
});
controller.systemMetricsReady = function(html, data, id) {
if (html) {
view.insertMetricContainers(html);
} else if (data && id) {
view.graphsReady(data, id);
}
};
如果您想提出更好的问题标题,请务必继续。
编辑 - 我检查了日志是的。没有错误,如果我有错误,我也不会问这个问题。
我在set data function(view.js)中做了一个console.log,它只记录了一次,就像它应该有的那样。虽然函数graphReady被称为3次
UPDATE - 我在view.js代码中发现此函数只运行一次。尽管函数view.graphsReady被调用了3次。
var chartToken = splunkjs.UI.loadCharting('/javascripts/splunk.ui.charting.js', function() {
// Once we have the charting code, create a chart and update it.
chart = new splunkjs.UI.Charting.Chart($("#" + id), splunkjs.UI.Charting.ChartType.AREA, false);
console.log(chart);
});
console.log(chartToken);
因此,chartToken打印3次。但是,图表只打印一次。