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; }
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); } } } } } }