|
|
|
@ -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>; |
|
|
|
|