private void SetYAxisLabels(TimingAndActuationsOptions options)
        {
            var yMaximum = Math.Round(_yValue += 0.8, 0);
            var height   = (25.0 * yMaximum + 180.0);

            if (height < 200)
            {
                height = 300;
            }
            Chart.Height = (Unit)height;
            Chart.ChartAreas[0].AxisY.Interval = 1;
            var bottomOffset    = 0;
            var topOffset       = bottomOffset + 1;
            var timingAxisLabel = new CustomLabel(bottomOffset, topOffset, "  ", 1, LabelMarkStyle.None);

            foreach (var t in Chart.Series)
            {
                bottomOffset    = (int)t.Points[0].YValues[0];
                topOffset       = bottomOffset + 1;
                timingAxisLabel = new CustomLabel(bottomOffset, topOffset, t.Name, 0,
                                                  LabelMarkStyle.None);
                Chart.ChartAreas[0].AxisY.CustomLabels.Add(timingAxisLabel);
            }
            bottomOffset++;
            topOffset = bottomOffset + 1;
            var vehicleTimingAxisLabel = new CustomLabel(bottomOffset, topOffset, "Vehicle Signal Display                    .", 0,
                                                         LabelMarkStyle.None);

            Chart.ChartAreas[0].AxisY.CustomLabels.Add(vehicleTimingAxisLabel);
        }
 public GlobalGetDataTimingAndActuations(string signalId, TimingAndActuationsOptions options)
 {
     if (options.GlobalEventCodesList != null && options.GlobalEventParamsList != null &&
         options.GlobalEventCodesList.Any() && options.GlobalEventCodesList.Count > 0 &&
         options.GlobalEventParamsList.Any() && options.GlobalEventParamsList.Count > 0)
     {
         GlobalCustomEvents = new Dictionary <string, List <Controller_Event_Log> >();
         foreach (var globalEventCode in options.GlobalEventCodesList)
         {
             foreach (var globalEventParam in options.GlobalEventParamsList)
             {
                 options.GlobalEventCounter = 1;
                 var controllerEventLogRepository =
                     Models.Repositories.ControllerEventLogRepositoryFactory.Create();
                 var globalCustomEvents = controllerEventLogRepository.GetEventsByEventCodesParam
                                              (signalId, options.StartDate, options.EndDate,
                                              new List <int> {
                     globalEventCode
                 }, globalEventParam);
                 if (globalCustomEvents.Count > 0)
                 {
                     GlobalCustomEvents.Add("Global Events: Code: " + globalEventCode + " Param: " +
                                            globalEventParam,
                                            //                                globalEventParam + " Counter: " + options.GlobalEventCounter++,
                                            globalCustomEvents);
                 }
             }
         }
     }
 }
 private void SetChartTitle(TimingAndActuationsOptions options)
 {
     Chart.ChartAreas[0].AxisY.Title    = "";
     Chart.ChartAreas[0].AxisY2.Enabled = AxisEnabled.False;
     Chart.ChartAreas[0].AxisY2.Title   = "";
     Chart.Titles.Add(ChartTitleFactory.GetChartName(options.MetricTypeID));
     Chart.Titles.Add(ChartTitleFactory.GetSignalLocationAndDateRange(
                          options.SignalID, options.StartDate, options.EndDate));
 }
Example #4
0
 public TimingAndActuationsForPhase(int phaseNumber, bool phaseOrOverlap, TimingAndActuationsOptions options)
 {
     PhaseNumber    = phaseNumber;
     Options        = options;
     PhaseOrOverlap = phaseOrOverlap;
     GetAllRawCycleData(options.StartDate, options.EndDate, PhaseOrOverlap);
     if (Options.ShowPedestrianIntervals)
     {
         GetPedestrianIntervals(PhaseOrOverlap);
     }
 }
Example #5
0
 public TimingAndActuationsForPhase(Approach approach, TimingAndActuationsOptions options,
                                    bool getPermissivePhase)
 {
     GetPermissivePhase = getPermissivePhase;
     Approach           = approach;
     Options            = options;
     PhaseNumber        = GetPermissivePhase ? Approach.PermissivePhaseNumber.Value : Approach.ProtectedPhaseNumber;
     if (Options.ShowVehicleSignalDisplay)
     {
         GetAllCycleData(Options.StartDate,
                         Options.EndDate, approach, getPermissivePhase);
     }
     if (Options.ShowStopBarPresence)
     {
         GetStopBarPresenceEvents();
     }
     if (Options.ShowPedestrianActuation && !GetPermissivePhase)
     {
         GetPedestrianEvents();
     }
     if (Options.ShowPedestrianIntervals && !GetPermissivePhase)
     {
         var getPhaseOrOverlapEvents = !(approach.IsProtectedPhaseOverlap || approach.IsPermissivePhaseOverlap);
         GetPedestrianIntervals(getPhaseOrOverlapEvents);
     }
     if (Options.ShowLaneByLaneCount)
     {
         GetLaneByLaneEvents();
     }
     if (Options.ShowAdvancedDilemmaZone)
     {
         GetAdvancePresenceEvents();
     }
     if (Options.ShowAdvancedCount)
     {
         GetAdvanceCountEvents();
     }
     if (Options.PhaseEventCodesList != null)
     {
         GetPhaseCustomEvents();
     }
 }
Example #6
0
 public TimingAndActuationsForPhase(int phaseNumber, bool phaseOrOverlap, TimingAndActuationsOptions options)
 {
     PhaseNumber    = phaseNumber;
     Options        = options;
     PhaseOrOverlap = phaseOrOverlap;
     GetAllRawCycleData(options.StartDate, options.EndDate, PhaseOrOverlap);
     if (Options.ShowPedestrianIntervals)
     {
         GetPedestrianIntervals(PhaseOrOverlap);
     }
     if (Options.ShowPedestrianActuation)
     {
         GetPedestrianEvents();
     }
     if (Options.PhaseEventCodesList != null)
     {
         var optionsSignalID = Options.SignalID;
         GetRawCustomEvents(optionsSignalID, PhaseNumber, options.StartDate, options.EndDate);
     }
 }
 private void SetGlobalEvents(GlobalGetDataTimingAndActuations globalGetDataTimingAndActuations, TimingAndActuationsOptions options)
 {
     _yValue  = 0.5;
     _dotSize = 1;
     if (options.DotAndBarSize > 0)
     {
         _dotSize = options.DotAndBarSize;
     }
     foreach (var globalCustomEventElement in globalGetDataTimingAndActuations.GlobalCustomEvents)
     {
         var globalEventsSeries = new Series
         {
             ChartType  = SeriesChartType.Point,
             XValueType = ChartValueType.DateTime
         };
         var globalCustomEvents = globalCustomEventElement.Value;
         if (globalCustomEvents.Count <= 0)
         {
             continue;
         }
         for (int i = 0; i < globalCustomEvents.Count; i++)
         {
             var p0 = globalEventsSeries.Points.AddXY(globalCustomEvents[i].Timestamp.ToOADate(), _yValue);
             globalEventsSeries.Points[p0].Color       = Color.Transparent;
             globalEventsSeries.Points[p0].MarkerStyle = MarkerStyle.Triangle;
             globalEventsSeries.Points[p0].MarkerColor = Color.Black;
             globalEventsSeries.Points[p0].MarkerSize  = _dotSize;
         }
         if (globalEventsSeries.Points.Count <= 0)
         {
             return;
         }
         globalEventsSeries.Name = globalCustomEventElement.Key;
         Chart.Series.Add(globalEventsSeries);
         _yValue += 1.0;
     }
 }
        public ChartForGlobalEventsTimingAndActuations(GlobalGetDataTimingAndActuations globalGetDataTimingAndActuations, TimingAndActuationsOptions options)
        {
            var GlobalDataTimingAndActuations = globalGetDataTimingAndActuations;
            var Options             = options;
            var orginalEndDate      = Options.EndDate;
            var reportTimespan      = Options.EndDate - Options.StartDate;
            var totalMinutesRounded = Math.Round(reportTimespan.TotalMinutes);

            if (totalMinutesRounded <= 121)  // remove extra minute to timefrom defaults
            {
                Options.EndDate = Options.EndDate.AddMinutes(-1);
            }
            Chart = ChartFactory.CreateDefaultChart(Options);
            SetChartTitle(Options);
            SetGlobalEvents(GlobalDataTimingAndActuations, Options);
            SetYAxisLabels(Options);
            Options.EndDate = orginalEndDate;
        }