From a4dc62fd48f8755168b05e57416d6b7affa1e920 Mon Sep 17 00:00:00 2001 From: "Kritagya Bhattarai (CalfMoon)" Date: Tue, 11 Mar 2025 16:30:16 +0545 Subject: [PATCH] refactor(calc): add optimization map as property --- src/main.ts | 36 ++++++++++++------------------------ 1 file changed, 12 insertions(+), 24 deletions(-) diff --git a/src/main.ts b/src/main.ts index 939b51c..c8a3e00 100644 --- a/src/main.ts +++ b/src/main.ts @@ -5,8 +5,12 @@ import SampleSettingTab from "./settings"; export default class NodeFactor extends Plugin { settings: NodeFactorSettings; + + // stops loop when graph isn't open updateLoop: boolean; + // This is a hash map that helps in specifically optimizing the forward tree + treeOptimizeMap: Map = new Map(); async onload() { await this.loadSettings(); this.addSettingTab(new SampleSettingTab(this.app, this)); @@ -28,9 +32,8 @@ export default class NodeFactor extends Plugin { const start = performance.now(); - const treeOptimizeMap: Map = new Map(); nodes.forEach((node) => { - const weight = this.calcNodeWeight(node, treeOptimizeMap); + const weight = this.calcNodeWeight(node); node.weight = weight; }); @@ -43,27 +46,22 @@ export default class NodeFactor extends Plugin { private calcLoop(nodes: ObsidianNode[]) { setTimeout(() => { - const treeOptimizeMap: Map = new Map(); nodes.forEach((node) => { - const weight = this.calcNodeWeight(node, treeOptimizeMap); + const weight = this.calcNodeWeight(node); node.weight = weight; }); if (this.updateLoop) this.calcLoop(nodes); }, 10); } - private calcNodeWeight( - node: ObsidianNode, - treeOptimizeMap: Map, - ): number { + private calcNodeWeight(node: ObsidianNode): number { const settings = this.settings; let weight = 0; weight += Object.keys(node.reverse).length * settings.bwdMultiplier; if (settings.fwdTree) { weight += - this.fwdNodeTreeSize(node, node.id, treeOptimizeMap) * - settings.fwdMultiplier; + this.fwdNodeTreeSize(node, node.id) * settings.fwdMultiplier; } else { weight += Object.keys(node.forward).length * settings.fwdMultiplier; } @@ -82,16 +80,10 @@ export default class NodeFactor extends Plugin { return file.stat.size; } - private fwdNodeTreeSize( - node: ObsidianNode, - id: string, - treeOptimizeMap: Map, - ): number { + private fwdNodeTreeSize(node: ObsidianNode, id: string): number { let size = 0; - const sizeMap = treeOptimizeMap.get(node.id); - - // the block below + const sizeMap = this.treeOptimizeMap.get(node.id); if (sizeMap !== undefined) { return sizeMap as number; } @@ -104,15 +96,11 @@ export default class NodeFactor extends Plugin { if (key === id) return size; size++; - const childSize = this.fwdNodeTreeSize( - childNode, - id, - treeOptimizeMap, - ); + const childSize = this.fwdNodeTreeSize(childNode, id); size += childSize; }); - treeOptimizeMap.set(node.id, size); + this.treeOptimizeMap.set(node.id, size); return size; }