Hello,
I am having trouble understanding why a token update via JavaScript does not cause a panel that is dependent on that token to refresh. I have a date input called status_date
that is configured to set a token tok_status_date
during initialization (with today's date), and when it changes. JS file is as follows:
require([
'jquery',
'splunkjs/mvc',
'splunkjs/mvc/simplexml/ready!'
], function ($, mvc) {
// initialization
var tokens = mvc.Components.get("default");
document.getElementById("status_date").valueAsDate = new Date();
tokens.set("tok_status_date",document.getElementById("status_date").value);
$('#status_date').on("change", function (e){
tokens.set("tok_status_date",document.getElementById("status_date").value);
});
});
An HTML panel that I have configured will always show the value of tok_status_date
, even when I update the value of the input.
<row>
<panel>
<html>
<center><h1>$tok_status_date$</h1></center>
</html>
</panel>
</row>
I also have an XML panel whose search is dependent on tok_status_date
, but it does not update whenever I change the value of the input:
<query>| makeresults | eval Day = strftime(strptime("$tok_status_date$","%Y-%m-%d"),"%d/%m/%Y") | table Day</query>
Why is this? Am I missing something in the JavaScript file?
Thank you and best regards,
Andrew
I've managed to solve the problem. I was only working with the "default" tokens when I should have also been using the "submitted" tokens. Here is the script that works:
require([
'jquery',
'splunkjs/mvc',
'splunkjs/mvc/simplexml/ready!'
], function ($, mvc) {
// initialization
var def_tok = mvc.Components.get("default");
var sub_tok = mvc.Components.get("submitted");
document.getElementById("status_date").valueAsDate = new Date();
def_tok.set("tok_status_date",document.getElementById("status_date").value);
sub_tok.set("tok_status_date",document.getElementById("status_date").value);
$('#status_date').on("change", function (e){
def_tok.set("tok_status_date",document.getElementById("status_date").value);
sub_tok.set("tok_status_date",document.getElementById("status_date").value);
});
});
I've managed to solve the problem. I was only working with the "default" tokens when I should have also been using the "submitted" tokens. Here is the script that works:
require([
'jquery',
'splunkjs/mvc',
'splunkjs/mvc/simplexml/ready!'
], function ($, mvc) {
// initialization
var def_tok = mvc.Components.get("default");
var sub_tok = mvc.Components.get("submitted");
document.getElementById("status_date").valueAsDate = new Date();
def_tok.set("tok_status_date",document.getElementById("status_date").value);
sub_tok.set("tok_status_date",document.getElementById("status_date").value);
$('#status_date').on("change", function (e){
def_tok.set("tok_status_date",document.getElementById("status_date").value);
sub_tok.set("tok_status_date",document.getElementById("status_date").value);
});
});
Thank you so much! You saved me. I could not find this answer anywhere else.
thanks man!