mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-05-01 20:13:57 +00:00
node checked & column checked distuingish
This commit is contained in:
@@ -125,21 +125,14 @@ export class PerspectiveDisplay {
|
|||||||
|
|
||||||
fillColumns(children: PerspectiveTreeNode[], parentNodes: PerspectiveTreeNode[]) {
|
fillColumns(children: PerspectiveTreeNode[], parentNodes: PerspectiveTreeNode[]) {
|
||||||
for (const child of children) {
|
for (const child of children) {
|
||||||
if (child.isChecked) {
|
if (child.isCheckedColumn || child.isCheckedNode) {
|
||||||
this.processColumn(child, parentNodes);
|
this.processColumn(child, parentNodes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
processColumn(node: PerspectiveTreeNode, parentNodes: PerspectiveTreeNode[]) {
|
processColumn(node: PerspectiveTreeNode, parentNodes: PerspectiveTreeNode[]) {
|
||||||
if (node.isExpandable) {
|
if (node.isCheckedColumn) {
|
||||||
const countBefore = this.columns.length;
|
|
||||||
this.fillColumns(node.childNodes, [...parentNodes, node]);
|
|
||||||
|
|
||||||
if (this.columns.length > countBefore) {
|
|
||||||
this.columns[countBefore].colSpanAtLevel[parentNodes.length] = this.columns.length - countBefore;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
const column = new PerspectiveDisplayColumn(this);
|
const column = new PerspectiveDisplayColumn(this);
|
||||||
column.title = node.columnTitle;
|
column.title = node.columnTitle;
|
||||||
column.dataField = node.dataField;
|
column.dataField = node.dataField;
|
||||||
@@ -149,6 +142,15 @@ export class PerspectiveDisplay {
|
|||||||
column.dataNode = node;
|
column.dataNode = node;
|
||||||
this.columns.push(column);
|
this.columns.push(column);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (node.isExpandable && node.isCheckedNode) {
|
||||||
|
const countBefore = this.columns.length;
|
||||||
|
this.fillColumns(node.childNodes, [...parentNodes, node]);
|
||||||
|
|
||||||
|
if (this.columns.length > countBefore) {
|
||||||
|
this.columns[countBefore].colSpanAtLevel[parentNodes.length] = this.columns.length - countBefore;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
findColumnIndexFromNode(node: PerspectiveTreeNode) {
|
findColumnIndexFromNode(node: PerspectiveTreeNode) {
|
||||||
@@ -165,8 +167,8 @@ export class PerspectiveDisplay {
|
|||||||
|
|
||||||
collectRows(sourceRows: any[], nodes: PerspectiveTreeNode[]): CollectedPerspectiveDisplayRow[] {
|
collectRows(sourceRows: any[], nodes: PerspectiveTreeNode[]): CollectedPerspectiveDisplayRow[] {
|
||||||
// console.log('********** COLLECT ROWS', sourceRows);
|
// console.log('********** COLLECT ROWS', sourceRows);
|
||||||
const columnNodes = nodes.filter(x => x.isChecked && !x.isExpandable);
|
const columnNodes = nodes.filter(x => x.isCheckedColumn);
|
||||||
const treeNodes = nodes.filter(x => x.isChecked && x.isExpandable);
|
const treeNodes = nodes.filter(x => x.isCheckedNode);
|
||||||
|
|
||||||
// console.log('columnNodes', columnNodes);
|
// console.log('columnNodes', columnNodes);
|
||||||
// console.log('treeNodes', treeNodes);
|
// console.log('treeNodes', treeNodes);
|
||||||
|
|||||||
@@ -133,12 +133,16 @@ export abstract class PerspectiveTreeNode {
|
|||||||
get isExpanded() {
|
get isExpanded() {
|
||||||
return this.parentNodeConfig?.expandedColumns?.includes(this.codeName);
|
return this.parentNodeConfig?.expandedColumns?.includes(this.codeName);
|
||||||
}
|
}
|
||||||
get isChecked() {
|
get isCheckedColumn() {
|
||||||
if (this.parentNodeConfig?.checkedColumns?.includes(this.codeName)) return true;
|
if (this.parentNodeConfig?.checkedColumns?.includes(this.codeName)) return true;
|
||||||
// if (this.parentNodeConfig?.uncheckedColumns?.includes(this.codeName)) return false;
|
|
||||||
// return this.defaultChecked;
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
get isChecked() {
|
||||||
|
return this.isCheckedColumn;
|
||||||
|
}
|
||||||
|
get isCheckedNode() {
|
||||||
|
return !!this.config.nodes?.find(x => x.designerId == this.designerId)?.isNodeChecked;
|
||||||
|
}
|
||||||
get isSecondaryChecked() {
|
get isSecondaryChecked() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -198,6 +202,20 @@ export abstract class PerspectiveTreeNode {
|
|||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
toggleCheckedNode(value?: boolean) {
|
||||||
|
this.setConfig(cfg => ({
|
||||||
|
...cfg,
|
||||||
|
nodes: cfg.nodes.map(node =>
|
||||||
|
node.designerId == this.designerId
|
||||||
|
? {
|
||||||
|
...node,
|
||||||
|
isNodeChecked: value == null ? !node.isNodeChecked : value,
|
||||||
|
}
|
||||||
|
: node
|
||||||
|
),
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
toggleSecondaryChecked(value?: boolean) {}
|
toggleSecondaryChecked(value?: boolean) {}
|
||||||
|
|
||||||
createReferenceConfigColumns(): PerspectiveReferenceConfig['columns'] {
|
createReferenceConfigColumns(): PerspectiveReferenceConfig['columns'] {
|
||||||
@@ -540,28 +558,18 @@ export class PerspectiveTableColumnNode extends PerspectiveTreeNode {
|
|||||||
}
|
}
|
||||||
|
|
||||||
get isSecondaryChecked() {
|
get isSecondaryChecked() {
|
||||||
return super.isChecked;
|
return super.isCheckedColumn;
|
||||||
}
|
}
|
||||||
get isChecked() {
|
get isChecked() {
|
||||||
if (this.foreignKey) return !!this.config.nodes?.find(x => x.designerId == this.designerId)?.isNodeChecked;
|
if (this.foreignKey) return this.isCheckedNode;
|
||||||
return super.isChecked;
|
return super.isCheckedColumn;
|
||||||
}
|
}
|
||||||
get secondaryCheckable() {
|
get secondaryCheckable() {
|
||||||
return !!this.foreignKey;
|
return !!this.foreignKey;
|
||||||
}
|
}
|
||||||
toggleChecked(value?: boolean) {
|
toggleChecked(value?: boolean) {
|
||||||
if (this.foreignKey) {
|
if (this.foreignKey) {
|
||||||
this.setConfig(cfg => ({
|
this.toggleCheckedNode(value);
|
||||||
...cfg,
|
|
||||||
nodes: cfg.nodes.map(node =>
|
|
||||||
node.designerId == this.designerId
|
|
||||||
? {
|
|
||||||
...node,
|
|
||||||
isNodeChecked: value == null ? !node.isNodeChecked : value,
|
|
||||||
}
|
|
||||||
: node
|
|
||||||
),
|
|
||||||
}));
|
|
||||||
} else {
|
} else {
|
||||||
super.toggleChecked(value);
|
super.toggleChecked(value);
|
||||||
}
|
}
|
||||||
@@ -855,6 +863,14 @@ export class PerspectiveTableReferenceNode extends PerspectiveTableNode {
|
|||||||
return super.codeName;
|
return super.codeName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get isChecked() {
|
||||||
|
return this.isCheckedNode;
|
||||||
|
}
|
||||||
|
|
||||||
|
toggleChecked(value?: boolean) {
|
||||||
|
this.toggleCheckedNode(value);
|
||||||
|
}
|
||||||
|
|
||||||
getParentJoinCondition(alias: string, parentAlias: string): Condition[] {
|
getParentJoinCondition(alias: string, parentAlias: string): Condition[] {
|
||||||
if (!this.foreignKey) return [];
|
if (!this.foreignKey) return [];
|
||||||
return this.foreignKey.columns.map(column => {
|
return this.foreignKey.columns.map(column => {
|
||||||
|
|||||||
Reference in New Issue
Block a user