示例#1
0
    public override async Task SetParametersAsync(ParameterView parameters)
    {
        await base.SetParametersAsync(parameters);

        if (Binding != null)
        {
            _binder = ValueBinder.Create(Binding);
            if (Label == null)
            {
                Label = _binder.ValueLabel.Titleize();
            }
            if (!Hidden && ChildContent == null)
            {
                var func = Binding.Compile();
                ChildContent = item => builder => builder.AddContent(1, func.Invoke(item));
            }
            if (SortBy && SortByExpression == null)
            {
                SortByExpression = (q, d) => q.OrderByDirection(d, Binding);
            }
            if (SearchBy && SearchByPredicate == null)
            {
                SearchByPredicate = (input) => PredicateBuilder.Contains(
                    Binding, input.SearchValue !, SearchByCaseInsensitive);
            }
        }
    }
示例#2
0
        public void ReadOnlyProperty <T>(T value)
        {
            var vh     = new ReadOnlyValueHolder <T>(value);
            var exp    = CreateExpression(() => vh.Value);
            var binder = ValueBinder.Create(exp);

            binder.CanSetValue.Should().BeFalse();
            binder.ValueLabel.Should().Be(nameof(vh.Value));
            binder.TargetType.Should().Be(vh.GetType());
        }
示例#3
0
        public void FunctionCall <T>(T value)
        {
            var vh     = new ReadWriteValueHolder <T>(value);
            var exp    = CreateExpression(() => vh.GetValue());
            var binder = ValueBinder.Create(exp);

            binder.CanSetValue.Should().BeFalse();
            binder.ValueLabel.Should().Be(nameof(vh.GetValue));
            binder.TargetType.Should().Be(typeof(T));
        }
示例#4
0
        public void ReadWritePropertyWithUnary()
        {
            var vh     = new ReadWriteValueHolder <int>(42);
            var exp    = CreateExpression(() => - vh.Value);
            var binder = ValueBinder.Create(exp);

            binder.CanSetValue.Should().BeTrue();
            binder.ValueLabel.Should().Be(nameof(vh.Value));
            binder.TargetType.Should().Be(vh.GetType());
        }
示例#5
0
        public void RootField <T>(T value)
        {
            var localValue = value;
            var exp        = CreateExpression(() => localValue);
            var binder     = ValueBinder.Create(exp);

            binder.CanSetValue.Should().BeTrue();
            binder.ValueLabel.Should().Be(nameof(localValue));
            binder.TargetType.Should().Be(((MemberExpression)exp.Body).Expression.Type);

            //binder.TargetRoot.ToString().Should().Be(x.ToString());
            //var targetPathLabels = string.Join(".", binder.TargetPath.Select(x => x.Label));
            //targetPathLabels.Should().Be(pathLabels);
        }
示例#6
0
        public void RootStringConstant()
        {
            var x      = CreateExpression(() => "foo");
            var binder = ValueBinder.Create(x);

            binder.CanSetValue.Should().BeFalse();
            binder.ValueLabel.Should().BeNull();
            binder.TargetType.Should().Be(typeof(string));
            binder.TargetRoot.ToString().Should().Be(x.ToString());

            var targetPathLabels = string.Join(".", binder.TargetPath.Select(x => x.Label));

            targetPathLabels.Should().Be(nameof(System.String));
        }
示例#7
0
        public void RootIntConstant()
        {
            var x      = CreateExpression(() => 42);
            var binder = ValueBinder.Create(x);

            // Binder will process as conversion to box up the value
            var y = CreateExpression(() => (object)42);

            binder.CanSetValue.Should().BeFalse();
            binder.ValueLabel.Should().BeNull();
            binder.TargetType.Should().Be(typeof(int));
            binder.TargetRoot.ToString().Should().Be(y.ToString());

            var targetPathLabels = string.Join(".", binder.TargetPath.Select(x => x.Label));

            targetPathLabels.Should().Be(nameof(System.Int32));
        }
示例#8
0
    public override async Task SetParametersAsync(ParameterView parameters)
    {
        await base.SetParametersAsync(parameters);

        if (Binding != null)
        {
            _binder = ValueBinder.Create(Binding);
            if (Label == null)
            {
                Label = _binder.ValueLabel.Titleize();
            }
            if (Expression == null)
            {
                Expression = (q, d) => q.OrderByDirection(d, Binding);
            }
        }
    }
示例#9
0
    public override async Task SetParametersAsync(ParameterView parameters)
    {
        await base.SetParametersAsync(parameters);

        if (Binding != null)
        {
            _binder = ValueBinder.Create(Binding);
            if (Label == null)
            {
                Label = _binder.ValueLabel.Titleize();
            }
            if (!OnInvoke.HasDelegate)
            {
                OnInvoke = EventCallback.Factory.Create(this,
                                                        () => (_binder?.TryGetValue(out var val) ?? false) ? val : Task.CompletedTask);
            }
        }
    }
示例#10
0
    public override async Task SetParametersAsync(ParameterView parameters)
    {
        await base.SetParametersAsync(parameters);

        if (Binding != null)
        {
            _binder = ValueBinder.Create(Binding);
            if (Label == null)
            {
                Label = _binder.ValueLabel.Titleize();
            }
            if (Predicate == null)
            {
                Predicate = (input) => PredicateBuilder.Contains(
                    Binding, input.SearchValue !, CaseInsensitive);
            }
        }
    }