diff --git a/projects/capx/src/app/capx/components/junctions/intersections/partial-displaced-left-turn-intersection-north-south-junction/configuration/partial-displaced-left-turn-intersection-north-south-configuration.component.html b/projects/capx/src/app/capx/components/junctions/intersections/partial-displaced-left-turn-intersection-north-south-junction/configuration/partial-displaced-left-turn-intersection-north-south-configuration.component.html index 3157a57..47c5fb0 100644 --- a/projects/capx/src/app/capx/components/junctions/intersections/partial-displaced-left-turn-intersection-north-south-junction/configuration/partial-displaced-left-turn-intersection-north-south-configuration.component.html +++ b/projects/capx/src/app/capx/components/junctions/intersections/partial-displaced-left-turn-intersection-north-south-junction/configuration/partial-displaced-left-turn-intersection-north-south-configuration.component.html @@ -1,130 +1,198 @@ - - - - - - - - + +
- - - - - - - - - - - - - - - - - - -
PEPCH
{{(capxStateService.masterParameters$ | async)!.south_bound_u}}
PEPCH
{{(capxStateService.masterParameters$ | async)!.south_bound_left}}
PEPCH
{{(capxStateService.masterParameters$ | async)!.south_bound_thru}}
PEPCH
{{(capxStateService.masterParameters$ | async)!.south_bound_right}}
-
- -
- +
+
+ + + + + + + +
+ - - - + + + + - - + + + + - - - - + + + + +
{{(capxStateService.masterParameters$ | async)!.east_bound_u}}
PEPCH
{{(capxStateService.masterParameters$ | async)!.east_bound_left}}
PEPCH
PEPCH
{{(capxStateService.masterParameters$ | async)!.south_bound_right}}
PEPCH
{{(capxStateService.masterParameters$ | async)!.south_bound_thru}}
PEPCH
{{(capxStateService.masterParameters$ | async)!.south_bound_left}}
PEPCH
{{(capxStateService.masterParameters$ | async)!.south_bound_u}}
{{(capxStateService.masterParameters$ | async)!.east_bound_thru}}
PEPCH
+
+
+ + + + + + + +
Zone 1
{{(capxStateService.state.get(junctions.PartialDisplacedLeftTurnIntersectionNorthSouth).intersectionResult | async).zone1_north_clv}}
+
+
+ + + + + + + - - - +
{{form.get('north_bound_thru').value}}
{{(capxStateService.masterParameters$ | async)!.east_bound_left + (capxStateService.masterParameters$ | async)!.north_bound_thru}}
PEPCH
{{(capxStateService.masterParameters$ | async)!.east_bound_right}}
PEPCH
- +
+ + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
{{(capxStateService.masterParameters$ | async)!.east_bound_u}}
PEPCH
{{(capxStateService.masterParameters$ | async)!.east_bound_left}}
PEPCH
{{(capxStateService.masterParameters$ | async)!.east_bound_thru}}
PEPCH
{{(capxStateService.masterParameters$ | async)!.east_bound_right}}
PEPCH
+
+ + +
+ +
+ + + + + + + +
Zone 5
{{(capxStateService.state.get(junctions.PartialDisplacedLeftTurnIntersectionNorthSouth).intersectionResult | async).zone5_center_clv}}
+
+
+
+ + + + + + + + + + + - - + + + + -
-
PEPCH
{{(capxStateService.masterParameters$ | async)!.west_bound_right}}
PEPCH
{{(capxStateService.masterParameters$ | async)!.west_bound_thru}}
+
PEPCH
{{(capxStateService.masterParameters$ | async)!.west_bound_left}}
+ + + + + +
PEPCH
{{(capxStateService.masterParameters$ | async)!.west_bound_u}}
+
+ + +
+ + + + + + + + + + - - - - - - - -
+ + + + - + - +
Zone 5
PEPCH
{{(capxStateService.masterParameters$ | async)!.south_bound_thru + (capxStateService.masterParameters$ | async)!.west_bound_left}}
{{(capxStateService.state.get(junctions.PartialDisplacedLeftTurnIntersectionNorthSouth).intersectionResult | async).zone5_center_clv}}
{{form.get('south_bound_thru').value}}
- +
+ +
+ + + + + + + +
Zone 2
{{(capxStateService.state.get(junctions.PartialDisplacedLeftTurnIntersectionNorthSouth).intersectionResult | async).zone2_south_clv}}
+
+ +
- -
- - - + + + + - - - + + + + - - - - - - - - - + + + +
PEPCH
{{(capxStateService.masterParameters$ | async)!.west_bound_right}}
PEPCH
{{(capxStateService.masterParameters$ | async)!.west_bound_thru}}
{{(capxStateService.masterParameters$ | async)!.north_bound_u}}
PEPCH
{{(capxStateService.masterParameters$ | async)!.north_bound_left}}
PEPCH
{{(capxStateService.masterParameters$ | async)!.north_bound_thru}}
PEPCH
{{(capxStateService.masterParameters$ | async)!.north_bound_right}}
PEPCH
PEPCH
{{(capxStateService.masterParameters$ | async)!.west_bound_left}}
PEPCH
{{(capxStateService.masterParameters$ | async)!.west_bound_u}}
-
- - -
- - - - - - - - - - - - - - - - - - - -
{{(capxStateService.masterParameters$ | async)!.north_bound_u}}
PEPCH
{{(capxStateService.masterParameters$ | async)!.north_bound_left}}
PEPCH
{{(capxStateService.masterParameters$ | async)!.north_bound_thru}}
PEPCH
{{(capxStateService.masterParameters$ | async)!.north_bound_right}}
PEPCH
- - -
+ + +
+ diff --git a/projects/capx/src/app/capx/components/junctions/junction.component.html b/projects/capx/src/app/capx/components/junctions/junction.component.html index 045311b..0a0bccb 100644 --- a/projects/capx/src/app/capx/components/junctions/junction.component.html +++ b/projects/capx/src/app/capx/components/junctions/junction.component.html @@ -1,26 +1,25 @@ - -
+
- Back to Results {{title$ | async}} + Back to + Results {{title$ | async}}
- - -
- -
-
+ + +
+ +
+
- - -
- -
-
+ + +
+ +
+
- diff --git a/projects/capx/src/app/capx/components/junctions/junction.component.ts b/projects/capx/src/app/capx/components/junctions/junction.component.ts index 2e21563..eb7c1ad 100644 --- a/projects/capx/src/app/capx/components/junctions/junction.component.ts +++ b/projects/capx/src/app/capx/components/junctions/junction.component.ts @@ -134,10 +134,10 @@ export class JunctionComponent implements OnInit, OnDestroy { if (junction.type === JunctionTypes.Intersection) { this.vc$.next(junction.intersectionResult.value.all_vc); - this.clv$.next(junction.intersectionResult.value.zone5_center_vc); + this.clv$.next(junction.intersectionResult.value.all_clv); junction.intersectionResult.subscribe(result => { this.vc$.next(result.all_vc); - this.clv$.next(result.zone5_center_clv); + this.clv$.next(result.all_clv); }); } else if (junction.type === JunctionTypes.Interchange) { this.vc$.next(junction.interchangeResult.value.all_vc); diff --git a/projects/capx/src/app/capx/services/capx-state.service.ts b/projects/capx/src/app/capx/services/capx-state.service.ts index 469d6b4..ebd0f31 100644 --- a/projects/capx/src/app/capx/services/capx-state.service.ts +++ b/projects/capx/src/app/capx/services/capx-state.service.ts @@ -35,6 +35,7 @@ export class CapxStateService { zone4_west_vc: null, zone5_center_clv: null, zone5_center_vc: null, + all_vlc: null, all_vc: null }; @@ -153,17 +154,17 @@ export class CapxStateService { }); partialDisplacedLeftTurnIntersectionNorthSouthJunctionParameters$ = new BehaviorSubject({ - east_bound_left: 1, - east_bound_thru: 1, + east_bound_left: 2, + east_bound_thru: 3, east_bound_right: 1, - west_bound_left: 1, - west_bound_thru: 1, + west_bound_left: 2, + west_bound_thru: 3, west_bound_right: 1, south_bound_left: 1, - south_bound_thru: 1, + south_bound_thru: 2, south_bound_right: 1, north_bound_left: 1, - north_bound_thru: 1, + north_bound_thru: 2, north_bound_right: 1 }); @@ -698,6 +699,7 @@ export class CapxStateService { zone4_west_vc: null, zone5_center_clv: round(zone5_center_clv), zone5_center_vc, + all_clv: round(zone5_center_clv), all_vc: zone5_center_vc }); @@ -713,27 +715,30 @@ export class CapxStateService { const inputParameters = this.inputParameters$.value; const masterParameters = this.masterParameters$.value; const junctionParameters = this.partialDisplacedLeftTurnIntersectionNorthSouthJunctionParameters$.value; - const zone5_center_clv = max( - (masterParameters.east_bound_left / inputParameters.adjustment_factor_left_turn + masterParameters.east_bound_u / inputParameters.adjustment_factor_u) / junctionParameters.east_bound_left + max(masterParameters.west_bound_thru / junctionParameters.west_bound_thru, round(max(0, masterParameters.west_bound_right / inputParameters.adjustment_factor_right_turn / junctionParameters.west_bound_right - masterParameters.south_bound_left / inputParameters.adjustment_factor_left_turn / junctionParameters.south_bound_left), 0)), - (masterParameters.west_bound_left / inputParameters.adjustment_factor_left_turn + masterParameters.west_bound_u / inputParameters.adjustment_factor_u) / junctionParameters.west_bound_left + max(masterParameters.east_bound_thru / junctionParameters.east_bound_thru, round(max(0, masterParameters.east_bound_right / inputParameters.adjustment_factor_right_turn / junctionParameters.east_bound_right - masterParameters.north_bound_left / inputParameters.adjustment_factor_left_turn / junctionParameters.north_bound_left), 0)) - ) + - max( - (masterParameters.north_bound_left / inputParameters.adjustment_factor_left_turn + masterParameters.north_bound_u / inputParameters.adjustment_factor_u) / inputParameters.adjustment_factor_left_turn / junctionParameters.north_bound_left + max(masterParameters.south_bound_thru / junctionParameters.south_bound_thru, round(max(0, masterParameters.south_bound_right / inputParameters.adjustment_factor_right_turn / junctionParameters.south_bound_right - masterParameters.east_bound_left / inputParameters.adjustment_factor_left_turn / junctionParameters.east_bound_left), 0)), - (masterParameters.south_bound_left / inputParameters.adjustment_factor_left_turn + masterParameters.south_bound_u / inputParameters.adjustment_factor_u) / inputParameters.adjustment_factor_left_turn / junctionParameters.south_bound_left + max(masterParameters.north_bound_thru / junctionParameters.north_bound_thru, round(max(0, masterParameters.north_bound_right / inputParameters.adjustment_factor_right_turn / junctionParameters.north_bound_right - masterParameters.west_bound_left / inputParameters.adjustment_factor_left_turn / junctionParameters.west_bound_left), 0)) - ); + + const zone1_north_clv = masterParameters.south_bound_left / inputParameters.adjustment_factor_left_turn / junctionParameters.south_bound_left + (masterParameters.north_bound_thru + masterParameters.east_bound_left) / junctionParameters.north_bound_thru + + const zone5_center_clv = max(masterParameters.north_bound_left / inputParameters.adjustment_factor_left_turn / junctionParameters.north_bound_left, masterParameters.north_bound_thru / junctionParameters.north_bound_thru, round(max(0, masterParameters.north_bound_right / inputParameters.adjustment_factor_right_turn / junctionParameters.north_bound_right - masterParameters.east_bound_left / inputParameters.adjustment_factor_left_turn / junctionParameters.east_bound_left), 0), masterParameters.south_bound_left / inputParameters.adjustment_factor_left_turn / junctionParameters.south_bound_left, masterParameters.south_bound_thru / junctionParameters.south_bound_thru, round(max(0, masterParameters.south_bound_right / inputParameters.adjustment_factor_right_turn / junctionParameters.south_bound_right - masterParameters.east_bound_left / inputParameters.adjustment_factor_left_turn / junctionParameters.east_bound_left), 0)) + max(masterParameters.east_bound_left / inputParameters.adjustment_factor_left_turn / junctionParameters.east_bound_left + max(masterParameters.west_bound_thru / junctionParameters.west_bound_thru, round(max(0, masterParameters.west_bound_right / inputParameters.adjustment_factor_right_turn / junctionParameters.west_bound_right - masterParameters.south_bound_left / inputParameters.adjustment_factor_left_turn / junctionParameters.south_bound_left), 0)), masterParameters.west_bound_left / inputParameters.adjustment_factor_left_turn / junctionParameters.west_bound_left + max( masterParameters.east_bound_thru / junctionParameters.east_bound_thru, round(max(0, masterParameters.east_bound_right / inputParameters.adjustment_factor_right_turn / junctionParameters.east_bound_right - masterParameters.north_bound_left / inputParameters.adjustment_factor_left_turn / junctionParameters.north_bound_left), 0))) + + const zone2_south_clv = masterParameters.north_bound_left / inputParameters.adjustment_factor_left_turn / junctionParameters.north_bound_left + (masterParameters.south_bound_thru + masterParameters.west_bound_left) / junctionParameters.south_bound_thru + + + const zone1_north_vc = round(zone1_north_clv / inputParameters.critical_lane_volume, 2); const zone5_center_vc = round(zone5_center_clv / inputParameters.critical_lane_volume, 2); + const zone2_south_vc = round(zone2_south_clv / inputParameters.critical_lane_volume, 2); (this.state.get(Junctions.PartialDisplacedLeftTurnIntersectionNorthSouth)?.intersectionResult as BehaviorSubject).next({ - zone1_north_clv: null, - zone1_north_vc: null, - zone2_south_clv: null, - zone2_south_vc: null, + zone1_north_clv: round(zone1_north_clv), + zone1_north_vc, + zone2_south_clv: round(zone2_south_clv), + zone2_south_vc, zone3_east_clv: null, zone3_east_vc: null, zone4_west_clv: null, zone4_west_vc: null, zone5_center_clv: round(zone5_center_clv), zone5_center_vc, - all_vc: zone5_center_vc + all_clv: round(max(zone1_north_clv, zone5_center_clv, zone2_south_clv)), + all_vc: max(zone1_north_vc, zone5_center_vc, zone2_south_vc) }); this.updateRank(); diff --git a/projects/capx/src/app/capx/services/models/junction-capacity-analyser.ts b/projects/capx/src/app/capx/services/models/junction-capacity-analyser.ts index e8853be..cb5ad54 100644 --- a/projects/capx/src/app/capx/services/models/junction-capacity-analyser.ts +++ b/projects/capx/src/app/capx/services/models/junction-capacity-analyser.ts @@ -154,6 +154,7 @@ export interface CapxIntersectionAnalysisResultParameters { zone4_west_vc: number | null; zone5_center_clv: number | null; zone5_center_vc: number | null; + all_clv: number | null; all_vc: number | null; }