LPXXX Patron UI WIP
authorBill Erickson <berickxx@gmail.com>
Thu, 13 Aug 2020 21:49:55 +0000 (17:49 -0400)
committerBill Erickson <berickxx@gmail.com>
Fri, 21 Aug 2020 20:41:27 +0000 (16:41 -0400)
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Open-ILS/src/eg2/src/app/staff/circ/patron/patron.component.html
Open-ILS/src/eg2/src/app/staff/circ/patron/patron.component.ts

index 5994268..b5bb776 100644 (file)
       <ul ngbNav #patronNav="ngbNav" class="nav-tabs"
         [activeId]="patronTab" (navChange)="beforeTabChange($event)">
 
-        <li ngbNavItem="checkout">
+        <li ngbDropdown ngbNavItem="toggle">
+          <a href class="nav-link" (click)="toggleSummaryPane(); false"
+            title="Toggle Summary Pane" i18n-title>
+            <ng-container *ngIf="showSummaryPane()">
+              <span class="material-icons">navigate_before</span>
+            </ng-container>
+            <ng-container *ngIf="!showSummaryPane()">
+              <span class="material-icons">navigate_next</span>
+            </ng-container>
+          </a>
+        </li>
+
+        <li ngbNavItem="checkout" [disabled]="!context.patron">
           <a ngbNavLink i18n>Checkout</a>
           <ng-template ngbNavContent>
             <div class="">
@@ -39,7 +51,7 @@
           </ng-template>
         </li>
 
-        <li ngbNavItem="items_out">
+        <li ngbNavItem="items_out" [disabled]="!context.patron">
           <a ngbNavLink i18n>Items Out</a>
           <ng-template ngbNavContent>
             <div class="">
@@ -47,7 +59,7 @@
           </ng-template>
         </li>
 
-        <li ngbNavItem="holds">
+        <li ngbNavItem="holds" [disabled]="!context.patron">
           <a ngbNavLink i18n>Holds</a>
           <ng-template ngbNavContent>
             <div class="">
@@ -55,7 +67,7 @@
           </ng-template>
         </li>
 
-        <li ngbNavItem="bills">
+        <li ngbNavItem="bills" [disabled]="!context.patron">
           <a ngbNavLink i18n>Bills</a>
           <ng-template ngbNavContent>
             <div class="">
@@ -63,7 +75,7 @@
           </ng-template>
         </li>
 
-        <li ngbNavItem="messages">
+        <li ngbNavItem="messages" [disabled]="!context.patron">
           <a ngbNavLink i18n>Messages</a>
           <ng-template ngbNavContent>
             <div class="">
@@ -71,7 +83,7 @@
           </ng-template>
         </li>
 
-        <li ngbNavItem="edit">
+        <li ngbNavItem="edit" [disabled]="!context.patron">
           <a ngbNavLink i18n>Edit</a>
           <ng-template ngbNavContent>
             <eg-patron-edit 
@@ -80,7 +92,7 @@
           </ng-template>
         </li>
 
-        <li ngbDropdown ngbNavItem="other">
+        <li ngbDropdown ngbNavItem="other" [disabled]="!context.patron">
           <a href (click)="false" class="nav-link" ngbDropdownToggle>Other</a>
           <div ngbDropdownMenu>
             <a routerLink="/staff/circ/patron/{{patronId}}/alerts" 
             <a routerLink="/staff/booking/return/by_patron/{{patronId}}"
               target="_top"
               ngbDropdownItem i18n></a>
-            <a href='javascript:;' (click)="purgeAccount()"
+            <a href (click)="purgeAccount(); false"
               [disabled]="disablePurge()"
               ngbDropdownItem i18n>Completely Purge Account</a>
           </div>
 
     </div><!-- end of sticky top -->
 
-    <div class="pt-3">
+    <div *ngIf="!loading" class="pt-3">
       <div [ngbNavOutlet]="patronNav"></div>
     </div>
   </div>
index 11cee90..e65b8d2 100644 (file)
@@ -3,6 +3,7 @@ import {Router, ActivatedRoute, ParamMap} from '@angular/router';
 import {NgbNav, NgbNavChangeEvent} from '@ng-bootstrap/ng-bootstrap';
 import {NetService} from '@eg/core/net.service';
 import {AuthService} from '@eg/core/auth.service';
+import {ServerStoreService} from '@eg/core/server-store.service';
 import {PatronService} from '@eg/staff/share/patron/patron.service';
 import {PatronManagerService} from './patron.service';
 import {PatronSearchComponent} from '@eg/staff/share/patron/search.component';
@@ -20,18 +21,36 @@ export class PatronComponent implements OnInit, AfterViewInit {
     patronTab = 'search';
     altTab: string;
     showSummary = true;
+    loading = true;
 
     constructor(
         private router: Router,
         private route: ActivatedRoute,
         private net: NetService,
         private auth: AuthService,
+        private store: ServerStoreService,
         public patronService: PatronService,
         public context: PatronManagerService
     ) {}
 
     ngOnInit() {
         this.watchForTabChange();
+        this.load();
+    }
+
+    load() {
+        this.loading = true;
+        this.fetchSettings()
+        .then(_ => this.loading = false);
+    }
+
+    fetchSettings(): Promise<any> {
+
+        return this.store.getItemBatch([
+            'eg.circ.patron.summary.collapse'
+        ]).then(prefs => {
+            this.showSummary = !prefs['eg.circ.patron.summary.collapse'];
+        });
     }
 
     watchForTabChange() {
@@ -93,6 +112,12 @@ export class PatronComponent implements OnInit, AfterViewInit {
         return this.showSummary || this.patronTab === 'search';
     }
 
+    toggleSummaryPane() {
+        this.store.setItem( // collapse is the opposite of show
+            'eg.circ.patron.summary.collapse', this.showSummary);
+        this.showSummary = !this.showSummary;
+    }
+
     // Patron row single-clicked in the grid.  Load the patron without
     // leaving the search tab.
     patronSelectionChange(ids: number[]) {
@@ -124,6 +149,7 @@ export class PatronComponent implements OnInit, AfterViewInit {
 
     purgeAccount() {
         // show scary warning, etc.
+
     }
 }