fixed multi-db perspectives

This commit is contained in:
Jan Prochazka
2023-02-13 20:35:10 +01:00
parent aceffd5681
commit 60bd3c157e

View File

@@ -78,7 +78,7 @@ export abstract class PerspectiveTreeNode {
public setConfig: ChangePerspectiveConfigFunc, public setConfig: ChangePerspectiveConfigFunc,
public parentNode: PerspectiveTreeNode, public parentNode: PerspectiveTreeNode,
public dataProvider: PerspectiveDataProvider, public dataProvider: PerspectiveDataProvider,
public databaseConfig: PerspectiveDatabaseConfig, public defaultDatabaseConfig: PerspectiveDatabaseConfig,
public designerId: string public designerId: string
) { ) {
this.nodeConfig = config.nodes.find(x => x.designerId == designerId); this.nodeConfig = config.nodes.find(x => x.designerId == designerId);
@@ -126,6 +126,12 @@ export abstract class PerspectiveTreeNode {
get engineType(): PerspectiveDatabaseEngineType { get engineType(): PerspectiveDatabaseEngineType {
return null; return null;
} }
get databaseConfig(): PerspectiveDatabaseConfig {
const res = { ...this.defaultDatabaseConfig };
if (this.nodeConfig?.conid) res.conid = this.nodeConfig?.conid;
if (this.nodeConfig?.database) res.database = this.nodeConfig?.database;
return res;
}
abstract getNodeLoadProps(parentRows: any[]): PerspectiveDataLoadProps; abstract getNodeLoadProps(parentRows: any[]): PerspectiveDataLoadProps;
get isRoot() { get isRoot() {
return this.parentNode == null; return this.parentNode == null;
@@ -534,11 +540,11 @@ export class PerspectiveTableColumnNode extends PerspectiveTreeNode {
config: PerspectiveConfig, config: PerspectiveConfig,
setConfig: ChangePerspectiveConfigFunc, setConfig: ChangePerspectiveConfigFunc,
dataProvider: PerspectiveDataProvider, dataProvider: PerspectiveDataProvider,
databaseConfig: PerspectiveDatabaseConfig, defaultDatabaseConfig: PerspectiveDatabaseConfig,
parentNode: PerspectiveTreeNode, parentNode: PerspectiveTreeNode,
designerId: string designerId: string
) { ) {
super(dbs, config, setConfig, parentNode, dataProvider, databaseConfig, designerId); super(dbs, config, setConfig, parentNode, dataProvider, defaultDatabaseConfig, designerId);
this.isTable = !!this.db?.tables?.find(x => x.schemaName == table.schemaName && x.pureName == table.pureName); this.isTable = !!this.db?.tables?.find(x => x.schemaName == table.schemaName && x.pureName == table.pureName);
this.isView = !!this.db?.views?.find(x => x.schemaName == table.schemaName && x.pureName == table.pureName); this.isView = !!this.db?.views?.find(x => x.schemaName == table.schemaName && x.pureName == table.pureName);
@@ -690,7 +696,7 @@ export class PerspectiveTableColumnNode extends PerspectiveTreeNode {
this.config, this.config,
this.setConfig, this.setConfig,
this.dataProvider, this.dataProvider,
this.databaseConfig, this.defaultDatabaseConfig,
this this
); );
} }
@@ -768,11 +774,11 @@ export class PerspectivePatternColumnNode extends PerspectiveTreeNode {
config: PerspectiveConfig, config: PerspectiveConfig,
setConfig: ChangePerspectiveConfigFunc, setConfig: ChangePerspectiveConfigFunc,
dataProvider: PerspectiveDataProvider, dataProvider: PerspectiveDataProvider,
databaseConfig: PerspectiveDatabaseConfig, defaultDatabaseConfig: PerspectiveDatabaseConfig,
parentNode: PerspectiveTreeNode, parentNode: PerspectiveTreeNode,
designerId: string designerId: string
) { ) {
super(dbs, config, setConfig, parentNode, dataProvider, databaseConfig, designerId); super(dbs, config, setConfig, parentNode, dataProvider, defaultDatabaseConfig, designerId);
this.parentNodeConfig = this.tableNodeOrParent?.nodeConfig; this.parentNodeConfig = this.tableNodeOrParent?.nodeConfig;
// console.log('PATTERN COLUMN', column); // console.log('PATTERN COLUMN', column);
} }
@@ -904,7 +910,7 @@ export class PerspectivePatternColumnNode extends PerspectiveTreeNode {
this.config, this.config,
this.setConfig, this.setConfig,
this.dataProvider, this.dataProvider,
this.databaseConfig, this.defaultDatabaseConfig,
this, this,
null null
) )
@@ -951,7 +957,7 @@ export class PerspectivePatternColumnNode extends PerspectiveTreeNode {
} }
// console.log('CP2'); // console.log('CP2');
const newConfig = { ...this.databaseConfig }; const newConfig: PerspectiveDatabaseConfig = { ...this.defaultDatabaseConfig };
if (node.conid) newConfig.conid = node.conid; if (node.conid) newConfig.conid = node.conid;
if (node.database) newConfig.database = node.database; if (node.database) newConfig.database = node.database;
const db = this.dbs?.[newConfig.conid]?.[newConfig.database]; const db = this.dbs?.[newConfig.conid]?.[newConfig.database];
@@ -983,7 +989,7 @@ export class PerspectivePatternColumnNode extends PerspectiveTreeNode {
this.config, this.config,
this.setConfig, this.setConfig,
this.dataProvider, this.dataProvider,
newConfig, this.defaultDatabaseConfig,
this, this,
node.designerId node.designerId
) )
@@ -1073,11 +1079,11 @@ export class PerspectiveTableNode extends PerspectiveTreeNode {
config: PerspectiveConfig, config: PerspectiveConfig,
setConfig: ChangePerspectiveConfigFunc, setConfig: ChangePerspectiveConfigFunc,
public dataProvider: PerspectiveDataProvider, public dataProvider: PerspectiveDataProvider,
databaseConfig: PerspectiveDatabaseConfig, defaultDatabaseConfig: PerspectiveDatabaseConfig,
parentNode: PerspectiveTreeNode, parentNode: PerspectiveTreeNode,
designerId: string designerId: string
) { ) {
super(dbs, config, setConfig, parentNode, dataProvider, databaseConfig, designerId); super(dbs, config, setConfig, parentNode, dataProvider, defaultDatabaseConfig, designerId);
} }
get engineType(): PerspectiveDatabaseEngineType { get engineType(): PerspectiveDatabaseEngineType {
@@ -1118,7 +1124,7 @@ export class PerspectiveTableNode extends PerspectiveTreeNode {
this.config, this.config,
this.setConfig, this.setConfig,
this.dataProvider, this.dataProvider,
this.databaseConfig, this.defaultDatabaseConfig,
this this
); );
} }
@@ -1160,12 +1166,12 @@ export class PerspectiveTableReferenceNode extends PerspectiveTableNode {
config: PerspectiveConfig, config: PerspectiveConfig,
setConfig: ChangePerspectiveConfigFunc, setConfig: ChangePerspectiveConfigFunc,
public dataProvider: PerspectiveDataProvider, public dataProvider: PerspectiveDataProvider,
databaseConfig: PerspectiveDatabaseConfig, defaultDatabaseConfig: PerspectiveDatabaseConfig,
public isMultiple: boolean, public isMultiple: boolean,
parentNode: PerspectiveTreeNode, parentNode: PerspectiveTreeNode,
designerId: string designerId: string
) { ) {
super(table, dbs, config, setConfig, dataProvider, databaseConfig, parentNode, designerId); super(table, dbs, config, setConfig, dataProvider, defaultDatabaseConfig, parentNode, designerId);
} }
matchChildRow(parentRow: any, childRow: any): boolean { matchChildRow(parentRow: any, childRow: any): boolean {
@@ -1264,11 +1270,11 @@ export class PerspectiveCustomJoinTreeNode extends PerspectiveTableNode {
config: PerspectiveConfig, config: PerspectiveConfig,
setConfig: ChangePerspectiveConfigFunc, setConfig: ChangePerspectiveConfigFunc,
public dataProvider: PerspectiveDataProvider, public dataProvider: PerspectiveDataProvider,
databaseConfig: PerspectiveDatabaseConfig, defaultDatabaseConfig: PerspectiveDatabaseConfig,
parentNode: PerspectiveTreeNode, parentNode: PerspectiveTreeNode,
designerId: string designerId: string
) { ) {
super(table, dbs, config, setConfig, dataProvider, databaseConfig, parentNode, designerId); super(table, dbs, config, setConfig, dataProvider, defaultDatabaseConfig, parentNode, designerId);
} }
matchChildRow(parentRow: any, childRow: any): boolean { matchChildRow(parentRow: any, childRow: any): boolean {
@@ -1474,7 +1480,7 @@ export function getTableChildPerspectiveNodes(
config: PerspectiveConfig, config: PerspectiveConfig,
setConfig: ChangePerspectiveConfigFunc, setConfig: ChangePerspectiveConfigFunc,
dataProvider: PerspectiveDataProvider, dataProvider: PerspectiveDataProvider,
databaseConfig: PerspectiveDatabaseConfig, defaultDatabaseConfig: PerspectiveDatabaseConfig,
parentNode: PerspectiveTreeNode parentNode: PerspectiveTreeNode
) { ) {
if (!table) return []; if (!table) return [];
@@ -1496,7 +1502,7 @@ export function getTableChildPerspectiveNodes(
config, config,
setConfig, setConfig,
dataProvider, dataProvider,
databaseConfig, defaultDatabaseConfig,
parentNode, parentNode,
designerId designerId
) )
@@ -1507,7 +1513,7 @@ export function getTableChildPerspectiveNodes(
config, config,
setConfig, setConfig,
dataProvider, dataProvider,
databaseConfig, defaultDatabaseConfig,
parentNode, parentNode,
designerId designerId
) )
@@ -1526,7 +1532,7 @@ export function getTableChildPerspectiveNodes(
config, config,
setConfig, setConfig,
dataProvider, dataProvider,
databaseConfig, defaultDatabaseConfig,
parentNode, parentNode,
designerId designerId
) )
@@ -1565,7 +1571,7 @@ export function getTableChildPerspectiveNodes(
config, config,
setConfig, setConfig,
dataProvider, dataProvider,
databaseConfig, defaultDatabaseConfig,
isMultiple, isMultiple,
parentNode, parentNode,
designerId designerId
@@ -1591,7 +1597,7 @@ export function getTableChildPerspectiveNodes(
if (ref.columns.find(x => x.source.includes('::') || x.target.includes('::'))) { if (ref.columns.find(x => x.source.includes('::') || x.target.includes('::'))) {
continue; continue;
} }
const newConfig = { ...databaseConfig }; const newConfig: PerspectiveDatabaseConfig = { ...defaultDatabaseConfig };
if (node.conid) newConfig.conid = node.conid; if (node.conid) newConfig.conid = node.conid;
if (node.database) newConfig.database = node.database; if (node.database) newConfig.database = node.database;
const db = dbs?.[newConfig.conid]?.[newConfig.database]; const db = dbs?.[newConfig.conid]?.[newConfig.database];
@@ -1623,7 +1629,7 @@ export function getTableChildPerspectiveNodes(
config, config,
setConfig, setConfig,
dataProvider, dataProvider,
newConfig, defaultDatabaseConfig,
parentNode, parentNode,
node.designerId node.designerId
) )