示例#1
0
        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;
 }
示例#3
0
        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);
        }