Dynamic Content block interactive filter

RANSINGH1
Tera Contributor
using below code I am able to create the dynamic content block working as interactive filter but need help/modification so below code can work for partial match/spell match string also, currently it is working with exact match 
<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">

  <style>
    /* You can add CSS styles here to customize the input field appearance */
  </style>

  <script>
    var my_dashboardMessageHandler = new DashboardMessageHandler("cmdb_ci_filter");

    function publishFilter(searchTerm) {
      var filter_message = {};
      filter_message.id = "cmdb_ci_filter";
      filter_message.table = "sn_vul_vulnerable_item";

      if (searchTerm == "") {
        clearFilter();
      } else {
        // This filter searches for an exact match in the field
        filter_message.filter = "cmdb_ci.u_ci_link.asset.ref_u_alm_service.u_project_code.u_ciso.u_ciso_org_2=" + searchTerm;
      }

      SNC.canvas.interactiveFilters.setDefaultValue({
        id: filter_message.id,
        filters: [filter_message]
      }, false);

      my_dashboardMessageHandler.publishFilter(filter_message.table, filter_message.filter);
    }

    function clearFilter() {
      var filter_message = {};
      filter_message.id = "cmdb_ci_filter";
      filter_message.table = "sn_vul_vulnerable_item";
      filter_message.filter = "";

      SNC.canvas.interactiveFilters.setDefaultValue({
        id: filter_message.id,
        filters: [filter_message]
      }, false);

      my_dashboardMessageHandler.removeFilter();
    }
  </script>

  <input id="searchTerm" type="text" class="form-control" value="" onchange="publishFilter(this.value);"></input>

</j:jelly>
1 ACCEPTED SOLUTION

Sohail Khilji
Kilo Patron
Kilo Patron

Hi @RANSINGH1 ,

 

Try this :

 

<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">

  <style>
    /* You can add CSS styles here to customize the input field appearance */
  </style>

  <script>
    var my_dashboardMessageHandler = new DashboardMessageHandler("cmdb_ci_filter");

    function publishFilter(searchTerm) {
      var filter_message = {};
      filter_message.id = "cmdb_ci_filter";
      filter_message.table = "sn_vul_vulnerable_item";

      if (searchTerm == "") {
        clearFilter();
      } else {
        // This filter searche  for the partial match in the field....
        filter_message.filter = "cmdb_ci.u_ci_link.asset.ref_u_alm_service.u_project_code.u_ciso.u_ciso_org_2LIKE" + searchTerm;
      }

      SNC.canvas.interactiveFilters.setDefaultValue({
        id: filter_message.id,
        filters: [filter_message]
      }, false);

      my_dashboardMessageHandler.publishFilter(filter_message.table, filter_message.filter);
    }

    function clearFilter() {
      var filter_message = {};
      filter_message.id = "cmdb_ci_filter";
      filter_message.table = "sn_vul_vulnerable_item";
      filter_message.filter = "";

      SNC.canvas.interactiveFilters.setDefaultValue({
        id: filter_message.id,
        filters: [filter_message]
      }, false);

      my_dashboardMessageHandler.removeFilter();
    }
  </script>

  <input id="searchTerm" type="text" class="form-control" value="" onchange="publishFilter(this.value);"></input>

</j:jelly>

 


☑️ Please mark responses as HELPFUL or ACCEPT SOLUTION to assist future users in finding the right solution....

LinkedIn - Lets Connect

View solution in original post

2 REPLIES 2

Sohail Khilji
Kilo Patron
Kilo Patron

Hi @RANSINGH1 ,

 

Try this :

 

<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">

  <style>
    /* You can add CSS styles here to customize the input field appearance */
  </style>

  <script>
    var my_dashboardMessageHandler = new DashboardMessageHandler("cmdb_ci_filter");

    function publishFilter(searchTerm) {
      var filter_message = {};
      filter_message.id = "cmdb_ci_filter";
      filter_message.table = "sn_vul_vulnerable_item";

      if (searchTerm == "") {
        clearFilter();
      } else {
        // This filter searche  for the partial match in the field....
        filter_message.filter = "cmdb_ci.u_ci_link.asset.ref_u_alm_service.u_project_code.u_ciso.u_ciso_org_2LIKE" + searchTerm;
      }

      SNC.canvas.interactiveFilters.setDefaultValue({
        id: filter_message.id,
        filters: [filter_message]
      }, false);

      my_dashboardMessageHandler.publishFilter(filter_message.table, filter_message.filter);
    }

    function clearFilter() {
      var filter_message = {};
      filter_message.id = "cmdb_ci_filter";
      filter_message.table = "sn_vul_vulnerable_item";
      filter_message.filter = "";

      SNC.canvas.interactiveFilters.setDefaultValue({
        id: filter_message.id,
        filters: [filter_message]
      }, false);

      my_dashboardMessageHandler.removeFilter();
    }
  </script>

  <input id="searchTerm" type="text" class="form-control" value="" onchange="publishFilter(this.value);"></input>

</j:jelly>

 


☑️ Please mark responses as HELPFUL or ACCEPT SOLUTION to assist future users in finding the right solution....

LinkedIn - Lets Connect

RANSINGH1
Tera Contributor

Thank you so much for your quick reply, it is working.