diff --git a/packages/web/public/global.css b/packages/web/public/global.css index 9f4b0ca27..df96b6ae1 100644 --- a/packages/web/public/global.css +++ b/packages/web/public/global.css @@ -45,6 +45,9 @@ body { .nowrap { white-space: nowrap; } +.noselect { + user-select: none; +} .bold { font-weight: bold; } diff --git a/packages/web/src/designer/ColumnLine.svelte b/packages/web/src/designer/ColumnLine.svelte index 013801dc2..c9e9954a1 100644 --- a/packages/web/src/designer/ColumnLine.svelte +++ b/packages/web/src/designer/ColumnLine.svelte @@ -17,6 +17,7 @@ export let onCreateReference; export let onAddReferenceByColumn; export let onSelectColumn; + export let settings; $: designerColumn = (designer.columns || []).find( x => x.designerId == designerId && x.columnName == column.columnName @@ -38,9 +39,11 @@ }; return [ - { text: 'Sort ascending', onClick: () => setSortOrder(1) }, - { text: 'Sort descending', onClick: () => setSortOrder(-1) }, - { text: 'Unsort', onClick: () => setSortOrder(0) }, + settings?.allowColumnOperations && [ + { text: 'Sort ascending', onClick: () => setSortOrder(1) }, + { text: 'Sort descending', onClick: () => setSortOrder(-1) }, + { text: 'Unsort', onClick: () => setSortOrder(0) }, + ], foreignKey && { text: 'Add reference', onClick: addReference }, ]; } @@ -49,8 +52,10 @@
{ + if (!settings?.allowCreateRefByDrag) return; + const dragData = { ...column, designerId, @@ -92,30 +97,32 @@ })} use:contextMenu={createMenu} > - x.designerId == designerId && x.columnName == column.columnName && x.isOutput - )} - on:change={e => { - if (e.target.checked) { - onChangeColumn( - { - ...column, - designerId, - }, - col => ({ ...col, isOutput: true }) - ); - } else { - onChangeColumn( - { - ...column, - designerId, - }, - col => ({ ...col, isOutput: false }) - ); - } - }} - /> + {#if settings?.allowColumnOperations} + x.designerId == designerId && x.columnName == column.columnName && x.isOutput + )} + on:change={e => { + if (e.target.checked) { + onChangeColumn( + { + ...column, + designerId, + }, + col => ({ ...col, isOutput: true }) + ); + } else { + onChangeColumn( + { + ...column, + designerId, + }, + col => ({ ...col, isOutput: false }) + ); + } + }} + /> + {/if} {#if designerColumn?.filter} diff --git a/packages/web/src/designer/Designer.svelte b/packages/web/src/designer/Designer.svelte index beccec287..bdf693a5a 100644 --- a/packages/web/src/designer/Designer.svelte +++ b/packages/web/src/designer/Designer.svelte @@ -19,6 +19,7 @@ export let conid; export let database; export let menu; + export let settings; let domCanvas; @@ -153,7 +154,9 @@ const newTableDesignerId = uuidv1(); callChange(current => { const fromTable = (current.tables || []).find(x => x.designerId == designerId); - if (!fromTable) return; + if (!fromTable) return current; + const alias = getNewTableAlias(toTable, current.tables); + if (alias && !settings?.allowTableAlias) return current; return { ...current, tables: [ @@ -163,7 +166,7 @@ left: fromTable.left + 300, top: fromTable.top + 50, designerId: newTableDesignerId, - alias: getNewTableAlias(toTable, current.tables), + alias, }, ], references: [ @@ -265,13 +268,16 @@ ), ]); + const alias = getNewTableAlias(json, current?.tables); + if (alias && !settings?.allowTableAlias) return current; + return { ...current, tables: [ ...((current || {}).tables || []), { ...json, - alias: getNewTableAlias(json, current?.tables), + alias, }, ], references: @@ -301,7 +307,7 @@ } -
+
{#if !(tables?.length > 0)}
Drag & drop tables or views from left panel here
{/if} @@ -344,6 +350,7 @@ designer={value} {sourceDragColumn$} {targetDragColumn$} + {settings} /> {/each}
diff --git a/packages/web/src/designer/DesignerTable.svelte b/packages/web/src/designer/DesignerTable.svelte index c3c99462d..df73cd828 100644 --- a/packages/web/src/designer/DesignerTable.svelte +++ b/packages/web/src/designer/DesignerTable.svelte @@ -31,6 +31,7 @@ // export let domTablesRef; export let designer; export let onMoveReferences; + export let settings; let movingPosition = null; let domWrapper; @@ -86,16 +87,18 @@ function createMenu() { return [ { text: 'Remove', onClick: () => onRemoveTable({ designerId }) }, - { divider: true }, - { text: 'Set table alias', onClick: handleSetTableAlias }, - alias && { - text: 'Remove table alias', - onClick: () => - onChangeTable({ - ...table, - alias: null, - }), - }, + settings?.allowTableAlias && [ + { divider: true }, + { text: 'Set table alias', onClick: handleSetTableAlias }, + alias && { + text: 'Remove table alias', + onClick: () => + onChangeTable({ + ...table, + alias: null, + }), + }, + ], ]; } @@ -114,9 +117,11 @@ use:contextMenu={createMenu} >
{alias || pureName}
-
onRemoveTable(table)}> - -
+ {#if settings?.showTableCloseButton} +
onRemoveTable(table)}> + +
+ {/if}
tick().then(onMoveReferences)}> {#each columns || [] as column} @@ -131,6 +136,7 @@ {targetDragColumn$} {onCreateReference} {onAddReferenceByColumn} + {settings} bind:domLine={columnRefs[column.columnName]} /> {/each} diff --git a/packages/web/src/designer/DiagramDesigner.svelte b/packages/web/src/designer/DiagramDesigner.svelte new file mode 100644 index 000000000..564abd5bf --- /dev/null +++ b/packages/web/src/designer/DiagramDesigner.svelte @@ -0,0 +1,13 @@ + + + diff --git a/packages/web/src/designer/QueryDesigner.svelte b/packages/web/src/designer/QueryDesigner.svelte index 782816e47..ff354ebd9 100644 --- a/packages/web/src/designer/QueryDesigner.svelte +++ b/packages/web/src/designer/QueryDesigner.svelte @@ -2,4 +2,12 @@ import Designer from './Designer.svelte'; - + diff --git a/packages/web/src/tabs/DiagramTab.svelte b/packages/web/src/tabs/DiagramTab.svelte index 1745e7d1f..055c5f945 100644 --- a/packages/web/src/tabs/DiagramTab.svelte +++ b/packages/web/src/tabs/DiagramTab.svelte @@ -22,7 +22,7 @@ import _ from 'lodash'; import { findEngineDriver } from 'dbgate-tools'; import createActivator, { getActiveComponent } from '../utility/createActivator'; - import Designer from '../designer/Designer.svelte'; + import DiagramDesigner from '../designer/DiagramDesigner.svelte'; export let tabid; export let conid; @@ -92,7 +92,7 @@ } -