Бизнес-поиск записей активов
Добавление поискового терма на страницу поиска по активам
Точка расширения BusinessSystemST позволяет добавить на страницу бизнес-поиска поисковый терм в разделе системных критериев.
Для корректной работы, требуется дополнительная реализация точки расширения SearchTermFactory. Это необходимо для восстановления статуса критерия после перезагрузки страницы.
Описание BusinessSystemST:
type Resolver = (searchStore: BusinessSearchDataStore) => boolean;
type Meta = {
    order: number;
};
export type BusinessSystemST = UeModuleBase<Resolver, Meta> & {
    fn: () => AbstractSearchTerm;
};
Пример реализации: Дополнительный поисковой критерий для поиска по тегам
export const businessSystemTagSTUE: UniverseUE.IUeMeta['BusinessSystemST'] = {
    moduleId: 'businessSystemTag',
    active: true,
    system: false,
    meta: {
        order: 1
    },
    resolver: () => true,
    fn: () => {
        return new BSTagSearchTerm({
            key: 'TAG_SEARCH_KEY',
            displayName: 'Поиск по тегу'
        });
    }
};
Определение компонента рендера при поисковом терме бизнес-поиска
Точка расширения RenderBusinessSearchTermDG позволяет определить компонент рендера, который соответствует поисковому терму страницы бизнес-поиска.
Описание RenderBusinessSearchTermDG:
export type RenderBusinessSearchTermProps = {
    searchTerm: AbstractSearchTerm;
    onDelete?: () => void;
    searchStore?: BusinessSearchDataStore;
    onChange: () => void;
}
type Resolver = (store: BusinessSearchDataStore, term: AbstractSearchTerm) => boolean;
type Meta = {
    searchKey: UniverseSearch.SearchPayloadKeys;
}
export type UERenderBusinessSearchTermDG = UeModuleBase<Resolver, Meta> & {
    component: ComponentType<RenderBusinessSearchTermProps>;
}
Пример реализации: Компонент для рендера поля редактирования поискового терма по тегам
export const renderBusinessSystemTag: UniverseUE.IUeMeta['RenderBusinessSearchTermDG'] = {
    moduleId: 'renderBusinessSystemTag',
    active: true,
    system: false,
    meta: {
        searchKey: SearchPayloadKey.ASSET
    },
    resolver: (store: BusinessSearchDataStore, term: AbstractSearchTerm) => {
        return term instanceof BSTagSearchTerm;
    },
    component: TagSelectComponent
};
Дополнительная поисковая панель на странице бизнес-поиска
Точка расширения BusinessSearchFilter позволяет добавить на страницу бизнес-поиска дополнительную поисковую панель.
Описание BusinessSearchFilter:
type BusinessSearchFilterProps = {
    searchStore: BusinessSearchDataStore;
}
type Resolver = (searchStore: BusinessSearchDataStore) => boolean;
type Meta = {
    order: number;
};
export type BusinessSearchFilter = UeModuleBase<Resolver, Meta> & {
    component: ComponentType<BusinessSearchFilterProps>;
};
Пример реализации: обычная панель с любым содержимым, зависящая от наличия выбранного типа актива
type BusinessSearchFilterProps = {
    searchStore: BusinessSearchDataStore;
}
class Component extends React.PureComponent<BusinessSearchFilterProps> {
    override render () {
        return (
           <div>Hello World</div>
        );
    }
}
export const filterUe: UniverseUE.IUeMeta['BusinessSearchFilter'] = {
    moduleId: 'filterUe',
    active: true,
    system: false,
    meta: {order: 1},
    resolver: (store: BusinessSearchDataStore) => {
        return !Boolean(store.entityName);
    },
    component: Component
};
Дополнительный контент для карточки результата бизнес-поиска
Точка расширения BusinessSearchResultCardRows позволяет добавить на страницу бизнес-поиска дополнительный контент для карточки результата поиска.
Описание BusinessSearchResultCardRows:
type BusinessSearchResultCardRowsProps = {
    searchStore: BusinessSearchDataStore;
    searchHit: SearchHit;
}
type Resolver = (searchStore: BusinessSearchDataStore) => boolean;
type Meta = {
    order: number;
    isInSideColumn: boolean; // если указать `true` то компонент отобразиться в правой части карточки
};
export type UEBusinessSearchResultCardRows = UeModuleBase<Resolver, Meta> & {
    component: ComponentType<BusinessSearchResultCardRowsProps>;
};
Пример реализации: Дополнительный ряд в карточке результата поиска с компонентом тегов:
export const tagsRowUe: UniverseUE.IUeMeta['BusinessSearchResultCardRows'] = {
    moduleId: 'tagsRowUe',
    active: true,
    system: false,
    meta: {
        order: 1,
        isInSideColumn: false
    },
    resolver: (store: BusinessSearchDataStore) => {
        return true;
    },
    component: TagsRow
};
Дополнительные кнопки сортировки на странице бизнес-поиска
Точка расширения BusinessSearchSortButtons позволяет добавить на страницу бизнес-поиска дополнительные кнопки сортировки.
Описание BusinessSearchSortButtons:
type Resolver = (store: BusinessSearchDataStore) => boolean;
type Meta = {
    order: number;
    title: () => string;
    sortField: string;
    valueType: VALUE_TYPE;
}
export type UEBusinessSearchSortButtons = UeModuleBase<Resolver, Meta>;
Пример реализации: Дополнительная кнопка с сортировкой по оценке
export const scoreSortUe: UniverseUE.IUeMeta['BusinessSearchSortButtons'] = {
    moduleId: 'scoreSortUe',
    active: true,
    system: false,
    meta: {
        order: 2,
        title: () => i18n.t('...>byScore'),
        valueType: "NUMBER",
        sortField: '$average_score'
    },
    resolver: (store: BusinessSearchDataStore) => {
        return true;
    }
};