diff options
Diffstat (limited to 'src/App.vue')
| -rw-r--r-- | src/App.vue | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/src/App.vue b/src/App.vue index f138b21..5c7bbf2 100644 --- a/src/App.vue +++ b/src/App.vue @@ -891,7 +891,7 @@ export default defineComponent({ // Query server let urlParams = new URLSearchParams({type: 'node', tree: this.uiOpts.tree}); if (nodeName != null){ - urlParams.append('name', encodeURIComponent(nodeName)); + urlParams.append('name', nodeName); urlParams.append('toroot', 'true'); } let responseObj: {[x: string]: TolNode} = await this.loadFromServer(urlParams); @@ -914,9 +914,24 @@ export default defineComponent({ // Initialise tree this.tolMap.clear(); nodeNames.forEach(n => {this.tolMap.set(n, responseObj[n])}); - this.layoutTree = initLayoutTree(this.tolMap, rootName, 0); - this.activeRoot = this.layoutTree; - this.layoutMap = initLayoutMap(this.layoutTree); + if (nodeName == null){ + this.layoutTree = initLayoutTree(this.tolMap, rootName, 0); + this.layoutMap = initLayoutMap(this.layoutTree); + this.activeRoot = this.layoutTree; + } else { + this.layoutTree = initLayoutTree(this.tolMap, rootName, -1); + this.layoutMap = initLayoutMap(this.layoutTree); + // Set active root + let targetNode = this.layoutMap.get(nodeName)!; + let newRoot = targetNode.parent == null ? targetNode : targetNode.parent; + LayoutNode.hideUpward(newRoot, this.layoutMap); + if (targetNode.parent != null){ // Account for ancestry-bar transition + this.ancestryBarInTransition = true; + this.relayoutDuringAncestryBarTransition(); + } + this.activeRoot = newRoot; + setTimeout(() => this.setLastFocused(targetNode!), this.uiOpts.transitionDuration); + } // Skip initial transition if (firstInit){ this.justInitialised = true; @@ -925,13 +940,6 @@ export default defineComponent({ // Relayout await this.updateAreaDims(); this.relayoutWithCollapse(false); - // Possibly jump to a target node - if (nodeName != null){ - let oldSetting = this.uiOpts.searchJumpMode; - this.uiOpts.searchJumpMode = true; - await this.onSearch(nodeName); - this.uiOpts.searchJumpMode = oldSetting; - } }, async reInit(){ if (this.activeRoot != this.layoutTree){ |
