<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic my Dashboard row render is showing wrong result for a while and update to correct one after some time. in Dashboards &amp; Visualizations</title>
    <link>https://community.splunk.com/t5/Dashboards-Visualizations/my-Dashboard-row-render-is-showing-wrong-result-for-a-while-and/m-p/531829#M36151</link>
    <description>&lt;P&gt;i'm using&amp;nbsp;table_row_expansion.js file whose source code is written below:&amp;nbsp; please give me your input here.&lt;/P&gt;&lt;P&gt;require([&lt;BR /&gt;'splunkjs/mvc/tableview',&lt;BR /&gt;'splunkjs/mvc/chartview',&lt;BR /&gt;'splunkjs/mvc/dataview',&lt;BR /&gt;'splunkjs/mvc/searchmanager',&lt;BR /&gt;'splunkjs/mvc/postprocessmanager',&lt;BR /&gt;'splunkjs/mvc',&lt;BR /&gt;'underscore',&lt;BR /&gt;'splunkjs/mvc/simplexml/ready!'],function(&lt;BR /&gt;TableView,&lt;BR /&gt;ChartView,&lt;BR /&gt;DataView,&lt;BR /&gt;SearchManager,&lt;BR /&gt;PostProcessManager,&lt;BR /&gt;mvc,&lt;BR /&gt;_&lt;BR /&gt;){&lt;/P&gt;&lt;P&gt;var EventSearchBasedRowExpansionRenderer = TableView.BaseRowExpansionRenderer.extend({&lt;BR /&gt;initialize: function(args) {&lt;BR /&gt;// initialize will run once, so we will set up a search and a chart to be reused.&lt;BR /&gt;this._searchManager = new SearchManager({&lt;BR /&gt;id: 'details-search-manager',&lt;BR /&gt;preview: false&lt;BR /&gt;});&lt;BR /&gt;this._baseSearchManager = new SearchManager({&lt;BR /&gt;id: 'base-search-manager',&lt;BR /&gt;search: '| loadjob savedsearch="debie2scmi:duerr_it_vuln_management:saved-plugin_outputv2"',&lt;BR /&gt;preview: false&lt;BR /&gt;});&lt;BR /&gt;this._postproc_pluginOutput = new PostProcessManager({&lt;BR /&gt;id: 'postproc-plugin-output',&lt;BR /&gt;managerid: 'base-search-manager',&lt;BR /&gt;});&lt;BR /&gt;this._tableView = new TableView({&lt;BR /&gt;managerid: 'details-search-manager',&lt;BR /&gt;'charting.legend.placement': 'none'&lt;BR /&gt;});&lt;BR /&gt;this._plugintableView = new TableView({&lt;BR /&gt;managerid: 'postproc-plugin-output',&lt;BR /&gt;'charting.legend.placement': 'none'&lt;BR /&gt;});&lt;/P&gt;&lt;P&gt;//this._dataView = new DataView({&lt;BR /&gt;// managerid: 'details-search-manager',&lt;BR /&gt;// template: "&amp;lt;b&amp;gt;Solution:&amp;lt;/b&amp;gt; &amp;lt;p&amp;gt;&amp;lt;%= results[0].solution %&amp;gt;&amp;lt;/p&amp;gt;"&lt;BR /&gt;//});&lt;BR /&gt;},&lt;/P&gt;&lt;P&gt;canRender: function(rowData) {&lt;BR /&gt;// Since more than one row expansion renderer can be registered we let each decide if they can handle that&lt;BR /&gt;// data&lt;BR /&gt;// Here we will always handle it.&lt;BR /&gt;return true;&lt;BR /&gt;},&lt;/P&gt;&lt;P&gt;render: function($container, rowData) {&lt;BR /&gt;// rowData contains information about the row that is expanded. We can see the cells, fields, and values&lt;BR /&gt;// We will find the sourcetype cell to use its value&lt;BR /&gt;var findingCell = _(rowData.cells).find(function (cell) {&lt;BR /&gt;return cell.field === 'finding';&lt;BR /&gt;});&lt;BR /&gt;// get plugin and ip&lt;BR /&gt;var result = findingCell.value.split("#");&lt;BR /&gt;//update the searches&lt;BR /&gt;this._searchManager.set({ search: '| inputlookup nessus_plugin_solution.csv | search id=' + result[1] + ' | fields solution | append [| makeresults | eval solution="No data available." | fields - _time ] | head 1'});&lt;BR /&gt;// the rex is a workaround for splunk not implementing linebreaks in the details tables correctly, only mv fields seem to work&lt;BR /&gt;this._postproc_pluginOutput.set({search: '| search pokey="' + result[3] + '" | fields plugin_output | rex mode=sed field=plugin_output "s/(\\n)/\\1 #BREAK#/g" | makemv delim="#BREAK#" plugin_output | append [| makeresults | eval plugin_output="No data available." | fields - _time ] | head 1' });&lt;/P&gt;&lt;P&gt;// $container is the jquery object where we can put out content.&lt;BR /&gt;// In this case we will render our chart and add it to the $container&lt;BR /&gt;$container.append(this._tableView.render().el);&lt;BR /&gt;$container.append(this._plugintableView.render().el);&lt;BR /&gt;// $container.append("IP: " + result[0] + " Plugin: " + result[1] );&lt;BR /&gt;}&lt;BR /&gt;});&lt;/P&gt;&lt;P&gt;var CustomLinkRenderer = TableView.BaseCellRenderer.extend({&lt;BR /&gt;canRender: function(cell) {&lt;BR /&gt;return cell.field === 'solved';&lt;BR /&gt;},&lt;BR /&gt;render: function($td, cell) {&lt;BR /&gt;var solved = cell.value;&lt;BR /&gt;var solved_result = solved.split("-");&lt;BR /&gt;//var a = $('&amp;lt;a&amp;gt;').attr("href", "&lt;A href="http://www.test.de&amp;quot;).text(&amp;quot;testlink" target="_blank" rel="noopener"&gt;www.test.de").text("testlink&lt;/A&gt;");&lt;BR /&gt;//var a = $('&amp;lt;input&amp;gt;').attr('type','checkbox');&lt;BR /&gt;//var a = $('&amp;lt;div&amp;gt;').attr({"id":"chk-sourcetype"+cell.value,"value":cell.value}).attr('class','icon-minus-circle');&lt;BR /&gt;var a = $('&amp;lt;div&amp;gt;').attr({"id":"chk-sourcetype"+cell.value,"value":cell.value});&lt;BR /&gt;// check if marked as solved&lt;BR /&gt;if(solved_result[1] == 1)&lt;BR /&gt;{&lt;BR /&gt;a.attr('class','icon-check-circle');&lt;BR /&gt;}&lt;BR /&gt;else&lt;BR /&gt;{&lt;BR /&gt;a.attr('class','icon-minus-circle');&lt;BR /&gt;}&lt;BR /&gt;$td.empty().append(a);&lt;BR /&gt;&lt;BR /&gt;a.click(function(e) {&lt;BR /&gt;e.preventDefault();&lt;BR /&gt;//window.location = $(e.currentTarget).attr('href');&lt;BR /&gt;// or for popup:&lt;BR /&gt;// window.open($(e.currentTarget).attr('href'));&lt;BR /&gt;if($(e.currentTarget).attr('class') == 'icon-minus-circle')&lt;BR /&gt;{&lt;BR /&gt;$(e.currentTarget).attr('class','icon-gear');&lt;BR /&gt;var updatestring = '| inputlookup lkp-all-findings | eval key=_key | where key="' + solved_result[2] +'" | eval lastchecked=1 | outputlookup append=t lkp-all-findings';&lt;BR /&gt;var kvupdate = new SearchManager({&lt;BR /&gt;preview: false&lt;BR /&gt;});&lt;BR /&gt;kvupdate.set({search: updatestring});&lt;BR /&gt;kvupdate.on('search:done', function(properties) {&lt;BR /&gt;//console.log("DONE!\nSearch job properties:", properties.content);&lt;BR /&gt;// Set new value when search is done&lt;BR /&gt;$(e.currentTarget).attr('class','icon-check-circle');&lt;BR /&gt;});&lt;BR /&gt;}&lt;BR /&gt;else&lt;BR /&gt;{&lt;BR /&gt;$(e.currentTarget).attr('class','icon-gear');&lt;BR /&gt;var updatestring = '| inputlookup lkp-all-findings | eval key=_key | where key="' + solved_result[2] +'" | eval lastchecked=0 | outputlookup append=t lkp-all-findings';&lt;BR /&gt;var kvupdate = new SearchManager({&lt;BR /&gt;preview: false&lt;BR /&gt;});&lt;BR /&gt;kvupdate.set({search: updatestring});&lt;BR /&gt;kvupdate.on('search:done', function(properties) {&lt;BR /&gt;//console.log("DONE!\nSearch job properties:", properties.content);&lt;BR /&gt;// Set new value when search is done&lt;BR /&gt;$(e.currentTarget).attr('class','icon-minus-circle');&lt;BR /&gt;});&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;});&lt;BR /&gt;}&lt;BR /&gt;});&lt;/P&gt;&lt;P&gt;var tableElement = mvc.Components.getInstance("reports_table");&lt;BR /&gt;tableElement.getVisualization(function(tableView) {&lt;BR /&gt;// Add custom cell renderer, the table will re-render automatically.&lt;BR /&gt;tableView.addRowExpansionRenderer(new EventSearchBasedRowExpansionRenderer());&lt;BR /&gt;tableView.table.addCellRenderer(new CustomLinkRenderer());&lt;BR /&gt;// Force the table to re-render&lt;BR /&gt;tableView.table.render();&lt;BR /&gt;});&lt;BR /&gt;});&lt;/P&gt;&lt;P&gt;&lt;a href="https://community.splunk.com/t5/user/viewprofilepage/user-id/149"&gt;@splunk&lt;/a&gt;&amp;nbsp;@Anonymous&amp;nbsp;&lt;a href="https://community.splunk.com/t5/user/viewprofilepage/user-id/162676"&gt;@techiesid&lt;/a&gt;&amp;nbsp;&lt;a href="https://community.splunk.com/t5/user/viewprofilepage/user-id/127939"&gt;@kamlesh_vaghela&lt;/a&gt;&amp;nbsp; please help.&lt;/P&gt;</description>
    <pubDate>Fri, 04 Dec 2020 07:40:52 GMT</pubDate>
    <dc:creator>jat_ashish</dc:creator>
    <dc:date>2020-12-04T07:40:52Z</dc:date>
    <item>
      <title>my Dashboard row render is showing wrong result for a while and update to correct one after some time.</title>
      <link>https://community.splunk.com/t5/Dashboards-Visualizations/my-Dashboard-row-render-is-showing-wrong-result-for-a-while-and/m-p/531829#M36151</link>
      <description>&lt;P&gt;i'm using&amp;nbsp;table_row_expansion.js file whose source code is written below:&amp;nbsp; please give me your input here.&lt;/P&gt;&lt;P&gt;require([&lt;BR /&gt;'splunkjs/mvc/tableview',&lt;BR /&gt;'splunkjs/mvc/chartview',&lt;BR /&gt;'splunkjs/mvc/dataview',&lt;BR /&gt;'splunkjs/mvc/searchmanager',&lt;BR /&gt;'splunkjs/mvc/postprocessmanager',&lt;BR /&gt;'splunkjs/mvc',&lt;BR /&gt;'underscore',&lt;BR /&gt;'splunkjs/mvc/simplexml/ready!'],function(&lt;BR /&gt;TableView,&lt;BR /&gt;ChartView,&lt;BR /&gt;DataView,&lt;BR /&gt;SearchManager,&lt;BR /&gt;PostProcessManager,&lt;BR /&gt;mvc,&lt;BR /&gt;_&lt;BR /&gt;){&lt;/P&gt;&lt;P&gt;var EventSearchBasedRowExpansionRenderer = TableView.BaseRowExpansionRenderer.extend({&lt;BR /&gt;initialize: function(args) {&lt;BR /&gt;// initialize will run once, so we will set up a search and a chart to be reused.&lt;BR /&gt;this._searchManager = new SearchManager({&lt;BR /&gt;id: 'details-search-manager',&lt;BR /&gt;preview: false&lt;BR /&gt;});&lt;BR /&gt;this._baseSearchManager = new SearchManager({&lt;BR /&gt;id: 'base-search-manager',&lt;BR /&gt;search: '| loadjob savedsearch="debie2scmi:duerr_it_vuln_management:saved-plugin_outputv2"',&lt;BR /&gt;preview: false&lt;BR /&gt;});&lt;BR /&gt;this._postproc_pluginOutput = new PostProcessManager({&lt;BR /&gt;id: 'postproc-plugin-output',&lt;BR /&gt;managerid: 'base-search-manager',&lt;BR /&gt;});&lt;BR /&gt;this._tableView = new TableView({&lt;BR /&gt;managerid: 'details-search-manager',&lt;BR /&gt;'charting.legend.placement': 'none'&lt;BR /&gt;});&lt;BR /&gt;this._plugintableView = new TableView({&lt;BR /&gt;managerid: 'postproc-plugin-output',&lt;BR /&gt;'charting.legend.placement': 'none'&lt;BR /&gt;});&lt;/P&gt;&lt;P&gt;//this._dataView = new DataView({&lt;BR /&gt;// managerid: 'details-search-manager',&lt;BR /&gt;// template: "&amp;lt;b&amp;gt;Solution:&amp;lt;/b&amp;gt; &amp;lt;p&amp;gt;&amp;lt;%= results[0].solution %&amp;gt;&amp;lt;/p&amp;gt;"&lt;BR /&gt;//});&lt;BR /&gt;},&lt;/P&gt;&lt;P&gt;canRender: function(rowData) {&lt;BR /&gt;// Since more than one row expansion renderer can be registered we let each decide if they can handle that&lt;BR /&gt;// data&lt;BR /&gt;// Here we will always handle it.&lt;BR /&gt;return true;&lt;BR /&gt;},&lt;/P&gt;&lt;P&gt;render: function($container, rowData) {&lt;BR /&gt;// rowData contains information about the row that is expanded. We can see the cells, fields, and values&lt;BR /&gt;// We will find the sourcetype cell to use its value&lt;BR /&gt;var findingCell = _(rowData.cells).find(function (cell) {&lt;BR /&gt;return cell.field === 'finding';&lt;BR /&gt;});&lt;BR /&gt;// get plugin and ip&lt;BR /&gt;var result = findingCell.value.split("#");&lt;BR /&gt;//update the searches&lt;BR /&gt;this._searchManager.set({ search: '| inputlookup nessus_plugin_solution.csv | search id=' + result[1] + ' | fields solution | append [| makeresults | eval solution="No data available." | fields - _time ] | head 1'});&lt;BR /&gt;// the rex is a workaround for splunk not implementing linebreaks in the details tables correctly, only mv fields seem to work&lt;BR /&gt;this._postproc_pluginOutput.set({search: '| search pokey="' + result[3] + '" | fields plugin_output | rex mode=sed field=plugin_output "s/(\\n)/\\1 #BREAK#/g" | makemv delim="#BREAK#" plugin_output | append [| makeresults | eval plugin_output="No data available." | fields - _time ] | head 1' });&lt;/P&gt;&lt;P&gt;// $container is the jquery object where we can put out content.&lt;BR /&gt;// In this case we will render our chart and add it to the $container&lt;BR /&gt;$container.append(this._tableView.render().el);&lt;BR /&gt;$container.append(this._plugintableView.render().el);&lt;BR /&gt;// $container.append("IP: " + result[0] + " Plugin: " + result[1] );&lt;BR /&gt;}&lt;BR /&gt;});&lt;/P&gt;&lt;P&gt;var CustomLinkRenderer = TableView.BaseCellRenderer.extend({&lt;BR /&gt;canRender: function(cell) {&lt;BR /&gt;return cell.field === 'solved';&lt;BR /&gt;},&lt;BR /&gt;render: function($td, cell) {&lt;BR /&gt;var solved = cell.value;&lt;BR /&gt;var solved_result = solved.split("-");&lt;BR /&gt;//var a = $('&amp;lt;a&amp;gt;').attr("href", "&lt;A href="http://www.test.de&amp;quot;).text(&amp;quot;testlink" target="_blank" rel="noopener"&gt;www.test.de").text("testlink&lt;/A&gt;");&lt;BR /&gt;//var a = $('&amp;lt;input&amp;gt;').attr('type','checkbox');&lt;BR /&gt;//var a = $('&amp;lt;div&amp;gt;').attr({"id":"chk-sourcetype"+cell.value,"value":cell.value}).attr('class','icon-minus-circle');&lt;BR /&gt;var a = $('&amp;lt;div&amp;gt;').attr({"id":"chk-sourcetype"+cell.value,"value":cell.value});&lt;BR /&gt;// check if marked as solved&lt;BR /&gt;if(solved_result[1] == 1)&lt;BR /&gt;{&lt;BR /&gt;a.attr('class','icon-check-circle');&lt;BR /&gt;}&lt;BR /&gt;else&lt;BR /&gt;{&lt;BR /&gt;a.attr('class','icon-minus-circle');&lt;BR /&gt;}&lt;BR /&gt;$td.empty().append(a);&lt;BR /&gt;&lt;BR /&gt;a.click(function(e) {&lt;BR /&gt;e.preventDefault();&lt;BR /&gt;//window.location = $(e.currentTarget).attr('href');&lt;BR /&gt;// or for popup:&lt;BR /&gt;// window.open($(e.currentTarget).attr('href'));&lt;BR /&gt;if($(e.currentTarget).attr('class') == 'icon-minus-circle')&lt;BR /&gt;{&lt;BR /&gt;$(e.currentTarget).attr('class','icon-gear');&lt;BR /&gt;var updatestring = '| inputlookup lkp-all-findings | eval key=_key | where key="' + solved_result[2] +'" | eval lastchecked=1 | outputlookup append=t lkp-all-findings';&lt;BR /&gt;var kvupdate = new SearchManager({&lt;BR /&gt;preview: false&lt;BR /&gt;});&lt;BR /&gt;kvupdate.set({search: updatestring});&lt;BR /&gt;kvupdate.on('search:done', function(properties) {&lt;BR /&gt;//console.log("DONE!\nSearch job properties:", properties.content);&lt;BR /&gt;// Set new value when search is done&lt;BR /&gt;$(e.currentTarget).attr('class','icon-check-circle');&lt;BR /&gt;});&lt;BR /&gt;}&lt;BR /&gt;else&lt;BR /&gt;{&lt;BR /&gt;$(e.currentTarget).attr('class','icon-gear');&lt;BR /&gt;var updatestring = '| inputlookup lkp-all-findings | eval key=_key | where key="' + solved_result[2] +'" | eval lastchecked=0 | outputlookup append=t lkp-all-findings';&lt;BR /&gt;var kvupdate = new SearchManager({&lt;BR /&gt;preview: false&lt;BR /&gt;});&lt;BR /&gt;kvupdate.set({search: updatestring});&lt;BR /&gt;kvupdate.on('search:done', function(properties) {&lt;BR /&gt;//console.log("DONE!\nSearch job properties:", properties.content);&lt;BR /&gt;// Set new value when search is done&lt;BR /&gt;$(e.currentTarget).attr('class','icon-minus-circle');&lt;BR /&gt;});&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;});&lt;BR /&gt;}&lt;BR /&gt;});&lt;/P&gt;&lt;P&gt;var tableElement = mvc.Components.getInstance("reports_table");&lt;BR /&gt;tableElement.getVisualization(function(tableView) {&lt;BR /&gt;// Add custom cell renderer, the table will re-render automatically.&lt;BR /&gt;tableView.addRowExpansionRenderer(new EventSearchBasedRowExpansionRenderer());&lt;BR /&gt;tableView.table.addCellRenderer(new CustomLinkRenderer());&lt;BR /&gt;// Force the table to re-render&lt;BR /&gt;tableView.table.render();&lt;BR /&gt;});&lt;BR /&gt;});&lt;/P&gt;&lt;P&gt;&lt;a href="https://community.splunk.com/t5/user/viewprofilepage/user-id/149"&gt;@splunk&lt;/a&gt;&amp;nbsp;@Anonymous&amp;nbsp;&lt;a href="https://community.splunk.com/t5/user/viewprofilepage/user-id/162676"&gt;@techiesid&lt;/a&gt;&amp;nbsp;&lt;a href="https://community.splunk.com/t5/user/viewprofilepage/user-id/127939"&gt;@kamlesh_vaghela&lt;/a&gt;&amp;nbsp; please help.&lt;/P&gt;</description>
      <pubDate>Fri, 04 Dec 2020 07:40:52 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Dashboards-Visualizations/my-Dashboard-row-render-is-showing-wrong-result-for-a-while-and/m-p/531829#M36151</guid>
      <dc:creator>jat_ashish</dc:creator>
      <dc:date>2020-12-04T07:40:52Z</dc:date>
    </item>
    <item>
      <title>Re: my Dashboard row render is showing wrong result for a while and update to correct one after some time.</title>
      <link>https://community.splunk.com/t5/Dashboards-Visualizations/my-Dashboard-row-render-is-showing-wrong-result-for-a-while-and/m-p/531977#M36160</link>
      <description>&lt;P&gt;&lt;a href="https://community.splunk.com/t5/user/viewprofilepage/user-id/179650"&gt;@jat_ashish&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Can you please share your sample XML and JS in below format? &amp;nbsp;You can find "Insert/Edit Code Sample" button in toolbar.&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;This is sample code&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 04 Dec 2020 08:43:45 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Dashboards-Visualizations/my-Dashboard-row-render-is-showing-wrong-result-for-a-while-and/m-p/531977#M36160</guid>
      <dc:creator>kamlesh_vaghela</dc:creator>
      <dc:date>2020-12-04T08:43:45Z</dc:date>
    </item>
    <item>
      <title>Re: my Dashboard row render is showing wrong result for a while and update to correct one after some time.</title>
      <link>https://community.splunk.com/t5/Dashboards-Visualizations/my-Dashboard-row-render-is-showing-wrong-result-for-a-while-and/m-p/531979#M36161</link>
      <description>&lt;P&gt;&lt;a href="https://community.splunk.com/t5/user/viewprofilepage/user-id/127939"&gt;@kamlesh_vaghela&lt;/a&gt;&amp;nbsp;please find the code.&lt;/P&gt;&lt;P&gt;1) XML code&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;&amp;lt;form script="table_row_expansion.js" theme="dark"&amp;gt;
  &amp;lt;label&amp;gt;Scan reports v3&amp;lt;/label&amp;gt;
  &amp;lt;fieldset submitButton="false" autoRun="true"&amp;gt;&amp;lt;/fieldset&amp;gt;
  &amp;lt;row&amp;gt;
    &amp;lt;panel&amp;gt;
      &amp;lt;title&amp;gt;Vulnerability report&amp;lt;/title&amp;gt;
      &amp;lt;input type="checkbox" token="srStatus"&amp;gt;
        &amp;lt;label&amp;gt;Status&amp;lt;/label&amp;gt;
        &amp;lt;choice value="1"&amp;gt;solved&amp;lt;/choice&amp;gt;
        &amp;lt;choice value="0"&amp;gt;unsolved&amp;lt;/choice&amp;gt;
        &amp;lt;default&amp;gt;1,0&amp;lt;/default&amp;gt;
        &amp;lt;prefix&amp;gt;(&amp;lt;/prefix&amp;gt;
        &amp;lt;suffix&amp;gt;)&amp;lt;/suffix&amp;gt;
        &amp;lt;initialValue&amp;gt;1,0&amp;lt;/initialValue&amp;gt;
        &amp;lt;valuePrefix&amp;gt;is_solved=&amp;lt;/valuePrefix&amp;gt;
        &amp;lt;delimiter&amp;gt; OR &amp;lt;/delimiter&amp;gt;
      &amp;lt;/input&amp;gt;
      &amp;lt;input type="checkbox" token="rsSeverity"&amp;gt;
        &amp;lt;label&amp;gt;Severity&amp;lt;/label&amp;gt;
        &amp;lt;choice value="critical"&amp;gt;critical&amp;lt;/choice&amp;gt;
        &amp;lt;choice value="high"&amp;gt;high&amp;lt;/choice&amp;gt;
        &amp;lt;choice value="medium"&amp;gt;medium&amp;lt;/choice&amp;gt;
        &amp;lt;choice value="low"&amp;gt;low&amp;lt;/choice&amp;gt;
        &amp;lt;choice value="informational"&amp;gt;informational&amp;lt;/choice&amp;gt;
        &amp;lt;default&amp;gt;critical,high,medium,low,informational&amp;lt;/default&amp;gt;
        &amp;lt;prefix&amp;gt;(&amp;lt;/prefix&amp;gt;
        &amp;lt;suffix&amp;gt;)&amp;lt;/suffix&amp;gt;
        &amp;lt;initialValue&amp;gt;critical,high,medium,low,informational&amp;lt;/initialValue&amp;gt;
        &amp;lt;valuePrefix&amp;gt;severity=&amp;lt;/valuePrefix&amp;gt;
        &amp;lt;delimiter&amp;gt; OR &amp;lt;/delimiter&amp;gt;
      &amp;lt;/input&amp;gt;
      &amp;lt;input type="dropdown" token="srAsset"&amp;gt;
        &amp;lt;label&amp;gt;Asset Group&amp;lt;/label&amp;gt;
        &amp;lt;choice value="*"&amp;gt;All&amp;lt;/choice&amp;gt;
        &amp;lt;default&amp;gt;*&amp;lt;/default&amp;gt;
        &amp;lt;fieldForLabel&amp;gt;Asset_Gruppe&amp;lt;/fieldForLabel&amp;gt;
        &amp;lt;fieldForValue&amp;gt;Asset_Gruppe&amp;lt;/fieldForValue&amp;gt;
        &amp;lt;search&amp;gt;
          &amp;lt;query&amp;gt;| inputlookup lkp-asset-list-master | stats count by Asset_Gruppe&amp;lt;/query&amp;gt;
        &amp;lt;/search&amp;gt;
      &amp;lt;/input&amp;gt;
      &amp;lt;input type="dropdown" token="srCcode"&amp;gt;
        &amp;lt;label&amp;gt;Company Code&amp;lt;/label&amp;gt;
        &amp;lt;choice value="*"&amp;gt;All&amp;lt;/choice&amp;gt;
        &amp;lt;default&amp;gt;*&amp;lt;/default&amp;gt;
        &amp;lt;fieldForLabel&amp;gt;Company Code&amp;lt;/fieldForLabel&amp;gt;
        &amp;lt;fieldForValue&amp;gt;Company Code&amp;lt;/fieldForValue&amp;gt;
        &amp;lt;search&amp;gt;
          &amp;lt;query&amp;gt;| inputlookup lkp-GlobalIPRange | dedup "Company Code"&amp;lt;/query&amp;gt;
          &amp;lt;earliest&amp;gt;-24h@h&amp;lt;/earliest&amp;gt;
          &amp;lt;latest&amp;gt;now&amp;lt;/latest&amp;gt;
        &amp;lt;/search&amp;gt;
      &amp;lt;/input&amp;gt;
      &amp;lt;input type="dropdown" token="srCompany"&amp;gt;
        &amp;lt;label&amp;gt;Homag / Dürr&amp;lt;/label&amp;gt;
        &amp;lt;choice value="*"&amp;gt;All&amp;lt;/choice&amp;gt;
        &amp;lt;fieldForLabel&amp;gt;Scan-Company&amp;lt;/fieldForLabel&amp;gt;
        &amp;lt;fieldForValue&amp;gt;Scan-Company&amp;lt;/fieldForValue&amp;gt;
        &amp;lt;search&amp;gt;
          &amp;lt;query&amp;gt;| inputlookup lkp-asset-list-master | eval Scan-Company=substr('Scan-Company',0,1).lower(substr('Scan-Company',2)) | stats count by Scan-Company&amp;lt;/query&amp;gt;
        &amp;lt;/search&amp;gt;
        &amp;lt;default&amp;gt;*&amp;lt;/default&amp;gt;
      &amp;lt;/input&amp;gt;
      &amp;lt;input type="dropdown" token="srLocation"&amp;gt;
        &amp;lt;label&amp;gt;Location&amp;lt;/label&amp;gt;
        &amp;lt;choice value="*"&amp;gt;All&amp;lt;/choice&amp;gt;
        &amp;lt;default&amp;gt;*&amp;lt;/default&amp;gt;
        &amp;lt;fieldForLabel&amp;gt;Location&amp;lt;/fieldForLabel&amp;gt;
        &amp;lt;fieldForValue&amp;gt;Location&amp;lt;/fieldForValue&amp;gt;
        &amp;lt;search&amp;gt;
          &amp;lt;query&amp;gt;| inputlookup lkp-asset-list-master | stats count by Location&amp;lt;/query&amp;gt;
        &amp;lt;/search&amp;gt;
      &amp;lt;/input&amp;gt;
      &amp;lt;input type="dropdown" token="srScanner"&amp;gt;
        &amp;lt;label&amp;gt;Scanner&amp;lt;/label&amp;gt;
        &amp;lt;choice value="*"&amp;gt;All&amp;lt;/choice&amp;gt;
        &amp;lt;default&amp;gt;*&amp;lt;/default&amp;gt;
        &amp;lt;fieldForLabel&amp;gt;Scanner&amp;lt;/fieldForLabel&amp;gt;
        &amp;lt;fieldForValue&amp;gt;Scanner&amp;lt;/fieldForValue&amp;gt;
        &amp;lt;search&amp;gt;
          &amp;lt;query&amp;gt;| inputlookup lkp-asset-list-master | stats count by Scanner&amp;lt;/query&amp;gt;
        &amp;lt;/search&amp;gt;
      &amp;lt;/input&amp;gt;
      &amp;lt;input type="text" token="srHostname"&amp;gt;
        &amp;lt;label&amp;gt;Hostname&amp;lt;/label&amp;gt;
        &amp;lt;default&amp;gt;*&amp;lt;/default&amp;gt;
      &amp;lt;/input&amp;gt;
      &amp;lt;input type="text" token="srIp"&amp;gt;
        &amp;lt;label&amp;gt;IP&amp;lt;/label&amp;gt;
        &amp;lt;default&amp;gt;*&amp;lt;/default&amp;gt;
      &amp;lt;/input&amp;gt;
      &amp;lt;input type="text" token="srPluginname"&amp;gt;
        &amp;lt;label&amp;gt;Plugin name&amp;lt;/label&amp;gt;
        &amp;lt;default&amp;gt;*&amp;lt;/default&amp;gt;
      &amp;lt;/input&amp;gt;
      &amp;lt;input type="text" token="srScanDate"&amp;gt;
        &amp;lt;label&amp;gt;Scan Date&amp;lt;/label&amp;gt;
        &amp;lt;default&amp;gt;*&amp;lt;/default&amp;gt;
      &amp;lt;/input&amp;gt;
      &amp;lt;table id="reports_table"&amp;gt;
        &amp;lt;search&amp;gt;
          &amp;lt;query&amp;gt;| inputlookup lkp-all-findings
| lookup lkp-findings-blacklist.csv blfinding as finding OUTPUTNEW blfinding
| lookup lkp-asset-list-master "IP Adresse" as ip OUTPUTNEW Asset_Gruppe Scan-Company Scanner Scan-Location Location "DNS Name" as dns_name
| lookup lkp-GlobalIpRange 3-Letter-Code as Location OUTPUTNEW "Company Code"
| eval key=_key,is_solved=if(lastchecked&amp;amp;gt;lastfound OR lastchecked == 1,1,0),solved=finding."-".is_solved."-".key,blacklisted=if(isnull(blfinding),0,1),scandate=strftime(lastfound,"%Y-%m-%d %H:%M:%S"),lastchecked=strftime(lastchecked,"%Y-%m-%d %H:%M:%S")
| fillnull value="N.A." Asset_Gruppe Scan-Company Scanner Scan-Location Location hostname
| search $srStatus$ $rsSeverity$ blacklisted=0 Asset_Gruppe="$srAsset$" Scan-Company="$srCompany$" Location="$srLocation$" Scanner="$srScanner$" dns="$srHostname$" pluginname="$srPluginname$" ip="$srIp$" scandate="*$srScanDate$*" "Company Code"="$srCcode$"
| strcat finding "#" NessusHost sid hostid pluginid finding
| fields dns ip lastchecked severity pluginid pluginname scandate Asset_Gruppe Location Scan-Company "Company Code" Scan-Location Scanner solved finding
| rename dns as Hostname,ip as IP&amp;lt;/query&amp;gt;
          &amp;lt;earliest&amp;gt;0&amp;lt;/earliest&amp;gt;
          &amp;lt;latest&amp;gt;&amp;lt;/latest&amp;gt;
          &amp;lt;sampleRatio&amp;gt;1&amp;lt;/sampleRatio&amp;gt;
        &amp;lt;/search&amp;gt;
        &amp;lt;option name="count"&amp;gt;100&amp;lt;/option&amp;gt;
        &amp;lt;option name="dataOverlayMode"&amp;gt;none&amp;lt;/option&amp;gt;
        &amp;lt;option name="drilldown"&amp;gt;none&amp;lt;/option&amp;gt;
        &amp;lt;option name="percentagesRow"&amp;gt;false&amp;lt;/option&amp;gt;
        &amp;lt;option name="refresh.display"&amp;gt;progressbar&amp;lt;/option&amp;gt;
        &amp;lt;option name="rowNumbers"&amp;gt;false&amp;lt;/option&amp;gt;
        &amp;lt;option name="totalsRow"&amp;gt;false&amp;lt;/option&amp;gt;
        &amp;lt;option name="wrap"&amp;gt;true&amp;lt;/option&amp;gt;
        &amp;lt;format type="color" field="severity"&amp;gt;
          &amp;lt;colorPalette type="map"&amp;gt;{"critical":#ff0000,"high":#ff631e,"medium":#ffb750,"low":#fffcab,"informational":#8ba6ff}&amp;lt;/colorPalette&amp;gt;
          &amp;lt;scale type="category"&amp;gt;&amp;lt;/scale&amp;gt;
        &amp;lt;/format&amp;gt;
      &amp;lt;/table&amp;gt;
    &amp;lt;/panel&amp;gt;
  &amp;lt;/row&amp;gt;
&amp;lt;/form&amp;gt;&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;2) JS code&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;require([
    'splunkjs/mvc/tableview',
    'splunkjs/mvc/chartview',
    'splunkjs/mvc/dataview',
    'splunkjs/mvc/searchmanager',
    'splunkjs/mvc/postprocessmanager',
    'splunkjs/mvc',
    'underscore',
    'splunkjs/mvc/simplexml/ready!'],function(
    TableView,
    ChartView,
    DataView,
    SearchManager,
    PostProcessManager,
    mvc,
    _
    ){

    var EventSearchBasedRowExpansionRenderer = TableView.BaseRowExpansionRenderer.extend({
        initialize: function(args) {
            // initialize will run once, so we will set up a search and a chart to be reused.
            this._searchManager = new SearchManager({
                id: 'details-search-manager',
                preview: false
            });
            this._baseSearchManager = new SearchManager({
                id: 'base-search-manager',
                search: '| loadjob savedsearch="debie2scmi:duerr_it_vuln_management:saved-plugin_outputv2"',
                preview: false
            });
            this._postproc_pluginOutput = new PostProcessManager({
                id: 'postproc-plugin-output',
                managerid: 'base-search-manager',
            });
            this._tableView = new TableView({
                managerid: 'details-search-manager',
                'charting.legend.placement': 'none'
            });
            this._plugintableView = new TableView({
                managerid: 'postproc-plugin-output',
                'charting.legend.placement': 'none'
            });

            //this._dataView = new DataView({
            //    managerid: 'details-search-manager',
            //    template: "&amp;lt;b&amp;gt;Solution:&amp;lt;/b&amp;gt; &amp;lt;p&amp;gt;&amp;lt;%= results[0].solution %&amp;gt;&amp;lt;/p&amp;gt;"
            //});
        },

        canRender: function(rowData) {
            // Since more than one row expansion renderer can be registered we let each decide if they can handle that
            // data
            // Here we will always handle it.
            return true;
        },

        render: function($container, rowData) {
            // rowData contains information about the row that is expanded.  We can see the cells, fields, and values
            // We will find the sourcetype cell to use its value
            var findingCell = _(rowData.cells).find(function (cell) {
               return cell.field === 'finding';
            });
            // get plugin and ip
            var result = findingCell.value.split("#");
            //update the searches
            this._searchManager.set({ search: '| inputlookup nessus_plugin_solution.csv | search id=' + result[1] + ' | fields solution | append [| makeresults | eval solution="No data available." | fields - _time ] | head 1'});
            // the rex is a workaround for splunk not implementing linebreaks in the details tables correctly, only mv fields seem to work
            this._postproc_pluginOutput.set({search: '| search pokey="' + result[3] + '" | fields plugin_output  | rex mode=sed field=plugin_output "s/(\\n)/\\1 #BREAK#/g" | makemv delim="#BREAK#" plugin_output | append [| makeresults | eval plugin_output="No data available." | fields - _time ] | head 1' });

            // $container is the jquery object where we can put out content.
            // In this case we will render our chart and add it to the $container
            $container.append(this._tableView.render().el);
            $container.append(this._plugintableView.render().el);
            // $container.append("IP: " + result[0] + " Plugin: " + result[1] );
        }
    });

    var CustomLinkRenderer = TableView.BaseCellRenderer.extend({
        canRender: function(cell) {
            return cell.field === 'solved';
        },
        render: function($td, cell) {
            var solved = cell.value;
            var solved_result = solved.split("-");
            //var a = $('&amp;lt;a&amp;gt;').attr("href", "www.test.de").text("testlink");
            //var a = $('&amp;lt;input&amp;gt;').attr('type','checkbox');
            //var a = $('&amp;lt;div&amp;gt;').attr({"id":"chk-sourcetype"+cell.value,"value":cell.value}).attr('class','icon-minus-circle');
            var a = $('&amp;lt;div&amp;gt;').attr({"id":"chk-sourcetype"+cell.value,"value":cell.value});
            // check if marked as solved 
            if(solved_result[1] == 1)
            {
                a.attr('class','icon-check-circle');
            }
            else
            {
                a.attr('class','icon-minus-circle');
            }
            $td.empty().append(a);
                              
            a.click(function(e) {
              e.preventDefault();
              //window.location = $(e.currentTarget).attr('href');
              // or for popup:
              // window.open($(e.currentTarget).attr('href'));
              if($(e.currentTarget).attr('class') == 'icon-minus-circle')
              {
                $(e.currentTarget).attr('class','icon-gear');
                var updatestring = '| inputlookup lkp-all-findings | eval key=_key | where key="' + solved_result[2] +'" | eval lastchecked=1 | outputlookup append=t lkp-all-findings';
                var kvupdate = new SearchManager({
                    preview: false
                });
                kvupdate.set({search: updatestring});
                kvupdate.on('search:done', function(properties) {
                    //console.log("DONE!\nSearch job properties:", properties.content);
                    // Set new value when search is done
                    $(e.currentTarget).attr('class','icon-check-circle');
                });
              }
              else 
              {
                $(e.currentTarget).attr('class','icon-gear');
                var updatestring = '| inputlookup lkp-all-findings | eval key=_key | where key="' + solved_result[2] +'" | eval lastchecked=0 | outputlookup append=t lkp-all-findings';
                var kvupdate = new SearchManager({
                    preview: false
                });
                kvupdate.set({search: updatestring});
                kvupdate.on('search:done', function(properties) {
                    //console.log("DONE!\nSearch job properties:", properties.content);
                    // Set new value when search is done
                    $(e.currentTarget).attr('class','icon-minus-circle');
                });
              }
              
            });
        }
    });

    var tableElement = mvc.Components.getInstance("reports_table");
    tableElement.getVisualization(function(tableView) {
        // Add custom cell renderer, the table will re-render automatically.
        tableView.addRowExpansionRenderer(new EventSearchBasedRowExpansionRenderer());
        tableView.table.addCellRenderer(new CustomLinkRenderer());
        // Force the table to re-render
        tableView.table.render();
    });
});&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 04 Dec 2020 09:03:11 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Dashboards-Visualizations/my-Dashboard-row-render-is-showing-wrong-result-for-a-while-and/m-p/531979#M36161</guid>
      <dc:creator>jat_ashish</dc:creator>
      <dc:date>2020-12-04T09:03:11Z</dc:date>
    </item>
    <item>
      <title>Re: my Dashboard row render is showing wrong result for a while and update to correct one after some time.</title>
      <link>https://community.splunk.com/t5/Dashboards-Visualizations/my-Dashboard-row-render-is-showing-wrong-result-for-a-while-and/m-p/532106#M36187</link>
      <description>&lt;a href="https://community.splunk.com/t5/user/viewprofilepage/user-id/179650"&gt;@jat_ashish&lt;/a&gt;&lt;BR /&gt;I have executed your code by adding `makeresults` search and it is working as expected. Can you please tell me which wrong results you are getting for sometime? Is it showing all record OR few records?&lt;BR /&gt;&lt;BR /&gt;Meanwhile can you please console the same search and check how many times it gets printed and executed.. I'm interested in earlier search which shows wrong result and new search which giving correct results. This will help us to get more pointers on this issue.&lt;BR /&gt;&lt;BR /&gt;</description>
      <pubDate>Sat, 05 Dec 2020 17:27:50 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Dashboards-Visualizations/my-Dashboard-row-render-is-showing-wrong-result-for-a-while-and/m-p/532106#M36187</guid>
      <dc:creator>kamlesh_vaghela</dc:creator>
      <dc:date>2020-12-05T17:27:50Z</dc:date>
    </item>
    <item>
      <title>Re: my Dashboard row render is showing wrong result for a while and update to correct one after some time.</title>
      <link>https://community.splunk.com/t5/Dashboards-Visualizations/my-Dashboard-row-render-is-showing-wrong-result-for-a-while-and/m-p/532161#M36199</link>
      <description>&lt;P&gt;&lt;a href="https://community.splunk.com/t5/user/viewprofilepage/user-id/127939"&gt;@kamlesh_vaghela&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;when I click on &lt;STRONG&gt;&amp;gt;&lt;/STRONG&gt; button of any&amp;nbsp; row in my dashboard it shows desired result , now if I click on any other row &lt;STRONG&gt;&amp;gt;&lt;/STRONG&gt; button , then the result of first row reflect in the area for some time and automatically reloaded to desired output.&lt;/P&gt;&lt;P&gt;so, I guess there is delay in JS output or may be JS through some cache for time being.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 07 Dec 2020 09:11:53 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Dashboards-Visualizations/my-Dashboard-row-render-is-showing-wrong-result-for-a-while-and/m-p/532161#M36199</guid>
      <dc:creator>jat_ashish</dc:creator>
      <dc:date>2020-12-07T09:11:53Z</dc:date>
    </item>
    <item>
      <title>Re: my Dashboard row render is showing wrong result for a while and update to correct one after some time.</title>
      <link>https://community.splunk.com/t5/Dashboards-Visualizations/my-Dashboard-row-render-is-showing-wrong-result-for-a-while-and/m-p/532240#M36203</link>
      <description>&lt;P&gt;&lt;a href="https://community.splunk.com/t5/user/viewprofilepage/user-id/179650"&gt;@jat_ashish&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Yeah. That might be delayed at JS level. Can you please update JS and try?&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;render: function($container, rowData) {
//Add below line for cleaning previous content
$container.html("");
&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;thanks&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 07 Dec 2020 19:58:51 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Dashboards-Visualizations/my-Dashboard-row-render-is-showing-wrong-result-for-a-while-and/m-p/532240#M36203</guid>
      <dc:creator>kamlesh_vaghela</dc:creator>
      <dc:date>2020-12-07T19:58:51Z</dc:date>
    </item>
    <item>
      <title>Re: my Dashboard row render is showing wrong result for a while and update to correct one after some time.</title>
      <link>https://community.splunk.com/t5/Dashboards-Visualizations/my-Dashboard-row-render-is-showing-wrong-result-for-a-while-and/m-p/532281#M36208</link>
      <description>&lt;P&gt;thank you&amp;nbsp;&lt;a href="https://community.splunk.com/t5/user/viewprofilepage/user-id/127939"&gt;@kamlesh_vaghela&lt;/a&gt;&amp;nbsp;, it works like a charm.&lt;span class="lia-unicode-emoji" title=":smiling_face_with_smiling_eyes:"&gt;😊&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 08 Dec 2020 06:48:18 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Dashboards-Visualizations/my-Dashboard-row-render-is-showing-wrong-result-for-a-while-and/m-p/532281#M36208</guid>
      <dc:creator>jat_ashish</dc:creator>
      <dc:date>2020-12-08T06:48:18Z</dc:date>
    </item>
    <item>
      <title>Re: my Dashboard row render is showing wrong result for a while and update to correct one after some time.</title>
      <link>https://community.splunk.com/t5/Dashboards-Visualizations/my-Dashboard-row-render-is-showing-wrong-result-for-a-while-and/m-p/532312#M36214</link>
      <description>&lt;P&gt;&lt;a href="https://community.splunk.com/t5/user/viewprofilepage/user-id/127939"&gt;@kamlesh_vaghela&lt;/a&gt;&amp;nbsp; can you please look into this case as well.&lt;span class="lia-unicode-emoji" title=":backhand_index_pointing_down:"&gt;👇&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;A title="&amp;quot;Threat - Source And Destination Matches - Threat Gen&amp;quot; scheduled saved search Issue" href="https://community.splunk.com/t5/Splunk-Enterprise-Security/quot-Threat-Source-And-Destination-Matches-Threat-Gen-quot/m-p/532186#M9525" target="_self"&gt;https://community.splunk.com/t5/Splunk-Enterprise-Security/quot-Threat-Source-And-Destination-Matches-Threat-Gen-quot/m-p/532186#M9525&lt;/A&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 08 Dec 2020 11:00:48 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Dashboards-Visualizations/my-Dashboard-row-render-is-showing-wrong-result-for-a-while-and/m-p/532312#M36214</guid>
      <dc:creator>jat_ashish</dc:creator>
      <dc:date>2020-12-08T11:00:48Z</dc:date>
    </item>
  </channel>
</rss>

