Esempio n. 1
0
        protected void AddTermEventDataToChart(Chart chart, DateTime startDate,
                                               DateTime endDate, MOE.Common.Business.AnalysisPhaseCollection analysisPhaseCollection,
                                               string signalId, bool showVolume, bool showPlanStripes)
        {
            foreach (MOE.Common.Business.AnalysisPhase phase in analysisPhaseCollection.Items)
            {
                if (phase.TerminationEvents.Count > 0)
                {
                    foreach (MOE.Common.Models.Controller_Event_Log TermEvent in phase.ConsecutiveGapOuts)
                    {
                        chart.Series["GapOut"].Points.AddXY(TermEvent.Timestamp, phase.PhaseNumber);
                    }

                    foreach (MOE.Common.Models.Controller_Event_Log TermEvent in phase.ConsecutiveMaxOut)
                    {
                        chart.Series["MaxOut"].Points.AddXY(TermEvent.Timestamp, phase.PhaseNumber);
                    }

                    foreach (MOE.Common.Models.Controller_Event_Log TermEvent in phase.ConsecutiveForceOff)
                    {
                        chart.Series["ForceOff"].Points.AddXY(TermEvent.Timestamp, phase.PhaseNumber);
                    }

                    foreach (MOE.Common.Models.Controller_Event_Log TermEvent in phase.UnknownTermination)
                    {
                        chart.Series["Unknown"].Points.AddXY(TermEvent.Timestamp, phase.PhaseNumber);
                    }

                    if (ShowPedActivity)
                    {
                        foreach (MOE.Common.Models.Controller_Event_Log PedEvent in phase.PedestrianEvents)
                        {
                            if (PedEvent.EventCode == 23)
                            {
                                chart.Series["Ped Walk Begin"].Points.AddXY(PedEvent.Timestamp, (phase.PhaseNumber + .3));
                            }
                        }
                    }
                }
                if (showPlanStripes)
                {
                    PlanCollection.SetSimplePlanStrips(analysisPhaseCollection.Plans, chart, startDate);
                }
                if (YAxisMax != null)
                {
                    chart.ChartAreas[0].AxisY.Maximum = YAxisMax.Value + .5;
                }
            }
        }
Esempio n. 2
0
        public void SetHighCycleCount(AnalysisPhaseCollection phases)
        {
            //find all the phases cycles within the plan
            var HighCycleCount = 0;

            foreach (var phase in phases.Items)
            {
                var Cycles = from cycle in phase.Cycles.Items
                             where cycle.StartTime > StartTime && cycle.EndTime < EndTime
                             select cycle;

                if (Cycles.Count() > HighCycleCount)
                {
                    HighCycleCount = Cycles.Count();
                }
            }
            CycleCount = HighCycleCount;
        }
Esempio n. 3
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);
        }
Esempio n. 4
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);
        }