diff --git a/src/renderer/components/EditBar.vue b/src/renderer/components/EditBar.vue index ab58462..7b68db7 100644 --- a/src/renderer/components/EditBar.vue +++ b/src/renderer/components/EditBar.vue @@ -223,6 +223,7 @@ return { 'index': Number(o['id']), '_leaflet_id': o._leaflet_id, 'type': 'parking', + 'parkingType': o.options.attributes.type, 'name': o.options.attributes.name, 'radius': String(o.options.attributes.radius), 'lat': o._latlng.lat, diff --git a/src/renderer/components/Upload.vue b/src/renderer/components/Upload.vue index cbcac88..2715d8d 100644 --- a/src/renderer/components/Upload.vue +++ b/src/renderer/components/Upload.vue @@ -103,6 +103,7 @@ return { 'index': Number(o['id']), '_leaflet_id': o._leaflet_id, 'type': 'parking', + 'parkingType': o.options.attributes.type, 'name': o.options.attributes.name, 'radius': String(o.options.attributes.radius), 'lat': o._latlng.lat, diff --git a/src/renderer/loaders/ParkingSpot.js b/src/renderer/loaders/ParkingSpot.js index deb9e80..855c1c5 100644 --- a/src/renderer/loaders/ParkingSpot.js +++ b/src/renderer/loaders/ParkingSpot.js @@ -117,6 +117,8 @@ L.ParkingSpot = L.Circle.extend({ } }, select() { + store.default.dispatch('setParking', this.options.attributes); + store.default.dispatch('setParkingCoords', this.getLatLng().lat.toFixed(5) + ' ' + this.getLatLng().lng.toFixed(5)); var style = {}; style['color'] = 'red'; this.setStyle(style); @@ -176,8 +178,6 @@ L.ParkingSpot = L.Circle.extend({ } }); } - store.default.dispatch('setParking', event.target.options.attributes); - store.default.dispatch('setParkingCoords', event.target.getLatLng().lat.toFixed(5) + ' ' + event.target.getLatLng().lng.toFixed(5)); this.select(); }); this.on('editable:vertex:clicked', function (event) { diff --git a/src/renderer/loaders/TaxiwaySegmentExtender.js b/src/renderer/loaders/TaxiwaySegmentExtender.js index 015454f..6ae3380 100644 --- a/src/renderer/loaders/TaxiwaySegmentExtender.js +++ b/src/renderer/loaders/TaxiwaySegmentExtender.js @@ -73,26 +73,29 @@ exports.extendTaxiSegment = function (taxiwaySegment) { this.options.attributes.selected = false; this.updateStyle(); this.getLatLngs().forEach( element => { - if (element.__vertex._icon != null) { - element.__vertex._icon.style['background-color'] = 'white'; - } else if (element.vertex.icon != null) { - if (element.__vertex.icon.style != null) { - element.__vertex.icon.style['background-color'] = 'white'; - } else { - element.__vertex.setStyle({ color: 'white' }) - } - } else if (element.__vertex.options.icon != null) { - if (element.__vertex.options.icon.style != null) { - element.__vertex.options.icon.style['background-color'] = 'white'; - } else { - element.__vertex.options.icon._setIconStyles({ color: 'white' }) - } - } + if (element.__vertex!==undefined) { + if (element.__vertex._icon != null) { + element.__vertex._icon.style['background-color'] = 'white'; + } else if (element.__vertex.icon != null) { + if (element.__vertex.icon.style != null) { + element.__vertex.icon.style['background-color'] = 'white'; + } else { + element.__vertex.setStyle({ color: 'white' }) + } + } else if (element.__vertex.options.icon != null) { + if (element.__vertex.options.icon.style != null) { + element.__vertex.options.icon.style['background-color'] = 'white'; + } else { + element.__vertex.options.icon._setIconStyles({ color: 'white' }) + } + } + } }); }; taxiwaySegment.__proto__.addListeners = function () { this.on('click', function (event) { - if (Number(store.default.state.Editable.index) >= 0) { + if (Number(store.default.state.Editable.index) >= 0 && + this.featureLookup[store.default.state.Editable.index] !== undefined) { this.featureLookup[store.default.state.Editable.index].forEach(element => { element.deselect(); }); @@ -286,14 +289,17 @@ exports.extendTaxiSegment = function (taxiwaySegment) { style.color = '#3388ff'; } this.setStyle(style); - if (this.options.attributes.direction === 'forward') { - this.setText(null); - this.setText(' ⮞ ', { repeat: true, attributes: { fill: 'red', size: 30 } }) - } else if (this.options.attributes.direction === 'backward') { - this.setText(null); - this.setText(' ⮜ ', { repeat: true, attributes: { fill: 'red', size: 30 } }) - } else { - this.setText(null); - } + if(this._map !== null) { + if (this.options.attributes.direction === 'forward') { + this.setText(null); + this.setText(' ⮞ ', { repeat: true, attributes: { fill: 'red', size: 30 } }) + } else if (this.options.attributes.direction === 'backward') { + this.setText(null); + this.setText(' ⮜ ', { repeat: true, attributes: { fill: 'red', size: 30 } }) + } else { + this.setText(null); + } + + } }; }; diff --git a/src/renderer/utils/check.js b/src/renderer/utils/check.js index 9036da1..a9b8723 100644 --- a/src/renderer/utils/check.js +++ b/src/renderer/utils/check.js @@ -6,7 +6,11 @@ const winURL = process.env.NODE_ENV === 'development' var path = require('path'); const fs = require('fs'); -importScripts('dijkstra.js'); +if(process.env.NODE_ENV === 'development') { + importScripts('../../../node_modules/dijkstrajs/dijkstra.js'); +} else { + importScripts('dijkstra.js'); +} const homedir = require('os').homedir(); @@ -136,7 +140,6 @@ async function checkGroundnet(data) { ); - okNodes = okNodes.filter((v, i) => okNodes.indexOf(v) === i); var notOkNodesParkings = parkings.filter( (v, i) => okNodes.indexOf(v) < 0 @@ -165,21 +168,10 @@ async function checkGroundnet(data) { ).map( v => { return { id: Number(v[0]), message: 'Node not a legimate end' } } ); - notOkNodes = notOkNodes.concat(danglingEnds); - notOkNodes = notOkNodes.concat(notOkNodesParkings); - notOkNodes = notOkNodes.concat(notOkNodesRunways); - - // Ends that are not on Runway and not a Parking or Pushback - /*var wrongPushbackEnds = pushbackNodes.filter( - (v, i) => allEnds.map(a => Number(a[0])).indexOf(Number(v)) < 0 - ).map( - v => { return { id: Number(v), message: 'Pushback node not an end' } } - ); - notOkNodes = notOkNodes.concat(wrongPushbackEnds)*/ - notOkNodes = notOkNodes.concat(wrongPushbackRoutes); var parkingNodes = data.map(mapParkingNode).filter(n => n !== undefined); + var overlappingParkings = []; // Check for intersecting radii parkingNodes.forEach(parkingNode => { parkingNodes.forEach(parkingNode1 => { @@ -188,30 +180,30 @@ async function checkGroundnet(data) { var d = distance([parkingNode.lng, parkingNode.lat], [parkingNode1.lng, parkingNode1.lat]); if (d < parkingNode.radius + parkingNode1.radius) { - notOkNodes.push({ id: parkingNode.index, message: 'Overlapping parkings' }); + overlappingParkings.push({ id: parkingNode.index, message: 'Overlapping parkings' }); } } this.postMessage(['progress', 1]); }); }); - // Check for name - parkingNodes.forEach(parkingNode => { - if (!parkingNode.name) { - notOkNodes.push({ id: parkingNode.index, message: 'Name empty' }); - this.postMessage(['progress', 1]); - } - if (!parkingNode.type) { - notOkNodes.push({ id: parkingNode.index, message: 'Parking type empty' }); - this.postMessage(['progress', 1]); - } - }); + var invalidParkings = []; // Check for name parkingNodes.forEach(parkingNode => { if (!parkingNode.name || /^\s*$/.test(parkingNode.name)) { - notOkNodes.push({ id: parkingNode.index, message: 'Empty name' }); + invalidParkings.push({ id: parkingNode.index, message: 'Name empty' }); + this.postMessage(['progress', 1]); + } + if (!parkingNode.type) { + invalidParkings.push({ id: parkingNode.index, message: 'Parking type empty' }); + this.postMessage(['progress', 1]); + } + if (['ga','cargo', 'gate', 'mil-fighter', 'mil-cargo' ].indexOf(parkingNode.parkingType)<0) { + //debugger; + invalidParkings.push({ id: parkingNode.index, message: `Parking type ${parkingNode.parkingType} not valid` }); + this.postMessage(['progress', 1]); } - this.postMessage(['progress', 1]); }); + //Check for dual pushback/runway nodes runwayNodes.forEach(runwayNode => { if (pushbackNodes.indexOf(runwayNode) >= 0) { @@ -219,6 +211,12 @@ async function checkGroundnet(data) { } }); + notOkNodes = notOkNodes.concat(invalidParkings); + notOkNodes = notOkNodes.concat(overlappingParkings); + notOkNodes = notOkNodes.concat(danglingEnds); + notOkNodes = notOkNodes.concat(notOkNodesParkings); + notOkNodes = notOkNodes.concat(notOkNodesRunways); + notOkNodes = notOkNodes.concat(wrongPushbackRoutes); // check1(graph); // check2(); // this.postMessage(['progress', 1]); @@ -278,8 +276,9 @@ var mapParkings = function (o) { } var mapParkingNode = function (o) { + // debugger; if (o.type === 'parking') - return { index: o.index, lat: o.lat, lng: o.lng, name: o.name, radius: Number(o.radius), type: o.type }; + return { index: o.index, lat: o.lat, lng: o.lng, name: o.name, radius: Number(o.radius), type: o.type, parkingType: o.parkingType }; console.log(o); }