Бизнес-поиск записей активов¶
Добавление поискового терма на страницу поиска по активам¶
Точка расширения 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;
}
};