mirror of
https://github.com/lana-k/sqliteviz.git
synced 2025-12-07 02:28:54 +08:00
wait for animation and file uploading
This commit is contained in:
@@ -4,8 +4,8 @@
|
|||||||
<div
|
<div
|
||||||
class="drop-area"
|
class="drop-area"
|
||||||
@dragover.prevent="state = 'dragover'"
|
@dragover.prevent="state = 'dragover'"
|
||||||
@dragleave="state=''"
|
@dragleave.prevent="state=''"
|
||||||
@drop="drop"
|
@drop.prevent="drop"
|
||||||
>
|
>
|
||||||
<input
|
<input
|
||||||
type="file"
|
type="file"
|
||||||
@@ -28,12 +28,12 @@
|
|||||||
/>
|
/>
|
||||||
<img
|
<img
|
||||||
id="file-img"
|
id="file-img"
|
||||||
|
ref="fileImg"
|
||||||
:class="{
|
:class="{
|
||||||
'swing': state === 'dragover',
|
'swing': state === 'dragover',
|
||||||
'fly': state === 'drop',
|
'fly': state === 'drop',
|
||||||
}"
|
}"
|
||||||
:src="require('@/assets/images/file.png')"
|
:src="require('@/assets/images/file.png')"
|
||||||
@animationend="onFlyEnd"
|
|
||||||
/>
|
/>
|
||||||
<img id="drop-file-bottom-img" :src="require('@/assets/images/dropFileBottom.png')" />
|
<img id="drop-file-bottom-img" :src="require('@/assets/images/dropFileBottom.png')" />
|
||||||
<img id="body-img" :src="require('@/assets/images/body.png')" />
|
<img id="body-img" :src="require('@/assets/images/body.png')" />
|
||||||
@@ -59,13 +59,24 @@ export default {
|
|||||||
},
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
state: ''
|
state: '',
|
||||||
|
animationPromise: Promise.resolve()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted () {
|
||||||
|
if (this.illustrated) {
|
||||||
|
this.animationPromise = new Promise((resolve) => {
|
||||||
|
this.$refs.fileImg.addEventListener('animationend', () => {
|
||||||
|
resolve()
|
||||||
|
})
|
||||||
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
loadDb () {
|
loadDb () {
|
||||||
return this.$db.loadDb(this.$refs.file.files[0])
|
this.state = 'drop'
|
||||||
.then((schema) => {
|
return Promise.all([this.$db.loadDb(this.$refs.file.files[0]), this.animationPromise])
|
||||||
|
.then(([schema]) => {
|
||||||
this.$store.commit('saveSchema', schema)
|
this.$store.commit('saveSchema', schema)
|
||||||
if (this.$route.path !== '/editor') {
|
if (this.$route.path !== '/editor') {
|
||||||
this.$router.push('/editor')
|
this.$router.push('/editor')
|
||||||
@@ -73,18 +84,8 @@ export default {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
drop (event) {
|
drop (event) {
|
||||||
event.preventDefault()
|
|
||||||
this.$refs.file.files = event.dataTransfer.files
|
this.$refs.file.files = event.dataTransfer.files
|
||||||
this.state = 'drop'
|
|
||||||
this.loadDb()
|
this.loadDb()
|
||||||
.then(() => {
|
|
||||||
// Clean up
|
|
||||||
// event.currentTarget.classList.add('bg-gray-100')
|
|
||||||
// event.currentTarget.classList.remove('bg-green-300')
|
|
||||||
})
|
|
||||||
},
|
|
||||||
onFlyEnd (event) {
|
|
||||||
console.log('END!!!', event.animationName.startsWith('fly'))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user