mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-28 08:26:29 +00:00
ensure node config
This commit is contained in:
@@ -116,6 +116,7 @@ export function createPerspectiveNodeConfig(name: { schemaName?: string; pureNam
|
|||||||
|
|
||||||
export function createPerspectiveConfig(rootObject: { schemaName?: string; pureName: string }): PerspectiveConfig {
|
export function createPerspectiveConfig(rootObject: { schemaName?: string; pureName: string }): PerspectiveConfig {
|
||||||
const rootNode = createPerspectiveNodeConfig(rootObject);
|
const rootNode = createPerspectiveNodeConfig(rootObject);
|
||||||
|
rootNode.isNodeChecked = true;
|
||||||
return {
|
return {
|
||||||
nodes: [rootNode],
|
nodes: [rootNode],
|
||||||
references: [],
|
references: [],
|
||||||
|
|||||||
@@ -195,25 +195,24 @@ export abstract class PerspectiveTreeNode {
|
|||||||
|
|
||||||
toggleChecked(value?: boolean) {
|
toggleChecked(value?: boolean) {
|
||||||
this.includeInNodeSet('checkedColumns', value == null ? !this.isChecked : value);
|
this.includeInNodeSet('checkedColumns', value == null ? !this.isChecked : value);
|
||||||
// if (this.defaultChecked) {
|
|
||||||
// this.includeInNodeSet('uncheckedColumns', value == null ? this.isChecked : value);
|
|
||||||
// } else {
|
|
||||||
// this.includeInNodeSet('checkedColumns', value == null ? !this.isChecked : value);
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
toggleCheckedNode(value?: boolean) {
|
toggleCheckedNode(value?: boolean) {
|
||||||
this.setConfig(cfg => ({
|
this.setConfig(cfg => {
|
||||||
...cfg,
|
const [cfgChanged, nodeCfg] = this.ensureNodeConfig(cfg);
|
||||||
nodes: cfg.nodes.map(node =>
|
const res = {
|
||||||
node.designerId == this.designerId
|
...cfgChanged,
|
||||||
|
nodes: cfgChanged.nodes.map(node =>
|
||||||
|
node.designerId == (this.designerId || nodeCfg.designerId)
|
||||||
? {
|
? {
|
||||||
...node,
|
...node,
|
||||||
isNodeChecked: value == null ? !node.isNodeChecked : value,
|
isNodeChecked: value == null ? !node.isNodeChecked : value,
|
||||||
}
|
}
|
||||||
: node
|
: node
|
||||||
),
|
),
|
||||||
}));
|
};
|
||||||
|
return res;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
toggleSecondaryChecked(value?: boolean) {}
|
toggleSecondaryChecked(value?: boolean) {}
|
||||||
@@ -222,7 +221,7 @@ export abstract class PerspectiveTreeNode {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
ensureNodeConfig(cfg: PerspectiveConfig): PerspectiveConfig {
|
ensureNodeConfig(cfg: PerspectiveConfig): [PerspectiveConfig, PerspectiveNodeConfig] {
|
||||||
let node = cfg.nodes.find(x => x.designerId == this.designerId);
|
let node = cfg.nodes.find(x => x.designerId == this.designerId);
|
||||||
if (!node) {
|
if (!node) {
|
||||||
const nodeConfig: PerspectiveNodeConfig = {
|
const nodeConfig: PerspectiveNodeConfig = {
|
||||||
@@ -236,13 +235,16 @@ export abstract class PerspectiveTreeNode {
|
|||||||
isAutoGenerated: true,
|
isAutoGenerated: true,
|
||||||
columns: this.createReferenceConfigColumns(),
|
columns: this.createReferenceConfigColumns(),
|
||||||
};
|
};
|
||||||
return {
|
return [
|
||||||
|
{
|
||||||
...cfg,
|
...cfg,
|
||||||
nodes: [...cfg.nodes, nodeConfig],
|
nodes: [...cfg.nodes, nodeConfig],
|
||||||
references: [...cfg.references, refConfig],
|
references: [...cfg.references, refConfig],
|
||||||
};
|
},
|
||||||
|
nodeConfig,
|
||||||
|
];
|
||||||
}
|
}
|
||||||
return cfg;
|
return [cfg, null];
|
||||||
}
|
}
|
||||||
|
|
||||||
includeInNodeSet(field: 'expandedColumns' | 'uncheckedColumns' | 'checkedColumns', isIncluded: boolean) {
|
includeInNodeSet(field: 'expandedColumns' | 'uncheckedColumns' | 'checkedColumns', isIncluded: boolean) {
|
||||||
@@ -252,14 +254,13 @@ export abstract class PerspectiveTreeNode {
|
|||||||
[field]: isIncluded ? [...(n[field] || []), this.codeName] : (n[field] || []).filter(x => x != this.codeName),
|
[field]: isIncluded ? [...(n[field] || []), this.codeName] : (n[field] || []).filter(x => x != this.codeName),
|
||||||
});
|
});
|
||||||
|
|
||||||
cfg = this.parentNode?.ensureNodeConfig(cfg);
|
const [cfgChanged, nodeCfg] = this.parentNode?.ensureNodeConfig(cfg);
|
||||||
if (isIncluded && field == 'expandedColumns') {
|
|
||||||
cfg = this.ensureNodeConfig(cfg);
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
...cfg,
|
...cfgChanged,
|
||||||
nodes: cfg.nodes.map(n => (n.designerId == this.parentNode?.designerId ? changedFields(n) : n)),
|
nodes: cfgChanged.nodes.map(n =>
|
||||||
|
n.designerId == (this.parentNode?.designerId || nodeCfg?.designerId) ? changedFields(n) : n
|
||||||
|
),
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -1063,10 +1064,15 @@ export function getTableChildPerspectiveNodes(
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// if (!columnNodes.find(x => x.isChecked)) {
|
||||||
// const circularColumns = columnNodes.filter(x => x.isCircular).map(x => x.columnName);
|
// const circularColumns = columnNodes.filter(x => x.isCircular).map(x => x.columnName);
|
||||||
// const defaultColumns = getPerspectiveDefaultColumns(table, db, circularColumns);
|
// const defaultColumns = getPerspectiveDefaultColumns(table, db, circularColumns);
|
||||||
// for (const node of columnNodes) {
|
// for (const node of columnNodes) {
|
||||||
// node.defaultChecked = defaultColumns.includes(node.columnName);
|
// if (defaultColumns.includes(node.columnName)) {
|
||||||
|
// no
|
||||||
|
// }
|
||||||
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
const res = [];
|
const res = [];
|
||||||
|
|||||||
@@ -83,13 +83,16 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
res.isArranged = isArranged;
|
res.isArranged = isArranged;
|
||||||
|
if (!res.nodes.find(x => x.designerId == res.rootDesignerId)) {
|
||||||
|
res.rootDesignerId = res.nodes[0]?.designerId;
|
||||||
|
}
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async function detectAutoArrange(config: PerspectiveConfig, dbInfos) {
|
async function detectAutoArrange(config: PerspectiveConfig, dbInfos) {
|
||||||
if (config.isArranged && config.nodes.find(x => !x.position)) {
|
if (config.nodes.find(x => !x.position)) {
|
||||||
await tick();
|
await tick();
|
||||||
runCommand('designer.arrange');
|
runCommand('designer.arrange');
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user