|
|
|
@ -14,7 +14,12 @@ import { PropCallback } from '../models/props';
|
|
|
|
|
import { createEnum, createEnumOptions, createEnumValueResolver } from './enum.util';
|
|
|
|
|
import { createDisplayNameLocalizationPipeKeyGenerator } from './localization.util';
|
|
|
|
|
import { createExtraPropertyValueResolver } from './props.util';
|
|
|
|
|
import { createTypeaheadOptions, getTypeaheadType } from './typeahead.util';
|
|
|
|
|
import {
|
|
|
|
|
createTypeaheadDisplayNameGenerator,
|
|
|
|
|
createTypeaheadOptions,
|
|
|
|
|
getTypeaheadType,
|
|
|
|
|
hasTypeaheadTextSuffix,
|
|
|
|
|
} from './typeahead.util';
|
|
|
|
|
import { getValidatorsFromProperty } from './validation.util';
|
|
|
|
|
|
|
|
|
|
function selectObjectExtensions(
|
|
|
|
@ -59,7 +64,7 @@ export function getObjectExtensionEntitiesFromStore(
|
|
|
|
|
.entities;
|
|
|
|
|
}),
|
|
|
|
|
map(entities => (isUndefined(entities) ? {} : entities)),
|
|
|
|
|
filter<Entities>(Boolean),
|
|
|
|
|
filter<ObjectExtensions.EntityExtensions>(Boolean),
|
|
|
|
|
take(1),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
@ -75,7 +80,7 @@ export function mapEntitiesToContributors<T = any>(
|
|
|
|
|
const generateDisplayName = createDisplayNameLocalizationPipeKeyGenerator(localization);
|
|
|
|
|
|
|
|
|
|
return Object.keys(entities).reduce(
|
|
|
|
|
(acc, key: keyof Entities) => {
|
|
|
|
|
(acc, key: keyof ObjectExtensions.EntityExtensions) => {
|
|
|
|
|
acc.prop[key] = [];
|
|
|
|
|
acc.createForm[key] = [];
|
|
|
|
|
acc.editForm[key] = [];
|
|
|
|
@ -108,23 +113,30 @@ export function mapEntitiesToContributors<T = any>(
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function createPropertiesToContributorsMapper<T = any>(
|
|
|
|
|
generateDisplayName: DisplayNameGeneratorFn,
|
|
|
|
|
generateDisplayName: ObjectExtensions.DisplayNameGeneratorFn,
|
|
|
|
|
resource: string,
|
|
|
|
|
enums: Record<string, ObjectExtensions.ExtensionEnumDto>,
|
|
|
|
|
) {
|
|
|
|
|
return (
|
|
|
|
|
properties: Record<string, ObjectExtensions.ExtensionPropertyDto>,
|
|
|
|
|
properties: ObjectExtensions.EntityExtensionProperties,
|
|
|
|
|
contributors: ObjectExtensions.PropContributors<T>,
|
|
|
|
|
key: string,
|
|
|
|
|
) => {
|
|
|
|
|
const isExtra = true;
|
|
|
|
|
const generateTypeaheadDisplayName = createTypeaheadDisplayNameGenerator(
|
|
|
|
|
generateDisplayName,
|
|
|
|
|
properties,
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
Object.keys(properties).forEach((name: string) => {
|
|
|
|
|
const property = properties[name];
|
|
|
|
|
const propName = name;
|
|
|
|
|
const lookup = property.ui.lookup || ({} as ExtensionPropertyUiLookupDto);
|
|
|
|
|
const type = getTypeaheadType(lookup, name) || getTypeFromProperty(property);
|
|
|
|
|
const displayName = generateDisplayName(property.displayName, { name, resource });
|
|
|
|
|
const generateDN = hasTypeaheadTextSuffix(name)
|
|
|
|
|
? generateTypeaheadDisplayName
|
|
|
|
|
: generateDisplayName;
|
|
|
|
|
const displayName = generateDN(property.displayName, { name, resource });
|
|
|
|
|
|
|
|
|
|
if (property.ui.onTable.isVisible) {
|
|
|
|
|
const sortable = Boolean(property.ui.onTable.isSortable);
|
|
|
|
@ -186,6 +198,3 @@ function getTypeFromProperty(property: ObjectExtensions.ExtensionPropertyDto): e
|
|
|
|
|
function isUndefined(obj: any): obj is undefined {
|
|
|
|
|
return typeof obj === 'undefined';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type DisplayNameGeneratorFn = ReturnType<typeof createDisplayNameLocalizationPipeKeyGenerator>;
|
|
|
|
|
type Entities = Record<string, ObjectExtensions.EntityExtensionDto>;
|
|
|
|
|