protected override Range <IComparable> GetActualYDataRange() { StackedColumnSeriesPresenter columnSeriesPresenter = this.SeriesPresenter as StackedColumnSeriesPresenter; List <XYSeries> counterpartDataSeries = columnSeriesPresenter.GetCounterpartDataSeries(true); List <IComparable> list = new List <IComparable>(); if (counterpartDataSeries.Count == 1 && !this.ActualIsHundredPercent) { return(base.GetActualYDataRange()); } foreach (XYDataPoint xyDataPoint in (Collection <DataPoint>) this.DataPoints) { if (xyDataPoint.YValue != null) { object xValue = ValueHelper.ConvertValue(xyDataPoint.XValue, this.ActualXValueType); Range <IComparable> range = columnSeriesPresenter.GetDataPointYValueRange(xValue, counterpartDataSeries); if (range.HasData) { range = columnSeriesPresenter.ConvertToPercentRange(range); list.Add(range.Minimum); list.Add(range.Maximum); } } } return(RangeEnumerableExtensions.GetRange <IComparable>((IEnumerable <IComparable>)list)); }
private void ReleaseDataPointsByXValueRanges() { if (this._aquiredStackingKey == StackedColumnSeriesPresenter.GetSeriesKey(this.Series as StackedColumnSeries)) { return; } if (this._dataPointsByXValueRanges != null) { this.ChartArea.SingletonRegistry.ReleaseSingleton((object)this._aquiredStackingKey); } this._dataPointsByXValueRanges = (Dictionary <object, Range <IComparable> >)null; }
internal virtual Dictionary <object, List <Series> > GroupSeriesByClusters(IList <XYSeries> clusterSeries) { Dictionary <object, List <Series> > clusterGroups = new Dictionary <object, List <Series> >(); foreach (ColumnSeries columnSeries1 in (IEnumerable <XYSeries>)clusterSeries) { List <Series> list = new List <Series>(); if (columnSeries1.ClusterGroupKey == null) { list.Add((Series)columnSeries1); clusterGroups.Add((object)new Tuple <ColumnSeries>(columnSeries1), list); } else if (!clusterGroups.ContainsKey(columnSeries1.ClusterGroupKey)) { foreach (ColumnSeries columnSeries2 in (IEnumerable <XYSeries>)clusterSeries) { if (ValueHelper.AreEqual(columnSeries2.ClusterGroupKey, columnSeries1.ClusterGroupKey)) { list.Add((Series)columnSeries2); } } clusterGroups.Add(columnSeries1.ClusterGroupKey, list); } } IList <StackedColumnSeries> list1 = (IList <StackedColumnSeries>)Enumerable.ToList <StackedColumnSeries>(Enumerable.OfType <StackedColumnSeries>((IEnumerable)Enumerable.Where <XYSeries>((IEnumerable <XYSeries>) this.XYChartArea.Series, (Func <XYSeries, bool>)(s => s.Visibility == Visibility.Visible)))); foreach (List <Series> list2 in clusterGroups.Values) { List <Series> groupSeries = list2; EnumerableFunctions.ForEach <Series>(Enumerable.Where <Series>((IEnumerable <Series>)groupSeries.ToArray(), (Func <Series, bool>)(s => s is StackedColumnSeries)), (Action <Series>)(s => groupSeries.Remove(s))); } EnumerableFunctions.ForEach <KeyValuePair <object, List <Series> > >(Enumerable.Where <KeyValuePair <object, List <Series> > >((IEnumerable <KeyValuePair <object, List <Series> > >)Enumerable.ToArray <KeyValuePair <object, List <Series> > >((IEnumerable <KeyValuePair <object, List <Series> > >)clusterGroups), (Func <KeyValuePair <object, List <Series> >, bool>)(item => item.Value.Count == 0)), (Action <KeyValuePair <object, List <Series> > >)(item => clusterGroups.Remove(item.Key))); foreach (StackedColumnSeries series1 in (IEnumerable <StackedColumnSeries>)list1) { List <Series> list2 = new List <Series>(); Tuple <DataValueType, DataValueType, bool, object> seriesKey = StackedColumnSeriesPresenter.GetSeriesKey(series1); if (!clusterGroups.ContainsKey((object)seriesKey) && seriesKey.Item1 != DataValueType.Auto) { foreach (StackedColumnSeries series2 in (IEnumerable <StackedColumnSeries>)list1) { if (StackedColumnSeriesPresenter.GetSeriesKey(series2).Equals((object)seriesKey)) { list2.Add((Series)series2); } } clusterGroups.Add((object)seriesKey, list2); } } return(clusterGroups); }
internal override void OnUpdateView(DataPoint dataPoint) { base.OnUpdateView(dataPoint); if (dataPoint.View == null || dataPoint.View.LabelView == null) { return; } StackedColumnSeriesPresenter columnSeriesPresenter = this.SeriesPresenter as StackedColumnSeriesPresenter; ContentPositions validContentPositions = ContentPositions.InsideCenter; if (columnSeriesPresenter.IsStackTopSeries() && !columnSeriesPresenter.IsHundredPercent()) { validContentPositions |= ContentPositions.OutsideEnd; } AnchorPanel.SetValidContentPositions((UIElement)dataPoint.View.LabelView, validContentPositions); AnchorPanel.SetContentPosition((UIElement)dataPoint.View.LabelView, ContentPositions.InsideCenter); AnchorPanel.SetAnchorMargin((UIElement)dataPoint.View.LabelView, 0.0); ColumnSeriesLabelPresenter.SetLabelMaxMovingDistance((XYChartArea)this.SeriesPresenter.Series.ChartArea, (UIElement)dataPoint.View.LabelView); }