@@ -50,7 +50,6 @@ import {
5050 minutesToSeconds
5151} from 'chaire-lib-common/lib/utils/DateTimeUtils' ;
5252import AccessibilityComparisonStatsComponent from './AccessibilityComparisonStatsComponent' ;
53- import * as AccessibilityComparisonConstants from './accessibilityComparisonConstants' ;
5453import { comparisonModes } from './comparisonModes' ;
5554import AccessibilityMapCoordinatesComponent from '../accessibilityMap/widgets/AccessibilityMapCoordinateComponent' ;
5655import TimeOfTripComponent from '../transitRouting/widgets/TimeOfTripComponent' ;
@@ -90,6 +89,12 @@ interface TransitRoutingFormState extends ChangeEventsState<TransitAccessibility
9089 contextMenuRoot : Root | undefined ;
9190 alternateScenario1Id ?: string ;
9291 alternateScenario2Id ?: string ;
92+ intersectionLocationColor : string ;
93+ intersectionPolygonColor : string ;
94+ comparisonLocation1Color : string ;
95+ comparisonPolygon1Color : string ;
96+ comparisonLocation2Color : string ;
97+ comparisonPolygon2Color : string ;
9398}
9499
95100class AccessibilityComparisonForm extends ChangeEventsForm < AccessibilityComparisonFormProps , TransitRoutingFormState > {
@@ -123,14 +128,28 @@ class AccessibilityComparisonForm extends ChangeEventsForm<AccessibilityComparis
123128 alternateScenario1Id : '' ,
124129 alternateScenario2Id : '' ,
125130 contextMenu : null ,
126- contextMenuRoot : undefined
131+ contextMenuRoot : undefined ,
132+ intersectionLocationColor : Preferences . get (
133+ 'transit.routing.transitAccessibilityMap.intersectionLocationColor'
134+ ) ,
135+ intersectionPolygonColor : Preferences . get (
136+ 'transit.routing.transitAccessibilityMap.intersectionPolygonColor'
137+ ) ,
138+ comparisonLocation1Color : Preferences . get (
139+ 'transit.routing.transitAccessibilityMap.comparisonLocation1Color'
140+ ) ,
141+ comparisonPolygon1Color : Preferences . get ( 'transit.routing.transitAccessibilityMap.comparisonPolygon1Color' ) ,
142+ comparisonLocation2Color : Preferences . get (
143+ 'transit.routing.transitAccessibilityMap.comparisonLocation2Color'
144+ ) ,
145+ comparisonPolygon2Color : Preferences . get ( 'transit.routing.transitAccessibilityMap.comparisonPolygon2Color' )
127146 } ;
128147
129148 this . displayMap = this . displayMap . bind ( this ) ;
130149 this . calculateRouting = this . calculateRouting . bind ( this ) ;
131150 this . onScenarioCollectionUpdate = this . onScenarioCollectionUpdate . bind ( this ) ;
132151
133- routingEngine . updatePointColor ( AccessibilityComparisonConstants . INTERSECTION_COLOR ) ;
152+ routingEngine . updatePointColor ( this . state . intersectionLocationColor ) ;
134153 if ( routingEngine . hasLocation ( ) ) {
135154 ( serviceLocator . eventManager as EventManager ) . emitEvent < MapUpdateLayerEventType > ( 'map.updateLayer' , {
136155 layerName : 'accessibilityMapPoints' ,
@@ -175,17 +194,17 @@ class AccessibilityComparisonForm extends ChangeEventsForm<AccessibilityComparis
175194
176195 const numberOfPolygons = routing . attributes . numberOfPolygons as number ;
177196
178- const colors = {
179- intersectionColor : this . convertToRGBA ( AccessibilityComparisonConstants . INTERSECTION_COLOR , 0.6 ) ,
180- scenario1Minus2Color : this . convertToRGBA ( AccessibilityComparisonConstants . MAP_1_COLOR , 0.6 ) ,
181- scenario2Minus1Color : this . convertToRGBA ( AccessibilityComparisonConstants . MAP_2_COLOR , 0.6 )
197+ const polygonColors = {
198+ intersectionColor : this . state . intersectionPolygonColor ,
199+ scenario1Minus2Color : this . state . comparisonPolygon1Color ,
200+ scenario2Minus1Color : this . state . comparisonPolygon2Color
182201 } ;
183202
184203 const mapComparison = await calculateAccessibilityMapComparison (
185204 currentResult1 . polygons ,
186205 currentResult2 . polygons ,
187206 numberOfPolygons ,
188- colors
207+ polygonColors
189208 ) ;
190209
191210 const finalMap : TransitAccessibilityMapWithPolygonAndTimeResult [ ] = [ ] ;
@@ -498,8 +517,15 @@ class AccessibilityComparisonForm extends ChangeEventsForm<AccessibilityComparis
498517 } ;
499518 }
500519
501- private convertToRGBA = ( rgbValue : string , alpha : number ) => {
502- return rgbValue . replace ( ')' , `, ${ alpha } )` ) . replace ( 'rgb' , 'rgba' ) ;
520+ private changeAlphaValue = ( rgbaValue : string , alpha : number ) => {
521+ const rgbaArray = rgbaValue . split ( ',' ) ;
522+ if ( rgbaArray . length !== 4 ) {
523+ console . error ( `The color value ${ rgbaValue } isn't properly formatted to convert the alpha value.` ) ;
524+ return rgbaValue ;
525+ }
526+
527+ rgbaArray [ 3 ] = `${ alpha } )` ;
528+ return rgbaArray . join ( ) ;
503529 } ;
504530
505531 render ( ) {
@@ -531,30 +557,58 @@ class AccessibilityComparisonForm extends ChangeEventsForm<AccessibilityComparis
531557 return (
532558 < React . Fragment >
533559 < Collapsible
534- trigger = { this . props . t ( 'transit:accessibilityComparison:Legend ' ) }
560+ trigger = { this . props . t ( 'transit:accessibilityComparison:Colors ' ) }
535561 open = { true }
536562 transitionTime = { 100 }
537563 >
564+ { mode === 'scenarios' && (
565+ < div className = "tr__form-section" >
566+ { this . props . t ( 'transit:accessibilityComparison:ScenarioLocation' ) } :
567+ < span style = { { color : this . state . intersectionLocationColor } } > ◉</ span >
568+ </ div >
569+ ) }
538570 < div className = "tr__form-section" >
539- { mode === 'scenarios'
540- ? this . props . t ( ' transit:transitComparison:ScenarioN' , { scenarioNumber : '1' } )
541- : this . props . t ( 'transit:accessibilityComparison:LocationN' , { locationNumber : '1' } ) }
571+ { this . props . t (
572+ ` transit:accessibilityComparison: ${ mode === 'scenarios' ? 'Scenario' : 'Location' } IntersectionPolygon`
573+ ) }
542574 :
543- < span style = { { color : AccessibilityComparisonConstants . MAP_1_COLOR } } > ◉</ span >
575+ < span style = { { color : this . state . intersectionPolygonColor } } > ◉</ span >
544576 </ div >
577+ { mode === 'locations' && (
578+ < div className = "tr__form-section" >
579+ { this . props . t ( 'transit:accessibilityComparison:LocationN' , { locationNumber : '1' } ) } :
580+
581+ < span style = { { color : this . state . comparisonLocation1Color } } > ◉</ span >
582+ </ div >
583+ ) }
545584 < div className = "tr__form-section" >
546585 { mode === 'scenarios'
547- ? this . props . t ( 'transit:transitComparison:ScenarioN' , { scenarioNumber : '2' } )
548- : this . props . t ( 'transit:accessibilityComparison:LocationN' , { locationNumber : '2' } ) }
586+ ? this . props . t ( 'transit:accessibilityComparison:ScenarioNPolygon' , {
587+ scenarioNumber : '1'
588+ } )
589+ : this . props . t ( 'transit:accessibilityComparison:LocationNPolygon' , {
590+ locationNumber : '1'
591+ } ) }
549592 :
550- < span style = { { color : AccessibilityComparisonConstants . MAP_2_COLOR } } > ◉</ span >
593+ < span style = { { color : this . state . comparisonPolygon1Color } } > ◉</ span >
551594 </ div >
595+ { mode === 'locations' && (
596+ < div className = "tr__form-section" >
597+ { this . props . t ( 'transit:accessibilityComparison:LocationN' , { locationNumber : '2' } ) } :
598+
599+ < span style = { { color : this . state . comparisonLocation2Color } } > ◉</ span >
600+ </ div >
601+ ) }
552602 < div className = "tr__form-section" >
553- { this . props . t (
554- `transit:accessibilityComparison:${ mode === 'scenarios' ? 'Scenario' : 'Location' } Intersection`
555- ) }
603+ { mode === 'scenarios'
604+ ? this . props . t ( 'transit:accessibilityComparison:ScenarioNPolygon' , {
605+ scenarioNumber : '2'
606+ } )
607+ : this . props . t ( 'transit:accessibilityComparison:LocationNPolygon' , {
608+ locationNumber : '2'
609+ } ) }
556610 :
557- < span style = { { color : AccessibilityComparisonConstants . INTERSECTION_COLOR } } > ◉</ span >
611+ < span style = { { color : this . state . comparisonPolygon2Color } } > ◉</ span >
558612 </ div >
559613 </ Collapsible >
560614
@@ -951,6 +1005,8 @@ class AccessibilityComparisonForm extends ChangeEventsForm<AccessibilityComparis
9511005 < AccessibilityComparisonStatsComponent
9521006 accessibilityPolygons = { this . state . currentPolygons }
9531007 mode = { mode }
1008+ color1 = { this . changeAlphaValue ( this . state . comparisonPolygon1Color , 1 ) }
1009+ color2 = { this . changeAlphaValue ( this . state . comparisonPolygon2Color , 1 ) }
9541010 />
9551011 </ React . Fragment >
9561012 ) }
@@ -968,8 +1024,8 @@ class AccessibilityComparisonForm extends ChangeEventsForm<AccessibilityComparis
9681024 const value = comparisonModes [ index ] ;
9691025 this . onValueChange ( 'selectedMode' , { value } ) ;
9701026 if ( value === 'scenarios' ) {
971- routing . updatePointColor ( AccessibilityComparisonConstants . INTERSECTION_COLOR ) ;
972- alternateRouting . updatePointColor ( AccessibilityComparisonConstants . INTERSECTION_COLOR ) ;
1027+ routing . updatePointColor ( this . state . intersectionLocationColor ) ;
1028+ alternateRouting . updatePointColor ( this . state . intersectionLocationColor ) ;
9731029 if ( routing . hasLocation ( ) ) {
9741030 alternateRouting . setLocation (
9751031 routing . attributes . locationGeojson ! . geometry . coordinates
@@ -983,8 +1039,8 @@ class AccessibilityComparisonForm extends ChangeEventsForm<AccessibilityComparis
9831039 ) ;
9841040 }
9851041 } else if ( value === 'locations' ) {
986- routing . updatePointColor ( AccessibilityComparisonConstants . MAP_1_COLOR ) ;
987- alternateRouting . updatePointColor ( AccessibilityComparisonConstants . MAP_2_COLOR ) ;
1042+ routing . updatePointColor ( this . state . comparisonLocation1Color ) ;
1043+ alternateRouting . updatePointColor ( this . state . comparisonLocation2Color ) ;
9881044 alternateRouting . attributes . scenarioId = routing . attributes . scenarioId ;
9891045 if ( routing . hasLocation ( ) ) {
9901046 alternateRouting . setLocation (
0 commit comments