diff --git a/packages/datalib/src/PerspectiveDisplay.ts b/packages/datalib/src/PerspectiveDisplay.ts index db3d1eb5a..e5070af50 100644 --- a/packages/datalib/src/PerspectiveDisplay.ts +++ b/packages/datalib/src/PerspectiveDisplay.ts @@ -47,8 +47,8 @@ export class PerspectiveDisplayColumn { return this.parentNodes[level]?.title; } - getParentDataAttributes(level) { - return this.parentNodes[level]?.headerDataAttributes; + getParentTableUniqueName(level) { + return this.parentNodes[level]?.headerTableAttributes ? this.parentNodes[level]?.uniqueName : ''; } // hasParentNode(node: PerspectiveTreeNode) { diff --git a/packages/datalib/src/PerspectiveTreeNode.ts b/packages/datalib/src/PerspectiveTreeNode.ts index 1f6ae0c01..f89915cea 100644 --- a/packages/datalib/src/PerspectiveTreeNode.ts +++ b/packages/datalib/src/PerspectiveTreeNode.ts @@ -70,8 +70,8 @@ export abstract class PerspectiveTreeNode { get fieldName() { return this.codeName; } - get headerDataAttributes() { - return {}; + get headerTableAttributes() { + return null; } get dataField() { return this.codeName; @@ -92,7 +92,7 @@ export abstract class PerspectiveTreeNode { } get uniqueName() { - if (this.parentNode) return `${this.parentNode.uniqueName}.${this.codeName}`; + if (this.parentNode) return `${this.parentNode.uniqueName}::${this.codeName}`; return this.codeName; } get level() { @@ -252,6 +252,21 @@ export abstract class PerspectiveTreeNode { get filterInfo(): PerspectiveFilterColumnInfo { return null; } + + findChildNodeByUniquePath(uniquePath: string[]) { + if (uniquePath.length == 0) { + return this; + } + const child = this.childNodes.find(x => x.codeName == uniquePath[0]); + return child?.findChildNodeByUniquePath(uniquePath.slice(1)); + } + + findNodeByUniqueName(uniqueName: string): PerspectiveTreeNode { + if (!uniqueName) return null; + const uniquePath = uniqueName.split('::'); + if (uniquePath[0] != this.codeName) return null; + return this.findChildNodeByUniquePath(uniquePath.slice(1)); + } } export class PerspectiveTableColumnNode extends PerspectiveTreeNode { @@ -398,7 +413,7 @@ export class PerspectiveTableColumnNode extends PerspectiveTreeNode { return condition; } - get headerDataAttributes() { + get headerTableAttributes() { if (this.foreignKey) { return { schemaName: this.foreignKey.refSchemaName, @@ -474,7 +489,7 @@ export class PerspectiveTableNode extends PerspectiveTreeNode { return this.table; } - get headerDataAttributes() { + get headerTableAttributes() { return { schemaName: this.table.schemaName, pureName: this.table.pureName, diff --git a/packages/web/src/perspectives/PerspectiveFilters.svelte b/packages/web/src/perspectives/PerspectiveFilters.svelte index 559649a16..be717e831 100644 --- a/packages/web/src/perspectives/PerspectiveFilters.svelte +++ b/packages/web/src/perspectives/PerspectiveFilters.svelte @@ -1,5 +1,5 @@