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);
        }
Ejemplo n.º 3
0
    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));
    }
Ejemplo n.º 6
0
    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;
         }
             );
     }
 }