3 Two separate dialogs are defined within, one for the holds slip
4 and one for hold and non-hold transits. They share a number of
8 <ng-template #patronSummary>
9 <div *ngIf="checkin.patron.alias()">
10 Hold for patron {{checkin.patron.alias()}}
12 <div *ngIf="!checkin.patron.alias()" i18n>
13 Hold for patron {{checkin.patron.family_name()}},
14 {{checkin.patron.first_given_name()}} {{checkin.patron.second_given_name()}}
16 <div *ngIf="!checkin.patron.alias()">
17 <div *ngIf="checkin.patron.pref_family_name()
18 || checkin.patron.pref_first_given_name()
19 || checkin.patron.pref_second_given_name()">
21 {{checkin.patron.pref_family_name() || checkin.patron.family_name()}},
22 {{checkin.patron.pref_first_given_name() || checkin.patron.first_given_name()}}
23 {{checkin.patron.pref_second_given_name()}}
27 <span class="mr-2" i18n>Patron Barcode:</span>
28 <ng-container *ngIf="checkin.patron.card()">
29 <span>{{checkin.patron.card().barcode()}}</span>
34 <ng-template #itemSummary>
36 <span class="mr-2" i18n>Item Barcode:</span>
37 <span>{{checkin.copy.barcode()}}</span>
40 <span class="mr-2" i18n>Title:</span>
41 <span>{{checkin.title}}</span>
44 <span class="mr-2" i18n>Author:</span>
45 <span>{{checkin.author}}</span>
47 <div *ngIf="checkin.volume">
48 <span class="mr-2" i18n>Call Number:</span>
49 <span>{{checkin.volume.prefix().label()}} {{
50 checkin.volume.label()}} {{checkin.volume.suffix().label()}}</span>
54 <ng-template #holdSummary>
56 <span class="mr-2" i18n>Request Date:</span>
57 <span>{{checkin.hold.request_time() | date:'short'}}</span>
59 <div *ngIf="checkin.hold.notes().length > 0">
60 <span class="mr-2" i18n>Request Notes:</span>
62 <li *ngFor="let note of checkin.hold.notes()">
63 <strong>{{note.title()}}</strong>: {{note.body()}}
64 <span *ngIf="note.slip() =='t' || note.pub() == 't'" i18n>[Patron-visible]</span>
70 <ng-template #holdShelfTmpl>
71 <div *ngIf="checkin.hold.behind_desk() == 't'" i18n>
72 This item should be routed to the <strong>Private Holds Shelf</strong>
74 <div *ngIf="checkin.hold.behind_desk() == 'f'" i18n>
75 This item should be routed to the <strong>Public Holds Shelf</strong>
79 <ng-container *ngTemplateOutlet="itemSummary"></ng-container><br/>
80 <ng-container *ngTemplateOutlet="patronSummary"></ng-container><br/>
82 <!-- in hold shelf mode, we need to specify the notification prefs -->
83 <div *ngIf="checkin.hold.phone_notify()" i18n>Notify by phone: {{checkin.hold.phone_notify()}}</div>
84 <div *ngIf="checkin.hold.sms_notify()" i18n>Notify by text: {{checkin.hold.sms_notify()}}</div>
85 <div *ngIf="checkin.hold.email_notify() == 't'" i18n>Notify by email: {{checkin.patron.email()}}</div>
87 <ng-container *ngTemplateOutlet="holdSummary"></ng-container>
90 <span class="mr-2" i18n>Slip Date:</span>
91 <span>{{today | date:'short'}}</span>
95 <ng-template #transitTmpl>
97 <span class="mr-2" i18n>Destination</span>
98 <strong>{{checkin.destOrg.shortname()}}</strong>
100 <div *ngIf="checkin.destCourierCode">{{checkin.destCourierCode}} </div>
104 <strong>{{checkin.destOrg.name()}}</strong><br>
105 <span *ngIf="checkin.destAddress">
106 {{checkin.destAddress.street1()}} {{checkin.destAddress.street2()}}<br/>
107 {{checkin.destAddress.city()}}, {{checkin.destAddress.state()}} {{checkin.destAddress.post_code()}}
109 <span *ngIf="!checkin.destAddress" i18n>
110 We do not have a holds address for this library.
113 <abbr title="Phone">P:</abbr> {{checkin.destOrg.phone()}}
116 <ng-container *ngTemplateOutlet="itemSummary"></ng-container>
118 <div *ngIf="checkin.hold">
119 <ng-container *ngTemplateOutlet="patronSummary"></ng-container>
121 <ng-container *ngTemplateOutlet="holdSummary"></ng-container>
125 <span class="mr-2" i18n>Slip Date:</span>
126 <span>{{today | date:'short'}}</span>
130 <ng-template #dialogContent>
131 <div class="modal-header">
133 <ng-container *ngIf="slip == 'hold_shelf_slip'">
134 <strong i18n>Hold Slip</strong><br/>
135 <img class="p-2" src="/images/portal/holds.png" i18n-alt alt="holds icon"/>
137 <ng-container *ngIf="slip != 'hold_shelf_slip'">
138 <strong i18n>Transit Slip</strong><br/>
139 <img class="p-2" src="/images/transit.png" i18n-alt alt="transit van icon"/>
142 <button type="button" class="close"
143 i18n-aria-label aria-label="Close" (click)="close()">
144 <span aria-hidden="true">×</span>
147 <div class="modal-body">
148 <ng-container *ngIf="slip == 'hold_shelf_slip'">
149 <ng-container *ngTemplateOutlet="holdShelfTmpl"></ng-container>
151 <ng-container *ngIf="slip != 'hold_shelf_slip'">
152 <ng-container *ngTemplateOutlet="transitTmpl"></ng-container>
155 <div class="modal-footer">
156 <button type="button" class="btn btn-success" (click)="print()" i18n>Print</button>
157 <button type="button" class="btn btn-warning" (click)="close()" i18n>Do Not Print</button>