pull/36/head
portree_kid 5 years ago
parent d3a7e12b5d
commit dad1c69c29

1
.gitignore vendored

@ -9,3 +9,4 @@ npm-debug.log
npm-debug.log.* npm-debug.log.*
thumbs.db thumbs.db
!.gitkeep !.gitkeep
scan*.log

@ -127,7 +127,7 @@
l.featureLookup = this.featureLookup; l.featureLookup = this.featureLookup;
if (typeof l.extensions === 'function') { if (typeof l.extensions === 'function') {
l.extensions() l.extensions(this)
} }
if (typeof l.bringToFront === 'function') { if (typeof l.bringToFront === 'function') {
l.bringToFront() l.bringToFront()
@ -199,34 +199,23 @@
polyLine.addTo(this.groundnetLayerGroup) polyLine.addTo(this.groundnetLayerGroup)
polyLine.groundnetLayerGroup = this.groundnetLayerGroup; polyLine.groundnetLayerGroup = this.groundnetLayerGroup;
polyLine.attributes = []; polyLine.attributes = [];
polyLine.featureLookup = this.featureLookup;
extendTaxiSegment(polyLine);
polyLine.setEditlayer(this);
//polyLine.extensions(this);
polyLine.addListeners()
polyLine.on('editable:vertex:new', event => {
console.log(event)
let closest = this.closestLayerSnap(event.latlng, 10)
if (closest) {
event.latlng.__vertex.glueindex = closest.glueindex;
event.latlng.__vertex.setLatLng(closest.latlng);
this.featureLookup[event.latlng.__vertex.glueindex].push(event.latlng.__vertex);
console.log(closest)
} else {
event.latlng.__vertex.glueindex = ++this.groundnetLayerGroup.maxId;
this.featureLookup[event.latlng.__vertex.glueindex] = [];
}
event.latlng.attributes = [];
})
polyLine.on('editable:drawing:end', event => { polyLine.on('editable:drawing:end', event => {
event.target.featureLookup = this.featureLookup;
extendTaxiSegment(event.target);
event.target.addListeners()
console.log(event) console.log(event)
event.target.addTo(this.groundnetLayerGroup) event.target.addTo(this.groundnetLayerGroup)
}) })
}, },
editedArc() { editedArc() {
console.log('Edited Arc');
}, },
editedNode() { editedNode() {
if (this.$store.state.Editable.data.node===undefined || if (this.$store.state.Editable.index === undefined ||
this.$store.state.Editable.data.node === undefined ||
this.featureLookup===undefined) { this.featureLookup===undefined) {
return; return;
} }
@ -270,8 +259,11 @@
} }
else if (element instanceof L.ParkingSpot) { else if (element instanceof L.ParkingSpot) {
} }
else if (element instanceof L.Editable.VertexMarker) {
latlng = element.latlng;
}
else if (element instanceof L.TaxiwaySegment) { else if (element instanceof L.TaxiwaySegment) {
if (Number(element.begin) === nIndex) { if (Number(element.begin) === Number(nIndex)) {
latlng = element._latlngs[0]; latlng = element._latlngs[0];
} }
if (Number(element.end) === nIndex) { if (Number(element.end) === nIndex) {
@ -279,14 +271,14 @@
} }
} else if (element instanceof L.Polyline) { } else if (element instanceof L.Polyline) {
element._latlngs.forEach(element => { element._latlngs.forEach(element => {
if(Number(element.__vertex.glueindex) === nIndex){ if(Number(element.__vertex.glueindex) === Number(nIndex)){
latlng = element.__vertex.latlng; latlng = element.__vertex.latlng;
} }
}); });
} }
}) })
if (!hasRunwayNode && isOnRunway) { if (!hasRunwayNode && isOnRunway && latlng !== undefined) {
this.$store.state.Editable.data.node.holdPointType this.$store.state.Editable.data.node.holdPointType
const icon = new L.DivIcon({ const icon = new L.DivIcon({
className: 'custom-div-icon', className: 'custom-div-icon',
@ -389,6 +381,7 @@
xml.push(l) xml.push(l)
}) })
writeGroundnetXML(this.$store.state.Settings.settings.airportsDirectory, this.icao, xml) writeGroundnetXML(this.$store.state.Settings.settings.airportsDirectory, this.icao, xml)
this.load(this.icao, false)
}, },
setVisible(visible) { setVisible(visible) {
if (this.layerGroup) { if (this.layerGroup) {

@ -128,7 +128,7 @@
searched: function () { searched: function () {
console.log(this.searchterm) console.log(this.searchterm)
let searchRegex = new RegExp(this.searchterm, 'i') let searchRegex = new RegExp(this.searchterm, 'i')
return this.$store.state.Airports.airports return this.$store.state.Airports.unfilteredairports
.filter(a => searchRegex.test(a.properties.icao) || searchRegex.test(a.properties.name)) .filter(a => searchRegex.test(a.properties.icao) || searchRegex.test(a.properties.name))
// .map(a => console.log(a.properties)) // .map(a => console.log(a.properties))
.map(a => ({ icao: a.properties.icao, name: a.properties.name })) .map(a => ({ icao: a.properties.icao, name: a.properties.name }))

@ -6,7 +6,7 @@
<i class="fa fa-caret-left"></i> <i class="fa fa-caret-left"></i>
</div> </div>
</h1> </h1>
<div id="panel" width="100%"> <div id="panel" width="100%">
<el-row> <el-row>
<el-col :span="7">Airports Directory</el-col> <el-col :span="7">Airports Directory</el-col>
<el-col :span="15">{{ airports_directory }}</el-col> <el-col :span="15">{{ airports_directory }}</el-col>

@ -14,7 +14,7 @@ L.HoldNode = L.Marker.extend({
this.follow(event.target.glueindex, event); this.follow(event.target.glueindex, event);
}); });
}, },
extensions: function () { extensions: function (editLayer) {
if (typeof this.featureLookup[this.glueindex] === 'undefined') { if (typeof this.featureLookup[this.glueindex] === 'undefined') {
this.featureLookup[this.glueindex] = new Array(); this.featureLookup[this.glueindex] = new Array();
} }

@ -157,7 +157,7 @@ L.ParkingSpot = L.Circle.extend({
turfToLatLng: function (turfPoint) { turfToLatLng: function (turfPoint) {
return {lat: turfPoint.geometry.coordinates[1], lng: turfPoint.geometry.coordinates[0]}; return {lat: turfPoint.geometry.coordinates[1], lng: turfPoint.geometry.coordinates[0]};
}, },
extensions: function () { extensions: function (editLayer) {
this.createDirection(); this.createDirection();
if (typeof this.featureLookup[this.id] === 'undefined') { if (typeof this.featureLookup[this.id] === 'undefined') {
this.featureLookup[this.id] = []; this.featureLookup[this.id] = [];

@ -14,7 +14,7 @@ L.RunwayNode = L.Marker.extend({
this.follow(event.target.glueindex, event); this.follow(event.target.glueindex, event);
}); });
}, },
extensions: function () { extensions: function (editLayer) {
if (typeof this.featureLookup[this.glueindex] === 'undefined') { if (typeof this.featureLookup[this.glueindex] === 'undefined') {
this.featureLookup[this.glueindex] = new Array(); this.featureLookup[this.glueindex] = new Array();
} }

@ -26,7 +26,7 @@ L.TaxiwaySegment = L.Polyline.extend({
} }
}); });
}, },
extensions: function () { extensions: function (editLayer) {
this._latlngs[0].__vertex.glueindex = this.begin; this._latlngs[0].__vertex.glueindex = this.begin;
this._latlngs.slice(-1)[0].__vertex.glueindex = this.end; this._latlngs.slice(-1)[0].__vertex.glueindex = this.end;
if (typeof this.featureLookup[this.begin] === 'undefined') { if (typeof this.featureLookup[this.begin] === 'undefined') {
@ -45,7 +45,9 @@ L.TaxiwaySegment = L.Polyline.extend({
store.default.watch( function (state) { store.default.watch( function (state) {
return state.Editable.data.arc; return state.Editable.data.arc;
}, },
() => { console.log(this) } () => {
console.log(this)
}
, ,
{ {
deep: true //add this if u need to watch object properties change etc. deep: true //add this if u need to watch object properties change etc.

@ -24,7 +24,11 @@ exports.extendTaxiSegment = function (taxiwaySegment) {
} }
}); });
}; };
taxiwaySegment.__proto__.extensions = function () { taxiwaySegment.__proto__.setEditlayer = function (editLayer) {
this.editLayer = editLayer;
};
taxiwaySegment.__proto__.extensions = function (editLayer) {
this.editLayer = editLayer;
this._latlngs[0].__vertex.glueindex = this.begin; this._latlngs[0].__vertex.glueindex = this.begin;
this._latlngs.slice(-1)[0].__vertex.glueindex = this.end; this._latlngs.slice(-1)[0].__vertex.glueindex = this.end;
if (typeof this.featureLookup[this.begin] === 'undefined') { if (typeof this.featureLookup[this.begin] === 'undefined') {
@ -40,18 +44,22 @@ exports.extendTaxiSegment = function (taxiwaySegment) {
this.on('click', function (event) { this.on('click', function (event) {
event.target.setStyle({color : 'red'}); event.target.setStyle({color : 'red'});
console.log("Click : " + event.target); console.log("Click : " + event.target);
store.default.dispatch('setArc', event.target.options.attributes); if (store.default.state.Editable.data.arc !== event.target.options.attributes) {
store.default.dispatch('setArc', event.target.options.attributes);
}
this.unwatch = store.default.watch( this.unwatch = store.default.watch(
function (state) { function (state) {
return state.Editable.data.arc; return state.Editable.data.arc;
}, },
() => { () => {
event.target.setStyle({color : '#3388ff'}); // Reset colour
event.target.setStyle({color : '#3388ff'});
this.unwatch(); this.unwatch();
} }
, ,
{ {
deep: true //add this if u need to watch object properties change etc. deep: true //add this if u need to watch object properties change etc.
} }
); );
}); });
@ -61,17 +69,60 @@ exports.extendTaxiSegment = function (taxiwaySegment) {
this.follow(dragIndex, event); this.follow(dragIndex, event);
} }
}); });
this.on('editable:vertex:new', event => {
console.log(event)
let closest = this.editLayer.closestLayerSnap(event.latlng, 10)
if (closest) {
event.latlng.__vertex['glueindex'] = Number(closest.glueindex);
event.latlng.__vertex.setLatLng(closest.latlng);
this.editLayer.featureLookup[event.latlng.__vertex.glueindex].push(event.latlng.__vertex);
console.log(closest)
} else {
event.latlng.__vertex['glueindex'] = ++this.editLayer.groundnetLayerGroup.maxId;
this.editLayer.featureLookup[event.latlng.__vertex.glueindex] = [];
this.editLayer.featureLookup[event.latlng.__vertex.glueindex].push(event.latlng.__vertex);
}
event.latlng.attributes = {index: event.latlng.__vertex.glueindex, isOnRunway: 0};
})
this.on('editable:vertex:clicked', function (event) { this.on('editable:vertex:clicked', function (event) {
console.log(this.featureLookup[event.vertex.glueindex]); console.log(this.featureLookup[event.vertex.glueindex]);
store.default.dispatch('setNode', event.vertex.latlng.attributes) store.default.dispatch('setNode', event.vertex.latlng.attributes)
event.vertex._icon.style['background-color'] = 'red'; if(event.vertex._icon!=null) {
event.vertex._icon.style['background-color'] = 'red';
} else if(event.vertex.icon!=null ) {
if(event.vertex.icon.style!=null) {
event.vertex.icon.style['background-color'] = 'red';
} else {
event.vertex.setStyle({color : 'red'})
}
} else if(event.vertex.options.icon!=null ) {
if(event.vertex.options.icon.style!=null) {
event.vertex.options.icon.style['background-color'] = 'red';
} else {
event.vertex.options.icon._setIconStyles({color : 'red'})
}
}
this.unwatch = store.default.watch( this.unwatch = store.default.watch(
function (state) { function (state) {
return state.Editable.data.node; return state.Editable.data.node;
}, },
() => { () => {
event.vertex._icon.style['background-color'] = 'white'; if(event.vertex._icon!=null) {
event.vertex._icon.style['background-color'] = 'white';
} else if(event.vertex.icon!=null ) {
if(event.vertex.icon.style!=null) {
event.vertex.icon.style['background-color'] = 'white';
} else {
event.vertex.setStyle({color : 'white'})
}
} else if(event.vertex.options.icon!=null ) {
if(event.vertex.options.icon.style!=null) {
event.vertex.options.icon.style['background-color'] = 'white';
} else {
event.vertex.options.icon._setIconStyles({color : 'white'})
}
}
this.unwatch(); this.unwatch();
} }
, ,
@ -124,13 +175,13 @@ exports.extendTaxiSegment = function (taxiwaySegment) {
element.updateVertexFromDirection(); element.updateVertexFromDirection();
} }
else if (element instanceof L.Polyline) { else if (element instanceof L.Polyline) {
if (element.begin === dragIndex) { if (Number(element.begin) === Number(dragIndex)) {
element.getLatLngs()[0].update(event.latlng); element.getLatLngs()[0].update(event.latlng);
element.setLatLngs(element.getLatLngs()); element.setLatLngs(element.getLatLngs());
element.updateBeginVertex(event.latlng); element.updateBeginVertex(event.latlng);
element.updateMiddle(); element.updateMiddle();
} }
if (element.end === dragIndex) { if (Number(element.end) === Number(dragIndex)) {
element.getLatLngs()[element.getLatLngs().length - 1].update(event.latlng); element.getLatLngs()[element.getLatLngs().length - 1].update(event.latlng);
element.setLatLngs(element.getLatLngs()); element.setLatLngs(element.getLatLngs());
element.updateEndVertex(event.latlng); element.updateEndVertex(event.latlng);

@ -152,7 +152,7 @@ var convertLat = function (latlng) {
var convertLon = function (latlng) { var convertLon = function (latlng) {
console.log(latlng.lng); console.log(latlng.lng);
var NS = latlng.lat < 0 ? 'E' : 'W'; var NS = latlng.lat > 0 ? 'E' : 'W';
var deg = mathjs.floor(mathjs.abs(latlng.lng)); var deg = mathjs.floor(mathjs.abs(latlng.lng));
var min = (mathjs.abs(latlng.lng) - deg) * 60; var min = (mathjs.abs(latlng.lng) - deg) * 60;
// console.log(NS + deg + " " + min); // console.log(NS + deg + " " + min);

@ -37,13 +37,12 @@ const actions = {
context.commit(SET_AIRPORTS, airports context.commit(SET_AIRPORTS, airports
.filter(point => typeof point.geometry.coordinates !== "undefined" ) .filter(point => typeof point.geometry.coordinates !== "undefined" )
.filter(point => point.properties.flights > 0 )); .filter(point => point.properties.flights > 0 ));
}, },
async getAirportsUnfiltered(context) { async getAirportsUnfiltered(context) {
context.commit(RESET_AIRPORTS); context.commit(RESET_AIRPORTS);
let airports = await idb.getAirports(); let airports = await idb.getAirports();
context.commit(SET_UNFILTERED_AIRPORTS, airports context.commit(SET_UNFILTERED_AIRPORTS, airports
.filter(point => typeof point.geometry.coordinates !== "undefined" ) .filter(point => typeof point.geometry.coordinates !== "undefined" ));
.filter(point => point.properties.flights > 0 ));
}, },
async saveAirport(context, airport) { async saveAirport(context, airport) {
await idb.saveAirport(airport); await idb.saveAirport(airport);

@ -17,25 +17,28 @@ const mutations = {
state.type = 'airport' state.type = 'airport'
}, },
SET_EDIT_PARKING (state, parking) { SET_EDIT_PARKING (state, parking) {
state.data = {} Vue.set(state, 'data', {})
Vue.set(state.data, 'parking', parking) Vue.set(state.data, 'parking', parking)
state.index = parking.index Vue.set(state, 'index', parking.index)
state.type = 'parking' Vue.set(state, 'type', 'parking')
}, },
'SET_EDIT_NODE' (state, node) { 'SET_EDIT_NODE' (state, node) {
state.data = {} if (node === undefined) {
return
}
Vue.set(state, 'data', {})
Vue.set(state.data, 'node', node) Vue.set(state.data, 'node', node)
state.index = node.index Vue.set(state, 'index', node.index)
state.type = 'node' Vue.set(state, 'type', 'node')
}, },
SET_EDIT_ARC (state, arc) { SET_EDIT_ARC (state, arc) {
state.data = {} Vue.set(state, 'data', {})
state.data.arc = arc Vue.set(state.data, 'arc', arc)
if (state.data.arc.name === undefined) { if (state.data.arc.name === undefined) {
state.data.arc.name = '' Vue.set(state.data.arc, 'name', '')
} }
state.index = arc.index Vue.set(state, 'index', arc.index)
state.type = 'arc' Vue.set(state, 'type', 'arc')
}, },
'SET_EDIT_PARKING_NAME' (state, parkingName) { 'SET_EDIT_PARKING_NAME' (state, parkingName) {
Vue.set(state.data.parking, 'name', parkingName) Vue.set(state.data.parking, 'name', parkingName)
@ -44,13 +47,13 @@ const mutations = {
Vue.set(state.data.arc, 'name', arcName) Vue.set(state.data.arc, 'name', arcName)
}, },
'SET_EDIT_PUSHBACK' (state, isPushBackRoute) { 'SET_EDIT_PUSHBACK' (state, isPushBackRoute) {
state.data.arc.isPushBackRoute = isPushBackRoute Vue.set(state.data.arc, 'isPushBackRoute', isPushBackRoute)
}, },
'SET_EDIT_HOLDPOINTTYPE' (state, holdPointType) { 'SET_EDIT_HOLDPOINTTYPE' (state, holdPointType) {
state.data.node.holdPointType = holdPointType Vue.set(state.data.node, 'holdPointType', holdPointType)
}, },
'SET_EDIT_ISONRUNWAY' (state, isOnRunway) { 'SET_EDIT_ISONRUNWAY' (state, isOnRunway) {
state.data.node.isOnRunway = isOnRunway Vue.set(state.data.node, 'isOnRunway', isOnRunway)
} }
} }

Loading…
Cancel
Save