/// <summary> /// Initializes a new instance of the <see cref="CoreEntityVM"/> class. /// </summary> protected CoreEntityVM() { #region Register Commands //Can save or discard when context has changes and is not submitting var canSaveDiscardCommand = DataManager.DomainContextHasChangesObservable.CombineLatest(DataManager.DomainContextIsSubmittingObservable, (hasChanges, isSubmitting) => hasChanges && !isSubmitting); SaveCommand = new ReactiveCommand(canSaveDiscardCommand); SaveCommand.ObserveOnDispatcher().Subscribe(param => { if (!BeforeSaveCommand()) return; DataManager.EnqueueSubmitOperation(OnSave); }); DiscardCommand = new ReactiveCommand(canSaveDiscardCommand); DiscardCommand.ObserveOnDispatcher().Subscribe(param => { if (!BeforeDiscardCommand()) return; DomainContext.RejectChanges(); AfterDiscard(); DiscardSubject.OnNext(true); }); #endregion }
void InitalizeCommands(DeersoRedisClient deersoRedis, ISubject <string> debugsubject, ISubject <string> exceptionSubject, ISubject <string> requestSubject, ISubject <string> ordersSubject) { DisconnectCommand = new ReactiveCommand(); DisconnectCommand.ObserveOnDispatcher().Subscribe(x => { deersoRedis.Disconnect(); LatestStatusMessage = "Disconnected from Server"; }); ConnectCommand = new ReactiveCommand(); ConnectCommand.ObserveOnDispatcher().Subscribe(x => { var connectionCallback = new Subject <string>(); connectionCallback.ObserveOnDispatcher().Subscribe(_ => { LatestStatusMessage = "Successfully Connected and Subscribed"; }); connectionCallback.Catch <string, RedisException>(ex => { LatestStatusMessage = ex.Message; return(Observable.Return("")); }); deersoRedis.Connect(Properties.Settings.Default.RedisAddress, debugsubject, exceptionSubject, requestSubject, ordersSubject, connectionCallback); LatestStatusMessage = "Connecting to: {0}".FormatWith(Properties.Settings.Default.RedisAddress); }); ClearFiltersCommand = new ReactiveCommand(); ClearFiltersCommand.Subscribe(x => { _rootRequestPredicate = null; _crawlerPredicate = null; CrawlersFilter = null; RootRequestsFilter = null; }); }
public HistoryViewModel() { Activities = new ObservableCollection <Activity>(); _DatesFilterCollectionChanged = new EventHandlerSubject <NotifyCollectionChangedEventArgs>(); var DatesFilterChanged = _DatesFilterCollectionChanged .Select(e => Unit.Default) // Throttle for a moment to wait for the collection to become stable .Throttle(TimeSpan.FromMilliseconds(10)); var NameFilterChanged = this.ObservableForProperty(self => self.NameFilter) .Select(e => Unit.Default) .Throttle(TimeSpan.FromMilliseconds(200)); var dynamicFilterEnabled = this.ObservableForProperty(self => self.DynamicFilterEnabled) .Where(e => e.Value == true) .Select(e => Unit.Default); var filtersChanged = Observable.Merge( DatesFilterChanged, NameFilterChanged, dynamicFilterEnabled); filtersChanged .Where(a => this.DynamicFilterEnabled) .ObserveOnDispatcher() .Subscribe(unit => Filter()); FilterCommand = new ReactiveCommand( this.ObservableForProperty(self => self.DynamicFilterEnabled) .Select(e => !e.Value), System.Reactive.Concurrency.DispatcherScheduler.Instance); FilterCommand .ObserveOnDispatcher() .Subscribe(unit => Filter()); }