Помогите! Надо добавить скрытые фильтрацию в разделе

Всем добрый день!

Бьюсь второй день. Нужно добавить группу фильтров в разделе с оператором OR.

По умолчанию в коробке в коллекцию фильтров filters добавляются группы через AND, при этом легко добавляется просто одиночный фильтр (например "FilterStatus"). Но вот группа фильтров - уже не работает.
Судя по примеру добавления фильтров "FixedFilter" и "CustomFilter" в коробке продукта - нужно как то хитро определять конфиг этой группы. Я добавляю items в группу, но получается не так, как у Terrasoft. Их исходного кода найти не могу. Помогите, пожалуйста :( Что не так...

getFilters: function() {
 
debugger;
var filters = this.callParent(arguments);
var items = this.$UsrGroups;
let counter = 1;
//создание группы фильтров
var usrFilterGroup = this.Ext.create("Terrasoft.FilterGroup");
usrFilterGroup.logicalOperation = this.Terrasoft.LogicalOperatorType.OR;
//добавление фильтра по каждой группе юзера
for (var item in items) {
	var tempFilterGroup = Terrasoft.createColumnFilterWithParameter(
		Terrasoft.ComparisonType.EQUAL, "Group.Id", item);
	usrFilterGroup.addItem(tempFilterGroup);
	window.console.log("Добавлен фильтр по группе " + item.Name);
	counter++;
}
filters.add("UserGroupsFilter", usrFilterGroup);
return filters;
}

 

Нравится

4 комментария

Вам нужно вернуть фильтр с условием User filter или Section filter, так?

 

Если так, то тогда нужно создать две группы, одна группа, которая будет объединять фильтры секции и вторая с вашими фильтрами. В общей группе сделать тип or, в вашей вам нужно. И потов вернуть не filters, а объединяющую группу.

 

var usrSectionFilterGroup = this.Ext.create("Terrasoft.FilterGroup");
usrSectionFilterGroup.logicalOperation = this.Terrasoft.LogicalOperatorType.OR;

usrSectionFilterGroup.add("SectionFilter", filters);

var usrFilterGroup = this.Ext.create("Terrasoft.FilterGroup");
//ваш фильтр
usrSectionFilterGroup.add("UsrFilterGroup", usrFilterGroup);

return usrSectionFilterGroup;

 

 

Трефилов Павел Сергеевич,

Ваш вариант не работает (
Надо добавить фильтр так чтобы он нигде визуально не отображался, остальное не важно.
Помогите разобраться (
 

В ActivitySectionV2 так, и все работает... Тут тоже самое - нет... Каааааак?

getFilters: function() {
 
var filters = this.callParent(arguments);
	var fixedFilters = filters.contains("FixedFilters")	? filters.get("FixedFilters") : null;
	if (!this.Ext.isEmpty(fixedFilters) && fixedFilters.contains("Owner")) {
	var ownerFilters = fixedFilters.get("Owner");
	if (ownerFilters.contains("OwnerDefaultFilter")) {
	ownerFilters.removeByKey("OwnerDefaultFilter");
}
}
if (this.isSchedulerDataView()) {
	if (!filters.contains("ShowInSchedulerFilter")) {
	filters.add("ShowInSchedulerFilter", this.Terrasoft.createColumnFilterWithParameter(
		this.Terrasoft.ComparisonType.EQUAL, "ShowInScheduler", true));
	}
	if (!fixedFilters) {
		fixedFilters = this.Terrasoft.createFilterGroup();
		fixedFilters.logicalOperation = Terrasoft.LogicalOperatorType.AND;
		filters.add("FixedFilters", fixedFilters);
	}
	var hasPeriodFilters = fixedFilters.contains("PeriodFilter");
	var periodFilter = hasPeriodFilters ? fixedFilters.get("PeriodFilter") : null;
	if (!hasPeriodFilters || (periodFilter && !(periodFilter instanceof Terrasoft.Collection))) {
		this.setDateFiltersCurrentDate(fixedFilters);
	}
}
	if (this.isNotSchedulerDataView() &&
		filters.contains("ShowInSchedulerFilter")) {
		filters.removeByKey("ShowInSchedulerFilter");
}
 
filters.add("NotEmailFilter", this.Terrasoft.createColumnFilterWithParameter(
	this.Terrasoft.ComparisonType.NOT_EQUAL, "Type", ConfigurationConstants.Activity.Type.Email
));
 
return filters;
},
 
				/**
				 * ############# ############ ####### ## ####### ### ########## ## ####### ####.
				 * @private
				 * @param {Object} fixedFilters ###### ############ ########.
				 */
setDateFiltersCurrentDate: function(fixedFilters) {
	var now = new Date();
	var periodFilter = this.Terrasoft.createFilterGroup();
	periodFilter.logicalOperation = Terrasoft.LogicalOperatorType.AND;
	periodFilter.add("DueDate", this.Terrasoft.createColumnFilterWithParameter(
	this.Terrasoft.ComparisonType.GREATER_OR_EQUAL, "DueDate",
	this.Terrasoft.startOfDay(now)));
	periodFilter.add("StartDate", this.Terrasoft.createColumnFilterWithParameter(
	this.Terrasoft.ComparisonType.LESS_OR_EQUAL, "StartDate",
	this.Terrasoft.endOfDay(now)));
	if (fixedFilters.contains("PeriodFilter")) {
	fixedFilters.removeByKey("PeriodFilter");
}
fixedFilters.add("PeriodFilter", periodFilter);
},

 

Добрый день, Надежда!

Хочу у вас уточнить, вы проводили отладку вашего кода?
Также мне интересно, что именно у вас представляет $UsrGroups?
Попробовал запустить ваш код, в итоге объект items был undefiend.

Показать все комментарии