diff --git a/package-lock.json b/package-lock.json index 85e8de22..ce33a566 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4029,9 +4029,9 @@ } }, "electron": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/electron/-/electron-8.3.4.tgz", - "integrity": "sha512-aSYXBV0PxYHmXhjGFpR0x38zbO7UTDex2JrT5tcqJpUZTY+sKdfo9PA1TpiyrHNjA5+Q8UseRUsydRedOTeZQA==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/electron/-/electron-8.4.0.tgz", + "integrity": "sha512-SpgyccM5rjDJSGcpQjiviUBT44fZlSyhcjy8RpKSnAad+co4xY1vYj6T25U1CfSk0PH/dhvcp63P2sdXHCwq/Q==", "dev": true, "requires": { "@electron/get": "^1.0.1", diff --git a/package.json b/package.json index e129605a..6ba2a100 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "devDependencies": { "babel-eslint": "^10.1.0", "cross-env": "^7.0.2", - "electron": "^8.3.4", + "electron": "^8.4.0", "electron-builder": "^22.7.0", "electron-devtools-installer": "^3.1.1", "electron-webpack": "^2.8.2", diff --git a/src/renderer/components/WorkspaceQueryTable.vue b/src/renderer/components/WorkspaceQueryTable.vue index b0e83bfb..afa7b439 100644 --- a/src/renderer/components/WorkspaceQueryTable.vue +++ b/src/renderer/components/WorkspaceQueryTable.vue @@ -3,6 +3,7 @@ @@ -81,7 +84,9 @@ export default { resultsSize: 1000, localResults: [], isContext: false, - contextEvent: null + contextEvent: null, + selectedCell: null, + selectedRows: [] }; }, computed: { @@ -149,14 +154,14 @@ export default { } } }, - updateField (event, id) { + updateField (payload, id) { if (!this.primaryField) this.addNotification({ status: 'warning', message: this.$t('message.unableEditFieldWithoutPrimary') }); else { const params = { primary: this.primaryField.name, id, - ...event + ...payload }; this.$emit('updateField', params); } @@ -170,7 +175,37 @@ export default { return row; }); }, - contextMenu (event) { + selectRow (event, row) { + if (event.ctrlKey) { + if (this.selectedRows.includes(row)) + this.selectedRows = this.selectedRows.filter(el => el !== row); + else + this.selectedRows.push(row); + } + else if (event.shiftKey) { + if (!this.selectedRows.length) + this.selectedRows.push(row); + else { + const lastID = this.selectedRows.slice(-1)[0]; + const lastIndex = this.localResults.findIndex(el => el._id === lastID); + const clickedIndex = this.localResults.findIndex(el => el._id === row); + if (lastIndex > clickedIndex) { + for (let i = clickedIndex; i < lastIndex; i++) + this.selectedRows.push(this.localResults[i]._id); + } + else if (lastIndex < clickedIndex) { + for (let i = clickedIndex; i > lastIndex; i--) + this.selectedRows.push(this.localResults[i]._id); + } + } + } + else + this.selectedRows = [row]; + }, + contextMenu (event, cell) { + this.selectedCell = cell; + if (!this.selectedRows.includes(cell.id)) + this.selectedRows = [cell.id]; this.contextEvent = event; this.isContext = true; } diff --git a/src/renderer/components/WorkspaceQueryTableCell.vue b/src/renderer/components/WorkspaceQueryTableCell.vue index 8b13c805..0aee1117 100644 --- a/src/renderer/components/WorkspaceQueryTableCell.vue +++ b/src/renderer/components/WorkspaceQueryTableCell.vue @@ -5,14 +5,14 @@ class="td" :class="`type-${type} p-0`" tabindex="0" - @contextmenu.prevent="$emit('cellContext', $event)" + @contextmenu.prevent="$emit('contextmenu', $event)" > {{ content | typeFormat(type, precision) }} + >{{ content | typeFormat(type, precision) | cutText }} 50 ? `${val.substring(0, 50)}[...]` : val; + }, typeFormat (val, type, precision) { if (!val) return val; @@ -54,7 +58,7 @@ export default { case 'varchar': case 'text': case 'mediumtext': - return val.substring(0, 128); + return val; case 'date': { return moment(val).isValid() ? moment(val).format('YYYY-MM-DD') : val; } @@ -148,7 +152,7 @@ export default { }, editOFF () { this.isEditing = false; - if (this.localContent === this.content) return; + if (this.localContent === this.$options.filters.typeFormat(this.content, this.type)) return; const { field, type, localContent: content } = this; this.$emit('updateField', { field, type, content }); diff --git a/src/renderer/components/WorkspaceQueryTableContext.vue b/src/renderer/components/WorkspaceQueryTableContext.vue index b014d4ad..48791b1e 100644 --- a/src/renderer/components/WorkspaceQueryTableContext.vue +++ b/src/renderer/components/WorkspaceQueryTableContext.vue @@ -3,11 +3,11 @@ :context-event="contextEvent" @closeContext="$emit('closeContext')" > - + edit {{ $t('message.editCell') }} - delete {{ $t('message.deleteRow') }} + delete {{ $tc('message.deleteRows', selectedRows.length) }}