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

View File

@@ -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, node.designerId == (this.designerId || nodeCfg.designerId)
isNodeChecked: value == null ? !node.isNodeChecked : value, ? {
} ...node,
: node isNodeChecked: value == null ? !node.isNodeChecked : value,
), }
})); : 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, {
nodes: [...cfg.nodes, nodeConfig], ...cfg,
references: [...cfg.references, refConfig], nodes: [...cfg.nodes, nodeConfig],
}; 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(
) )
) )
); );
// const circularColumns = columnNodes.filter(x => x.isCircular).map(x => x.columnName);
// const defaultColumns = getPerspectiveDefaultColumns(table, db, circularColumns); // if (!columnNodes.find(x => x.isChecked)) {
// for (const node of columnNodes) { // const circularColumns = columnNodes.filter(x => x.isCircular).map(x => x.columnName);
// node.defaultChecked = defaultColumns.includes(node.columnName); // const defaultColumns = getPerspectiveDefaultColumns(table, db, circularColumns);
// for (const node of columnNodes) {
// if (defaultColumns.includes(node.columnName)) {
// no
// }
// }
// } // }
const res = []; const res = [];

View File

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