diagram - move by click on table anywhere

This commit is contained in:
Jan Prochazka
2022-01-20 10:39:23 +01:00
parent d85b9c9bb5
commit 8935d36ea8
7 changed files with 28 additions and 11 deletions

View File

@@ -27,7 +27,7 @@
</script> </script>
<div <div
class={`${$currentTheme} ${currentThemeType} root`} class={`${$currentTheme} ${currentThemeType} root dbgate-screen`}
use:dragDropFileTarget use:dragDropFileTarget
on:contextmenu={e => e.preventDefault()} on:contextmenu={e => e.preventDefault()}
> >

View File

@@ -51,6 +51,7 @@
<div <div
class="line" class="line"
class:canSelectColumns={settings?.canSelectColumns}
bind:this={domLine} bind:this={domLine}
draggable={!!settings?.allowCreateRefByDrag} draggable={!!settings?.allowCreateRefByDrag}
on:dragstart={e => { on:dragstart={e => {
@@ -95,7 +96,7 @@
...column, ...column,
designerId, designerId,
})} })}
use:contextMenu={createMenu} use:contextMenu={settings?.canSelectColumns ? createMenu : '__no_menu'}
> >
{#if settings?.allowColumnOperations} {#if settings?.allowColumnOperations}
<CheckboxField <CheckboxField
@@ -139,13 +140,13 @@
</div> </div>
<style> <style>
.line:hover { :global(.dbgate-screen) .line.canSelectColumns:hover {
background: var(--theme-bg-1); background: var(--theme-bg-1);
} }
.line.isDragSource { :global(.dbgate-screen) .line.isDragSource {
background: var(--theme-bg-gold); background: var(--theme-bg-gold);
} }
.line.isDragTarget { :global(.dbgate-screen) .line.isDragTarget {
background: var(--theme-bg-gold); background: var(--theme-bg-gold);
} }
</style> </style>

View File

@@ -107,16 +107,19 @@
<div <div
class="wrapper" class="wrapper"
class:canSelectColumns={settings?.canSelectColumns}
style={`left: ${movingPosition ? movingPosition.left : left}px; top:${movingPosition ? movingPosition.top : top}px`} style={`left: ${movingPosition ? movingPosition.left : left}px; top:${movingPosition ? movingPosition.top : top}px`}
bind:this={domWrapper} bind:this={domWrapper}
on:mousedown={() => onBringToFront(table)} on:mousedown={() => onBringToFront(table)}
use:contextMenu={settings?.canSelectColumns ? '__no_menu' : createMenu}
use:moveDrag={settings?.canSelectColumns ? null : [handleMoveStart, handleMove, handleMoveEnd]}
> >
<div <div
class="header" class="header"
class:isTable={objectTypeField == 'tables'} class:isTable={objectTypeField == 'tables'}
class:isView={objectTypeField == 'views'} class:isView={objectTypeField == 'views'}
use:moveDrag={[handleMoveStart, handleMove, handleMoveEnd]} use:moveDrag={settings?.canSelectColumns ? [handleMoveStart, handleMove, handleMoveEnd] : null}
use:contextMenu={createMenu} use:contextMenu={settings?.canSelectColumns ? createMenu : '__no_menu'}
> >
<div>{alias || pureName}</div> <div>{alias || pureName}</div>
{#if settings?.showTableCloseButton} {#if settings?.showTableCloseButton}
@@ -152,15 +155,21 @@
border: 1px solid var(--theme-border); border: 1px solid var(--theme-border);
} }
:global(.dbgate-screen) .wrapper:not(.canSelectColumns) {
cursor: pointer;
}
.header { .header {
font-weight: bold; font-weight: bold;
text-align: center; text-align: center;
padding: 2px; padding: 2px;
border-bottom: 1px solid var(--theme-border); border-bottom: 1px solid var(--theme-border);
cursor: pointer;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
} }
:global(.dbgate-screen) .header {
cursor: pointer;
}
.header.isTable { .header.isTable {
background: var(--theme-bg-blue); background: var(--theme-bg-blue);
} }

View File

@@ -16,6 +16,7 @@
allowAddAllReferences: true, allowAddAllReferences: true,
canArrange: true, canArrange: true,
canExport: true, canExport: true,
canSelectColumns: false,
}} }}
referenceComponent={DiagramDesignerReference} referenceComponent={DiagramDesignerReference}
/> />

View File

@@ -16,6 +16,7 @@
allowAddAllReferences: false, allowAddAllReferences: false,
canArrange: false, canArrange: false,
canExport: false, canExport: false,
canSelectColumns: true,
}} }}
referenceComponent={QueryDesignerReference} referenceComponent={QueryDesignerReference}
/> />

View File

@@ -9,13 +9,13 @@ export function registerMenu(...items) {
setContext('componentContextMenu', [parentMenu, ...items]); setContext('componentContextMenu', [parentMenu, ...items]);
} }
export default function contextMenu(node, items = []) { export default function contextMenu(node, items: any = []) {
const handleContextMenu = async e => { const handleContextMenu = async e => {
e.preventDefault(); e.preventDefault();
e.stopPropagation(); e.stopPropagation();
await invalidateCommands(); await invalidateCommands();
if (items) { if (items) {
const left = e.pageX; const left = e.pageX;
const top = e.pageY; const top = e.pageY;
@@ -23,6 +23,8 @@ export default function contextMenu(node, items = []) {
} }
}; };
if (items == '__no_menu') return;
node.addEventListener('contextmenu', handleContextMenu); node.addEventListener('contextmenu', handleContextMenu);
return { return {

View File

@@ -1,4 +1,7 @@
export default function moveDrag(node, [onStart, onMove, onEnd]) { export default function moveDrag(node, dragEvents) {
if (!dragEvents) return;
const [onStart, onMove, onEnd] = dragEvents;
let startX = null; let startX = null;
let startY = null; let startY = null;