diff --git a/src/components/Schema.vue b/src/components/Schema.vue
index 31571b0..357b09c 100644
--- a/src/components/Schema.vue
+++ b/src/components/Schema.vue
@@ -20,17 +20,20 @@
{{ dbName }}
-
+
+
Change database
@@ -51,11 +54,45 @@ import TableDescription from '@/components/TableDescription'
export default {
name: 'Schema',
components: { TableDescription },
- props: ['schema', 'dbName'],
data () {
return {
- schemaVisible: true
-
+ schemaVisible: true,
+ worker: this.$store.state.worker
+ }
+ },
+ computed: {
+ schema () {
+ return this.$store.state.schema
+ },
+ dbName () {
+ return this.$store.state.dbName
+ }
+ },
+ methods: {
+ changeDb () {
+ const dbName = this.$refs.dbfile.value.substr(this.$refs.dbfile.value.lastIndexOf('\\') + 1)
+ this.$store.commit('saveDbName', dbName)
+ const f = this.$refs.dbfile.files[0]
+ const r = new FileReader()
+ r.onload = () => {
+ this.worker.onmessage = () => {
+ const getSchemaSql = `
+ SELECT name, sql
+ FROM sqlite_master
+ WHERE type='table' AND name NOT LIKE 'sqlite_%';`
+ this.worker.onmessage = event => {
+ this.$store.commit('saveSchema', event.data.results[0].values)
+ }
+ this.worker.postMessage({ action: 'exec', sql: getSchemaSql })
+ }
+ this.$store.commit('saveDbFile', r.result)
+ try {
+ this.worker.postMessage({ action: 'open', buffer: r.result }, [r.result])
+ } catch (exception) {
+ this.worker.postMessage({ action: 'open', buffer: r.result })
+ }
+ }
+ r.readAsArrayBuffer(f)
}
}
}
diff --git a/src/store/index.js b/src/store/index.js
index e35b207..1e83c3f 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -7,6 +7,7 @@ export default new Vuex.Store({
state: {
schema: null,
dbFile: null,
+ dbName: null,
worker: new Worker('/js/worker.sql-wasm.js')
},
mutations: {
@@ -15,6 +16,9 @@ export default new Vuex.Store({
},
saveDbFile (state, file) {
state.dbFile = file
+ },
+ saveDbName (state, name) {
+ state.dbName = name
}
},
actions: {
diff --git a/src/views/DbUpload.vue b/src/views/DbUpload.vue
index cad8a93..072edc8 100644
--- a/src/views/DbUpload.vue
+++ b/src/views/DbUpload.vue
@@ -15,12 +15,10 @@ export default {
worker: this.$store.state.worker
}
},
- created () {
- // Open a database
- this.$store.state.worker.postMessage({ action: 'open' })
- },
methods: {
loadDb () {
+ const dbName = this.$refs.dbfile.value.substr(this.$refs.dbfile.value.lastIndexOf('\\') + 1)
+ this.$store.commit('saveDbName', dbName)
const f = this.$refs.dbfile.files[0]
const r = new FileReader()
r.onload = () => {
@@ -31,7 +29,6 @@ export default {
WHERE type='table' AND name NOT LIKE 'sqlite_%';`
this.worker.onmessage = event => {
this.$store.commit('saveSchema', event.data.results[0].values)
- // this.schema = event.data.results[0].values
this.$router.push('/editor')
}
this.worker.postMessage({ action: 'exec', sql: getSchemaSql })
diff --git a/src/views/Editor.vue b/src/views/Editor.vue
index 5125b13..ad2f753 100644
--- a/src/views/Editor.vue
+++ b/src/views/Editor.vue
@@ -6,7 +6,7 @@
:after="{ size: 80, max: 100 }"
>
-
+
-
@@ -97,8 +94,6 @@ export default {
line: true
},
result: null,
- schema: null,
- fileName: null,
view: 'table',
worker: this.$store.state.worker
}
@@ -124,18 +119,6 @@ export default {
}))
}
},
- created () {
- // Open a database
- // worker.postMessage({ action: 'open' })
- // let dbFile = this.$store.state.dbFile
- // console.log(dbFile)
- /* try {
- worker.postMessage({ action: 'open', buffer: this.$store.state.dbFile }, [this.$store.state.dbFile])
- } catch (exception) {
- worker.postMessage({ action: 'open', buffer: this.$store.state.dbFile })
- } */
- this.schema = this.$store.state.schema
- },
methods: {
update (data, layout, frames) {
this.state = { data, layout, frames }
@@ -177,33 +160,11 @@ export default {
},
execEditorContents () {
this.execute(this.code + ';')
- },
- loadDb (filename) {
- this.fileName = this.$refs.dbfile.value.substr(this.$refs.dbfile.value.lastIndexOf('\\') + 1)
- const f = this.$refs.dbfile.files[0]
- const r = new FileReader()
- r.onload = () => {
- this.worker.onmessage = () => {
- const getSchemaSql = `
- SELECT name, sql
- FROM sqlite_master
- WHERE type='table' AND name NOT LIKE 'sqlite_%';`
- this.worker.onmessage = event => {
- this.schema = event.data.results[0].values
- }
- this.worker.postMessage({ action: 'exec', sql: getSchemaSql })
- }
- try {
- this.worker.postMessage({ action: 'open', buffer: r.result }, [r.result])
- } catch (exception) {
- this.worker.postMessage({ action: 'open', buffer: r.result })
- }
- }
- r.readAsArrayBuffer(f)
}
}
}
+