How do you create a custom interactive filter on relationship table?

Robert Campbell
Tera Guru

In the community I was able to find a script that allows you to create an interactive filter on a text field and that works great.  I need to do the same thing but on the relationship table. 

 

I have a report that is on the CI Relationship table. It consists of some Kubernetes Clusters and some Kubernetes Services.  I want to filter on the service's namespace so that I will end up with a list of clusters and services where the namespace matches.

 

This is the code that works for short description:

<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
&lt;script&gt;
var my_dashboardMessageHandler = new DashboardMessageHandler("mgp");

function publishFilter () {
	var filter_message = {};
	filter_message.id = "mgp";
	filter_message.table = "cmdb_ci_service";
	var value = gel('cfShortDescription').value;
	filter_message.filter = "short_descriptionLIKE" + value;
	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 = "mgp";
	filter_message.table = "cmdb_ci_service";
	filter_message.filter = "";
	gel('cfShortDescription').value = '';
	SNC.canvas.interactiveFilters.setDefaultValue({
		id: filter_message.id,
		filters: [filter_message]
	}, false);
	my_dashboardMessageHandler.removeFilter();
}
&lt;/script&gt;

Short Description:
<input id="cfShortDescription" type="input" value="" /><br/>
<input id="removeCustomFilter" type="button" value="Clear" onclick="clearFilter();" />
<input id="addCustomFilter" type="button" value="Search" onclick="publishFilter();" />
</j:jelly>

 

I tried this but it didn't work:

<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
&lt;script&gt;
var my_dashboardMessageHandler = new DashboardMessageHandler("ks");

function publishFilter () {
	var filter_message = {};
	filter_message.id = "ks";
	filter_message.table = "cmdb_rel_ci";
	var value = gel('cfNamespace').value;
	filter_message.filter = "child.cmdb_ci_kubernetes_service.namespaceLIKE" + value;
	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 = "ks";
	filter_message.table = "cmdb_rel_ci";
	filter_message.filter = "";
	gel('cfNamespace').value = '';
	SNC.canvas.interactiveFilters.setDefaultValue({
		id: filter_message.id,
		filters: [filter_message]
	}, false);
	my_dashboardMessageHandler.removeFilter();
}
&lt;/script&gt;

Namespace:
<input id="cfNamespace" type="input" value="" /><br/>
<input id="removeCustomFilter" type="button" value="Clear" onclick="clearFilter();" />
<input id="addCustomFilter" type="button" value="Search" onclick="publishFilter();" />
</j:jelly>

I'm assuming I need to identify the column elements (child.cmdb_ci_kubernetes_service.namesepace) but I don't know.

0 REPLIES 0