diff --git a/package-lock.json b/package-lock.json index b851c9d..be6c6c6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5123,11 +5123,6 @@ "whatwg-url": "^7.0.0" } }, - "date-fns": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.16.1.tgz", - "integrity": "sha512-sAJVKx/FqrLYHAQeN7VpJrPhagZc9R4ImZIWYRFZaaohR3KzmuK88touwsSwSVT8Qcbd4zoDsnGfX4GFB4imyQ==" - }, "de-indent": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", @@ -5457,11 +5452,6 @@ "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", "dev": true }, - "diacriticless": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/diacriticless/-/diacriticless-1.0.1.tgz", - "integrity": "sha1-592peMKRlgm7SK7h78XeajN71MM=" - }, "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", @@ -9667,37 +9657,12 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" - }, "lodash.defaultsdeep": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==", "dev": true }, - "lodash.filter": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", - "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=" - }, - "lodash.foreach": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", - "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=" - }, - "lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" - }, "lodash.kebabcase": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", @@ -15907,20 +15872,6 @@ } } }, - "vue-good-table": { - "version": "2.21.0", - "resolved": "https://registry.npmjs.org/vue-good-table/-/vue-good-table-2.21.0.tgz", - "integrity": "sha512-e384AGlmEBG0CfTkZXN/OZe1O58V2mbxQafsKqzVrqvROcMZsa9iSyK11D4YS2JzlJo9mRqsad4/vrV/U/Xbdw==", - "requires": { - "date-fns": "^2.0.0-beta.4", - "diacriticless": "1.0.1", - "lodash.assign": "^4.2.0", - "lodash.clonedeep": "^4.5.0", - "lodash.filter": "^4.6.0", - "lodash.foreach": "^4.5.0", - "lodash.isequal": "^4.5.0" - } - }, "vue-hot-reload-api": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", @@ -15992,6 +15943,11 @@ "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", "dev": true }, + "vuejs-paginate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vuejs-paginate/-/vuejs-paginate-2.1.0.tgz", + "integrity": "sha512-gnwyXlmCiDOu9MLWxN5UJ4PGijKGNOMpHG8ujsrynCzTJljn/rp7Jq0WiDGDAMi5/u0AHuYIHhced+tUW4jblA==" + }, "vuex": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.5.1.tgz", diff --git a/package.json b/package.json index ece41c0..c6b6338 100644 --- a/package.json +++ b/package.json @@ -19,9 +19,9 @@ "sqlite-parser": "^1.0.1", "vue": "^2.6.11", "vue-codemirror": "^4.0.6", - "vue-good-table": "^2.21.0", "vue-react": "^1.2.0", "vue-router": "^3.2.0", + "vuejs-paginate": "^2.1.0", "vuex": "^3.4.0" }, "devDependencies": { diff --git a/src/assets/styles/scrollbars.css b/src/assets/styles/scrollbars.css index b517fb6..858d85f 100644 --- a/src/assets/styles/scrollbars.css +++ b/src/assets/styles/scrollbars.css @@ -1,16 +1,17 @@ /* width */ ::-webkit-scrollbar { - width: 5px; - } + width: 5px; + height: 5px; +} - /* Track */ - ::-webkit-scrollbar-track { - background: #ebf0f8; - } +/* Track */ +::-webkit-scrollbar-track { + background: transparent; + border-radius: 5px; +} - /* Handle */ - ::-webkit-scrollbar-thumb { - background: var(--color-accent); - border-radius: 10px; - } - \ No newline at end of file +/* Handle */ +::-webkit-scrollbar-thumb { + background: var(--color-accent); + border-radius: 10px; +} diff --git a/src/assets/styles/variables.css b/src/assets/styles/variables.css index 62653a3..0af0ed1 100644 --- a/src/assets/styles/variables.css +++ b/src/assets/styles/variables.css @@ -1,36 +1,37 @@ :root { - --color-white: #ffffff; - --color-gray-light: #F3F6FA; - --color-gray-light-2: #DFE8F3; - --color-gray-light-3: #C8D4E3; - --color-gray-light-4:#EBF0F8; - --color-gray-medium: #A2B1C6; - --color-gray-dark: #506784; - --color-blue-medium: #119DFF; - --color-blue-dark: #0D76BF; - --color-blue-dark-2: #2A3F5F; + --color-white: #ffffff; + --color-gray-light: #F3F6FA; + --color-gray-light-2: #DFE8F3; + --color-gray-light-3: #C8D4E3; + --color-gray-light-4:#EBF0F8; + --color-gray-medium: #A2B1C6; + --color-gray-dark: #506784; + --color-blue-medium: #119DFF; + --color-blue-dark: #0D76BF; + --color-blue-dark-2: #2A3F5F; - --color-bg-light: var(--color-gray-light); - --color-bg-light-2: var(--color-gray-light-2); - --color-accent: var(--color-blue-medium); - --color-accent-shade: var(--color-blue-dark); - --color-border-light: var(--color-gray-light-2); - --color-border: var(--color-gray-light-3); - --color-text-light: var(--color-white); - --color-text-light-2: var(--color-gray-medium); - --color-text-base: var(--color-gray-dark); - --color-text-medium: var(--color-gray-medium); - --color-text-active: var(--color-blue-dark-2); + --color-bg-light: var(--color-gray-light); + --color-bg-light-2: var(--color-gray-light-2); + --color-bg-dark: var(--color-gray-dark); + --color-accent: var(--color-blue-medium); + --color-accent-shade: var(--color-blue-dark); + --color-border-light: var(--color-gray-light-2); + --color-border: var(--color-gray-light-3); + --color-text-light: var(--color-white); + --color-text-light-2: var(--color-gray-medium); + --color-text-base: var(--color-gray-dark); + --color-text-medium: var(--color-gray-medium); + --color-text-active: var(--color-blue-dark-2); - --shadow: 0 1px 2px rgba(42, 63, 95, 0.7); + --shadow: 0 1px 2px rgba(42, 63, 95, 0.7); + + --border-radius-big: 5px; + --border-radius-medium: 3px; + --border-radius-medium-2: 4px; + --border-radius-small: 2px; +} - --border-radius-big: 5px; - --border-radius-medium: 3px; - --border-radius-medium-2: 4px; - --border-radius-small: 2px; - - } diff --git a/src/components/Pager.vue b/src/components/Pager.vue new file mode 100644 index 0000000..f61412d --- /dev/null +++ b/src/components/Pager.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/src/components/SqlTable.vue b/src/components/SqlTable.vue index 2f7910d..1909998 100644 --- a/src/components/SqlTable.vue +++ b/src/components/SqlTable.vue @@ -1,35 +1,183 @@ + + diff --git a/src/components/TabContent.vue b/src/components/TabContent.vue index 90f700f..b3d7d01 100644 --- a/src/components/TabContent.vue +++ b/src/components/TabContent.vue @@ -13,12 +13,12 @@ -
+
-
-
-
Results will be displayed here
- +
+ +
+ />
@@ -82,6 +82,7 @@ export default { }, result: null, view: 'table', + tableViewHeight: 0, worker: this.$store.state.worker } }, @@ -106,6 +107,10 @@ export default { })) } }, + mounted () { + new ResizeObserver(this.calculateTableHeight).observe(document.getElementById('bottomPane')) + this.calculateTableHeight() + }, methods: { update (data, layout, frames) { this.state = { data, layout, frames } @@ -137,22 +142,36 @@ export default { this.result = event.data.results[0] if (!this.result) { console.log(event.data.error) - return + // return } - this.$refs.output.innerHTML = '' + // this.$refs.output.innerHTML = '' } this.worker.postMessage({ action: 'exec', sql: commands }) - this.$refs.output.textContent = 'Fetching results...' + // this.$refs.output.textContent = 'Fetching results...' }, execEditorContents () { this.execute(this.code + ';') + }, + calculateTableHeight () { + const bottomPane = document.getElementById('bottomPane') + // 88 - view swittcher height + // 42 - table footer width + // 30 - desirable space after the table + // 5 - padding-bottom of rounded table container + // 40 - height of table header + const freeSpace = bottomPane.offsetHeight - 88 - 42 - 30 - 5 - 40 + this.tableViewHeight = freeSpace - (freeSpace % 40) } } } diff --git a/src/components/ViewSwitcher.vue b/src/components/ViewSwitcher.vue index b71452b..e999160 100644 --- a/src/components/ViewSwitcher.vue +++ b/src/components/ViewSwitcher.vue @@ -26,7 +26,8 @@ export default { .view-switcher { height: 28px; display: flex; - margin: 12px; + padding: 30px; + justify-content: center; } .view-switcher div { height: 100%;