Linking
This commit is contained in:
parent
d3a7e12b5d
commit
dad1c69c29
1
.gitignore
vendored
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 }))
|
||||||
|
@ -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;
|
||||||
},
|
},
|
||||||
() => {
|
() => {
|
||||||
|
// Reset colour
|
||||||
event.target.setStyle({color : '#3388ff'});
|
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…
Reference in New Issue
Block a user