@@ -54,13 +54,17 @@ const title: { [missionName in MissionInformation.MissionName]: string } = {
5454 uuvRescue : 'UUV Rescue' ,
5555} ;
5656
57- type GeofenceChecklistType = 'geofenceTop ' | 'geofenceLeft ' | 'geofenceRight ' | 'geofenceBottom ' ;
57+ type GeofenceChecklistType = 'geofenceKeepInTop ' | 'geofenceKeepInLeft ' | 'geofenceKeepInRight ' | 'geofenceKeepInBottom' | 'geofenceKeepOutTop' | 'geofenceKeepOutLeft' | 'geofenceKeepOutRight' | 'geofenceKeepOutBottom ';
5858
5959const checklistCache : { [ check in GeofenceChecklistType ] : number | undefined } = {
60- geofenceTop : undefined ,
61- geofenceLeft : undefined ,
62- geofenceRight : undefined ,
63- geofenceBottom : undefined ,
60+ geofenceKeepInTop : undefined ,
61+ geofenceKeepInLeft : undefined ,
62+ geofenceKeepInRight : undefined ,
63+ geofenceKeepInBottom : undefined ,
64+ geofenceKeepOutTop : undefined ,
65+ geofenceKeepOutLeft : undefined ,
66+ geofenceKeepOutRight : undefined ,
67+ geofenceKeepOutBottom : undefined ,
6468} ;
6569
6670type Locked = {
@@ -223,50 +227,98 @@ export default class MissionWindow extends Component<ThemeProps, State> {
223227 const name = event . target . name as GeofenceChecklistType ;
224228 const value = parseInt ( event . target . value , 10 ) || 0 ;
225229 switch ( name ) {
226- case 'geofenceTop ' :
230+ case 'geofenceKeepInTop ' :
227231 ipc . postUpdateBoundingBoxes ( true , {
228- name : 'Geofencing ' ,
232+ name : 'Geofence Keep-In ' ,
229233 bounds : {
230234 top : value ,
231- bottom : checklist . geofenceBottom as number ,
232- left : checklist . geofenceLeft as number ,
233- right : checklist . geofenceRight as number ,
235+ bottom : checklist . geofenceKeepInBottom as number ,
236+ left : checklist . geofenceKeepInLeft as number ,
237+ right : checklist . geofenceKeepInRight as number ,
234238 } ,
235239 } ) ;
236240 break ;
237241
238- case 'geofenceLeft ' :
242+ case 'geofenceKeepInLeft ' :
239243 ipc . postUpdateBoundingBoxes ( true , {
240- name : 'Geofencing ' ,
244+ name : 'Geofence Keep-In ' ,
241245 bounds : {
242- top : checklist . geofenceTop as number ,
243- bottom : checklist . geofenceBottom as number ,
246+ top : checklist . geofenceKeepInTop as number ,
247+ bottom : checklist . geofenceKeepInBottom as number ,
244248 left : value ,
245- right : checklist . geofenceRight as number ,
249+ right : checklist . geofenceKeepInRight as number ,
246250 } ,
247251 } ) ;
248252 break ;
249253
250- case 'geofenceRight ' :
254+ case 'geofenceKeepInRight ' :
251255 ipc . postUpdateBoundingBoxes ( true , {
252- name : 'Geofencing ' ,
256+ name : 'Geofence Keep-In ' ,
253257 bounds : {
254- top : checklist . geofenceTop as number ,
255- bottom : checklist . geofenceBottom as number ,
256- left : checklist . geofenceLeft as number ,
258+ top : checklist . geofenceKeepInTop as number ,
259+ bottom : checklist . geofenceKeepInBottom as number ,
260+ left : checklist . geofenceKeepInLeft as number ,
257261 right : value ,
258262 } ,
259263 } ) ;
260264 break ;
261265
262- case 'geofenceBottom ' :
266+ case 'geofenceKeepInBottom ' :
263267 ipc . postUpdateBoundingBoxes ( true , {
264- name : 'Geofencing ' ,
268+ name : 'Geofence Keep-In ' ,
265269 bounds : {
266- top : checklist . geofenceTop as number ,
270+ top : checklist . geofenceKeepInTop as number ,
267271 bottom : value ,
268- left : checklist . geofenceLeft as number ,
269- right : checklist . geofenceRight as number ,
272+ left : checklist . geofenceKeepInLeft as number ,
273+ right : checklist . geofenceKeepInRight as number ,
274+ } ,
275+ } ) ;
276+ break ;
277+
278+ case 'geofenceKeepOutTop' :
279+ ipc . postUpdateBoundingBoxes ( true , {
280+ name : 'Geofence Keep-Out' ,
281+ bounds : {
282+ top : value ,
283+ bottom : checklist . geofenceKeepOutBottom as number ,
284+ left : checklist . geofenceKeepOutLeft as number ,
285+ right : checklist . geofenceKeepOutRight as number ,
286+ } ,
287+ } ) ;
288+ break ;
289+
290+ case 'geofenceKeepOutLeft' :
291+ ipc . postUpdateBoundingBoxes ( true , {
292+ name : 'Geofence Keep-Out' ,
293+ bounds : {
294+ top : checklist . geofenceKeepOutTop as number ,
295+ bottom : checklist . geofenceKeepOutBottom as number ,
296+ left : value ,
297+ right : checklist . geofenceKeepOutRight as number ,
298+ } ,
299+ } ) ;
300+ break ;
301+
302+ case 'geofenceKeepOutRight' :
303+ ipc . postUpdateBoundingBoxes ( true , {
304+ name : 'Geofence Keep-Out' ,
305+ bounds : {
306+ top : checklist . geofenceKeepOutTop as number ,
307+ bottom : checklist . geofenceKeepOutBottom as number ,
308+ left : checklist . geofenceKeepOutLeft as number ,
309+ right : value ,
310+ } ,
311+ } ) ;
312+ break ;
313+
314+ case 'geofenceKeepOutBottom' :
315+ ipc . postUpdateBoundingBoxes ( true , {
316+ name : 'Geofence Keep-Out' ,
317+ bounds : {
318+ top : checklist . geofenceKeepOutTop as number ,
319+ bottom : value ,
320+ left : checklist . geofenceKeepOutLeft as number ,
321+ right : checklist . geofenceKeepOutRight as number ,
270322 } ,
271323 } ) ;
272324 break ;
@@ -368,11 +420,18 @@ export default class MissionWindow extends Component<ThemeProps, State> {
368420
369421 boundingBoxes . forEach ( ( boxpoint ) : void => {
370422 switch ( boxpoint . name ) {
371- case 'Geofencing' :
372- checks . geofenceTop = boxpoint . bounds . top ;
373- checks . geofenceRight = boxpoint . bounds . right ;
374- checks . geofenceLeft = boxpoint . bounds . left ;
375- checks . geofenceBottom = boxpoint . bounds . bottom ;
423+ case 'geofenceContainerKeepIn' :
424+ checks . geofenceKeepInTop = boxpoint . bounds . top ;
425+ checks . geofenceKeepInRight = boxpoint . bounds . right ;
426+ checks . geofenceKeepInLeft = boxpoint . bounds . left ;
427+ checks . geofenceKeepInBottom = boxpoint . bounds . bottom ;
428+ break ;
429+
430+ case 'geofenceContainerKeepOut' :
431+ checks . geofenceKeepOutTop = boxpoint . bounds . top ;
432+ checks . geofenceKeepOutRight = boxpoint . bounds . right ;
433+ checks . geofenceKeepOutLeft = boxpoint . bounds . left ;
434+ checks . geofenceKeepOutBottom = boxpoint . bounds . bottom ;
376435 break ;
377436
378437 default : break ;
@@ -447,7 +506,10 @@ export default class MissionWindow extends Component<ThemeProps, State> {
447506 private unlockParameterInputs ( waypointType : string ) : void {
448507 const { locked : newLocked } = this . state ;
449508
450- if ( waypointType === 'geofence' ) {
509+ if ( waypointType === 'geofenceContainerKeepIn' ) {
510+ newLocked . geofence = false ;
511+ }
512+ if ( waypointType === 'geofenceContainerKeepOut' ) {
451513 newLocked . geofence = false ;
452514 }
453515
@@ -486,10 +548,14 @@ export default class MissionWindow extends Component<ThemeProps, State> {
486548 */
487549
488550 const unlockStartMissionButton = information [ missionName ] . parameters !== undefined
489- && checklist . geofenceTop !== undefined
490- && checklist . geofenceBottom !== undefined
491- && checklist . geofenceLeft !== undefined
492- && checklist . geofenceRight !== undefined ;
551+ && checklist . geofenceKeepInTop !== undefined
552+ && checklist . geofenceKeepInBottom !== undefined
553+ && checklist . geofenceKeepInLeft !== undefined
554+ && checklist . geofenceKeepInRight !== undefined
555+ && checklist . geofenceKeepOutTop !== undefined
556+ && checklist . geofenceKeepOutBottom !== undefined
557+ && checklist . geofenceKeepOutLeft !== undefined
558+ && checklist . geofenceKeepOutRight !== undefined ;
493559
494560 return (
495561 < div className = { `missionWrapper${ theme === 'dark' ? '_dark' : '' } ` } >
@@ -516,16 +582,27 @@ export default class MissionWindow extends Component<ThemeProps, State> {
516582 < h1 style = { { marginTop : 0 } } > Options</ h1 >
517583 < MissionOptions title = { title } missionNames = { missionNames } options = { options } />
518584 </ div >
519- < div className = "geofenceContainer" >
520- < h1 > Geofencing</ h1 >
521- < input className = "inputFields" type = "number" name = "geofenceScanTop" value = { checklist . geofenceTop || '' } disabled = { locked . geofence } onChange = { this . onChange } placeholder = "Top" />
585+ < div className = "geofenceContainerKeepIn" >
586+ < h1 > Geofencing KeepIn</ h1 >
587+ < input className = "inputFields" type = "number" name = "geofenceKeepInTop" value = { checklist . geofenceKeepInTop || '' } disabled = { locked . geofence } onChange = { this . onChange } placeholder = "Top" />
588+ < br />
589+ < input className = "inputFields" type = "number" name = "geofenceKeepInBottom" value = { checklist . geofenceKeepInBottom || '' } disabled = { locked . geofence } onChange = { this . onChange } placeholder = "Bottom" />
590+ < br />
591+ < input className = "inputFields" type = "number" name = "geofenceKeepInLeft" value = { checklist . geofenceKeepInLeft || '' } disabled = { locked . geofence } onChange = { this . onChange } placeholder = "Left" />
592+ < br />
593+ < input className = "inputFields" type = "number" name = "geofenceKeepInRight" value = { checklist . geofenceKeepInRight || '' } disabled = { locked . geofence } onChange = { this . onChange } placeholder = "Right" />
594+ < CreateBoundingBoxButton theme = { theme } name = "Geofence Keep-In" value = "geofenceContainerKeepIn" color = "green" />
595+ </ div >
596+ < div className = "geofenceContainerKeepOut" >
597+ < h1 > Geofencing KeepOut</ h1 >
598+ < input className = "inputFields" type = "number" name = "geofenceKeepOutTop" value = { checklist . geofenceKeepOutTop || '' } disabled = { locked . geofence } onChange = { this . onChange } placeholder = "Top" />
522599 < br />
523- < input className = "inputFields" type = "number" name = "geofenceBottom " value = { checklist . geofenceBottom || '' } disabled = { locked . geofence } onChange = { this . onChange } placeholder = "Bottom" />
600+ < input className = "inputFields" type = "number" name = "geofenceKeepOutBottom " value = { checklist . geofenceKeepOutBottom || '' } disabled = { locked . geofence } onChange = { this . onChange } placeholder = "Bottom" />
524601 < br />
525- < input className = "inputFields" type = "number" name = "geofenceLeft " value = { checklist . geofenceLeft || '' } disabled = { locked . geofence } onChange = { this . onChange } placeholder = "Left" />
602+ < input className = "inputFields" type = "number" name = "geofenceKeepOutLeft " value = { checklist . geofenceKeepOutLeft || '' } disabled = { locked . geofence } onChange = { this . onChange } placeholder = "Left" />
526603 < br />
527- < input className = "inputFields" type = "number" name = "geofenceRight " value = { checklist . geofenceRight || '' } disabled = { locked . geofence } onChange = { this . onChange } placeholder = "Right" />
528- < CreateBoundingBoxButton theme = { theme } name = "geofence " value = "Geofencing " />
604+ < input className = "inputFields" type = "number" name = "geofenceKeepOutRight " value = { checklist . geofenceKeepOutRight || '' } disabled = { locked . geofence } onChange = { this . onChange } placeholder = "Right" />
605+ < CreateBoundingBoxButton theme = { theme } name = "Geofence Keep-Out " value = "geofenceContainerKeepOut" color = "red " />
529606 </ div >
530607 < div className = "buttonContainer" >
531608 { status === 'ready' && < button type = "button" disabled = { ! unlockStartMissionButton } onClick = { this . postStartMissions } > Start Missions</ button > }
0 commit comments