示例#1
0
        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,
            });
        }
示例#4
0
        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));
                }
            }
        }