public static LocalValue <DataT> Build <WidgetT, DataT>(
            IReadOnlyValueView <WidgetT, DataT> view, params Validate <DataT>[] validators)
        {
            var result = new LocalValue <DataT>(default(DataT));

            view.BindReadOnlyAndInitialize(result, x => x);
            validators.ForEach(y => result.AddValidatorAndRevalidate(y));
            return(result);
        }
        public static LocalValue <T> Build <WidgetT, T>(
            IReadWriteValueView <WidgetT, T> view, params Validate <T>[] validators)
        {
            var result = new LocalValue <T>(default(T), default(T));

            view.BindReadWriteAndInitialize(result);
            validators.ForEach(y => result.AddValidatorAndRevalidate(y));
            return(result);
        }
        public static LocalValue <int> BuildInt <WidgetT>(
            IReadOnlyValueView <WidgetT, string> view, params Validate <int>[] validators)
        {
            var result = new LocalValue <int>(0);

            view.BindReadOnlyAndInitialize(result, x => I18n.Localize(x));
            validators.ForEach(y => result.AddValidatorAndRevalidate(y));
            return(result);
        }
        public static LocalValue <DateTime?> BuildDateTimePicker(
            DateTimePickerView view, DateTime?defaultValue = null,
            params Validate <DateTime?>[] validators)
        {
            var result = new LocalValue <DateTime?>(defaultValue);

            view.BindReadWriteAndInitialize(result);
            validators.ForEach(y => result.AddValidatorAndRevalidate(y));
            return(result);
        }
        public static LocalValue <decimal> BuildDecimal <WidgetT>(
            IReadOnlyValueView <WidgetT, string> view, DecimalFormat format, params Validate <decimal>[] validators)
        {
            var result = new LocalValue <decimal>(0);

            view.BindReadOnlyAndInitialize(result,
                                           x => I18n.Localize(x, format));
            validators.ForEach(y => result.AddValidatorAndRevalidate(y));
            return(result);
        }
        public static LocalValue <ModelT> Build <WidgetT, ModelT, ViewT>(
            IReadOnlyValueView <WidgetT, ViewT> view, Func <ModelT, ViewT> convertFromDomain,
            params Validate <ModelT>[] validators)
        {
            var result = new LocalValue <ModelT>(default(ModelT));

            view.BindReadOnlyAndInitialize(result, convertFromDomain);
            validators.ForEach(y => result.AddValidatorAndRevalidate(y));
            return(result);
        }
        public static LocalValue <int?> BuildNullableInt <WidgetT>(
            int?defaultValue, IReadWriteValueView <WidgetT, string> view,
            params Validate <int?>[] validators)
        {
            var result = new LocalValue <int?>(defaultValue);

            view.BindReadWriteAndInitialize(result,
                                            x => !x.HasValue ? "" : I18n.Localize(x.Value),
                                            x => string.IsNullOrEmpty(x) ? (int?)null : I18n.ParseInt(x));
            validators.ForEach(y => result.AddValidatorAndRevalidate(y));
            return(result);
        }
        public static LocalValue <decimal> BuildDecimalWithPrecision <WidgetT>(
            IReadOnlyValueView <WidgetT, string> view, decimal defaultValue, Func <int> getPrecision,
            params Validate <decimal>[] validators)
        {
            var result = new LocalValue <decimal>(defaultValue);

            view.BindReadOnlyAndInitialize(result,
                                           x => I18n.Localize(x, DecimalFormatExtensions.GetWithPrecision(getPrecision())));

            validators.ForEach(y => result.AddValidatorAndRevalidate(y));
            return(result);
        }
        public static LocalValue <decimal?> BuildNullableDecimal(
            InputView view, DecimalFormat format, params Validate <decimal?>[] validators)
        {
            view.RaisesChangedOnKeyPressed = false;

            var result = new LocalValue <decimal?>(null);

            view.BindReadWriteAndInitialize(result,
                                            x => !x.HasValue ? "" : I18n.Localize(x.Value, format),
                                            x => string.IsNullOrEmpty(x) ? (decimal?)null : I18n.ParseDecimal(x));
            validators.ForEach(y => result.AddValidatorAndRevalidate(y));
            return(result);
        }
예제 #10
0
        public static LocalValue <decimal> BuildDecimal(
            InputView view, DecimalFormat format, params Validate <decimal>[] validators)
        {
            view.RaisesChangedOnKeyPressed = false;

            var result = new LocalValue <decimal>(0);

            view.BindReadWriteAndInitialize(result,
                                            x => I18n.Localize(x, format),
                                            x => I18n.ParseDecimal(x));
            validators.ForEach(y => result.AddValidatorAndRevalidate(y));
            return(result);
        }
예제 #11
0
        public static LocalValue <decimal> BuildDecimalWithPrecision(
            InputView view, decimal defaultValue, Func <int> getPrecision,
            params Validate <decimal>[] validators)
        {
            var result = new LocalValue <decimal>(defaultValue);

            view.RaisesChangedOnKeyPressed = false;

            view.BindReadWriteAndInitialize(result,
                                            x => I18n.Localize(x, DecimalFormatExtensions.GetWithPrecision(getPrecision())),
                                            x => I18n.ParseDecimalWithoutLoss(x, getPrecision()));

            validators.ForEach(y => result.AddValidatorAndRevalidate(y));
            return(result);
        }
예제 #12
0
        public static LocalValue <int> BuildInt <WidgetT>(
            int defaultvalue, IReadWriteValueView <WidgetT, string> view, params Validate <int>[] validators)
        {
            var result = new LocalValue <int>(defaultvalue);

            view.BindReadWriteAndInitialize(result, x => I18n.Localize(x), x => {
                try {
                    var val = I18n.ParseInt(x);
                    return(val);
                } catch (Exception ex) {
                    Logger.Error(typeof(LocalValueFieldBuilder), "BuildInt converter got exception {0}", ex);
                    throw new Exception(
                        I18n.Translate("Wrong integer format entered. Remove letters or special characters"));
                }
            });
            validators.ForEach(y => result.AddValidatorAndRevalidate(y));
            return(result);
        }
예제 #13
0
        public static LocalValue <decimal?> BuildNullableDecimalWithPrecision(
            InputView view, Func <int> getPrecision, params Validate <decimal?>[] validators)
        {
            view.RaisesChangedOnKeyPressed = false;

            var result = new LocalValue <decimal?>(null);

            view.BindReadWriteAndInitialize(result,
                                            x => !x.HasValue ?
                                            ""
                    :
                                            I18n.Localize(x.Value, DecimalFormatExtensions.GetWithPrecision(getPrecision())),
                                            x => string.IsNullOrEmpty(x) ?
                                            (decimal?)null
                    :
                                            I18n.ParseDecimalWithoutLoss(x, getPrecision()));

            validators.ForEach(y => result.AddValidatorAndRevalidate(y));
            return(result);
        }
예제 #14
0
        public LoginForm(LoginFormView view, Func <string, string, Task <Tuple <string, UserT> > > service, Action <string, UserT> storeResult)
        {
            View = view;

            var login = new LocalValue <string>("", "");

            login.AddValidatorAndRevalidate(
                (x, errors) => errors.IfTrueAdd(string.IsNullOrWhiteSpace(x), I18n.Translate("Field cannot be empty"))
                );
            view.Login.BindReadWriteAndInitialize(login);


            var passwd = new LocalValue <string>("", "");

            passwd.AddValidatorAndRevalidate(
                (x, errors) => errors.IfTrueAdd(string.IsNullOrWhiteSpace(x), I18n.Translate("Field cannot be empty"))
                );
            view.Password.BindReadWriteAndInitialize(passwd);

            var mayAttemptLogin = new AggregatedErrorsValue <bool>(false, self => !self.Errors.Any(), x => {
                x.Observes(login);
                x.Observes(passwd);
            });

            var attemptLogin = RemoteActionBuilder.Build(view.AttemptLogin,
                                                         () => service(login.Value, passwd.Value),
                                                         x => {
                storeResult(x.Item1, x.Item2);
                LoggedUserName     = login.Value;
                ErrorMessageOrNull = null;
                Ended?.Invoke(this, CompletedOrCanceled.Completed);
            },
                                                         x => {
                LoggedUserName     = null;
                ErrorMessageOrNull = x.ErrorMessage;
                Ended?.Invoke(this, CompletedOrCanceled.Canceled);
            });

            attemptLogin.BindEnableAndInitialize(mayAttemptLogin);
        }