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

add getFileFromUser function

This commit is contained in:
lana-k
2021-01-30 20:20:51 +01:00
parent 7550c1e8bd
commit 5c17638a90
2 changed files with 28 additions and 18 deletions

View File

@@ -8,14 +8,11 @@
<tree-chevron :expanded="schemaVisible"/> <tree-chevron :expanded="schemaVisible"/>
{{ dbName }} {{ dbName }}
</div> </div>
<div class="db-edit"> <div id="db-edit" @click="changeDb">
<input type="file" id="actual-btn" ref="dbfile" hidden @change="changeDb"/>
<label for="actual-btn">
<change-db-icon /> <change-db-icon />
</label>
</div> </div>
</div> </div>
<div v-if="schemaVisible" class="schema"> <div v-show="schemaVisible" class="schema">
<table-description <table-description
v-for="table in schema" v-for="table in schema"
:key="table.name" :key="table.name"
@@ -31,6 +28,7 @@ import TableDescription from '@/components/TableDescription'
import TextField from '@/components/TextField' import TextField from '@/components/TextField'
import ChangeDbIcon from '@/components/svg/changeDb' import ChangeDbIcon from '@/components/svg/changeDb'
import TreeChevron from '@/components/svg/treeChevron' import TreeChevron from '@/components/svg/treeChevron'
import fu from '@/fileUtils'
export default { export default {
name: 'Schema', name: 'Schema',
@@ -64,9 +62,12 @@ export default {
}, },
methods: { methods: {
changeDb () { changeDb () {
this.$db.loadDb(this.$refs.dbfile.files[0]) fu.getFileFromUser('.db,.sqlite,.sqlite3')
.then(({ dbName, schema }) => { .then(file => {
this.$store.commit('saveSchema', { dbName, schema }) return this.$db.loadDb(file)
})
.then((schema) => {
this.$store.commit('saveSchema', schema)
}) })
} }
} }

View File

@@ -20,24 +20,33 @@ export default {
* it will be an unsettled promise. But it's grabbed by * it will be an unsettled promise. But it's grabbed by
* the garbage collector (tested with FinalizationRegistry). * the garbage collector (tested with FinalizationRegistry).
*/ */
importFile () { getFileFromUser (type) {
return new Promise((resolve, reject) => { return new Promise(resolve => {
const uploader = document.createElement('input') const uploader = document.createElement('input')
uploader.type = 'file' uploader.type = 'file'
uploader.accept = '.json' uploader.accept = type
uploader.addEventListener('change', () => { uploader.addEventListener('change', () => {
const file = uploader.files[0] const file = uploader.files[0]
const reader = new FileReader()
reader.onload = (e) => {
uploader.remove() uploader.remove()
resolve(file)
})
uploader.click()
})
},
importFile () {
return this.getFileFromUser('.json')
.then(file => {
return new Promise((resolve, reject) => {
const reader = new FileReader()
reader.onload = e => {
resolve(e.target.result) resolve(e.target.result)
} }
reader.readAsText(file) reader.readAsText(file)
}) })
uploader.click()
}) })
}, },