Edit Frequencies

This commit is contained in:
portree_kid 2020-03-12 11:44:50 +01:00
parent 56e23da410
commit 7d6be33150
4 changed files with 174 additions and 5 deletions

View File

@ -1,6 +1,6 @@
<template> <template>
<div>
<div width="100%" v-if="airport"> <div width="100%" v-if="airport">
<div>
<el-row> <el-row>
<el-col :span="7">ICAO :</el-col> <el-col :span="7">ICAO :</el-col>
<el-col :span="15">{{ icao }}</el-col> <el-col :span="15">{{ icao }}</el-col>
@ -25,12 +25,59 @@
<el-col :span="7">Parking Positions :</el-col> <el-col :span="7">Parking Positions :</el-col>
<el-col :span="15">{{ parking }}</el-col> <el-col :span="15">{{ parking }}</el-col>
</el-row> </el-row>
</div>
</div> </div>
<el-divider></el-divider>
<div v-if="airport">
<el-row>
<el-col :span="7">AWOS :</el-col>
<el-col :span="15"><el-input placeholder="Please input AWOS frequency" v-model="AWOS" v-bind:class="{ invalid: !awosOk}">></el-input></el-col>
</el-row>
<el-row>
<el-col :span="7">Ground :</el-col>
<el-col :span="15"><el-input placeholder="Please input GROUND frequency" v-model="GROUND" v-bind:class="{ invalid: !groundOk}"></el-input></el-col>
</el-row>
<el-row>
<el-col :span="7">Tower :</el-col>
<el-col :span="15"><el-input placeholder="Please input TOWER frequency" v-model="TOWER" v-bind:class="{ invalid: !towerOk}"></el-input></el-col>
</el-row>
<el-row>
<el-col :span="7">Approach :</el-col>
<el-col :span="15"><el-input placeholder="Please input APPROACH frequency" v-model="APPROACH" v-bind:class="{ invalid: !approachOk}"></el-input></el-col>
</el-row>
</div>
</div>
</template> </template>
<script lang="js"> <script lang="js">
export default { export default {
data () {
return { awosOk: true, groundOk: true, towerOk: true, approachOk: true }
},
methods: {
isValid (frequency) {
let ok = frequency >= 118 && frequency <= 137
if (!ok) {
return false
}
let fractions = (frequency - Math.trunc(frequency)) * 1000
let subFraction = Math.round(fractions % 25)
switch (subFraction) {
case 0:
break
case 5:
break
case 10:
break
case 15:
break
case 25:
break
default:
return false
}
return true
}
},
computed: { computed: {
icao: function () { icao: function () {
return this.$store.state.Editable.data.airport.icao return this.$store.state.Editable.data.airport.icao
@ -52,6 +99,58 @@
}, },
airport: function () { airport: function () {
return this.$store.state.Editable.type === 'airport' return this.$store.state.Editable.type === 'airport'
},
AWOS: {
// getter
get: function () {
let newValue = (this.$store.state.Frequencies.AWOS / 100).toFixed(3)
this.awosOk = this.isValid(newValue)
return newValue
},
// setter
set: function (newValue) {
this.awosOk = this.isValid(newValue)
this.$store.dispatch('setAwos', newValue * 100)
}
},
GROUND: {
// getter
get: function () {
let newValue = (this.$store.state.Frequencies.GROUND / 100).toFixed(3)
this.groundOk = this.isValid(newValue)
return newValue
},
// setter
set: function (newValue) {
this.groundOk = this.isValid(newValue)
this.$store.dispatch('setGround', newValue * 100)
}
},
TOWER: {
// getter
get: function () {
let newValue = (this.$store.state.Frequencies.TOWER / 100).toFixed(3)
this.towerOk = this.isValid(newValue)
return newValue
},
// setter
set: function (newValue) {
this.towerOk = this.isValid(newValue)
this.$store.dispatch('setTower', newValue * 100)
}
},
APPROACH: {
// getter
get: function () {
let newValue = (this.$store.state.Frequencies.APPROACH / 100).toFixed(3)
this.approachOk = this.isValid(newValue)
return newValue
},
// setter
set: function (newValue) {
this.approachOk = this.isValid(newValue)
this.$store.dispatch('setApproach', newValue * 100)
}
} }
} }
} }
@ -61,4 +160,8 @@
.el-row { .el-row {
padding: 0em padding: 0em
} }
.invalid {
padding: 1px;
background-color: red;
}
</style> </style>

View File

@ -11,9 +11,7 @@
<!--The backgroundmap--> <!--The backgroundmap-->
<l-tile-layer :url="url" :attribution="attribution" :options="{maxZoom: 22, maxNativeZoom: 17}"></l-tile-layer> <l-tile-layer :url="url" :attribution="attribution" :options="{maxZoom: 22, maxNativeZoom: 17}"></l-tile-layer>
<l-control position="topright" > <l-control position="topright" >
<el-card :body-style="{ padding: '0px' }"> <el-button @click="editAirport()">{{ icao }}</el-button>
<p>&nbsp;{{ icao }}&nbsp;</p>
</el-card>
</l-control> </l-control>
<!--<l-marker :lat-lng="marker"></l-marker>--> <!--<l-marker :lat-lng="marker"></l-marker>-->
<LeafletSidebar></LeafletSidebar> <LeafletSidebar></LeafletSidebar>
@ -88,6 +86,14 @@
} }
}, },
methods: { methods: {
editAirport () {
if (this.editingAirport) {
let airportsToLoad = this.$store.state.Airports.airports
.filter(feature => feature.properties.icao === this.icao)
let properties = Object.assign({}, airportsToLoad[0].properties)
this.$store.commit('SET_EDIT_AIRPORT', properties)
}
},
setIcao (icao) { setIcao (icao) {
this.icao = icao this.icao = icao
}, },

View File

@ -47,6 +47,22 @@ exports.readGroundnetXML = function (fDir, icao, force) {
console.error("Error in " + airline); console.error("Error in " + airline);
throw err; throw err;
} }
// <frequencies>
// <AWOS>13135</AWOS>
// <GROUND>12175</GROUND>
// <TOWER>11870</TOWER>
// <APPROACH>12120</APPROACH>
// </frequencies>
var awos = xml.find('groundnet/frequencies/AWOS/text()').text();
store.default.dispatch('setAwos', awos);
var ground = xml.find('groundnet/frequencies/GROUND/text()').text();
store.default.dispatch('setGround', ground);
var tower = xml.find('groundnet/frequencies/TOWER/text()').text();
store.default.dispatch('setTower', tower);
var approach = xml.find('groundnet/frequencies/APPROACH/text()').text();
store.default.dispatch('setApproach', approach);
var parkingNodes = xml.find('groundnet/parkingList/Parking'); var parkingNodes = xml.find('groundnet/parkingList/Parking');
console.log("Parking Nodes" + parkingNodes.length); console.log("Parking Nodes" + parkingNodes.length);

View File

@ -0,0 +1,44 @@
import Vue from 'vue'
const state = {
'AWOS': 0,
'GROUND': 0,
'TOWER': 0,
'APPROACH': 0
}
const mutations = {
'SET_AWOS' (state, frequency) {
Vue.set(state, 'AWOS', frequency)
},
'SET_GROUND' (state, frequency) {
Vue.set(state, 'GROUND', frequency)
},
'SET_TOWER' (state, frequency) {
Vue.set(state, 'TOWER', frequency)
},
'SET_APPROACH' (state, frequency) {
Vue.set(state, 'APPROACH', frequency)
}
}
const actions = {
async setAwos (context, frequency) {
context.commit('SET_AWOS', frequency)
},
async setGround (context, frequency) {
context.commit('SET_GROUND', frequency)
},
async setTower (context, frequency) {
context.commit('SET_TOWER', frequency)
},
async setApproach (context, frequency) {
context.commit('SET_APPROACH', frequency)
}
}
export default {
state,
mutations,
actions
}