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.

Can't remove DashboardMessageHandler filters in DynamicContentBlock

SyncWizard
Tera Contributor

Hi,

 

I created a dynamic content block solution for applying a tag/label filter to reports on a dashboard, using DashboardMessageHandler.

 

It works as expected, however, when setting the filtering value to empty or triggering the "clearFilter" function via a button, removal of the filters doesn't work (nothing happens).

 

I have it set up almost exactly like in the docs "Define filtering logic - example", the only difference is that I'm applying multiple filters with publishMessage() instead of publishFilter(). (Docs for this)

 

I even tried adding removeFilter() right after publishMessage(), and even that failed to remove the filter.

 

P.S. I realize the button and the clearFilter function is not in my below code anymore, this is the cleaned version, since I couldn't get the filter removal to work. But I had it set up exactly as in the Docs, and it wasn't working. Any ideas?

 

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

	<script>
		<!-- Create DashboardMessageHandler instance -->
		var my_dashboardMessagehandler = new DashboardMessageHandler("Tag-filter-task");
			
		function getRecords(tag) {

			// If the field is emptied, avoid applying an "invalid tag" filter
			if(tag == "") {
				return;
			}

			// Setting the query for the tag
			var filterQuery = "sys_tags." + tag + "=" + tag;

			// Set filter_message properties
			var filterMessage1 = my_dashboardMessagehandler.getFilterMessage("task", filterQuery);
			var filterMessage2 = my_dashboardMessagehandler.getFilterMessage("rm_doc", filterQuery);

			var finalFilter = [filterMessage1, filterMessage2];
			
			SNC.canvas.interactiveFilters.setDefaultValue({
				id: "Tag-filter-task", //my_dashboardMessagehandler._unique_id,
				filters: finalFilter		
			}, false);
			
			// Sending the query to the dashboard
			my_dashboardMessagehandler.publishMessage(finalFilter);	

		}
		
	</script>

	<!-- Create a label and add an OOB UI Macro for the tag reference field -->
	<label id="tag_label">Choose the tag you want to filter for</label>
	<g:ui_reference aria-labelledby="tag_label" name="tag" id="tag" table="label" onChange="getRecords(this.value);" show_popup="true" show_lookup="true" order_by="name" query="active=true^viewable_by=everyone^ORownerDYNAMIC90d1921e5f510100a9ad2572f2b477fe^ORgroup_listDYNAMIC14c62ab1b313401013a082c136a8dc3b^ORuser_listDYNAMIC90d1921e5f510100a9ad2572f2b477fe^nameSTARTSWITHF&amp;R" />

</j:jelly>

 

0 REPLIES 0