diff --git a/src/main/ipc-handlers/tables.js b/src/main/ipc-handlers/tables.js index 46e1558b..47ef823f 100644 --- a/src/main/ipc-handlers/tables.js +++ b/src/main/ipc-handlers/tables.js @@ -16,7 +16,7 @@ export default (connections) => { } }); - ipcMain.handle('get-table-data', async (event, { uid, schema, table, limit, page, sortParams }) => { + ipcMain.handle('get-table-data', async (event, { uid, schema, table, limit, page, sortParams, where }) => { try { const offset = (page - 1) * limit; const query = connections[uid] @@ -29,6 +29,9 @@ export default (connections) => { if (sortParams && sortParams.field && sortParams.dir) query.orderBy({ [sortParams.field]: sortParams.dir.toUpperCase() }); + if (where) + query.where(where); + const result = await query.run({ details: true, schema }); return { status: 'success', response: result }; diff --git a/src/renderer/components/WorkspaceTabTable.vue b/src/renderer/components/WorkspaceTabTable.vue index c4f4f4fb..84e6999f 100644 --- a/src/renderer/components/WorkspaceTabTable.vue +++ b/src/renderer/components/WorkspaceTabTable.vue @@ -71,6 +71,13 @@
+
+
0 && !val) { + this.filters = []; + this.getTableData(); + } + this.resizeScroller(); } }, created () { @@ -302,7 +326,8 @@ export default { table: this.table, limit: this.limit, page: this.page, - sortParams: this.sortParams + sortParams: this.sortParams, + where: this.filters || [] }; try { // Table data @@ -389,11 +414,13 @@ export default { if (e.key === 'F5') this.reloadTable(); - if (e.ctrlKey) { + if (e.ctrlKey || e.metaKey) { if (e.key === 'ArrowRight') this.pageChange('next'); if (e.key === 'ArrowLeft') this.pageChange('prev'); + if (e.keyCode === 70) // f + this.isSearch = !this.isSearch; } } }, @@ -410,6 +437,18 @@ export default { }, downloadTable (format) { this.$refs.queryTable.downloadTable(format, this.table); + }, + onFilterChange (clausoles) { + this.resizeScroller(); + if (clausoles.length === 0) + this.isSearch = false; + }, + resizeScroller () { + setTimeout(() => this.$refs.queryTable.refreshScroller(), 1); + }, + updateFilters (clausoles) { + this.filters = clausoles; + this.getTableData(); } } }; diff --git a/src/renderer/components/WorkspaceTabTableFilters.vue b/src/renderer/components/WorkspaceTabTableFilters.vue new file mode 100644 index 00000000..16fb1a4e --- /dev/null +++ b/src/renderer/components/WorkspaceTabTableFilters.vue @@ -0,0 +1,166 @@ + + + + + diff --git a/src/renderer/i18n/en-US.js b/src/renderer/i18n/en-US.js index 6858b542..3985f11c 100644 --- a/src/renderer/i18n/en-US.js +++ b/src/renderer/i18n/en-US.js @@ -120,7 +120,8 @@ module.exports = { new: 'New', history: 'History', select: 'Select', - passphrase: 'Passphrase' + passphrase: 'Passphrase', + filter: 'Filter' }, message: { appWelcome: 'Welcome to Antares SQL Client!', diff --git a/src/renderer/i18n/it-IT.js b/src/renderer/i18n/it-IT.js index f84f1782..dc0be03f 100644 --- a/src/renderer/i18n/it-IT.js +++ b/src/renderer/i18n/it-IT.js @@ -115,7 +115,13 @@ module.exports = { cell: 'Cella | Celle', triggerFunction: 'Funzione di trigger | Funzioni di trigger', all: 'Tutto', - duplicate: 'Duplica' + duplicate: 'Duplica', + routine: 'Routine', + new: 'Nuovo', + history: 'Cronologia', + select: 'Seleziona', + passphrase: 'Passphrase', + filter: 'Filtra' }, message: { appWelcome: 'Benvenuto in Antares SQL Client!',