From cbee301ac5474ff2d83bb451a9e390a986e2a7fc Mon Sep 17 00:00:00 2001 From: portree_kid Date: Tue, 25 Feb 2020 19:58:39 +0100 Subject: [PATCH] Wellknown radius --- src/renderer/components/EditLayer.vue | 26 +++++++- src/renderer/components/ParkingEdit.vue | 85 ++++++++++++++++++++++--- src/renderer/loaders/ParkingSpot.js | 2 +- src/renderer/store/modules/Editable.js | 8 ++- 4 files changed, 107 insertions(+), 14 deletions(-) diff --git a/src/renderer/components/EditLayer.vue b/src/renderer/components/EditLayer.vue index c73db4e..5a5fa47 100644 --- a/src/renderer/components/EditLayer.vue +++ b/src/renderer/components/EditLayer.vue @@ -50,6 +50,16 @@ deep: true //add this if u need to watch object properties change etc. } ); + this.$store.watch( + function (state) { + return state.Editable.data.parking; + }, + () => { this.editedParking() } + , + { + deep: true //add this if u need to watch object properties change etc. + } + ); }, beforeDestroy () { this.remove() @@ -210,13 +220,27 @@ event.target.addTo(this.groundnetLayerGroup) }) }, + editedParking() { + console.log(this.$store.state.Editable.data.parking) + if (this.$store.state.Editable.index === undefined || + this.$store.state.Editable.data.parking === undefined || + this.featureLookup===undefined) { + return + } + this.featureLookup[this.$store.state.Editable.index].forEach((element,index) => { + if (element instanceof L.ParkingSpot) { + element.options.attributes = Object.assign({}, this.$store.state.Editable.data.parking) + element.updateVertexFromDirection(); + } + }) + }, editedArc() { console.log('Edited Arc'); }, editedNode() { if (this.$store.state.Editable.index === undefined || this.$store.state.Editable.data.node === undefined || - this.featureLookup===undefined) { + this.featureLookup===undefined) { return; } var isOnRunway = Number(this.$store.state.Editable.data.node.isOnRunway); diff --git a/src/renderer/components/ParkingEdit.vue b/src/renderer/components/ParkingEdit.vue index e326a18..56a7410 100644 --- a/src/renderer/components/ParkingEdit.vue +++ b/src/renderer/components/ParkingEdit.vue @@ -24,28 +24,51 @@ Size : - - + + A - + B - + C - + D - + E - + F + + + Aircraft : + + + {{type}} + + + + + Parking Type : + + + + + + + @@ -65,14 +88,56 @@ this.$store.commit('SET_EDIT_PARKING_NAME', newValue) } }, - radius: { + wingspan: { // getter get: function () { - return this.$store.state.Editable.data.parking.radius + return this.$store.state.Editable.data.parking.radius * 2 }, // setter set: function (newValue) { - this.$store.commit('SET_EDIT_PARKING_RADIUS', newValue) + this.$store.commit('SET_EDIT_PARKING_RADIUS', newValue / 2) + } + }, + type: function () { + switch (this.$store.state.Editable.data.parking.radius * 2) { + case 15: + return 'PIPER PA-31/CESSNA 404 Titan' + case 24: + return 'BOMBARDIER Regional Jet CRJ-200/DE HAVILLAND CANADA DHC-6' + case 36: + return 'BOEING 737-700/AIRBUS A-320/EMBRAER ERJ 190-100' + case 52: + return 'B767 Series/AIRBUS A-310' + case 65: + return 'B777 Series/B787 Series/A330 Family' + case 80: + return 'BOEING 747-8/AIRBUS A-380-800' + default: + return 'Unknown radius : ' + this.$store.state.Editable.data.parking.radius + } + }, + // ga (general aviation), cargo (cargo), gate (commercial passenger traffic), + // mil-fighter (military fighter), mil-cargo (military transport) + options: function () { + return [{value: 'none', label: 'none'}, + {value: 'ga', label: 'general aviation'}, + {value: 'cargo', label: 'cargo'}, + {value: 'gate', label: 'commercial passenger traffic'}, + {value: 'mil-fighter', label: 'military fighter'}, + {value: 'mil-cargo', label: 'commercial passenger traffic'} + ] + }, + parking_type: { + // getter + get: function () { + if (this.$store.state.Editable.data.parking.type === undefined) { + return 'none' + } + return this.$store.state.Editable.data.parking.type + }, + // setter + set: function (newValue) { + this.$store.commit('SET_EDIT_PARKING_TYPE', newValue) } } } diff --git a/src/renderer/loaders/ParkingSpot.js b/src/renderer/loaders/ParkingSpot.js index edf86de..b4cd171 100644 --- a/src/renderer/loaders/ParkingSpot.js +++ b/src/renderer/loaders/ParkingSpot.js @@ -79,7 +79,7 @@ L.ParkingSpot = L.Circle.extend({ var end = this.editor._resizeLatLng.__vertex.getLatLng(); var heading = turf.bearing([start.lng, start.lat], [end.lng, end.lat]); this.options.attributes.heading = heading + 180; - const counts = [15, 24, 36, 52, 65, 80]; + const counts = [7.5, 12, 18, 26, 32.5, 40]; const output = counts.reduce((prev, curr) => Math.abs(curr - this._mRadius) < Math.abs(prev - this._mRadius) ? curr : prev); diff --git a/src/renderer/store/modules/Editable.js b/src/renderer/store/modules/Editable.js index c4a9aec..2ada3ad 100644 --- a/src/renderer/store/modules/Editable.js +++ b/src/renderer/store/modules/Editable.js @@ -18,8 +18,9 @@ const mutations = { }, SET_EDIT_PARKING (state, parking) { Vue.set(state, 'data', {}) - Vue.set(state.data, 'parking', parking) - Vue.set(state, 'index', parking.index) + var p = Object.assign({}, parking) + Vue.set(state.data, 'parking', p) + Vue.set(state, 'index', p.index) Vue.set(state, 'type', 'parking') }, 'SET_EDIT_NODE' (state, node) { @@ -43,6 +44,9 @@ const mutations = { 'SET_EDIT_PARKING_NAME' (state, parkingName) { Vue.set(state.data.parking, 'name', parkingName) }, + 'SET_EDIT_PARKING_TYPE' (state, type) { + Vue.set(state.data.parking, 'type', type) + }, 'SET_EDIT_PARKING_RADIUS' (state, radius) { Vue.set(state.data.parking, 'radius', radius) },