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" [keyboard]="true" [roles]="false" role="tablist"
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 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>
92 <eg-patron-checkout></eg-patron-checkout>
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')}})
102 <ng-template ngbNavContent>
104 <eg-patron-items [patronId]="patronId"></eg-patron-items>
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')}})
114 <ng-template ngbNavContent>
115 <eg-patron-holds></eg-patron-holds>
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>
123 <span [ngClass]="{'text-danger': counts('fines', 'balance_owed') > 0}">
124 ({{counts('fines', 'balance_owed') | currency}})
127 <ng-template ngbNavContent>
128 <ng-container *ngIf="statementXact">
129 <eg-patron-bill-statement [patronId]="patronId" [xactId]="statementXact">
130 </eg-patron-bill-statement>
132 <ng-container *ngIf="billingHistoryTab">
133 <eg-patron-billing-history [patronId]="patronId" [tab]="billingHistoryTab">
134 </eg-patron-billing-history>
136 <ng-container *ngIf="!statementXact && !billingHistoryTab">
137 <eg-patron-bills [patronId]="patronId"></eg-patron-bills>
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>
147 <eg-patron-messages [patronId]="patronId"></eg-patron-messages>
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">
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}}"
185 ngbDropdownItem i18n>Acquisition Patron Requests</a>
186 <a routerLink="/staff/booking/manage_reservations/by_patron/{{patronId}}"
188 ngbDropdownItem i18n>Booking: Manage Reservations</a>
189 <a routerLink="/staff/booking/create_reservation/for_patron/{{patronId}}"
191 ngbDropdownItem i18n>Booking: Create Reservation</a>
192 <a routerLink="/staff/booking/pickup/by_patron/{{patronId}}"
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>
201 <ng-template ngbNavContent>
202 <ng-container [ngSwitch]="altTab">
203 <div *ngSwitchCase="'alerts'">
204 <eg-patron-alerts></eg-patron-alerts>
206 <div *ngSwitchCase="'credentials'">
207 <eg-patron-test-password [patronId]="patronId">
208 </eg-patron-test-password>
210 <div *ngSwitchCase="'surveys'">
211 <eg-patron-survey-responses [patronId]="patronId">
212 </eg-patron-survey-responses>
214 <div *ngSwitchCase="'stat_cats'">
215 <eg-patron-statcats [patronId]="patronId">
216 </eg-patron-statcats>
218 <div *ngSwitchCase="'group'">
219 <eg-patron-group [patronId]="patronId">
222 <div *ngSwitchCase="'perms'">
223 <eg-patron-perms [patronId]="patronId">
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>
236 [patronIds]="recentPatronIds()"
237 [startWithSearch]="context.lastPatronSearch"
238 (searchFired)="patronSearchFired($event)"
239 (formCleared)="patronSearchCleared()"
240 (selectionChange)="patronSelectionChange($event)"
241 (patronsActivated)="patronsActivated($event)">
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>
254 </div><!-- end of sticky top -->
256 <div *ngIf="!loading" class="pt-3">
257 <div [ngbNavOutlet]="patronNav"></div>