Dashboards & Visualizations

Javascript in Dashboard not working

TheEggi98
Path Finder

I tried to add a simple JS to a dashboard but nothing i tried works.
I have Splunk 8.2.1 single instance on Windows.

The script is in C:\Program Files\Splunk\etc\apps\<appname>\appserver\static

i restartet the splunk service several times and clicked the bump button several times.
JS is active in my browser and the cache got cleared several times too.

When i go to http://127.0.0.1:8000/de-DE/app/<appname>/<dashboardname>/<scriptname> i just get {}


My Dashboard:

<form script="btnclick.js">
  <label>JS Test</label>
  <init>
  </init>
  <fieldset submitButton="false">
    <input type="text" token="field1">
      <label>field1</label>
      <default>$randInt$</default>
    </input>
  </fieldset>
  <row>
    <panel>
      <html>
          <button id="rand" class="btn btn-primary">Random</button>
          <p>
            $randInt$
          </p>
      </html>
    </panel>
  </row>
</form>

 

 My JS:

require(
	[
		"splunkjs/mvc",
		"splunkjs/mvc/simplexml/ready!"
	], function(mvc) {
		var tokens = mvc.Components.get("default");
		console.log("Test");
		$('#rand').on("click",function(){
			tokens.set("randInt", 2);
		});
	}
);

 

Why does it not work?

Labels (2)
0 Karma
1 Solution

kamlesh_vaghela
SplunkTrust
SplunkTrust

@TheEggi98 

I have observed another thing, may be that will help you.

The Observation is regarding html panel.

"When any token been changed and reflected in HTML, it will re-render the html content and removed previously assigned events on any html element."

So Please try below code and let me know your observations as well.

 

<form script="a.js">
  <label>JS Test</label>
  <init>
  </init>
  <fieldset submitButton="false">
    <input type="text" token="field1">
      <label>field1</label>
    </input>
  </fieldset>
  <row>
    <panel>
      <html>
          <button id="rand" class="btn btn-primary">Random</button>
      </html>
    </panel>
    <panel>
      <html>
          <p>
            $randInt$
          </p>
      </html>
    </panel>
  </row>
</form>

 

require([
    'underscore',
    'splunkjs/mvc',
    'jquery',
    "splunkjs/mvc/simplexml/ready!"
], function(_, mvc, $) {
    var tokens = mvc.Components.get("default");
    console.log("Test");
    $(document).ready(function() {
        console.log("Strt")
        $('#rand').on("click", function() {
            console.log("clicked")
            console.log(tokens.get("field1"))
            tokens.set("randInt", tokens.get("field1"));
            console.log(tokens.get("randInt"))
            console.log($('#rand'))
        });
    })
});

 

Thanks
KV
▄︻̷̿┻̿═━一   😉

If any of my reply helps you to solve the problem Or gain knowledge, an upvote would be appreciated.

View solution in original post

kamlesh_vaghela
SplunkTrust
SplunkTrust

@TheEggi98 

Your code looks good. Even  http://127.0.0.1:8000/de-DE/app/<appname>/<dashboardname>/<scriptname> working fine for me.

Can you please try below version in your instance? 

 

require([
    'splunkjs/mvc',
    'jquery',
    "splunkjs/mvc/simplexml/ready!"
], function(mvc, $) {
    var tokens = mvc.Components.get("default");
    console.log("Test");
    $(document).ready(function() {
        $('#rand').on("click", function() {
            console.log(tokens.get("field1"))
            tokens.set("randInt", tokens.get("field1"));
        });
    })
});

 

 Thanks
KV
▄︻̷̿┻̿═━一   😉

If any of my reply helps you to solve the problem Or gain knowledge, an upvote would be appreciated.

TheEggi98
Path Finder

@kamlesh_vaghela 
Interesting behavior, i pasted your Code and it worked, but the input only set the token once.

When i type 20 in the input and press the Button first time, the token $randInt$ get set to 20, but when i change the input from 20 to 10 and press the button again nothing happens.

I changed the Line where the token get set to

   tokens.set("randInt", console.log(tokens.get("field1")));

to test something, every buttonclick write a log with the current value from the input.
Is it a "feature" from Splunk to set the token just one time?
I Also tried to unset the token before setting it again, also just one time set.

Tags (1)
0 Karma

kamlesh_vaghela
SplunkTrust
SplunkTrust

@TheEggi98 

I have observed another thing, may be that will help you.

The Observation is regarding html panel.

"When any token been changed and reflected in HTML, it will re-render the html content and removed previously assigned events on any html element."

So Please try below code and let me know your observations as well.

 

<form script="a.js">
  <label>JS Test</label>
  <init>
  </init>
  <fieldset submitButton="false">
    <input type="text" token="field1">
      <label>field1</label>
    </input>
  </fieldset>
  <row>
    <panel>
      <html>
          <button id="rand" class="btn btn-primary">Random</button>
      </html>
    </panel>
    <panel>
      <html>
          <p>
            $randInt$
          </p>
      </html>
    </panel>
  </row>
</form>

 

require([
    'underscore',
    'splunkjs/mvc',
    'jquery',
    "splunkjs/mvc/simplexml/ready!"
], function(_, mvc, $) {
    var tokens = mvc.Components.get("default");
    console.log("Test");
    $(document).ready(function() {
        console.log("Strt")
        $('#rand').on("click", function() {
            console.log("clicked")
            console.log(tokens.get("field1"))
            tokens.set("randInt", tokens.get("field1"));
            console.log(tokens.get("randInt"))
            console.log($('#rand'))
        });
    })
});

 

Thanks
KV
▄︻̷̿┻̿═━一   😉

If any of my reply helps you to solve the problem Or gain knowledge, an upvote would be appreciated.

TheEggi98
Path Finder

Thats really good to know.

Now only the capabilities of JS can stop me from improving Dashboards 😄

0 Karma
Got questions? Get answers!

Join the Splunk Community Slack to learn, troubleshoot, and make connections with fellow Splunk practitioners in real time!

Meet up IRL or virtually!

Join Splunk User Groups to connect and learn in-person by region or remotely by topic or industry.

Get Updates on the Splunk Community!

Automated Threat Analysis: Available in ES Premier

Automated Threat Analysis: Centralize and Accelerate Phishing Investigations in Splunk Enterprise ...

What’s New in Splunk AI: Volume 02

Welcome to the second edition of “What’s New in Splunk AI” where we look at the latest and greatest updates, ...

Best Practices: Splunk auto adjust pipeline queue

When you enable autoAdjustQueue in Splunk, maxSize should be understood as the queue size Splunk starts with ...