mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-17 22:36:01 +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 {
|
||||
const rootNode = createPerspectiveNodeConfig(rootObject);
|
||||
rootNode.isNodeChecked = true;
|
||||
return {
|
||||
nodes: [rootNode],
|
||||
references: [],
|
||||
|
||||
@@ -195,25 +195,24 @@ export abstract class PerspectiveTreeNode {
|
||||
|
||||
toggleChecked(value?: boolean) {
|
||||
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) {
|
||||
this.setConfig(cfg => ({
|
||||
...cfg,
|
||||
nodes: cfg.nodes.map(node =>
|
||||
node.designerId == this.designerId
|
||||
? {
|
||||
...node,
|
||||
isNodeChecked: value == null ? !node.isNodeChecked : value,
|
||||
}
|
||||
: node
|
||||
),
|
||||
}));
|
||||
this.setConfig(cfg => {
|
||||
const [cfgChanged, nodeCfg] = this.ensureNodeConfig(cfg);
|
||||
const res = {
|
||||
...cfgChanged,
|
||||
nodes: cfgChanged.nodes.map(node =>
|
||||
node.designerId == (this.designerId || nodeCfg.designerId)
|
||||
? {
|
||||
...node,
|
||||
isNodeChecked: value == null ? !node.isNodeChecked : value,
|
||||
}
|
||||
: node
|
||||
),
|
||||
};
|
||||
return res;
|
||||
});
|
||||
}
|
||||
|
||||
toggleSecondaryChecked(value?: boolean) {}
|
||||
@@ -222,7 +221,7 @@ export abstract class PerspectiveTreeNode {
|
||||
return null;
|
||||
}
|
||||
|
||||
ensureNodeConfig(cfg: PerspectiveConfig): PerspectiveConfig {
|
||||
ensureNodeConfig(cfg: PerspectiveConfig): [PerspectiveConfig, PerspectiveNodeConfig] {
|
||||
let node = cfg.nodes.find(x => x.designerId == this.designerId);
|
||||
if (!node) {
|
||||
const nodeConfig: PerspectiveNodeConfig = {
|
||||
@@ -236,13 +235,16 @@ export abstract class PerspectiveTreeNode {
|
||||
isAutoGenerated: true,
|
||||
columns: this.createReferenceConfigColumns(),
|
||||
};
|
||||
return {
|
||||
...cfg,
|
||||
nodes: [...cfg.nodes, nodeConfig],
|
||||
references: [...cfg.references, refConfig],
|
||||
};
|
||||
return [
|
||||
{
|
||||
...cfg,
|
||||
nodes: [...cfg.nodes, nodeConfig],
|
||||
references: [...cfg.references, refConfig],
|
||||
},
|
||||
nodeConfig,
|
||||
];
|
||||
}
|
||||
return cfg;
|
||||
return [cfg, null];
|
||||
}
|
||||
|
||||
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),
|
||||
});
|
||||
|
||||
cfg = this.parentNode?.ensureNodeConfig(cfg);
|
||||
if (isIncluded && field == 'expandedColumns') {
|
||||
cfg = this.ensureNodeConfig(cfg);
|
||||
}
|
||||
const [cfgChanged, nodeCfg] = this.parentNode?.ensureNodeConfig(cfg);
|
||||
|
||||
return {
|
||||
...cfg,
|
||||
nodes: cfg.nodes.map(n => (n.designerId == this.parentNode?.designerId ? changedFields(n) : n)),
|
||||
...cfgChanged,
|
||||
nodes: cfgChanged.nodes.map(n =>
|
||||
n.designerId == (this.parentNode?.designerId || nodeCfg?.designerId) ? changedFields(n) : n
|
||||
),
|
||||
};
|
||||
});
|
||||
}
|
||||
@@ -1063,10 +1064,15 @@ export function getTableChildPerspectiveNodes(
|
||||
)
|
||||
)
|
||||
);
|
||||
// const circularColumns = columnNodes.filter(x => x.isCircular).map(x => x.columnName);
|
||||
// const defaultColumns = getPerspectiveDefaultColumns(table, db, circularColumns);
|
||||
// for (const node of columnNodes) {
|
||||
// node.defaultChecked = defaultColumns.includes(node.columnName);
|
||||
|
||||
// if (!columnNodes.find(x => x.isChecked)) {
|
||||
// const circularColumns = columnNodes.filter(x => x.isCircular).map(x => x.columnName);
|
||||
// const defaultColumns = getPerspectiveDefaultColumns(table, db, circularColumns);
|
||||
// for (const node of columnNodes) {
|
||||
// if (defaultColumns.includes(node.columnName)) {
|
||||
// no
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
const res = [];
|
||||
|
||||
@@ -83,13 +83,16 @@
|
||||
}
|
||||
|
||||
res.isArranged = isArranged;
|
||||
if (!res.nodes.find(x => x.designerId == res.rootDesignerId)) {
|
||||
res.rootDesignerId = res.nodes[0]?.designerId;
|
||||
}
|
||||
|
||||
return res;
|
||||
});
|
||||
}
|
||||
|
||||
async function detectAutoArrange(config: PerspectiveConfig, dbInfos) {
|
||||
if (config.isArranged && config.nodes.find(x => !x.position)) {
|
||||
if (config.nodes.find(x => !x.position)) {
|
||||
await tick();
|
||||
runCommand('designer.arrange');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user