designer - selecting tables

This commit is contained in:
Jan Prochazka
2022-01-20 11:12:17 +01:00
parent 8935d36ea8
commit fa759b2fb8
4 changed files with 75 additions and 2 deletions

View File

@@ -183,6 +183,20 @@
); );
}; };
const selectTable = (table, addToSelection) => {
callChange(
current => ({
...current,
tables: (current.tables || []).map(x =>
x.designerId == table.designerId
? { ...x, isSelectedTable: true }
: { ...x, isSelectedTable: addToSelection ? x.isSelectedTable : false }
),
}),
true
);
};
const removeTable = table => { const removeTable = table => {
callChange(current => ({ callChange(current => ({
...current, ...current,
@@ -587,6 +601,17 @@
on:dragover={e => e.preventDefault()} on:dragover={e => e.preventDefault()}
on:drop={handleDrop} on:drop={handleDrop}
style={`width:${canvasWidth}px;height:${canvasHeight}px;`} style={`width:${canvasWidth}px;height:${canvasHeight}px;`}
on:mousedown={e => {
if (e.button == 0 && settings?.canSelectTables) {
callChange(
current => ({
...current,
tables: (current.tables || []).map(x => ({ ...x, isSelectedTable: false })),
}),
true
);
}
}}
> >
{#each references || [] as ref (ref.designerId)} {#each references || [] as ref (ref.designerId)}
<svelte:component <svelte:component
@@ -623,6 +648,7 @@
{table} {table}
onChangeTable={changeTable} onChangeTable={changeTable}
onBringToFront={bringToFront} onBringToFront={bringToFront}
onSelectTable={selectTable}
onRemoveTable={removeTable} onRemoveTable={removeTable}
{domCanvas} {domCanvas}
designer={value} designer={value}

View File

@@ -12,6 +12,7 @@
export let table; export let table;
export let onChangeTable; export let onChangeTable;
export let onBringToFront; export let onBringToFront;
export let onSelectTable;
export let onRemoveTable; export let onRemoveTable;
export let onAddAllReferences; export let onAddAllReferences;
export let onCreateReference; export let onCreateReference;
@@ -108,9 +109,18 @@
<div <div
class="wrapper" class="wrapper"
class:canSelectColumns={settings?.canSelectColumns} class:canSelectColumns={settings?.canSelectColumns}
class:isSelectedTable={table?.isSelectedTable}
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={e => {
if (e.button == 0) {
e.stopPropagation();
onBringToFront(table);
if (settings?.canSelectTables && !table?.isSelectedTable) {
onSelectTable(table, e.ctrlKey);
}
}
}}
use:contextMenu={settings?.canSelectColumns ? '__no_menu' : createMenu} use:contextMenu={settings?.canSelectColumns ? '__no_menu' : createMenu}
use:moveDrag={settings?.canSelectColumns ? null : [handleMoveStart, handleMove, handleMoveEnd]} use:moveDrag={settings?.canSelectColumns ? null : [handleMoveStart, handleMove, handleMoveEnd]}
> >
@@ -146,6 +156,12 @@
/> />
{/each} {/each}
</div> </div>
{#if table?.isSelectedTable}
<div class='selection-marker lt' />
<div class='selection-marker rt' />
<div class='selection-marker lb' />
<div class='selection-marker rb' />
{/if}
</div> </div>
<style> <style>
@@ -154,7 +170,35 @@
background-color: var(--theme-bg-0); background-color: var(--theme-bg-0);
border: 1px solid var(--theme-border); border: 1px solid var(--theme-border);
} }
/* :global(.dbgate-screen) .isSelectedTable {
border: 3px solid var(--theme-border);
} */
.selection-marker {
display: none;
position: absolute;
width: 6px;
height: 6px;
background: var(--theme-font-1);
}
.selection-marker.lt {
left: -3px;
top: -3px;
}
.selection-marker.rt {
right: -3px;
top: -3px;
}
.selection-marker.lb {
left: -3px;
bottom: -3px;
}
.selection-marker.rb {
right: -3px;
bottom: -3px;
}
:global(.dbgate-screen) .selection-marker {
display: block;
}
:global(.dbgate-screen) .wrapper:not(.canSelectColumns) { :global(.dbgate-screen) .wrapper:not(.canSelectColumns) {
cursor: pointer; cursor: pointer;
} }
@@ -170,6 +214,7 @@
:global(.dbgate-screen) .header { :global(.dbgate-screen) .header {
cursor: pointer; cursor: pointer;
} }
.header.isTable { .header.isTable {
background: var(--theme-bg-blue); background: var(--theme-bg-blue);
} }

View File

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

View File

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