private CombinedSeries GetCombinedSeries(ISupportCombineMode combinableSeries) { Type type = combinableSeries.GetType(); ChartSeriesCombineMode combineMode = combinableSeries.CombineMode; AxisModel stackValueAxis = this.valueAxesExtractor(combinableSeries as IPlotAreaElementModelWithAxes); foreach (CombinedSeries series in this.CombinedSeries) { if (series.SeriesType == type && series.CombineMode == combineMode && (combineMode == ChartSeriesCombineMode.Cluster || ((combineMode == ChartSeriesCombineMode.Stack || combineMode == ChartSeriesCombineMode.Stack100) && series.StackValueAxis == stackValueAxis))) { return(series); } } CombinedSeries newSeries = new CombinedSeries(); newSeries.SeriesType = type; newSeries.CombineMode = combineMode; newSeries.CombineIndex = this.CombinedSeries.Count; newSeries.StackAxis = this.StackAxis; newSeries.StackValueAxis = stackValueAxis; this.CombinedSeries.Add(newSeries); return(newSeries); }
private CombineStack CreateNewStack(ISupportCombineMode series) { CombineStack newStack = new CombineStack(); newStack.Key = series.StackGroupKey; this.Stacks.Add(newStack); return(newStack); }
public void Update(IList <ChartSeriesModel> series, AxisModel stackAxis) { if (this.isUpdated) { return; } this.StackAxis = stackAxis; if (stackAxis.Type == AxisType.First) { this.valueAxesExtractor = sm => sm.SecondAxis; } else { this.valueAxesExtractor = sm => sm.FirstAxis; } foreach (ChartSeriesModel model in series) { if (!model.presenter.IsVisible) { continue; } AxisModel stackValueAxis = this.valueAxesExtractor(model as IPlotAreaElementModelWithAxes); if (!this.StackValueAxes.Contains(stackValueAxis)) { this.StackValueAxes.Add(stackValueAxis); } ISupportCombineMode combinableSeries = model as ISupportCombineMode; if (combinableSeries == null || combinableSeries.CombineMode == ChartSeriesCombineMode.None) { this.NonCombinedSeries.Add(model); continue; } CombinedSeries combinedSeries = this.GetCombinedSeries(combinableSeries); combinedSeries.Series.Add(model); this.HasCombination = true; } if (this.HasCombination) { this.BuildGroups(); } this.isUpdated = true; }
public CombineStack GetStack(ISupportCombineMode series) { if (series.CombineMode == ChartSeriesCombineMode.Cluster) { return(this.CreateNewStack(series)); } object stackKey = series.StackGroupKey; foreach (CombineStack stack in this.Stacks) { if (object.Equals(stack.Key, stackKey)) { return(stack); } } return(this.CreateNewStack(series)); }