Hi @dpeukert ,
Here you go. Its the Javascript solution I have worked upon. The idea is to form a query from the data you have then run that query in javascript , check the result and based on that result change the div color.
Run anywhere dashboard code below,
<dashboard script="custom_renderer.js">
<label>Test1</label>
<row>
<panel>
<table id="table_customcel2">
<search>
<query>index=_internal
| stats values(source) as source by index,host
| mvexpand source
| eval query = "index=" + index + " host=" + host + " source=\"" + source + "\""
| stats values(query) as query by index,host</query>
<earliest>-24h@h</earliest>
<latest>now</latest>
<sampleRatio>1</sampleRatio>
</search>
<option name="count">20</option>
<option name="dataOverlayMode">none</option>
<option name="drilldown">none</option>
<option name="percentagesRow">false</option>
<option name="rowNumbers">false</option>
<option name="totalsRow">false</option>
<option name="wrap">true</option>
</table>
</panel>
</row>
</dashboard>
Javascript file below,
require([
"underscore",
"splunkjs/mvc",
"splunkjs/mvc/searchmanager",
"splunkjs/mvc/tableview",
"splunkjs/mvc/simplexml/ready!"
], function(
_,
mvc,
SearchManager,
TableView
) {
var CustomCellRenderer = TableView.BaseCellRenderer.extend({
canRender: function(cellData) {
return _(cellData).contains(cellData.field);
},
render: function($td, cellData) {
var field = cellData.field;
if (field=="query") {
console.log("cellData: ", cellData);
var i;
for (i = 0; i < cellData.value.length; i++) {
//console.log(cellData.value[i]);
var mysearch = new SearchManager({
search: cellData.value[i],
preview: true,
cache: true,
status_buckets: 300
});
//console.log(mysearch.id)
var mainSearch = splunkjs.mvc.Components.get(mysearch.id);
var myResults = mainSearch.data("preview", { count: 25, offset: 10 });
console.log("Has data? ", myResults.hasData());
var text_color
if (myResults.hasData()) {
console.log("Green")
text_color = "green"
}
else {
console.log("Red")
text_color = "red"
}
$td.addClass("query").html(_.template('<div style="color:<%-text_color%>"><%-query%></div>',{query:cellData.value,text_color:text_color}));
}
}
if (field=="host") {
$td.addClass("host").html(_.template('<b><%-host%></b>',{host:cellData.value}));
}
if (field=="index") {
$td.addClass("index").html(_.template('<b><%-index%></b>',{index:cellData.value}));
}
}
});
mvc.Components.get("table_customcel2").getVisualization(function(tableView) {
var myCellRenderer = new CustomCellRenderer();
tableView.addCellRenderer(myCellRenderer);
});
});
Sid
... View more