ensure node config

This commit is contained in:
Jan Prochazka
2022-08-27 19:17:49 +02:00
parent 80faf0fd68
commit 24923db199
3 changed files with 44 additions and 34 deletions

View File

@@ -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: [],

View File

@@ -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 = [];

View File

@@ -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');
}