Всем привет!
Есть потребность расширить функциональность строки поиска (там где написано Что я могу для вас сделать) для поиска информации по другим сущностям (почта, адреса и т.п.). Кто-нибудь сталкивался с похожей задачей или может быть есть какие-то стандартные инструменты расширения функциональности?
Заранее спасибо за ответы.
Нравится
Поставьте точку останова в методе getFilters в схеме BaseDataView, увидите колстек выполнения, как идет фильтрация.
Лучше будет наверное, для частых поисков например по Email, добавить новое поле в секцию раздела. Затем вы можете получить значение этого поля и в переопределенном методе getFilters нужного вам раздела, дополнять фильтры как вам нужно. При наличии например "@" в введенном значении делаете например такой фильтр:
getFilters: function() { var filterGroup = this.callParent(arguments); filterGroup.logicalOperation = Terrasoft.LogicalOperatorType.OR; var emailFilter = //получаем введенное значение в новое поле; if (emailFilter && emailFilter.includes("@")) {//либо сразу делать маску почты и проверку по маске filterGroup.add("EmailFilter", this.Terrasoft.createColumnFilterWithParameter( this.Terrasoft.ComparisonType.CONTAIN, "[ContactCommunication:Contact].Number".substring(), emailFilter)); } return filterGroup; },
Посмотрите на академии статью по настройке глобального поиска.
Поставьте точку останова в методе getFilters в схеме BaseDataView, увидите колстек выполнения, как идет фильтрация.
Лучше будет наверное, для частых поисков например по Email, добавить новое поле в секцию раздела. Затем вы можете получить значение этого поля и в переопределенном методе getFilters нужного вам раздела, дополнять фильтры как вам нужно. При наличии например "@" в введенном значении делаете например такой фильтр:
getFilters: function() { var filterGroup = this.callParent(arguments); filterGroup.logicalOperation = Terrasoft.LogicalOperatorType.OR; var emailFilter = //получаем введенное значение в новое поле; if (emailFilter && emailFilter.includes("@")) {//либо сразу делать маску почты и проверку по маске filterGroup.add("EmailFilter", this.Terrasoft.createColumnFilterWithParameter( this.Terrasoft.ComparisonType.CONTAIN, "[ContactCommunication:Contact].Number".substring(), emailFilter)); } return filterGroup; },