SYNC: show diagram table counts WIP

This commit is contained in:
SPRINX0\prochazka
2025-03-31 17:03:40 +02:00
committed by Diflow
parent f2570c97f3
commit 6467db4a21
3 changed files with 54 additions and 6 deletions

View File

@@ -1,6 +1,7 @@
import { DatabaseInfo, TableInfo } from 'dbgate-types';
import { extendDatabaseInfo } from './structureTools';
import _sortBy from 'lodash/sortBy';
import { filterName } from './filterName';
function tableWeight(table: TableInfo, maxRowcount?: number) {
let weight = 0;
@@ -18,9 +19,23 @@ function tableWeight(table: TableInfo, maxRowcount?: number) {
if (maxRowcount) return weight;
}
export function chooseTopTables(tables: TableInfo[], count: number) {
export function chooseTopTables(tables: TableInfo[], count: number, tableFilter: string, omitTablesFilter: string) {
const filteredTables = tables.filter(table => {
if (tableFilter) {
if (!filterName(tableFilter, table?.pureName)) return false;
}
if (omitTablesFilter) {
if (filterName(omitTablesFilter, table?.pureName)) return false;
}
return true;
});
if (!(count > 0)) {
return filteredTables;
}
const dbinfo: DatabaseInfo = {
tables,
tables: filteredTables,
} as DatabaseInfo;
const extended = extendDatabaseInfo(dbinfo);

View File

@@ -62,6 +62,7 @@
export let menu;
export let settings;
export let referenceComponent;
export let onReportCounts = undefined;
export const activator = createActivator('Designer', true);
@@ -81,8 +82,13 @@
$: dbInfoExtended = $dbInfo ? extendDatabaseInfoFromApps($dbInfo, $apps) : null;
$: tables =
(value?.style?.topTables > 0 && value?.tables
? chooseTopTables(value?.tables, value?.style?.topTables)
(value?.tables
? chooseTopTables(
value?.tables,
value?.style?.topTables,
value?.style?.tableFilter,
value?.style?.omitTablesFilter
)
: value?.tables) || ([] as any[]);
$: references = (value?.references || [])?.filter(
ref => tables.find(x => x.designerId == ref.sourceId) && tables.find(x => x.designerId == ref.targetId)
@@ -164,7 +170,7 @@
if (settings?.useDatabaseReferences) {
references = [];
for (const table of newTables) {
for (const fk of table.foreignKeys) {
for (const fk of table.foreignKeys || []) {
const dst = newTables.find(x => x.pureName == fk.refTableName && x.schemaName == fk.refSchemaName);
if (!dst) continue;
references.push({
@@ -922,6 +928,28 @@
}
oldZoomKoefRef.set(value?.style?.zoomKoef);
}
// $: console.log('DESIGNER VALUE', value);
// $: console.log('TABLES ARRAY', tables);
// $: {
// if (value?.tables?.find(x => !x)) {
// console.log('**** INCORRECT DESIGNER VALUE**** ', value);
// }
// }
// $: {
// if (value?.tables?.length < 100) {
// console.log('**** SMALL TABLES**** ', value);
// }
// }
// $: if (onReportCounts) {
// onReportCounts({
// all: value?.tables?.length ?? 0,
// filtered: tables?.length ?? 0,
// });
// }
</script>
<div

View File

@@ -37,6 +37,8 @@
export let conid;
export let database;
let tableCounts = {};
export const activator = createActivator('DiagramTab', true);
$: setEditorData($modelState.value);
@@ -129,6 +131,9 @@
onChange={handleChange}
menu={createMenu}
columnFilter={$styleStore.columnFilter}
onReportCounts={counts => {
tableCounts = counts;
}}
/>
</svelte:fragment>
<svelte:fragment slot="2">
@@ -142,7 +147,7 @@
}}
>
<WidgetsInnerContainer skipDefineWidth>
<DiagramSettings values={styleStore} />
<DiagramSettings values={styleStore} {tableCounts} />
</WidgetsInnerContainer>
</WidgetColumnBarItem>
</WidgetColumnBar>