private void CheckAllSignals(List <Models.Signal> signals) { TimeSpan startHour = new TimeSpan(Settings.ScanDayStartHour, 0, 0); TimeSpan endHour = new TimeSpan(Settings.ScanDayEndHour, 0, 0); DateTime AnalysisStart = ScanDate.Date + startHour; DateTime AnalysisEnd = ScanDate.Date + endHour; ParallelOptions options = new ParallelOptions(); options.MaxDegreeOfParallelism = Settings.MaxDegreeOfParallelism; Parallel.ForEach(signals, options, signal => //foreach(var signal in signals) { MOE.Common.Business.AnalysisPhaseCollection APcollection = new MOE.Common.Business.AnalysisPhaseCollection(signal.SignalID, AnalysisStart, AnalysisEnd, Settings.ConsecutiveCount); foreach (MOE.Common.Business.AnalysisPhase phase in APcollection.Items) //Parallel.ForEach(APcollection.Items, options,phase => { CheckForMaxOut(phase, signal); CheckForForceOff(phase, signal); CheckForStuckPed(phase, signal); } // ); }); }
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.Business.ControllerEvent TermEvent in phase.ConsecutiveGapOuts) { chart.Series["GapOut"].Points.AddXY(TermEvent.TimeStamp, phase.PhaseNumber); } foreach (MOE.Common.Business.ControllerEvent TermEvent in phase.ConsecutiveMaxOut) { chart.Series["MaxOut"].Points.AddXY(TermEvent.TimeStamp, phase.PhaseNumber); } foreach (MOE.Common.Business.ControllerEvent TermEvent in phase.ConsecutiveForceOff) { chart.Series["ForceOff"].Points.AddXY(TermEvent.TimeStamp, phase.PhaseNumber); } foreach (MOE.Common.Business.ControllerEvent TermEvent in phase.UnknownTermination) { chart.Series["UnknownTermination"].Points.AddXY(TermEvent.TimeStamp, phase.PhaseNumber); } if (showVolume) { foreach (MOE.Common.Business.ControllerEvent PedEvent in phase.PedestrianEvents) { chart.Series["Ped Walk Begin"].Points.AddXY(PedEvent.TimeStamp, (phase.PhaseNumber + .3)); } } } if (showPlanStripes) { SetSimplePlanStrips(analysisPhaseCollection.Plans, chart, startDate); } } }
public string CreateChart(DateTime startDate, DateTime endDate, string signalId, bool showPedWalkStartTime, int consecutiveCount, string location, bool showPlanStripes ) { string returnString = string.Empty; string chartLocation = ConfigurationManager.AppSettings["ImageLocation"] + @"Phase Termination Charts\"; string chartName = "PPT-" + signalId + "-" + startDate.Year.ToString() + startDate.ToString("MM") + startDate.ToString("dd") + startDate.ToString("HH") + startDate.ToString("mm") + "-" + endDate.Year.ToString() + endDate.ToString("MM") + endDate.ToString("dd") + endDate.ToString("HH") + endDate.ToString("mm-") + consecutiveCount.ToString(); if (showPedWalkStartTime) { chartName += "-PED"; } if (showPlanStripes) { chartName += "-PLN"; } Random r = new Random(); chartName += r.Next().ToString(); chartName += ".jpg"; //if (endDate <= DateTime.Today) //{ // if (File.Exists(chartLocation + chartName)) // { // returnString = chartName; // } //} if (returnString == string.Empty) { Chart chart = new Chart(); MOE.Common.Business.AnalysisPhaseCollection analysisPhaseCollection = new MOE.Common.Business.AnalysisPhaseCollection(signalId, startDate, endDate, consecutiveCount); //If there are phases in the collection add the charts if (analysisPhaseCollection.Items.Count > 0) { chart = GetNewTermEventChart(startDate, endDate, signalId, location, consecutiveCount, analysisPhaseCollection.MaxPhaseInUse, showPedWalkStartTime); AddTermEventDataToChart(chart, startDate, endDate, analysisPhaseCollection, signalId, showPedWalkStartTime, showPlanStripes); } chart.SaveImage(chartLocation + chartName, System.Web.UI.DataVisualization.Charting.ChartImageFormat.Jpeg); returnString = chartName; } return(returnString); }