protected virtual LocalizableStringDto CreateDisplayNameDto(ExtensionPropertyConfiguration propertyConfig) { if (propertyConfig.DisplayName == null) { return(null); } if (propertyConfig.DisplayName is LocalizableString localizableStringInstance) { return(new LocalizableStringDto( localizableStringInstance.Name, localizableStringInstance.ResourceType != null ? LocalizationResourceNameAttribute.GetName(localizableStringInstance.ResourceType) : null )); } if (propertyConfig.DisplayName is FixedLocalizableString fixedLocalizableString) { // "_" means don't use the default resource, but directly use the name. return(new LocalizableStringDto(fixedLocalizableString.Value, "_")); } return(null); }
protected virtual ExtensionPropertyDto CreateExtensionPropertyDto( ExtensionPropertyConfiguration propertyConfig) { var extensionPropertyDto = new ExtensionPropertyDto { Type = TypeHelper.GetFullNameHandlingNullableAndGenerics(propertyConfig.Type), TypeSimple = GetSimpleTypeName(propertyConfig), Attributes = new List <ExtensionPropertyAttributeDto>(), DisplayName = CreateDisplayNameDto(propertyConfig), Configuration = new Dictionary <string, object>(), DefaultValue = propertyConfig.GetDefaultValue(), Api = new ExtensionPropertyApiDto { OnGet = new ExtensionPropertyApiGetDto { IsAvailable = propertyConfig.Api.OnGet.IsAvailable }, OnCreate = new ExtensionPropertyApiCreateDto { IsAvailable = propertyConfig.Api.OnCreate.IsAvailable }, OnUpdate = new ExtensionPropertyApiUpdateDto { IsAvailable = propertyConfig.Api.OnUpdate.IsAvailable } }, Ui = new ExtensionPropertyUiDto { OnCreateForm = new ExtensionPropertyUiFormDto { IsVisible = propertyConfig.UI.OnCreateForm.IsVisible }, OnEditForm = new ExtensionPropertyUiFormDto { IsVisible = propertyConfig.UI.OnEditForm.IsVisible }, OnTable = new ExtensionPropertyUiTableDto { IsVisible = propertyConfig.UI.OnTable.IsVisible } } }; foreach (var attribute in propertyConfig.Attributes) { extensionPropertyDto.Attributes.Add( ExtensionPropertyAttributeDtoFactory.Create(attribute) ); } foreach (var customConfig in propertyConfig.Configuration.Where(c => !c.Key.StartsWith("_"))) { extensionPropertyDto.Configuration[customConfig.Key] = customConfig.Value; } return(extensionPropertyDto); }
private void AddLookupTextProperty(ExtensionPropertyConfiguration propertyInfo) { var lookupTextPropertyName = $"{propertyInfo.Name}_Text"; var lookupTextPropertyInfo = Properties.GetOrAdd( lookupTextPropertyName, () => new ExtensionPropertyConfiguration(this, typeof(string), lookupTextPropertyName) ); lookupTextPropertyInfo.DisplayName = propertyInfo.DisplayName; }
public static Type GetLocalizationResourceTypeOrNull( this ExtensionPropertyConfiguration property) { if (property.DisplayName != null && property.DisplayName is LocalizableString localizableString) { return(localizableString.ResourceType); } return(null); }
public static string GetLocalizationResourceNameOrNull( this ExtensionPropertyConfiguration property) { var resourceType = property.GetLocalizationResourceTypeOrNull(); if (resourceType == null) { return(null); } return(LocalizationResourceNameAttribute.GetName(resourceType)); }
private static void NormalizeProperty(ExtensionPropertyConfiguration propertyInfo) { if (!propertyInfo.Api.OnGet.IsAvailable) { propertyInfo.UI.OnTable.IsVisible = false; } if (!propertyInfo.Api.OnCreate.IsAvailable) { propertyInfo.UI.OnCreateForm.IsVisible = false; } if (!propertyInfo.Api.OnUpdate.IsAvailable) { propertyInfo.UI.OnEditForm.IsVisible = false; } }
protected virtual string GetSimpleTypeName(ExtensionPropertyConfiguration propertyConfig) { if (propertyConfig.Type.IsEnum) { return("enum"); } if (propertyConfig.IsDate()) { return("date"); } if (propertyConfig.IsDateTime()) { return("datetime"); } return(TypeHelper.GetSimplifiedName(propertyConfig.Type)); }
protected virtual ExtensionEnumDto CreateExtensionEnumDto(ExtensionPropertyConfiguration enumProperty) { var extensionEnumDto = new ExtensionEnumDto { Fields = new List <ExtensionEnumFieldDto>(), LocalizationResource = enumProperty.GetLocalizationResourceNameOrNull() }; foreach (var enumValue in enumProperty.Type.GetEnumValues()) { extensionEnumDto.Fields.Add( new ExtensionEnumFieldDto { Name = enumProperty.Type.GetEnumName(enumValue), Value = enumValue } ); } return(extensionEnumDto); }
public static void ApplyPropertyConfigurationToTypes( ExtensionPropertyConfiguration propertyConfig, Type[] types) { lock (SyncLock) { ObjectExtensionManager.Instance .AddOrUpdateProperty( types, propertyConfig.Type, propertyConfig.Name, property => { property.Attributes.Clear(); property.Attributes.AddRange(propertyConfig.Attributes); property.DisplayName = propertyConfig.DisplayName; property.Validators.AddRange(propertyConfig.Validators); property.DefaultValue = propertyConfig.DefaultValue; property.DefaultValueFactory = propertyConfig.DefaultValueFactory; property.Lookup = propertyConfig.UI.Lookup; } ); } }