mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-28 19:56:00 +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">
|
<script lang="ts">
|
||||||
import { presetDarkPalettes, presetPalettes } from '@ant-design/colors';
|
import { presetDarkPalettes, presetPalettes } from '@ant-design/colors';
|
||||||
|
import { computeDbDiffRows } from 'dbgate-tools';
|
||||||
|
|
||||||
import { tick } from 'svelte';
|
import { tick } from 'svelte';
|
||||||
import { createDatabaseObjectMenu } from '../appobj/DatabaseObjectAppObject.svelte';
|
import { createDatabaseObjectMenu } from '../appobj/DatabaseObjectAppObject.svelte';
|
||||||
@@ -54,7 +55,7 @@
|
|||||||
|
|
||||||
$: pureName = table?.pureName;
|
$: pureName = table?.pureName;
|
||||||
$: alias = table?.alias;
|
$: alias = table?.alias;
|
||||||
$: columns = table?.columns as any[];
|
$: columns = (table?.columns as any[]).filter(x => shouldShowColumn(table, x, designer?.style));
|
||||||
$: designerId = table?.designerId;
|
$: designerId = table?.designerId;
|
||||||
$: objectTypeField = table?.objectTypeField;
|
$: objectTypeField = table?.objectTypeField;
|
||||||
$: left = table?.left;
|
$: left = table?.left;
|
||||||
@@ -83,6 +84,30 @@
|
|||||||
return res;
|
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() {
|
function handleMoveStart() {
|
||||||
if (settings?.canSelectTables) {
|
if (settings?.canSelectTables) {
|
||||||
onMoveStart();
|
onMoveStart();
|
||||||
|
|||||||
Reference in New Issue
Block a user