private DataTable BuildEarnedValueChartDataTable() { lock (m_Lock) { var table = new DataTable(); IList <EarnedValuePoint> pointSet = m_EarnedValueChartPointSet; if (pointSet != null && pointSet.Any()) { table.Columns.Add(new DataColumn(Resource.ProjectPlan.Resources.Label_TimeAxisTitle)); table.Columns.Add(new DataColumn(Resource.ProjectPlan.Resources.Label_Id)); table.Columns.Add(new DataColumn(Resource.ProjectPlan.Resources.Label_ActivityName)); table.Columns.Add(new DataColumn(Resource.ProjectPlan.Resources.Label_EarnedValueTitle)); table.Columns.Add(new DataColumn(Resource.ProjectPlan.Resources.Label_EarnedValuePercentageAxisTitle)); m_DateTimeCalculator.UseBusinessDays(UseBusinessDays); foreach (EarnedValuePoint point in pointSet) { var rowData = new List <object> { ChartHelper.FormatScheduleOutput(point.Time, ShowDates, ProjectStart, m_DateTimeCalculator), point.ActivityId, point.ActivityName, point.EarnedValue, point.EarnedValuePercentage }; table.Rows.Add(rowData.ToArray()); } } return(table); } }
private DataTable BuildResourceChartDataTable() { lock (m_Lock) { var table = new DataTable(); ResourceSeriesSetModel resourceSeriesSet = ResourceSeriesSet; if (resourceSeriesSet != null) { IEnumerable <ResourceSeriesModel> combinedResourceSeries = resourceSeriesSet.Combined.OrderBy(x => x.DisplayOrder); if (combinedResourceSeries.Any()) { table.Columns.Add(new DataColumn(Resource.ProjectPlan.Properties.Resources.Label_TimeAxisTitle)); // Create the column titles. foreach (ResourceSeriesModel resourceSeries in combinedResourceSeries) { var column = new DataColumn(resourceSeries.Title, typeof(int)); table.Columns.Add(column); } m_DateTimeCalculator.UseBusinessDays(UseBusinessDays); // Pivot the series values. int valueCount = combinedResourceSeries.Max(x => x.Values.Count); for (int timeIndex = 0; timeIndex < valueCount; timeIndex++) { var rowData = new List <object> { ChartHelper.FormatScheduleOutput(timeIndex, ShowDates, ProjectStart, m_DateTimeCalculator) }; rowData.AddRange(combinedResourceSeries.Select(x => x.Values[timeIndex] * (ExportResourceChartAsCosts ? x.UnitCost : 1)).Cast <object>()); table.Rows.Add(rowData.ToArray()); } } } return(table); } }
private string BuildActivitySchedules(IEnumerable <ResourceSeriesModel> resourceSeriesSet) { lock (m_Lock) { if (resourceSeriesSet == null) { return(string.Empty); } var output = new StringBuilder(); foreach (ResourceSeriesModel resourceSeries in resourceSeriesSet) { IEnumerable <ScheduledActivityModel> scheduledActivities = resourceSeries?.ResourceSchedule?.ScheduledActivities; if (scheduledActivities == null) { continue; } output.AppendLine($@">{resourceSeries.Title}"); int previousFinishTime = 0; foreach (ScheduledActivityModel scheduledActivity in scheduledActivities) { int startTime = scheduledActivity.StartTime; int finishTime = scheduledActivity.FinishTime; if (startTime > previousFinishTime) { string from = ChartHelper.FormatScheduleOutput(previousFinishTime, ShowDates, ProjectStart, m_DateTimeCalculator); string to = ChartHelper.FormatScheduleOutput(startTime, ShowDates, ProjectStart, m_DateTimeCalculator); output.AppendLine($@"*** {from} -> {to} ***"); } string start = ChartHelper.FormatScheduleOutput(startTime, ShowDates, ProjectStart, m_DateTimeCalculator); string finish = ChartHelper.FormatScheduleOutput(finishTime, ShowDates, ProjectStart, m_DateTimeCalculator); output.AppendLine($@"{Resource.ProjectPlan.Resources.Label_Activity} {scheduledActivity.Id}: {start} -> {finish}"); previousFinishTime = finishTime; } output.AppendLine(); } return(output.ToString()); } }