public void XmlEncodingTest() { var chart = new GanttChart { Caption = "Gantt Chart 'Sample' 입니다.", SubCaption = "<< Sub \"LegendCaption\" & 특수문자 입니다 >>", DateFormat = CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern }; var categories = new CategoriesElement { new CategoryElement { Start = DateTime.Today.AddYears(-1), End = DateTime.Today.AddYears(1), } }; categories.BgColor = Color.WhiteSmoke; chart.CategoriesList.Add(categories); chart.ClickURL.Url = "http://localhost/Gantt.aspx"; chart.DefaultAnimation = false; Console.WriteLine("Gantt Chart with categories"); ValidateChartXml(chart); }
private static void FillCategories(CategoriesElement categories, double min, double max, double step) { for(var x = min; x <= max; x += step) { categories.Add(new CategoryElement { Label = x.ToString("#0.0") }); } }
private static void FillCategories(CategoriesElement categories, double min, double max, double step) { for (var x = min; x <= max; x += step) { categories.Add(new CategoryElement { Label = x.ToString("#0.0") }); } }
/// <summary> /// 지정한 기간의 컬렉션에 대해 라벨 발급 함수를 통해 새로운 <see cref="CategoryElement"/> 들을 생성하여, 컬렉션으로 반환한다. /// </summary> /// <param name="periods"></param> /// <param name="labelFunc"></param> /// <returns></returns> public static CategoriesElement CreateCategories(IEnumerable<ITimePeriod> periods, Func<ITimePeriod, string> labelFunc) { var categories = new CategoriesElement(); foreach(var period in periods) { var category = new CategoryElement { Start = period.Start, End = period.End }; if(labelFunc != null) category.ItemAttr.Label = labelFunc(period); categories.Add(category); } return categories; }
public void MultipleCategories() { var chart = CreateSampleChart("Multiple Categories Gantt Chart"); var quaterCategories = new CategoriesElement(); // 분기별 Category를 만든다. foreach(var quarterRange in ProjectPeriod.ForEachQuarters()) { var category = new CategoryElement { Start = quarterRange.Start, End = quarterRange.End, ItemAttr = { Label = quarterRange.Start.GetQuarter().ToString() } }; quaterCategories.Add(category); } chart.CategoriesList.Insert(0, quaterCategories); ValidateChartXml(chart); }
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; }
/// <summary> /// 지정한 기간의 컬렉션에 대해 라벨 발급 함수를 통해 새로운 <see cref="CategoryElement"/> 들을 생성하여, 컬렉션으로 반환한다. /// </summary> /// <param name="periods"></param> /// <param name="labelFunc"></param> /// <returns></returns> public static CategoriesElement CreateCategoriesAsParallel(IEnumerable<ITimePeriod> periods, Func<ITimePeriod, string> labelFunc) { var categories = new CategoriesElement(); periods .AsParallel() .AsOrdered() .Select(period => { var category = new CategoryElement { Start = period.Start, End = period.End }; if(labelFunc != null) category.ItemAttr.Label = labelFunc(period); return category; }) .RunEach(category => categories.Add(category)); return categories; }