示例#1
0
        public string GetSignalLocation()
        {
            MOE.Common.Models.Repositories.ISignalsRepository signalRepository =
                MOE.Common.Models.Repositories.SignalsRepositoryFactory.Create();

            return(signalRepository.GetSignalLocation(SignalID));
        }
示例#2
0
        public ActionResult Edit(Signal signal)
        {
            try
            {
                ModelState.Clear();
                signal = SetDetectionTypes(signal);

                //var modelStateErrors = this.ModelState.Keys.SelectMany(key => this.ModelState[key].Errors);

                if (TryValidateModel(signal))
                {
                    MOE.Common.Models.Repositories.ISignalsRepository repository =
                        MOE.Common.Models.Repositories.SignalsRepositoryFactory.Create();
                    repository.AddOrUpdate(signal);
                    AddSelectListsToViewBag(signal);
                    return(Content("Save Successful!" + DateTime.Now.ToString()));
                }
                return(Content("There was a validation error."));
            }

            catch (ValidationException ex)
            {
                return(Content(ex.Message));
            }

            catch (Exception ex)
            {
                return(Content(ex.Message));
            }
        }
示例#3
0
        public void SetPagedList()
        {
            MOE.Common.Models.Repositories.ISignalsRepository repository =
                MOE.Common.Models.Repositories.SignalsRepositoryFactory.Create();
            //MOE.Common.Models.Repositories.SignalsRepositoryTest repository =
            //    new MOE.Common.Models.Repositories.SignalsRepositoryTest();
            var queryable = repository.GetAllEnabledSignals().AsQueryable();

            if (this.SelectedFilterID != null)
            {
                if (this.SelectedFilterID == 1)
                {
                    queryable = queryable.Where(q => q.SignalID.Contains(this.FilterCriteria)).Select(q => q);
                }
                else if (this.SelectedFilterID == 2)
                {
                    queryable = queryable.Where(q => q.PrimaryName.ToUpper().Contains(this.FilterCriteria.ToUpper())).Select(q => q);
                }
                else if (this.SelectedFilterID == 3)
                {
                    queryable = queryable.Where(q => q.SecondaryName.ToUpper().Contains(this.FilterCriteria.ToUpper())).Select(q => q);
                }
            }
            this.Signals = queryable.ToPagedList(this.Page, 5, this.OrderField, this.OrderDirection);
        }
示例#4
0
 public SignalsController(
     MOE.Common.Models.Repositories.IControllerTypeRepository controllerTypeRepository,
     MOE.Common.Models.Repositories.IRegionsRepository regionRepository,
     MOE.Common.Models.Repositories.IDirectionTypeRepository directionTypeRepository,
     MOE.Common.Models.Repositories.IMovementTypeRepository movementTypeRepository,
     MOE.Common.Models.Repositories.ILaneTypeRepository laneTypeRepository,
     MOE.Common.Models.Repositories.IDetectionHardwareRepository detectionHardwareRepository,
     MOE.Common.Models.Repositories.ISignalsRepository signalsRepository,
     MOE.Common.Models.Repositories.IDetectorRepository detectorRepository,
     MOE.Common.Models.Repositories.IDetectionTypeRepository detectionTypeRepository,
     MOE.Common.Models.Repositories.IApproachRepository approachRepository,
     MOE.Common.Models.Repositories.IMetricTypeRepository metricTypeRepository)
 {
     _signalsRepository           = signalsRepository;
     _detectorRepository          = detectorRepository;
     _detectionTypeRepository     = detectionTypeRepository;
     _approachRepository          = approachRepository;
     _controllerTypeRepository    = controllerTypeRepository;
     _regionRepository            = regionRepository;
     _directionTypeRepository     = directionTypeRepository;
     _movementTypeRepository      = movementTypeRepository;
     _laneTypeRepository          = laneTypeRepository;
     _detectionHardwareRepository = detectionHardwareRepository;
     _metricTypeRepository        = metricTypeRepository;
 }
示例#5
0
        private void GetMetricsForSignal(string signalID)
        {
            MOE.Common.Models.Repositories.ISignalsRepository repository =
                MOE.Common.Models.Repositories.SignalsRepositoryFactory.Create();
            var signal = repository.GetSignalBySignalID(signalID);

            MetricsList = new List <SelectListItem>();
            if (signal != null)
            {
                foreach (Models.MetricType m in signal.GetAvailableMetricsVisibleToWebsite())
                {
                    if (m.ShowOnWebsite)
                    {
                        if (SelectedMetricID != null && SelectedMetricID == m.MetricID)
                        {
                            MetricsList.Add(new SelectListItem {
                                Value = m.MetricID.ToString(), Text = m.ChartName, Selected = true
                            });
                        }
                        else
                        {
                            MetricsList.Add(new SelectListItem {
                                Value = m.MetricID.ToString(), Text = m.ChartName
                            });
                        }
                    }
                }
            }
        }
        public double GetTMCVolume(DateTime startDate, DateTime endDate, string signalID, int Phase)
        {
            MOE.Common.Models.Repositories.ISignalsRepository repository =
                MOE.Common.Models.Repositories.SignalsRepositoryFactory.Create();
            var signal = repository.GetSignalBySignalID(signalID);
            List <Models.Detector> graphDetectors = signal.GetDetectorsForSignalByPhaseNumber(Phase);

            List <int> tmcChannels = new List <int>();

            foreach (Models.Detector gd in graphDetectors)
            {
                foreach (DetectionType dt in gd.DetectionTypes)
                {
                    if (dt.DetectionTypeID == 4)
                    {
                        tmcChannels.Add(gd.DetChannel);
                    }
                }
            }



            double count = (from cel in db.Controller_Event_Log
                            where cel.Timestamp >= startDate &&
                            cel.Timestamp < endDate &&
                            cel.SignalID == signalID &&
                            tmcChannels.Contains(cel.EventParam) &&
                            cel.EventCode == 82
                            select cel).Count();

            return(count);
        }
示例#7
0
        public MOE.Common.Business.TMC.TMCInfo CreateMetric()
        {
            base.LogMetricRun();

            MOE.Common.Models.Repositories.ISignalsRepository repository =
                MOE.Common.Models.Repositories.SignalsRepositoryFactory.Create();
            Common.Models.Signal signal = repository.GetSignalBySignalID(SignalID);
            TmcInfo = new MOE.Common.Business.TMC.TMCInfo();
            MOE.Common.Business.PlanCollection plans = new MOE.Common.Business.PlanCollection(StartDate, EndDate, SignalID);


            MOE.Common.Models.Repositories.ILaneTypeRepository ltr = MOE.Common.Models.Repositories.LaneTypeRepositoryFactory.Create();
            List <Common.Models.LaneType> laneTypes = ltr.GetAllLaneTypes();

            MOE.Common.Models.Repositories.IMovementTypeRepository mtr = MOE.Common.Models.Repositories.MovementTypeRepositoryFactory.Create();
            List <Common.Models.MovementType> movementTypes            = mtr.GetAllMovementTypes();

            MOE.Common.Models.Repositories.IDirectionTypeRepository dtr = MOE.Common.Models.Repositories.DirectionTypeRepositoryFactory.Create();
            List <Common.Models.DirectionType> directions = dtr.GetAllDirections();


            CreateLaneTypeCharts(signal, "Vehicle", laneTypes, movementTypes, directions, plans, TmcInfo);
            CreateLaneTypeCharts(signal, "Exit", laneTypes, movementTypes, directions, plans, TmcInfo);
            CreateLaneTypeCharts(signal, "Bike", laneTypes, movementTypes, directions, plans, TmcInfo);


            return(TmcInfo);
        }
示例#8
0
        public RLMSignalPhaseCollection(DateTime startDate, DateTime endDate, string signalID,
                                        int binSize, double srlvSeconds)
        {
            int metricTypeID = 11;

            MOE.Common.Models.Repositories.ISignalsRepository repository =
                MOE.Common.Models.Repositories.SignalsRepositoryFactory.Create();
            var signal = repository.GetSignalBySignalID(signalID);

            this.severeRedLightViolationsSeconds = srlvSeconds;
            var approachesForMetric = signal.GetApproachesForSignalThatSupportMetric(metricTypeID);

            //If there are phases in the database add the charts
            if (approachesForMetric.Count() > 0)
            {
                foreach (MOE.Common.Models.Approach approach in approachesForMetric)
                {
                    this.SignalPhaseList.Add(new MOE.Common.Business.RLMSignalPhase(
                                                 startDate, endDate, binSize, this.SevereRedLightViolationsSeconds,
                                                 metricTypeID, approach, false));

                    if (approach.PermissivePhaseNumber != null && approach.PermissivePhaseNumber > 0)
                    {
                        this.SignalPhaseList.Add(new MOE.Common.Business.RLMSignalPhase(
                                                     startDate, endDate, binSize, this.SevereRedLightViolationsSeconds,
                                                     metricTypeID, approach, true));
                    }
                }
            }
        }
示例#9
0
        private string GetSignalLcation(string SignalID)
        {
            MOE.Common.Models.Repositories.ISignalsRepository sr = MOE.Common.Models.Repositories.SignalsRepositoryFactory.Create();

            string location = sr.GetSignalLocation(SignalID);

            return(location);
        }
示例#10
0
 public SignalModelHelper(String SignalID)
 {
     MOE.Common.Models.Repositories.ISignalsRepository signals = MOE.Common.Models.Repositories.SignalsRepositoryFactory.Create();
     Signal     = signals.GetSignalBySignalID(SignalID);
     Approaches = GetApproachesForSignal();
     LaneGroups = GetLaneGroupsForSignal();
     Detectors  = GetDetectorsForSignal();
 }
示例#11
0
        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);
        }
示例#12
0
        public override List <string> CreateMetric()
        {
            base.CreateMetric();
            List <string> returnString = new List <string>();



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



            //for (int x = 1; x < maxPhase + 1; x++)
            List <Approach> metricApproaches = signal.GetApproachesForSignalThatSupportMetric(this.MetricTypeID);

            if (metricApproaches.Count > 0)
            {
                foreach (Approach approach in metricApproaches)
                {
                    //MOE.Common.Business.CustomReport.Phase phase = new MOE.Common.Business.CustomReport.Phase(detectors, x, SignalID, StartDate, EndDate, new List<int> { 1, 4, 5, 6, 7, 8, 9, 10, 61, 63, 64 }, 1);
                    MOE.Common.Business.CustomReport.Phase phase = new MOE.Common.Business.CustomReport.Phase(approach, StartDate, EndDate, new List <int> {
                        1, 4, 5, 6, 7, 8, 9, 10, 61, 63, 64
                    }, 1, false);

                    phase.ApproachDirection = approach.DirectionType.Description;

                    string location  = GetSignalLocation();
                    string chartName = CreateFileName();


                    if (phase.PhaseNumber > 0)
                    {
                        GetChart(StartDate, EndDate, phase, location, FirstSecondsOfRed,
                                 ShowFailLines, ShowAvgLines, ShowPercentFailLines, YAxisMax, chartName, returnString, false);
                    }

                    if (approach.PermissivePhaseNumber != null && approach.PermissivePhaseNumber > 0)
                    {
                        string permChartName = CreateFileName();

                        MOE.Common.Business.CustomReport.Phase permPhase = new MOE.Common.Business.CustomReport.Phase(approach, StartDate,
                                                                                                                      EndDate, new List <int> {
                            1, 4, 5, 6, 7, 8, 9, 10, 61, 63, 64
                        }, 1, true);

                        permPhase.ApproachDirection = approach.DirectionType.Description;

                        GetChart(StartDate, EndDate, permPhase, location, FirstSecondsOfRed,
                                 ShowFailLines, ShowAvgLines, ShowPercentFailLines, YAxisMax, permChartName, returnString, true);
                    }
                }
            }
            return(returnString);
        }
示例#13
0
        public SignalInfoBoxViewModel(string signalID)
        {
            MOE.Common.Models.Repositories.ISignalsRepository repository =
                MOE.Common.Models.Repositories.SignalsRepositoryFactory.Create();
            var signal = repository.GetSignalBySignalID(signalID);

            SetTitle(signal);
            SetDescription(signal);
            SetMetrics(signal);
            SignalID = signalID;
        }
示例#14
0
        public ActionResult GetSignalLocation(string signalID)
        {
            MOE.Common.Models.Repositories.ISignalsRepository repository =
                MOE.Common.Models.Repositories.SignalsRepositoryFactory.Create();
            string signalLocation = repository.GetSignalLocation(signalID);

            if (signalLocation == string.Empty)
            {
                signalLocation = "Signal Not Found";
            }
            return(Content(signalLocation));
        }
示例#15
0
        static void Main(string[] args)
        {
            if (Properties.Settings.Default.forceNonParallel)
            {
                options = new ParallelOptions {
                    MaxDegreeOfParallelism = -1
                };
            }
            else
            {
                if (Properties.Settings.Default.MaxThreads < 2)
                {
                    options = new ParallelOptions {
                        MaxDegreeOfParallelism = 1
                    };
                }
                else
                {
                    options = new ParallelOptions {
                        MaxDegreeOfParallelism = Properties.Settings.Default.MaxThreads
                    };
                }
            }

            MOE.Common.Models.Repositories.ISignalsRepository sr =
                MOE.Common.Models.Repositories.SignalsRepositoryFactory.Create();

            List <MOE.Common.Models.Signal> signalsDT = sr.GetLatestVerionOfAllSignalsByControllerType(4);



            Parallel.ForEach(signalsDT, options, row =>
                             //foreach (var row in signalsDT )
            {
                if (TestIPAddress(row))
                {
                    string signalId = row.SignalID;

                    Console.WriteLine("Starting signal" + signalId);

                    MOE.Common.Business.MaxTimeHDLogClient client = new MOE.Common.Business.MaxTimeHDLogClient();

                    XmlDocument xml = client.GetSince(row.IPAddress, GetMostRecentRecordTime(signalId));

                    SaveToDB(xml, signalId);

                    Console.WriteLine("Finished signal" + signalId);
                }
            }
                             );
        }
示例#16
0
        /// <summary>
        /// Alternate Constructor for PDC type data.
        /// </summary>
        /// <param name="signalid"></param>
        /// <param name="ApproachDirection"></param>
        public RLMDetectorCollection(string signalID, string ApproachDirection)
        {
            MOE.Common.Models.Repositories.ISignalsRepository repository =
                MOE.Common.Models.Repositories.SignalsRepositoryFactory.Create();
            var signal = repository.GetSignalBySignalID(signalID);
            List <MOE.Common.Models.Detector> dets = signal.GetDetectorsForSignalThatSupportAMetricByApproachDirection(11, ApproachDirection);

            foreach (MOE.Common.Models.Detector row in dets)
            {
                // MOE.Common.Business.Detector Detector = new Detector(row.DetectorID.ToString(), signalID, row.Det_Channel, row.Lane.LaneType, ApproachDirection);
                MOE.Common.Business.Detector Detector = new Detector(row.DetectorID.ToString(), signalID, row.DetChannel, row.Approach);
                DetectorsForRLM.Add(Detector);
            }
        }
示例#17
0
 public void StartScan()
 {
     if (!Settings.WeekdayOnly || (Settings.WeekdayOnly && ScanDate.DayOfWeek != DayOfWeek.Saturday && ScanDate.DayOfWeek != DayOfWeek.Sunday))
     {
         var watchDogErrorEventRepository = MOE.Common.Models.Repositories.SPMWatchDogErrorEventRepositoryFactory.Create();
         MOE.Common.Models.Repositories.ISignalsRepository signalRepository =
             MOE.Common.Models.Repositories.SignalsRepositoryFactory.Create();
         var signals = signalRepository.EagerLoadAllSignals();
         CheckForRecords(signals);
         CheckAllSignals(signals);
         CheckSignalsWithData();
         CreateAndSendEmail();
     }
 }
示例#18
0
 public SignalsController()
 {
     _signalsRepository           = MOE.Common.Models.Repositories.SignalsRepositoryFactory.Create();
     _detectorRepository          = MOE.Common.Models.Repositories.DetectorRepositoryFactory.Create();
     _detectionTypeRepository     = MOE.Common.Models.Repositories.DetectionTypeRepositoryFactory.Create();
     _approachRepository          = MOE.Common.Models.Repositories.ApproachRepositoryFactory.Create();
     _metricTypeRepository        = MOE.Common.Models.Repositories.MetricTypeRepositoryFactory.Create();
     _controllerTypeRepository    = MOE.Common.Models.Repositories.ControllerTypeRepositoryFactory.Create();
     _regionRepository            = MOE.Common.Models.Repositories.RegionsRepositoryFactory.Create();
     _directionTypeRepository     = MOE.Common.Models.Repositories.DirectionTypeRepositoryFactory.Create();
     _movementTypeRepository      = MOE.Common.Models.Repositories.MovementTypeRepositoryFactory.Create();
     _laneTypeRepository          = MOE.Common.Models.Repositories.LaneTypeRepositoryFactory.Create();
     _detectionHardwareRepository = MOE.Common.Models.Repositories.DetectionHardwareRepositoryFactory.Create();
 }
示例#19
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);
        }
示例#20
0
        /// <summary>
        /// Alternate Constructor for PCD type data.
        /// </summary>
        /// <param name="signalid"></param>
        /// <param name="approach"></param>
        public DetectorCollection(MOE.Common.Models.Approach approach)
        {
            _signalId = approach.SignalID;
            MOE.Common.Models.Repositories.ISignalsRepository repository =
                MOE.Common.Models.Repositories.SignalsRepositoryFactory.Create();


            var PCDDetectors = approach.GetDetectorsForMetricType(6);

            foreach (MOE.Common.Models.Detector row in PCDDetectors)
            {
                MOE.Common.Business.Detector Detector = new Detector(row);
                Items.Add(Detector);
            }
        }
示例#21
0
        public void Initialize()
        {
            _db = new InMemoryMOEDatabase();
            _db.ClearTables();

            _mtr = new InMemoryMetricTypeRepository(_db);
            MOE.Common.Models.Repositories.MetricTypeRepositoryFactory.SetMetricsRepository(_mtr);

            _aer = new InMemoryApplicationEventRepository(_db);
            MOE.Common.Models.Repositories.ApplicationEventRepositoryFactory.SetApplicationEventRepository(_aer);

            _signalRepository = new InMemorySignalsRepository(_db);
            MOE.Common.Models.Repositories.SignalsRepositoryFactory.SetSignalsRepository(_signalRepository);

            _db.PopulateSignal();
        }
示例#22
0
        static private int FindChannel(string SignalID, int Phase)
        {
            MOE.Common.Models.Repositories.ISignalsRepository smh = MOE.Common.Models.Repositories.SignalsRepositoryFactory.Create();
            MOE.Common.Models.Signal sig = smh.GetSignalBySignalID(SignalID);

            var dets = sig.GetDetectorsForSignalByPhaseNumber(Phase);

            if (dets.Count() > 0)
            {
                return(dets.FirstOrDefault().DetChannel);
            }
            else
            {
                return(0);
            }
        }
示例#23
0
        public ActionResult IndexByVersion(int versionId)
        {
            MOE.Common.Models.Repositories.ISignalsRepository sr =
                MOE.Common.Models.Repositories.SignalsRepositoryFactory.Create();
            var signal = sr.GetSignalVersionByVersionId(versionId);
            List <MOE.Common.Business.Helpers.ConfigurationRecord> records =
                new List <MOE.Common.Business.Helpers.ConfigurationRecord>();

            foreach (MOE.Common.Models.Detector gd in signal.GetDetectorsForSignal())
            {
                MOE.Common.Business.Helpers.ConfigurationRecord r = new ConfigurationRecord(gd);
                records.Add(r);
            }
            Models.SPMConfigurationTableViewModel model = new Models.SPMConfigurationTableViewModel();
            model.Records = records;
            return(PartialView("ConfigurationTable", model));
        }
示例#24
0
        public ActionResult Create(string versionId)
        {
            MOE.Common.Models.Repositories.ISignalsRepository signalsRepository =
                MOE.Common.Models.Repositories.SignalsRepositoryFactory.Create();
            Signal signal = signalsRepository.GetSignalVersionByVersionId(Convert.ToInt32(versionId));
            List <MOE.Common.Models.MetricType> allMetricTypes = metricTyperepository.GetAllToDisplayMetrics();

            MOE.Common.Models.MetricComment mc =
                new MetricComment();
            mc.Signal         = signal;
            mc.AllMetricTypes = allMetricTypes;
            if (mc.MetricTypeIDs != null)
            {
                mc.MetricTypes = metricTyperepository.GetMetricTypesByMetricComment(mc);
            }

            return(PartialView(mc));
        }
示例#25
0
        public AdvancedSpeedDataExport(string signalId, string location, DateTime startDate, DateTime endDate,
                                       int binSize, List <string> DayOfweek)
        {
            MOE.Common.Models.Repositories.ISignalsRepository repository =
                MOE.Common.Models.Repositories.SignalsRepositoryFactory.Create();
            var signal = repository.GetSignalBySignalID(signalId);
            //Get the dates that match the daytype for the given period
            List <DateTime> dtList   = new List <DateTime>();
            DateTime        tempDate = startDate;

            while (tempDate <= endDate)
            {
                if (DayOfweek.Contains(tempDate.DayOfWeek.ToString()))
                {
                    dtList.Add(tempDate);
                }
                tempDate = tempDate.AddDays(1);
            }
            var table = signal.GetDetectorsForSignalThatSupportAMetric(10);

            foreach (MOE.Common.Models.Detector row in table)
            {
                string direction = row.Approach.DirectionType.Description;
                Approaches.Add(direction, new List <SpeedExportAvgSpeed>());
            }
            //Create approach direction collections for each date in the list
            foreach (DateTime dt in dtList)
            {
                DateTime dtEnd = new DateTime(dt.Year, dt.Month, dt.Day,
                                              endDate.Hour, endDate.Minute, endDate.Second);
                Business.SpeedExportApproachDirectionCollection approachDirectioncollection =
                    new SpeedExportApproachDirectionCollection(dt,
                                                               dtEnd, signalId, binSize);
                foreach (SpeedExportApproachDirection sad in approachDirectioncollection.List)
                {
                    foreach (SpeedExportAvgSpeed sea in sad.AvgSpeeds.Items)
                    {
                        Approaches[sad.Direction].Add(sea);
                    }
                }
            }
        }
示例#26
0
        /// <summary>
        /// Generates PCD charts for upstream and downstream detectors based on
        /// a Link Pivot Link
        /// </summary>
        /// <param name="upstreamSignalID"></param>
        /// <param name="upstreamDirection"></param>
        /// <param name="downstreamSignalID"></param>
        /// <param name="downstreamDirection"></param>
        /// <param name="delta"></param>
        /// <param name="startDate"></param>
        /// <param name="endDate"></param>
        /// <param name="maxYAxis"></param>
        public LinkPivotPCDDisplay(string upstreamSignalID, string upstreamDirection,
                                   string downstreamSignalID, string downstreamDirection, int delta,
                                   DateTime startDate, DateTime endDate, int maxYAxis)
        {
            MOE.Common.Models.Repositories.ISignalsRepository signalRepository =
                MOE.Common.Models.Repositories.SignalsRepositoryFactory.Create();
            MOE.Common.Models.Signal   upstreamSignal        = signalRepository.GetSignalBySignalID(upstreamSignalID);
            MOE.Common.Models.Signal   downstreamSignal      = signalRepository.GetSignalBySignalID(downstreamSignalID);
            MOE.Common.Models.Approach upApproachToAnalyze   = GetApproachToAnalyze(upstreamSignal, upstreamDirection);
            MOE.Common.Models.Approach downApproachToAnalyze = GetApproachToAnalyze(downstreamSignal, downstreamDirection);

            if (upApproachToAnalyze != null)
            {
                GeneratePCD(upApproachToAnalyze, delta, startDate, endDate, true, maxYAxis);
            }
            if (downApproachToAnalyze != null)
            {
                GeneratePCD(downApproachToAnalyze, delta, startDate, endDate, false, maxYAxis);
            }
        }
示例#27
0
 public ActionResult Edit(Signal signal)
 {
     try
     {
         ModelState.Clear();
         signal = SetDetectionTypes(signal);
         if (TryValidateModel(signal))
         {
             MOE.Common.Models.Repositories.ISignalsRepository repository =
                 MOE.Common.Models.Repositories.SignalsRepositoryFactory.Create();
             repository.AddOrUpdate(signal);
         }
         AddSelectListsToViewBag(signal);
         return(Content("Save Successful!" + DateTime.Now.ToString()));
     }
     catch (Exception ex)
     {
         return(Content(ex.Message));
     }
 }
示例#28
0
        /// <summary>
        /// Constructor Used for Split monitor
        /// </summary>
        /// <param name="phasenumber"></param>
        /// <param name="signalID"></param>
        /// <param name="CycleEventsTable"></param>
        public AnalysisPhase(int phasenumber, string signalID, List <Models.Controller_Event_Log> CycleEventsTable)
        {
            MOE.Common.Models.Repositories.ISignalsRepository repository =
                MOE.Common.Models.Repositories.SignalsRepositoryFactory.Create();
            var signal = repository.GetSignalBySignalID(signalID);

            this.phaseNumber = phasenumber;
            this.signalId    = signalID;
            this.IsOverlap   = false;
            List <Models.Controller_Event_Log> PedEvents   = FindPedEvents(CycleEventsTable, phasenumber);
            List <Models.Controller_Event_Log> PhaseEvents = FindPhaseEvents(CycleEventsTable, phasenumber);

            Cycles = new AnalysisPhaseCycleCollection(phasenumber, signalId, PhaseEvents, PedEvents);
            Models.Approach approach = signal.Approaches.Where(a => a.ProtectedPhaseNumber == phasenumber).FirstOrDefault();
            if (approach != null)
            {
                this.Direction = approach.DirectionType.Description;
            }
            else
            {
                this.Direction = "Unknown";
            }
        }
示例#29
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);
        }
示例#30
0
        //public SignalPhaseCollection( DateTime startDate, DateTime endDate, string signalID,
        //    bool showVolume, int binSize, int metricTypeID)
        //{
        //    MOE.Common.Models.Repositories.ISignalsRepository repository =
        //        MOE.Common.Models.Repositories.SignalsRepositoryFactory.Create();
        //    var signal = repository.GetSignalBySignalID(signalID);
        //    var detectors = signal.GetDetectorsForSignal();
        //     if (detectors.Count > 0)
        //    {
        //        foreach (Models.Detector detector in detectors)
        //        {
        //            int detChannel = detector.DetChannel;
        //            Double offset = detector.GetOffset();
        //            String direction = detector.Approach.DirectionType.Description;
        //            bool isOverlap = detector.Approach.IsProtectedPhaseOverlap;

        //            //Get the phase
        //            MOE.Common.Business.SignalPhase signalPhase = new MOE.Common.Business.SignalPhase(
        //                startDate, endDate, detector.Approach, showVolume, binSize, metricTypeID);
        //            this.SignalPhaseList.Add(signalPhase);
        //        }
        //    }
        //}


        public SignalPhaseCollection(DateTime startDate, DateTime endDate, string signalID,
                                     bool showVolume, int binSize, int metricTypeID)
        {
            MOE.Common.Models.Repositories.ISignalsRepository repository =
                MOE.Common.Models.Repositories.SignalsRepositoryFactory.Create();
            var signal = repository.GetSignalBySignalID(signalID);

            List <Models.Approach> approaches = signal.GetApproachesForSignalThatSupportMetric(metricTypeID);

            if (signal.Approaches != null && approaches.Count > 0)
            {
                Parallel.ForEach(approaches, approach =>
                                 //foreach (Models.Approach approach in approaches)
                {
                    String direction = approach.DirectionType.Description;
                    bool isOverlap   = approach.IsProtectedPhaseOverlap;
                    int phaseNumber  = approach.ProtectedPhaseNumber;
                    //double offset = approach.GetOffset();

                    //Get the phase
                    MOE.Common.Business.SignalPhase signalPhase = new MOE.Common.Business.SignalPhase(
                        startDate, endDate, approach, showVolume, binSize, metricTypeID);

                    //try not to add the same direction twice
                    var ExsitingPhases = from MOE.Common.Business.SignalPhase phase in this.SignalPhaseList
                                         where phase.Approach.DirectionType.Description == signalPhase.Approach.DirectionType.Description
                                         select phase;

                    if (ExsitingPhases.Count() < 1)
                    {
                        this.SignalPhaseList.Add(signalPhase);
                    }
                });
                this.signalPhaseList = signalPhaseList.OrderBy(s => s.Approach.ProtectedPhaseNumber).ToList();
            }
        }