public override void Update() { var player = ServiceLocator.Current.GetInstance <SingletonStorageModel>().PlayerSelectedItem; var tournaments = ServiceLocator.Current.GetInstance <IDataService>().GetPlayerTournaments(player?.PlayerIds); var tournamentsOfStatistic = new HashSet <TournamentKey>(StorageModel .GetFilteredTournamentPlayerStatistic() .Select(x => new TournamentKey(x.PokersiteId, x.TournamentId)) .Distinct()); var filteredTournaments = tournaments.Where(x => tournamentsOfStatistic.Contains(x.BuildKey())).ToList(); var chartSeriesItems = new Dictionary <TournamentChartSeries, List <ChartSeriesItem> >(); UpdateBasedOnTournamentsSeries(chartSeriesItems, filteredTournaments); UpdateBasedOnStatisticSeries(chartSeriesItems, filteredTournaments); App.Current.Dispatcher.Invoke(() => ChartCollection.ForEach(x => x.ItemsCollection.Clear())); if (chartSeriesItems.Count > 0) { chartSeriesItems.Keys.ForEach(charSerie => { charSerie.ItemsCollection = new ObservableCollection <ChartSeriesItem>(chartSeriesItems[charSerie]); }); } }
public override void Update() { var chartItemDataBuilder = CreateChartItemDataBuilder(ChartDisplayRange); // filter and orders var stats = chartItemDataBuilder.PrepareStatistic(StorageModel.GetFilteredCashPlayerStatistic()); object previousGroupKey = null; chartItemDataBuilder.Prepare(stats.Length); var chartSeriesItems = new Dictionary <ChartSeries, List <ChartSeriesItem> >(); var itemsCounter = 0; for (var statIndex = 0; statIndex < stats.Length; statIndex++) { var stat = stats[statIndex]; var currentGroupKey = chartItemDataBuilder.BuildGroupKey(stat, statIndex); var isNew = !currentGroupKey.Equals(previousGroupKey); if (isNew) { itemsCounter++; } previousGroupKey = currentGroupKey; foreach (var chartSerie in ChartCollection) { ChartSeriesItem previousChartSeriesItem = null; ChartSeriesItem chartSeriesItem = null; if (!chartSeriesItems.ContainsKey(chartSerie)) { chartSeriesItems.Add(chartSerie, new List <ChartSeriesItem>()); } if (isNew) { chartSeriesItem = new ChartSeriesItem { Format = chartSerie.Format, Category = chartItemDataBuilder.GetValueFromGroupKey(currentGroupKey) }; previousChartSeriesItem = chartSeriesItems[chartSerie].LastOrDefault(); chartSeriesItems[chartSerie].Add(chartSeriesItem); } else { previousChartSeriesItem = chartSeriesItem = chartSeriesItems[chartSerie].LastOrDefault(); } chartSerie.UpdateChartSeriesItem(chartSeriesItem, previousChartSeriesItem, stat, statIndex, stats.Length); } } if (ChartDisplayRange == ChartDisplayRange.Hands) { HandsCount = itemsCounter; } App.Current?.Dispatcher.Invoke(() => ChartCollection?.ForEach(x => x.ItemsCollection?.Clear())); if (chartSeriesItems.Count > 0) { chartSeriesItems.Keys.ForEach(charSerie => { charSerie.ItemsCollection = new ObservableCollection <ChartSeriesItem>(chartSeriesItems[charSerie]); }); } }