2 <ng-container *ngIf="!context.summary">
3 <eg-staff-banner bannerText="Manage Patrons" i18n-bannerText>
7 <eg-confirm-dialog #pendingChangesDialog
8 i18n-dialogTitle dialogTitle="Unsaved Changes Confirmation"
9 i18n-dialogBoby dialogBody="Unsaved changes will be lost. Continue navigation?">
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.">
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?">
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?">
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...">
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.">
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')}}">
52 <eg-circ-components></eg-circ-components>
53 <eg-worklog-strings-components></eg-worklog-strings-components>
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>
67 <div [ngClass]="{'col-lg-9': showSummaryPane(), 'col-lg-12': !showSummaryPane()}">
69 <div class="sticky-top-with-nav bg-white">
70 <ul ngbNav #patronNav="ngbNav" class="nav-tabs"
71 [activeId]="patronTab" (navChange)="beforeTabChange($event)">
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>
80 <ng-container *ngIf="!showSummaryPane()">
81 <span class="material-icons">fullscreen_exit</span>
87 <li ngbNavItem="checkout" [disabled]="!context.summary">
88 <a ngbNavLink i18n>Check Out</a>
89 <ng-template ngbNavContent>
91 <eg-patron-checkout></eg-patron-checkout>
96 <li ngbNavItem="items_out" [disabled]="!context.summary">
98 Items Out ({{counts('checkouts', 'total_out')}})
100 <ng-template ngbNavContent>
102 <eg-patron-items [patronId]="patronId"></eg-patron-items>
107 <li ngbNavItem="holds" [disabled]="!context.summary">
109 Holds ({{counts('holds', 'ready')}} / {{counts('holds', 'total')}})
111 <ng-template ngbNavContent>
112 <eg-patron-holds></eg-patron-holds>
116 <li ngbNavItem="bills" [disabled]="!context.summary">
117 <a ngbNavLink (click)="billsTabClicked()" i18n>
119 <span [ngClass]="{'text-danger': counts('fines', 'balance_owed') > 0}">
120 ({{counts('fines', 'balance_owed') | currency}})
123 <ng-template ngbNavContent>
124 <ng-container *ngIf="statementXact">
125 <eg-patron-bill-statement [patronId]="patronId" [xactId]="statementXact">
126 </eg-patron-bill-statement>
128 <ng-container *ngIf="billingHistoryTab">
129 <eg-patron-billing-history [patronId]="patronId" [tab]="billingHistoryTab">
130 </eg-patron-billing-history>
132 <ng-container *ngIf="!statementXact && !billingHistoryTab">
133 <eg-patron-bills [patronId]="patronId"></eg-patron-bills>
138 <li ngbNavItem="messages" [disabled]="!context.summary">
139 <a ngbNavLink i18n>Messages</a>
140 <ng-template ngbNavContent>
142 <eg-patron-messages [patronId]="patronId"></eg-patron-messages>
147 <li ngbNavItem="edit" [disabled]="!context.summary">
148 <a ngbNavLink i18n>Edit</a>
149 <ng-template ngbNavContent>
150 <eg-patron-edit #patronEditor [patronId]="patronId" [toolbar]="editorToolbar">
155 <li ngbDropdown ngbNavItem="other" [disabled]="!context.summary">
156 <a [attr.href]="context.summary ? '' : null"
157 (click)="false" class="nav-link" ngbDropdownToggle>Other</a>
158 <div ngbDropdownMenu>
159 <a routerLink="/staff/circ/patron/{{patronId}}/alerts"
160 ngbDropdownItem i18n>Alerts and Messages</a>
161 <a routerLink="/staff/circ/patron/{{patronId}}/notes" [disabled]="true"
162 ngbDropdownItem i18n>Notes</a>
163 <a routerLink="/staff/circ/patron/{{patronId}}/triggered_events" [disabled]="true"
164 ngbDropdownItem i18n>Triggered Events / Notifications</a>
165 <a routerLink="/staff/circ/patron/{{patronId}}/message_center" [disabled]="true"
166 ngbDropdownItem i18n>Message Center</a>
167 <a routerLink="/staff/circ/patron/{{patronId}}/stat_cats"
168 ngbDropdownItem i18n>Statistical Categories</a>
169 <a routerLink="/staff/circ/patron/{{patronId}}/surveys"
170 ngbDropdownItem i18n>Surveys</a>
171 <a routerLink="/staff/circ/patron/{{patronId}}/group"
172 ngbDropdownItem i18n>Group Member Details</a>
173 <a routerLink="/staff/circ/patron/{{patronId}}/perms"
174 ngbDropdownItem i18n>User Permission Editor</a>
175 <a routerLink="/staff/circ/patron/{{patronId}}/credentials"
176 ngbDropdownItem i18n>Test Password</a>
177 <a href="/eg/staff/acq/requests/user/{{patronId}}"
179 ngbDropdownItem i18n>Acquisition Patron Requests</a>
180 <a routerLink="/staff/booking/manage_reservations/by_patron/{{patronId}}"
182 ngbDropdownItem i18n>Booking: Manage Reservations</a>
183 <a routerLink="/staff/booking/create_reservation/for_patron/{{patronId}}"
185 ngbDropdownItem i18n>Booking: Create Reservation</a>
186 <a routerLink="/staff/booking/pickup/by_patron/{{patronId}}"
188 ngbDropdownItem i18n>Booking: Pick Up Reservations</a>
189 <a routerLink="/staff/booking/return/by_patron/{{patronId}}"
190 target="_top" ngbDropdownItem i18n></a>
191 <a href (click)="purgeAccount(); false"
192 [disabled]="disablePurge()"
193 ngbDropdownItem i18n>Completely Purge Account</a>
195 <ng-template ngbNavContent>
196 <ng-container [ngSwitch]="altTab">
197 <div *ngSwitchCase="'alerts'">
198 <eg-patron-alerts></eg-patron-alerts>
200 <div *ngSwitchCase="'credentials'">
201 <eg-patron-test-password [patronId]="patronId">
202 </eg-patron-test-password>
204 <div *ngSwitchCase="'surveys'">
205 <eg-patron-survey-responses [patronId]="patronId">
206 </eg-patron-survey-responses>
208 <div *ngSwitchCase="'stat_cats'">
209 <eg-patron-statcats [patronId]="patronId">
210 </eg-patron-statcats>
212 <div *ngSwitchCase="'group'">
213 <eg-patron-group [patronId]="patronId">
216 <div *ngSwitchCase="'perms'">
217 <eg-patron-perms [patronId]="patronId">
224 <li ngbNavItem="search" class="ml-auto">
225 <a ngbNavLink i18n>Patron Search</a>
226 <ng-template ngbNavContent>
229 [patronIds]="recentPatronIds()"
230 [startWithSearch]="context.lastPatronSearch"
231 (searchFired)="patronSearchFired($event)"
232 (formCleared)="patronSearchCleared()"
233 (selectionChange)="patronSelectionChange($event)"
234 (patronsActivated)="patronsActivated($event)">
241 <ng-container *ngIf="patronTab === 'edit'">
242 <!-- put the editor toolbar up here in the sticky section -->
243 <eg-patron-edit-toolbar #editorToolbar [patronId]="patronId">
244 </eg-patron-edit-toolbar>
247 </div><!-- end of sticky top -->
249 <div *ngIf="!loading" class="pt-3">
250 <div [ngbNavOutlet]="patronNav"></div>