From 5972d535ccc2cf610938c9abb8b7b59138132f40 Mon Sep 17 00:00:00 2001 From: lana-k Date: Sat, 26 Sep 2020 19:16:24 +0200 Subject: [PATCH] add changing db in schema pane --- src/components/Schema.vue | 65 ++++++++++++++++++++++++++++++--------- src/store/index.js | 4 +++ src/views/DbUpload.vue | 7 ++--- src/views/Editor.vue | 43 ++------------------------ 4 files changed, 59 insertions(+), 60 deletions(-) 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) } } } +