public RemoveEntitiesViewModel(ISourcesCacheProvider cacheProvider, IDockWindow window) { _cache = cacheProvider.CurrentCache; _window = window; Title = "Remove Instances"; RemoveSourceCommand = ReactiveCommand.Create <Source>(RemoveSource); RemoveInstanceCommand = ReactiveCommand.Create <Instance>(RemoveInstance); RemoveMetricCommand = ReactiveCommand.Create <Metric>(RemoveMetric); var filter = this.WhenAnyValue(x => x.FilterText) .Throttle(TimeSpan.FromSeconds(.3)) .Publish(); var dynamicFilterSource = filter .Select(Filters.CreateFilterSource); var dynamicFilterInstance = filter .Select(Filters.CreateFilterInstance); var dynamicFilterMetric = filter .Select(Filters.CreateFilterMetric); filter.Connect() .DisposeWith(Disposables); _cache.Sources .Connect() .Filter(dynamicFilterSource) .Sort(SortExpressionComparer <Source> .Ascending(x => x.ID)) .ObserveOnDispatcher() .Bind(out _sources) .Subscribe() .DisposeWith(Disposables); _cache.Instances .Connect() .Filter(dynamicFilterInstance) .Sort(SortExpressionComparer <Instance> .Ascending(x => x.ID)) .ObserveOnDispatcher() .Bind(out _instances) .Subscribe() .DisposeWith(Disposables); _cache.Metrics .Connect() .Filter(dynamicFilterMetric) .Sort(SortExpressionComparer <Metric> .Ascending(x => x.ID)) .ObserveOnDispatcher() .Bind(out _metrics) .Subscribe() .DisposeWith(Disposables); }
public ManageGroupsViewModel(ISourcesCacheProvider cacheProvider, IDockWindow window) { _cache = cacheProvider.CurrentCache; _window = window; Title = "Manage Groups"; _cache.Groups .Connect() .Sort(SortExpressionComparer <Group> .Ascending(x => x.ID)) .ObserveOnDispatcher() .Bind(out _listGroups) .Subscribe() .DisposeWith(Disposables); _cache.InstancesWithoutGroup .Connect() .Sort(SortExpressionComparer <Instance> .Ascending(x => x.ID)) .ObserveOnDispatcher() .Bind(out _listWithoutGroup) .Subscribe() .DisposeWith(Disposables); var dynamicInListFilter = this .WhenAnyValue(x => x.SelectedGroup) .Select(g => (Func <Group, bool>)(x => g != null && x.ID == g.ID)); _cache.Groups .Connect() .Filter(dynamicInListFilter) .TransformMany(x => x.Instances, x => x.ID) .Sort(SortExpressionComparer <Instance> .Ascending(x => x.ID)) .ObserveOnDispatcher() .Bind(out _listInGroup) .Subscribe() .DisposeWith(Disposables); SelectedGroup = ListGroups.FirstOrDefault(); RemoveGroupCommand = ReactiveCommand.Create <Group>(RemoveGroup); CreateGroupCommand = ReactiveCommand.CreateFromTask(CreateGroup); }
public void SetCurrentCacheSource(Uri url) { CurrentCache = GetCacheByUrl(url); }
public SourcesCacheProvider(Func <Uri, ISourcesCache> cacheFactory) { _cacheFactory = cacheFactory; _nullCache = cacheFactory(null); }