コード例 #1
0
        public DataboundDatagridItemCreatorForm(ISomeService someService)
        {
            _view = new DataboundDatagridItemCreatorFormView();

            var someText   = LocalValueFieldBuilder.Build(_view.SomeText, Validator.IsNotNullRef);
            var someNumber = LocalValueFieldBuilder.BuildNullableInt(_view.SomeNumber, Validator.IsNotNull, Validator.MustBePositive <int>());
            var someBool   = LocalValueFieldBuilder.Build(_view.SomeBool);

            _view.SomeTrait.PermittedValues = EnumExtensions.GetEnumValues <SomeTraitType>().Select(x => (SomeTraitType?)x);
            var someTrait = LocalValueFieldBuilder.Build(_view.SomeTrait, Validator.IsNotNull);

            var createProduct = RemoteActionBuilder.Build(_view.CreateAction,
                                                          () => someService.Create(
                                                              new SomeDto {
                SomeNumber = someNumber.Value.GetValueOrDefault(),
                SomeText   = someText.Value,
                SomeBool   = someBool.Value,
                SomeTrait  = someTrait.Value.Value
            }),
                                                          x => {
                CreatedItem = x;
                Ended?.Invoke(this, Outcome.Created);
            });

            var isFormValid = new AggregatedErrorsValue <bool>(false, self => !self.Errors.Any(), x => {
                x.Observes(someText);
                x.Observes(someNumber);
                x.Observes(someBool);
                x.Observes(someTrait);
            });

            createProduct.BindEnableAndInitialize(isFormValid);
        }
コード例 #2
0
        public ConfirmOperationForm(Func <Task <T> > operation, ConfirmOperationFormView view, string message = null, string title = null)
        {
            Title = title ?? I18n.Translate("Confirmation");
            _view = view;

            _message = new LocalValue <string>(message ?? I18n.Translate("Without message"));
            view.Message.BindReadOnlyAndInitialize(_message);

            RemoteActionBuilder.Build(view.Confirm, operation, x => {
                SuccessResult = x;
                Ended?.Invoke(this, ConfirmOperationFormOutcome.Success);
            });
        }
コード例 #3
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);
        }
コード例 #4
0
 public SseSenderForm(ISomeService someService, Func <string> sseSessionIdProvider)
 {
     _sseSessionIdProvider = sseSessionIdProvider;
     RemoteActionBuilder.Build(_view.PublishCanada,
                               () => someService.PublishNotification(_sseSessionIdProvider(), Country.Canada),
                               x => LogAccept(Country.Canada, x));
     RemoteActionBuilder.Build(_view.PublishUSA,
                               () => someService.PublishNotification(_sseSessionIdProvider(), Country.USA),
                               x => LogAccept(Country.USA, x));
     RemoteActionBuilder.Build(_view.PublishGermany,
                               () => someService.PublishNotification(_sseSessionIdProvider(), Country.Germany),
                               x => LogAccept(Country.Germany, x));
     RemoteActionBuilder.Build(_view.PublishFrance,
                               () => someService.PublishNotification(_sseSessionIdProvider(), Country.France),
                               x => LogAccept(Country.France, x));
     RemoteActionBuilder.Build(_view.PublishSouthAfrica,
                               () => someService.PublishNotification(_sseSessionIdProvider(), Country.SouthAfrica),
                               x => LogAccept(Country.SouthAfrica, x));
     RemoteActionBuilder.Build(_view.PublishTunisia,
                               () => someService.PublishNotification(_sseSessionIdProvider(), Country.Tunisia),
                               x => LogAccept(Country.Tunisia, x));
 }
コード例 #5
0
        public RemoteValueChangeByChoiceForm(
            Func <string> titleProv, Func <T, Task <T> > saveChange,
            RemoteValueChangeByChoiceFormView <T> view,
            params Validate <T>[] validators)
        {
            _titleProv = titleProv;
            _view      = view;

            _localValue = LocalValueFieldBuilder.Build(default(T), view.Choosen, validators);

            var remoteActionModel = RemoteActionBuilder.Build(view.Confirm,
                                                              () => saveChange(_localValue.Value),
                                                              x => {
                SavedValue = x;
                Ended?.Invoke(this, CompletedOrCanceled.Completed);
            });

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

            remoteActionModel.BindEnableAndInitialize(isFormValid);
        }
コード例 #6
0
        public RemoteValueChangeByEntryForm(
            Func <DomainT, Task <RemoteT> > remoteChanger,
            IReadWriteValueView <HTMLElement, ViewT> input,
            Action <string> inputLabelChanger,
            Func <DomainT, ViewT> domainToViewConverter,
            Func <ViewT, DomainT> viewToDomainConverter,
            string label, string titleOrNull = null,
            DomainT defaultValue             = default(DomainT),
            TextType labelTextType           = TextType.TreatAsText,
            params Validate <DomainT>[] validators)
        {
            _inputLabelChanger = inputLabelChanger;

            Title = titleOrNull ?? I18n.Translate("Input");
            _view = new RemoteValueChangeByEntryFormView <ViewT>(input, labelTextType);

            _inputLabelChanger(label);
            _msg = new LocalValue <string>("");
            _view.Message.BindReadOnlyAndInitialize(_msg);

            _input = LocalValueFieldBuilder.Build(
                defaultValue, _view.Input, domainToViewConverter, viewToDomainConverter, validators);

            var isFormValid = new AggregatedErrorsValue <bool>(
                false, x => !x.Errors.Any(), x => x.Observes(_input));

            var confirmInput = RemoteActionBuilder.Build(
                _view.Confirm,
                () => remoteChanger(_input.Value),
                x => {
                SavedValue = x;
                Ended?.Invoke(this, CompletedOrCanceled.Completed);
            });

            confirmInput.BindEnableAndInitialize(isFormValid);
        }