public OpenShiftMasterEndpointSettingsViewModel() { model = OpenShiftMastersModel.Instance; Masters = model.Masters.ToReadOnlyReactiveCollection(m => new OpenShiftMasterViewModel(m)); AddItemCommand = new ReactiveCommand() .WithSubscribe(async() => { var newMaster = new OpenShiftMasterModel(); model.AddItem(newMaster); var added = await Masters.ObserveAddChanged().FirstAsync(); SelectedItem.Value = added; }) .AddTo(Disposable); RemoveItemCommand = SelectedItem .Select(item => item != null) .ToReactiveCommand() .WithSubscribe(() => model.DeleteItem(SelectedItem.Value.Model)) .AddTo(Disposable); CanSave = Masters.Select(m => m.HasErrors).CombineLatestValuesAreAllFalse().ToReactiveProperty(); IsSelected = SelectedItem .Select(item => item != null) .ToReadOnlyReactivePropertySlim(false); }
public OpenShiftMasterViewModel(OpenShiftMasterModel model) { Model = model; Name = Model .Name .ToReactivePropertyAsSynchronized(x => x.Value) .SetValidateAttribute(() => Name) .AddTo(Disposable); Endpoint = Model.MasterUrl .ToReactivePropertyAsSynchronized(x => x.Value) .SetValidateAttribute(() => Endpoint) .AddTo(Disposable); Token = Model.Token .ToReactivePropertyAsSynchronized(x => x.Value) .SetValidateAttribute(() => Token) .AddTo(Disposable); LoadFromLoginCommand = LoginCommand .Select(Parse) .Select(x => x.succeeded) .ToReactiveCommand(false) .WithSubscribe(() => { var command = LoginCommand.Value; var(succeeded, url, token) = Parse(command); if (succeeded) { Endpoint.Value = url; Token.Value = token; } }).AddTo(Disposable); }
public OpenShiftMasterViewModel(OpenShiftMasterModel model) { Model = model; Name = Model .Name .ToReactivePropertyAsSynchronized(x => x.Value) .SetValidateAttribute(() => Name) .AddTo(Disposable); Endpoint = Model.MasterUrl .ToReactivePropertyAsSynchronized(x => x.Value) .SetValidateAttribute(() => Endpoint) .AddTo(Disposable); Token = Model.Token .ToReactivePropertyAsSynchronized(x => x.Value) .SetValidateAttribute(() => Token) .AddTo(Disposable); }
public OpenShiftExplorerMasterViewModel(OpenShiftMasterModel model) { this.model = model; Name = model.Name.ToReadOnlyReactivePropertySlim(); ChildItems = model.Projects.ToReadOnlyReactiveCollection(p => new OpenShiftExplorerProjectViewModel(p)); }