2020-10-10 00:40:47 +02:00
|
|
|
<template lang="pug">
|
|
|
|
v-card(color='secondary')
|
2020-10-14 21:13:20 +02:00
|
|
|
v-card-title {{$t('common.import')}}
|
2020-10-10 00:40:47 +02:00
|
|
|
v-card-text
|
2021-01-11 00:17:56 +01:00
|
|
|
p(v-html="$t('event.import_description')")
|
|
|
|
v-form(v-model='valid' ref='form' lazy-validation @submit.prevent='importGeneric')
|
2020-10-14 21:13:20 +02:00
|
|
|
v-text-field(v-model='URL'
|
|
|
|
:label="$t('common.url')"
|
|
|
|
:hint="$t('event.import_URL')"
|
|
|
|
persistent-hint
|
|
|
|
:loading='loading' :error='error'
|
|
|
|
:error-messages='errorMessage')
|
|
|
|
|
|
|
|
v-file-input(
|
|
|
|
v-model='file'
|
|
|
|
accept=".ics"
|
2020-10-25 00:31:38 +02:00
|
|
|
:label="$t('event.ics')"
|
2020-10-14 21:13:20 +02:00
|
|
|
:hint="$t('event.import_ICS')"
|
|
|
|
persistent-hint
|
|
|
|
)
|
2020-10-10 00:40:47 +02:00
|
|
|
|
2021-01-11 00:17:56 +01:00
|
|
|
p {{events}}
|
2020-10-10 00:40:47 +02:00
|
|
|
v-card-actions
|
|
|
|
v-spacer
|
|
|
|
v-btn(@click='$emit("close")' color='warning') {{$t('common.cancel')}}
|
2020-10-14 21:13:20 +02:00
|
|
|
v-btn(@click='importGeneric' :loading='loading' :disabled='loading'
|
2020-10-10 00:40:47 +02:00
|
|
|
color='primary') {{$t('common.import')}}
|
|
|
|
|
|
|
|
</template>
|
|
|
|
<script>
|
2020-10-14 21:13:20 +02:00
|
|
|
import ical from 'ical.js'
|
|
|
|
|
2020-10-10 00:40:47 +02:00
|
|
|
export default {
|
|
|
|
name: 'ImportDialog',
|
|
|
|
data () {
|
|
|
|
return {
|
2020-10-14 21:13:20 +02:00
|
|
|
file: null,
|
2020-10-10 00:40:47 +02:00
|
|
|
errorMessage: '',
|
|
|
|
error: false,
|
|
|
|
loading: false,
|
|
|
|
valid: false,
|
|
|
|
URL: '',
|
2021-01-11 00:17:56 +01:00
|
|
|
events: {}
|
2020-10-10 00:40:47 +02:00
|
|
|
}
|
|
|
|
},
|
|
|
|
methods: {
|
2020-10-14 21:13:20 +02:00
|
|
|
importGeneric () {
|
|
|
|
if (this.file) {
|
|
|
|
this.importICS()
|
|
|
|
} else {
|
|
|
|
this.importURL()
|
|
|
|
}
|
|
|
|
},
|
2020-11-04 10:55:30 +01:00
|
|
|
importICS () {
|
2020-10-14 21:13:20 +02:00
|
|
|
const reader = new FileReader()
|
|
|
|
reader.readAsText(this.file)
|
|
|
|
reader.onload = () => {
|
2021-01-11 00:17:56 +01:00
|
|
|
const event = ical.parse(reader.result)
|
2020-10-14 21:13:20 +02:00
|
|
|
this.event = {
|
2020-11-04 10:55:30 +01:00
|
|
|
title: event.name
|
2020-10-14 21:13:20 +02:00
|
|
|
}
|
2020-11-04 10:55:30 +01:00
|
|
|
}
|
2020-10-14 21:13:20 +02:00
|
|
|
},
|
2020-11-04 10:55:30 +01:00
|
|
|
async importURL () {
|
2020-10-10 00:40:47 +02:00
|
|
|
if (!this.URL) {
|
|
|
|
this.errorMessage = this.$validators.required('common.URL')('')
|
|
|
|
this.error = true
|
|
|
|
return
|
|
|
|
}
|
|
|
|
this.error = false
|
|
|
|
this.errorMessage = ''
|
|
|
|
this.loading = true
|
|
|
|
|
|
|
|
try {
|
2020-11-04 10:55:30 +01:00
|
|
|
const ret = await this.$axios.$get('/event/import', { params: { URL: this.URL } })
|
2021-01-11 00:17:56 +01:00
|
|
|
this.events = ret
|
2020-10-10 00:40:47 +02:00
|
|
|
// check if contain an h-event
|
2021-01-11 00:17:56 +01:00
|
|
|
// this.$emit('imported', ret)
|
2020-10-10 00:40:47 +02:00
|
|
|
} catch (e) {
|
|
|
|
console.error(e)
|
|
|
|
this.error = true
|
|
|
|
this.errorMessage = String(e)
|
|
|
|
}
|
|
|
|
|
|
|
|
this.loading = false
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2020-11-04 10:55:30 +01:00
|
|
|
</script>
|