Ejemplo n.º 1
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);
        }
Ejemplo n.º 2
0
        internal override double GetYOffsetInAxisUnits(XYDataPoint dataPoint, Point valuePoint, Point basePoint)
        {
            object xValue          = ValueHelper.ConvertValue(dataPoint.XValue, ((XYSeries)dataPoint.Series).ActualXValueType);
            bool   flag            = valuePoint.Y < basePoint.Y;
            double num1            = 0.0;
            double num2            = 0.0;
            object clusterGroupKey = ((ColumnSeries)this.Series).ClusterGroupKey;

            foreach (XYDataPoint dataPointXY in Enumerable.Where <XYDataPoint>((IEnumerable <XYDataPoint>) this.GetCounterpartDataPoints(xValue, false), (Func <XYDataPoint, bool>)(p => this.IsDataPointViewVisible((DataPoint)p))))
            {
                ColumnSeries columnSeries = dataPointXY.Series as ColumnSeries;
                if (clusterGroupKey != null && columnSeries != null)
                {
                    if (ValueHelper.AreEqual(columnSeries.ClusterGroupKey, clusterGroupKey))
                    {
                        break;
                    }
                }
                Point positionInAxisUnits = this.GetPositionInAxisUnits(dataPointXY);
                if (flag)
                {
                    if (positionInAxisUnits.Y < basePoint.Y)
                    {
                        num1 += basePoint.Y - positionInAxisUnits.Y;
                    }
                }
                else if (positionInAxisUnits.Y > basePoint.Y)
                {
                    num2 += basePoint.Y - positionInAxisUnits.Y;
                }
            }
            if (!flag)
            {
                return(num2);
            }
            return(num1);
        }