private void BuildGanttChart( IEnumerable <ActivityModel> activities, DateTime projectStart, SlackColorFormatLookup colorFormatLookup) { if (activities == null) { return; } foreach (ActivityModel activity in activities) { GanttRowGroup rowGroup = GanttChartAreaCtrl.CreateGanttRowGroup(); string name = string.IsNullOrWhiteSpace(activity.Name) ? activity.Id.ToString(CultureInfo.InvariantCulture) : activity.Name; GanttRow row = GanttChartAreaCtrl.CreateGanttRow(rowGroup, name); if (activity.EarliestStartTime.HasValue && activity.EarliestFinishTime.HasValue) { CheckRowErrors(activity, row); GanttChartAreaCtrl.AddGanttTask( row, CreateGanttTask(projectStart, activity, colorFormatLookup)); } } }
public GanttRowGroup CreateGanttRowGroup() { var rowGroup = new GanttRowGroup() { }; ganttChartData.RowGroups.Add(rowGroup); return(rowGroup); }
public GanttRow CreateGanttRow(GanttRowGroup rowGroup, string name) { var rowHeader = new GanttRowHeader() { Name = name }; var row = new GanttRow() { RowHeader = rowHeader, Tasks = new ObservableCollection <GanttTask>() }; rowGroup.Rows.Add(row); return(row); }
private void CreateData(DateTime minDate, DateTime maxDate) { // Set max and min dates ganttControl1.Initialize(minDate, maxDate); // Create timelines and define how they should be presented TimeLine gridLineTimeLine = ganttControl1.CreateTimeLine(new PeriodHourSplitter(minDate, maxDate), FormatHour); // Set the timeline to atatch gridlines to ganttControl1.SetGridLinesTimeline(gridLineTimeLine, DetermineBackground); // Create rows and data GanttRowGroup rowgroup1 = ganttControl1.CreateGanttRowGroup(); GanttRow row1 = ganttControl1.CreateGanttRow(rowgroup1, "Training"); GanttRow row2 = ganttControl1.CreateGanttRow(rowgroup1, "Meal"); GenerateEventsFromTable(row1, minDate, maxDate, "activity"); GenerateEventsFromTable(row2, minDate, maxDate, "meal"); }
private void BuildGanttChart( IEnumerable <ActivityModel> activities, ResourceSeriesSetModel resourceSeriesSet, DateTime projectStart, SlackColorFormatLookup colorFormatLookup) { if (activities == null || resourceSeriesSet?.Scheduled == null) { return; } IDictionary <int, ActivityModel> activityLookup = activities.ToDictionary(x => x.Id); foreach (ResourceSeriesModel resourceSeries in resourceSeriesSet.Scheduled) { ResourceScheduleModel resourceSchedule = resourceSeries.ResourceSchedule; if (resourceSchedule != null) { GanttRowGroup rowGroup = GanttChartAreaCtrl.CreateGanttRowGroup(resourceSeries.Title); foreach (ScheduledActivityModel scheduledctivity in resourceSchedule.ScheduledActivities) { if (activityLookup.TryGetValue(scheduledctivity.Id, out ActivityModel activity)) { string name = string.IsNullOrWhiteSpace(scheduledctivity.Name) ? scheduledctivity.Id.ToString(CultureInfo.InvariantCulture) : scheduledctivity.Name; GanttRow row = GanttChartAreaCtrl.CreateGanttRow(rowGroup, name); if (activity.EarliestStartTime.HasValue && activity.EarliestFinishTime.HasValue) { CheckRowErrors(activity, row); GanttChartAreaCtrl.AddGanttTask( row, CreateGanttTask(projectStart, activity, colorFormatLookup)); } } } } } }
public GanttRow CreateGanttRow(GanttRowGroup rowGroup, string name) { if (rowGroup is null) { throw new ArgumentNullException(nameof(rowGroup)); } if (string.IsNullOrEmpty(name)) { throw new ArgumentException(nameof(name)); } GanttRowHeader rowHeader = new GanttRowHeader() { Name = name }; var row = new GanttRow() { RowHeader = rowHeader, Tasks = new ObservableCollection <GanttTask>() }; rowGroup.Rows.Add(row); return(row); }
private void BuildGanttChart( IEnumerable <ActivityModel> activities, DateTime projectStart, SlackColorFormatLookup colorFormatLookup) { if (activities == null) { return; } foreach (ActivityModel activity in activities) { GanttRowGroup rowGroup = GanttChartAreaCtrl.CreateGanttRowGroup(); GanttRow row = GanttChartAreaCtrl.CreateGanttRow(rowGroup, activity.Name); if (activity.EarliestStartTime.HasValue && activity.EarliestFinishTime.HasValue) { GanttChartAreaCtrl.AddGanttTask( row, CreateGanttTask(projectStart, activity, colorFormatLookup)); } } }
private void BuildGanttChart( IList <IDependentActivity <int> > dependentActivities, DateTime projectStart, SlackColorFormatLookup colorFormatLookup) { if (dependentActivities == null) { return; } foreach (IDependentActivity <int> activity in dependentActivities) { GanttRowGroup rowGroup = GanttChartAreaCtrl.CreateGanttRowGroup(); GanttRow row = GanttChartAreaCtrl.CreateGanttRow(rowGroup, activity.Name); if (activity.EarliestStartTime.HasValue && activity.EarliestFinishTime.HasValue) { GanttChartAreaCtrl.AddGanttTask( row, CreateGanttTask(projectStart, activity, colorFormatLookup)); } } }
private void BuildGanttChart( IList <IDependentActivity <int> > dependentActivities, IList <ResourceSeriesDto> resourceSeriesSet, IList <IResourceSchedule <int> > resourceSchedules, DateTime projectStart, SlackColorFormatLookup colorFormatLookup) { if (dependentActivities == null || resourceSeriesSet == null || resourceSchedules == null) { return; } IDictionary <int, IDependentActivity <int> > activityLookup = dependentActivities.ToDictionary(x => x.Id); int spareResourceCount = 1; for (int resourceIndex = 0; resourceIndex < resourceSchedules.Count; resourceIndex++) { IResourceSchedule <int> resourceSchedule = resourceSchedules[resourceIndex]; IList <IScheduledActivity <int> > scheduledActivities = resourceSchedule?.ScheduledActivities; if (scheduledActivities == null) { continue; } var stringBuilder = new StringBuilder(); if (resourceSchedule.Resource != null) { if (string.IsNullOrWhiteSpace(resourceSchedule.Resource.Name)) { stringBuilder.Append($@"Resource {resourceSchedule.Resource.Id}"); } else { stringBuilder.Append(resourceSchedule.Resource.Name); } } else { stringBuilder.Append($@"Resource {spareResourceCount}"); spareResourceCount++; } string resourceName = stringBuilder.ToString(); GanttRowGroup rowGroup = GanttChartAreaCtrl.CreateGanttRowGroup(resourceName); foreach (IScheduledActivity <int> scheduledctivity in resourceSchedule.ScheduledActivities) { if (activityLookup.TryGetValue(scheduledctivity.Id, out IDependentActivity <int> activity)) { GanttRow row = GanttChartAreaCtrl.CreateGanttRow(rowGroup, activity.Name); if (activity.EarliestStartTime.HasValue && activity.EarliestFinishTime.HasValue) { GanttChartAreaCtrl.AddGanttTask( row, CreateGanttTask(projectStart, activity, colorFormatLookup)); } } } } }