From c7b0823900a53828e0395b894dd71ff1054cfa97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magnus=20=C3=85hall?= Date: Mon, 7 Jul 2025 15:45:32 +0200 Subject: [PATCH] tree work --- static/js/app.mjs | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/static/js/app.mjs b/static/js/app.mjs index 284d7ce..9f01f59 100644 --- a/static/js/app.mjs +++ b/static/js/app.mjs @@ -277,15 +277,41 @@ export class App { body: JSON.stringify(req), }) .then(data => data.json()) - .then(json => { + .then(async json => { if (!json.OK) { showError(json.Error) return } + const parentTreenode = this.tree.treeNodes.get(newParentID) + const node = await this.tree.fetchNodes(newParentID) + parentTreenode.node = node + parentTreenode.updateExpandImages() + const newParentElement = this.tree.treeNodes.get(newParentID).children - for (const n of nodes) - newParentElement.append(this.tree.treeNodes.get(n.ID).element) + for (const n of nodes) { + const movedTreeNode = this.tree.treeNodes.get(n.ID) + newParentElement.append(movedTreeNode.element) + + // Moved nodes' parents are updated to remove the moved nodes from their children. + const treenode = this.tree.treeNodes.get(n.ParentID) + const node = await this.tree.fetchNodes(n.ParentID) + treenode.node = node + treenode.updateExpandImages() + + // Children are resorted to get the moved node into correct order. + /* + this.tree.sortChildren(parentTreenode.node.Children) + for (const c of parentTreenode.node.Children) { + const treenode = this.tree.treeNodes.get(c.ID) + if (treenode) + parentTreenode.children.append(treenode.element) + } + */ + + // The moved node is updated with its new parent ID for future moves. + movedTreeNode.node.ParentID = newParentID + } }) .catch(err => showError(err))