public TabbedViewValidationFlow() { _input = new IntroduceItemForm(); var confirmView = new InformationalMessageFormView(); confirmView.Message.Widget.AddClasses(Magics.CssClassPreserveNewlines); _msg = new InformationalMessageForm(confirmView); }
private void OnReadyIAWApp() { var chooseActivity = new VerticalMenuForm <MenuItems>( "Demo choice", EnumExtensions.GetEnumValues <MenuItems>(), x => x.GetLabel(), lbl => new InputTypeButtonActionView(lbl), isCancellable: false); var inputName = new TextInputForm("Name", "What's your nickname?"); var greetUser = new InformationalMessageForm("", "Greetings!"); var scanResultView = new InformationalMessageFormView(customActionBuilder: x => new AnchorBasedActionView(x)); var scanResult = new InformationalMessageForm(scanResultView, "", "Scan result"); //quick hack for sake of demo var photoTakenResultView = new InformationalMessageFormView(customActionBuilder: x => new AnchorBasedActionView(x)); photoTakenResultView.Message.Widget.RemoveAllChildren(); var photoTakenResult = new InformationalMessageForm(photoTakenResultView, "", "Your photo"); var scanCodeView = new QrScannerFormView(); var performScan = new QrScannerForm <string>( scanCodeView, "Scan QR code", "Any QR is fine", x => Task.FromResult(x)); var takePhotoView = new PhotoTakerFormView(); var takePhoto = new PhotoTakerForm(takePhotoView); chooseActivity.Ended += (x, outcome) => { _renderer.ClearMaster(); switch (outcome) { case CompletedOrCanceled.Completed: switch (x.Chosen) { case MenuItems.DataInput: _renderer.ReplaceMaster(inputName); break; case MenuItems.QrCodeScanner: _renderer.ReplaceMaster(performScan); break; case MenuItems.PhotoTaker: takePhoto.ClearImage(); _renderer.ReplaceMaster(takePhoto); break; default: throw new Exception("unsupported MenuItems"); } break; } }; inputName.Ended += async(x, outcome) => { switch (outcome) { case CompletedOrCanceled.Completed: await greetUser.Init("Hi " + inputName.Introduced + "!"); _renderer.ReplaceMaster(greetUser); break; case CompletedOrCanceled.Canceled: _renderer.ReplaceMaster(chooseActivity); break; } }; greetUser.Ended += (x, _) => _renderer.ReplaceMaster(inputName); performScan.Ended += async(x, outcome) => { switch (outcome) { case CompletedOrCanceled.Completed: await scanResult.Init("QR content: " + performScan.ScannedCode); _renderer.AddPopup(scanResult); break; case CompletedOrCanceled.Canceled: _renderer.ReplaceMaster(chooseActivity); break; } }; scanResult.Ended += (x, _) => { _renderer.Remove(x); _renderer.ReplaceMaster(chooseActivity); }; takePhoto.Ended += (x, outcome) => { switch (outcome) { case CompletedOrCanceled.Completed: var img = new HTMLImageElement(); img.Style.MaxWidth = "50vw"; img.Style.MaxHeight = "50vh"; var fr = new FileReader(); fr.OnLoad += _ => img.Src = (string)fr.Result; fr.ReadAsDataURL(takePhoto.PhotoAsFile); photoTakenResultView.Message.Widget.ReplaceChildren(new[] { img }); _renderer.AddPopup(photoTakenResult); break; case CompletedOrCanceled.Canceled: _renderer.ReplaceMaster(chooseActivity); break; } }; photoTakenResult.Ended += (x, _) => { _renderer.Remove(x); _renderer.ReplaceMaster(chooseActivity); }; _renderer.ReplaceMaster(chooseActivity); }