Как можно отфильтровать колонки быстрого фильтра?
Добрый день, нужно что бы фильтр работал только по определенным колонкам, нашел это обсуждение у меня аналогичная задача https://community.terrasoft.ua/questions/filtraciya-standartnogo-filtra
но как я понял метод отсюда больше не актуален, в какую сторону копать , что бы сделать данную доработку?
Нравится
Добрый день,
Проставьте колонкам, что не должны появляться в фильтрации Usage mode = None (в дизайнере объекта) и опубликуйте объект. После этого колонки в фильтре появляться не будут.
Oscar Dylan,
Но тогда эти колонки не будут появляться и настройке колонок, аналитике, бизнес-процессах и т.п.?
Oscar Dylan,
добрый день, мне только убрать из простого фильтра,а не отключить ее вовсе нужно
Можете воспользоваться наследованием от QuickFilterModule, но в таком случае нужно будет подправить имена в Load в базовой схеме
define("ContactSectionV2", ["ConfigurationEnums"], function(ConfigurationEnums) {
Ext.define("Terrasoft.ContactSectionV2", {
alternateClassName: "Terrasoft.ContactSectionV2",
override: "Terrasoft.configuration.QuickFilterModule",//Название замещенного модуля
/* Замещенная фуния */
init: function(callback, scope) {
window.alert("QuickFilterModuleV2: init");
performanceManager.stop("QuickFilterModuleV2_BeforeLoad");
performanceManager.start("QuickFilterModuleV2_Init");
if (this.isInitialized) {
Ext.callback(callback, scope);
return;
}
this.initConfig();
this.registerMessages();
this.subscribeSandboxEvents();
this.initFiltersViewItemsNames();
var afterParentInitFn = this._afterParentInit.bind(this, callback, scope);
var parentInitFn = this.getParentMethod(this, [afterParentInitFn, this]);
Terrasoft.chain(
this.initSysSettingsValues,
this.initFiltersEntitySchemas,
this.initFiltersModules,
this._initConfigs,
parentInitFn,
this,
);
},
render: function(renderTo) {
this.callParent([renderTo]);
var customFilterViewModel = this.viewModel.getFilterViewModel("CustomFilters");
if (customFilterViewModel) {
// Переопределяем метод getSimpleFilterColumnList для этого объекта
customFilterViewModel.getSimpleFilterColumnList = function(filters, list) {
function filterColumns(schemaInstanceUId, columnNames) {
switch(schemaInstanceUId) {
case 'c449d832-a4cc-4b01-b9d5-8a12c42a9f89': // Activity
return columnNames.filter(function(x) {
return x.name !== 'Color';
});
default:
return columnNames;
}
}
list.clear();
var columnList = {};
var columnNames = [];
var columns = this.entitySchema.columns;
var excludeColumnsName = ["ФИО", "Адрес"]
Terrasoft.each(columns, function(column) {
if (column.dataValueType !== Terrasoft.DataValueType.GUID &&
column.dataValueType !== Terrasoft.DataValueType.TIME &&
column.dataValueType !== Terrasoft.DataValueType.BLOB &&
column.dataValueType !== Terrasoft.DataValueType.IMAGELOOKUP &&
column.usageType !== ConfigurationEnums.EntitySchemaColumnUsageType.None) {
this.console.log(column.caption)
if (this.isColumnDeprecated(column) || excludeColumnsName.includes(column.caption)) {
return;
}
columnNames.push({
name: column.name,
caption: column.caption
});
}
}, this);
var filteredColumnNames = filterColumns(this.entitySchema.uId, columnNames);
var sortedColumnNames = filteredColumnNames.sort((a, b) => a.caption.localeCompare(b.caption));
Terrasoft.each(sortedColumnNames, function(item) {
var column = columns[item.name];
columnList[column.name] = {
value: column.name,
displayValue: column.caption,
dataValueType: column.dataValueType,
referenceSchemaName: column.referenceSchemaName
};
});
list.loadAll(columnList);
};
}
},
});
//<---------------------------
return {
entitySchemaName: "Contact",
details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/,
};
});
//на 7.18 работает(лучше способа как переопределить метод из вьюмодели я не смог придумать)