7cd1d611ca0ead5d0136151230c8236d69e6d0bf
[evergreen-equinox.git] / Open-ILS / src / eg2 / src / app / staff / circ / patron / patron.component.html
1
2 <ng-container *ngIf="!context.summary">
3   <eg-staff-banner bannerText="Manage Patrons" i18n-bannerText>
4   </eg-staff-banner>
5 </ng-container>
6
7 <eg-confirm-dialog #pendingChangesDialog
8   i18n-dialogTitle dialogTitle="Unsaved Changes Confirmation" 
9   i18n-dialogBoby  dialogBody="Unsaved changes will be lost.  Continue navigation?">
10 </eg-confirm-dialog>
11
12 <eg-confirm-dialog #purgeConfirm1
13   i18n-dialogTitle dialogTitle="Completely Purge Patron Account?"
14   i18n-dialogBody dialogBody="Completely OBLITERATE this patron 
15     account, including bills, payments, bookbags, etc? This is IRREVERSIBLE.">
16 </eg-confirm-dialog>
17
18 <eg-confirm-dialog #purgeConfirm2
19   i18n-dialogTitle dialogTitle="Completely Purge Patron Account?"
20   i18n-dialogBody dialogBody="Last chance, are you sure you want to 
21     completely delete this account?">
22 </eg-confirm-dialog>
23
24 <eg-confirm-dialog #purgeConfirmOverride
25   i18n-dialogTitle dialogTitle="Completely Purge Patron Account?"
26   i18n-dialogBody dialogBody="The account has open transactions 
27     (circulations and/or unpaid bills). Purge anyway?">
28 </eg-confirm-dialog>
29
30 <eg-alert-dialog #purgeBadBarcode
31   i18n-dialogTitle dialogTitle="Bad Barcode"
32   i18n-dialogBody dialogBody="Could not retrieve a destination account 
33     with the barcode provided. Aborting the purge...">
34 </eg-alert-dialog>
35
36 <eg-prompt-dialog #purgeStaffDialog
37   i18n-dialogTitle dialogTitle="Completely Purge Patron Account?"
38   i18n-dialogBody dialogBody="The account you are attempting to delete has 
39     STAFF_LOGIN privileges. Please enter the barcode for a destination 
40     account to receive miscellaneous staff artifacts (reports, etc.) from 
41     the account to be deleted.">
42 </eg-prompt-dialog>
43
44 <ng-container *ngIf="context.summary">
45   <eg-staff-banner i18n-bannerText bannerText="Patron: 
46     {{patronService.namePart(context.summary.patron, 'family_name')}}, 
47     {{patronService.namePart(context.summary.patron, 'first_given_name')}} 
48     {{patronService.namePart(context.summary.patron, 'second_given_name')}}">
49   </eg-staff-banner>
50 </ng-container>
51
52 <eg-circ-components></eg-circ-components>
53 <eg-worklog-strings-components></eg-worklog-strings-components>                
54
55 <div class="row">
56
57   <ng-container *ngIf="showSummaryPane()">
58     <div class="col-lg-3">
59       <div class="sticky-top-with-nav bg-white">
60         <ng-container *ngIf="context.summary">
61           <eg-patron-summary [summary]="context.summary"></eg-patron-summary>
62         </ng-container>
63       </div>
64     </div>
65   </ng-container>
66
67   <div [ngClass]="{'col-lg-9': showSummaryPane(), 'col-lg-12': !showSummaryPane()}">
68
69     <div class="sticky-top-with-nav bg-white">
70       <ul ngbNav #patronNav="ngbNav" class="nav-tabs" [keyboard]="true" [roles]="false" role="tablist"
71         [activeId]="patronTab" (navChange)="beforeTabChange($event)">
72
73         <ng-container *ngIf="patronTab !== 'search'">
74           <li ngbDropdown ngbNavItem="toggle">
75             <a href class="nav-link" (click)="toggleSummaryPane(); false"
76               title="Toggle Summary Pane" i18n-title>
77               <ng-container *ngIf="showSummaryPane()">
78                 <span class="material-icons">fullscreen</span>
79               </ng-container>
80               <ng-container *ngIf="!showSummaryPane()">
81                 <span class="material-icons">fullscreen_exit</span>
82               </ng-container>
83             </a>
84           </li>
85         </ng-container>
86
87         <li role="presentation" ngbNavItem="checkout" [disabled]="!context.summary">
88           <a role="tab" ngbNavLink (click)="navItemClick('checkout', $event)"
89             routerLink="/staff/circ/patron/{{patronId}}/checkout" i18n>Check Out</a>
90           <ng-template ngbNavContent>
91             <div class="">
92               <eg-patron-checkout></eg-patron-checkout> 
93             </div>
94           </ng-template>
95         </li>
96
97         <li role="presentation" ngbNavItem="items_out" [disabled]="!context.summary">
98           <a role="tab" ngbNavLink (click)="navItemClick('items_out', $event)"
99             routerLink="/staff/circ/patron/{{patronId}}/items_out" i18n>
100             Items Out ({{counts('checkouts', 'total_out')}})
101           </a>
102           <ng-template ngbNavContent>
103             <div class="">
104               <eg-patron-items [patronId]="patronId"></eg-patron-items>
105             </div>
106           </ng-template>
107         </li>
108
109         <li role="presentation" ngbNavItem="holds" [disabled]="!context.summary">
110           <a role="tab" ngbNavLink (click)="navItemClick('holds', $event)"
111             routerLink="/staff/circ/patron/{{patronId}}/holds" i18n>
112             Holds ({{counts('holds', 'ready')}} / {{counts('holds', 'total')}})
113           </a>
114           <ng-template ngbNavContent>
115             <eg-patron-holds></eg-patron-holds>
116           </ng-template>
117         </li>
118
119         <li role="presentation" ngbNavItem="bills" [disabled]="!context.summary">
120           <a role="tab" ngbNavLink (click)="navItemClick('bills', $event)"
121             routerLink="/staff/circ/patron/{{patronId}}/bills" i18n>
122             Bills 
123             <span [ngClass]="{'text-danger': counts('fines', 'balance_owed') > 0}">
124               ({{counts('fines', 'balance_owed') | currency}})
125             </span>
126           </a>
127           <ng-template ngbNavContent>
128             <ng-container *ngIf="statementXact">
129               <eg-patron-bill-statement [patronId]="patronId" [xactId]="statementXact">
130               </eg-patron-bill-statement>
131             </ng-container>
132             <ng-container *ngIf="billingHistoryTab">
133               <eg-patron-billing-history [patronId]="patronId" [tab]="billingHistoryTab">
134               </eg-patron-billing-history>
135             </ng-container>
136             <ng-container *ngIf="!statementXact && !billingHistoryTab">
137               <eg-patron-bills [patronId]="patronId"></eg-patron-bills>
138             </ng-container>
139           </ng-template>
140         </li>
141
142         <li role="presentation" ngbNavItem="messages" [disabled]="!context.summary">
143           <a role="tab" ngbNavLink (click)="navItemClick('messages', $event)"
144             routerLink="/staff/circ/patron/{{patronId}}/messages" i18n>Messages</a>
145           <ng-template ngbNavContent>
146             <div class="">
147               <eg-patron-messages [patronId]="patronId"></eg-patron-messages>
148             </div>
149           </ng-template>
150         </li>
151
152         <li role="presentation" ngbNavItem="edit" [disabled]="!context.summary">
153           <a role="tab" ngbNavLink (click)="navItemClick('edit', $event)"
154             routerLink="/staff/circ/patron/{{patronId}}/edit" i18n>Edit</a>
155           <ng-template ngbNavContent>
156             <eg-patron-edit #patronEditor [patronId]="patronId" [toolbar]="editorToolbar">
157             </eg-patron-edit> 
158           </ng-template>
159         </li>
160
161         <li ngbDropdown ngbNavItem="other" [disabled]="!context.summary">
162           <a [attr.href]="context.summary ? '' : null" 
163             (click)="false" class="nav-link" ngbDropdownToggle>Other</a>
164           <div ngbDropdownMenu>
165             <a routerLink="/staff/circ/patron/{{patronId}}/alerts" 
166               ngbDropdownItem i18n>Alerts and Messages</a>
167             <a routerLink="/staff/circ/patron/{{patronId}}/notes" [disabled]="true"
168               ngbDropdownItem i18n>Notes</a>
169             <a routerLink="/staff/circ/patron/{{patronId}}/triggered_events" [disabled]="true"
170               ngbDropdownItem i18n>Triggered Events / Notifications</a>
171             <a routerLink="/staff/circ/patron/{{patronId}}/message_center" [disabled]="true"
172               ngbDropdownItem i18n>Message Center</a>
173             <a routerLink="/staff/circ/patron/{{patronId}}/stat_cats"
174               ngbDropdownItem i18n>Statistical Categories</a>
175             <a routerLink="/staff/circ/patron/{{patronId}}/surveys"
176               ngbDropdownItem i18n>Surveys</a>
177             <a routerLink="/staff/circ/patron/{{patronId}}/group"
178               ngbDropdownItem i18n>Group Member Details</a>
179             <a routerLink="/staff/circ/patron/{{patronId}}/perms"
180               ngbDropdownItem i18n>User Permission Editor</a>
181             <a routerLink="/staff/circ/patron/{{patronId}}/credentials"
182               ngbDropdownItem i18n>Test Password</a>
183             <a href="/eg/staff/acq/requests/user/{{patronId}}" 
184               target="_top"
185               ngbDropdownItem i18n>Acquisition Patron Requests</a>
186             <a routerLink="/staff/booking/manage_reservations/by_patron/{{patronId}}"
187               target="_top"
188               ngbDropdownItem i18n>Booking: Manage Reservations</a>
189             <a routerLink="/staff/booking/create_reservation/for_patron/{{patronId}}"
190               target="_top"
191               ngbDropdownItem i18n>Booking: Create Reservation</a>
192             <a routerLink="/staff/booking/pickup/by_patron/{{patronId}}"
193               target="_top"
194               ngbDropdownItem i18n>Booking: Pick Up Reservations</a>
195             <a routerLink="/staff/booking/return/by_patron/{{patronId}}"
196               target="_top" ngbDropdownItem i18n></a>
197             <a href (click)="purgeAccount(); false"
198               [disabled]="disablePurge()"
199               ngbDropdownItem i18n>Completely Purge Account</a>
200           </div>
201           <ng-template ngbNavContent>
202             <ng-container [ngSwitch]="altTab">
203               <div *ngSwitchCase="'alerts'">
204                 <eg-patron-alerts></eg-patron-alerts>
205               </div>
206               <div *ngSwitchCase="'credentials'">
207                 <eg-patron-test-password [patronId]="patronId">
208                 </eg-patron-test-password>
209               </div>
210               <div *ngSwitchCase="'surveys'">
211                 <eg-patron-survey-responses [patronId]="patronId">
212                 </eg-patron-survey-responses>
213               </div>
214               <div *ngSwitchCase="'stat_cats'">
215                 <eg-patron-statcats [patronId]="patronId">
216                 </eg-patron-statcats>
217               </div>
218               <div *ngSwitchCase="'group'">
219                 <eg-patron-group [patronId]="patronId">
220                 </eg-patron-group>
221               </div>
222               <div *ngSwitchCase="'perms'">
223                 <eg-patron-perms [patronId]="patronId">
224                 </eg-patron-perms>
225               </div>
226             </ng-container>
227           </ng-template>
228         </li>
229
230         <li role="presentation" ngbNavItem="search" class="ml-auto">
231           <a role="tab" ngbNavLink (click)="navItemClick('search', $event)"
232             routerLink="/staff/circ/patron/search" i18n>Patron Search</a>
233           <ng-template ngbNavContent>
234             <div class="">
235               <eg-patron-search
236                 [patronIds]="recentPatronIds()"
237                 [startWithSearch]="context.lastPatronSearch"
238                 (searchFired)="patronSearchFired($event)"
239                 (formCleared)="patronSearchCleared()"
240                 (selectionChange)="patronSelectionChange($event)"
241                 (patronsActivated)="patronsActivated($event)">
242               </eg-patron-search> 
243             </div>
244           </ng-template>
245         </li>
246       </ul>
247
248       <ng-container *ngIf="patronTab === 'edit'">
249         <!-- put the editor toolbar up here in the sticky section -->
250         <eg-patron-edit-toolbar #editorToolbar [patronId]="patronId">
251         </eg-patron-edit-toolbar>
252       </ng-container>
253
254     </div><!-- end of sticky top -->
255
256     <div *ngIf="!loading" class="pt-3">
257       <div [ngbNavOutlet]="patronNav"></div>
258     </div>
259   </div>
260 </div>
261