deleteNodes
authorJason Etheridge <phasefx@gmail.com>
Mon, 15 May 2023 06:09:27 +0000 (02:09 -0400)
committerJason Etheridge <phasefx@gmail.com>
Thu, 25 May 2023 16:45:32 +0000 (12:45 -0400)
Signed-off-by: Jason Etheridge <phasefx@gmail.com>
Open-ILS/src/eg2/src/app/staff/admin/server/custom-org-unit-trees.component.html
Open-ILS/src/eg2/src/app/staff/admin/server/custom-org-unit-trees.component.ts

index f20a56f..30e5f66 100644 (file)
@@ -40,6 +40,7 @@
         [tree]="custom_tree"
         (nodeClicked)="custom_nodeClicked($event)"
         (nodeChecked)="custon_nodeChecked($event)">
+        <button [disabled]="deleteNodesDisabled" (click)="deleteNodes()" i18n>Delete Selected Nodes</button>
       </eg-tree>
     </div>
   </div>
index 35f09dd..b2bba41 100644 (file)
@@ -23,6 +23,7 @@ export class CustomOrgUnitTreesComponent implements OnInit {
     custom_selected: TreeNode;
     orgUnitTab: string;
     copyNodesDisabled = true;
+    deleteNodesDisabled = true;
 
     @ViewChild('editString', { static: true }) editString: StringComponent;
     @ViewChild('errorString', { static: true }) errorString: StringComponent;
@@ -170,12 +171,14 @@ export class CustomOrgUnitTreesComponent implements OnInit {
         //this.selected = $event;
         console.log('custom: nodeClicked',typeof $event);
         this.copyNodesDisabled = !this.isCopyNodesAllowed();
+        this.deleteNodesDisabled = !this.isDeleteNodesAllowed();
     }
 
     custom_nodeClicked($event: any) {
         //this.custom_selected = $event;
         console.log('custom: custom_nodeClicked',typeof $event);
         this.copyNodesDisabled = !this.isCopyNodesAllowed();
+        this.deleteNodesDisabled = !this.isDeleteNodesAllowed();
     }
 
     nodeChecked($event: any) {
@@ -228,5 +231,35 @@ export class CustomOrgUnitTreesComponent implements OnInit {
       }
     }
 
+    isDeleteNodesAllowed(): boolean {
+        const targetNodes = this.custom_tree.selectedNodes();
+        if (targetNodes.length === 0) {
+            console.log('isDeleteNodesAllowed: no targetNodes selected', false);
+            return false;
+        }
+        for (let targetNode of targetNodes) {
+            if (targetNode === this.custom_tree.rootNode) {
+                console.log('isDeleteNodesAllowed: rootNode is sacrosanct', false);
+                return false;
+            }
+        }
+        console.log('isDeleteNodesAllowed', true);
+        return true;
+    }
+
+    deleteNodes() {
+        const targetNodes = this.custom_tree.selectedNodes();
+        this.deleteNodesDisabled = !this.isDeleteNodesAllowed();
+        if (this.deleteNodesDisabled) {
+            return;
+        }
+        for (let targetNode of targetNodes) {
+            if (targetNode !== this.custom_tree.rootNode) {
+                console.log('removing node',targetNode);
+                this.custom_tree.removeNode(targetNode);
+            }
+        }
+        this.deleteNodesDisabled = !this.isDeleteNodesAllowed();
+    }
 }