2 <!-- org unit selector -->
6 <div class="input-group">
7 <label for="contextOrgSelect" class="form-label input-group-text" i18n>Holdings Maintenance</label>
8 <eg-org-select [initialOrg]="contextOrg"
9 domId="contextOrgSelect"
10 persistKey="catalog.holdings"
11 (onChange)="contextOrgChanged($event)"
12 [orgClassCallback]="orgClassCallback">
18 <!-- Location / Barcode cell template -->
20 <ng-template #locationTemplate let-row="row" let-userContext="userContext">
21 <!-- ps-* is doubled for added impact -->
22 <div class="ps-{{row.locationDepth}}">
23 <span class="ps-{{row.locationDepth}}">
24 <button type="button" class="btn btn-link text-decoration-none label-with-material-icon" (click)="userContext.toggleExpandRow(row)">
25 <!-- leave the icons in place for all node types, but make them
26 invisible when they are not needed. -->
27 <span *ngIf="row.treeNode.expanded"
28 [ngClass]="{invisible: row.copy || row.treeNode.children.length === 0}"
29 class="material-icons p-0 m-0" aria-hidden="true">keyboard_arrow_down</span>
30 <span *ngIf="!row.treeNode.expanded"
31 [ngClass]="{invisible: row.copy || row.treeNode.children.length === 0}"
32 class="material-icons p-0 m-0" aria-hidden="true">keyboard_arrow_right</span>
33 <span>{{row.locationLabel}}</span>
39 <!-- Holdable true/false display -->
41 <ng-template #holdableTemplate let-row="row" let-userContext="userContext">
42 <ng-container *ngIf="row.copy">
43 <eg-bool [value]="userContext.copyIsHoldable(row.copy)">
48 <eg-mark-damaged-dialog #markDamagedDialog [handleCheckin]="true"></eg-mark-damaged-dialog>
49 <eg-mark-missing-dialog #markMissingDialog></eg-mark-missing-dialog>
50 <eg-copy-alerts-dialog #copyAlertsDialog></eg-copy-alerts-dialog>
51 <eg-copy-tags-dialog #copyTagsDialog></eg-copy-tags-dialog>
52 <eg-copy-notes-dialog #copyNotesDialog></eg-copy-notes-dialog>
53 <eg-replace-barcode-dialog #replaceBarcode></eg-replace-barcode-dialog>
54 <eg-delete-holding-dialog #deleteHolding></eg-delete-holding-dialog>
55 <eg-bucket-dialog #bucketDialog></eg-bucket-dialog>
56 <eg-conjoined-items-dialog #conjoinedDialog></eg-conjoined-items-dialog>
57 <eg-make-bookable-dialog #makeBookableDialog></eg-make-bookable-dialog>
58 <eg-transfer-items #transferItems></eg-transfer-items>
59 <eg-transfer-holdings #transferHoldings></eg-transfer-holdings>
60 <eg-alert-dialog #transferAlert
61 i18n-dialogTitle i18n-dialogBody
62 dialogTitle="No Target Selected"
63 dialogBody="Please select a suitable transfer target"></eg-alert-dialog>
65 <!-- holdings grid -->
66 <div class='eg-copies w-100 mt-3'>
67 <eg-grid #holdingsGrid [dataSource]="gridDataSource"
68 (onRowActivate)="onRowActivate($event)" [disablePaging]="true"
69 [rowClassCallback]="rowClassCallback" [cellTextGenerator]="cellTextGenerator"
70 [sortable]="false" persistKey="cat.holdings">
72 <!-- checkboxes / filters -->
74 <eg-grid-toolbar-checkbox i18n-label label="Show Call Numbers"
75 #callNumsCheckbox (onChange)="toggleShowCallNums($event)">
76 </eg-grid-toolbar-checkbox>
77 <eg-grid-toolbar-checkbox i18n-label label="Show Copies"
78 #copiesCheckbox (onChange)="toggleShowCopies($event)">
79 </eg-grid-toolbar-checkbox>
80 <eg-grid-toolbar-checkbox i18n-label label="Show Empty Call Numbers"
81 #emptyCallNumsCheckbox (onChange)="toggleShowEmptyCallNums($event)">
82 </eg-grid-toolbar-checkbox>
83 <eg-grid-toolbar-checkbox i18n-label label="Show Empty Libs"
84 #emptyLibsCheckbox (onChange)="toggleShowEmptyLibs($event)">
85 </eg-grid-toolbar-checkbox>
89 <!-- row actions : Ungrouped -->
91 <eg-grid-toolbar-action
92 i18n-label label="Print Labels" (onClick)="openItemPrintLabels($event)">
93 </eg-grid-toolbar-action>
95 <eg-grid-toolbar-action
96 i18n-label label="Request Items" (onClick)="requestItems($event)">
97 </eg-grid-toolbar-action>
99 <eg-grid-toolbar-action
100 i18n-label label="Link as Conjoined to Marked Bib Record"
101 (onClick)="openConjoinedDialog($event)">
102 </eg-grid-toolbar-action>
104 <!-- row actions : Add -->
106 <eg-grid-toolbar-action
107 i18n-group group="Add" i18n-label label="Add Call Numbers"
108 (onClick)="openHoldingAdd($event, true, false)">
109 </eg-grid-toolbar-action>
111 <eg-grid-toolbar-action
112 i18n-group group="Add" i18n-label label="Add Items"
113 (onClick)="openHoldingAdd($event, false, true)">
114 </eg-grid-toolbar-action>
116 <eg-grid-toolbar-action
117 i18n-group group="Add" i18n-label label="Add Call Numbers and Items"
118 (onClick)="openHoldingAdd($event, true, true)">
119 </eg-grid-toolbar-action>
121 <eg-grid-toolbar-action
122 i18n-group group="Add" i18n-label label="Add/Manage Item Alerts"
123 (onClick)="openItemAlerts($event)">
124 </eg-grid-toolbar-action>
126 <eg-grid-toolbar-action
127 i18n-group group="Add" i18n-label label="Add/Manage Item Tags"
128 (onClick)="openItemTags($event)">
129 </eg-grid-toolbar-action>
131 <eg-grid-toolbar-action
132 i18n-group group="Add" i18n-label label="Add/Manage Item Notes"
133 (onClick)="openItemNotes($event)">
134 </eg-grid-toolbar-action>
136 <eg-grid-toolbar-action
137 i18n-group group="Add" i18n-label label="Add Items To Bucket"
138 (onClick)="openBucketDialog($event)">
139 </eg-grid-toolbar-action>
141 <!-- row actions: Booking -->
143 <eg-grid-toolbar-action
144 i18n-group group="Booking" i18n-label label="Book Item Now"
145 (onClick)="bookItems($event)">
146 </eg-grid-toolbar-action>
148 <eg-grid-toolbar-action
149 i18n-group group="Booking" i18n-label label="Make Items Bookable"
150 (onClick)="makeBookable($event)">
151 </eg-grid-toolbar-action>
153 <eg-grid-toolbar-action
154 i18n-group group="Booking" i18n-label label="Manage Reservations"
155 (onClick)="manageReservations($event)">
156 </eg-grid-toolbar-action>
158 <!-- row actions: Edit -->
160 <eg-grid-toolbar-action
161 i18n-group group="Edit" i18n-label label="Edit Call Numbers"
162 (onClick)="openHoldingEdit($event, false, true)">
163 </eg-grid-toolbar-action>
165 <eg-grid-toolbar-action
166 i18n-group group="Edit" i18n-label label="Edit Call Numbers And Items"
167 (onClick)="openHoldingEdit($event, false, false)">
168 </eg-grid-toolbar-action>
170 <eg-grid-toolbar-action
171 i18n-group group="Edit" i18n-label label="Edit Items"
172 (onClick)="openHoldingEdit($event, true, false)">
173 </eg-grid-toolbar-action>
175 <eg-grid-toolbar-action
176 i18n-group group="Edit" i18n-label label="Replace Barcodes"
177 (onClick)="openReplaceBarcodeDialog($event)">
178 </eg-grid-toolbar-action>
180 <!-- row actions: Delete -->
182 <eg-grid-toolbar-action
183 i18n-group group="Delete" i18n-label label="Delete Empty Call Numbers"
184 (onClick)="deleteHoldings($event, 'callNums')">
185 </eg-grid-toolbar-action>
187 <eg-grid-toolbar-action
188 i18n-group group="Delete" i18n-label label="Delete Items"
189 (onClick)="deleteHoldings($event, 'copies')">
190 </eg-grid-toolbar-action>
192 <eg-grid-toolbar-action
193 i18n-group group="Delete" i18n-label label="Delete Call Numbers and Items"
194 (onClick)="deleteHoldings($event, 'both')">
195 </eg-grid-toolbar-action>
197 <!-- row actions : Show -->
199 <eg-grid-toolbar-action
200 i18n-group group="Show" i18n-label label="Show Item Status (list)"
201 (onClick)="openItemStatusList($event)"></eg-grid-toolbar-action>
203 <eg-grid-toolbar-action
204 i18n-group group="Show" i18n-label label="Show Item Status (detail)"
205 (onClick)="openItemStatus($event)"></eg-grid-toolbar-action>
207 <eg-grid-toolbar-action
208 i18n-group group="Show" i18n-label label="Show Item Holds"
209 (onClick)="openItemHolds($event)"></eg-grid-toolbar-action>
211 <eg-grid-toolbar-action
212 i18n-group group="Show" i18n-label label="Show Triggered Events"
213 (onClick)="openItemTriggeredEvents($event)"></eg-grid-toolbar-action>
215 <!-- row actions : Mark -->
217 <eg-grid-toolbar-action
218 group="Mark" i18n-group i18n-label label="Mark Item Damaged"
219 (onClick)="showMarkDamagedDialog($event)"></eg-grid-toolbar-action>
221 <eg-grid-toolbar-action
222 i18n-group group="Mark" i18n-label label="Mark Item Missing"
223 (onClick)="showMarkMissingDialog($event)">
224 </eg-grid-toolbar-action>
226 <eg-grid-toolbar-action
227 i18n-group group="Mark"
228 i18n-label label="Mark Library/Call Number as Transfer Destination"
229 (onClick)="markLibCnForTransfer($event)">
230 </eg-grid-toolbar-action>
232 <eg-grid-toolbar-action
233 i18n-group group="Transfer"
234 i18n-label label="Transfer Items to Marked Destination"
235 (onClick)="transferSelectedItems($event)">
236 </eg-grid-toolbar-action>
238 <eg-grid-toolbar-action
239 i18n-group group="Transfer"
240 i18n-label label="Transfer Holdings to Marked Destination"
241 (onClick)="transferSelectedHoldings($event)">
242 </eg-grid-toolbar-action>
245 <!-- NOTE column names were added to match the names from the AngJS grid
246 so grid settings would propagate -->
248 <eg-grid-column path="index" [hidden]="true" [index]="true">
250 <eg-grid-column name="id" path="copy.id" [hidden]="true" label="Item ID" i18n-label>
252 <eg-grid-column path="callNum.id" [hidden]="true" label="Call Number ID" i18n-label>
254 <eg-grid-column name="owner_label" [flex]="4"
255 [cellTemplate]="locationTemplate" [cellContext]="gridTemplateContext"
256 label="Location/Barcode" [disableTooltip]="true" i18n-label>
258 <eg-grid-column path="callNumCount" datatype="number" label="Call Numbers" i18n-label>
260 <eg-grid-column path="copyCount" datatype="number" label="Copies" i18n-label>
262 <eg-grid-column path="callNum._label" name="call_number.label"
263 label="Call Number" i18n-label>
265 <eg-grid-column path="copy.barcode" name="barcode" label="Barcode" i18n-label>
267 <eg-grid-column i18n-label label="Circ Library" path="copy.circ_lib"
268 name="circ_lib.name" datatype="org_unit"></eg-grid-column>
269 <eg-grid-column i18n-label label="Owning Library" path="callNum.owning_lib"
270 datatype="org_unit"></eg-grid-column>
271 <eg-grid-column i18n-label label="Due Date" path="circ.due_date"
272 datatype="timestamp"></eg-grid-column>
273 <eg-grid-column i18n-label label="Shelving Location"
274 path="copy.location.name" name="location.name">
276 <eg-grid-column i18n-label label="Circulation Modifier"
277 path="copy.circ_modifier" name="circ_modifier">
279 <eg-grid-column i18n-label label="Item Number" path="copy.copy_number"
280 name="copy_number" [hidden]="true">
283 <eg-grid-column i18n-label label="Status"
284 path="copy.status.name" name="status_name">
286 <eg-grid-column i18n-label label="Call Number Prefix"
287 path="callNum.prefix.label" name="call_number.prefix.label" [hidden]="true">
289 <eg-grid-column i18n-label label="Call Number Suffix"
290 path="callNum.suffix.label" name="call_number.suffix.label" [hidden]="true">
292 <eg-grid-column i18n-label label="Parts" path="copy._monograph_parts"
293 name="monograph_parts" [hidden]="true">
295 <eg-grid-column i18n-label label="Notes" path="copy.notes.length"
296 name="note_count" [hidden]="true">
298 <eg-grid-column i18n-label label="Tags" path="copy.tags.length"
299 name="tag_count" [hidden]="true">
301 <eg-grid-column i18n-label label="Alerts" path="copy.copy_alerts.length"
302 name="alert_count" [hidden]="true">
304 <eg-grid-column i18n-label label="Circulate As MARC Type"
305 path="copy.circ_as_type" [hidden]="true">
307 <eg-grid-column i18n-label label="Active Date"
308 path="copy.active_date" datatype="timestamp">
310 <eg-grid-column i18n-label label="Total Circ Count"
311 path="copy.total_circ_count.circ_count">
313 <eg-grid-column i18n-label label="Last Circ Date"
314 path="copy.last_circ.last_circ" datatype="timestamp">
316 <eg-grid-column i18n-label label="Create Date"
317 path="copy.create_date" datatype="timestamp">
319 <eg-grid-column i18n-label label="Age Hold Protection"
320 path="copy.age_protect.name" name="age_protect.name"></eg-grid-column>
321 <eg-grid-column i18n-label label="Item Price"
322 path="copy.price" name="price" [hidden]="true"></eg-grid-column>
324 <eg-grid-column i18n-label label="Circulate" path="copy.circulate"
325 name="circulate" datatype="bool" [hidden]="true"></eg-grid-column>
326 <eg-grid-column i18n-label label="Deposit" path="copy.deposit"
327 name="deposit" datatype="bool" [hidden]="true"></eg-grid-column>
328 <eg-grid-column i18n-label label="Deposit Amount" path="copy.deposit_amount"
329 name="deposit_amount" datatype="money" [hidden]="true"></eg-grid-column>
330 <eg-grid-column i18n-label label="Holdable?" name="holdable"
331 [cellTemplate]="holdableTemplate" [cellContext]="gridTemplateContext">
333 <eg-grid-column i18n-label label="Reference?" path="copy.ref"
334 name="ref" datatype="bool" [hidden]="true"></eg-grid-column>
335 <eg-grid-column i18n-label label="Last Inventory Date"
336 path="copy.latest_inventory.inventory_date"
337 name="latest_inventory.inventory_date" datatype="timestamp" [hidden]="true">
339 <eg-grid-column i18n-label label="Last Inventory Workstation"
340 path="copy.latest_inventory.inventory_workstation.name"
341 name="latest_inventory.inventory_workstation.name" [hidden]="true">
343 <eg-grid-column i18n-label label="OPAC Visible?" path="copy.opac_visible"
344 name="opac_visible" datatype="bool" [hidden]="true">