Пример #1
0
        public ActionResult GetSignal(string id)
        {
            var signalRepository = MOE.Common.Models.Repositories.SignalsRepositoryFactory.Create();
            AggDataExportViewModel aggDataExportViewModel = new AggDataExportViewModel();
            var signal = signalRepository.GetLatestVersionOfSignalBySignalID(id);

            aggDataExportViewModel.FilterSignals.Add(GetFilterSignal(signal));
            return(PartialView("GetRouteSignals", aggDataExportViewModel));
        }
Пример #2
0
        private static void SetTimeOptionsFromViewModel(AggDataExportViewModel aggDataExportViewModel, SignalAggregationMetricOptions options)
        {
            string[] startTime;
            string[] endTime;
            int?     startHour   = null;
            int?     startMinute = null;
            int?     endHour     = null;
            int?     endMinute   = null;

            BinFactoryOptions.TimeOptions timeOptions = BinFactoryOptions.TimeOptions.StartToEnd;
            if (!String.IsNullOrEmpty(aggDataExportViewModel.StartTime) &&
                !String.IsNullOrEmpty(aggDataExportViewModel.EndTime))
            {
                startTime = aggDataExportViewModel.StartTime.Split(':');
                startHour = Convert.ToInt32(startTime[0]);
                if (aggDataExportViewModel.SelectedStartAMPM.Contains("PM"))
                {
                    startHour += 12;
                }
                startMinute = startTime.Length > 1 ? Convert.ToInt32(startTime[1]) : 0;
                endTime     = aggDataExportViewModel.EndTime.Split(':');
                endHour     = Convert.ToInt32(endTime[0]);
                if (aggDataExportViewModel.SelectedEndAMPM.Contains("PM"))
                {
                    endHour += 12;
                }
                endMinute   = endTime.Length > 1 ? Convert.ToInt32(endTime[1]) : 0;
                timeOptions = BinFactoryOptions.TimeOptions.TimePeriod;
            }
            List <DayOfWeek> daysOfWeek = new List <DayOfWeek>();

            if (aggDataExportViewModel.Weekends)
            {
                daysOfWeek.AddRange(new List <DayOfWeek> {
                    DayOfWeek.Sunday, DayOfWeek.Saturday
                });
            }
            if (aggDataExportViewModel.Weekdays)
            {
                daysOfWeek.AddRange(new List <DayOfWeek> {
                    DayOfWeek.Monday, DayOfWeek.Tuesday, DayOfWeek.Wednesday, DayOfWeek.Thursday, DayOfWeek.Friday
                });
            }
            BinFactoryOptions.BinSize binSize = (BinFactoryOptions.BinSize)aggDataExportViewModel.SelectedBinSize;

            options.TimeOptions = new BinFactoryOptions(
                aggDataExportViewModel.StartDateDay.Value,
                aggDataExportViewModel.EndDateDay.Value,
                startHour, startMinute, endHour, endMinute, daysOfWeek,
                binSize,
                timeOptions);
        }
Пример #3
0
        // GET: DataExportViewModels
        public ActionResult Index()
        {
            AggDataExportViewModel viewModel = new AggDataExportViewModel();

            viewModel.SelectedMetricTypeId = 20;
            SetAggregateDataViewModelLists(viewModel);
            viewModel.SelectedChartType = SeriesChartType.StackedColumn.ToString();
            viewModel.SelectedBinSize   = 0;
            viewModel.StartDateDay      = Convert.ToDateTime("10/17/2017");
            viewModel.EndDateDay        = Convert.ToDateTime("10/18/2017");
            viewModel.Weekdays          = true;
            viewModel.Weekends          = true;
            return(View(viewModel));
        }
Пример #4
0
        // GET: DataExportViewModels
        public ActionResult GetRouteSignals(int id)
        {
            AggDataExportViewModel aggDataExportViewModel = new AggDataExportViewModel();
            var   routeRepository  = MOE.Common.Models.Repositories.RouteRepositoryFactory.Create();
            var   signalRepository = MOE.Common.Models.Repositories.SignalsRepositoryFactory.Create();
            Route route            = routeRepository.GetRouteByID(id);

            foreach (var routeignal in route.RouteSignals)
            {
                var signal = signalRepository.GetLatestVersionOfSignalBySignalID(routeignal.SignalId);
                aggDataExportViewModel.FilterSignals.Add(GetFilterSignal(signal));
            }
            return(PartialView(aggDataExportViewModel));
        }
Пример #5
0
 private ActionResult GetChart(AggDataExportViewModel aggDataExportViewModel, SignalAggregationMetricOptions options)
 {
     Enum.TryParse(aggDataExportViewModel.SelectedChartType, out SeriesChartType tempSeriesChartType);
     options.SelectedChartType = tempSeriesChartType;
     if (TryValidateModel(aggDataExportViewModel) && aggDataExportViewModel.FilterSignals.Count > 0)
     {
         SetCommonValues(aggDataExportViewModel, options);
         return(GetChartFromService(options));
     }
     else
     {
         return(Content("<h1 class='text-danger'>Missing Parameters</h1>"));
     }
 }
Пример #6
0
        private void SetAggregateDataViewModelLists(AggDataExportViewModel viewModel)
        {
            var routeRepository = MOE.Common.Models.Repositories.RouteRepositoryFactory.Create();

            viewModel.SetSeriesTypes();
            viewModel.SetAggregationTypes();
            viewModel.SetBinSizeList();
            viewModel.SetChartTypes();
            viewModel.SetDefaultDates();
            viewModel.SetDimensions();
            viewModel.SetSeriesWidth();
            viewModel.SetXAxisTypes();
            viewModel.SetDirectionTypes();
            viewModel.SetMovementTypes();
            viewModel.SetAggregateData();
            viewModel.Routes      = routeRepository.GetAllRoutes();
            viewModel.MetricTypes = metricTyperepository.GetAllToAggregateMetrics();
        }
Пример #7
0
        public ActionResult CreateMetric(AggDataExportViewModel aggDataExportViewModel)
        {
            switch (aggDataExportViewModel.SelectedMetricTypeId)
            {
            case 16:
                return(GetLaneByLaneChart(aggDataExportViewModel));

            case 25:
                return(GetApproachSpeedAggregationChart(aggDataExportViewModel));

            case 18:
                return(GetArrivalOnGreenChart(aggDataExportViewModel));

            case 19:
                return(GetCycleChart(aggDataExportViewModel));

            case 20:
                return(GetSplitFailChart(aggDataExportViewModel));

            case 26:
                return(GetYraChart(aggDataExportViewModel));

            case 22:
                return(GetPreemptionChart(aggDataExportViewModel));

            case 24:
                return(GetPriorityChart(aggDataExportViewModel));

            case 27:
                return(GetSignalEventCountChart(aggDataExportViewModel));

            case 28:
                return(GetApproachEventCountChart(aggDataExportViewModel));

            case 29:
                return(GetPhaseTerminationChart(aggDataExportViewModel));

            case 30:
                return(GetPhasePedChart(aggDataExportViewModel));

            default:
                return(Content("<h1 class='text-danger'>Unkown Chart Type</h1>"));
            }
        }
Пример #8
0
 private static void SetCommonValues(AggDataExportViewModel aggDataExportViewModel, SignalAggregationMetricOptions options)
 {
     aggDataExportViewModel.EndDateDay = aggDataExportViewModel.EndDateDay.Value.AddDays(1);
     options.StartDate = aggDataExportViewModel.StartDateDay.Value;
     options.EndDate   = aggDataExportViewModel.EndDateDay.Value;
     options.SelectedAggregationType = aggDataExportViewModel.SelectedAggregationType.Value;
     options.SelectedXAxisType       = aggDataExportViewModel.SelectedXAxisType.Value;
     options.SeriesWidth             = aggDataExportViewModel.SelectedSeriesWidth;
     options.SelectedSeries          = aggDataExportViewModel.SelectedSeriesType.Value;
     options.SelectedDimension       = aggDataExportViewModel.SelectedDimension;
     SetTimeOptionsFromViewModel(aggDataExportViewModel, options);
     options.FilterSignals              = aggDataExportViewModel.FilterSignals;
     options.FilterMovements            = aggDataExportViewModel.FilterMovements;
     options.FilterDirections           = aggDataExportViewModel.FilterDirections;
     options.SelectedAggregatedDataType =
         options.AggregatedDataTypes.FirstOrDefault(a =>
                                                    a.Id == aggDataExportViewModel.SelectedAggregatedData);
     options.ShowEventCount = aggDataExportViewModel.ShowEventCount;
 }
Пример #9
0
        private ActionResult GetArrivalOnGreenChart(AggDataExportViewModel aggDataExportViewModel)
        {
            ApproachPcdAggregationOptions options = new ApproachPcdAggregationOptions();

            return(GetChart(aggDataExportViewModel, options));
        }
Пример #10
0
        private ActionResult GetLaneByLaneChart(AggDataExportViewModel aggDataExportViewModel)
        {
            DetectorVolumeAggregationOptions options = new DetectorVolumeAggregationOptions();

            return(GetChart(aggDataExportViewModel, options));
        }
Пример #11
0
        private ActionResult GetApproachEventCountChart(AggDataExportViewModel aggDataExportViewModel)
        {
            ApproachEventCountAggregationOptions options = new ApproachEventCountAggregationOptions();

            return(GetChart(aggDataExportViewModel, options));
        }
Пример #12
0
        private ActionResult GetSignalEventCountChart(AggDataExportViewModel aggDataExportViewModel)
        {
            SignalEventCountAggregationOptions options = new SignalEventCountAggregationOptions();

            return(GetChart(aggDataExportViewModel, options));
        }
Пример #13
0
        private ActionResult GetSplitFailChart(AggDataExportViewModel aggDataExportViewModel)
        {
            ApproachSplitFailAggregationOptions options = new ApproachSplitFailAggregationOptions();

            return(GetChart(aggDataExportViewModel, options));
        }
Пример #14
0
        private ActionResult GetPreemptionChart(AggDataExportViewModel aggDataExportViewModel)
        {
            SignalPreemptionAggregationOptions options = new SignalPreemptionAggregationOptions();

            return(GetChart(aggDataExportViewModel, options));
        }
Пример #15
0
        private ActionResult GetPhaseTerminationChart(AggDataExportViewModel aggDataExportViewModel)
        {
            PhaseTerminationAggregationOptions options = new PhaseTerminationAggregationOptions();

            return(GetChart(aggDataExportViewModel, options));
        }
Пример #16
0
        private ActionResult GetYraChart(AggDataExportViewModel aggDataExportViewModel)
        {
            ApproachYellowRedActivationsAggregationOptions options = new ApproachYellowRedActivationsAggregationOptions();

            return(GetChart(aggDataExportViewModel, options));
        }
        private static void SetTimeOptionsFromViewModel(AggDataExportViewModel aggDataExportViewModel, SignalAggregationMetricOptions options)
        {
            string[] startTime;
            string[] endTime;
            int?     startHour   = null;
            int?     startMinute = null;
            int?     endHour     = null;
            int?     endMinute   = null;

            BinFactoryOptions.TimeOptions timeOptions = BinFactoryOptions.TimeOptions.StartToEnd;
            if (!String.IsNullOrEmpty(aggDataExportViewModel.StartTime) &&
                !String.IsNullOrEmpty(aggDataExportViewModel.EndTime))
            {
                startTime = aggDataExportViewModel.StartTime.Split(':');
                startHour = Convert.ToInt32(startTime[0]);
                if (startHour == 12 && aggDataExportViewModel.SelectedStartAMPM.Contains("AM"))
                {
                    startHour = 0;
                }
                if (aggDataExportViewModel.SelectedStartAMPM.Contains("PM"))
                {
                    startHour += 12;
                }
                startMinute = startTime.Length > 1 ? Convert.ToInt32(startTime[1]) : 0;
                endTime     = aggDataExportViewModel.EndTime.Split(':');
                endHour     = Convert.ToInt32(endTime[0]);
                if (endHour == 12 && aggDataExportViewModel.SelectedEndAMPM.Contains("AM"))
                {
                    endHour = 0;
                }
                if (aggDataExportViewModel.SelectedEndAMPM.Contains("PM") && endHour < 12)
                {
                    endHour += 12;
                }
                endMinute = endTime.Length > 1 ? Convert.ToInt32(endTime[1]) : 0;
                //timeOptions = BinFactoryOptions.TimeOptions.TimePeriod;
                aggDataExportViewModel.StartDateDay = aggDataExportViewModel.StartDateDay.Value
                                                      .AddHours(startHour.Value).AddMinutes(startMinute.Value);
                aggDataExportViewModel.EndDateDay = aggDataExportViewModel.EndDateDay.Value
                                                    .AddHours(endHour.Value).AddMinutes(endMinute.Value);
            }
            else
            {
                startHour   = 0;
                startMinute = 0;
                endHour     = 23;
                endMinute   = 59;
                aggDataExportViewModel.EndDateDay = aggDataExportViewModel.EndDateDay.Value
                                                    .AddHours(23).AddMinutes(59);
            }
            List <DayOfWeek> daysOfWeek = new List <DayOfWeek>();

            if (aggDataExportViewModel.Weekends)
            {
                daysOfWeek.AddRange(new List <DayOfWeek> {
                    DayOfWeek.Sunday, DayOfWeek.Saturday
                });
            }
            if (aggDataExportViewModel.Weekdays)
            {
                daysOfWeek.AddRange(new List <DayOfWeek> {
                    DayOfWeek.Monday, DayOfWeek.Tuesday, DayOfWeek.Wednesday, DayOfWeek.Thursday, DayOfWeek.Friday
                });
            }
            BinFactoryOptions.BinSize binSize = (BinFactoryOptions.BinSize)aggDataExportViewModel.SelectedBinSize;
            switch (aggDataExportViewModel.SelectedXAxisType)
            {
            case XAxisType.Time:
            {
                timeOptions = BinFactoryOptions.TimeOptions.StartToEnd;
                break;
            }

            case XAxisType.TimeOfDay:
            {
                timeOptions = BinFactoryOptions.TimeOptions.TimePeriod;
                break;
            }

            default:
            {
                timeOptions = BinFactoryOptions.TimeOptions.StartToEnd;
                break;
            }
            }

            options.TimeOptions = new BinFactoryOptions(
                aggDataExportViewModel.StartDateDay.Value,
                aggDataExportViewModel.EndDateDay.Value,
                startHour, startMinute, endHour, endMinute, daysOfWeek,
                binSize,
                timeOptions);
        }