mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-25 20:06:00 +00:00
sort references
This commit is contained in:
@@ -13,6 +13,7 @@ import _compact from 'lodash/compact';
|
|||||||
import _uniq from 'lodash/uniq';
|
import _uniq from 'lodash/uniq';
|
||||||
import _flatten from 'lodash/flatten';
|
import _flatten from 'lodash/flatten';
|
||||||
import _uniqBy from 'lodash/uniqBy';
|
import _uniqBy from 'lodash/uniqBy';
|
||||||
|
import _sortBy from 'lodash/sortBy';
|
||||||
import _cloneDeepWith from 'lodash/cloneDeepWith';
|
import _cloneDeepWith from 'lodash/cloneDeepWith';
|
||||||
import {
|
import {
|
||||||
PerspectiveDatabaseConfig,
|
PerspectiveDatabaseConfig,
|
||||||
@@ -524,6 +525,7 @@ export class PerspectiveTableReferenceNode extends PerspectiveTableNode {
|
|||||||
setConfig: ChangePerspectiveConfigFunc,
|
setConfig: ChangePerspectiveConfigFunc,
|
||||||
public dataProvider: PerspectiveDataProvider,
|
public dataProvider: PerspectiveDataProvider,
|
||||||
databaseConfig: PerspectiveDatabaseConfig,
|
databaseConfig: PerspectiveDatabaseConfig,
|
||||||
|
public isMultiple: boolean,
|
||||||
parentNode: PerspectiveTreeNode
|
parentNode: PerspectiveTreeNode
|
||||||
) {
|
) {
|
||||||
super(table, db, config, setConfig, dataProvider, databaseConfig, parentNode);
|
super(table, db, config, setConfig, dataProvider, databaseConfig, parentNode);
|
||||||
@@ -564,6 +566,21 @@ export class PerspectiveTableReferenceNode extends PerspectiveTableNode {
|
|||||||
get columnTitle() {
|
get columnTitle() {
|
||||||
return this.table.pureName;
|
return this.table.pureName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get title() {
|
||||||
|
if (this.isMultiple) {
|
||||||
|
return `${super.title} (${this.foreignKey.columns.map(x => x.columnName).join(', ')})`;
|
||||||
|
}
|
||||||
|
return super.title;
|
||||||
|
}
|
||||||
|
|
||||||
|
get codeName() {
|
||||||
|
if (this.isMultiple) {
|
||||||
|
return `${super.codeName}-${this.foreignKey.columns.map(x => x.columnName).join('_')}`;
|
||||||
|
}
|
||||||
|
return super.codeName;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export class PerspectiveCustomJoinTreeNode extends PerspectiveTableNode {
|
export class PerspectiveCustomJoinTreeNode extends PerspectiveTableNode {
|
||||||
@@ -669,23 +686,41 @@ export function getTableChildPerspectiveNodes(
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
const dependencies = [];
|
||||||
if (db && (table as TableInfo)?.dependencies) {
|
if (db && (table as TableInfo)?.dependencies) {
|
||||||
for (const fk of (table as TableInfo)?.dependencies) {
|
for (const fk of (table as TableInfo)?.dependencies) {
|
||||||
const tbl = db.tables.find(x => x.pureName == fk.pureName && x.schemaName == fk.schemaName);
|
const tbl = db.tables.find(x => x.pureName == fk.pureName && x.schemaName == fk.schemaName);
|
||||||
if (tbl)
|
if (tbl) {
|
||||||
res.push(
|
const isMultiple =
|
||||||
new PerspectiveTableReferenceNode(fk, tbl, db, config, setConfig, dataProvider, databaseConfig, parentColumn)
|
(table as TableInfo)?.dependencies.filter(x => x.pureName == fk.pureName && x.schemaName == fk.schemaName)
|
||||||
|
.length >= 2;
|
||||||
|
dependencies.push(
|
||||||
|
new PerspectiveTableReferenceNode(
|
||||||
|
fk,
|
||||||
|
tbl,
|
||||||
|
db,
|
||||||
|
config,
|
||||||
|
setConfig,
|
||||||
|
dataProvider,
|
||||||
|
databaseConfig,
|
||||||
|
isMultiple,
|
||||||
|
parentColumn
|
||||||
|
)
|
||||||
);
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
res.push(..._sortBy(dependencies, 'title'));
|
||||||
|
|
||||||
|
const customs = [];
|
||||||
for (const join of config.customJoins || []) {
|
for (const join of config.customJoins || []) {
|
||||||
if (join.baseUniqueName == parentColumn.uniqueName) {
|
if (join.baseUniqueName == parentColumn.uniqueName) {
|
||||||
res.push(
|
customs.push(
|
||||||
new PerspectiveCustomJoinTreeNode(join, db, config, setConfig, dataProvider, databaseConfig, parentColumn)
|
new PerspectiveCustomJoinTreeNode(join, db, config, setConfig, dataProvider, databaseConfig, parentColumn)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
res.push(..._sortBy(customs, 'title'));
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user