mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-27 06:46:00 +00:00
designer - selecting tables
This commit is contained in:
@@ -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}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
canArrange: true,
|
canArrange: true,
|
||||||
canExport: true,
|
canExport: true,
|
||||||
canSelectColumns: false,
|
canSelectColumns: false,
|
||||||
|
canSelectTables: true,
|
||||||
}}
|
}}
|
||||||
referenceComponent={DiagramDesignerReference}
|
referenceComponent={DiagramDesignerReference}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
canArrange: false,
|
canArrange: false,
|
||||||
canExport: false,
|
canExport: false,
|
||||||
canSelectColumns: true,
|
canSelectColumns: true,
|
||||||
|
canSelectTables: false,
|
||||||
}}
|
}}
|
||||||
referenceComponent={QueryDesignerReference}
|
referenceComponent={QueryDesignerReference}
|
||||||
/>
|
/>
|
||||||
|
|||||||
Reference in New Issue
Block a user