Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

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

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

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.