Exemplo n.º 1
0
        private static void SetElementData(PrintElementBuildContext buildContext, string sourceProperty,
                                           string sourceExpression)
        {
            buildContext.ElementSourceProperty   = sourceProperty;
            buildContext.ElementSourceExpression = sourceExpression;

            var elementSourceValue = buildContext.ElementSourceValue;

            // Если указано свойство данных
            if (!string.IsNullOrEmpty(sourceProperty))
            {
                if (sourceProperty != "$")
                {
                    elementSourceValue = sourceProperty.StartsWith("$.")
                        ? buildContext.PrintViewSource.GetProperty(sourceProperty.Substring(2))
                        : buildContext.ElementSourceValue.GetProperty(sourceProperty);
                }
                else
                {
                    elementSourceValue = buildContext.PrintViewSource;
                }
            }

            // Если указано выражение над данными
            if (!string.IsNullOrEmpty(sourceExpression))
            {
                elementSourceValue = ExpressionExecutor.Execute(sourceExpression, elementSourceValue);
            }

            buildContext.ElementSourceValue = elementSourceValue;
        }
Exemplo n.º 2
0
        public object BuildElement(PrintElementBuildContext buildContext, dynamic elementMetadata)
        {
            if (elementMetadata is IDynamicMetaObjectProvider)
            {
                foreach (var property in elementMetadata)
                {
                    return(BuildElement(buildContext, property.Value, property.Key));
                }
            }

            return(null);
        }
Exemplo n.º 3
0
        public object BuildElement(PrintElementBuildContext buildContext, dynamic elementMetadata, string elementType)
        {
            if (elementMetadata != null)
            {
                IPrintElementFactory elementFactory;

                if (_factories.TryGetValue(elementType, out elementFactory) &&
                    CanCreateElement(buildContext, elementMetadata))
                {
                    var element = elementFactory.Create(buildContext, elementMetadata);
                    buildContext.MapElement(element, elementMetadata);
                    return(element);
                }
            }

            return(null);
        }
Exemplo n.º 4
0
        public IEnumerable BuildElements(PrintElementBuildContext buildContext, IEnumerable elementMetadata)
        {
            if (elementMetadata != null)
            {
                var items = new List <object>();

                foreach (var itemMetadata in elementMetadata)
                {
                    var item = BuildElement(buildContext.Clone(), JsonObjectSerializer.Default.ConvertFromDynamic <DynamicWrapper>(itemMetadata));

                    if (item != null)
                    {
                        items.Add(item);
                    }
                }

                return(items);
            }

            return(null);
        }
Exemplo n.º 5
0
        public IEnumerable BuildElements(PrintElementBuildContext buildContext, IEnumerable elementMetadata,
                                         string elementType)
        {
            if (elementMetadata != null)
            {
                var items = new List <object>();

                foreach (var itemMetadata in elementMetadata)
                {
                    var item = BuildElement(buildContext.Clone(), itemMetadata, elementType);

                    if (item != null)
                    {
                        items.Add(item);
                    }
                }

                return(items);
            }

            return(null);
        }
Exemplo n.º 6
0
        private static bool CanCreateElement(PrintElementBuildContext buildContext, dynamic elementMetadata)
        {
            string visibility;

            if (!ConvertHelper.TryToNormString(elementMetadata.Visibility, out visibility))
            {
                visibility = "source";
            }

            if (visibility == "never")
            {
                return(false);
            }

            string sourceProperty;
            string sourceExpression = null;

            var hasDataSource = ConvertHelper.TryToString(elementMetadata.Source, out sourceProperty) ||
                                ConvertHelper.TryToString(elementMetadata.Expression, out sourceExpression);

            // Если у элемента указан источник данных
            if (hasDataSource)
            {
                // Установка данных элемента по источнику
                SetElementData(buildContext, sourceProperty, sourceExpression);

                // Если элемент печатается только при наличии данных
                if (!buildContext.IsDesignMode && (visibility == "source") &&
                    ConvertHelper.ObjectIsNullOrEmpty(buildContext.ElementSourceValue))
                {
                    return(false);
                }
            }

            // Установка стиля элемента по имени
            SetElementStyle(buildContext, elementMetadata.Style);

            return(true);
        }
Exemplo n.º 7
0
 private static void SetElementStyle(PrintElementBuildContext buildContext, object elementStyleName)
 {
     buildContext.ElementStyle = buildContext.FindStyle(elementStyleName);
 }