private void SetEarnedValueChartPlotModel() { lock (m_Lock) { IList <EarnedValuePoint> pointSet = m_EarnedValueChartPointSet; PlotModel plotModel = null; if (pointSet != null && pointSet.Any()) { plotModel = new PlotModel(); plotModel.Axes.Add(BuildEarnedValueChartXAxis()); plotModel.Axes.Add(BuildEarnedValueChartYAxis()); plotModel.LegendPlacement = LegendPlacement.Outside; plotModel.LegendPosition = LegendPosition.RightMiddle; var lineSeries = new LineSeries(); m_DateTimeCalculator.UseBusinessDays(UseBusinessDays); foreach (EarnedValuePoint point in pointSet) { lineSeries.Points.Add( new DataPoint(ChartHelper.CalculateChartTimeXValue(point.Time, ShowDates, ProjectStart, m_DateTimeCalculator), point.EarnedValuePercentage)); } plotModel.Series.Add(lineSeries); } EarnedValueChartPlotModel = plotModel; } RaiseCanExecuteChangedAllCommands(); }
private Axis BuildEarnedValueChartXAxis() { lock (m_Lock) { IEnumerable <IDependentActivity <int, int> > dependentActivities = GraphCompilation?.DependentActivities; Axis axis = null; if (dependentActivities != null && dependentActivities.Any()) { int finishTime = dependentActivities.Max(x => x.EarliestFinishTime.GetValueOrDefault()); m_DateTimeCalculator.UseBusinessDays(UseBusinessDays); double minValue = ChartHelper.CalculateChartTimeXValue(0, ShowDates, ProjectStart, m_DateTimeCalculator); double maxValue = ChartHelper.CalculateChartTimeXValue(finishTime, ShowDates, ProjectStart, m_DateTimeCalculator); if (ShowDates) { axis = new DateTimeAxis { Position = AxisPosition.Bottom, Minimum = minValue, Maximum = maxValue, Title = Resource.ProjectPlan.Resources.Label_TimeAxisTitle, StringFormat = "d" }; } else { axis = new LinearAxis { Position = AxisPosition.Bottom, Minimum = minValue, Maximum = maxValue, Title = Resource.ProjectPlan.Resources.Label_TimeAxisTitle }; } } else { axis = new LinearAxis(); } return(axis); } }
private Axis BuildResourceChartXAxis() { lock (m_Lock) { IEnumerable <IResourceSchedule <int, int> > resourceSchedules = GraphCompilation?.ResourceSchedules; Axis axis = null; if (resourceSchedules != null && resourceSchedules.Any()) { int finishTime = resourceSchedules.Max(x => x.FinishTime); m_DateTimeCalculator.UseBusinessDays(UseBusinessDays); double minValue = ChartHelper.CalculateChartTimeXValue(0, ShowDates, ProjectStart, m_DateTimeCalculator); double maxValue = ChartHelper.CalculateChartTimeXValue(finishTime, ShowDates, ProjectStart, m_DateTimeCalculator); if (ShowDates) { axis = new DateTimeAxis { Position = AxisPosition.Bottom, Minimum = minValue, Maximum = maxValue, Title = Resource.ProjectPlan.Properties.Resources.Label_TimeAxisTitle, StringFormat = "d" }; } else { axis = new LinearAxis { Position = AxisPosition.Bottom, Minimum = minValue, Maximum = maxValue, Title = Resource.ProjectPlan.Properties.Resources.Label_TimeAxisTitle }; } } else { axis = new LinearAxis(); } return(axis); } }
private void CalculateResourceChartPlotModel() { lock (m_Lock) { ResourceSeriesSetModel resourceSeriesSet = ResourceSeriesSet; PlotModel plotModel = null; if (resourceSeriesSet != null) { IEnumerable <ResourceSeriesModel> combinedResourceSeries = resourceSeriesSet.Combined.OrderBy(x => x.DisplayOrder); if (combinedResourceSeries.Any()) { plotModel = new PlotModel(); plotModel.Axes.Add(BuildResourceChartXAxis()); plotModel.Axes.Add(BuildResourceChartYAxis()); plotModel.LegendPlacement = LegendPlacement.Outside; plotModel.LegendPosition = LegendPosition.RightMiddle; var total = new List <int>(); m_DateTimeCalculator.UseBusinessDays(UseBusinessDays); foreach (ResourceSeriesModel series in combinedResourceSeries) { if (series != null) { var areaSeries = new AreaSeries { //Smooth = false, StrokeThickness = 0.0, Title = series.Title, Color = OxyColor.FromArgb( series.ColorFormat.A, series.ColorFormat.R, series.ColorFormat.G, series.ColorFormat.B) }; for (int i = 0; i < series.Values.Count; i++) { int j = series.Values[i]; if (i >= total.Count) { total.Add(0); } areaSeries.Points.Add( new DataPoint(ChartHelper.CalculateChartTimeXValue(i, ShowDates, ProjectStart, m_DateTimeCalculator), total[i])); total[i] += j; areaSeries.Points2.Add( new DataPoint(ChartHelper.CalculateChartTimeXValue(i, ShowDates, ProjectStart, m_DateTimeCalculator), total[i])); } plotModel.Series.Add(areaSeries); } } } } ResourceChartPlotModel = plotModel; } RaiseCanExecuteChangedAllCommands(); }