Created
August 12, 2020 09:30
-
-
Save Bert-Proesmans/8eff6f3d2f76742f6294b308db873816 to your computer and use it in GitHub Desktop.
DynamicDataToy extended examples
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private readonly SalesOptions.Load.Handler _optionsService; | |
private readonly SourceCache<SalesOption, ArticleCode> _salesOptionsSource; | |
private readonly ReadOnlyObservableCollection<SalesOptionGroup> _groupedSalesOptions; | |
private readonly ReadOnlyObservableCollection<SalesOptionProxy> _salesOptionProxies; | |
private readonly IDisposable _cleanup; | |
public WindowViewModel(SalesOptions.Load.Handler optionsService) | |
{ | |
_optionsService = optionsService; | |
_salesOptionsSource = new SourceCache<SalesOption, ArticleCode>(x => x.Code); | |
var optionsChangeSet = _salesOptionsSource.Connect().Publish(); | |
var localTransformed = optionsChangeSet | |
.Transform(option => new SalesOptionProxy(option)) | |
.Sort(SortExpressionComparer<SalesOptionProxy>.Descending(t => t.Name), SortOptimisations.None) | |
.AsObservableCache() | |
.Connect() | |
.Publish(); | |
var proxyBind = localTransformed | |
.ObserveOnDispatcher() | |
.Bind(out _salesOptionProxies) | |
.Subscribe(); | |
var proxyCount = localTransformed.Count(); | |
var proxyGroup = localTransformed | |
.AutoRefresh(proxy => proxy.IsSelected) | |
.Filter(x => x.IsSelected == true) | |
.GroupOnProperty(x => x.Category) | |
.Transform(group => new SalesOptionGroup(group, proxyCount)) | |
.ObserveOnDispatcher() | |
.Bind(out _groupedSalesOptions) | |
.DisposeMany() | |
.Subscribe(); | |
_cleanup = new CompositeDisposable(optionsChangeSet.Connect(), localTransformed.Connect(), proxyGroup); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment