private async Task <IActionResult> OriginalComparison(LogComparisonModel model) { var dives = await _apiHelper.CompareDives(model.Depth, model.Time, model.DiveType); if (!ModelState.IsValid) { return(View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier })); } var resultsModel = new LogComparisonResultsModel(); foreach (var dive in dives) { var diveProfile = new DiveProfile(); foreach (var dp in dive.DataPoints.OrderBy(x => x.Time)) { var datapoint = new DataPoint(dp.Time, Convert.ToDouble(dp.Depth)); diveProfile.Datapoints.Add(datapoint); } resultsModel.DiveProfiles.Add(diveProfile); } return(View(resultsModel)); }
private async Task <IActionResult> EndLoadedComparison(LogComparisonModel model) { var dives = await _apiHelper.CompareDives(model.Depth, model.Time, model.DiveType); if (!ModelState.IsValid) { return(View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier })); } var resultsModel = new LogComparisonResultsModel(); if (dives.Any()) { var longestDive = dives.OrderByDescending(x => x.DiveLength).First(); foreach (var dive in dives) { var diveProfile = new DiveProfile(); var diveOffset = longestDive.DiveLength.Subtract(dive.DiveLength); var orderedDatapoints = dive.DataPoints.OrderBy(x => x.Time).ToList(); var logInterval = orderedDatapoints[1].Time - orderedDatapoints[0].Time; var blankValuesCount = diveOffset.TotalSeconds / logInterval; var count = 0; while (blankValuesCount > 0) { diveProfile.Datapoints.Add(new DataPoint(count * logInterval, 0)); count++; blankValuesCount--; } foreach (var dp in orderedDatapoints) { var datapoint = new DataPoint(dp.Time + diveOffset.TotalSeconds, Convert.ToDouble(dp.Depth)); diveProfile.Datapoints.Add(datapoint); } resultsModel.DiveProfiles.Add(diveProfile); } } return(View(resultsModel)); }
public void RunToleratedAmbientPressureStage(double[] mockTissuePressuresTotal, double[] mockAValues, double[] mockBValues, double[] toleratedAmbientPressuresResult) { _diveProfile = DiveProfileHelper.InitaliseDiveProfile(); _diveProfile.TissuePressuresTotal = new List <double>(mockTissuePressuresTotal); _diveProfile.AValues = new List <double>(mockAValues); _diveProfile.BValues = new List <double>(mockBValues); var diveStage = new DiveStageToleratedAmbientPressure(_diveModel.CompartmentCount, _diveProfile); //Act for (int i = 0; i < _diveModel.CompartmentCount; i++) { diveStage.RunStage(); //Assert Assert.Equal(toleratedAmbientPressuresResult[i], _diveProfile.ToleratedAmbientPressures[i], 4); } }
public void RunCompartmentLoadStage(double[] mockTissuePressuresTotal, double[] mockMaxSurfacePressure, double[] compartmentLoadResult) { //Arrange _diveProfile = DiveProfileHelper.InitaliseDiveProfile(); _diveProfile.TissuePressuresTotal = new List <double>(mockTissuePressuresTotal); _diveProfile.MaxSurfacePressures = new List <double>(mockMaxSurfacePressure); var diveStage = new DiveStageCompartmentLoad(_diveModel, _diveProfile); //Act for (int i = 0; i < _diveModel.CompartmentCount; i++) { diveStage.RunStage(); //Assert Assert.Equal(compartmentLoadResult[i], _diveProfile.CompartmentLoad[i], 4); } }
public void RunMaximumSurfacePressureStage(double[] mockAValues, double[] mockBValues, double[] maxSurfacePressureResult) { //Arrange _diveProfile = DiveProfileHelper.InitaliseDiveProfile(); _diveProfile.AValues = new List <double>(mockAValues); _diveProfile.BValues = new List <double>(mockBValues); var diveStage = new DiveStageMaximumSurfacePressure(_diveModel.CompartmentCount, _diveProfile); //Act for (int i = 0; i < _diveModel.CompartmentCount; i++) { diveStage.RunStage(); //Assert Assert.Equal(maxSurfacePressureResult[i], _diveProfile.MaxSurfacePressures[i], 4); } }
public static DiveProfile InitaliseDiveProfile() { var diveModel = new Zhl16Buhlmann(); var diveProfile = new DiveProfile(); for (int i = 0; i < diveModel.CompartmentCount; i++) { diveProfile.MaxSurfacePressures.Add(0.0); diveProfile.ToleratedAmbientPressures.Add(0.0); diveProfile.CompartmentLoad.Add(0.0); diveProfile.TissuePressuresNitrogen.Add(0.79); diveProfile.TissuePressuresHelium.Add(0.0); diveProfile.TissuePressuresTotal.Add(0.0); diveProfile.AValues.Add(0.0); diveProfile.BValues.Add(0.0); } return(diveProfile); }
public void RunAbValuesStage(double[] mockTissuePressureNitrogen, double[] mockTissuePressureHelium, double[] mockTissuePressureTotal, double[] aValueResult, double[] bValueResult) { //Arrange _diveProfile = DiveProfileHelper.InitaliseDiveProfile(); _diveProfile.TissuePressuresNitrogen = new List <double>(mockTissuePressureNitrogen); _diveProfile.TissuePressuresHelium = new List <double>(mockTissuePressureHelium); _diveProfile.TissuePressuresTotal = new List <double>(mockTissuePressureTotal); var diveStage = new DiveStageAbValues(_diveModel, _diveProfile); //Act for (int i = 0; i < _diveModel.CompartmentCount; i++) { diveStage.RunStage(); //Assert Assert.Equal(aValueResult[i], _diveProfile.AValues[i], 4); Assert.Equal(bValueResult[i], _diveProfile.BValues[i], 4); } }
public async Task <IActionResult> LogSearcherResults(LogSearcherModel model) { var dives = await _apiHelper.SearchDives( model.DiveType, model.TargetDepth, model.TargetDepthRange, model.TargetDiveTime, model.TargetDiveTimeRange); if (!ModelState.IsValid) { return(View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier })); } var resultsModel = new LogSearcherResultsModel(); foreach (var dive in dives) { var diveProfile = new DiveProfile(); diveProfile.Index = dives.FindIndex(d => d.Equals(dive)); diveProfile.DiveDate = dive.DiveDate; // Change this to sample data points for mini graphs foreach (var dp in dive.DataPoints) { var datapoint = new DataPoint(dp.Time, Convert.ToDouble(dp.Depth), cns: dp.CNS, averagePPO2: Convert.ToDouble(dp.AveragePPO2)); diveProfile.Datapoints.Add(datapoint); } resultsModel.DiveProfiles.Add(diveProfile); } return(View(resultsModel)); }