Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        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));
                    }
                }
            }
        }