protected override void OnActivate(IResourceScope resources) { var repo = resources.Resolve <IEntityStreamService>(); this.PropertyChanges(nameof(AppFilter)) .Select(_ => { return(repo.GetApps().Select(x => new AppViewModel(x)) .Where(x => x.Name != null) .Where(x => x.Name.StrContains(AppFilter)) .ObserveOnDispatcher()); }) .Subscribe(apps => Apps = apps) .ManageUsing(resources); }
protected override void OnActivate(IResourceScope res) { this.PropertyChanges() .Where(x => x == nameof(RangeEnd) || x == nameof(RangeStart)) .Throttle(TimeSpan.FromMilliseconds(100)) .Select(x => new { RangeStart, RangeEnd }) .Subscribe(dataRange => { if (dataRange.RangeStart == null && dataRange.RangeEnd == null) { return; } var stats = res.Resolve <IAppStatsStreamService>(); var appDurationsStream = stats.GetAppDurations(dataRange.RangeStart ?? DateTime.MinValue, dataRange.RangeEnd); //.Publish(); AppDurations = appDurationsStream .Select(x => { var appDur = new AppDurationViewModel(x.App); x.Duration .Subscribe(d => { if (!d.JustStarted) { appDur.Duration += d.Value; } }) .ManageUsing(res); return(appDur); }); }).ManageUsing(res); }
public void NavigateToType(Type value) { if (value == null || !typeof(PageViewModel).IsAssignableFrom(value)) { return; } if (_existingViewModels.TryGetValue(value, out var viewModel) && _existingViews.TryGetValue(value, out var view)) { ActivePage = view; ActivateItem(viewModel); } else { var vm = _resolver.Resolve <PageViewModel>(value); ActivePage = (PageView)ViewLocator.LocateForModel(vm, null, null); ViewModelBinder.Bind(vm, ActivePage, null); ActivateItem(vm); _existingViewModels.Add(value, vm); _existingViews.Add(value, ActivePage); } }