Exemple #1
0
 public DataPointComparer(Series series, PointsSortOrder order, string sortBy)
 {
     sortBy = sortBy.ToUpper(CultureInfo.InvariantCulture);
     if (string.Compare(sortBy, "X", StringComparison.Ordinal) == 0)
     {
         sortingValueIndex = -1;
     }
     else if (string.Compare(sortBy, "Y", StringComparison.Ordinal) == 0)
     {
         sortingValueIndex = 0;
     }
     else if (string.Compare(sortBy, "AXISLABEL", StringComparison.Ordinal) == 0)
     {
         sortingValueIndex = -2;
     }
     else
     {
         if (sortBy.Length != 2 || !sortBy.StartsWith("Y", StringComparison.Ordinal) || !char.IsDigit(sortBy[1]))
         {
             throw new ArgumentException(SR.ExceptionDataPointConverterInvalidSorting, "sortBy");
         }
         sortingValueIndex = int.Parse(sortBy.Substring(1), CultureInfo.InvariantCulture) - 1;
     }
     if (sortingValueIndex > 0 && sortingValueIndex >= series.YValuesPerPoint)
     {
         throw new ArgumentException(SR.ExceptionDataPointConverterUnavailableSorting(sortBy, series.YValuesPerPoint.ToString(CultureInfo.InvariantCulture)), "sortBy");
     }
     sortingOrder = order;
     this.series  = series;
 }
Exemple #2
0
        internal void AlignDataPointsByAxisLabel(bool sortAxisLabels, PointsSortOrder sortingOrder)
        {
            string text = string.Empty;

            foreach (ChartArea chartArea3 in base.ChartAreas)
            {
                if (text.Length == 0)
                {
                    text = chartArea3.Name;
                }
                if (chartArea3.Name == "Default")
                {
                    text = chartArea3.Name;
                    break;
                }
            }
            foreach (ChartArea chartArea4 in base.ChartAreas)
            {
                if (!chartArea4.Visible)
                {
                    continue;
                }
                ArrayList arrayList  = new ArrayList();
                ArrayList arrayList2 = new ArrayList();
                foreach (Series item in common.Chart.Series)
                {
                    if ((item.ChartArea == chartArea4.Name || (item.ChartArea == "Default" && chartArea4.Name == text)) && item.XSubAxisName.Length == 0)
                    {
                        if (item.XAxisType == AxisType.Primary)
                        {
                            arrayList.Add(item);
                        }
                        else
                        {
                            arrayList2.Add(item);
                        }
                    }
                }
                AlignDataPointsByAxisLabel(arrayList, sortAxisLabels, sortingOrder);
                AlignDataPointsByAxisLabel(arrayList2, sortAxisLabels, sortingOrder);
            }
        }
        public void DataBindCrossTab(IEnumerable dataSource, string seriesGroupByField, string xField, string yFields, string otherFields, bool sort, PointsSortOrder sortingOrder)
        {
            ArrayList arrayList  = new ArrayList();
            ArrayList arrayList2 = new ArrayList();

            string[] array = null;
            if (yFields != null)
            {
                array = yFields.Replace(",,", "\n").Split(',');
                for (int i = 0; i < array.Length; i++)
                {
                    array[i] = array[i].Replace("\n", ",");
                }
            }
            string[] array2 = null;
            string[] array3 = null;
            string[] array4 = null;
            DataPointCollection.ParsePointFieldsParameter(otherFields, ref array2, ref array3, ref array4);
            if (dataSource == null)
            {
                throw new ArgumentNullException("dataSource", SR.ExceptionDataPointInsertionNoDataSource);
            }
            if (dataSource is string)
            {
                throw new ArgumentException(SR.ExceptionDataBindSeriesToString, "dataSource");
            }
            if (array != null && array.Length != 0)
            {
                if (seriesGroupByField != null && seriesGroupByField.Length != 0)
                {
                    IEnumerator dataSourceEnumerator = DataPointCollection.GetDataSourceEnumerator(dataSource);
                    if (dataSourceEnumerator.GetType() != typeof(DbEnumerator))
                    {
                        try
                        {
                            dataSourceEnumerator.Reset();
                        }
                        catch
                        {
                        }
                    }
                    bool     flag   = true;
                    object[] array5 = new object[array.Length];
                    object   obj2   = null;
                    bool     flag2  = true;
                    do
                    {
                        if (flag)
                        {
                            flag = dataSourceEnumerator.MoveNext();
                        }
                        if (flag)
                        {
                            object obj3   = DataPointCollection.ConvertEnumerationItem(dataSourceEnumerator.Current, seriesGroupByField);
                            Series series = null;
                            int    num    = arrayList2.IndexOf(obj3);
                            if (num >= 0)
                            {
                                series = (Series)arrayList[num];
                            }
                            else
                            {
                                series = new Series();
                                series.YValuesPerPoint = array.GetLength(0);
                                if (arrayList.Count > 0)
                                {
                                    series.XValueType     = ((Series)arrayList[0]).XValueType;
                                    series.autoXValueType = ((Series)arrayList[0]).autoXValueType;
                                    series.YValueType     = ((Series)arrayList[0]).YValueType;
                                    series.autoYValueType = ((Series)arrayList[0]).autoYValueType;
                                }
                                if (obj3 is string)
                                {
                                    series.Name = (string)obj3;
                                }
                                else
                                {
                                    series.Name = seriesGroupByField + " - " + obj3.ToString();
                                }
                                arrayList2.Add(obj3);
                                arrayList.Add(series);
                            }
                            if (flag2)
                            {
                                flag2 = false;
                                DataPointCollection.AutoDetectValuesType(series, dataSourceEnumerator, xField, dataSourceEnumerator, array[0]);
                            }
                            DataPoint dataPoint = new DataPoint(series);
                            bool      flag3     = false;
                            if (xField.Length > 0)
                            {
                                obj2 = DataPointCollection.ConvertEnumerationItem(dataSourceEnumerator.Current, xField);
                                if (DataPointCollection.IsEmptyValue(obj2))
                                {
                                    flag3 = true;
                                    obj2  = 0.0;
                                }
                            }
                            if (array.Length == 0)
                            {
                                array5[0] = DataPointCollection.ConvertEnumerationItem(dataSourceEnumerator.Current, null);
                                if (DataPointCollection.IsEmptyValue(array5[0]))
                                {
                                    flag3     = true;
                                    array5[0] = 0.0;
                                }
                            }
                            else
                            {
                                for (int j = 0; j < array.Length; j++)
                                {
                                    array5[j] = DataPointCollection.ConvertEnumerationItem(dataSourceEnumerator.Current, array[j]);
                                    if (DataPointCollection.IsEmptyValue(array5[j]))
                                    {
                                        flag3     = true;
                                        array5[j] = 0.0;
                                    }
                                }
                            }
                            if (array2 != null && array2.Length > 0)
                            {
                                for (int k = 0; k < array3.Length; k++)
                                {
                                    object obj4 = DataPointCollection.ConvertEnumerationItem(dataSourceEnumerator.Current, array3[k]);
                                    if (!DataPointCollection.IsEmptyValue(obj4))
                                    {
                                        dataPoint.SetPointAttribute(obj4, array2[k], array4[k]);
                                    }
                                }
                            }
                            if (flag3)
                            {
                                if (obj2 != null)
                                {
                                    dataPoint.SetValueXY(obj2, array5);
                                }
                                else
                                {
                                    dataPoint.SetValueXY(0, array5);
                                }
                                DataPointCollection.DataPointInit(series, ref dataPoint);
                                dataPoint.Empty = true;
                                series.Points.Add(dataPoint);
                            }
                            else
                            {
                                if (obj2 != null)
                                {
                                    dataPoint.SetValueXY(obj2, array5);
                                }
                                else
                                {
                                    dataPoint.SetValueXY(0, array5);
                                }
                                DataPointCollection.DataPointInit(series, ref dataPoint);
                                series.Points.Add(dataPoint);
                            }
                        }
                    }while (flag);
                    if (sort)
                    {
                        ArrayList arrayList3 = (ArrayList)arrayList2.Clone();
                        arrayList2.Sort();
                        if (sortingOrder == PointsSortOrder.Descending)
                        {
                            arrayList2.Reverse();
                        }
                        ArrayList arrayList4 = new ArrayList();
                        foreach (object item in arrayList2)
                        {
                            arrayList4.Add(arrayList[arrayList3.IndexOf(item)]);
                        }
                        arrayList = arrayList4;
                    }
                    foreach (Series item2 in arrayList)
                    {
                        base.common.Chart.Series.Add(item2);
                    }
                    return;
                }
                throw new ArgumentException(SR.ExceptionDataBindSeriesGroupByParameterIsEmpty, "seriesGroupByField");
            }
            throw new ArgumentOutOfRangeException("yFields", SR.ExceptionChartDataPointsInsertionFailedYValuesEmpty);
        }
 public void AlignDataPointsByAxisLabel(ArrayList seriesList, bool sortAxisLabels, PointsSortOrder sortingOrder)
 {
     if (seriesList.Count != 0)
     {
         bool      flag      = true;
         bool      flag2     = true;
         ArrayList arrayList = new ArrayList();
         foreach (Series series4 in seriesList)
         {
             ArrayList arrayList2 = new ArrayList();
             foreach (DataPoint point in series4.Points)
             {
                 if (!series4.XValueIndexed && point.XValue != 0.0)
                 {
                     flag = false;
                     break;
                 }
                 if (point.AxisLabel.Length == 0)
                 {
                     flag2 = false;
                     break;
                 }
                 if (arrayList2.Contains(point.AxisLabel))
                 {
                     flag2 = false;
                     break;
                 }
                 if (!arrayList.Contains(point.AxisLabel))
                 {
                     arrayList.Add(point.AxisLabel);
                 }
                 arrayList2.Add(point.AxisLabel);
             }
         }
         if (sortAxisLabels)
         {
             arrayList.Sort();
             if (sortingOrder == PointsSortOrder.Descending)
             {
                 arrayList.Reverse();
             }
         }
         if (!flag)
         {
             throw new InvalidOperationException(SR.ExceptionChartDataPointsAlignmentFaild);
         }
         if (!flag2)
         {
             throw new InvalidOperationException(SR.ExceptionChartDataPointsAlignmentFaildAxisLabelsInvalid);
         }
         if (flag && flag2)
         {
             foreach (Series series5 in seriesList)
             {
                 foreach (DataPoint point2 in series5.Points)
                 {
                     point2.XValue = (double)(arrayList.IndexOf(point2.AxisLabel) + 1);
                 }
                 series5.Sort(PointsSortOrder.Ascending, "X");
             }
             foreach (Series series6 in seriesList)
             {
                 series6.XValueIndexed = true;
                 for (int i = 0; i < arrayList.Count; i++)
                 {
                     if (i >= series6.Points.Count || series6.Points[i].XValue != (double)(i + 1))
                     {
                         DataPoint dataPoint3 = new DataPoint(series6);
                         dataPoint3.AxisLabel  = (string)arrayList[i];
                         dataPoint3.XValue     = (double)(i + 1);
                         dataPoint3.YValues[0] = 0.0;
                         dataPoint3.Empty      = true;
                         series6.Points.Insert(i, dataPoint3);
                     }
                 }
             }
         }
     }
 }