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