moveNodeElsewhere
authorJason Etheridge <phasefx@gmail.com>
Mon, 15 May 2023 09:12:32 +0000 (05:12 -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/admin-server.module.ts
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 cd267fd..331cdc3 100644 (file)
@@ -4,6 +4,7 @@ import {AdminCommonModule} from '@eg/staff/admin/common.module';
 import {AdminServerRoutingModule} from './routing.module';
 import {AdminServerSplashComponent} from './admin-server-splash.component';
 import {CustomOrgUnitTreesComponent} from './custom-org-unit-trees.component';
+import {CustomOrgUnitTreesDialogComponent} from './custom-org-unit-trees-dialog.component';
 import {OrgUnitTypeComponent} from './org-unit-type.component';
 import {PrintTemplateComponent} from './print-template.component';
 import {SampleDataService} from '@eg/share/util/sample-data.service';
@@ -20,6 +21,7 @@ generated UI's into lazy-loadable sub-mobules. */
       AdminServerSplashComponent,
       OrgUnitTypeComponent,
       CustomOrgUnitTreesComponent,
+      CustomOrgUnitTreesDialogComponent,
       PrintTemplateComponent,
       PermGroupTreeComponent,
       PermGroupMapDialogComponent
index a543cef..7536934 100644 (file)
   dialogBody="Delete Org Unit {{selected ? selected.label : ''}}?">
 </eg-confirm-dialog>
 
+<eg-custom-org-unit-trees-dialog #moveNodeElsewhereDialog 
+  [customTree]="custom_tree">
+</eg-custom-org-unit-trees-dialog>
+
 <div class="row org-unit-types-row">
   <div class="col-lg-4 org-unit-types-col-aside">
     <h3 i18n>Full Org Unit Tree</h3>
@@ -43,6 +47,7 @@
         <button [disabled]="deleteNodesDisabled" (click)="deleteNodes()" i18n>Delete Selected Nodes</button>
         <button [disabled]="moveNodeUpDisabled" (click)="moveNodeUp()" i18n>Move Node Up</button>
         <button [disabled]="moveNodeDownDisabled" (click)="moveNodeDown()" i18n>Move Node Down</button>
+        <button [disabled]="moveNodeElsewhereDisabled" (click)="moveNodeElsewhere()" i18n>Move Node Elsewhere</button>
       </eg-tree>
     </div>
   </div>
index 8077096..fe36965 100644 (file)
@@ -9,6 +9,7 @@ import {PcrudService} from '@eg/core/pcrud.service';
 import {StringComponent} from '@eg/share/string/string.component';
 //import {StringService} from '@eg/share/string/string.service';
 import {ConfirmDialogComponent} from '@eg/share/dialog/confirm.component';
+import {CustomOrgUnitTreesDialogComponent} from './custom-org-unit-trees-dialog.component';
 
 @Component({
     templateUrl: './custom-org-unit-trees.component.html',
@@ -26,10 +27,12 @@ export class CustomOrgUnitTreesComponent implements OnInit {
     deleteNodesDisabled = true;
     moveNodeUpDisabled = true;
     moveNodeDownDisabled = true;
+    moveNodeElsewhereDisabled = true;
 
     @ViewChild('editString', { static: true }) editString: StringComponent;
     @ViewChild('errorString', { static: true }) errorString: StringComponent;
     @ViewChild('delConfirm', { static: true }) delConfirm: ConfirmDialogComponent;
+    @ViewChild('moveNodeElsewhereDialog', { static: true }) moveNodeElsewhereDialog: CustomOrgUnitTreesDialogComponent;
 
     constructor(
         //private idl: IdlService,
@@ -176,6 +179,7 @@ export class CustomOrgUnitTreesComponent implements OnInit {
         this.deleteNodesDisabled = !this.isDeleteNodesAllowed();
         this.moveNodeUpDisabled = !this.isMoveNodeUpAllowed();
         this.moveNodeDownDisabled = !this.isMoveNodeDownAllowed();
+        this.moveNodeElsewhereDisabled = !this.isMoveNodeElsewhereAllowed();
     }
 
     custom_nodeClicked($event: any) {
@@ -185,6 +189,7 @@ export class CustomOrgUnitTreesComponent implements OnInit {
         this.deleteNodesDisabled = !this.isDeleteNodesAllowed();
         this.moveNodeUpDisabled = !this.isMoveNodeUpAllowed();
         this.moveNodeDownDisabled = !this.isMoveNodeDownAllowed();
+        this.moveNodeElsewhereDisabled = !this.isMoveNodeElsewhereAllowed();
     }
 
     nodeChecked($event: any) {
@@ -270,6 +275,9 @@ export class CustomOrgUnitTreesComponent implements OnInit {
         if (this.deleteNodesDisabled) {
             return;
         }
+        if (! window.confirm($localize`Are you sure?`)) {
+            return;
+        }
         for (let targetNode of targetNodes) {
             if (targetNode !== this.custom_tree.rootNode) {
                 console.log('removing node',targetNode);
@@ -302,6 +310,7 @@ export class CustomOrgUnitTreesComponent implements OnInit {
     moveNodeUp() {
         this.moveNodeUpDisabled = !this.isMoveNodeUpAllowed();
         this.moveNodeDownDisabled = !this.isMoveNodeDownAllowed();
+        this.moveNodeElsewhereDisabled = !this.isMoveNodeElsewhereAllowed();
         const selectedNode = this.custom_tree.selectedNode();
         if (this.moveNodeUpDisabled) {
             return;
@@ -317,6 +326,7 @@ export class CustomOrgUnitTreesComponent implements OnInit {
                 this.custom_tree.nodeList(); // re-index
                 this.moveNodeUpDisabled = !this.isMoveNodeUpAllowed();
                 this.moveNodeDownDisabled = !this.isMoveNodeDownAllowed();
+                this.moveNodeElsewhereDisabled = !this.isMoveNodeElsewhereAllowed();
             }
         }
     }
@@ -345,6 +355,7 @@ export class CustomOrgUnitTreesComponent implements OnInit {
     moveNodeDown() {
         this.moveNodeDownDisabled = !this.isMoveNodeDownAllowed();
         this.moveNodeUpDisabled = !this.isMoveNodeUpAllowed();
+        this.moveNodeElsewhereDisabled = !this.isMoveNodeElsewhereAllowed();
         const selectedNode = this.custom_tree.selectedNode();
         if (this.moveNodeDownDisabled) {
             return;
@@ -360,9 +371,30 @@ export class CustomOrgUnitTreesComponent implements OnInit {
                 this.custom_tree.nodeList(); // re-index
                 this.moveNodeDownDisabled = !this.isMoveNodeDownAllowed();
                 this.moveNodeUpDisabled = !this.isMoveNodeUpAllowed();
+                this.moveNodeElsewhereDisabled = !this.isMoveNodeElsewhereAllowed();
             }
         }
     }
 
+    isMoveNodeElsewhereAllowed(): boolean {
+        const selectedNodes = this.custom_tree.selectedNodes();
+        return selectedNodes.length === 1 && selectedNodes[0] !== this.custom_tree.rootNode;
+    }
+
+    moveNodeElsewhere() {
+        const selectedNode = this.custom_tree.selectedNode();
+        console.log(selectedNode);
+        this.moveNodeElsewhereDialog.open({size: 'lg'}).subscribe(
+            result => {
+                console.log('modal result',result);
+                if (result) {
+                    this.custom_tree.nodeList(); // re-index
+                    this.moveNodeDownDisabled = !this.isMoveNodeDownAllowed();
+                    this.moveNodeUpDisabled = !this.isMoveNodeUpAllowed();
+                    this.moveNodeElsewhereDisabled = !this.isMoveNodeElsewhereAllowed();
+                }
+            }
+        );
+    }
 }