Есть ли какой-нибудь кейс установки фильтров в модуле раздела (файлы с названием Section.js)? Нужен именно быстрый фильтр, а не fixedFilter. fixedFilter написан так, что если поле фильтрации лукапное, то он считает, что это поле - "Owner" и подставляет в выбор текущего пользователя. Мне же нужно фильтровать по кастомному полю.
В клиентских схемах нашел модуль QuickFilterHelper, но не разобрался как с ним работать, а примеров работы с ним не нашел.
Если у кого-то может предоставить готовые примеры фильтрации по кастомному полю - буду премного благодарен!
Нравится
Богдан, здравствуйте!
Пример установки быстрого фильтра в разделе по указанной колонке, при нажатии на кнопку в другом разделе:
var module = "SectionModuleV2"; var section = "ActivitySectionV2"; var filterColumnName = "Type"; var filterValue = "Задача"; var filterState = { ignoreFixedFilters: true, ignoreFolderFilters: true, customFilterState: {} }; filterState.customFilterState[filterColumnName] = { displayValue: filterValue }; var state = this.sandbox.publish("GetHistoryState"); var newState = this.Terrasoft.deepClone(state.state || {}); this.Ext.apply(newState, { activeTab: "mainView", filterState: filterState, searchState: true, moduleId: "ViewModule_SectionModule" }); var storage = this.Terrasoft.configuration.Storage.Filters = this.Terrasoft.configuration.Storage.Filters || {}; var sessionFilters = storage[section] = storage[section] || {}; sessionFilters.CustomFilters = {}; var filter = Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.START_WITH, filterColumnName, filterValue); sessionFilters.CustomFilters[filterColumnName] = { value: filterValue, displayValue: filterValue, filter: filter.serialize({serializeFilterManagerInfo: true}) }; this.sandbox.publish("PushHistoryState", { hash: this.Terrasoft.combinePath(module, section), stateObj: newState });
Да, и фильтр работает только со второго раза.
Первый раз, если перейти по кнопке - фильтр применяется, но список в разделе пуст.
Перейдя по кнопке второй раз - список отображается нормально.
И так для каждого значения фильтра.
"Вильшанский Дмитрий" написал:Богдан, здравствуйте!
Пример установки быстрого фильтра в разделе по указанной колонке, при нажатии на кнопку в другом разделе:
var module = "SectionModuleV2";
var section = "ActivitySectionV2";
var filterColumnName = "Type";
var filterValue = "Задача";
var filterState = {
ignoreFixedFilters: true,
ignoreFolderFilters: true,
customFilterState: {}
};
filterState.customFilterState[filterColumnName] = {
displayValue: filterValue
};
var state = this.sandbox.publish("GetHistoryState");
var newState = this.Terrasoft.deepClone(state.state || {});
this.Ext.apply(newState, {
activeTab: "mainView",
filterState: filterState,
searchState: true,
moduleId: "ViewModule_SectionModule"
});
var storage = this.Terrasoft.configuration.Storage.Filters = this.Terrasoft.configuration.Storage.Filters || {};
var sessionFilters = storage[section] = storage[section] || {};
sessionFilters.CustomFilters = {};
var filter = Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.START_WITH, filterColumnName, filterValue);
sessionFilters.CustomFilters[filterColumnName] = {
value: filterValue,
displayValue: filterValue,
filter: filter.serialize({serializeFilterManagerInfo: true})
};
this.sandbox.publish("PushHistoryState", {
hash: this.Terrasoft.combinePath(module, section),
stateObj: newState
});
Добрый день!
В вашем примере вы говорите о кнопке в разделе - скажите, пожалуйста, как можно добавить свою кнопку в раздел - именно кнопку, а не действие ( в SDK приведен пример с действием)
В вашем примере, filterValue принимает фиксированное значение "Задача", скажите, пожалуйста, можно ли добавить в сам раздел строку для ввода, с которой можно считывать значение?
Дарья, реализацию кнопки в разделе вы можете посмотреть в схеме BaseSectionV2 (например, кнопка "AddRecordButton").