public void Execute(object parameter) { var ctx = new IntervalsDBTypesLibrary.IntervalsDBModelContainer(); var list = ctx.Intervals.Where(i => i.Object == "МДТ 6" || i.Object == "МДТ 6.1").ToList(); var list2 = ctx.Intervals.Where(i => i.Object == "Сканер ТО1").ToList(); var list3 = ctx.Intervals.Where(i => i.Object == "УНСК.ТО1.МДТ 6" || i.Object == "УНСК.ТО1.МДТ 6.1").ToList(); var list4 = ctx.Intervals.Where(i => i.Object == "УНСК.ТО1.Сканер").ToList(); var list5 = ctx.Intervals.Where(i => i.Object == "МДТ 6.2").ToList(); var list6 = ctx.Intervals.Where(i => i.Object == "Сканер ТО2").ToList(); var list7 = ctx.Intervals.Where(i => i.Object == "УНСК.ТО2.МДТ 6.2").ToList(); var list8 = ctx.Intervals.Where(i => i.Object == "УНСК.ТО2.Сканер").ToList(); var dateTimeBegin = DateBegin; var dateTimeEnd = DateEnd; var diagrams = new SplittedGanttChartModel(dateTimeBegin, dateTimeEnd); if (TO1Diagramm) { diagrams.AddGraph("МДТ 6", list.Select(i => new IntervalDefectoscope() { Duration = i.Duration, Level = i.SpecialLevel, StartTime = i.StartTime, Speed = 211, EstimatedSpeed = 60 }).ToArray()); diagrams.AddGraph("Сканер ТО1", list2.Select(i => new Interval() { Duration = i.Duration, Level = i.SpecialLevel, StartTime = i.StartTime }).ToArray()); diagrams.AddGraph("УНСК.ТО1.МДТ 6", list3.Select(i => new Interval() { Duration = i.Duration, Level = i.SpecialLevel, StartTime = i.StartTime }).ToArray()); diagrams.AddGraph("УНСК.ТО1.Сканер", list4.Select(i => new Interval() { Duration = i.Duration, Level = i.SpecialLevel, StartTime = i.StartTime }).ToArray()); } else { diagrams.AddGraph("МДТ 6.2", list5.Select(i => new IntervalDefectoscope() { Duration = i.Duration, Level = i.SpecialLevel, StartTime = i.StartTime, Speed = 211, EstimatedSpeed = 60 }).ToArray()); diagrams.AddGraph("Сканер ТО2", list6.Select(i => new Interval() { Duration = i.Duration, Level = i.SpecialLevel, StartTime = i.StartTime }).ToArray()); diagrams.AddGraph("УНСК.ТО2.МДТ 6.2", list7.Select(i => new Interval() { Duration = i.Duration, Level = i.SpecialLevel, StartTime = i.StartTime }).ToArray()); diagrams.AddGraph("УНСК.ТО2.Сканер", list8.Select(i => new Interval() { Duration = i.Duration, Level = i.SpecialLevel, StartTime = i.StartTime }).ToArray()); } var diagramm = new GanttChartGenerator(diagrams).Draw(); MemoryStream ms = new MemoryStream(); diagramm.Save(ms, ImageFormat.Bmp); vM.Diagramm = ms; vM.Bitmap1 = diagramm; MemoryStream ms1 = new MemoryStream(); diagramm = new BarChartGenerator(diagrams).Draw(); diagramm.Save(ms1, ImageFormat.Bmp); vM.Diagramm2 = ms1; vM.Bitmap2 = diagramm; MemoryStream ms2 = new MemoryStream(); diagramm = new HistogramGenerator(diagrams).Draw(); diagramm.Save(ms2, ImageFormat.Bmp); vM.Diagramm3 = ms2; vM.Bitmap3 = diagramm; }
public GanttChartGenerator(SplittedGanttChartModel model) { _chart = new Chart(1000, 1000, 50); _chart.AddElement(new LeftBorder(_chart.InnerArea)); var axisX = new AxisX(_chart, 60); var chartAreaSplitted = new ChartAreaSplitted(_chart.InnerArea); var axisX_Marks = axisX.SplitAxis(12); var axisX_MarkCaptions = axisX_Marks.Select(m => new AxisXMarkCaption(m) { Text = m.X + " мин." }); _chart.AddElements(axisX_Marks); _chart.AddElements(axisX_MarkCaptions); _chart.AddElements(axisX_Marks.Where((e, c) => c % 2 == 0).Select(m => new AuxiliaryLine(_chart.InnerArea, axisX, m.X))); foreach (var chartString in model.ChartStrings) { var chartString1 = chartAreaSplitted.CreateString(chartAreaSplitted.Height / model.ChartStrings.Count); var gantChartArea = new TimeChartArea(chartString1); var captionY = new CaptionY(gantChartArea) { Caption = chartString.StartChartTime.Hour + " час." }; _chart.AddElement(new BottomBorder(chartString1)); _chart.AddElement(captionY); gantChartArea.GraphCount = model.Graphs.Count; gantChartArea.StartHour = chartString.StartChartTime.Hour; //todo тут нужно переделать foreach (var graph in chartString.Graphs) { foreach (var interval in graph.Intervals) { Color color = Color.Empty; switch (graph.Name) { case "МДТ 6": case "МДТ 6.1": case "МДТ 6.2": color = Color.Green; break; case "Сканер ТО1": case "Сканер ТО2": color = Color.Blue; break; case "УНСК.ТО1.МДТ 6": case "УНСК.ТО1.МДТ 6.1": case "УНСК.ТО2.МДТ 6.2": color = Color.LightGreen; break; case "УНСК.ТО1.Сканер": case "УНСК.ТО1.Сканер ТО1": case "УНСК.ТО2.Сканер": color = Color.LightBlue; break; default: break; } _chart.AddElement(new IntervalG(gantChartArea, color, chartString.GetStartCoord(interval), chartString.GetEndCoord(interval), graph.Num, interval.Level)); } } } }