private ArrayList SplitSeriesInStackedGroups(string[] seriesNames) { Hashtable hashtable = new Hashtable(); foreach (string text in seriesNames) { Series series = base.Common.Chart.Series[text]; string key = string.Empty; if (StackedColumnChart.IsSeriesStackGroupNameSupported(series)) { key = StackedColumnChart.GetSeriesStackGroupName(series); } if (hashtable.ContainsKey(key)) { ArrayList arrayList = (ArrayList)hashtable[key]; arrayList.Add(text); } else { ArrayList arrayList2 = new ArrayList(); arrayList2.Add(text); hashtable.Add(key, arrayList2); } } ArrayList arrayList3 = new ArrayList(); IDictionaryEnumerator enumerator = hashtable.GetEnumerator(); try { while (enumerator.MoveNext()) { ArrayList arrayList4 = (ArrayList)((DictionaryEntry)enumerator.Current).Value; if (arrayList4.Count > 0) { int num = 0; string[] array = new string[arrayList4.Count]; foreach (string item in arrayList4) { array[num++] = item; } arrayList3.Add(array); } } return(arrayList3); } finally { IDisposable disposable = enumerator as IDisposable; if (disposable != null) { disposable.Dispose(); } } }
private ArrayList SplitSeriesInStackedGroups(string[] seriesNames) { Hashtable hashtable = new Hashtable(); foreach (string text in seriesNames) { Series series = base.Common.Chart.Series[text]; string key = string.Empty; if (StackedColumnChart.IsSeriesStackGroupNameSupported(series)) { key = StackedColumnChart.GetSeriesStackGroupName(series); } if (hashtable.ContainsKey(key)) { ((ArrayList)hashtable[key]).Add(text); continue; } ArrayList arrayList = new ArrayList(); arrayList.Add(text); hashtable.Add(key, arrayList); } ArrayList arrayList2 = new ArrayList(); foreach (DictionaryEntry item in hashtable) { ArrayList arrayList3 = (ArrayList)item.Value; if (arrayList3.Count <= 0) { continue; } int num = 0; string[] array = new string[arrayList3.Count]; foreach (string item2 in arrayList3) { array[num++] = item2; } arrayList2.Add(array); } return(arrayList2); }
public int GetNumberOfClusters() { if (this.seriesClusters == null) { ArrayList arrayList = new ArrayList(); ArrayList arrayList2 = new ArrayList(); this.seriesClusters = new ArrayList(); int num = -1; foreach (string item in base.series) { Series series = base.Common.DataManager.Series[item]; if (!this.Area3DStyle.Clustered && base.Common.ChartTypeRegistry.GetChartType(series.ChartTypeName).SupportStackedGroups) { string seriesStackGroupName = StackedColumnChart.GetSeriesStackGroupName(series); if (arrayList2.Contains(seriesStackGroupName)) { bool flag = false; int num2 = 0; while (!flag && num2 < this.seriesClusters.Count) { foreach (string item2 in (ArrayList)this.seriesClusters[num2]) { Series series2 = base.Common.DataManager.Series[item2]; if (seriesStackGroupName == StackedColumnChart.GetSeriesStackGroupName(series2)) { num = num2; flag = true; } } num2++; } } else { num = this.seriesClusters.Count; arrayList2.Add(seriesStackGroupName); } } else if (base.Common.ChartTypeRegistry.GetChartType(series.ChartTypeName).Stacked || (this.Area3DStyle.Clustered && base.Common.ChartTypeRegistry.GetChartType(series.ChartTypeName).SideBySideSeries)) { if (arrayList.Contains(series.ChartTypeName.ToUpper(CultureInfo.InvariantCulture))) { bool flag2 = false; int num3 = 0; while (!flag2 && num3 < this.seriesClusters.Count) { foreach (string item3 in (ArrayList)this.seriesClusters[num3]) { Series series3 = base.Common.DataManager.Series[item3]; if (series3.ChartTypeName.ToUpper(CultureInfo.InvariantCulture) == series.ChartTypeName.ToUpper(CultureInfo.InvariantCulture)) { num = num3; flag2 = true; } } num3++; } } else { num = this.seriesClusters.Count; arrayList.Add(series.ChartTypeName.ToUpper(CultureInfo.InvariantCulture)); } } else { num = this.seriesClusters.Count; } if (this.seriesClusters.Count <= num) { this.seriesClusters.Add(new ArrayList()); } ((ArrayList)this.seriesClusters[num]).Add(item); } } return(this.seriesClusters.Count); }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { var Collection = new ObservableCollection <ChartItem>(); string Title = ""; string SubTitle = ""; List <string> Clustertitle = new List <string>(); GH_Structure <GH_Number> treeValues = new GH_Structure <GH_Number>(); //GH_Structure<GH_String> treeNames = new GH_Structure<GH_String>(); List <string> names = new List <string>(); int chartType = 0; //get GH input data bool hasTitle = DA.GetData <string>("Title", ref Title); DA.GetData <string>("SubTitle", ref SubTitle); DA.GetDataList <string>("ClusterTitle", Clustertitle); DA.GetDataTree <GH_Number>("Data", out treeValues); //DA.GetDataTree<GH_String>("Names", out treeNames); DA.GetDataList <string>("Names", names); DA.GetData <int>("Chart Type", ref chartType); ChartBase ChartElem = null; switch (chartType) { case 0: var ColumnCluster = new ClusteredColumnChart(); ChartElem = ColumnCluster; break; case 1: var BarCluster = new ClusteredBarChart(); ChartElem = BarCluster; break; case 2: var ColumnStack = new StackedColumnChart(); ChartElem = ColumnStack; break; case 3: var BarStack = new StackedBarChart(); ChartElem = BarStack; break; case 4: var pieElem = new PieChart(); ChartElem = pieElem; break; default: var defaultElem = new ClusteredBarChart(); ChartElem = defaultElem; break; } //Give the chart its name ChartElem.ChartTitle = Title; ChartElem.ChartSubTitle = SubTitle; // MultiChartModel mcm = new MultiChartModel(); // mcm.Series = new ObservableCollection<SeriesModel>(); for (int i = 0; i < treeValues.Branches.Count; i++) { //package the data into a custom chart model and series List <double> listDouble = treeValues[i].ConvertAll(x => x.Value); SeriesModel vm = new SeriesModel(names.ToList(), listDouble, Clustertitle[i]); ChartSeries series = new ChartSeries(); //We have to set the series data context rather than the whole chart series.DataContext = vm; series.SeriesTitle = Clustertitle[i]; series.DisplayMember = "Category"; series.ValueMember = "Number"; Binding seriesBinding = new Binding(); seriesBinding.Source = vm; seriesBinding.Path = new PropertyPath("Chart"); BindingOperations.SetBinding(series, ChartSeries.ItemsSourceProperty, seriesBinding); ChartElem.Series.Add(series); //Pass data to the chart // mcm.Series.Add(vm); } //Binding seriesSetBinding = new Binding(); //seriesSetBinding.Source = mcm; //seriesSetBinding.Path = new PropertyPath("Series"); //BindingOperations.SetBinding(ChartElem, ChartBase.SeriesSourceProperty, seriesSetBinding); ////Send Data to GH output DA.SetData("MultiChart", new UIElement_Goo(ChartElem, "Chart Elem", InstanceGuid, DA.Iteration)); // DA.SetData("Test","listNames"); }