diff --git a/packages/datalib/src/TableGridDisplay.ts b/packages/datalib/src/TableGridDisplay.ts index 9d25f44b8..9adbc7a5b 100644 --- a/packages/datalib/src/TableGridDisplay.ts +++ b/packages/datalib/src/TableGridDisplay.ts @@ -39,7 +39,8 @@ export class TableGridDisplay extends GridDisplay { public getDictionaryDescription: DictionaryDescriptionFunc = null, isReadOnly = false, public isRawMode = false, - public currentSettings = null + public currentSettings = null, + public areReferencesAllowed = true ) { super(config, setConfig, cache, setCache, driver, dbinfo, serverVersion, currentSettings); @@ -248,6 +249,7 @@ export class TableGridDisplay extends GridDisplay { } processReferences(select: Select, displayedColumnInfo: DisplayedColumnInfo, options) { + if (!this.areReferencesAllowed) return; this.addJoinsFromExpandedColumns(select, this.columns, 'basetbl', displayedColumnInfo); if (!options.isExport && this.displayOptions.showHintColumns) { this.addHintsToSelect(select); diff --git a/packages/web/src/appobj/DatabaseAppObject.svelte b/packages/web/src/appobj/DatabaseAppObject.svelte index 671d5b64e..58a444190 100644 --- a/packages/web/src/appobj/DatabaseAppObject.svelte +++ b/packages/web/src/appobj/DatabaseAppObject.svelte @@ -468,12 +468,14 @@ await dbgateApi.executeQuery(${JSON.stringify( { divider: true }, isSqlOrDoc && + isProApp() && !connection.isReadOnly && hasPermission(`dbops/import`) && { onClick: handleImport, text: _t('database.import', { defaultMessage: 'Import' }), }, isSqlOrDoc && + isProApp() && hasPermission(`dbops/export`) && { onClick: handleExport, text: _t('database.export', { defaultMessage: 'Export' }), diff --git a/packages/web/src/commands/stdCommands.ts b/packages/web/src/commands/stdCommands.ts index b912b5846..2da3aea34 100644 --- a/packages/web/src/commands/stdCommands.ts +++ b/packages/web/src/commands/stdCommands.ts @@ -691,7 +691,7 @@ registerCommand({ name: 'Export database', toolbar: true, icon: 'icon export', - testEnabled: () => getCurrentDatabase() != null && hasPermission(`dbops/export`), + testEnabled: () => getCurrentDatabase() != null && hasPermission(`dbops/export`) && isProApp(), onClick: () => { openImportExportTab({ targetStorageType: getDefaultFileFormat(getExtensions()).storageType, diff --git a/packages/web/src/datagrid/ColumnHeaderControl.svelte b/packages/web/src/datagrid/ColumnHeaderControl.svelte index 669e4e44e..6ecc61757 100644 --- a/packages/web/src/datagrid/ColumnHeaderControl.svelte +++ b/packages/web/src/datagrid/ColumnHeaderControl.svelte @@ -12,6 +12,7 @@ import { showModal } from '../modals/modalTools'; import DefineDictionaryDescriptionModal from '../modals/DefineDictionaryDescriptionModal.svelte'; import { sleep } from '../utility/common'; + import { isProApp } from '../utility/proTools'; export let column; export let conid = undefined; @@ -72,29 +73,35 @@ column.foreignKey && [{ divider: true }, { onClick: openReferencedTable, text: column.foreignKey.refTableName }], - 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' }, + isProApp() && + setGrouping && [ + { 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' }, + ], - isTypeDateTime(column.dataType) && [ - { divider: true }, - { onClick: () => setGrouping('GROUP:YEAR'), text: 'Group by YEAR' }, - { onClick: () => setGrouping('GROUP:MONTH'), text: 'Group by MONTH' }, - { onClick: () => setGrouping('GROUP:DAY'), text: 'Group by DAY' }, - ], + isProApp() && + isTypeDateTime(column.dataType) && [ + { divider: true }, + { onClick: () => setGrouping('GROUP:YEAR'), text: 'Group by YEAR' }, + { onClick: () => setGrouping('GROUP:MONTH'), text: 'Group by MONTH' }, + { onClick: () => setGrouping('GROUP:DAY'), text: 'Group by DAY' }, + ], { divider: true }, - allowDefineVirtualReferences && { onClick: handleDefineVirtualForeignKey, text: 'Define virtual foreign key' }, - column.foreignKey && { - onClick: handleCustomizeDescriptions, - text: 'Customize description', - }, + isProApp() && + allowDefineVirtualReferences && { onClick: handleDefineVirtualForeignKey, text: 'Define virtual foreign key' }, + column.foreignKey && + isProApp() && { + onClick: handleCustomizeDescriptions, + text: 'Customize description', + }, ]; } diff --git a/packages/web/src/datagrid/ColumnManagerRow.svelte b/packages/web/src/datagrid/ColumnManagerRow.svelte index 9d55f241b..630af469d 100644 --- a/packages/web/src/datagrid/ColumnManagerRow.svelte +++ b/packages/web/src/datagrid/ColumnManagerRow.svelte @@ -7,6 +7,7 @@ import { showModal } from '../modals/modalTools'; import ColumnEditorModal from '../tableeditor/ColumnEditorModal.svelte'; import { editorDeleteColumn } from 'dbgate-tools'; + import { isProApp } from '../utility/proTools'; export let column; export let display; @@ -59,13 +60,17 @@ on:mouseup >