mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-20 00:46:01 +00:00
feat(diagram): filter columns
This commit is contained in:
@@ -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'),
|
||||
},
|
||||
|
||||
],
|
||||
},
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user