Question

Added filter to detail with filterMethod but base filter no longer work

Hi,

I want to add a detail to the project page to show all activities associated with the project but only those with category = call.

I added the filterMethod to the detail on the projectPagev2 like this:

"UsrSchemae82228e2Detail99ddf41c": {
				"schemaName": "UsrSchemae82228e2Detail",
				"entitySchemaName": "Activity",
				"filter": {
					"detailColumn": "Project",
					"masterColumn": "Id"
				},
				"filterMethod": "activityCallFilter"				
			}

and created the activityCallFilter in the methods section

		methods: {
			activityCallFilter: function() {
        var filterGroup = new this.Terrasoft.createFilterGroup();
        filterGroup.logicalOperation = this.Terrasoft.LogicalOperatorType.AND;
        filterGroup.add("CallFilter", this.Terrasoft.createColumnFilterWithParameter(
        this.Terrasoft.ComparisonType.EQUAL, "ActivityCategory", "03df85bf-6b19-4dea-8463-d5d49b80bb28"));
        return filterGroup;
    },
}

As a result I get only activities with category = Call but for ALL PROJECTS. no longer filtering to only current project.

When removing the added script I get a list of activities associated with the project but ALL categories. 

How can I have both "base" filter and the custom filter?

Thanks,

Chani

Like 0

Like

2 comments
Best reply

Hi Chani,

 

You have to extend Your method like this ...

activityCallFilter: function() {
				var recordId = this.get("Id");
				var filterGroup = new this.Terrasoft.createFilterGroup();
				filterGroup.logicalOperation = this.Terrasoft.LogicalOperatorType.AND;
				filterGroup.add("CallFilter", this.Terrasoft.createColumnFilterWithParameter(
				this.Terrasoft.ComparisonType.EQUAL, "ActivityCategory", "03df85bf-6b19-4dea-8463-d5d49b80bb28"));
				filterGroup.add("Project", this.Terrasoft.createColumnFilterWithParameter(
								this.Terrasoft.ComparisonType.EQUAL, "Project", recordId));
				return filterGroup;
			}

Best regards,

Marcin

Hi Chani,

 

You have to extend Your method like this ...

activityCallFilter: function() {
				var recordId = this.get("Id");
				var filterGroup = new this.Terrasoft.createFilterGroup();
				filterGroup.logicalOperation = this.Terrasoft.LogicalOperatorType.AND;
				filterGroup.add("CallFilter", this.Terrasoft.createColumnFilterWithParameter(
				this.Terrasoft.ComparisonType.EQUAL, "ActivityCategory", "03df85bf-6b19-4dea-8463-d5d49b80bb28"));
				filterGroup.add("Project", this.Terrasoft.createColumnFilterWithParameter(
								this.Terrasoft.ComparisonType.EQUAL, "Project", recordId));
				return filterGroup;
			}

Best regards,

Marcin

Marcin Kott,

So you say the filterMethod overrides the base filter, and the only way to achieve both is to have both in the function, don't you?

I added and it works but I thought there can be a nicer way :) 

Thank you!

Show all comments