I have a complicated dashboard, with javascript, many panels, and all kinds of things. Some of my panels sometimes show "Search is waiting for input..." but I don't know how to figure out which token is not set.
Is there something I can do in the javascript inspector that would help me figure out which token isn't being set?
Absolutely. First open up the Javascript Console: https://webmasters.stackexchange.com/a/77337
Then paste in the following:
var missing_tokens = []
for(var attribute in splunkjs.mvc.Components.attributes){
if(splunkjs.mvc.Components.attributes.hasOwnProperty(attribute) && typeof splunkjs.mvc.Components.getInstance(attribute).lastError != "undefined" && splunkjs.mvc.Components.getInstance(attribute).lastError == "Search is waiting for input..."){
console.log("I have a manager..", attribute, splunkjs.mvc.Components.getInstance(attribute).lastError)
var search=splunkjs.mvc.Components.attributes[attribute].attributes.search.replace(/\$\$\S+\$\$/g, "")
var myRegex = /\$(\S*)\$/g,
matches,
tokens = [];
while (matches = myRegex.exec(search)) {
if(typeof splunkjs.mvc.Components.getInstance("submitted").get(matches[1]) == "undefined"){
if(!(matches[1] in missing_tokens)){
missing_tokens[matches[1]] = 0
}
missing_tokens[matches[1]]++
}
}
}
}
for(var token in missing_tokens){
console.log("We found ", missing_tokens[token], " searches that are missing ", token, "-- add it via splunkjs.mvc.Components.getInstance(\"submitted\").set(\"" + token + "\", \"\")")
}
The result will tell you how many searches are dependent on each token, and what you can manually do to set a token (for troubleshooting, or otherwise) also via the Javascript Console.
Absolutely. First open up the Javascript Console: https://webmasters.stackexchange.com/a/77337
Then paste in the following:
var missing_tokens = []
for(var attribute in splunkjs.mvc.Components.attributes){
if(splunkjs.mvc.Components.attributes.hasOwnProperty(attribute) && typeof splunkjs.mvc.Components.getInstance(attribute).lastError != "undefined" && splunkjs.mvc.Components.getInstance(attribute).lastError == "Search is waiting for input..."){
console.log("I have a manager..", attribute, splunkjs.mvc.Components.getInstance(attribute).lastError)
var search=splunkjs.mvc.Components.attributes[attribute].attributes.search.replace(/\$\$\S+\$\$/g, "")
var myRegex = /\$(\S*)\$/g,
matches,
tokens = [];
while (matches = myRegex.exec(search)) {
if(typeof splunkjs.mvc.Components.getInstance("submitted").get(matches[1]) == "undefined"){
if(!(matches[1] in missing_tokens)){
missing_tokens[matches[1]] = 0
}
missing_tokens[matches[1]]++
}
}
}
}
for(var token in missing_tokens){
console.log("We found ", missing_tokens[token], " searches that are missing ", token, "-- add it via splunkjs.mvc.Components.getInstance(\"submitted\").set(\"" + token + "\", \"\")")
}
The result will tell you how many searches are dependent on each token, and what you can manually do to set a token (for troubleshooting, or otherwise) also via the Javascript Console.
Great detailed answer. I tend to simply throw relevant tokens into the title or subtitle bar of each panel while developing. Any tokens that aren't set should be obvious.