diff --git a/projects/planner/src/app/app.module.ts b/projects/planner/src/app/app.module.ts index 6c23e782..2c83f443 100644 --- a/projects/planner/src/app/app.module.ts +++ b/projects/planner/src/app/app.module.ts @@ -1,94 +1,99 @@ -import { BrowserModule } from '@angular/platform-browser'; -import { NgModule } from '@angular/core'; -import { ReactiveFormsModule } from '@angular/forms'; -import { ServiceWorkerModule } from '@angular/service-worker'; -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; -import { DatePipe, DecimalPipe } from '@angular/common'; +import {BrowserModule} from '@angular/platform-browser'; +import {NgModule} from '@angular/core'; +import {ReactiveFormsModule} from '@angular/forms'; +import {ServiceWorkerModule} from '@angular/service-worker'; +import {BrowserAnimationsModule} from '@angular/platform-browser/animations'; +import {FontAwesomeModule} from '@fortawesome/angular-fontawesome'; +import {DatePipe, DecimalPipe} from '@angular/common'; -import { ClipboardModule } from 'ngx-clipboard'; -import { MdbCollapseModule } from 'mdb-angular-ui-kit/collapse'; -import { MdbDropdownModule } from 'mdb-angular-ui-kit/dropdown'; -import { MdbFormsModule } from 'mdb-angular-ui-kit/forms'; -import { MdbTabsModule } from 'mdb-angular-ui-kit/tabs'; -import { MdbAccordionModule } from 'mdb-angular-ui-kit/accordion'; +import {ClipboardModule} from 'ngx-clipboard'; +import {MdbCollapseModule} from 'mdb-angular-ui-kit/collapse'; +import {MdbDropdownModule} from 'mdb-angular-ui-kit/dropdown'; +import {MdbFormsModule} from 'mdb-angular-ui-kit/forms'; +import {MdbTabsModule} from 'mdb-angular-ui-kit/tabs'; +import {MdbAccordionModule} from 'mdb-angular-ui-kit/accordion'; -import { environment } from '../environments/environment'; -import { AppRoutingModule } from './app-routing.module'; -import { AppComponent } from './app.component'; -import { TanksSimpleComponent } from './tanks-simple/tanks-simple.component'; -import { TanksComplexComponent } from './tanks-complex/tanks-complex.component'; -import { DiverComponent } from './diver/diver.component'; -import { DiveOptionsComponent } from './diveoptions/diveoptions.component'; -import { DiveInfoComponent } from './diveinfo/diveinfo.component'; -import { MainMenuComponent } from './mainmenu/mainmenu.component'; -import { DashboardComponent } from './dashboard/dashboard.component'; -import { GaslabelComponent } from './gaslabel/gaslabel.component'; -import { SacComponent } from './sac/sac.component'; -import { NitroxComponent } from './nitrox/nitrox.component'; -import { WayPointsComponent } from './waypoints/waypoints.component'; -import { ProfileChartComponent } from './profilechart/profilechart.component'; -import { AboutComponent } from './about/about.component'; -import { AppFooterComponent } from './footer/footer.component'; -import { DepthsSimpleComponent } from './depths-simple/depths-simple.component'; -import { DepthsComplexComponent } from './depths-complex/depths-complex.component'; -import { TankChartComponent } from './tank-chart/tank-chart.component'; -import { AppSettingsComponent } from './app-settings/app-settings.component'; -import { CalculatingComponent } from './calculating/calculating.component'; -import { NdlLimitsComponent } from './ndl-limits/ndl-limits.component'; -import { SalinityComponent } from './salinity/salinity.component'; -import { AltitudeComponent } from './altitude/altitude.component'; -import { GradientsComponent } from './gradients/gradients.component'; -import { DepthComponent } from './depth/depth.component'; -import { OxygenComponent } from './oxygen/oxygen.component'; +import {environment} from '../environments/environment'; +import {AppRoutingModule} from './app-routing.module'; +import {AppComponent} from './app.component'; +import {TanksSimpleComponent} from './tanks-simple/tanks-simple.component'; +import {TanksComplexComponent} from './tanks-complex/tanks-complex.component'; +import {DiverComponent} from './diver/diver.component'; +import {DiveOptionsComponent} from './diveoptions/diveoptions.component'; +import {DiveInfoComponent} from './diveinfo/diveinfo.component'; +import {MainMenuComponent} from './mainmenu/mainmenu.component'; +import {DashboardComponent} from './dashboard/dashboard.component'; +import {GaslabelComponent} from './gaslabel/gaslabel.component'; +import {SacComponent} from './sac/sac.component'; +import {NitroxComponent} from './nitrox/nitrox.component'; +import {WayPointsComponent} from './waypoints/waypoints.component'; +import {ProfileChartComponent} from './profilechart/profilechart.component'; +import {AboutComponent} from './about/about.component'; +import {AppFooterComponent} from './footer/footer.component'; +import {DepthsSimpleComponent} from './depths-simple/depths-simple.component'; +import {DepthsComplexComponent} from './depths-complex/depths-complex.component'; +import {TankChartComponent} from './tank-chart/tank-chart.component'; +import {AppSettingsComponent} from './app-settings/app-settings.component'; +import {CalculatingComponent} from './calculating/calculating.component'; +import {NdlLimitsComponent} from './ndl-limits/ndl-limits.component'; +import {SalinityComponent} from './salinity/salinity.component'; +import {AltitudeComponent} from './altitude/altitude.component'; +import {GradientsComponent} from './gradients/gradients.component'; +import {DepthComponent} from './depth/depth.component'; +import {OxygenComponent} from './oxygen/oxygen.component'; -import { DurationPipe } from './pipes/duration.pipe'; -import { PlannerService } from './shared/planner.service'; -import { PreferencesStore } from './shared/preferencesStore'; -import { UnitConversion } from './shared/UnitConversion'; -import { SelectedWaypoint } from './shared/selectedwaypointService'; -import { WorkersFactory } from './shared/workers.factory'; -import { WorkersFactoryCommon } from './shared/serial.workers.factory'; -import { NdlService } from './shared/ndl.service'; -import { OptionsService } from './shared/options.service'; -import { PpO2Component } from './pp-o2/pp-o2.component'; -import { DelayedScheduleService } from './shared/delayedSchedule.service'; -import { AppinfoComponent } from './appinfo/appinfo.component'; -import { DiveIssuesComponent } from './dive-issues/dive-issues.component'; -import { InputControls } from './shared/inputcontrols'; -import { ValidatorGroups } from './shared/ValidatorGroups'; -import { DepthsService } from './shared/depths.service'; -import { TanksService } from './shared/tanks.service'; -import { SacCalculatorService } from './shared/sac-calculator.service'; -import { NitroxCalculatorService } from './shared/nitrox-calculator.service'; -import { SettingsNormalizationService } from './shared/settings-normalization.service'; -import { ViewSwitchService } from './shared/viewSwitchService'; -import { OxygenDropDownComponent } from './oxygen-dropdown/oxygen-dropdown.component'; -import { Preferences } from './shared/preferences'; -import { PlanUrlSerialization } from './shared/PlanUrlSerialization'; -import { WayPointsService } from './shared/waypoints.service'; -import { PlanTabsComponent } from './plan.tabs/plan.tabs.component'; -import { TankSizeComponent } from './tank.size/tank.size.component'; -import { StopsFilter } from './shared/stopsFilter.service'; -import { ViewStates } from './shared/viewStates'; -import { Urls } from './shared/navigation.service'; -import { SubViewStorage } from './shared/subViewStorage'; -import { DashboardStartUp } from './shared/startUp'; -import { AltitudeCalcComponent } from './altitude-calc/altitude-calc.component'; -import { WeightCalcComponent } from './weight/weight.component'; -import { GasPropertiesCalcComponent } from './gas.props/gas.props.component'; -import { DiffComponent } from './diff/diff.component'; -import { DiveResults } from './shared/diveresults'; -import { DiveSchedules } from './shared/dive.schedules'; -import { RedundanciesComponent } from './redundancies/redundancies.component'; -import { RedundanciesService } from './shared/redundancies.service'; -import { ReloadDispatcher } from './shared/reloadDispatcher'; -import { ManagedDiveSchedules } from './shared/managedDiveSchedules'; -import { WaypointsDifferenceComponent } from './diff/waypoints/diff-waypoints.component'; -import { DiveInfoDifferenceComponent } from './diff/diveinfo/diff-diveinfo.component'; -import { ProfileDifferenceChartComponent } from './diff/profilechart/diff-profilechart.component'; -import { MaskitoModule } from '@maskito/angular'; -import { SurfaceIntervalComponent } from './surface-interval/surface-interval.component'; +import {DurationPipe} from './pipes/duration.pipe'; +import {PlannerService} from './shared/planner.service'; +import {PreferencesStore} from './shared/preferencesStore'; +import {UnitConversion} from './shared/UnitConversion'; +import {SelectedWaypoint} from './shared/selectedwaypointService'; +import {WorkersFactory} from './shared/workers.factory'; +import {WorkersFactoryCommon} from './shared/serial.workers.factory'; +import {NdlService} from './shared/ndl.service'; +import {OptionsService} from './shared/options.service'; +import {PpO2Component} from './pp-o2/pp-o2.component'; +import {DelayedScheduleService} from './shared/delayedSchedule.service'; +import {AppinfoComponent} from './appinfo/appinfo.component'; +import {DiveIssuesComponent} from './dive-issues/dive-issues.component'; +import {InputControls} from './shared/inputcontrols'; +import {ValidatorGroups} from './shared/ValidatorGroups'; +import {DepthsService} from './shared/depths.service'; +import {TanksService} from './shared/tanks.service'; +import {SacCalculatorService} from './shared/sac-calculator.service'; +import {NitroxCalculatorService} from './shared/nitrox-calculator.service'; +import {SettingsNormalizationService} from './shared/settings-normalization.service'; +import {ViewSwitchService} from './shared/viewSwitchService'; +import {OxygenDropDownComponent} from './oxygen-dropdown/oxygen-dropdown.component'; +import {Preferences} from './shared/preferences'; +import {PlanUrlSerialization} from './shared/PlanUrlSerialization'; +import {WayPointsService} from './shared/waypoints.service'; +import {PlanTabsComponent} from './plan.tabs/plan.tabs.component'; +import {TankSizeComponent} from './tank.size/tank.size.component'; +import {StopsFilter} from './shared/stopsFilter.service'; +import {ViewStates} from './shared/viewStates'; +import {Urls} from './shared/navigation.service'; +import {SubViewStorage} from './shared/subViewStorage'; +import {DashboardStartUp} from './shared/startUp'; +import {AltitudeCalcComponent} from './altitude-calc/altitude-calc.component'; +import {WeightCalcComponent} from './weight/weight.component'; +import {GasPropertiesCalcComponent} from './gas.props/gas.props.component'; +import {DiffComponent} from './diff/diff.component'; +import {DiveResults} from './shared/diveresults'; +import {DiveSchedules} from './shared/dive.schedules'; +import {RedundanciesComponent} from './redundancies/redundancies.component'; +import {RedundanciesService} from './shared/redundancies.service'; +import {ReloadDispatcher} from './shared/reloadDispatcher'; +import {ManagedDiveSchedules} from './shared/managedDiveSchedules'; +import {WaypointsDifferenceComponent} from './diff/waypoints/diff-waypoints.component'; +import {DiveInfoDifferenceComponent} from './diff/diveinfo/diff-diveinfo.component'; +import {ProfileDifferenceChartComponent} from './diff/profilechart/diff-profilechart.component'; +import {MaskitoModule} from '@maskito/angular'; +import {SurfaceIntervalComponent} from './surface-interval/surface-interval.component'; +import {TestDataInjector} from './diff/testData/testDataInjector'; +import {ProfileComparatorService} from './shared/profileComparatorService'; +import {LoadTestDataComponent} from './diff/testData/loadtestdata/loadtestdata.component'; +import {WaypointsDifferenceService} from './shared/waypoints-difference.service'; +import {DiveInfoResultsDifferenceComponent} from './diff/diveinfo/results/diff-diveinfo-results.component'; const ANGULAR_MODULES = [ AppRoutingModule, @@ -148,7 +153,9 @@ const COMPONENTS = [ WeightCalcComponent, WaypointsDifferenceComponent, DiveInfoDifferenceComponent, - ProfileDifferenceChartComponent + ProfileDifferenceChartComponent, + LoadTestDataComponent, + DiveInfoResultsDifferenceComponent ]; const SERVICES = [ @@ -182,7 +189,10 @@ const SERVICES = [ ValidatorGroups, ViewStates, ViewSwitchService, - WayPointsService + WayPointsService, + TestDataInjector, + ProfileComparatorService, + WaypointsDifferenceService ]; @NgModule({ diff --git a/projects/planner/src/app/diff/diff.component.html b/projects/planner/src/app/diff/diff.component.html index f815edde..16177a4d 100644 --- a/projects/planner/src/app/diff/diff.component.html +++ b/projects/planner/src/app/diff/diff.component.html @@ -1,14 +1,15 @@ + +
+ | Profile A |
+ Profile B |
+ + Difference + | +
Total dive time [min]: | +
+
+ {{ profileA.totalDuration | duration:profileA.totalDuration}}
+
+ |
+
+
+ {{ profileB.totalDuration | duration:profileB.totalDuration}}
+
+ |
+
+
+
+ {{ totalDurationDifference | duration:totalDurationDifference}}
+
+
+ |
+
Time to surface [min]: | +
+
+ {{ profileA.timeToSurface | number:'1.0-0' }}
+
+ |
+
+
+ {{ profileB.timeToSurface | number:'1.0-0' }}
+
+ |
+
+
+
+ {{ timeToSurfaceDifference | number:'1.0-0' }}
+
+
+ |
+
Average depth [{{units.length}}]: | +
+
+ {{ averageDepthOfProfile(profileA) | number:'1.0-1' }}
+
+ |
+
+
+ {{ averageDepthOfProfile(profileB) | number:'1.0-1' }}
+
+ |
+
+
+
+ {{ averageDepthDifference | number:'1.0-1' }}
+
+
+ |
+
Rock bottom at [min]: | +
+
+ {{ profileA.emergencyAscentStart | duration:profileA.emergencyAscentStart }}
+
+ |
+
+
+ {{ profileB.emergencyAscentStart | duration:profileB.emergencyAscentStart }}
+
+ |
+
+
+
+
+ {{ emergencyAscentStartDifference | duration:emergencyAscentStartDifference}}
+
+
+ |
+
No decompression time [min]: | +
+
+ {{ noDecoOfProfile(profileA) | number:'1.0-0' }}
+
+ |
+
+
+ {{ noDecoOfProfile(profileB) | number:'1.0-0' }}
+
+ |
+
+
+
+ {{ noDecoDifference | number:'1.0-0' }}
+
+
+ |
+
Maximum bottom time [min]: | +
+
+ {{ profileA.maxTime | number:'1.0-0' }}
+
+ |
+
+
+ {{ profileB.maxTime | number:'1.0-0' }}
+
+ |
+
+
+
+ {{ maxTimeDifference | number:'1.0-0' }}
+
+
+ |
+
Highest gas density [{{units.density}}]: | +
+
+ {{ highestDensityOfProfile(profileA) | number:'1.0-2' }}
+
+ + ({{densityTextOfProfile(profileA)}}) + |
+
+
+ {{ highestDensityOfProfile(profileB) | number:'1.0-2' }}
+
+ + ({{densityTextOfProfile(profileB)}}) + |
+
+
+
+ {{ highestDensityDifference | number:'1.0-2' }}
+
+
+ |
+
OTU toxicity [OTU]: | +
+
+ {{ profileA.otu | number:'1.0-0' }}
+
+ |
+
+
+ {{ profileB.otu | number:'1.0-0' }}
+
+ |
+
+
+
+ {{ otuDifference | number:'1.0-0' }}
+
+
+ |
+
CNS toxicity [%]: | +
+
+ {{cnsTextOfProfile(profileA)}}
+
+ |
+
+
+ {{cnsTextOfProfile(profileB)}}
+
+ |
+
+
+
+ {{ cnsDifferenceText }}
+
+
+ |
+
@@ -14,29 +17,31 @@ | Profile B | ||||||
---|---|---|---|---|---|---|---|
Run [min] | -Depth [{{units.length}}] | -Duration [min] | +Run [min] | +Depth [{{units.length}}] | +Duration [min] | Depth [{{units.length}}] | Duration [min] |
- {{ row.runTime * 1000 | date:'mm:ss' }} + {{ row.runTime | duration:profileComparatorService.totalDuration }} | {{ row.depthA | number: '1.0-0'}} | - {{ row.durationA * 1000 | date: 'mm:ss'}} + {{ row.durationA * 1 | duration:profileComparatorService.totalDuration }} | {{ row.depthB | number:'1.0-0' }} | - {{ row.durationB * 1000 | date: 'mm:ss'}} + {{ row.durationB * 1 | duration:profileComparatorService.totalDuration }} |