Exemple #1
0
        public Action <IRendererTreeBuilder> BuildRendererTree <TItem>(IActualItemContext <TItem> actualItemContext, FormField field) where TItem : class
        {
            var localColumnName = actualItemContext.ActualColumnName;
            var value           = actualItemContext.GetActualItemColumnValue(localColumnName);

            var valueExpression = GetValueExpression(actualItemContext.ActualItem, field);
            var convertedValue  = ConvertToDateTime(value);

            actualItemContext.SetActualItemColumnValue(localColumnName, convertedValue);

            return(builder =>
            {
                builder
                .OpenElement(HtmlTagNames.Div, "form-field-wrapper")
                .OpenComponent(typeof(InputDate <>).MakeGenericType(field.Type))
                .AddAttribute("id", $"create-form-{localColumnName}")
                .AddAttribute("class", "edit-text-field")
                .AddAttribute("Value", convertedValue)
                .AddAttribute("ValueExpression", valueExpression);

                if (field.UnderlyneType == typeof(DateTime))
                {
                    if (field.IsNullable)
                    {
                        builder
                        .AddAttribute("ValueChanged", eventCallbackFactory.Create <DateTime?>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                        .CloseComponent()
                        .AddValidationMessage <DateTime?>(valueExpression);
                    }
                    else
                    {
                        builder
                        .AddAttribute("ValueChanged", eventCallbackFactory.Create <DateTime>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                        .CloseComponent()
                        .AddValidationMessage <DateTime>(valueExpression);
                    }
                }
                else
                {
                    if (field.IsNullable)
                    {
                        builder
                        .AddAttribute("ValueChanged", eventCallbackFactory.Create <DateTimeOffset?>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                        .CloseComponent()
                        .AddValidationMessage <DateTimeOffset?>(valueExpression);
                    }
                    else
                    {
                        builder
                        .AddAttribute("ValueChanged", eventCallbackFactory.Create <DateTimeOffset>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                        .CloseComponent()
                        .AddValidationMessage <DateTimeOffset>(valueExpression);
                    }
                }

                builder.CloseElement();
            });
        }
Exemple #2
0
        private void InitializeSelectInputContext <TItem>(IActualItemContext <TItem> actualItemContext, PropertyInfo field, string localColumnName)
            where TItem : class
        {
            if (selectInputContexts.TryGetValue(field.PropertyType, out var context))
            {
                context.SetValueChangedAction(value =>
                                              actualItemContext.SetActualItemColumnValue(localColumnName, Enum.Parse(field.PropertyType, value.ToString()))
                                              );
            }
            else
            {
                var newContext = new SelectInputContext();
                newContext.SetValueChangedAction(value =>
                                                 actualItemContext.SetActualItemColumnValue(localColumnName, Enum.Parse(field.PropertyType, value.ToString()))
                                                 );

                selectInputContexts.Add(field.PropertyType, newContext);
            }
        }
Exemple #3
0
        public Action <IRendererTreeBuilder> BuildRendererTree <TItem>(IActualItemContext <TItem> actualItemContext, FormField field) where TItem : class
        {
            var localColumnName = actualItemContext.ActualColumnName;
            var value           = actualItemContext.GetActualItemColumnValue(localColumnName);

            var valueExpression = Expression.Lambda <Func <string> >(
                Expression.Property(
                    Expression.Constant(actualItemContext.ActualItem),
                    field.Info));

            return(builder =>
            {
                builder
                .OpenElement(HtmlTagNames.Div, "form-field-wrapper")
                .OpenComponent(typeof(InputText))
                .AddAttribute("id", $"create-form-{localColumnName}")
                .AddAttribute("class", "edit-text-field")
                .AddAttribute("Value", value)
                .AddAttribute("ValueExpression", valueExpression)
                .AddAttribute("ValueChanged", eventCallbackFactory.Create <string>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                .CloseComponent()
                .AddValidationMessage <string>(valueExpression)
                .CloseElement();
            });
        }
Exemple #4
0
        public Action <IRendererTreeBuilder> BuildRendererTree <TItem>(IActualItemContext <TItem> actualItemContext, FormField field, string localColumnName) where TItem : class
        {
            var value = actualItemContext.GetActualItemColumnValue(localColumnName);

            var valueExpression = GetValueExpression(actualItemContext.ActualItem, field);

            return(builder =>
            {
                builder
                .OpenElement(HtmlTagNames.Div, "form-field-wrapper")
                .OpenComponent(typeof(InputNumber <>).MakeGenericType(field.Type))
                .AddAttribute("id", $"create-form-{localColumnName}")
                .AddAttribute("class", "edit-text-field")
                .AddAttribute("Value", value)
                .AddAttribute("ValueExpression", valueExpression);

                if (field.UnderlyingType == typeof(int))
                {
                    if (field.IsNullable)
                    {
                        builder
                        .AddAttribute("ValueChanged", _eventCallbackFactory.Create <int?>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                        .CloseComponent()
                        .AddValidationMessage <int?>(valueExpression);
                    }
                    else
                    {
                        builder
                        .AddAttribute("ValueChanged", _eventCallbackFactory.Create <int>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                        .CloseComponent()
                        .AddValidationMessage <int>(valueExpression);
                    }
                }
                else if (field.UnderlyingType == typeof(long))
                {
                    if (field.IsNullable)
                    {
                        builder
                        .AddAttribute("ValueChanged", _eventCallbackFactory.Create <long?>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                        .CloseComponent()
                        .AddValidationMessage <long?>(valueExpression);
                    }
                    else
                    {
                        builder
                        .AddAttribute("ValueChanged", _eventCallbackFactory.Create <long>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                        .CloseComponent()
                        .AddValidationMessage <long>(valueExpression);
                    }
                }
                else if (field.UnderlyingType == typeof(decimal))
                {
                    if (field.IsNullable)
                    {
                        builder
                        .AddAttribute("ValueChanged", _eventCallbackFactory.Create <decimal?>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                        .CloseComponent()
                        .AddValidationMessage <decimal?>(valueExpression);
                    }
                    else
                    {
                        builder
                        .AddAttribute("ValueChanged", _eventCallbackFactory.Create <decimal>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                        .CloseComponent()
                        .AddValidationMessage <decimal>(valueExpression);
                    }
                }
                else if (field.UnderlyingType == typeof(double))
                {
                    if (field.IsNullable)
                    {
                        builder
                        .AddAttribute("ValueChanged", _eventCallbackFactory.Create <double?>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                        .CloseComponent()
                        .AddValidationMessage <double?>(valueExpression);
                    }
                    else
                    {
                        builder
                        .AddAttribute("ValueChanged", _eventCallbackFactory.Create <double>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                        .CloseComponent()
                        .AddValidationMessage <double>(valueExpression);
                    }
                }
                else if (field.UnderlyingType == typeof(float))
                {
                    if (field.IsNullable)
                    {
                        builder
                        .AddAttribute("ValueChanged", _eventCallbackFactory.Create <float?>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                        .CloseComponent()
                        .AddValidationMessage <float?>(valueExpression);
                    }
                    else
                    {
                        builder
                        .AddAttribute("ValueChanged", _eventCallbackFactory.Create <float>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                        .CloseComponent()
                        .AddValidationMessage <float>(valueExpression);
                    }
                }

                builder.CloseElement();
            });
        }
        public Action <IRendererTreeBuilder> BuildRendererTree <TItem>(IActualItemContext <TItem> actualItemContext, FormField field, string localColumnName) where TItem : class
        {
            var value = actualItemContext.GetActualItemColumnValue(localColumnName);

            var valueExpression = GetValueExpression(actualItemContext.ActualItem, field);

            return(builder =>
            {
                builder
                .OpenElement(HtmlTagNames.Div, "checkbox")
                .OpenElement(HtmlTagNames.Label)
                .OpenComponent(typeof(InputCheckbox))
                .AddAttribute("id", $"create-form-{localColumnName}")
                .AddAttribute("class", string.Empty)
                .AddAttribute("Value", value)
                .AddAttribute("ValueExpression", valueExpression);

                if (field.IsNullable)
                {
                    builder.AddAttribute("ValueChanged", _eventCallbackFactory.Create <bool?>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)));
                }
                else
                {
                    builder.AddAttribute("ValueChanged", _eventCallbackFactory.Create <bool>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)));
                }

                builder
                .CloseComponent()
                .OpenElement(HtmlTagNames.Span, "cr")
                .OpenElement(HtmlTagNames.I, "cr-icon fa fa-check")
                .CloseElement()
                .CloseElement()
                .CloseElement()
                .CloseElement();

                if (field.IsNullable)
                {
                    builder.AddValidationMessage <bool?>(valueExpression);
                }
                else
                {
                    builder.AddValidationMessage <bool>(valueExpression);
                }
            });
        }
Exemple #6
0
        public Action <IRendererTreeBuilder> BuildRendererTree <TItem>(IActualItemContext <TItem> actualItemContext, PropertyInfo field) where TItem : class
        {
            var localColumnName = actualItemContext.ActualColumnName;
            var value           = actualItemContext.GetActualItemColumnValue(localColumnName);

            var valueExpression = GetValueExpression(value, actualItemContext.ActualItem, field);

            return(builder =>
            {
                builder
                .OpenElement(HtmlTagNames.Div, "form-field-wrapper")
                .OpenComponent(typeof(InputNumber <>).MakeGenericType(field.GetMemberType()))
                .AddAttribute("Id", $"create-form-{localColumnName}")
                .AddAttribute("Class", "edit-text-field")
                .AddAttribute("Value", value)
                .AddAttribute("ValueExpression", valueExpression);

                if (value is int)
                {
                    builder
                    .AddAttribute("ValueChanged", eventCallbackFactory.Create <int>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                    .CloseComponent()
                    .AddValidationMessage <int>(valueExpression);
                }
                else if (value is long)
                {
                    builder
                    .AddAttribute("ValueChanged", eventCallbackFactory.Create <long>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                    .CloseComponent()
                    .AddValidationMessage <long>(valueExpression);
                }
                else if (value is decimal)
                {
                    builder
                    .AddAttribute("ValueChanged", eventCallbackFactory.Create <decimal>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                    .CloseComponent()
                    .AddValidationMessage <decimal>(valueExpression);
                }
                else if (value is double)
                {
                    builder
                    .AddAttribute("ValueChanged", eventCallbackFactory.Create <double>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                    .CloseComponent()
                    .AddValidationMessage <double>(valueExpression);
                }
                else if (value is float)
                {
                    builder
                    .AddAttribute("ValueChanged", eventCallbackFactory.Create <float>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                    .CloseComponent()
                    .AddValidationMessage <float>(valueExpression);
                }

                builder.CloseElement();
            });
        }
Exemple #7
0
        public Action <IRendererTreeBuilder> BuildRendererTree <TItem>(IActualItemContext <TItem> actualItemContext, PropertyInfo field) where TItem : class
        {
            var localColumnName = actualItemContext.ActualColumnName;
            var value           = actualItemContext.GetActualItemColumnValue(localColumnName);

            var valueExpression = Expression.Lambda <Func <bool> >(
                Expression.Property(
                    Expression.Constant(actualItemContext.ActualItem),
                    field));

            return(builder =>
            {
                builder
                .OpenElement(HtmlTagNames.Div, "checkbox")
                .OpenElement(HtmlTagNames.Label)
                .OpenComponent(typeof(InputCheckbox))
                .AddAttribute("Id", $"create-form-{localColumnName}")
                .AddAttribute("Class", string.Empty)
                .AddAttribute("Value", value)
                .AddAttribute("ValueExpression", valueExpression)
                .AddAttribute("ValueChanged", eventCallbackFactory.Create <bool>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                .CloseComponent()
                .OpenElement(HtmlTagNames.Span, "cr")
                .OpenElement(HtmlTagNames.I, "cr-icon fa fa-check")
                .CloseElement()
                .CloseElement()
                .CloseElement()
                .CloseElement()
                .AddValidationMessage <bool>(valueExpression);
            });
        }