3 i18n-dialogTitle i18n-dialogBody
4 dialogTitle="Delete Call Number?"
5 dialogBody="Delete {{deleteVolCount}} Call Number(s) and All Associated Item(s)?">
10 i18n-dialogTitle i18n-dialogBody
11 dialogTitle="Delete Item?"
12 dialogBody="Delete {{deleteCopyCount}} Item(s)?">
15 <div class="row d-flex bg-faint mb-2 pb-1 pt-1 border border-dark rounded">
16 <div class="p-1" [ngStyle]="{flex: flexAt(1)}"> </div>
17 <div class="p-1" [ngStyle]="{flex: flexAt(2)}"> </div>
18 <div class="p-1" [ngStyle]="{flex: flexAt(3)}" *ngIf="displayColumn('classification')">
19 <div><label class="font-weight-bold" i18n>Classification</label></div>
21 <eg-combobox [smallFormControl]="true" [(ngModel)]="batchVolClass">
22 <eg-combobox-entry *ngFor="let cls of volcopy.commonData.acn_class"
23 [entryId]="cls.id()" [entryLabel]="cls.name()">
28 <div class="p-1" [ngStyle]="{flex: flexAt(4)}" *ngIf="displayColumn('prefix')">
29 <div><label class="font-weight-bold" i18n>Prefix</label></div>
31 <eg-combobox [smallFormControl]="true" [(ngModel)]="batchVolPrefix">
32 <eg-combobox-entry *ngFor="let pfx of volcopy.commonData.acn_prefix"
33 [entryId]="pfx.id()" [entryLabel]="pfx.label()">
38 <div class="p-1" [ngStyle]="{flex: flexAt(5)}">
40 <label class="font-weight-bold label-with-material-icon" i18n>
45 <eg-combobox [smallFormControl]="true"
46 [allowFreeText]="true" [(ngModel)]="batchVolLabel">
47 <eg-combobox-entry *ngFor="let label of recordVolLabels"
48 [entryId]="label" [entryLabel]="label">
53 <div class="p-1" [ngStyle]="{flex: flexAt(6)}" *ngIf="displayColumn('suffix')">
54 <div><label class="font-weight-bold" i18n>Suffix</label></div>
56 <eg-combobox [smallFormControl]="true" [(ngModel)]="batchVolSuffix">
57 <eg-combobox-entry *ngFor="let sfx of volcopy.commonData.acn_suffix"
58 [entryId]="sfx.id()" [entryLabel]="sfx.label()">
63 <div class="p-1" [ngStyle]="{flex: flexAt(7)}">
64 <div><label class="font-weight-bold" i18n>Batch</label></div>
66 <button class="btn btn-sm btn-outline-dark label-with-material-icon"
67 (click)="batchVolApply()">
68 <span i18n>Apply</span>
69 <span class="material-icons">arrow_downward</span>
73 <div class="p-1" [ngStyle]="{flex: flexAt(8)}">
74 <ng-container *ngIf="displayColumn('generate_barcodes')">
75 <div><label class="font-weight-bold" i18n>Generate Barcodes</label></div>
76 <button class="btn btn-sm btn-outline-dark label-with-material-icon"
77 (click)="generateBarcodes()">
78 <span i18n>Generate</span>
79 <span class="material-icons">arrow_downward</span>
83 <div class="p-1" [ngStyle]="{flex: flexSpan(9, 10)}">
84 <ng-container *ngIf="displayColumn('generate_barcodes')">
85 <div><label class="font-weight-bold" i18n>Checkdigit</label></div>
86 <div class="form-check form-check-inline">
87 <input class="form-check-input" type="checkbox"
88 (change)="saveUseCheckdigit()"
89 id="use-checkdigit" [(ngModel)]="useCheckdigit"/>
90 <label class="form-check-label" for="use-checkdigit" i18n>
100 <div class="row d-flex mt-2 mb-2">
101 <div class="p-1" [ngStyle]="{flex: flexAt(1)}">
102 <span class="font-weight-bold" i18n>Owning Library
103 <ng-container *ngIf="expand !== 1">
104 <button title="Expand Column" i18n-title
105 class="material-icon-button" (click)="expand = 1" i18n>
109 <ng-container *ngIf="expand === 1">
110 <button title="Shrink Column" i18n-title
111 class="material-icon-button" (click)="expand = null" i18n>
117 <div class="p-1" [ngStyle]="{flex: flexAt(2)}">
118 <label class="font-weight-bold" i18n>Call Numbers</label>
120 <div class="p-1" [ngStyle]="{flex: flexAt(3)}" *ngIf="displayColumn('classification')">
121 <span class="font-weight-bold" i18n>Classification
122 <ng-container *ngIf="expand !== 3">
123 <button title="Expand Column" i18n-title
124 class="material-icon-button" (click)="expand = 3" i18n>
128 <ng-container *ngIf="expand === 3">
129 <button title="Shrink Column" i18n-title
130 class="material-icon-button" (click)="expand = null" i18n>
136 <div class="p-1" [ngStyle]="{flex: flexAt(4)}" *ngIf="displayColumn('prefix')">
137 <span class="font-weight-bold" i18n>Prefix
138 <ng-container *ngIf="expand !== 4">
139 <button title="Expand Column" i18n-title
140 class="material-icon-button" (click)="expand = 4" i18n>
144 <ng-container *ngIf="expand === 4">
145 <button title="Shrink Column" i18n-title
146 class="material-icon-button" (click)="expand = null" i18n>
152 <div class="p-1" [ngStyle]="{flex: flexAt(5)}">
153 <span class="font-weight-bold" i18n>Call Number Label
154 <ng-container *ngIf="expand !== 5">
155 <button title="Expand Column" i18n-title
156 class="material-icon-button" (click)="expand = 5" i18n>
160 <ng-container *ngIf="expand === 5">
161 <button title="Shrink Column" i18n-title
162 class="material-icon-button" (click)="expand = null" i18n>
168 <div class="p-1" [ngStyle]="{flex: flexAt(6)}" *ngIf="displayColumn('suffix')">
169 <span class="font-weight-bold" i18n>Suffix
170 <ng-container *ngIf="expand !== 6">
171 <button title="Expand Column" i18n-title
172 class="material-icon-button" (click)="expand = 6" i18n>
176 <ng-container *ngIf="expand === 6">
177 <button title="Shrink Column" i18n-title
178 class="material-icon-button" (click)="expand = null" i18n>
184 <div class="p-1" [ngStyle]="{flex: flexAt(7)}">
185 <label class="font-weight-bold" i18n>Items</label>
188 When hiding the copy_number column, absorb its colum width to
189 take advantage of the space and to ensure the main columns still
190 line up with the batch updater row sitting above
193 [ngStyle]="{flex: displayColumn('copy_number_vc') ? flexAt(8) : flexSpan(8, 9)}">
194 <span class="font-weight-bold" i18n>Barcode
195 <ng-container *ngIf="expand !== 8">
196 <button title="Expand Column" i18n-title
197 class="material-icon-button" (click)="expand = 8" i18n>
201 <ng-container *ngIf="expand === 8">
202 <button title="Shrink Column" i18n-title
203 class="material-icon-button" (click)="expand = null" i18n>
209 <div class="p-1" [ngStyle]="{flex: flexAt(9)}" *ngIf="displayColumn('copy_number_vc')">
210 <label class="font-weight-bold" i18n>Item #</label>
212 <div class="p-1" [ngStyle]="{flex: flexAt(10)}">
213 <span class="font-weight-bold" i18n>Part
214 <ng-container *ngIf="expand !== 10">
215 <button title="Expand Column" i18n-title
216 class="material-icon-button" (click)="expand = 10" i18n>
220 <ng-container *ngIf="expand === 10">
221 <button title="Shrink Column" i18n-title
222 class="material-icon-button" (click)="expand = null" i18n>
230 <ng-container *ngFor="let orgNode of context.orgNodes(); let orgIdx = index">
231 <ng-container *ngFor="let volNode of orgNode.children; let volIdx = index">
232 <ng-container *ngFor="let copyNode of volNode.children; let copyIdx = index">
233 <div class="row d-flex mt-1" [ngClass]="{'vol-row': copyIdx == 0}">
234 <div class="p-1" [ngStyle]="{flex: flexAt(1)}">
235 <ng-container *ngIf="copyIdx == 0">
236 <span>{{orgNode.target.shortname()}}</span>
238 <ng-container *ngIf="context.sessionType == 'record' || context.sessionType == 'mixed'">
239 <button class="clear-button" (click)="deleteVol(volNode)"
240 title="Delete Call Number {{volNode.target.label()}}" i18n-title>
241 <span class="material-icons">clear</span>
246 <div class="p-1" [ngStyle]="{flex: flexAt(2)}">
247 <ng-container *ngIf="copyIdx == 0 && volIdx == 0">
248 <input type="number" class="form-control form-control-sm"
249 [disabled]="context.sessionType == 'copy' || context.sessionType == 'vol'"
250 [required]="true" [min]="existingVolCount(orgNode)"
251 [ngModel]="orgNode.children.length"
252 (ngModelChange)="volCountChanged(orgNode, $event)"/>
255 <div class="p-1" [ngStyle]="{flex: flexAt(3)}" *ngIf="displayColumn('classification')">
256 <ng-container *ngIf="copyIdx == 0">
258 [selectedId]="volNode.target.label_class()"
259 [smallFormControl]="true"
261 (onChange)="applyVolValue(volNode.target, 'label_class', $event ? $event.id : null)">
262 <eg-combobox-entry *ngFor="let cls of volcopy.commonData.acn_class"
263 [entryId]="cls.id()" [entryLabel]="cls.name()">
268 <div class="p-1" [ngStyle]="{flex: flexAt(4)}" *ngIf="displayColumn('prefix')">
269 <ng-container *ngIf="copyIdx == 0">
271 [selectedId]="volNode.target.prefix()"
273 [smallFormControl]="true"
274 (onChange)="applyVolValue(volNode.target, 'prefix', $event ? $event.id : null)">
276 [entryId]="-1" entryLabel="<None>" i18n-entryLabel>
278 <eg-combobox-entry *ngFor="let pfx of volcopy.commonData.acn_prefix"
279 [entryId]="pfx.id()" [entryLabel]="pfx.label()">
284 <div class="p-1" [ngStyle]="{flex: flexAt(5)}">
285 <ng-container *ngIf="copyIdx == 0">
286 <input class="form-control form-control-sm" type="text"
289 [ngClass]="{invalid: !volNode.target.label()}"
290 [ngModel]="volNode.target.label()"
291 (change)="applyVolValue(volNode.target, 'label', $event.target.value)">
294 <div class="p-1" [ngStyle]="{flex: flexAt(6)}" *ngIf="displayColumn('suffix')">
295 <ng-container *ngIf="copyIdx == 0">
297 [selectedId]="volNode.target.suffix()"
299 [smallFormControl]="true"
300 (onChange)="applyVolValue(volNode.target, 'suffix', $event ? $event.id : null)">
302 [entryId]="-1" entryLabel="<None>" i18n-entryLabel>
304 <eg-combobox-entry *ngFor="let sfx of volcopy.commonData.acn_suffix"
305 [entryId]="sfx.id()" [entryLabel]="sfx.label()">
310 <div class="p-1" [ngStyle]="{flex: flexAt(7)}">
311 <ng-container *ngIf="copyIdx == 0">
312 <input type="number" class="form-control form-control-sm"
313 [disabled]="context.sessionType == 'copy'"
314 [required]="true" [min]="existingCopyCount(volNode)"
315 [ngModel]="volNode.children.length"
316 (ngModelChange)="copyCountChanged(volNode, $event)"/>
320 [ngStyle]="{flex: displayColumn('copy_number_vc') ? flexAt(8) : flexSpan(8, 9)}">
322 <ng-container *ngIf="context.sessionType != 'copy'">
323 <button class="clear-button" (click)="deleteCopy(copyNode)"
324 [disabled]="volcopy.restrictCopyDelete(copyNode.target.status())"
325 title="Delete Item {{copyNode.target.barcode()}}" i18n-title>
326 <span class="material-icons">clear</span>
331 Barcode value is not required for new copies, since those
332 without a barcode will be ignored.
334 <input type="text" class="form-control form-control-sm"
335 title="{{copyStatLabel(copyNode.target)}}"
336 id="barcode-input-{{copyNode.target.id()}}"
337 spellcheck="false" [required]="true"
338 placeholder="New Barcode..." i18n-placeholder
339 [disabled]="volcopy.copyStatIsMagic(copyNode.target.status())"
341 'text-danger': copyNode.target._dupe_barcode,
342 'invalid': !copyNode.target.barcode() && !copyNode.target.isnew()
344 (change)="barcodeChanged(copyNode.target, $event.target.value)"
345 (ngModelChange)="copyNode.target.barcode($event)"
346 (keyup.enter)="selectNextBarcode(copyNode.target.id())"
347 (keyup.shift.enter)="selectNextBarcode(copyNode.target.id(), true)"
348 (focus)="$event.target.select()"
349 [ngModel]="copyNode.target.barcode()"
350 (ngModelChange)="applyCopyValue(copyNode.target, 'barcode', $event)"/>
352 <div *ngIf="copyNode.target._dupe_barcode"
353 class="alert alert-danger font-italic p-1" i18n>
357 <div class="p-1" [ngStyle]="{flex: flexAt(9)}" *ngIf="displayColumn('copy_number_vc')">
358 <input type="number" min="1" class="form-control form-control-sm"
359 [ngModel]="copyNode.target.copy_number()"
360 (ngModelChange)="applyCopyValue(copyNode.target, 'copy_number', $event)"/>
362 <div class="p-1" [ngStyle]="{flex: flexAt(10)}">
363 <ng-container *ngIf="!recordHasParts(volNode.target.record())">
364 <label i18n>N/A</label>
366 <ng-container *ngIf="recordHasParts(volNode.target.record())">
368 [selectedId]="copyNode.target.parts()[0] ? copyNode.target.parts()[0].id() : null"
369 [smallFormControl]="true"
370 (onChange)="copyPartChanged(copyNode, $event)">
372 *ngFor="let part of volcopy.bibParts[volNode.target.record()]"
373 [entryId]="part.id()" [entryLabel]="part.label()">
385 <div class="row d-flex">
387 <div class="p-1" [ngStyle]="{flex: flexSpan(1, 2)}">
388 <eg-org-select #newVolOrg [applyDefault]="true"
389 [limitPerms]="['CREATE_VOLUME']" [hideOrgs]="volcopy.hideVolOrgs">
393 <div class="p-1" [ngStyle]="{flex: flexSpan(3, 4)}">
394 <button class="btn btn-outline-dark ml-2"
395 (click)="addVol(newVolOrg.selectedOrg())" i18n>
400 <div class="p-1" [ngStyle]="{flex: flexAt(5)}"></div>
401 <div class="p-1" [ngStyle]="{flex: flexAt(6)}"></div>
402 <div class="p-1" [ngStyle]="{flex: flexAt(7)}"></div>
404 <div class="p-1 pl-3" [ngStyle]="{flex: flexAt(8)}">
405 <ng-container *ngIf="displayColumn('generate_barcodes')">
406 <button class="btn btn-sm btn-outline-dark mr-2"
407 (click)="generateBarcodes()" i18n>Generate Barcodes</button>
411 <div class="p-1" [ngStyle]="{flex: flexSpan(9, 10)}">
412 <ng-container *ngIf="displayColumn('generate_barcodes')">
413 <div class="form-check form-check-inline mr-2">
414 <input class="form-check-input" type="checkbox"
415 (change)="saveUseCheckdigit()"
416 id="use-checkdigit-2" [(ngModel)]="useCheckdigit"/>
417 <label class="form-check-label" for="use-checkdigit-2" i18n>