feat(diagram): filter columns

This commit is contained in:
Jan Prochazka
2022-01-20 15:15:49 +01:00
parent 8ad8d3f8cd
commit 5eed81cf9f
2 changed files with 52 additions and 1 deletions

View File

@@ -732,6 +732,32 @@
},
],
},
{
text: `Columns - ${_.startCase(value?.style?.filterColumns || 'all')}`,
submenu: [
{
text: 'All',
onClick: changeStyleFunc('filterColumns', null),
},
{
text: 'Primary Key',
onClick: changeStyleFunc('filterColumns', 'primaryKey'),
},
{
text: 'All Keys',
onClick: changeStyleFunc('filterColumns', 'allKeys'),
},
{
text: 'Not Null',
onClick: changeStyleFunc('filterColumns', 'notNull'),
},
{
text: 'Keys And Not Null',
onClick: changeStyleFunc('filterColumns', 'keysAndNotNull'),
},
],
},
],
];
}

View File

@@ -1,5 +1,6 @@
<script lang="ts">
import { presetDarkPalettes, presetPalettes } from '@ant-design/colors';
import { computeDbDiffRows } from 'dbgate-tools';
import { tick } from 'svelte';
import { createDatabaseObjectMenu } from '../appobj/DatabaseObjectAppObject.svelte';
@@ -54,7 +55,7 @@
$: pureName = table?.pureName;
$: alias = table?.alias;
$: columns = table?.columns as any[];
$: columns = (table?.columns as any[]).filter(x => shouldShowColumn(table, x, designer?.style));
$: designerId = table?.designerId;
$: objectTypeField = table?.objectTypeField;
$: left = table?.left;
@@ -83,6 +84,30 @@
return res;
}
function shouldShowColumn(table, column, style) {
if (!settings?.chooseColumnProperties) {
return true;
}
switch (style?.filterColumns || 'all') {
case 'primaryKey':
return table?.primaryKey?.columns?.find(x => x.columnName == column?.columnName);
case 'allKeys':
return (
table?.primaryKey?.columns?.find(x => x.columnName == column?.columnName) ||
table?.foreignKeys?.find(fk => fk.columns.find(x => x.columnName == column?.columnName))
);
case 'keysAndNotNull':
return (
column?.notNull ||
table?.primaryKey?.columns?.find(x => x.columnName == column?.columnName) ||
table?.foreignKeys?.find(fk => fk.columns.find(x => x.columnName == column?.columnName))
);
case 'notNull':
return column?.notNull;
}
return true;
}
function handleMoveStart() {
if (settings?.canSelectTables) {
onMoveStart();