コード例 #1
0
        /// <summary>
        /// <paramref name="period"/>를 <paramref name="periodKind"/> 단위로 열거합니다.
        /// </summary>
        /// <param name="period">전체 기간</param>
        /// <param name="periodKind">열거할 기간의 단위</param>
        /// <returns>열거할 기간 단위를 가지는 기간의 컬렉션</returns>
        public static IEnumerable <ITimePeriod> ForEachPeriods(this ITimePeriod period, PeriodKind periodKind)
        {
            switch (periodKind)
            {
            case PeriodKind.Year:
                return(period.ForEachYears());

            case PeriodKind.Halfyear:
                return(period.ForEachHalfYears());

            case PeriodKind.Quarter:
                return(period.ForEachQuarters());

            case PeriodKind.Month:
                return(period.ForEachMonths());

            case PeriodKind.Week:
                return(period.ForEachWeeks());

            case PeriodKind.Day:
                return(period.ForEachDays());

            case PeriodKind.Hour:
                return(period.ForEachHours());

            case PeriodKind.Minute:
                return(period.ForEachMinutes());

            default:
                throw new InvalidOperationException("지원하지 않는 PeriodKind입니다. PeriodKind=" + periodKind);
            }
        }
コード例 #2
0
ファイル: GanttUtil.cs プロジェクト: 15831944/NFramework
        /// <summary>
        /// 기간 단위에 따라 Category를 생성합니다.
        /// </summary>
        /// <param name="categoryCollectionList">생성된 <see cref="CategoriesElement"/> 정보가 담길 객체</param>
        /// <param name="timePeriod">Gantt에 표현할 전체 기간 (프로젝트 전체 기간)</param>
        /// <param name="periodFlags">Gantt Chart X축에 나타낼 기간 단위 정보</param>
        public static void GenerateCategories(IList <CategoriesElement> categoryCollectionList,
                                              ITimePeriod timePeriod,
                                              PeriodFlags periodFlags)
        {
            categoryCollectionList.ShouldNotBeNull("categoryCollectionList");
            timePeriod.ShouldNotBeNull("periodRange");
            Guard.Assert(timePeriod.HasPeriod, "Gantt에 나타낼 전체 기간은 시작과 끝이 있어야합니다.");

            if (IsDebugEnabled)
            {
                log.Debug("Gantt의 기간 부분을 생성합니다. timePeriod=[{0}], periodFlags=[{1}]", timePeriod, periodFlags);
            }

            categoryCollectionList.Clear();

            if ((periodFlags & PeriodFlags.Year) > 0)
            {
                categoryCollectionList.Add(CreateCategories(timePeriod.ForEachYears(),
                                                            range => range.Start.Year.ToString()));
            }

            if ((periodFlags & PeriodFlags.HalfYear) > 0)
            {
                categoryCollectionList.Add(CreateCategories(timePeriod.ForEachYears(),
                                                            range => (range.End.HalfyearOf() == HalfyearKind.First) ? "1st" : "2nd"));
            }

            if ((periodFlags & PeriodFlags.Quarter) > 0)
            {
                categoryCollectionList.Add(CreateCategories(timePeriod.ForEachQuarters(),
                                                            range => "Q" + range.End.QuarterOf().GetHashCode().ToString()));
            }

            if ((periodFlags & PeriodFlags.Month) > 0)
            {
                categoryCollectionList.Add(CreateCategories(timePeriod.ForEachMonths(),
                                                            range => range.End.GetMonthName()));
            }

            if ((periodFlags & PeriodFlags.Week) > 0)
            {
                categoryCollectionList.Add(CreateCategories(timePeriod.ForEachWeeks(),
                                                            range => "W" + range.End.GetYearAndWeek().Week.Value.ToString()));
            }

            if ((periodFlags & PeriodFlags.Day) > 0)
            {
                categoryCollectionList.Add(CreateCategoriesAsParallel(timePeriod.ForEachDays(), range => range.End.Day.ToString()));
            }

            if ((periodFlags & PeriodFlags.Hour) > 0)
            {
                categoryCollectionList.Add(CreateCategoriesAsParallel(timePeriod.ForEachHours(),
                                                                      range => "H" + range.End.Hour.ToString()));
            }
        }
コード例 #3
0
ファイル: GanttUtil.cs プロジェクト: debop/NFramework
        /// <summary>
        /// 기간 단위에 따라 Category를 생성합니다.
        /// </summary>
        /// <param name="categoryCollectionList">생성된 <see cref="CategoriesElement"/> 정보가 담길 객체</param>
        /// <param name="timePeriod">Gantt에 표현할 전체 기간 (프로젝트 전체 기간)</param>
        /// <param name="periodFlags">Gantt Chart X축에 나타낼 기간 단위 정보</param>
        public static void GenerateCategories(IList<CategoriesElement> categoryCollectionList,
                                              ITimePeriod timePeriod,
                                              PeriodFlags periodFlags) {
            categoryCollectionList.ShouldNotBeNull("categoryCollectionList");
            timePeriod.ShouldNotBeNull("periodRange");
            Guard.Assert(timePeriod.HasPeriod, "Gantt에 나타낼 전체 기간은 시작과 끝이 있어야합니다.");

            if(IsDebugEnabled)
                log.Debug("Gantt의 기간 부분을 생성합니다. timePeriod=[{0}], periodFlags=[{1}]", timePeriod, periodFlags);

            categoryCollectionList.Clear();

            if((periodFlags & PeriodFlags.Year) > 0)
                categoryCollectionList.Add(CreateCategories(timePeriod.ForEachYears(),
                                                            range => range.Start.Year.ToString()));

            if((periodFlags & PeriodFlags.HalfYear) > 0)
                categoryCollectionList.Add(CreateCategories(timePeriod.ForEachYears(),
                                                            range => (range.End.HalfyearOf() == HalfyearKind.First) ? "1st" : "2nd"));

            if((periodFlags & PeriodFlags.Quarter) > 0)
                categoryCollectionList.Add(CreateCategories(timePeriod.ForEachQuarters(),
                                                            range => "Q" + range.End.QuarterOf().GetHashCode().ToString()));

            if((periodFlags & PeriodFlags.Month) > 0)
                categoryCollectionList.Add(CreateCategories(timePeriod.ForEachMonths(),
                                                            range => range.End.GetMonthName()));

            if((periodFlags & PeriodFlags.Week) > 0)
                categoryCollectionList.Add(CreateCategories(timePeriod.ForEachWeeks(),
                                                            range => "W" + range.End.GetYearAndWeek().Week.Value.ToString()));

            if((periodFlags & PeriodFlags.Day) > 0)
                categoryCollectionList.Add(CreateCategoriesAsParallel(timePeriod.ForEachDays(), range => range.End.Day.ToString()));

            if((periodFlags & PeriodFlags.Hour) > 0)
                categoryCollectionList.Add(CreateCategoriesAsParallel(timePeriod.ForEachHours(),
                                                                      range => "H" + range.End.Hour.ToString()));
        }
コード例 #4
0
        private static GanttChart CreateSampleChart(string caption)
        {
            var chart = new GanttChart
            {
                Caption    = caption,
                SubCaption = "소제목입니다.",
                Palette    = 2,
            };

            var categories = new CategoriesElement
            {
                FontAttr =
                {
                    Font        = "Tahoma",
                    FontColor   = Color.FromArgb(0, 0x03, 0x72, 0xAB),
                    FontSize    =    13.ToString(),
                    IsBold      = true,
                    IsItalic    = true,
                    IsUnderline = true
                },
                BgColor = Color.White,
                Align   = FusionTextAlign.Center,
                VAlign  = FusionVerticalAlign.Middle
            };


            foreach (var month in ProjectPeriod.ForEachMonths())
            {
                var category = new CategoryElement
                {
                    Start = month.Start,
                    End   = month.End,
                };
                category.ItemAttr.Label                = month.Start.Month.ToString();
                category.ItemAttr.FontAttr.Font        = "Tahoma";
                category.ItemAttr.FontAttr.FontColor   = Color.FromArgb(0, 0x03, 0x72, 0xAB);
                category.ItemAttr.FontAttr.FontSize    = 13.ToString();
                category.ItemAttr.FontAttr.IsBold      = true;
                category.ItemAttr.FontAttr.IsItalic    = true;
                category.ItemAttr.FontAttr.IsUnderline = true;
                category.ItemAttr.BgColor              = Color.White;
                category.ItemAttr.Align                = FusionTextAlign.Center;
                category.ItemAttr.VAlign               = FusionVerticalAlign.Middle;

                categories.Add(category);
            }

            chart.CategoriesList.Add(categories);

            chart.Processes.FontAttr.FontSize            = 12.ToString();
            chart.Processes.FontAttr.IsBold              = true;
            chart.Processes.Align                        = FusionTextAlign.Right;
            chart.Processes.HeaderText                   = "What to do?";
            chart.Processes.HeaderAttr.FontAttr.FontSize = 18.ToString();
            chart.Processes.HeaderAttr.Align             = FusionTextAlign.Right;
            chart.Processes.HeaderAttr.VAlign            = FusionVerticalAlign.Bottom;

            var procId = 0;

            foreach (string label in ProcessLabels)
            {
                var process = new ProcessElement("Process" + procId++.ToString())
                {
                    ItemAttr =
                    {
                        Label    = label,
                        FontAttr =
                        {
                            Font        = "Tahoma",
                            FontColor   = Color.FromArgb(0,             0x03, 0x72, 0xAB),
                            FontSize    =          13.ToString(),
                            IsBold      = true,
                            IsItalic    = true,
                            IsUnderline = true
                        },
                        BgColor = Color.White,
                        Align   = FusionTextAlign.Center,
                        VAlign  = FusionVerticalAlign.Middle
                    }
                };

                chart.Processes.Add(process);
            }

            procId = 0;
            var taskId = 0;

            foreach (var taskPeriod in TaskPeriods)
            {
                var task = new TaskElement
                {
                    Start           = taskPeriod.Start,
                    End             = taskPeriod.End,
                    Id              = "Task" + taskId++,
                    ProcessId       = "Process" + procId++,
                    Color           = Color.BlueViolet,
                    ShowLabel       = true,
                    Animation       = true,
                    BorderThickness = 1
                };

                // chart.Tasks.TaskElements.Add(task);
                chart.Tasks.Add(task);
            }

            return(chart);
        }