[ELMA4] Поиск (FilterModel)

Методы для работы

C#

FilterModel.Builder() получение построителя для установки настроек.

Пример:

@Html.Partial("Filter/FilterModel", Model.FilterModel.Builder().Model,
    new ViewDataDictionary { TemplateInfo = new TemplateInfo { HtmlFieldPrefix = "DataFilter" } })

Настройки поиска:

  • SubmitText текст кнопки выполнения поиска;
  • ApplayFilterScript метод для фильтрации;
  • FilterUrl ссылка на фильтр;
  • SetFastSaveFilterRoute сохранение фильтра;
  • Header заголовок, входным параметром является string;
  • HeaderContent кастомый заголовок, входным параметром является разметка MvcHtmlString;
  • FilterLinkUrl(string) ссылка на текущий поиск для работы кнопки-фильтра;
  • DefaultFields(new List<Guid>) список свойств для фильтрации;
  • SimpleSearchTr кастомизация поиска;
  • FilterMenuItemCode добавление дерева фильтров.

Пример: кастомизация поиска, чтобы добавить кнопки.

@helper SimpleSearchTr(HtmlHelper<Common.Models.FilterModel> html)
{
    @Html.FilterSearchForm().FastSearchBoxFor("").Enabled(false).IsShortSearch(true).ActionButtons(a =>
    {
        // добавление кнопки-фильтра
        a.Add(new FastSearchFilterTreeButton(SR.T("Все процессы"), Url.Action("Index") + "?FilterId=")
        {
            OnClick = string.Format("openPopoverWindow('{0}', this);", FastSearchFilterTreeButton.GetFilterTreeId(ProcessesMenuItems.IMPROVEMENT)),
            Index = 3
        });

        // добавление кнопки
        a.Add(new FastSearchActionButton()
        {
            Style = new HtmlStyle(),
            OnClick = "click()",
            CssClass = "test",
            Icon = "#add.svg",
            Index = 2
        });
    })
}
@Html.Partial("Filter/FilterModel", builder
.SimpleSearchTr(helper => SimpleSearchTr(helper))
.Model)

Пример: добавление контента в кастомный поиск.

@helper SimpleSearchTr(HtmlHelper<Common.Models.FilterModel> html)
{
    @Html.FilterSearchForm().FastSearchBoxFor(m => m.Filter.SearchString)
        .Enabled(false)
        .IsShortSearch(true)
        .Custom(@<text>
            @if (searchTasksType == SearchTasksType.Incoming)
            {
                <div class="custom-fastSearch-item">
                    <div class="custom-fastSearch-propertyName">
                        <b>@SR.T("От")</b>
                    </div>
                    <div class="custom-fastSearch-property">
                        @Html.Editor(m => m.CreationAuthor })
                    </div>
                </div>
            }
            <div class="custom-fastSearch-buttons">
                @Html.FilterSearchForm().FastSearchButton()
            </div>
        </text>);
}
@Html.Partial("Filter/FilterModel", builder
.SimpleSearchTr(helper => SimpleSearchTr(helper))
.Model)

Точки расширения

IFilterPropertiesExtensionизменение видимости свойств в поиске.

Основные изменения в ELMA4 по сравнению с ELMA3

1. Изменена разметка поиска. Следует проверить скрипты.

Форма поиска в ELMA3:

Форма поиска в ELMA4:

2. Перенесено дерево фильтров из левого меню в поиск. В ELMA3 было реализовано в FilterMenuItemRenderer : IMenuItemRenderer.

Пример: чтобы перенести дерево, нужно указать в FiltermenuItemCode идентификатор элемента левого меню, к которому привязан фильтр.

@Html.Partial("Filter/FilterModel", Model.FilterModel.Builder()
    .FilterMenuItemCode(TasksMenuItems.workLogApprove)
    .Model,
    new ViewDataDictionary { TemplateInfo = new TemplateInfo { HtmlFieldPrefix = "DataFilter" } })

3. Добавлены методы FilterLinkUrl, HeaderContent, Header.