Allow -XXX style references in alerts

buefy-0.9
Manuel Kasper 2023-06-11 19:47:07 +02:00
rodzic 05765e9562
commit 62219867eb
2 zmienionych plików z 27 dodań i 16 usunięć

Wyświetl plik

@ -5,7 +5,7 @@
</header> </header>
<section class="modal-card-body"> <section class="modal-card-body">
<b-field label="Callsign" :message="isOwnCallsign ? '' : 'You are posting an alert for someone else\'s callsign'" :type="isOwnCallsign ? '' : 'is-info'"> <b-field label="Callsign" :message="isOwnCallsign ? '' : 'You are posting an alert for someone else\'s callsign'" :type="isOwnCallsign ? '' : 'is-info'">
<b-input type="text" class="callsign" v-model="callsign" pattern="[a-zA-Z0-9/]{3,}" validation-message="Invalid callsign" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" required /> <b-input type="text" class="callsign" v-model="callsign" pattern="[a-zA-Z0-9\/]{3,}" validation-message="Invalid callsign" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" required />
</b-field> </b-field>
<b-field label="Summit reference" :message="summitDisplay" :type="summitType" :class="summitLabelClass" expanded> <b-field label="Summit reference" :message="summitDisplay" :type="summitType" :class="summitLabelClass" expanded>
@ -122,7 +122,10 @@ export default {
} }
}, },
isInputValid () { isInputValid () {
return /^[a-zA-Z0-9/]{3,}$/.test(this.callsign) && this.summit !== null && this.isSummitValid(this.summit) && this.date && /^\d\d:\d\d$/.test(this.time) && this.freqMode.length > 0 && (this.freqMode.join(', ').length <= 40 || this.freqMode.join(',').length <= 40) return /^[a-zA-Z0-9/]{3,}$/.test(this.callsign) &&
(this.summitCodeXxx || (this.summit !== null && this.isSummitValid(this.summit))) &&
this.date && /^\d\d:\d\d$/.test(this.time) &&
this.freqMode.length > 0 && (this.freqMode.join(', ').length <= 40 || this.freqMode.join(',').length <= 40)
}, },
summitLabelClass () { summitLabelClass () {
if (!this.summit || this.isSummitValid(this.summit)) { if (!this.summit || this.isSummitValid(this.summit)) {
@ -149,22 +152,29 @@ export default {
handler () { handler () {
if (this.summitCode) { if (this.summitCode) {
// Shorthand input // Shorthand input
let summitRegex = /^([A-Z0-9]{1,8})[/ ]([A-Z]{2})[- ]?([0-9]{3})$/i let summitRegex = /^([A-Z0-9]{1,8})[/ ]([A-Z]{2})[- ]?([0-9]{3}|xxx)$/i
let matches = this.summitCode.match(summitRegex) let matches = this.summitCode.match(summitRegex)
if (matches) { if (matches) {
this.summitCode = (matches[1] + '/' + matches[2] + '-' + matches[3]).toUpperCase() this.summitCode = (matches[1] + '/' + matches[2] + '-' + matches[3]).toUpperCase()
this.summitLoading = true if (matches[3].toUpperCase() === 'XXX') {
axios.get(process.env.VUE_APP_API_URL + '/summits/' + this.summitCode) this.summitInvalid = false
.then(response => { this.summitCodeXxx = true
this.summitLoading = false this.summit = null
this.summitInvalid = false } else {
this.summit = response.data this.summitLoading = true
}) this.summitCodeXxx = false
.catch(() => { axios.get(process.env.VUE_APP_API_URL + '/summits/' + this.summitCode)
this.summitLoading = false .then(response => {
this.summitInvalid = true this.summitLoading = false
this.summit = null this.summitInvalid = false
}) this.summit = response.data
})
.catch(() => {
this.summitLoading = false
this.summitInvalid = true
this.summit = null
})
}
} else { } else {
this.summit = null this.summit = null
this.summitInvalid = false this.summitInvalid = false
@ -344,6 +354,7 @@ export default {
comments: '', comments: '',
summit: null, summit: null,
summitInvalid: false, summitInvalid: false,
summitCodeXxx: false,
summitLoading: false, summitLoading: false,
timeZone: 'utc', timeZone: 'utc',
posting: false posting: false

Wyświetl plik

@ -3,7 +3,7 @@
<template v-slot:title>Alerts</template> <template v-slot:title>Alerts</template>
<template v-slot:title-right> <template v-slot:title-right>
<div class="action-button"> <div class="action-button">
<b-button type="is-info" icon-left="plus" @click="$refs.alertsList.addAlert()" :disabled="!authenticated">Add</b-button> <b-button type="is-info" icon-left="plus" @click="$refs.alertsList.addAlert()">Add</b-button>
</div> </div>
</template> </template>