示例#1
0
 public PedDelaySignal(string signalID, DateTime startDate,
                       DateTime endDate)
 {
     _SignalID  = signalID;
     _StartDate = startDate;
     _EndDate   = endDate;
     try
     {
         _Plans = new PlansBase(signalID, startDate, endDate);
         var pedPhaseNumbers = ControllerEventLogs.GetPedPhases(signalID, startDate, endDate);
         ConcurrentBag <PedPhase> pedPhases = new ConcurrentBag <PedPhase>();
         Parallel.ForEach(pedPhaseNumbers, currentPhase =>
                          //foreach(int currentPhase in pedPhaseNumbers)
         {
             var pedPhase = new PedPhase(currentPhase, signalID, startDate, endDate, _Plans);
             pedPhases.Add(pedPhase);
         });
         _PedPhases = pedPhases.OrderBy(x => x.PhaseNumber).ToList();
     }
     catch (Exception e)
     {
         var errorLog = ApplicationEventRepositoryFactory.Create();
         errorLog.QuickAdd(System.Reflection.Assembly.GetExecutingAssembly().GetName().ToString(),
                           this.GetType().DisplayName(), e.TargetSite.ToString(), ApplicationEvent.SeverityLevels.High, e.Message);
     }
 }
示例#2
0
文件: PedPhase.cs 项目: zfx1982/ATSPM
        public PedPhase(int phaseNumber, string signalID, DateTime startDate, DateTime endDate,
                        PlansBase plansData) : base(signalID, startDate, endDate, phaseNumber, new List <int> {
            21, 22, 45
        })
        {
            _SignalID    = signalID;
            _StartDate   = startDate;
            _EndDate     = endDate;
            _PhaseNumber = phaseNumber;

            for (int i = 0; i < plansData.Events.Count; i++)
            {
                //if this is the last plan then we want the end of the plan
                //to cooincide with the end of the graph
                if (plansData.Events.Count - 1 == i)
                {
                    PedPlan plan = new PedPlan(signalID, phaseNumber, plansData.Events[i].Timestamp, endDate,
                                               plansData.Events[i].EventParam);
                    _Plans.Add(plan);
                }
                //else we add the plan with the next plans' time stamp as the end of the plan
                else
                {
                    PedPlan plan = new PedPlan(signalID, phaseNumber, plansData.Events[i].Timestamp,
                                               plansData.Events[i + 1].Timestamp, plansData.Events[i].EventParam);

                    _Plans.Add(plan);
                }
            }

            GetCycles();
            AddCyclesToPlans();
            SetHourlyTotals();
        }
示例#3
0
        public Signal(string signalID, DateTime startDate, DateTime endDate,
                      List <int> eventCodes, int startOfCycle)
        {
            _SignalID   = signalID;
            _StartDate  = startDate;
            _EndDate    = endDate;
            _EventCodes = eventCodes;
            MOE.Common.Models.Repositories.ISignalsRepository repository =
                MOE.Common.Models.Repositories.SignalsRepositoryFactory.Create();
            SignalModel = repository.GetSignalBySignalID(signalID);
            _Detectors  = SignalModel.GetDetectorsForSignal();
            _Plans      = new PlansBase(signalID, startDate, endDate);

            GetPhases(startOfCycle);
        }
示例#4
0
文件: Signal.cs 项目: gmonk/ATSPM
        public Signal(string signalID, DateTime startDate, DateTime endDate,
                      List <int> eventCodes, int startOfCycle)
        {
            SignalID   = signalID;
            StartDate  = startDate;
            EndDate    = endDate;
            EventCodes = eventCodes;
            var repository =
                SignalsRepositoryFactory.Create();

            SignalModel = repository.GetLatestVersionOfSignalBySignalID(signalID);
            Detectors   = SignalModel.GetDetectorsForSignal();
            Plans       = new PlansBase(signalID, startDate, endDate);

            GetPhases(startOfCycle);
        }
示例#5
0
        public PedDelaySignal(string signalID, DateTime startDate,
                              DateTime endDate)
        {
            _SignalID  = signalID;
            _StartDate = startDate;
            _EndDate   = endDate;

            _Plans = new PlansBase(signalID, startDate, endDate);

            var pedPhaseNumbers = ControllerEventLogs.GetPedPhases(signalID, startDate, endDate);

            Parallel.ForEach(pedPhaseNumbers, currentPhase =>
                             //foreach(int currentPhase in pedPhaseNumbers)
            {
                _PedPhases.Add(new PedPhase(currentPhase, signalID, startDate, endDate, _Plans));
            }
                             );
            _PedPhases = _PedPhases.OrderBy(x => x.PhaseNumber).ToList();
        }
示例#6
0
        public PedDelaySignal(string signalID, DateTime startDate,
                              DateTime endDate)
        {
            _SignalID  = signalID;
            _StartDate = startDate;
            _EndDate   = endDate;

            _Plans = new PlansBase(signalID, startDate, endDate);

            List <int> pedPhaseNumbers = ControllerEventLogs.GetPedPhases(signalID, startDate, endDate);

            Parallel.ForEach(pedPhaseNumbers, currentPhase =>
                             //foreach(int currentPhase in pedPhaseNumbers)
            {
                _PedPhases.Add(new PedPhase(currentPhase, signalID, startDate, endDate, _Plans));
            }
                             );
            _PedPhases.Sort((x, y) => x.PhaseNumber.CompareTo(y.PhaseNumber));
        }
示例#7
0
        public PedPhase(int phaseNumber, Models.Signal signal, DateTime startDate, DateTime endDate,
                        PlansBase plansData) : base(signal.SignalID, startDate, endDate, phaseNumber, new List <int> {
            21, 22, 45, 90
        })
        {
            SignalID     = signal.SignalID;
            StartDate    = startDate;
            EndDate      = endDate;
            PhaseNumber  = phaseNumber;
            StartDate    = startDate;
            EndDate      = endDate;
            Plans        = new List <PedPlan>();
            Cycles       = new List <PedCycle>();
            HourlyTotals = new List <PedHourlyTotal>();

            for (var i = 0; i < plansData.Events.Count; i++)
            {
                //if this is the last plan then we want the end of the plan
                //to cooincide with the end of the graph
                if (plansData.Events.Count - 1 == i)
                {
                    var plan = new PedPlan(SignalID, phaseNumber, plansData.Events[i].Timestamp, endDate,
                                           plansData.Events[i].EventParam);
                    Plans.Add(plan);
                }
                //else we add the plan with the next plans' time stamp as the end of the plan
                else
                {
                    var plan = new PedPlan(SignalID, phaseNumber, plansData.Events[i].Timestamp,
                                           plansData.Events[i + 1].Timestamp, plansData.Events[i].EventParam);

                    Plans.Add(plan);
                }
            }

            GetCycles(signal);
            AddCyclesToPlans();
            SetHourlyTotals();
        }
示例#8
0
        private void ShowPlans(string signalID, DateTime startDate, DateTime endDate, int chartIndex)
        {
            var plansBase = new PlansBase(signalID, startDate, endDate);
            var plans     = new List <Plan>();

            for (var i = 0; i < plansBase.Events.Count; i++)
            {
                //if this is the last plan then we want the end of the plan
                //to cooincide with the end of the graph
                if (plansBase.Events.Count - 1 == i)
                {
                    var plan = new Plan(plansBase.Events[i].Timestamp, endDate,
                                        plansBase.Events[i].EventParam);
                    plans.Add(plan);
                }
                //else we add the plan with the next plans' time stamp as the end of the plan
                else
                {
                    var plan = new Plan(plansBase.Events[i].Timestamp,
                                        plansBase.Events[i + 1].Timestamp, plansBase.Events[i].EventParam);

                    plans.Add(plan);
                }
            }

            var backGroundColor = 1;

            foreach (var plan in plans)
            {
                var stripline = new StripLine();
                //Creates alternating backcolor to distinguish the plans
                if (backGroundColor % 2 == 0)
                {
                    stripline.BackColor = Color.FromArgb(120, Color.LightGray);
                }
                else
                {
                    stripline.BackColor = Color.FromArgb(120, Color.LightBlue);
                }

                //Set the stripline properties
                stripline.IntervalOffsetType = DateTimeIntervalType.Hours;
                stripline.Interval           = 1;
                stripline.IntervalOffset     = (plan.StartDate - startDate).TotalHours;
                stripline.StripWidth         = (plan.EndDate - plan.StartDate).TotalHours;
                stripline.StripWidthType     = DateTimeIntervalType.Hours;

                Charts[chartIndex].ChartAreas["ChartArea1"].AxisX.StripLines.Add(stripline);

                //Add a corrisponding custom label for each strip
                var Plannumberlabel = new CustomLabel();
                Plannumberlabel.FromPosition = plan.StartDate.ToOADate();
                Plannumberlabel.ToPosition   = plan.EndDate.ToOADate();
                switch (plan.PlanNumber)
                {
                case 254:
                    Plannumberlabel.Text = "Free";
                    break;

                case 255:
                    Plannumberlabel.Text = "Flash";
                    break;

                case 0:
                    Plannumberlabel.Text = "Unknown";
                    break;

                default:
                    Plannumberlabel.Text = "Plan " + plan.PlanNumber;

                    break;
                }

                Plannumberlabel.ForeColor = Color.Black;
                Plannumberlabel.RowIndex  = 1;

                Charts[chartIndex].ChartAreas["ChartArea1"].AxisX2.CustomLabels.Add(Plannumberlabel);
            }
        }