All Apps and Add-ons

In HTML Dashboards, can token forwarding be used with a submit button?

lyndac
Contributor

I am following this example to use token forwarding in my HTML dashboard. I need to do some fancy things with the inputs selected to generate the correct search. The token forwarding is working nicely, but it submits the search every time a token changes. I only want to submit the search when the user presses the submit button. Is this possible?

The majority of the code is code generated when I did "convert to HTML". These are the relevant changes from that generated code:

var search1 = new SearchManager({
            "id": "search1",
            "status_buckets": 0,
            "earliest_time":"$timer_tok.earliest$",
            "latest_time": "$timer_tok.latest$",
            "cancelOnUnload": true,
            "search": "$searchQuery$",
            "earliest_time": "0",
            "app": utils.getCurrentApp(),
            "auto_cancel": 90,
            "preview": true,
            "runWhenTimeIsUndefined": false
        }, {tokens: true}); 

// Code to generate inputs and table go here.  I have multiple
// inputs that are either dropdown or text box.  I pass them all
//to the token forwarder and return a search string.  This is a simplified
// method call:
    new TokenForwarder(['$where_tok$', '$name_tok$', '$host_tok$'], '$searchQuery$', function(where_tok, name_tok, host_tok) {
           return "index=foo +" name_tok + " " + where_tok + " | stats count by " + host_tok
    });

    var submit = new SubmitButton({
        id: 'submit', el: $('#search_btn') }, {tokens:true}).render();

    submit.on("submit", function() {
        submitTokens();
    });

     //The example adds this function.  I commented it out thinking it would
     // not run the search just because the tokens are set.  It had no effect 
     // that I could see.
    //defaultTokenModel.on("change.searchQuery", function () {
    //      search1.startSearch();
    //});

    submitTokens();

   //DASHBOARD READY ...
0 Karma
1 Solution

lyndac
Contributor

The example is written to not have a submit button. To modify it to respect the submit button, you need to tell the search manager to only run when the tokens are submitted. To do this add 'tokenNamespace: "submitted"' to the search manager definition like below.

 var search1 = new SearchManager({
             "id": "search1",
             "status_buckets": 0,
             "earliest_time":"$timer_tok.earliest$",
             "latest_time": "$timer_tok.latest$",
             "cancelOnUnload": true,
             "search": "$searchQuery$",
             "earliest_time": "0",
             "app": utils.getCurrentApp(),
             "auto_cancel": 90,
             "preview": true,
             "runWhenTimeIsUndefined": false
         }, {tokens: true, tokenNamespace: "submitted"});  //make search respect the submit button

View solution in original post

0 Karma

lyndac
Contributor

The example is written to not have a submit button. To modify it to respect the submit button, you need to tell the search manager to only run when the tokens are submitted. To do this add 'tokenNamespace: "submitted"' to the search manager definition like below.

 var search1 = new SearchManager({
             "id": "search1",
             "status_buckets": 0,
             "earliest_time":"$timer_tok.earliest$",
             "latest_time": "$timer_tok.latest$",
             "cancelOnUnload": true,
             "search": "$searchQuery$",
             "earliest_time": "0",
             "app": utils.getCurrentApp(),
             "auto_cancel": 90,
             "preview": true,
             "runWhenTimeIsUndefined": false
         }, {tokens: true, tokenNamespace: "submitted"});  //make search respect the submit button
0 Karma
Get Updates on the Splunk Community!

Join Us for Splunk University and Get Your Bootcamp Game On!

If you know, you know! Splunk University is the vibe this summer so register today for bootcamps galore ...

.conf24 | Learning Tracks for Security, Observability, Platform, and Developers!

.conf24 is taking place at The Venetian in Las Vegas from June 11 - 14. Continue reading to learn about the ...

Announcing Scheduled Export GA for Dashboard Studio

We're excited to announce the general availability of Scheduled Export for Dashboard Studio. Starting in ...