@ -10,7 +10,7 @@ let WaypointCollection = function () {
countBusyPoints = 0 ,
countBusyPoints = 0 ,
version = 0 ,
version = 0 ,
center = { }
center = { }
self . getMaxWaypoints = function ( ) {
self . getMaxWaypoints = function ( ) {
return maxWaypoints ;
return maxWaypoints ;
} ;
} ;
@ -18,15 +18,15 @@ let WaypointCollection = function () {
self . setMaxWaypoints = function ( data ) {
self . setMaxWaypoints = function ( data ) {
maxWaypoints = data ;
maxWaypoints = data ;
} ;
} ;
self . getValidMission = function ( ) {
self . getValidMission = function ( ) {
return isValidMission ;
return isValidMission ;
} ;
} ;
self . setValidMission = function ( data ) {
self . setValidMission = function ( data ) {
isValidMission = data ;
isValidMission = data ;
} ;
} ;
self . getCountBusyPoints = function ( ) {
self . getCountBusyPoints = function ( ) {
return countBusyPoints ;
return countBusyPoints ;
} ;
} ;
@ -34,7 +34,7 @@ let WaypointCollection = function () {
self . setCountBusyPoints = function ( data ) {
self . setCountBusyPoints = function ( data ) {
countBusyPoints = data ;
countBusyPoints = data ;
} ;
} ;
self . getVersion = function ( ) {
self . getVersion = function ( ) {
return version ;
return version ;
} ;
} ;
@ -42,11 +42,11 @@ let WaypointCollection = function () {
self . setVersion = function ( data ) {
self . setVersion = function ( data ) {
version = data ;
version = data ;
} ;
} ;
self . getCenter = function ( ) {
self . getCenter = function ( ) {
return center ;
return center ;
} ;
} ;
self . setCenter = function ( data ) {
self . setCenter = function ( data ) {
center = data ;
center = data ;
} ;
} ;
@ -54,11 +54,11 @@ let WaypointCollection = function () {
self . setCenterZoom = function ( data ) {
self . setCenterZoom = function ( data ) {
center . zoom = data ;
center . zoom = data ;
} ;
} ;
self . setCenterLon = function ( data ) {
self . setCenterLon = function ( data ) {
center . lon = data ;
center . lon = data ;
} ;
} ;
self . setCenterLat = function ( data ) {
self . setCenterLat = function ( data ) {
center . lat = data ;
center . lat = data ;
} ;
} ;
@ -70,7 +70,7 @@ let WaypointCollection = function () {
self . get = function ( ) {
self . get = function ( ) {
return data ;
return data ;
} ;
} ;
self . isEmpty = function ( ) {
self . isEmpty = function ( ) {
return data == [ ] ;
return data == [ ] ;
} ;
} ;
@ -78,7 +78,7 @@ let WaypointCollection = function () {
self . flush = function ( ) {
self . flush = function ( ) {
data = [ ] ;
data = [ ] ;
} ;
} ;
self . reinit = function ( ) {
self . reinit = function ( ) {
data = [ ] ;
data = [ ] ;
maxWaypoints = 60 ;
maxWaypoints = 60 ;
@ -99,13 +99,13 @@ let WaypointCollection = function () {
}
}
}
}
} ;
} ;
self . updateWaypoint = function ( newWaypoint ) {
self . updateWaypoint = function ( newWaypoint ) {
if ( newWaypoint . isUsed ( ) ) {
if ( newWaypoint . isUsed ( ) ) {
data [ newWaypoint . getNumber ( ) ] = newWaypoint ;
data [ newWaypoint . getNumber ( ) ] = newWaypoint ;
}
}
} ;
} ;
self . dropWaypoint = function ( newWaypoint ) {
self . dropWaypoint = function ( newWaypoint ) {
self . getWaypoint ( newWaypoint . getNumber ( ) ) . setUsed ( false ) ;
self . getWaypoint ( newWaypoint . getNumber ( ) ) . setUsed ( false ) ;
let indexId = newWaypoint . getNumber ( )
let indexId = newWaypoint . getNumber ( )
@ -120,7 +120,7 @@ let WaypointCollection = function () {
data . splice ( indexId , 1 ) ;
data . splice ( indexId , 1 ) ;
} ;
} ;
self . insertWaypoint = function ( newWaypoint , indexId ) {
self . insertWaypoint = function ( newWaypoint , indexId ) {
data . forEach ( function ( wp ) {
data . forEach ( function ( wp ) {
if ( wp . getNumber ( ) >= indexId ) {
if ( wp . getNumber ( ) >= indexId ) {
@ -133,7 +133,7 @@ let WaypointCollection = function () {
data . splice ( indexId , 0 , newWaypoint ) ;
data . splice ( indexId , 0 , newWaypoint ) ;
} ;
} ;
self . drop = function ( waypointId ) {
self . drop = function ( waypointId ) {
self . getWaypoint ( waypointId ) . setUsed ( false ) ;
self . getWaypoint ( waypointId ) . setUsed ( false ) ;
var tmpData = [ ] ;
var tmpData = [ ] ;
@ -148,7 +148,7 @@ let WaypointCollection = function () {
data = tmpData ;
data = tmpData ;
} ;
} ;
self . update = function ( bMWPfile = false , bReverse = false ) {
self . update = function ( bMWPfile = false , bReverse = false ) {
let oldWPNumber = 0 ;
let oldWPNumber = 0 ;
let optionIdx = 0 ;
let optionIdx = 0 ;
@ -167,7 +167,7 @@ let WaypointCollection = function () {
element . setP1 ( element . getP1 ( ) + 1 ) ;
element . setP1 ( element . getP1 ( ) + 1 ) ;
}
}
}
}
if ( [ MWNP . WPTYPE . JUMP , MWNP . WPTYPE . SET _HEAD , MWNP . WPTYPE . RTH ] . includes ( element . getAction ( ) ) ) {
if ( [ MWNP . WPTYPE . JUMP , MWNP . WPTYPE . SET _HEAD , MWNP . WPTYPE . RTH ] . includes ( element . getAction ( ) ) ) {
element . setAttachedId ( oldWPNumber ) ;
element . setAttachedId ( oldWPNumber ) ;
element . setAttachedNumber ( optionIdx ) ;
element . setAttachedNumber ( optionIdx ) ;
@ -189,7 +189,7 @@ let WaypointCollection = function () {
}
}
} ) ;
} ) ;
} ;
} ;
self . getNonAttachedList = function ( ) {
self . getNonAttachedList = function ( ) {
let tmpData = [ ] ;
let tmpData = [ ] ;
data . forEach ( function ( element ) {
data . forEach ( function ( element ) {
@ -199,8 +199,8 @@ let WaypointCollection = function () {
} ) ;
} ) ;
return tmpData ;
return tmpData ;
}
}
self . getAttachedList = function ( ) {
self . getAttachedList = function ( ) {
let tmpData = [ ] ;
let tmpData = [ ] ;
data . forEach ( function ( element ) {
data . forEach ( function ( element ) {
@ -210,8 +210,8 @@ let WaypointCollection = function () {
} ) ;
} ) ;
return tmpData ;
return tmpData ;
}
}
self . getAttachedFromWaypoint = function ( waypoint ) {
self . getAttachedFromWaypoint = function ( waypoint ) {
let tmpData = [ ] ;
let tmpData = [ ] ;
data . forEach ( function ( element ) {
data . forEach ( function ( element ) {
@ -221,8 +221,8 @@ let WaypointCollection = function () {
} ) ;
} ) ;
return tmpData ;
return tmpData ;
}
}
self . addAttachedFromWaypoint = function ( waypoint ) {
self . addAttachedFromWaypoint = function ( waypoint ) {
let tmpNumber = 0 ;
let tmpNumber = 0 ;
let tmpData = self . getAttachedFromWaypoint ( waypoint ) ;
let tmpData = self . getAttachedFromWaypoint ( waypoint ) ;
@ -234,8 +234,8 @@ let WaypointCollection = function () {
tempWp . setAttachedId ( waypoint . getNumber ( ) ) ;
tempWp . setAttachedId ( waypoint . getNumber ( ) ) ;
self . insertWaypoint ( tempWp , waypoint . getNumber ( ) + tmpNumber + 1 ) ;
self . insertWaypoint ( tempWp , waypoint . getNumber ( ) + tmpNumber + 1 ) ;
self . update ( ) ;
self . update ( ) ;
}
}
self . dropAttachedFromWaypoint = function ( waypoint , waypointAttachedNumber ) {
self . dropAttachedFromWaypoint = function ( waypoint , waypointAttachedNumber ) {
data . forEach ( function ( element ) {
data . forEach ( function ( element ) {
if ( element . isAttached ( ) && element . getAttachedId ( ) == waypoint . getNumber ( ) && element . getAttachedNumber ( ) == waypointAttachedNumber ) {
if ( element . isAttached ( ) && element . getAttachedId ( ) == waypoint . getNumber ( ) && element . getAttachedNumber ( ) == waypointAttachedNumber ) {
@ -243,9 +243,9 @@ let WaypointCollection = function () {
self . update ( ) ;
self . update ( ) ;
}
}
} ) ;
} ) ;
}
}
self . extractBuffer = function ( waypointId ) {
self . extractBuffer = function ( waypointId ) {
let buffer = [ ] ;
let buffer = [ ] ;
let waypoint = self . getWaypoint ( waypointId ) ;
let waypoint = self . getWaypoint ( waypointId ) ;
@ -270,10 +270,10 @@ let WaypointCollection = function () {
buffer . push ( lowByte ( waypoint . getP3 ( ) ) ) ; //sbufReadU16(src); // P3
buffer . push ( lowByte ( waypoint . getP3 ( ) ) ) ; //sbufReadU16(src); // P3
buffer . push ( highByte ( waypoint . getP3 ( ) ) ) ;
buffer . push ( highByte ( waypoint . getP3 ( ) ) ) ;
buffer . push ( waypoint . getEndMission ( ) ) ; //sbufReadU8(src); // future: to set nav flag
buffer . push ( waypoint . getEndMission ( ) ) ; //sbufReadU8(src); // future: to set nav flag
return buffer ;
return buffer ;
}
}
self . missionDisplayDebug = function ( ) {
self . missionDisplayDebug = function ( ) {
if ( data && data . length != 0 ) {
if ( data && data . length != 0 ) {
data . forEach ( function ( element ) {
data . forEach ( function ( element ) {
@ -289,7 +289,7 @@ let WaypointCollection = function () {
} ) ;
} ) ;
}
}
}
}
self . copy = function ( mission ) {
self . copy = function ( mission ) {
mission . get ( ) . forEach ( function ( element ) {
mission . get ( ) . forEach ( function ( element ) {
self . put ( element ) ;
self . put ( element ) ;
@ -300,7 +300,7 @@ let WaypointCollection = function () {
self . setVersion ( mission . getVersion ( ) ) ;
self . setVersion ( mission . getVersion ( ) ) ;
self . setCenter ( mission . getCenter ( ) ) ;
self . setCenter ( mission . getCenter ( ) ) ;
}
}
self . convertJumpNumberToWaypoint = function ( jumpId ) {
self . convertJumpNumberToWaypoint = function ( jumpId ) {
let outputNumber = 0 ;
let outputNumber = 0 ;
self . getNonAttachedList ( ) . forEach ( function ( element ) {
self . getNonAttachedList ( ) . forEach ( function ( element ) {
@ -310,7 +310,7 @@ let WaypointCollection = function () {
} ) ;
} ) ;
return outputNumber ;
return outputNumber ;
}
}
self . isJumpTargetAttached = function ( waypoint ) {
self . isJumpTargetAttached = function ( waypoint ) {
let lJumptTargetAttached = [ ] ;
let lJumptTargetAttached = [ ] ;
data . forEach ( function ( element ) {
data . forEach ( function ( element ) {
@ -320,7 +320,7 @@ let WaypointCollection = function () {
} ) ;
} ) ;
return ( lJumptTargetAttached . length != 0 && lJumptTargetAttached != 'undefined' )
return ( lJumptTargetAttached . length != 0 && lJumptTargetAttached != 'undefined' )
}
}
self . getPoiList = function ( ) {
self . getPoiList = function ( ) {
let poiList = [ ] ;
let poiList = [ ] ;
data . forEach ( function ( element ) {
data . forEach ( function ( element ) {
@ -330,7 +330,7 @@ let WaypointCollection = function () {
} ) ;
} ) ;
return poiList ;
return poiList ;
}
}
self . getPoint2Measure = function ( reverse = false ) {
self . getPoint2Measure = function ( reverse = false ) {
let point2measure = [ ] ;
let point2measure = [ ] ;
let altPoint2measure = [ ] ;
let altPoint2measure = [ ] ;
@ -383,10 +383,10 @@ let WaypointCollection = function () {
nStart ++ ;
nStart ++ ;
}
}
}
}
return [ nLoop , point2measure , altPoint2measure , namePoint2measure , refPoint2measure ] ;
return [ nLoop , point2measure , altPoint2measure , namePoint2measure , refPoint2measure ] ;
}
}
self . getDistance = function ( display ) {
self . getDistance = function ( display ) {
let lengthLine = [ ] ;
let lengthLine = [ ] ;
const [ nLoop , point2measure , altPoint2measure , namePoint2measure , refPoint2measure ] = self . getPoint2Measure ( ) ;
const [ nLoop , point2measure , altPoint2measure , namePoint2measure , refPoint2measure ] = self . getPoint2Measure ( ) ;
@ -394,9 +394,9 @@ let WaypointCollection = function () {
return [ - 1 ] ;
return [ - 1 ] ;
}
}
else {
else {
const cumulativeSum = ( sum => value => sum += value ) ( 0 ) ;
const cumulativeSum = ( sum => value => sum += value ) ( 0 ) ;
let oldCoord = [ ] ;
let oldCoord = [ ] ;
point2measure . forEach ( function ( coord ) {
point2measure . forEach ( function ( coord ) {
if ( oldCoord != 'undefined' && oldCoord != [ ] ) {
if ( oldCoord != 'undefined' && oldCoord != [ ] ) {
@ -408,7 +408,7 @@ let WaypointCollection = function () {
return lengthLine . map ( cumulativeSum ) ;
return lengthLine . map ( cumulativeSum ) ;
}
}
}
}
self . getElevation = async function ( globalSettings ) {
self . getElevation = async function ( globalSettings ) {
const [ nLoop , point2measure , altPoint2measure , namePoint2measure , refPoint2measure ] = self . getPoint2Measure ( true ) ;
const [ nLoop , point2measure , altPoint2measure , namePoint2measure , refPoint2measure ] = self . getPoint2Measure ( true ) ;
let lengthMission = self . getDistance ( true ) ;
let lengthMission = self . getDistance ( true ) ;
@ -424,19 +424,21 @@ let WaypointCollection = function () {
samples = 1024 ;
samples = 1024 ;
}
}
if ( globalSettings . mapProviderType == 'bing' ) {
if ( globalSettings . mapProviderType == 'bing' ) {
let elevationEarthModel = $ ( '#elevationEarthModel' ) . prop ( "checked" ) ? "sealevel" : "ellipsoid" ;
if ( point2measure . length > 1 ) {
if ( point2measure . length > 1 ) {
const response = await fetch ( 'http://dev.virtualearth.net/REST/v1/Elevation/Polyline?points=' + point2measure + '&heights=ellipsoid&samples=' + String ( samples + 1 ) + '&key=' + globalSettings . mapApiKey ) ;
const response = await fetch ( 'http://dev.virtualearth.net/REST/v1/Elevation/Polyline?points=' + point2measure + '&heights= '+ elevationEarthModel + ' &samples='+ String ( samples + 1 ) + '&key=' + globalSettings . mapApiKey ) ;
const myJson = await response . json ( ) ;
const myJson = await response . json ( ) ;
elevation = myJson . resourceSets [ 0 ] . resources [ 0 ] . elevations ;
elevation = myJson . resourceSets [ 0 ] . resources [ 0 ] . elevations ;
}
}
else {
else {
const response = await fetch ( 'http://dev.virtualearth.net/REST/v1/Elevation/List?points=' + point2measure + '&heights= ellipsoid &key='+ globalSettings . mapApiKey ) ;
const response = await fetch ( 'http://dev.virtualearth.net/REST/v1/Elevation/List?points=' + point2measure + '&heights= '+ elevationEarthModel + ' &key='+ globalSettings . mapApiKey ) ;
const myJson = await response . json ( ) ;
const myJson = await response . json ( ) ;
elevation = myJson . resourceSets [ 0 ] . resources [ 0 ] . elevations ;
elevation = myJson . resourceSets [ 0 ] . resources [ 0 ] . elevations ;
}
}
}
}
else {
else {
elevation = "N A";
elevation = "N / A";
}
}
//console.log("elevation ", elevation);
//console.log("elevation ", elevation);
return [ lengthMission , totalMissionDistance , samples , elevation , altPoint2measure , namePoint2measure , refPoint2measure ] ;
return [ lengthMission , totalMissionDistance , samples , elevation , altPoint2measure , namePoint2measure , refPoint2measure ] ;