From eefc0bb2df77695dd7979a7d3fca005be6966c8e Mon Sep 17 00:00:00 2001 From: sedum Date: Sun, 19 Feb 2023 23:19:16 +0100 Subject: [PATCH] refactor of whereInput, move geolocation related code to whereInputAdvanced --- components/WhereInput.vue | 113 +++--------------------------- components/WhereInputAdvanced.vue | 105 +++++++++++++++++++++++---- pages/add/_edit.vue | 7 +- pages/event/_slug.vue | 2 +- 4 files changed, 108 insertions(+), 119 deletions(-) diff --git a/components/WhereInput.vue b/components/WhereInput.vue index b27e17a1..0722f0a6 100644 --- a/components/WhereInput.vue +++ b/components/WhereInput.vue @@ -39,43 +39,18 @@ v-row.mb-4 template(v-slot:append) v-icon(v-text='mdiCog' :disabled='!value.name' @click="whereInputAdvancedDialog = true") - v-text-field.mr-4(v-if="!settings.allow_geolocation && value.name !== 'online'" + v-text-field.mr-4(v-if="value.name !== 'online'" ref='address' + v-model='value.address' :prepend-icon='mdiMap' :disabled='disableAddress' :rules="[ v => disableAddress ? true : $validators.required('common.address')(v)]" :label="$t('common.address')" :hint="$t('event.address_description')" - persistent-hint - @change="changeAddress" - :value="value.address") - template(v-slot:append v-if="settings.allow_event_also_online && place.name !== 'online'") - v-icon(v-text='mdiCog' :disabled='!value.name' @click="whereInputAdvancedDialog = true") - - v-combobox(ref='address' v-if="settings.allow_geolocation && value.name !== 'online' || (!settings.allow_event_only_online && value.name === 'online')" - :prepend-icon='mdiMapSearch' - :disabled='disableAddress' - @input.native='searchAddress' - :label="$t('common.address')" - :rules="[ v => disableAddress ? true : $validators.required('common.address')(v)]" - :value='value.address' - item-text='address' - persistent-hint hide-no-data clearable no-filter - :loading='loading' - @change='selectAddress' - @focus='searchAddress' - :items="addressList" - :hint="$t('event.address_description_osm')") - template(v-slot:message="{message, key}") - span(v-html='message' :key="key") - template(v-slot:item="{ item, attrs, on }") - v-list-item(v-bind='attrs' v-on='on') - v-icon.pr-4(v-text='loadCoordinatesResultIcon(item)') - v-list-item-content(two-line v-if='item') - v-list-item-title(v-text='item.name') - v-list-item-subtitle(v-text='`${item.address}`') - template(v-slot:append v-if="settings.allow_event_also_online || settings.allow_geolocation") - v-icon(v-text='mdiCog' :disabled='!value.name || (!value.isNew && !settings.allow_event_also_online) ' @click="whereInputAdvancedDialog = true") + persistent-hint) + template(v-slot:append v-if="!hideWhereInputAdvancedDialogButton") + v-icon(v-text='mdiCog' :disabled='!(value.name && settings.allow_event_also_online) && !(value.isNew && settings.allow_geolocation)' + @click="whereInputAdvancedDialog = true") v-dialog(v-model='whereInputAdvancedDialog' :key="whereAdvancedId" destroy-on-close max-width='700px' :fullscreen='$vuetify.breakpoint.xsOnly' dense) WhereInputAdvanced(ref='whereAdvanced' :place.sync='value' :event='event' @close='whereInputAdvancedDialog = false && this.$refs.address.blur()' @@ -88,13 +63,11 @@ v-row.mb-4 diff --git a/pages/add/_edit.vue b/pages/add/_edit.vue index 1d321b89..3ab62f6f 100644 --- a/pages/add/_edit.vue +++ b/pages/add/_edit.vue @@ -239,8 +239,11 @@ export default { } formData.append('place_name', this.event.place.name.trim()) formData.append('place_address', this.event.place.address) - formData.append('place_latitude', this.event.place.latitude) - formData.append('place_longitude', this.event.place.longitude) + + if (this.settings.allow_geolocation) { + formData.append('place_latitude', this.event.place.latitude || '') + formData.append('place_longitude', this.event.place.longitude || '') + } if (this.event.locations.length) { this.event.locations.forEach(location => formData.append('locations[]', location.url)) diff --git a/pages/event/_slug.vue b/pages/event/_slug.vue index 559c78c3..96f32f49 100644 --- a/pages/event/_slug.vue +++ b/pages/event/_slug.vue @@ -44,7 +44,7 @@ v-container#event.pa-0.pa-sm-2 v-list-item-icon v-icon.my-auto(v-text='mdiMonitorAccount') v-list-item-content.py-0 - v-text(small label v-text='`${event.locations[0]}`' outlined color='primary') + v-list-item-title.text-caption(v-text='`${event.locations[0]}`') v-card.pb-2(v-if='onlineSectionEnabled && event.locations && event.locations.length > 1') v-card-text.text-caption.pt-0.pb-0(v-text="$t('event.online_event_fallback_urls')") v-list-item