Dashboards & Visualizations

Why am I getting error "addRowExpansionRenderer is not a function" in the JavaScript web framework after upgrade to Splunk 6.3 from 6.2.4?

ConnorG
Path Finder

After upgrading to Splunk 6.3, it seems the previous web framework for Javascript does not work properly.

My jscript is getting a TypeError: tableView.table.addRowExpansionRenderer is not a function error when being run under a 6.3 instance.

The code I'm using is expanding upon the concepts provides here

Anyone know if there were changes to the web framework and how to accommodate those changes?

0 Karma
1 Solution

ConnorG
Path Finder

I fixed it after referencing the example dashboards app. Below you can find my code.

6.2.4 code:

var tables = ['web_stat_page_tbl', 'web_diag_tran_tbl', 'web_diag_comp_tbl', 'web_stat_tran_tbl'];

    for(i = 0; i < tables.length; i++) {
        mvc.Components.get(tables[i]).getVisualization(function(tableView) {
            // Add custom cell renderer
            tableView.table.addCellRenderer(new CustomRangeRenderer());
            // Add custom row renderer
            tableView.table.addRowExpansionRenderer(new CustomRowRenderer());

            // Force the table to re-render
            tableView.table.render();
        });
    } 

6.3.0 code:

    var tableElement = mvc.Components.getInstance("web_stat_page_tbl");
    tableElement.getVisualization(function(tableView) {
        // Add custom cell renderer, the table will re-render automatically.
        tableView.addCellRenderer(new CustomRangeRenderer());
        tableView.addRowExpansionRenderer(new CustomRowRenderer());
    });

View solution in original post

ConnorG
Path Finder

I fixed it after referencing the example dashboards app. Below you can find my code.

6.2.4 code:

var tables = ['web_stat_page_tbl', 'web_diag_tran_tbl', 'web_diag_comp_tbl', 'web_stat_tran_tbl'];

    for(i = 0; i < tables.length; i++) {
        mvc.Components.get(tables[i]).getVisualization(function(tableView) {
            // Add custom cell renderer
            tableView.table.addCellRenderer(new CustomRangeRenderer());
            // Add custom row renderer
            tableView.table.addRowExpansionRenderer(new CustomRowRenderer());

            // Force the table to re-render
            tableView.table.render();
        });
    } 

6.3.0 code:

    var tableElement = mvc.Components.getInstance("web_stat_page_tbl");
    tableElement.getVisualization(function(tableView) {
        // Add custom cell renderer, the table will re-render automatically.
        tableView.addCellRenderer(new CustomRangeRenderer());
        tableView.addRowExpansionRenderer(new CustomRowRenderer());
    });

View solution in original post

ConnorG
Path Finder

Sticking to the old format would give us:

    var tables = ['web_stat_page_tbl', 'web_diag_tran_tbl', 'web_diag_comp_tbl', 'web_stat_tran_tbl'];

    for(i = 0; i < tables.length; i++) {
        mvc.Components.get(tables[i]).getVisualization(function(tableView) {
            // Add custom cell renderer
            tableView.addCellRenderer(new CustomRangeRenderer());
            // Add custom row renderer
            tableView.addRowExpansionRenderer(new CustomRowRenderer());

        });
    } 
0 Karma

ConnorG
Path Finder

Below is the table object in a debug view coming from Splunk 6.2.4. Here we can see the addRowExpansionRenderer is still listed under the object.
alt text

Here is the same object in 6.3. No mention of RowExpansionRenderer anywhere.
alt text

0 Karma
Did you miss .conf21 Virtual?

Good news! The event's keynotes and many of its breakout sessions are now available online, and still totally FREE!