diagram ctx menu improved

This commit is contained in:
Jan Prochazka
2022-01-20 14:43:19 +01:00
parent a0d7ade863
commit 53441d3e62
2 changed files with 36 additions and 21 deletions

View File

@@ -71,6 +71,8 @@
$: tables = value?.tables as any[]; $: tables = value?.tables as any[];
$: references = value?.references as any[]; $: references = value?.references as any[];
$: isMultipleTableSelection = tables.filter(x => x.isSelectedTable).length >= 2;
const tableRefs = {}; const tableRefs = {};
const referenceRefs = {}; const referenceRefs = {};
$: domTables = _.pickBy(_.mapValues(tableRefs, (tbl: any) => tbl?.getDomTable())); $: domTables = _.pickBy(_.mapValues(tableRefs, (tbl: any) => tbl?.getDomTable()));
@@ -205,14 +207,22 @@
}; };
const removeTable = table => { const removeTable = table => {
callChange(current => ({ if (isMultipleTableSelection && settings?.useDatabaseReferences && settings?.canSelectTables) {
...current, callChange(current => ({
tables: (current.tables || []).filter(x => x.designerId != table.designerId), ...current,
references: (current.references || []).filter( tables: (current.tables || []).filter(x => !x.isSelectedTable),
x => x.sourceId != table.designerId && x.targetId != table.designerId }));
), updateFromDbInfo();
columns: (current.columns || []).filter(x => x.designerId != table.designerId), } else {
})); callChange(current => ({
...current,
tables: (current.tables || []).filter(x => x.designerId != table.designerId),
references: (current.references || []).filter(
x => x.sourceId != table.designerId && x.targetId != table.designerId
),
columns: (current.columns || []).filter(x => x.designerId != table.designerId),
}));
}
}; };
const changeReference = ref => { const changeReference = ref => {
@@ -753,6 +763,7 @@
{table} {table}
{conid} {conid}
{database} {database}
{isMultipleTableSelection}
onChangeTable={changeTable} onChangeTable={changeTable}
onBringToFront={bringToFront} onBringToFront={bringToFront}
onSelectTable={selectTable} onSelectTable={selectTable}

View File

@@ -26,6 +26,7 @@
export let onSelectColumn; export let onSelectColumn;
export let onChangeColumn; export let onChangeColumn;
export let onChangeTableColor; export let onChangeTableColor;
export let isMultipleTableSelection;
export let onMoveStart; export let onMoveStart;
export let onMove; export let onMove;
@@ -143,20 +144,23 @@
return [ return [
{ text: 'Remove', onClick: () => onRemoveTable({ designerId }) }, { text: 'Remove', onClick: () => onRemoveTable({ designerId }) },
{ divider: true }, { divider: true },
settings?.allowTableAlias && [ settings?.allowTableAlias &&
{ text: 'Set table alias', onClick: handleSetTableAlias }, !isMultipleTableSelection && [
alias && { { text: 'Set table alias', onClick: handleSetTableAlias },
text: 'Remove table alias', alias && {
onClick: () => text: 'Remove table alias',
onChangeTable({ onClick: () =>
...table, onChangeTable({
alias: null, ...table,
}), alias: null,
}, }),
], },
settings?.allowAddAllReferences && { text: 'Add references', onClick: () => onAddAllReferences(table) }, ],
settings?.allowAddAllReferences &&
!isMultipleTableSelection && { text: 'Add references', onClick: () => onAddAllReferences(table) },
settings?.allowChangeColor && { text: 'Change color', onClick: () => onChangeTableColor(table) }, settings?.allowChangeColor && { text: 'Change color', onClick: () => onChangeTableColor(table) },
settings?.appendTableSystemMenu && [{ divider: true }, createDatabaseObjectMenu({ ...table, conid, database })], settings?.appendTableSystemMenu &&
!isMultipleTableSelection && [{ divider: true }, createDatabaseObjectMenu({ ...table, conid, database })],
]; ];
} }
</script> </script>