From: Jason Etheridge Date: Mon, 15 May 2023 07:20:21 +0000 (-0400) Subject: move node up and down X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=1596723971e185a5f538f116fd4770874165cf1f;p=working%2FEvergreen.git move node up and down Signed-off-by: Jason Etheridge --- diff --git a/Open-ILS/src/eg2/src/app/staff/admin/server/custom-org-unit-trees.component.html b/Open-ILS/src/eg2/src/app/staff/admin/server/custom-org-unit-trees.component.html index 30e5f664d6..a543cef990 100644 --- a/Open-ILS/src/eg2/src/app/staff/admin/server/custom-org-unit-trees.component.html +++ b/Open-ILS/src/eg2/src/app/staff/admin/server/custom-org-unit-trees.component.html @@ -41,6 +41,8 @@ (nodeClicked)="custom_nodeClicked($event)" (nodeChecked)="custon_nodeChecked($event)"> + + diff --git a/Open-ILS/src/eg2/src/app/staff/admin/server/custom-org-unit-trees.component.ts b/Open-ILS/src/eg2/src/app/staff/admin/server/custom-org-unit-trees.component.ts index 9abcc74044..8077096e78 100644 --- a/Open-ILS/src/eg2/src/app/staff/admin/server/custom-org-unit-trees.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/admin/server/custom-org-unit-trees.component.ts @@ -24,6 +24,8 @@ export class CustomOrgUnitTreesComponent implements OnInit { orgUnitTab: string; copyNodesDisabled = true; deleteNodesDisabled = true; + moveNodeUpDisabled = true; + moveNodeDownDisabled = true; @ViewChild('editString', { static: true }) editString: StringComponent; @ViewChild('errorString', { static: true }) errorString: StringComponent; @@ -172,6 +174,8 @@ export class CustomOrgUnitTreesComponent implements OnInit { console.log('custom: nodeClicked',typeof $event); this.copyNodesDisabled = !this.isCopyNodesAllowed(); this.deleteNodesDisabled = !this.isDeleteNodesAllowed(); + this.moveNodeUpDisabled = !this.isMoveNodeUpAllowed(); + this.moveNodeDownDisabled = !this.isMoveNodeDownAllowed(); } custom_nodeClicked($event: any) { @@ -179,6 +183,8 @@ export class CustomOrgUnitTreesComponent implements OnInit { console.log('custom: custom_nodeClicked',typeof $event); this.copyNodesDisabled = !this.isCopyNodesAllowed(); this.deleteNodesDisabled = !this.isDeleteNodesAllowed(); + this.moveNodeUpDisabled = !this.isMoveNodeUpAllowed(); + this.moveNodeDownDisabled = !this.isMoveNodeDownAllowed(); } nodeChecked($event: any) { @@ -238,6 +244,8 @@ export class CustomOrgUnitTreesComponent implements OnInit { } copySelectedNodes(this.tree.rootNode, targetNode); + this.custom_tree.nodeList(); // re-index + this.copyNodesDisabled = !this.isCopyNodesAllowed(); } isDeleteNodesAllowed(): boolean { @@ -268,7 +276,93 @@ export class CustomOrgUnitTreesComponent implements OnInit { this.custom_tree.removeNode(targetNode); } } + this.custom_tree.nodeList(); // re-index this.deleteNodesDisabled = !this.isDeleteNodesAllowed(); } + + isMoveNodeUpAllowed(): boolean { + const targetNodes = this.custom_tree.selectedNodes(); + if (targetNodes.length !== 1) { + console.log('isMoveNodeUpAllowed: need exactly 1 targetNode selected', false); + return false; + } + const targetNode = targetNodes[0]; + let parentNode = this.custom_tree.findParentNode(targetNode); + if (parentNode) { + let index = parentNode.children.indexOf(targetNode); + if (index === 0) { + console.log('isMoveNodeUpAllowed: cannot move farther', false); + return false; + } + } + console.log('isMoveNodeUpAllowed', true); + return true; + } + + moveNodeUp() { + this.moveNodeUpDisabled = !this.isMoveNodeUpAllowed(); + this.moveNodeDownDisabled = !this.isMoveNodeDownAllowed(); + const selectedNode = this.custom_tree.selectedNode(); + if (this.moveNodeUpDisabled) { + return; + } + let parentNode = this.custom_tree.findParentNode(selectedNode); + if (parentNode) { + let index = parentNode.children.indexOf(selectedNode); + if (index > 0) { + // Swap the selected node with its previous sibling. + let temp = parentNode.children[index - 1]; + parentNode.children[index - 1] = selectedNode; + parentNode.children[index] = temp; + this.custom_tree.nodeList(); // re-index + this.moveNodeUpDisabled = !this.isMoveNodeUpAllowed(); + this.moveNodeDownDisabled = !this.isMoveNodeDownAllowed(); + } + } + } + + isMoveNodeDownAllowed(): boolean { + const targetNodes = this.custom_tree.selectedNodes(); + if (targetNodes.length !== 1) { + console.log('isMoveNodeDownAllowed: need exactly 1 targetNode selected', false); + return false; + } + const targetNode = targetNodes[0]; + let parentNode = this.custom_tree.findParentNode(targetNode); + if (parentNode) { + let index = parentNode.children.indexOf(targetNode); + if (index < parentNode.children.length - 1) { + // great + } else { + console.log('isMoveNodeDownAllowed: cannot move farther', false); + return false; + } + } + console.log('isMoveNodeDownAllowed', true); + return true; + } + + moveNodeDown() { + this.moveNodeDownDisabled = !this.isMoveNodeDownAllowed(); + this.moveNodeUpDisabled = !this.isMoveNodeUpAllowed(); + const selectedNode = this.custom_tree.selectedNode(); + if (this.moveNodeDownDisabled) { + return; + } + let parentNode = this.custom_tree.findParentNode(selectedNode); + if (parentNode) { + let index = parentNode.children.indexOf(selectedNode); + if (index < parentNode.children.length - 1) { + // Swap the selected node with its next sibling. + let temp = parentNode.children[index + 1]; + parentNode.children[index + 1] = selectedNode; + parentNode.children[index] = temp; + this.custom_tree.nodeList(); // re-index + this.moveNodeDownDisabled = !this.isMoveNodeDownAllowed(); + this.moveNodeUpDisabled = !this.isMoveNodeUpAllowed(); + } + } + } + }