Страница настройки модели данных¶
Добавление вкладки на страницу настройки модели данных¶
Точка расширения UEMetaModelTab предназначена для добавления вкладок в модели данных.
Можно расширять существующую модель через CustomProperties или показывать дополнительную информацию по связанным сущностям.
Описание UEMetaModelTab:
type TabDisabledConfig = {
isDisabled: boolean;
disableReasons?: string[];
}
export type UEMetaModelTab = UeModuleBase & {
default: {
component: ComponentType<{
attributesStore: AttributesStore;
metaModel: IMetaModel;
draftId?: DraftId;
}>; // Компонент для рендеринга, если выбрана текущая вкладка
meta: {
name: string; // Ключ вкладки
getDisplayName: () => string; // Заголовок вкладки
getTabDisabledConfig?: (metaModel: IMetaModel) => TabDisabledConfig; // Функция проверки отключения вкладки и получения причин отключения
};
resolver: (metaModel: IMetaModel) => boolean;
};
}
Пример UEMetaModelTab: вкладка "Внешний вид".
export const metaModelTabs: UEMetaModelTab[] = [
{
'default': {
type: UEList.MetaModelTab,
moduleId: 'dataCardLayoutTab',
active: true,
system: false,
meta: {
name: 'layout',
getDisplayName: () => {
return i18n.t('module.meta-se>layoutTab');
},
getTabDisabledConfig: (metaModel: IMetaModel) => {
const hasPhantomAttribute = metaModel.getAttributes()
.some((attribute) => {
return attribute.getPhantom();
});
return {
isDisabled: hasPhantomAttribute,
disableReasons: [
i18n.t('module.meta-se>tabDisableReason')
]
};
}
},
resolver: (metaModel: IMetaModel) => {
return metaModel ? (MetaDataTypeGuards.isEntity(metaModel) || MetaDataTypeGuards.isLookupEntity(metaModel)) : false;
},
component: EntityLayoutTab
}
}
];