Exemple #1
0
        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);
        }
Exemple #3
0
 public void SetCurrentCacheSource(Uri url)
 {
     CurrentCache = GetCacheByUrl(url);
 }
Exemple #4
0
 public SourcesCacheProvider(Func <Uri, ISourcesCache> cacheFactory)
 {
     _cacheFactory = cacheFactory;
     _nullCache    = cacheFactory(null);
 }