From 1250f5d25a25a3f0a1ca7a66a043c49314340864 Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Wed, 30 Jun 2021 16:21:47 +0200 Subject: [PATCH 01/16] v4.2.6-beta.3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7dc596f42..fac0d0f8d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "4.2.6-beta.2", + "version": "4.2.6-beta.3", "name": "dbgate-all", "workspaces": [ "packages/*", From e66f2fcd2de3f19f8e137c5f6ecc2199225dbe11 Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Wed, 30 Jun 2021 16:43:14 +0200 Subject: [PATCH 02/16] changelog --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 980f438d3..2c2387412 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # ChangeLog +### 4.2.6 + - Fixed MongoDB import + - Configurable thousands separator #136 + - Using case insensitive text search in postgres + ### 4.2.5 - FIXED: Fixed crash when using large model on some installations - FIXED: Postgre SQL CREATE function From 6ed9bb025887b2da80bf25947ef45a8b9f99231e Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Wed, 30 Jun 2021 16:45:10 +0200 Subject: [PATCH 03/16] v4.2.6 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index fac0d0f8d..264d317f6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "4.2.6-beta.3", + "version": "4.2.6", "name": "dbgate-all", "workspaces": [ "packages/*", From 9d711e45f96c8e723a1b8fe50f6969d28653a1ed Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Thu, 1 Jul 2021 13:35:19 +0200 Subject: [PATCH 04/16] display datetime cells #137 --- packages/web/src/datagrid/DataGridCell.svelte | 34 ++++++++----------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/packages/web/src/datagrid/DataGridCell.svelte b/packages/web/src/datagrid/DataGridCell.svelte index 454dfa4ef..ee7bf99af 100644 --- a/packages/web/src/datagrid/DataGridCell.svelte +++ b/packages/web/src/datagrid/DataGridCell.svelte @@ -12,7 +12,8 @@ return value; } - const dateTimeRegex = /^\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d(\.\d\d\d)?Z?$/; + // const dateTimeRegex = /^\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d(\.\d\d\d)?Z?$/; + const dateTimeRegex = /^([0-9]+)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])[Tt]([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\.[0-9]+)?(([Zz])|()|([\+|\-]([01][0-9]|2[0-3]):[0-5][0-9]))$/; function formatNumber(value) { if (value >= 10000 || value <= -10000) { @@ -25,12 +26,15 @@ return value.toString(); } + + function formatDateTime(testedString) { + const m = testedString.match(dateTimeRegex); + return `${m[1]}-${m[2]}-${m[3]} ${m[4]}:${m[5]}:${m[6]}`; + } handleClick()} + on:middleclick={() => handleClick(true)} on:expand /> From d2317ab908531ec78f4f652069bf54f8e9fc6ff9 Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Wed, 14 Jul 2021 20:46:26 +0200 Subject: [PATCH 09/16] new query on middle mouse click --- packages/web/src/appobj/ConnectionAppObject.svelte | 10 ++++------ packages/web/src/widgets/TabsPanel.svelte | 2 +- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/packages/web/src/appobj/ConnectionAppObject.svelte b/packages/web/src/appobj/ConnectionAppObject.svelte index cc022983c..829a8c85e 100644 --- a/packages/web/src/appobj/ConnectionAppObject.svelte +++ b/packages/web/src/appobj/ConnectionAppObject.svelte @@ -123,7 +123,7 @@ text: 'Connect', onClick: handleConnect, }, - { onClick: handleNewQuery, text: 'New query' }, + { onClick: handleNewQuery, text: 'New query', isNewQuery: true }, $openedConnections.includes(data._id) && data.status && { text: 'Refresh', @@ -191,10 +191,8 @@ on:click on:expand on:middleclick={() => { - if (data.singleDatabase) { - getDatabaseMenuItems(data, data.defaultDatabase, $extensions, $currentDatabase) - .find(x => x.isNewQuery) - .onClick(); - } + _.flattenDeep(getContextMenu()) + .find(x => x.isNewQuery) + .onClick(); }} /> diff --git a/packages/web/src/widgets/TabsPanel.svelte b/packages/web/src/widgets/TabsPanel.svelte index 9ce64bbbb..dc4f6c759 100644 --- a/packages/web/src/widgets/TabsPanel.svelte +++ b/packages/web/src/widgets/TabsPanel.svelte @@ -49,7 +49,7 @@ if (tab.props && tab.props.conid && tab.props.database) return tab.props.database; if (tab.props && tab.props.conid) { const connection = connectionList?.find(x => x._id == tab.props.conid); - if (connection) return getConnectionLabel(connection.displayName, { allowExplicitDatabase: false }); + if (connection) return getConnectionLabel(connection, { allowExplicitDatabase: false }); return '???'; } if (tab.props && tab.props.archiveFolder) return tab.props.archiveFolder; From a0df43484a7d602811bbcf29cba683670a5c6410 Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Wed, 14 Jul 2021 20:54:52 +0200 Subject: [PATCH 10/16] samll refactor --- packages/web/src/datagrid/DataGridCore.svelte | 6 +++--- packages/web/src/formview/FormView.svelte | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/web/src/datagrid/DataGridCore.svelte b/packages/web/src/datagrid/DataGridCore.svelte index 90a0a1ad3..0e2455d66 100644 --- a/packages/web/src/datagrid/DataGridCore.svelte +++ b/packages/web/src/datagrid/DataGridCore.svelte @@ -54,7 +54,7 @@ name: 'Set NULL', keyText: 'Ctrl+0', testEnabled: () => getCurrentDataGrid()?.getGrider()?.editable, - onClick: () => getCurrentDataGrid().setNull(), + onClick: () => getCurrentDataGrid().setFixedValue(null), }); registerCommand({ @@ -310,10 +310,10 @@ } } - export function setNull() { + export function setFixedValue(value) { grider.beginUpdate(); selectedCells.filter(isRegularCell).forEach(cell => { - setCellValue(cell, null); + setCellValue(cell, value); }); grider.endUpdate(); } diff --git a/packages/web/src/formview/FormView.svelte b/packages/web/src/formview/FormView.svelte index baf296642..2392bcb87 100644 --- a/packages/web/src/formview/FormView.svelte +++ b/packages/web/src/formview/FormView.svelte @@ -49,7 +49,7 @@ name: 'Set NULL', keyText: 'Ctrl+0', testEnabled: () => getCurrentDataForm() != null, - onClick: () => getCurrentDataForm().setNull(), + onClick: () => getCurrentDataForm().setFixedValue(null), }); registerCommand({ @@ -247,9 +247,9 @@ // if (onSave) onSave(); // } - export function setNull() { + export function setFixedValue(value) { if (isDataCell(currentCell)) { - setCellValue(currentCell, null); + setCellValue(currentCell, value); } } From 902fbbf29ab6d0a784af7c30efa86b433d03c469 Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Wed, 14 Jul 2021 20:58:42 +0200 Subject: [PATCH 11/16] #142 --- plugins/dbgate-plugin-postgres/src/frontend/Dumper.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/plugins/dbgate-plugin-postgres/src/frontend/Dumper.js b/plugins/dbgate-plugin-postgres/src/frontend/Dumper.js index 36182f71f..27e67d3a7 100644 --- a/plugins/dbgate-plugin-postgres/src/frontend/Dumper.js +++ b/plugins/dbgate-plugin-postgres/src/frontend/Dumper.js @@ -61,6 +61,13 @@ class Dumper extends SqlDumper { } super.columnDefinition(col, options); } + + putValue(value) { + if (value === true) this.putRaw('true'); + else if (value === false) this.putRaw('false'); + else super.putValue(value); + } + } module.exports = Dumper; From 9a0ae06c87bbb1107ca7104286a7f4eb9585a47a Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Wed, 14 Jul 2021 21:04:51 +0200 Subject: [PATCH 12/16] #143 --- plugins/dbgate-plugin-mongo/src/frontend/driver.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/dbgate-plugin-mongo/src/frontend/driver.js b/plugins/dbgate-plugin-mongo/src/frontend/driver.js index c349b34ab..5eed31e57 100644 --- a/plugins/dbgate-plugin-mongo/src/frontend/driver.js +++ b/plugins/dbgate-plugin-mongo/src/frontend/driver.js @@ -1,3 +1,4 @@ +const _isString = require('lodash/isString'); const { driverBase } = global.DBGATE_TOOLS; const Dumper = require('./Dumper'); const { noSplitSplitterOptions } = require('dbgate-query-splitter/lib/options'); @@ -5,7 +6,7 @@ const { noSplitSplitterOptions } = require('dbgate-query-splitter/lib/options'); const mongoIdRegex = /^[0-9a-f]{24}$/; function getConditionPreview(condition) { - if (condition && _.isString(condition._id) && condition._id.match(mongoIdRegex)) { + if (condition && _isString(condition._id) && condition._id.match(mongoIdRegex)) { return `{ _id: ObjectId('${condition._id}') }`; } return JSON.stringify(condition); From 7e73f81d4edfa167c60622d09816cf5c9f9477c2 Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Wed, 14 Jul 2021 21:05:14 +0200 Subject: [PATCH 13/16] v4.2.7-beta.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3ae988607..002cefb25 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "4.2.7-beta.1", + "version": "4.2.7-beta.2", "name": "dbgate-all", "workspaces": [ "packages/*", From ad1ec70e946ada54750c20efdbc1bc42bab49341 Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Thu, 15 Jul 2021 21:37:48 +0200 Subject: [PATCH 14/16] v4.2.7 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 002cefb25..4658893ca 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "4.2.7-beta.2", + "version": "4.2.7", "name": "dbgate-all", "workspaces": [ "packages/*", From 5d79b687d5c13671fa89e0a78f0333270d93ef0f Mon Sep 17 00:00:00 2001 From: cschreier <57193289+cschreier@users.noreply.github.com> Date: Fri, 16 Jul 2021 10:57:22 +0200 Subject: [PATCH 15/16] open inplace editor on num pad key down --- packages/web/src/datagrid/DataGridCore.svelte | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/web/src/datagrid/DataGridCore.svelte b/packages/web/src/datagrid/DataGridCore.svelte index 0e2455d66..e827ec543 100644 --- a/packages/web/src/datagrid/DataGridCore.svelte +++ b/packages/web/src/datagrid/DataGridCore.svelte @@ -733,6 +733,7 @@ !event.altKey && ((event.keyCode >= keycodes.a && event.keyCode <= keycodes.z) || (event.keyCode >= keycodes.n0 && event.keyCode <= keycodes.n9) || + (event.keyCode >= keycodes.numPad0 && event.keyCode <= keycodes.numPad9) || event.keyCode == keycodes.dash) ) { // @ts-ignore From 32d05edb6ae0c32fad0bae0413f01ee13630c340 Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Sun, 18 Jul 2021 07:57:25 +0200 Subject: [PATCH 16/16] fixed popup menu for columns --- packages/datalib/src/GridDisplay.ts | 1 + packages/datalib/src/TableGridDisplay.ts | 1 + packages/datalib/src/ViewGridDisplay.ts | 1 + .../src/datagrid/ColumnHeaderControl.svelte | 22 ++++++++++--------- packages/web/src/datagrid/DataGridCore.svelte | 2 +- 5 files changed, 16 insertions(+), 11 deletions(-) diff --git a/packages/datalib/src/GridDisplay.ts b/packages/datalib/src/GridDisplay.ts index 9b5678a82..714da9384 100644 --- a/packages/datalib/src/GridDisplay.ts +++ b/packages/datalib/src/GridDisplay.ts @@ -75,6 +75,7 @@ export abstract class GridDisplay { } changeSetKeyFields: string[] = null; sortable = false; + groupable = false; filterable = false; editable = false; isLoadedCorrectly = true; diff --git a/packages/datalib/src/TableGridDisplay.ts b/packages/datalib/src/TableGridDisplay.ts index 46bc64d5a..044f5aa65 100644 --- a/packages/datalib/src/TableGridDisplay.ts +++ b/packages/datalib/src/TableGridDisplay.ts @@ -35,6 +35,7 @@ export class TableGridDisplay extends GridDisplay { this.columns = this.getDisplayColumns(this.table, []); this.filterable = true; this.sortable = true; + this.groupable = true; this.editable = true; this.supportsReload = true; this.baseTable = this.table; diff --git a/packages/datalib/src/ViewGridDisplay.ts b/packages/datalib/src/ViewGridDisplay.ts index bc785426b..f8d24e756 100644 --- a/packages/datalib/src/ViewGridDisplay.ts +++ b/packages/datalib/src/ViewGridDisplay.ts @@ -17,6 +17,7 @@ export class ViewGridDisplay extends GridDisplay { this.columns = this.getDisplayColumns(view); this.filterable = true; this.sortable = true; + this.groupable = true; this.editable = false; this.supportsReload = true; } diff --git a/packages/web/src/datagrid/ColumnHeaderControl.svelte b/packages/web/src/datagrid/ColumnHeaderControl.svelte index e6f0a2a1d..715925ef6 100644 --- a/packages/web/src/datagrid/ColumnHeaderControl.svelte +++ b/packages/web/src/datagrid/ColumnHeaderControl.svelte @@ -6,6 +6,7 @@ import ColumnLabel from '../elements/ColumnLabel.svelte'; import { isTypeDateTime } from 'dbgate-tools'; import { openDatabaseObjectDetail } from '../appobj/DatabaseObjectAppObject.svelte'; + import { copyTextToClipboard } from '../utility/clipboard'; export let column; export let conid = undefined; @@ -27,19 +28,20 @@ function getMenu() { return [ - { onClick: () => setSort('ASC'), text: 'Sort ascending' }, - { onClick: () => setSort('DESC'), text: 'Sort descending' }, + setSort && { onClick: () => setSort('ASC'), text: 'Sort ascending' }, + setSort && { onClick: () => setSort('DESC'), text: 'Sort descending' }, + { onClick: () => copyTextToClipboard(column.columnName), text: 'Copy column name' }, column.foreignKey && [{ divider: true }, { onClick: openReferencedTable, text: column.foreignKey.refTableName }], - { divider: true }, - { onClick: () => setGrouping('GROUP'), text: 'Group by' }, - { onClick: () => setGrouping('MAX'), text: 'MAX' }, - { onClick: () => setGrouping('MIN'), text: 'MIN' }, - { onClick: () => setGrouping('SUM'), text: 'SUM' }, - { onClick: () => setGrouping('AVG'), text: 'AVG' }, - { onClick: () => setGrouping('COUNT'), text: 'COUNT' }, - { onClick: () => setGrouping('COUNT DISTINCT'), text: 'COUNT DISTINCT' }, + setGrouping && { divider: true }, + setGrouping && { onClick: () => setGrouping('GROUP'), text: 'Group by' }, + setGrouping && { onClick: () => setGrouping('MAX'), text: 'MAX' }, + setGrouping && { onClick: () => setGrouping('MIN'), text: 'MIN' }, + setGrouping && { onClick: () => setGrouping('SUM'), text: 'SUM' }, + setGrouping && { onClick: () => setGrouping('AVG'), text: 'AVG' }, + setGrouping && { onClick: () => setGrouping('COUNT'), text: 'COUNT' }, + setGrouping && { onClick: () => setGrouping('COUNT DISTINCT'), text: 'COUNT DISTINCT' }, isTypeDateTime(column.dataType) && [ { divider: true }, diff --git a/packages/web/src/datagrid/DataGridCore.svelte b/packages/web/src/datagrid/DataGridCore.svelte index e827ec543..e9e59ac9b 100644 --- a/packages/web/src/datagrid/DataGridCore.svelte +++ b/packages/web/src/datagrid/DataGridCore.svelte @@ -1051,7 +1051,7 @@ // @ts-ignore display.resizeColumn(col.uniqueName, col.width, e.detail); }} - setGrouping={display.sortable ? groupFunc => display.setGrouping(col.uniqueName, groupFunc) : null} + setGrouping={display.groupable ? groupFunc => display.setGrouping(col.uniqueName, groupFunc) : null} grouping={display.getGrouping(col.uniqueName)} />