1
0
mirror of https://github.com/lana-k/sqliteviz.git synced 2025-12-07 02:28:54 +08:00

dbuploader is a component now #10

This commit is contained in:
lana-k
2020-11-13 16:43:21 +01:00
parent ec2b2b21d0
commit 05243ec991
3 changed files with 78 additions and 27 deletions

View File

@@ -1,8 +1,7 @@
<template> <template>
<div id="dbloader-container"> <div>
<h1>Sqliteviz</h1>
<label for="assetsFieldHandle"> <label for="assetsFieldHandle">
<div id="drop-area" @dragover="dragover" @dragleave="dragleave" @drop="drop"> <div class="drop-area" @dragover="dragover" @dragleave="dragleave" @drop="drop">
<input <input
type="file" type="file"
id="assetsFieldHandle" id="assetsFieldHandle"
@@ -16,9 +15,6 @@
</div> </div>
</label> </label>
<div id="error" class="error"></div> <div id="error" class="error"></div>
<button id ="skip" class="secondary" @click="$router.push('/editor')">
Skip database connection for now
</button>
</div> </div>
</template> </template>
@@ -55,39 +51,24 @@ export default {
</script> </script>
<style scoped> <style scoped>
#dbloader-container {
width: 100vw;
height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
h1 {
color: var(--color-accent);
}
label { label {
display: inline-block; display: inline-block;
border: 1px dashed var(--color-border); border: 1px dashed var(--color-border);
padding: 8px; padding: 8px;
border-radius: var(--border-radius-big); border-radius: var(--border-radius-big);
} }
#drop-area { .drop-area {
width: 628px;
height: 490px;
background-color: var(--color-bg-light-3); background-color: var(--color-bg-light-3);
border-radius: var(--border-radius-big); border-radius: var(--border-radius-big);
color: var(--color-text-base); color: var(--color-text-base);
font-size: 13px; font-size: 13px;
padding: 200px 144px;
text-align: center; text-align: center;
box-sizing: border-box; box-sizing: border-box;
display: flex;
align-items: center;
justify-content: center;
} }
input { input {
display: none; display: none;
} }
#skip {
position: absolute;
bottom: 50px;
}
</style> </style>

View File

@@ -2,7 +2,7 @@ import Vue from 'vue'
import VueRouter from 'vue-router' import VueRouter from 'vue-router'
import Editor from '../views/Editor' import Editor from '../views/Editor'
import MyQueries from '../views/MyQueries' import MyQueries from '../views/MyQueries'
import DbUpload from '../views/DbUpload' import Home from '../views/Home'
import MainView from '../views/MainView' import MainView from '../views/MainView'
Vue.use(VueRouter) Vue.use(VueRouter)
@@ -11,7 +11,7 @@ const routes = [
{ {
path: '/', path: '/',
name: 'Welcome', name: 'Welcome',
component: DbUpload component: Home
}, },
{ {
path: '/', path: '/',

70
src/views/Home.vue Normal file
View File

@@ -0,0 +1,70 @@
<template>
<div id="dbloader-container">
<h1>Sqliteviz</h1>
<db-upload />
<button id ="skip" class="secondary" @click="$router.push('/editor')">
Skip database connection for now
</button>
</div>
</template>
<script>
import dbUpload from '@/components/DbUpload'
export default {
name: 'Home',
components: { dbUpload },
methods: {
loadDb () {
this.$db.loadDb(this.$refs.file.files[0])
},
dragover (event) {
event.preventDefault()
// TODO: Add some visual stuff to show the user can drop its files
if (!event.currentTarget.classList.contains('bg-green-300')) {
event.currentTarget.classList.remove('bg-gray-100')
event.currentTarget.classList.add('bg-green-300')
}
},
dragleave (event) {
// Clean up
event.currentTarget.classList.add('bg-gray-100')
event.currentTarget.classList.remove('bg-green-300')
},
drop (event) {
event.preventDefault()
this.$refs.file.files = event.dataTransfer.files
this.loadDb()
// Clean up
event.currentTarget.classList.add('bg-gray-100')
event.currentTarget.classList.remove('bg-green-300')
}
}
}
</script>
<style scoped>
#dbloader-container {
width: 100vw;
height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
h1 {
color: var(--color-accent);
}
#skip {
position: absolute;
bottom: 50px;
}
>>>.drop-area {
width: 628px;
height: 490px;
padding: 0 150px;
}
</style>