public override List <string> CreateMetric() { base.CreateMetric(); var sr = SignalsRepositoryFactory.Create(); var signal = sr.GetVersionOfSignalByDate(SignalID, StartDate); var speedApproaches = signal.GetApproachesForSignalThatSupportMetric(10); if (speedApproaches.Count > 0) { foreach (var approach in speedApproaches) { var speedDets = approach.GetDetectorsForMetricType(10); foreach (var det in speedDets) { var chart = GetNewSpeedChart(det); AddSpeedDataToChart(chart, det, StartDate, EndDate, SelectedBinSize); var chartName = CreateFileName(); chart.ImageLocation = MetricFileLocation + chartName; chart.SaveImage(MetricFileLocation + chartName, ChartImageFormat.Jpeg); ReturnList.Add(MetricWebPath + chartName); } } } return(ReturnList); }
/// <summary> /// Chunks an IEnumerable into multiple lists of a specified size /// </summary> /// <typeparam name="T"></typeparam> /// <param name="input"></param> /// <param name="chunkSize"></param> /// <returns></returns> private static IEnumerable <List <T> > ChunkList <T>(IEnumerable <T> input, int chunkSize) { if (chunkSize <= 0) { throw new ArgumentOutOfRangeException("chunkSize", "The chunk size must be greater than 0."); } if (input == null) { throw new ArgumentNullException("input"); } if (input.Any()) { IEnumerator <T> Enumerator = input.GetEnumerator(); List <T> ReturnList = new List <T>(chunkSize); int Counter = 1; while (Enumerator.MoveNext()) { if (Counter >= chunkSize) { yield return(ReturnList); ReturnList = new List <T>(); Counter = 1; } ReturnList.Add(Enumerator.Current); Counter++; } yield return(ReturnList); } }
public override List <string> CreateMetric() { base.CreateMetric(); var signalRepository = SignalsRepositoryFactory.Create(); Signal = signalRepository.GetVersionOfSignalByDate(SignalID, StartDate); MetricTypeID = 6; var chart = new Chart(); var metricApproaches = Signal.GetApproachesForSignalThatSupportMetric(MetricTypeID); if (metricApproaches.Count > 0) { foreach (var approach in metricApproaches) { var signalPhase = new SignalPhase(StartDate, EndDate, approach, ShowVolumes, SelectedBinSize, MetricTypeID, false); chart = GetNewChart(); AddDataToChart(chart, signalPhase); var chartName = CreateFileName(); chart.ImageLocation = MetricFileLocation + chartName; chart.SaveImage(MetricFileLocation + chartName, ChartImageFormat.Jpeg); ReturnList.Add(MetricWebPath + chartName); } } return(ReturnList); }
private void CreateLegend() { var dummychart = new Chart(); var chartarea1 = new ChartArea(); ChartFactory.SetImageProperties(dummychart); dummychart.BorderlineDashStyle = ChartDashStyle.Dot; var PedActivity = new Series(); var GapoutSeries = new Series(); var MaxOutSeries = new Series(); var ForceOffSeries = new Series(); var UnknownSeries = new Series(); PedActivity.Name = "Ped Activity"; GapoutSeries.Name = "Gap Out"; MaxOutSeries.Name = "Max Out"; ForceOffSeries.Name = "Force Off"; UnknownSeries.Name = "Unknown"; PedActivity.MarkerStyle = MarkerStyle.Cross; GapoutSeries.MarkerStyle = MarkerStyle.Circle; MaxOutSeries.MarkerStyle = MarkerStyle.Circle; ForceOffSeries.MarkerStyle = MarkerStyle.Circle; UnknownSeries.MarkerStyle = MarkerStyle.Circle; GapoutSeries.Color = Color.OliveDrab; PedActivity.Color = Color.DarkGoldenrod; MaxOutSeries.Color = Color.Red; ForceOffSeries.Color = Color.MediumBlue; UnknownSeries.Color = Color.FromArgb(255, 255, 0); dummychart.Series.Add(GapoutSeries); dummychart.Series.Add(MaxOutSeries); dummychart.Series.Add(ForceOffSeries); dummychart.Series.Add(UnknownSeries); dummychart.Series.Add(PedActivity); dummychart.ChartAreas.Add(chartarea1); var dummychartLegend = new Legend(); dummychartLegend.Name = "DummyLegend"; dummychartLegend.IsDockedInsideChartArea = true; dummychartLegend.Title = "Chart Legend"; dummychartLegend.Docking = Docking.Top; dummychartLegend.Alignment = StringAlignment.Center; dummychart.Legends.Add(dummychartLegend); dummychart.Height = 100; dummychart.SaveImage(MetricFileLocation + "PPTLegend.jpeg", ChartImageFormat.Jpeg); ReturnList.Add(MetricWebPath + "PPTLegend.jpeg"); }
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); }
private void CreateLegend() { var dummyChart = new Chart(); var chartArea = new ChartArea(); ChartFactory.SetImageProperties(dummyChart); dummyChart.BorderlineDashStyle = ChartDashStyle.Dot; var shortGapSeries = CreateChartSeries(Color.Red, SeriesChartType.StackedColumn, ChartValueType.DateTime, AxisType.Primary, $"{Gap1Min} - {Gap1Max} seconds"); var mediumGapSeries = CreateChartSeries(Color.LawnGreen, SeriesChartType.StackedColumn, ChartValueType.DateTime, AxisType.Primary, $"{Gap2Min} - {Gap2Max} seconds"); var largeGapSeries = CreateChartSeries(Color.Green, SeriesChartType.StackedColumn, ChartValueType.DateTime, AxisType.Primary, $"{Gap3Min} - {Gap3Max} seconds"); var hugeGapSeries = CreateChartSeries(Color.LightSeaGreen, SeriesChartType.StackedColumn, ChartValueType.DateTime, AxisType.Primary, $"{Gap4Min}+ seconds"); var percentTurnableSeries = CreateChartSeries(Color.Blue, SeriesChartType.Line, ChartValueType.DateTime, AxisType.Secondary, $"% Green Time > {TrendLineGapThreshold} seconds"); //Reverse order for the legend dummyChart.Series.Add(percentTurnableSeries); dummyChart.Series.Add(hugeGapSeries); dummyChart.Series.Add(largeGapSeries); dummyChart.Series.Add(mediumGapSeries); dummyChart.Series.Add(shortGapSeries); dummyChart.ChartAreas.Add(chartArea); var dummyChartLegend = new Legend { Name = "DummyLegend", IsDockedInsideChartArea = true, Title = "Chart Legend", Docking = Docking.Top, Alignment = StringAlignment.Center }; dummyChart.Legends.Add(dummyChartLegend); //Randomize the legend name to prevent caching if options change var chartName = "LTGALegend-"; var r = new Random(); chartName += r.Next().ToString(); chartName += ".jpeg"; dummyChart.Height = 100; dummyChart.SaveImage(MetricFileLocation + chartName, ChartImageFormat.Jpeg); ReturnList.Add(MetricWebPath + chartName); }
private void CreateChart(Approach approach, ControllerEventLogs eventLogs, Signal signal) { var phaseEvents = new List <Controller_Event_Log>(); phaseEvents.AddRange(eventLogs.Events.Where(x => x.EventParam == approach.ProtectedPhaseNumber && (x.EventCode == EVENT_GREEN || x.EventCode == EVENT_RED))); var detectorsToUse = new List <Models.Detector>(); var detectionTypeStr = "Lane-By-Lane Count"; //Use only lane-by-lane count detectors if they exists, otherwise check for stop bar detectorsToUse = approach.GetAllDetectorsOfDetectionType(4); if (!detectorsToUse.Any()) { detectorsToUse = approach.GetAllDetectorsOfDetectionType(6); detectionTypeStr = "Stop Bar Presence"; //If no detectors of either type for this approach, skip it if (!detectorsToUse.Any()) { return; } } foreach (var detector in detectorsToUse) { // Check for thru, right, thru-right, and thru-left if (!IsThruDetector(detector)) { continue; } phaseEvents.AddRange(eventLogs.Events.Where(x => x.EventCode == EVENT_DET && x.EventParam == detector.DetChannel)); } if (phaseEvents.Any()) { var leftTurnChart = new LeftTurnGapAnalysisChart(this, signal, approach, phaseEvents, GetOpposingPhase(approach.ProtectedPhaseNumber), StartDate, EndDate, detectionTypeStr); var chart = leftTurnChart.Chart; var chartName = CreateFileName(); chart.SaveImage(MetricFileLocation + chartName); ReturnList.Add(MetricWebPath + chartName); } }
protected void SaveChartImage(Chart chart) { if (ResultChartAndXmlLocations == null) { ResultChartAndXmlLocations = new List <Tuple <string, string> >(); } XmlDocument xmlDocument = GetXmlForChart(chart); string xmlChartName = CreateFileName(MetricType.Abbreviation, ".xml"); xmlDocument.Save(MetricFileLocation + xmlChartName); var chartName = CreateFileName(MetricType.Abbreviation, ".jpg"); chart.SaveImage(MetricFileLocation + chartName, ChartImageFormat.Jpeg); ResultChartAndXmlLocations.Add(new Tuple <string, string>(MetricWebPath + chartName, MetricWebPath + xmlChartName)); ReturnList.Add(MetricWebPath + chartName); }
private void GetChartLegend() { if (ReturnList == null) { ReturnList = new List <string>(); } var taaLegendChart = new TimingAndActuationsChartForPhase(true); if (taaLegendChart.Chart != null) { taaLegendChart.Chart.BackColor = Color.Goldenrod; var chartName = CreateFileName(); taaLegendChart.Chart.ImageLocation = MetricFileLocation + chartName; taaLegendChart.Chart.SaveImage(MetricFileLocation + chartName, ChartImageFormat.Jpeg); ReturnList.Add(MetricWebPath + chartName); } }
private void GetGlobalChart(GlobalGetDataTimingAndActuations globalGetDataTimingAndActuations, TimingAndActuationsOptions options) { if (ReturnList == null) { ReturnList = new List <string>(); } var taaGlobalChart = new ChartForGlobalEventsTimingAndActuations(globalGetDataTimingAndActuations, options) { Chart = { BackColor = Color.LightSkyBlue } }; var chartName = CreateFileName(); taaGlobalChart.Chart.ImageLocation = MetricFileLocation + chartName; taaGlobalChart.Chart.SaveImage(MetricFileLocation + chartName, ChartImageFormat.Jpeg); ReturnList.Add(MetricWebPath + chartName); }
public override List <string> CreateMetric() { base.CreateMetric(); var pds = new PedDelaySignal(SignalID, StartDate, EndDate); foreach (var p in pds.PedPhases) { if (p.Cycles.Count > 0) { var pdc = new PEDDelayChart(this, p); var chart = pdc.chart; var chartName = CreateFileName(); chart.SaveImage(MetricFileLocation + chartName); ReturnList.Add(MetricWebPath + chartName); } } return(ReturnList); }
public override List <string> CreateMetric() { base.CreateMetric(); string location = GetSignalLocation(); Chart chart = new Chart(); MOE.Common.Business.AnalysisPhaseCollection analysisPhaseCollection = new MOE.Common.Business.AnalysisPhaseCollection(SignalID, StartDate, EndDate, SelectedConsecutiveCount); //If there are phases in the collection add the charts if (analysisPhaseCollection.Items.Count > 0) { chart = GetNewTermEventChart(StartDate, EndDate, SignalID, location, SelectedConsecutiveCount, analysisPhaseCollection.MaxPhaseInUse, ShowPedActivity); AddTermEventDataToChart(chart, StartDate, EndDate, analysisPhaseCollection, SignalID, ShowPedActivity, ShowPlanStripes); } string chartName = CreateFileName(); List <Title> removethese = new List <Title>(); foreach (Title t in chart.Titles) { if (t.Text == "" || t.Text == null) { removethese.Add(t); } } foreach (Title t in removethese) { chart.Titles.Remove(t); } //Save an image of the chart chart.SaveImage(MetricFileLocation + chartName, System.Web.UI.DataVisualization.Charting.ChartImageFormat.Jpeg); ReturnList.Add(MetricWebPath + chartName); return(ReturnList); }
public override List <string> CreateMetric() { base.CreateMetric(); var location = GetSignalLocation(); var chart = ChartFactory.CreateDefaultChartNoX2Axis(this); CreateLegend(); var analysisPhaseCollection = new AnalysisPhaseCollection(SignalID, StartDate, EndDate, SelectedConsecutiveCount); //If there are phases in the collection add the charts if (analysisPhaseCollection.Items.Count > 0) { chart = GetNewTermEventChart(StartDate, EndDate, SignalID, location, SelectedConsecutiveCount, analysisPhaseCollection.MaxPhaseInUse, ShowPedActivity); AddTermEventDataToChart(chart, StartDate, EndDate, analysisPhaseCollection, SignalID, ShowPedActivity, ShowPlanStripes); } var chartName = CreateFileName(); var removethese = new List <Title>(); foreach (var t in chart.Titles) { if (t.Text == "" || t.Text == null) { removethese.Add(t); } } foreach (var t in removethese) { chart.Titles.Remove(t); } //Save an image of the chart chart.SaveImage(MetricFileLocation + chartName, ChartImageFormat.Jpeg); ReturnList.Add(MetricWebPath + chartName); return(ReturnList); }
public override List <string> CreateMetric() { base.CreateMetric(); MOE.Common.Business.PEDDelay.PedDelaySignal pds = new MOE.Common.Business.PEDDelay.PedDelaySignal(SignalID, StartDate, EndDate); foreach (MOE.Common.Business.PEDDelay.PedPhase p in pds.PedPhases) { if (p.Cycles.Count > 0) { MOE.Common.Business.PEDDelay.PEDDelayChart pdc = new MOE.Common.Business.PEDDelay.PEDDelayChart(this, p); Chart chart = pdc.chart; string chartName = CreateFileName(); chart.SaveImage(MetricFileLocation + chartName); ReturnList.Add(MetricWebPath + chartName); } } return(ReturnList); }
private void GetChart(TimingAndActuationsForPhase timingAndActutionsForPhase) { if (ReturnList == null) { ReturnList = new List <string>(); } var taaChart = new TimingAndActuationsChartForPhase(timingAndActutionsForPhase); if (taaChart.Chart != null) { if (timingAndActutionsForPhase.GetPermissivePhase) { taaChart.Chart.BackColor = Color.LightGray; } var chartName = CreateFileName(); taaChart.Chart.ImageLocation = MetricFileLocation + chartName; taaChart.Chart.SaveImage(MetricFileLocation + chartName, ChartImageFormat.Jpeg); ReturnList.Add(MetricWebPath + chartName); } }
public override List <string> CreateMetric() { base.CreateMetric(); string location = GetSignalLocation(); MOE.Common.Business.SignalPhaseCollection signalphasecollection = new MOE.Common.Business.SignalPhaseCollection(StartDate, EndDate, SignalID, ShowPlanStatistics, SelectedBinSize, 8); foreach (MOE.Common.Business.SignalPhase signalPhase in signalphasecollection.SignalPhaseList) { MOE.Common.Business.DelayChart delayChart = new MOE.Common.Business.DelayChart(this, signalPhase); Chart chart = delayChart.chart; string chartName = CreateFileName(); var removethese = new List <Title>(); foreach (Title t in chart.Titles) { if (t.Text == "" || t.Text == null) { removethese.Add(t); } } foreach (Title t in removethese) { chart.Titles.Remove(t); } //Save an image of the chart chart.SaveImage(MetricFileLocation + chartName, System.Web.UI.DataVisualization.Charting.ChartImageFormat.Jpeg); ReturnList.Add(MetricWebPath + chartName); } return(ReturnList); }
private void PopulateReturnList() { if (ItemsToReturn > 0) { List <string> temp = OrderDataBase.GetBorrowingData(CustomerID); foreach (string p in temp) { string[] tempstring = p.Split(','); ReturnList.Add(new LoanItem(Convert.ToInt32(tempstring[0]), Convert.ToInt32(tempstring[1]))); } foreach (LoanItem p in ReturnList) { string m = OrderDataBase.GetItemName(p.ID); string[] tempm = m.Split('-'); p.UpdateName(tempm[0]); p.UpdatePenalty(Convert.ToDouble(tempm[1])); } } }
public override List <string> CreateMetric() { base.CreateMetric(); var location = GetSignalLocation(); var signalphasecollection = new SignalPhaseCollection(StartDate, EndDate, SignalID, ShowPlanStatistics, SelectedBinSize, 8); foreach (var signalPhase in signalphasecollection.SignalPhaseList) { var delayChart = new DelayChart(this, signalPhase); var chart = delayChart.chart; var chartName = CreateFileName(); var removethese = new List <Title>(); foreach (var t in chart.Titles) { if (t.Text == "" || t.Text == null) { removethese.Add(t); } } foreach (var t in removethese) { chart.Titles.Remove(t); } //Save an image of the chart chart.SaveImage(MetricFileLocation + chartName, ChartImageFormat.Jpeg); ReturnList.Add(MetricWebPath + chartName); } return(ReturnList); }
public override List <string> CreateMetric() { base.CreateMetric(); var signalRepository = Models.Repositories.SignalsRepositoryFactory.Create(); Models.Signal signal = signalRepository.GetVersionOfSignalByDate(SignalID, StartDate); var pds = new PedDelaySignal(signal, StartDate, EndDate); foreach (var p in pds.PedPhases) { if (p.Cycles.Count > 0) { var pdc = new PEDDelayChart(this, p); var chart = pdc.Chart; var chartName = CreateFileName(); chart.SaveImage(MetricFileLocation + chartName); ReturnList.Add(MetricWebPath + chartName); } } return(ReturnList); }
public List <int> BridgeJumper(List <BridgeElement> ElementList, int Match) { List <List <int> > ReturnLists = new List <List <int> >(); List <int> ReturnList = new List <int>(); int NextMatch; if (Left == Match) { NextMatch = Right; } else { NextMatch = Left; } foreach (BridgeElement b in ElementList) { if (b.Contains(NextMatch)) { List <BridgeElement> TempList = new List <BridgeElement>(ElementList); TempList.Remove(b); ReturnLists.Add(b.BridgeJumper(TempList, NextMatch)); } } foreach (List <int> l in ReturnLists) { if (l.Count > ReturnList.Count) { ReturnList = new List <int>(l); } else if (l.Count == ReturnList.Count && l.Sum() > ReturnList.Sum()) { ReturnList = new List <int>(l); } } ReturnList.Add(Left); ReturnList.Add(Right); return(ReturnList); }
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); }
public override List <string> CreateMetric() { base.CreateMetric(); MOE.Common.Business.AnalysisPhaseCollection analysisPhaseCollection = new MOE.Common.Business.AnalysisPhaseCollection(SignalID, StartDate, EndDate); //If there are phases in the collection add the charts if (analysisPhaseCollection.Items.Count > 0) { foreach (MOE.Common.Business.Plan plan in analysisPhaseCollection.Plans.PlanList) { plan.SetProgrammedSplits(SignalID); plan.SetHighCycleCount(analysisPhaseCollection); } //If there are phases in the collection add the charts //dummy chart to create a legend for the entire split monitor page. Chart dummychart = new Chart(); ChartArea chartarea1 = new ChartArea(); dummychart.ImageType = ChartImageType.Jpeg; dummychart.Height = 200; dummychart.Width = 800; //add comments to the chart dummychart.ImageStorageMode = ImageStorageMode.UseImageLocation; dummychart.BorderlineDashStyle = ChartDashStyle.Dot; Series PedActivity = new Series(); Series GapoutSeries = new Series(); Series MaxOutSeries = new Series(); Series ForceOffSeries = new Series(); Series ProgramedSplit = new Series(); Series UnknownSeries = new Series(); PedActivity.Name = "Ped Activity"; GapoutSeries.Name = "Gap Out"; MaxOutSeries.Name = "Max Out"; ForceOffSeries.Name = "Force Off"; ProgramedSplit.Name = "Programmed Split"; UnknownSeries.Name = "Unknown Termination Cause"; PedActivity.MarkerStyle = MarkerStyle.Cross; GapoutSeries.MarkerStyle = MarkerStyle.Circle; MaxOutSeries.MarkerStyle = MarkerStyle.Circle; ForceOffSeries.MarkerStyle = MarkerStyle.Circle; ProgramedSplit.BorderDashStyle = ChartDashStyle.Solid; UnknownSeries.MarkerStyle = MarkerStyle.Circle; GapoutSeries.Color = Color.OliveDrab; PedActivity.Color = Color.DarkGoldenrod; MaxOutSeries.Color = Color.Red; ForceOffSeries.Color = Color.MediumBlue; ProgramedSplit.Color = Color.OrangeRed; UnknownSeries.Color = Color.Black; dummychart.Series.Add(ProgramedSplit); dummychart.Series.Add(GapoutSeries); dummychart.Series.Add(MaxOutSeries); dummychart.Series.Add(ForceOffSeries); dummychart.Series.Add(UnknownSeries); dummychart.Series.Add(PedActivity); dummychart.ChartAreas.Add(chartarea1); Legend dummychartLegend = new Legend(); dummychartLegend.Name = "DummyLegend"; dummychartLegend.IsDockedInsideChartArea = true; dummychartLegend.Title = "Chart Legend"; dummychartLegend.Docking = Docking.Bottom; dummychartLegend.Alignment = StringAlignment.Center; dummychart.Legends.Add(dummychartLegend); List <Title> removethese = new List <Title>(); foreach (Title t in dummychart.Titles) { if (t.Text == "" || t.Text == null) { removethese.Add(t); } } foreach (Title t in removethese) { dummychart.Titles.Remove(t); } string dummyChartFileName = CreateFileName(); dummychart.SaveImage(MetricFileLocation + dummyChartFileName); ReturnList.Add(MetricWebPath + dummyChartFileName); if (analysisPhaseCollection.Items.Count > 0) { var phasesInOrder = (from r in analysisPhaseCollection.Items select r).OrderBy(r => r.PhaseNumber); foreach (MOE.Common.Business.AnalysisPhase Phase in phasesInOrder) { Chart chart = GetNewSplitMonitorChart(StartDate, EndDate, SignalID, GetSignalLocation(), Phase.PhaseNumber); AddSplitMonitorDataToChart(chart, StartDate, EndDate, Phase, SignalID, analysisPhaseCollection.Plans); if (ShowPlanStripes) { SetSimplePlanStrips(analysisPhaseCollection.Plans, chart, StartDate); SetSplitMonitorStatistics(analysisPhaseCollection.Plans, Phase, chart); } string chartFileName = CreateFileName(); removethese = new List <Title>(); foreach (Title t in chart.Titles) { if (t.Text == "" || t.Text == null) { removethese.Add(t); } } foreach (Title t in removethese) { chart.Titles.Remove(t); } chart.SaveImage(MetricFileLocation + chartFileName); ReturnList.Add(MetricWebPath + chartFileName); } } } return(ReturnList); }
private void CreateLegend() { Chart dummychart = new Chart(); ChartArea chartarea1 = new ChartArea(); dummychart.ImageType = ChartImageType.Jpeg; dummychart.Height = 200; dummychart.Width = 1100; dummychart.ImageStorageMode = ImageStorageMode.UseImageLocation; dummychart.BorderlineDashStyle = ChartDashStyle.Dot; Series PedActivity = new Series(); Series GapoutSeries = new Series(); Series MaxOutSeries = new Series(); Series ForceOffSeries = new Series(); Series UnknownSeries = new Series(); PedActivity.Name = "Ped Activity"; GapoutSeries.Name = "Gap Out"; MaxOutSeries.Name = "Max Out"; ForceOffSeries.Name = "Force Off"; UnknownSeries.Name = "Unknown"; PedActivity.MarkerStyle = MarkerStyle.Cross; GapoutSeries.MarkerStyle = MarkerStyle.Circle; MaxOutSeries.MarkerStyle = MarkerStyle.Circle; ForceOffSeries.MarkerStyle = MarkerStyle.Circle; UnknownSeries.MarkerStyle = MarkerStyle.Circle; GapoutSeries.Color = Color.OliveDrab; PedActivity.Color = Color.DarkGoldenrod; MaxOutSeries.Color = Color.Red; ForceOffSeries.Color = Color.MediumBlue; UnknownSeries.Color = Color.FromArgb(255, 255, 0); dummychart.Series.Add(GapoutSeries); dummychart.Series.Add(MaxOutSeries); dummychart.Series.Add(ForceOffSeries); dummychart.Series.Add(UnknownSeries); dummychart.Series.Add(PedActivity); dummychart.ChartAreas.Add(chartarea1); Legend dummychartLegend = new Legend(); dummychartLegend.Name = "DummyLegend"; dummychartLegend.IsDockedInsideChartArea = true; dummychartLegend.Title = "Chart Legend"; dummychartLegend.Docking = Docking.Top; dummychartLegend.Alignment = StringAlignment.Center; dummychart.Legends.Add(dummychartLegend); dummychart.SaveImage(MetricFileLocation + "PPTLegend.jpeg", System.Web.UI.DataVisualization.Charting.ChartImageFormat.Jpeg); ReturnList.Add(MetricWebPath + "PPTLegend.jpeg"); }
public override List <string> CreateMetric() { base.CreateMetric(); var analysisPhaseCollection = new AnalysisPhaseCollection(SignalID, StartDate, EndDate); //If there are phases in the collection add the charts if (analysisPhaseCollection.Items.Count > 0) { foreach (var plan in analysisPhaseCollection.Plans) { plan.SetProgrammedSplits(SignalID); plan.SetHighCycleCount(analysisPhaseCollection); } //If there are phases in the collection add the charts //dummy chart to create a legend for the entire split monitor page. var dummychart = new Chart(); var chartarea1 = new ChartArea(); ChartFactory.SetImageProperties(dummychart); dummychart.BorderlineDashStyle = ChartDashStyle.Dot; dummychart.Height = 100; var PedActivity = new Series(); var GapoutSeries = new Series(); var MaxOutSeries = new Series(); var ForceOffSeries = new Series(); var ProgramedSplit = new Series(); var UnknownSeries = new Series(); PedActivity.Name = "Ped Activity"; GapoutSeries.Name = "Gap Out"; MaxOutSeries.Name = "Max Out"; ForceOffSeries.Name = "Force Off"; ProgramedSplit.Name = "Programmed Split"; UnknownSeries.Name = "Unknown Termination Cause"; PedActivity.MarkerStyle = MarkerStyle.Cross; GapoutSeries.MarkerStyle = MarkerStyle.Circle; MaxOutSeries.MarkerStyle = MarkerStyle.Circle; ForceOffSeries.MarkerStyle = MarkerStyle.Circle; ProgramedSplit.BorderDashStyle = ChartDashStyle.Solid; UnknownSeries.MarkerStyle = MarkerStyle.Circle; GapoutSeries.Color = Color.OliveDrab; PedActivity.Color = Color.DarkGoldenrod; MaxOutSeries.Color = Color.Red; ForceOffSeries.Color = Color.MediumBlue; ProgramedSplit.Color = Color.OrangeRed; UnknownSeries.Color = Color.Black; dummychart.Series.Add(ProgramedSplit); dummychart.Series.Add(GapoutSeries); dummychart.Series.Add(MaxOutSeries); dummychart.Series.Add(ForceOffSeries); dummychart.Series.Add(UnknownSeries); dummychart.Series.Add(PedActivity); dummychart.ChartAreas.Add(chartarea1); var dummychartLegend = new Legend(); dummychartLegend.Name = "DummyLegend"; dummychartLegend.IsDockedInsideChartArea = true; dummychartLegend.Title = "Chart Legend"; dummychartLegend.Docking = Docking.Bottom; dummychartLegend.Alignment = StringAlignment.Center; dummychart.Legends.Add(dummychartLegend); var removethese = new List <Title>(); foreach (var t in dummychart.Titles) { if (string.IsNullOrEmpty(t.Text)) { removethese.Add(t); } } foreach (var t in removethese) { dummychart.Titles.Remove(t); } var dummyChartFileName = CreateFileName(); dummychart.SaveImage(MetricFileLocation + dummyChartFileName); ReturnList.Add(MetricWebPath + dummyChartFileName); if (analysisPhaseCollection.Items.Count > 0) { var phasesInOrder = (analysisPhaseCollection.Items.Select(r => r)).OrderBy(r => r.PhaseNumber); foreach (var phase in phasesInOrder) { var chart = GetNewSplitMonitorChart(StartDate, EndDate, phase.PhaseNumber); AddSplitMonitorDataToChart(chart, phase, analysisPhaseCollection.Plans); if (ShowPlanStripes) { SetSimplePlanStrips(analysisPhaseCollection.Plans, chart, StartDate); SetSplitMonitorStatistics(analysisPhaseCollection.Plans, phase, chart); } var chartFileName = CreateFileName(); removethese = new List <Title>(); foreach (var t in chart.Titles) { if (string.IsNullOrEmpty(t.Text)) { removethese.Add(t); } } foreach (var t in removethese) { chart.Titles.Remove(t); } chart.SaveImage(MetricFileLocation + chartFileName); ReturnList.Add(MetricWebPath + chartFileName); } } } return(ReturnList); }