Splunk Dev

Changing multiple tables in SimpleXML using SplunkJS

pgullette
Explorer

I need to be able to modify the behavior of any number of tables on a dashboard created with SimpleXML. I have my custom JavaScript added to the page and running properly. I am using mvc.Components.getInstances() to get a full list of all components on the page, and this is working as expected. Also, I'm using splunkjs/mvc/simplexml/ready! as a dependency so that my JavaScript executes after everything is ready. And I should mention that I'm using getInstances() instead of getInstance() because I want the behavior to be generic for any number of tables.

Here's where the problem is. When I iterate through my instances returned by getInstances(), certain properties are not yet available. Specifically, since I am trying to manipulate tables on the dashboard, I am unable to access the visualization member as it's NULL at the time my code is running. What is the proper way to manipulate a SimpleXML table after it's fully loaded? And another related question, is there an easy way to determine if an object returned by getInstances() is specifically a table without looking for a specific property?

Thanks for any help.

0 Karma

helenashton
Path Finder

Did you find a solution? I would also like to address all Tables (unknown ids).

0 Karma

spongmob
Explorer

So we started off running a loop finding ".table.splunk-view".each". We were then able to get the attribute "id" of each instance. From there we went about it in a similar manner as Marco's solution below by plugging in the id we gathered in the previous step.

Hope this helps!

0 Karma

helenashton
Path Finder

It does (that's exactly what I am trying to do), but it would be great if you could share that snippet of code 🙂

0 Karma

marco_sulla
Path Finder
var libs = [
    "jquery",
    "splunkjs/mvc",
    "splunkjs/mvc/simplexml/element/table",
    "splunkjs/mvc/simplexml/ready!",
];

require(libs, function ($, mvc, TableElement) {
    "use strict";

    $.each(mvc.Components.getInstances(), function (i, view) {
        /**
         *  @author Marco Sulla (marcosullaroma@gmail.com)
         *  @date Jan 31, 2015
         */

        if (view instanceof TableElement) {
            view.getVisualization(function (view) {
                view.on("rendered", function () {
                    console.log(view);
                 });
            });
        }
    });
});

Sources:
Web Framework Reference
Examples App
share/splunk/search_mrsparkle/exposed/js/build/simplexml/mvc.js source code

spongmob
Explorer

Curious to see if you figured out a solution to this problem.

Thanks,

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!

[Puzzles] Solve, Learn, Repeat: Character substitutions with Regular Expressions

This challenge was first posted on Slack #puzzles channelFor BORE at .conf23, we had a puzzle question which ...

Splunk Community Badges!

  Hey everyone! Ready to earn some serious bragging rights in the community? Along with our existing badges ...

[Puzzles] Solve, Learn, Repeat: Matching cron expressions

This puzzle (first published here) is based on matching timestamps to cron expressions.All the timestamps ...