예제 #1
0
        public override List <string> CreateMetric()
        {
            base.CreateMetric();
            var sr              = SignalsRepositoryFactory.Create();
            var signal          = sr.GetVersionOfSignalByDate(SignalID, StartDate);
            var speedApproaches = signal.GetApproachesForSignalThatSupportMetric(10);

            if (speedApproaches.Count > 0)
            {
                foreach (var approach in speedApproaches)
                {
                    var speedDets = approach.GetDetectorsForMetricType(10);
                    foreach (var det in speedDets)
                    {
                        var chart = GetNewSpeedChart(det);
                        AddSpeedDataToChart(chart, det, StartDate, EndDate, SelectedBinSize);
                        var chartName = CreateFileName();
                        chart.ImageLocation = MetricFileLocation + chartName;
                        chart.SaveImage(MetricFileLocation + chartName, ChartImageFormat.Jpeg);
                        ReturnList.Add(MetricWebPath + chartName);
                    }
                }
            }
            return(ReturnList);
        }
예제 #2
0
        /// <summary>
        /// Chunks an IEnumerable into multiple lists of a specified size
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="input"></param>
        /// <param name="chunkSize"></param>
        /// <returns></returns>
        private static IEnumerable <List <T> > ChunkList <T>(IEnumerable <T> input, int chunkSize)
        {
            if (chunkSize <= 0)
            {
                throw new ArgumentOutOfRangeException("chunkSize", "The chunk size must be greater than 0.");
            }

            if (input == null)
            {
                throw new ArgumentNullException("input");
            }

            if (input.Any())
            {
                IEnumerator <T> Enumerator = input.GetEnumerator();
                List <T>        ReturnList = new List <T>(chunkSize);
                int             Counter    = 1;

                while (Enumerator.MoveNext())
                {
                    if (Counter >= chunkSize)
                    {
                        yield return(ReturnList);

                        ReturnList = new List <T>();
                        Counter    = 1;
                    }

                    ReturnList.Add(Enumerator.Current);
                    Counter++;
                }

                yield return(ReturnList);
            }
        }
예제 #3
0
        public override List <string> CreateMetric()
        {
            base.CreateMetric();
            var signalRepository = SignalsRepositoryFactory.Create();

            Signal       = signalRepository.GetVersionOfSignalByDate(SignalID, StartDate);
            MetricTypeID = 6;
            var chart            = new Chart();
            var metricApproaches = Signal.GetApproachesForSignalThatSupportMetric(MetricTypeID);

            if (metricApproaches.Count > 0)
            {
                foreach (var approach in metricApproaches)
                {
                    var signalPhase = new SignalPhase(StartDate, EndDate, approach, ShowVolumes, SelectedBinSize,
                                                      MetricTypeID, false);
                    chart = GetNewChart();
                    AddDataToChart(chart, signalPhase);
                    var chartName = CreateFileName();
                    chart.ImageLocation = MetricFileLocation + chartName;
                    chart.SaveImage(MetricFileLocation + chartName, ChartImageFormat.Jpeg);
                    ReturnList.Add(MetricWebPath + chartName);
                }
            }

            return(ReturnList);
        }
예제 #4
0
        private void CreateLegend()
        {
            var dummychart = new Chart();
            var chartarea1 = new ChartArea();

            ChartFactory.SetImageProperties(dummychart);
            dummychart.BorderlineDashStyle = ChartDashStyle.Dot;

            var PedActivity    = new Series();
            var GapoutSeries   = new Series();
            var MaxOutSeries   = new Series();
            var ForceOffSeries = new Series();
            var UnknownSeries  = new Series();

            PedActivity.Name    = "Ped Activity";
            GapoutSeries.Name   = "Gap Out";
            MaxOutSeries.Name   = "Max Out";
            ForceOffSeries.Name = "Force Off";
            UnknownSeries.Name  = "Unknown";


            PedActivity.MarkerStyle    = MarkerStyle.Cross;
            GapoutSeries.MarkerStyle   = MarkerStyle.Circle;
            MaxOutSeries.MarkerStyle   = MarkerStyle.Circle;
            ForceOffSeries.MarkerStyle = MarkerStyle.Circle;
            UnknownSeries.MarkerStyle  = MarkerStyle.Circle;

            GapoutSeries.Color   = Color.OliveDrab;
            PedActivity.Color    = Color.DarkGoldenrod;
            MaxOutSeries.Color   = Color.Red;
            ForceOffSeries.Color = Color.MediumBlue;
            UnknownSeries.Color  = Color.FromArgb(255, 255, 0);


            dummychart.Series.Add(GapoutSeries);
            dummychart.Series.Add(MaxOutSeries);
            dummychart.Series.Add(ForceOffSeries);
            dummychart.Series.Add(UnknownSeries);
            dummychart.Series.Add(PedActivity);


            dummychart.ChartAreas.Add(chartarea1);

            var dummychartLegend = new Legend();

            dummychartLegend.Name = "DummyLegend";

            dummychartLegend.IsDockedInsideChartArea = true;

            dummychartLegend.Title     = "Chart Legend";
            dummychartLegend.Docking   = Docking.Top;
            dummychartLegend.Alignment = StringAlignment.Center;
            dummychart.Legends.Add(dummychartLegend);

            dummychart.Height = 100;
            dummychart.SaveImage(MetricFileLocation + "PPTLegend.jpeg", ChartImageFormat.Jpeg);

            ReturnList.Add(MetricWebPath + "PPTLegend.jpeg");
        }
예제 #5
0
파일: PCDOptions.cs 프로젝트: zfx1982/ATSPM
        public override List <string> CreateMetric()
        {
            base.CreateMetric();
            MOE.Common.Models.Repositories.ISignalsRepository signalRepository =
                MOE.Common.Models.Repositories.SignalsRepositoryFactory.Create();
            Signal            = signalRepository.GetSignalBySignalID(SignalID);
            this.MetricTypeID = 6;

            Chart  chart    = new Chart();
            string location = GetSignalLocation();

            //SignalPhaseCollection signalphasecollection = new SignalPhaseCollection(
            //    StartDate,
            //    EndDate,
            //    SignalID,
            //    ShowVolumes,
            //    SelectedBinSize,
            //    MetricTypeID);

            //If there are phases in the database add the charts
            //if (signalphasecollection.SignalPhaseList.Count > 0)
            //{
            //    foreach (MOE.Common.Business.SignalPhase signalPhase in signalphasecollection.SignalPhaseList)
            //    {
            //        if (signalPhase.Plans.PlanList.Count > 0)
            //        {
            //            chart = GetNewChart(signalPhase.Approach);
            //            AddDataToChart(chart, signalPhase);
            //            string chartName = CreateFileName();
            //            chart.ImageLocation = MetricFileLocation + chartName;
            //            chart.SaveImage(MetricFileLocation + chartName, System.Web.UI.DataVisualization.Charting.ChartImageFormat.Jpeg);
            //            ReturnList.Add(MetricWebPath + chartName);
            //    }

            //}
            List <Approach> metricApproaches = Signal.GetApproachesForSignalThatSupportMetric(this.MetricTypeID);

            if (metricApproaches.Count > 0)
            {
                foreach (Approach approach in metricApproaches)
                {
                    MOE.Common.Business.SignalPhase signalPhase = new SignalPhase(StartDate, EndDate, approach,
                                                                                  ShowVolumes, SelectedBinSize, MetricTypeID);

                    chart = GetNewChart(approach);
                    AddDataToChart(chart, signalPhase);
                    string chartName = CreateFileName();
                    chart.ImageLocation = MetricFileLocation + chartName;
                    chart.SaveImage(MetricFileLocation + chartName, System.Web.UI.DataVisualization.Charting.ChartImageFormat.Jpeg);
                    ReturnList.Add(MetricWebPath + chartName);
                }
            }



            return(ReturnList);
        }
예제 #6
0
        private void CreateLegend()
        {
            var dummyChart = new Chart();
            var chartArea  = new ChartArea();

            ChartFactory.SetImageProperties(dummyChart);
            dummyChart.BorderlineDashStyle = ChartDashStyle.Dot;

            var shortGapSeries = CreateChartSeries(Color.Red, SeriesChartType.StackedColumn, ChartValueType.DateTime,
                                                   AxisType.Primary, $"{Gap1Min} - {Gap1Max} seconds");
            var mediumGapSeries = CreateChartSeries(Color.LawnGreen, SeriesChartType.StackedColumn,
                                                    ChartValueType.DateTime, AxisType.Primary, $"{Gap2Min} - {Gap2Max} seconds");
            var largeGapSeries = CreateChartSeries(Color.Green, SeriesChartType.StackedColumn, ChartValueType.DateTime,
                                                   AxisType.Primary, $"{Gap3Min} - {Gap3Max} seconds");
            var hugeGapSeries = CreateChartSeries(Color.LightSeaGreen, SeriesChartType.StackedColumn,
                                                  ChartValueType.DateTime, AxisType.Primary, $"{Gap4Min}+ seconds");
            var percentTurnableSeries = CreateChartSeries(Color.Blue, SeriesChartType.Line, ChartValueType.DateTime,
                                                          AxisType.Secondary, $"% Green Time > {TrendLineGapThreshold} seconds");

            //Reverse order for the legend
            dummyChart.Series.Add(percentTurnableSeries);
            dummyChart.Series.Add(hugeGapSeries);
            dummyChart.Series.Add(largeGapSeries);
            dummyChart.Series.Add(mediumGapSeries);
            dummyChart.Series.Add(shortGapSeries);

            dummyChart.ChartAreas.Add(chartArea);

            var dummyChartLegend = new Legend
            {
                Name = "DummyLegend",
                IsDockedInsideChartArea = true,
                Title     = "Chart Legend",
                Docking   = Docking.Top,
                Alignment = StringAlignment.Center
            };

            dummyChart.Legends.Add(dummyChartLegend);

            //Randomize the legend name to prevent caching if options change
            var chartName = "LTGALegend-";
            var r         = new Random();

            chartName += r.Next().ToString();
            chartName += ".jpeg";

            dummyChart.Height = 100;
            dummyChart.SaveImage(MetricFileLocation + chartName, ChartImageFormat.Jpeg);

            ReturnList.Add(MetricWebPath + chartName);
        }
예제 #7
0
        private void CreateChart(Approach approach, ControllerEventLogs eventLogs, Signal signal)
        {
            var phaseEvents = new List <Controller_Event_Log>();

            phaseEvents.AddRange(eventLogs.Events.Where(x =>
                                                        x.EventParam == approach.ProtectedPhaseNumber &&
                                                        (x.EventCode == EVENT_GREEN || x.EventCode == EVENT_RED)));

            var detectorsToUse   = new List <Models.Detector>();
            var detectionTypeStr = "Lane-By-Lane Count";

            //Use only lane-by-lane count detectors if they exists, otherwise check for stop bar
            detectorsToUse = approach.GetAllDetectorsOfDetectionType(4);

            if (!detectorsToUse.Any())
            {
                detectorsToUse   = approach.GetAllDetectorsOfDetectionType(6);
                detectionTypeStr = "Stop Bar Presence";

                //If no detectors of either type for this approach, skip it
                if (!detectorsToUse.Any())
                {
                    return;
                }
            }

            foreach (var detector in detectorsToUse)
            {
                // Check for thru, right, thru-right, and thru-left
                if (!IsThruDetector(detector))
                {
                    continue;
                }

                phaseEvents.AddRange(eventLogs.Events.Where(x =>
                                                            x.EventCode == EVENT_DET && x.EventParam == detector.DetChannel));
            }

            if (phaseEvents.Any())
            {
                var leftTurnChart = new LeftTurnGapAnalysisChart(this, signal, approach, phaseEvents,
                                                                 GetOpposingPhase(approach.ProtectedPhaseNumber), StartDate, EndDate, detectionTypeStr);
                var chart     = leftTurnChart.Chart;
                var chartName = CreateFileName();
                chart.SaveImage(MetricFileLocation + chartName);
                ReturnList.Add(MetricWebPath + chartName);
            }
        }
예제 #8
0
        protected void SaveChartImage(Chart chart)
        {
            if (ResultChartAndXmlLocations == null)
            {
                ResultChartAndXmlLocations = new List <Tuple <string, string> >();
            }

            XmlDocument xmlDocument  = GetXmlForChart(chart);
            string      xmlChartName = CreateFileName(MetricType.Abbreviation, ".xml");

            xmlDocument.Save(MetricFileLocation + xmlChartName);
            var chartName = CreateFileName(MetricType.Abbreviation, ".jpg");

            chart.SaveImage(MetricFileLocation + chartName, ChartImageFormat.Jpeg);
            ResultChartAndXmlLocations.Add(new Tuple <string, string>(MetricWebPath + chartName, MetricWebPath + xmlChartName));
            ReturnList.Add(MetricWebPath + chartName);
        }
예제 #9
0
        private void GetChartLegend()
        {
            if (ReturnList == null)
            {
                ReturnList = new List <string>();
            }
            var taaLegendChart = new TimingAndActuationsChartForPhase(true);

            if (taaLegendChart.Chart != null)
            {
                taaLegendChart.Chart.BackColor = Color.Goldenrod;
                var chartName = CreateFileName();
                taaLegendChart.Chart.ImageLocation = MetricFileLocation + chartName;
                taaLegendChart.Chart.SaveImage(MetricFileLocation + chartName, ChartImageFormat.Jpeg);
                ReturnList.Add(MetricWebPath + chartName);
            }
        }
예제 #10
0
        private void GetGlobalChart(GlobalGetDataTimingAndActuations globalGetDataTimingAndActuations,
                                    TimingAndActuationsOptions options)
        {
            if (ReturnList == null)
            {
                ReturnList = new List <string>();
            }
            var taaGlobalChart =
                new ChartForGlobalEventsTimingAndActuations(globalGetDataTimingAndActuations, options)
            {
                Chart = { BackColor = Color.LightSkyBlue }
            };
            var chartName = CreateFileName();

            taaGlobalChart.Chart.ImageLocation = MetricFileLocation + chartName;
            taaGlobalChart.Chart.SaveImage(MetricFileLocation + chartName, ChartImageFormat.Jpeg);
            ReturnList.Add(MetricWebPath + chartName);
        }
예제 #11
0
        public override List <string> CreateMetric()
        {
            base.CreateMetric();
            var pds = new PedDelaySignal(SignalID, StartDate, EndDate);

            foreach (var p in pds.PedPhases)
            {
                if (p.Cycles.Count > 0)
                {
                    var pdc       = new PEDDelayChart(this, p);
                    var chart     = pdc.chart;
                    var chartName = CreateFileName();
                    chart.SaveImage(MetricFileLocation + chartName);
                    ReturnList.Add(MetricWebPath + chartName);
                }
            }
            return(ReturnList);
        }
예제 #12
0
        public override List <string> CreateMetric()
        {
            base.CreateMetric();
            string location = GetSignalLocation();
            Chart  chart    = new Chart();


            MOE.Common.Business.AnalysisPhaseCollection analysisPhaseCollection =
                new MOE.Common.Business.AnalysisPhaseCollection(SignalID, StartDate,
                                                                EndDate, SelectedConsecutiveCount);

            //If there are phases in the collection add the charts
            if (analysisPhaseCollection.Items.Count > 0)
            {
                chart = GetNewTermEventChart(StartDate, EndDate, SignalID, location,
                                             SelectedConsecutiveCount, analysisPhaseCollection.MaxPhaseInUse, ShowPedActivity);

                AddTermEventDataToChart(chart, StartDate, EndDate, analysisPhaseCollection, SignalID,
                                        ShowPedActivity, ShowPlanStripes);
            }

            string       chartName   = CreateFileName();
            List <Title> removethese = new List <Title>();

            foreach (Title t in chart.Titles)
            {
                if (t.Text == "" || t.Text == null)
                {
                    removethese.Add(t);
                }
            }
            foreach (Title t in removethese)
            {
                chart.Titles.Remove(t);
            }

            //Save an image of the chart
            chart.SaveImage(MetricFileLocation + chartName, System.Web.UI.DataVisualization.Charting.ChartImageFormat.Jpeg);

            ReturnList.Add(MetricWebPath + chartName);

            return(ReturnList);
        }
예제 #13
0
        public override List <string> CreateMetric()
        {
            base.CreateMetric();
            var location = GetSignalLocation();
            var chart    = ChartFactory.CreateDefaultChartNoX2Axis(this);

            CreateLegend();
            var analysisPhaseCollection =
                new AnalysisPhaseCollection(SignalID, StartDate,
                                            EndDate, SelectedConsecutiveCount);

            //If there are phases in the collection add the charts
            if (analysisPhaseCollection.Items.Count > 0)
            {
                chart = GetNewTermEventChart(StartDate, EndDate, SignalID, location,
                                             SelectedConsecutiveCount, analysisPhaseCollection.MaxPhaseInUse, ShowPedActivity);

                AddTermEventDataToChart(chart, StartDate, EndDate, analysisPhaseCollection, SignalID,
                                        ShowPedActivity, ShowPlanStripes);
            }

            var chartName   = CreateFileName();
            var removethese = new List <Title>();

            foreach (var t in chart.Titles)
            {
                if (t.Text == "" || t.Text == null)
                {
                    removethese.Add(t);
                }
            }
            foreach (var t in removethese)
            {
                chart.Titles.Remove(t);
            }

            //Save an image of the chart
            chart.SaveImage(MetricFileLocation + chartName, ChartImageFormat.Jpeg);

            ReturnList.Add(MetricWebPath + chartName);

            return(ReturnList);
        }
예제 #14
0
 public override List <string> CreateMetric()
 {
     base.CreateMetric();
     MOE.Common.Business.PEDDelay.PedDelaySignal pds = new MOE.Common.Business.PEDDelay.PedDelaySignal(SignalID,
                                                                                                       StartDate, EndDate);
     foreach (MOE.Common.Business.PEDDelay.PedPhase p in pds.PedPhases)
     {
         if (p.Cycles.Count > 0)
         {
             MOE.Common.Business.PEDDelay.PEDDelayChart pdc =
                 new MOE.Common.Business.PEDDelay.PEDDelayChart(this, p);
             Chart  chart     = pdc.chart;
             string chartName = CreateFileName();
             chart.SaveImage(MetricFileLocation + chartName);
             ReturnList.Add(MetricWebPath + chartName);
         }
     }
     return(ReturnList);
 }
예제 #15
0
        private void GetChart(TimingAndActuationsForPhase timingAndActutionsForPhase)
        {
            if (ReturnList == null)
            {
                ReturnList = new List <string>();
            }
            var taaChart = new TimingAndActuationsChartForPhase(timingAndActutionsForPhase);

            if (taaChart.Chart != null)
            {
                if (timingAndActutionsForPhase.GetPermissivePhase)
                {
                    taaChart.Chart.BackColor = Color.LightGray;
                }
                var chartName = CreateFileName();
                taaChart.Chart.ImageLocation = MetricFileLocation + chartName;
                taaChart.Chart.SaveImage(MetricFileLocation + chartName, ChartImageFormat.Jpeg);
                ReturnList.Add(MetricWebPath + chartName);
            }
        }
예제 #16
0
        public override List <string> CreateMetric()
        {
            base.CreateMetric();
            string location = GetSignalLocation();

            MOE.Common.Business.SignalPhaseCollection signalphasecollection =
                new MOE.Common.Business.SignalPhaseCollection(StartDate,
                                                              EndDate, SignalID,
                                                              ShowPlanStatistics, SelectedBinSize, 8);



            foreach (MOE.Common.Business.SignalPhase signalPhase in signalphasecollection.SignalPhaseList)
            {
                MOE.Common.Business.DelayChart delayChart = new MOE.Common.Business.DelayChart(this, signalPhase);

                Chart chart = delayChart.chart;

                string chartName = CreateFileName();

                var removethese = new List <Title>();

                foreach (Title t in chart.Titles)
                {
                    if (t.Text == "" || t.Text == null)
                    {
                        removethese.Add(t);
                    }
                }
                foreach (Title t in removethese)
                {
                    chart.Titles.Remove(t);
                }

                //Save an image of the chart
                chart.SaveImage(MetricFileLocation + chartName, System.Web.UI.DataVisualization.Charting.ChartImageFormat.Jpeg);

                ReturnList.Add(MetricWebPath + chartName);
            }
            return(ReturnList);
        }
예제 #17
0
        private void PopulateReturnList()
        {
            if (ItemsToReturn > 0)
            {
                List <string> temp = OrderDataBase.GetBorrowingData(CustomerID);

                foreach (string p in temp)
                {
                    string[] tempstring = p.Split(',');
                    ReturnList.Add(new LoanItem(Convert.ToInt32(tempstring[0]), Convert.ToInt32(tempstring[1])));
                }

                foreach (LoanItem p in ReturnList)
                {
                    string   m     = OrderDataBase.GetItemName(p.ID);
                    string[] tempm = m.Split('-');
                    p.UpdateName(tempm[0]);
                    p.UpdatePenalty(Convert.ToDouble(tempm[1]));
                }
            }
        }
예제 #18
0
        public override List <string> CreateMetric()
        {
            base.CreateMetric();
            var location = GetSignalLocation();

            var signalphasecollection =
                new SignalPhaseCollection(StartDate,
                                          EndDate, SignalID,
                                          ShowPlanStatistics, SelectedBinSize, 8);


            foreach (var signalPhase in signalphasecollection.SignalPhaseList)
            {
                var delayChart = new DelayChart(this, signalPhase);

                var chart = delayChart.chart;

                var chartName = CreateFileName();

                var removethese = new List <Title>();

                foreach (var t in chart.Titles)
                {
                    if (t.Text == "" || t.Text == null)
                    {
                        removethese.Add(t);
                    }
                }
                foreach (var t in removethese)
                {
                    chart.Titles.Remove(t);
                }

                //Save an image of the chart
                chart.SaveImage(MetricFileLocation + chartName, ChartImageFormat.Jpeg);

                ReturnList.Add(MetricWebPath + chartName);
            }
            return(ReturnList);
        }
예제 #19
0
        public override List <string> CreateMetric()
        {
            base.CreateMetric();
            var signalRepository = Models.Repositories.SignalsRepositoryFactory.Create();

            Models.Signal signal = signalRepository.GetVersionOfSignalByDate(SignalID, StartDate);

            var pds = new PedDelaySignal(signal, StartDate, EndDate);

            foreach (var p in pds.PedPhases)
            {
                if (p.Cycles.Count > 0)
                {
                    var pdc       = new PEDDelayChart(this, p);
                    var chart     = pdc.Chart;
                    var chartName = CreateFileName();
                    chart.SaveImage(MetricFileLocation + chartName);
                    ReturnList.Add(MetricWebPath + chartName);
                }
            }
            return(ReturnList);
        }
예제 #20
0
        public List <int> BridgeJumper(List <BridgeElement> ElementList, int Match)
        {
            List <List <int> > ReturnLists = new List <List <int> >();
            List <int>         ReturnList  = new List <int>();
            int NextMatch;

            if (Left == Match)
            {
                NextMatch = Right;
            }
            else
            {
                NextMatch = Left;
            }
            foreach (BridgeElement b in ElementList)
            {
                if (b.Contains(NextMatch))
                {
                    List <BridgeElement> TempList = new List <BridgeElement>(ElementList);
                    TempList.Remove(b);
                    ReturnLists.Add(b.BridgeJumper(TempList, NextMatch));
                }
            }
            foreach (List <int> l in ReturnLists)
            {
                if (l.Count > ReturnList.Count)
                {
                    ReturnList = new List <int>(l);
                }
                else if (l.Count == ReturnList.Count && l.Sum() > ReturnList.Sum())
                {
                    ReturnList = new List <int>(l);
                }
            }
            ReturnList.Add(Left);
            ReturnList.Add(Right);
            return(ReturnList);
        }
예제 #21
0
        public override List <string> CreateMetric()
        {
            base.CreateMetric();
            string location = GetSignalLocation();

            MOE.Common.Models.Repositories.ISignalsRepository sr = MOE.Common.Models.Repositories.SignalsRepositoryFactory.Create();
            Models.Signal signal = sr.GetSignalBySignalID(SignalID);

            List <Approach> SpeedApproaches = signal.GetApproachesForSignalThatSupportMetric(10);

            //If there are phases in the database add the charts
            if (SpeedApproaches.Count > 0)
            {
                foreach (Approach approach in SpeedApproaches)
                {
                    List <Models.Detector> speedDets = approach.GetDetectorsForMetricType(10);

                    foreach (Models.Detector det in speedDets)
                    {
                        //Display the PDC chart
                        Chart chart = GetNewSpeedChart(location, det);

                        AddSpeedDataToChart(chart, det, StartDate, EndDate, SelectedBinSize);

                        string chartName = CreateFileName();

                        //Save an image of the chart
                        chart.ImageLocation = MetricFileLocation + chartName;
                        chart.SaveImage(MetricFileLocation + chartName, System.Web.UI.DataVisualization.Charting.ChartImageFormat.Jpeg);

                        ReturnList.Add(MetricWebPath + chartName);
                    }
                }
            }
            return(ReturnList);
        }
예제 #22
0
        public override List <string> CreateMetric()
        {
            base.CreateMetric();
            MOE.Common.Business.AnalysisPhaseCollection analysisPhaseCollection =
                new MOE.Common.Business.AnalysisPhaseCollection(SignalID, StartDate,
                                                                EndDate);
            //If there are phases in the collection add the charts
            if (analysisPhaseCollection.Items.Count > 0)
            {
                foreach (MOE.Common.Business.Plan plan in analysisPhaseCollection.Plans.PlanList)
                {
                    plan.SetProgrammedSplits(SignalID);
                    plan.SetHighCycleCount(analysisPhaseCollection);
                }

                //If there are phases in the collection add the charts


                //dummy chart to create a legend for the entire split monitor page.
                Chart     dummychart = new Chart();
                ChartArea chartarea1 = new ChartArea();
                dummychart.ImageType = ChartImageType.Jpeg;
                dummychart.Height    = 200;
                dummychart.Width     = 800;

                //add comments to the chart
                dummychart.ImageStorageMode    = ImageStorageMode.UseImageLocation;
                dummychart.BorderlineDashStyle = ChartDashStyle.Dot;

                Series PedActivity    = new Series();
                Series GapoutSeries   = new Series();
                Series MaxOutSeries   = new Series();
                Series ForceOffSeries = new Series();
                Series ProgramedSplit = new Series();
                Series UnknownSeries  = new Series();

                PedActivity.Name    = "Ped Activity";
                GapoutSeries.Name   = "Gap Out";
                MaxOutSeries.Name   = "Max Out";
                ForceOffSeries.Name = "Force Off";
                ProgramedSplit.Name = "Programmed Split";
                UnknownSeries.Name  = "Unknown Termination Cause";


                PedActivity.MarkerStyle        = MarkerStyle.Cross;
                GapoutSeries.MarkerStyle       = MarkerStyle.Circle;
                MaxOutSeries.MarkerStyle       = MarkerStyle.Circle;
                ForceOffSeries.MarkerStyle     = MarkerStyle.Circle;
                ProgramedSplit.BorderDashStyle = ChartDashStyle.Solid;
                UnknownSeries.MarkerStyle      = MarkerStyle.Circle;

                GapoutSeries.Color   = Color.OliveDrab;
                PedActivity.Color    = Color.DarkGoldenrod;
                MaxOutSeries.Color   = Color.Red;
                ForceOffSeries.Color = Color.MediumBlue;
                ProgramedSplit.Color = Color.OrangeRed;
                UnknownSeries.Color  = Color.Black;

                dummychart.Series.Add(ProgramedSplit);
                dummychart.Series.Add(GapoutSeries);
                dummychart.Series.Add(MaxOutSeries);
                dummychart.Series.Add(ForceOffSeries);
                dummychart.Series.Add(UnknownSeries);
                dummychart.Series.Add(PedActivity);

                dummychart.ChartAreas.Add(chartarea1);

                Legend dummychartLegend = new Legend();
                dummychartLegend.Name = "DummyLegend";

                dummychartLegend.IsDockedInsideChartArea = true;

                dummychartLegend.Title     = "Chart Legend";
                dummychartLegend.Docking   = Docking.Bottom;
                dummychartLegend.Alignment = StringAlignment.Center;
                dummychart.Legends.Add(dummychartLegend);
                List <Title> removethese = new List <Title>();

                foreach (Title t in dummychart.Titles)
                {
                    if (t.Text == "" || t.Text == null)
                    {
                        removethese.Add(t);
                    }
                }
                foreach (Title t in removethese)
                {
                    dummychart.Titles.Remove(t);
                }


                string dummyChartFileName = CreateFileName();
                dummychart.SaveImage(MetricFileLocation + dummyChartFileName);
                ReturnList.Add(MetricWebPath + dummyChartFileName);

                if (analysisPhaseCollection.Items.Count > 0)
                {
                    var phasesInOrder = (from r in analysisPhaseCollection.Items
                                         select r).OrderBy(r => r.PhaseNumber);
                    foreach (MOE.Common.Business.AnalysisPhase Phase in phasesInOrder)
                    {
                        Chart chart = GetNewSplitMonitorChart(StartDate, EndDate, SignalID, GetSignalLocation(), Phase.PhaseNumber);
                        AddSplitMonitorDataToChart(chart, StartDate, EndDate, Phase, SignalID, analysisPhaseCollection.Plans);
                        if (ShowPlanStripes)
                        {
                            SetSimplePlanStrips(analysisPhaseCollection.Plans, chart, StartDate);
                            SetSplitMonitorStatistics(analysisPhaseCollection.Plans, Phase, chart);
                        }
                        string chartFileName = CreateFileName();
                        removethese = new List <Title>();

                        foreach (Title t in chart.Titles)
                        {
                            if (t.Text == "" || t.Text == null)
                            {
                                removethese.Add(t);
                            }
                        }
                        foreach (Title t in removethese)
                        {
                            chart.Titles.Remove(t);
                        }
                        chart.SaveImage(MetricFileLocation + chartFileName);
                        ReturnList.Add(MetricWebPath + chartFileName);
                    }
                }
            }
            return(ReturnList);
        }
예제 #23
0
        private void CreateLegend()
        {
            Chart     dummychart = new Chart();
            ChartArea chartarea1 = new ChartArea();

            dummychart.ImageType = ChartImageType.Jpeg;
            dummychart.Height    = 200;

            dummychart.Width = 1100;

            dummychart.ImageStorageMode    = ImageStorageMode.UseImageLocation;
            dummychart.BorderlineDashStyle = ChartDashStyle.Dot;

            Series PedActivity    = new Series();
            Series GapoutSeries   = new Series();
            Series MaxOutSeries   = new Series();
            Series ForceOffSeries = new Series();
            Series UnknownSeries  = new Series();

            PedActivity.Name    = "Ped Activity";
            GapoutSeries.Name   = "Gap Out";
            MaxOutSeries.Name   = "Max Out";
            ForceOffSeries.Name = "Force Off";
            UnknownSeries.Name  = "Unknown";


            PedActivity.MarkerStyle    = MarkerStyle.Cross;
            GapoutSeries.MarkerStyle   = MarkerStyle.Circle;
            MaxOutSeries.MarkerStyle   = MarkerStyle.Circle;
            ForceOffSeries.MarkerStyle = MarkerStyle.Circle;
            UnknownSeries.MarkerStyle  = MarkerStyle.Circle;

            GapoutSeries.Color   = Color.OliveDrab;
            PedActivity.Color    = Color.DarkGoldenrod;
            MaxOutSeries.Color   = Color.Red;
            ForceOffSeries.Color = Color.MediumBlue;
            UnknownSeries.Color  = Color.FromArgb(255, 255, 0);


            dummychart.Series.Add(GapoutSeries);
            dummychart.Series.Add(MaxOutSeries);
            dummychart.Series.Add(ForceOffSeries);
            dummychart.Series.Add(UnknownSeries);
            dummychart.Series.Add(PedActivity);


            dummychart.ChartAreas.Add(chartarea1);

            Legend dummychartLegend = new Legend();

            dummychartLegend.Name = "DummyLegend";

            dummychartLegend.IsDockedInsideChartArea = true;

            dummychartLegend.Title     = "Chart Legend";
            dummychartLegend.Docking   = Docking.Top;
            dummychartLegend.Alignment = StringAlignment.Center;
            dummychart.Legends.Add(dummychartLegend);



            dummychart.SaveImage(MetricFileLocation + "PPTLegend.jpeg", System.Web.UI.DataVisualization.Charting.ChartImageFormat.Jpeg);

            ReturnList.Add(MetricWebPath + "PPTLegend.jpeg");
        }
예제 #24
0
        public override List <string> CreateMetric()
        {
            base.CreateMetric();
            var analysisPhaseCollection = new AnalysisPhaseCollection(SignalID, StartDate, EndDate);

            //If there are phases in the collection add the charts
            if (analysisPhaseCollection.Items.Count > 0)
            {
                foreach (var plan in analysisPhaseCollection.Plans)
                {
                    plan.SetProgrammedSplits(SignalID);
                    plan.SetHighCycleCount(analysisPhaseCollection);
                }

                //If there are phases in the collection add the charts


                //dummy chart to create a legend for the entire split monitor page.
                var dummychart = new Chart();
                var chartarea1 = new ChartArea();
                ChartFactory.SetImageProperties(dummychart);
                dummychart.BorderlineDashStyle = ChartDashStyle.Dot;

                dummychart.Height = 100;

                var PedActivity    = new Series();
                var GapoutSeries   = new Series();
                var MaxOutSeries   = new Series();
                var ForceOffSeries = new Series();
                var ProgramedSplit = new Series();
                var UnknownSeries  = new Series();

                PedActivity.Name    = "Ped Activity";
                GapoutSeries.Name   = "Gap Out";
                MaxOutSeries.Name   = "Max Out";
                ForceOffSeries.Name = "Force Off";
                ProgramedSplit.Name = "Programmed Split";
                UnknownSeries.Name  = "Unknown Termination Cause";


                PedActivity.MarkerStyle        = MarkerStyle.Cross;
                GapoutSeries.MarkerStyle       = MarkerStyle.Circle;
                MaxOutSeries.MarkerStyle       = MarkerStyle.Circle;
                ForceOffSeries.MarkerStyle     = MarkerStyle.Circle;
                ProgramedSplit.BorderDashStyle = ChartDashStyle.Solid;
                UnknownSeries.MarkerStyle      = MarkerStyle.Circle;

                GapoutSeries.Color   = Color.OliveDrab;
                PedActivity.Color    = Color.DarkGoldenrod;
                MaxOutSeries.Color   = Color.Red;
                ForceOffSeries.Color = Color.MediumBlue;
                ProgramedSplit.Color = Color.OrangeRed;
                UnknownSeries.Color  = Color.Black;

                dummychart.Series.Add(ProgramedSplit);
                dummychart.Series.Add(GapoutSeries);
                dummychart.Series.Add(MaxOutSeries);
                dummychart.Series.Add(ForceOffSeries);
                dummychart.Series.Add(UnknownSeries);
                dummychart.Series.Add(PedActivity);

                dummychart.ChartAreas.Add(chartarea1);

                var dummychartLegend = new Legend();
                dummychartLegend.Name = "DummyLegend";

                dummychartLegend.IsDockedInsideChartArea = true;

                dummychartLegend.Title     = "Chart Legend";
                dummychartLegend.Docking   = Docking.Bottom;
                dummychartLegend.Alignment = StringAlignment.Center;
                dummychart.Legends.Add(dummychartLegend);
                var removethese = new List <Title>();

                foreach (var t in dummychart.Titles)
                {
                    if (string.IsNullOrEmpty(t.Text))
                    {
                        removethese.Add(t);
                    }
                }
                foreach (var t in removethese)
                {
                    dummychart.Titles.Remove(t);
                }


                var dummyChartFileName = CreateFileName();
                dummychart.SaveImage(MetricFileLocation + dummyChartFileName);
                ReturnList.Add(MetricWebPath + dummyChartFileName);

                if (analysisPhaseCollection.Items.Count > 0)
                {
                    var phasesInOrder = (analysisPhaseCollection.Items.Select(r => r)).OrderBy(r => r.PhaseNumber);
                    foreach (var phase in phasesInOrder)
                    {
                        var chart = GetNewSplitMonitorChart(StartDate, EndDate,
                                                            phase.PhaseNumber);
                        AddSplitMonitorDataToChart(chart, phase, analysisPhaseCollection.Plans);
                        if (ShowPlanStripes)
                        {
                            SetSimplePlanStrips(analysisPhaseCollection.Plans, chart, StartDate);
                            SetSplitMonitorStatistics(analysisPhaseCollection.Plans, phase, chart);
                        }
                        var chartFileName = CreateFileName();
                        removethese = new List <Title>();

                        foreach (var t in chart.Titles)
                        {
                            if (string.IsNullOrEmpty(t.Text))
                            {
                                removethese.Add(t);
                            }
                        }
                        foreach (var t in removethese)
                        {
                            chart.Titles.Remove(t);
                        }
                        chart.SaveImage(MetricFileLocation + chartFileName);
                        ReturnList.Add(MetricWebPath + chartFileName);
                    }
                }
            }
            return(ReturnList);
        }