From 1bba5e215713073fd5c9d3bfd15dc3d592cfe668 Mon Sep 17 00:00:00 2001 From: Keith Paterson Date: Thu, 7 Jan 2021 16:51:23 +0100 Subject: [PATCH] #108 --- src/renderer/components/EditBar.vue | 1 + src/renderer/components/LeafletSidebar.vue | 4 +- src/renderer/components/ThresholdEdit.vue | 95 ++++++++++++++++ src/renderer/components/ThresholdLayer.vue | 46 +++++++- src/renderer/components/TowerLayer.vue | 20 ++-- src/renderer/components/Upload.vue | 21 ++++ src/renderer/loaders/Threshold.js | 85 +++++++++++++-- src/renderer/loaders/threshold_loader.js | 29 +++-- src/renderer/loaders/threshold_writer.js | 120 +++++++++++++++++++++ src/renderer/loaders/tower_writer.js | 11 ++ src/renderer/store/modules/Editable.js | 16 ++- 11 files changed, 408 insertions(+), 40 deletions(-) create mode 100644 src/renderer/components/ThresholdEdit.vue create mode 100644 src/renderer/loaders/threshold_writer.js diff --git a/src/renderer/components/EditBar.vue b/src/renderer/components/EditBar.vue index 908f50f..074ccbe 100644 --- a/src/renderer/components/EditBar.vue +++ b/src/renderer/components/EditBar.vue @@ -139,6 +139,7 @@ You should have received a copy of the GNU General Public License along with FG saveDefered () { this.$parent.$parent.$refs.editLayer.save() this.$parent.$parent.$refs.towerLayer.save() + this.$parent.$parent.$refs.thresholdLayer.save() this.$parent.$parent.$refs.editLayer.disableEdit() this.scanGroundnets() Vue.set(this, 'saveDialogVisible', false) diff --git a/src/renderer/components/LeafletSidebar.vue b/src/renderer/components/LeafletSidebar.vue index f225dbc..c9cf7ed 100644 --- a/src/renderer/components/LeafletSidebar.vue +++ b/src/renderer/components/LeafletSidebar.vue @@ -40,6 +40,7 @@ You should have received a copy of the GNU General Public License along with FG + @@ -82,6 +83,7 @@ You should have received a copy of the GNU General Public License along with FG import FileSelect from './FileSelect' import Help from './Help' import NodeEdit from './NodeEdit' + import ThresholdEdit from './ThresholdEdit' import ParkingEdit from './ParkingEdit' import ParkingGroupEdit from './ParkingGroupEdit' // import ParkingList from './ParkingList' @@ -93,7 +95,7 @@ You should have received a copy of the GNU General Public License along with FG export default { name: 'leaflet-sidebar', - components: { Help, AirportEdit, ArcEdit, ArcEditMulti, CheckPanel, NodeEdit, ParkingEdit, ParkingGroupEdit, RunScan, TowerEdit, FileSelect, SettingsPanel, Search, Upload, WorkInProgress }, + components: { Help, AirportEdit, ArcEdit, ArcEditMulti, CheckPanel, NodeEdit, ParkingEdit, ParkingGroupEdit, RunScan, TowerEdit, ThresholdEdit, FileSelect, SettingsPanel, Search, Upload, WorkInProgress }, props: [], created () { window.addEventListener('keydown', this.doCommand) diff --git a/src/renderer/components/ThresholdEdit.vue b/src/renderer/components/ThresholdEdit.vue new file mode 100644 index 0000000..7b2710c --- /dev/null +++ b/src/renderer/components/ThresholdEdit.vue @@ -0,0 +1,95 @@ + + + + + + diff --git a/src/renderer/components/ThresholdLayer.vue b/src/renderer/components/ThresholdLayer.vue index fff9563..dfabab7 100644 --- a/src/renderer/components/ThresholdLayer.vue +++ b/src/renderer/components/ThresholdLayer.vue @@ -5,6 +5,7 @@ import L from 'leaflet' import LEdit from 'leaflet-editable/src/Leaflet.Editable.js' import {readThresholdXML} from '../loaders/threshold_loader' + import {writeThresholdXML} from '../loaders/threshold_writer' export default { name: 'edit-layer', @@ -12,10 +13,17 @@ created () { }, mounted () { - console.log(LMap) - console.log(LMarker) - console.log(L) - console.log(LEdit) + console.debug(LMap, LMarker, L, LEdit) + this.$store.watch( + function (state) { + return state.Editable.data.threshold + }, + () => { this.editedThreshold() } + , + { + deep: true + } + ) }, beforeDestroy () { this.remove() @@ -25,6 +33,17 @@ } }, methods: { + editedThreshold () { + var rwy = this.$store.state.Editable.data.threshold.runway + var displacement = this.$store.state.Editable.data.threshold.displacement + this.layerGroup.eachLayer(l => { + if (l instanceof L.Threshold) { + if (l.rwy === rwy) { + l.setDisplacement(displacement) + } + } + }) + }, getLayer () { return this.layerGroup }, @@ -65,6 +84,25 @@ } } }, + save () { + if (this.layerGroup) { + var list = {} + + this.layerGroup.eachLayer(l => { + if (l instanceof L.Threshold) { + var latitude = l.originLatLng[0].toFixed(6) + var longitude = l.originLatLng[1].toFixed(6) + + if (list[l.index] === undefined) { + list[l.index] = [] + } + var o = {latitude: latitude, longitude: longitude, index: l.index, rwy: l.rwy, heading: l.heading, displacement: l.displacement, stopw_m: l.stopw_m} + list[l.index].push(o) + } + }) + writeThresholdXML(this.$store.state.Settings.settings.airportsDirectory, this.icao, list) + } + }, zoomUpdated () { if (this.layerGroup) { this.layerGroup.eachLayer(l => { diff --git a/src/renderer/components/TowerLayer.vue b/src/renderer/components/TowerLayer.vue index 0b0a8b6..72949b9 100644 --- a/src/renderer/components/TowerLayer.vue +++ b/src/renderer/components/TowerLayer.vue @@ -73,16 +73,18 @@ You should have received a copy of the GNU General Public License along with FG } }, save () { - this.layerGroup.eachLayer(l => { - if (l instanceof L.TowerMarker) { - var latitude = l.getLatLng().lat.toFixed(6) - var longitude = l.getLatLng().lng.toFixed(6) - var height = l.elev_m + if (this.layerGroup) { + this.layerGroup.eachLayer(l => { + if (l instanceof L.TowerMarker) { + var latitude = l.getLatLng().lat.toFixed(6) + var longitude = l.getLatLng().lng.toFixed(6) + var height = l.elev_m - var o = {latitude: latitude, longitude: longitude, height: height} - writeTowerXML(this.$store.state.Settings.settings.airportsDirectory, l.icao, o) - } - }) + var o = {latitude: latitude, longitude: longitude, height: height} + writeTowerXML(this.$store.state.Settings.settings.airportsDirectory, l.icao, o) + } + }) + } }, setVisible (visible) { if (this.layerGroup !== undefined) { diff --git a/src/renderer/components/Upload.vue b/src/renderer/components/Upload.vue index c3cfb7c..f1113fc 100644 --- a/src/renderer/components/Upload.vue +++ b/src/renderer/components/Upload.vue @@ -1,3 +1,15 @@ + +