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)); } } }
private void GenerateGanttChart() { GanttChartAreaCtrl.ClearGantt(); GanttChartModel ganttChart = ViewModel.GanttChart; if (ganttChart != null) { IList <DependentActivityModel> dependentActivities = ganttChart.DependentActivities; ResourceSeriesSetModel resourceSeriesSet = ganttChart.ResourceSeriesSet; m_DateTimeCalculator.UseBusinessDays(ViewModel.UseBusinessDays); DateTime projectStart = ViewModel.ProjectStart; DateTime minDate = DatePicker.SelectedDate ?? projectStart; DateTime maxDate = minDate.AddDays(DaysSelect.Value.GetValueOrDefault()); GanttChartAreaCtrl.Initialize(minDate, maxDate); // Create timelines and define how they should be presented. GanttChartAreaCtrl.CreateTimeLine(new PeriodYearSplitter(minDate, maxDate), FormatYear); GanttChartAreaCtrl.CreateTimeLine(new PeriodMonthSplitter(minDate, maxDate), FormatMonth); TimeLine gridLineTimeLine = GanttChartAreaCtrl.CreateTimeLine(new PeriodDaySplitter(minDate, maxDate), FormatDay); //GanttChartAreaCtrl.CreateTimeLine(new PeriodDaySplitter(minDate, maxDate), FormatDayName); // Attach gridlines. GanttChartAreaCtrl.SetGridLinesTimeline(gridLineTimeLine, DetermineBackground); // Prep formatting helpers. SlackColorFormatLookup colorFormatLookup = null; ArrowGraphSettingsModel arrowGraphSettings = ViewModel.ArrowGraphSettings; if (arrowGraphSettings?.ActivitySeverities != null) { colorFormatLookup = new SlackColorFormatLookup(arrowGraphSettings.ActivitySeverities); } if (GroupByResource.IsChecked.GetValueOrDefault()) { BuildGanttChart(dependentActivities.Select(x => x.Activity), resourceSeriesSet, projectStart, colorFormatLookup); } else { BuildGanttChart(dependentActivities.Select(x => x.Activity), projectStart, colorFormatLookup); } } }
private GanttTask CreateGanttTask( DateTime projectStart, ActivityModel activity, SlackColorFormatLookup colorFormatLookup) { Color background = colorFormatLookup?.FindSlackColor(activity.TotalSlack) ?? Colors.DodgerBlue; return(new GanttTask { Start = m_DateTimeCalculator.AddDays(projectStart, activity.EarliestStartTime.Value), End = m_DateTimeCalculator.AddDays(projectStart, activity.EarliestFinishTime.Value), Name = activity.Name, BackgroundColor = new SolidColorBrush(background), ForegroundColor = new SolidColorBrush(ContrastConvert(background)), Radius = activity.Duration < 3 ? 0 : 5, TaskProgressVisibility = Visibility.Collapsed, }); }
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)); } } } } } }
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)); } } }