[open-ils-commits] [GIT] Evergreen ILS branch master updated. e4c7118b144cb7d3f8d455f73da6dd929a5033fe

Evergreen Git git at git.evergreen-ils.org
Thu Aug 1 14:36:53 EDT 2019


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".

The branch, master has been updated
       via  e4c7118b144cb7d3f8d455f73da6dd929a5033fe (commit)
       via  67533c7dea2f23cec149a6e7aa6f878915e1a6c2 (commit)
       via  87208fdf4365fd2fff54045dab7f8e71a5abb602 (commit)
       via  3bcffcf63d81405b70d7761d35dc09dedb7a6438 (commit)
       via  e1b5a8b292ac9f81a0d6473507ed1b4447825bd3 (commit)
       via  3c3377008c95e17bdcf25b51df6d60fbf10c8f3a (commit)
       via  68e096cb240204de0a61b595e3cce847c2e52328 (commit)
      from  f0b7a9724bb432083278b9ac00967fa8af475aea (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit e4c7118b144cb7d3f8d455f73da6dd929a5033fe
Author: Galen Charlton <gmc at equinoxinitiative.org>
Date:   Thu Aug 1 14:33:45 2019 -0400

    LP#1823367: (follow-up) revert renaming of eg.cat.transfer_target_vol
    
    This local storage key is expected by AngularJS interfaces, and
    the AngularJS item status page in particular remains relevant for
    now. This prevents a regression whereby marking a call number/volume
    target in the Angular Holdings View interface would not set a
    target that would work when trying to initiate a transfer from the
    AngularJS Item Status interface.
    
    Signed-off-by: Galen Charlton <gmc at equinoxinitiative.org>

diff --git a/Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.ts b/Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.ts
index bc2390555f..25e0894a0e 100644
--- a/Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.ts
+++ b/Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.ts
@@ -662,7 +662,7 @@ export class HoldingsMaintenanceComponent implements OnInit {
             orgId = node.target.id();
 
             // Clear call number target when performed on an org unit row
-            this.localStore.removeLocalItem('eg.cat.transfer_target_callnum');
+            this.localStore.removeLocalItem('eg.cat.transfer_target_vol');
 
         } else if (node.nodeType === 'callNum') {
 
@@ -671,7 +671,7 @@ export class HoldingsMaintenanceComponent implements OnInit {
 
             // Add call number target when performed on a call number row.
             this.localStore.setLocalItem(
-                'eg.cat.transfer_target_callnum', node.target.id());
+                'eg.cat.transfer_target_vol', node.target.id());
         }
 
         this.localStore.setLocalItem('eg.cat.transfer_target_record', this.recordId);

commit 67533c7dea2f23cec149a6e7aa6f878915e1a6c2
Author: Bill Erickson <berickxx at gmail.com>
Date:   Thu Jul 18 17:30:56 2019 -0400

    LP1823367 Volume moniker migration continued
    
    Map a server-generated 'volume' field to its local/client equivalent of
    'callNum'.
    
    Signed-off-by: Bill Erickson <berickxx at gmail.com>
    Signed-off-by: Galen Charlton <gmc at equinoxinitiative.org>

diff --git a/Open-ILS/src/eg2/src/app/staff/share/holds/holds.service.ts b/Open-ILS/src/eg2/src/app/staff/share/holds/holds.service.ts
index 231b44cba5..a6ddb7e881 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/holds/holds.service.ts
+++ b/Open-ILS/src/eg2/src/app/staff/share/holds/holds.service.ts
@@ -131,6 +131,7 @@ export class HoldsService {
         ).pipe(mergeMap(meta => {
             const target: HoldRequestTarget = meta;
             target.bibId = target.bibrecord.id();
+            target.callNum = meta.volume; // map to client terminology
 
             return this.bib.getBibSummary(target.bibId)
             .pipe(map(sum => {

commit 87208fdf4365fd2fff54045dab7f8e71a5abb602
Author: Dan Wells <dbw2 at calvin.edu>
Date:   Thu Jul 18 15:20:39 2019 -0400

    LP1823367 Move away from "volume" moniker internally
    
    It isn't really correct to use "volume" and "call number"
    interchangeably.  This code substitutes various forms of the second
    for various forms of the first within the internal variable and
    function names.  To help contain the change, it tries to only do so
    for values which are native to eg2, and not leaking from or into other
    interfaces.
    
    Understanding that this change is somewhat disruptive, I still think it
    is in our overall best interest, as it will help us from falling into
    old habits, and it will help future coders better understand the
    relationship between the code and the interface.
    
    Note, this code does not change any filenames.  This is for review
    purposes to allow the changes to be more easily observed.  If accepted,
    we should change couple of affected filenames as well.
    
    Signed-off-by: Dan Wells <dbw2 at calvin.edu>
    Signed-off-by: Bill Erickson <berickxx at gmail.com>
    Signed-off-by: Galen Charlton <gmc at equinoxinitiative.org>

diff --git a/Open-ILS/src/eg2/src/app/staff/catalog/hold/hold.component.html b/Open-ILS/src/eg2/src/app/staff/catalog/hold/hold.component.html
index a63c69a449..fa04d86ede 100644
--- a/Open-ILS/src/eg2/src/app/staff/catalog/hold/hold.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/catalog/hold/hold.component.html
@@ -222,8 +222,8 @@
         </div>
         <div class="col-lg-2">{{ctx.holdMeta.bibSummary.display.author}}</div>
         <div class="col-lg-2">
-          <ng-container *ngIf="ctx.holdMeta.volume; else anyValue">
-            {{ctx.holdMeta.volume.label()}}
+          <ng-container *ngIf="ctx.holdMeta.callNum; else anyValue">
+            {{ctx.holdMeta.callNum.label()}}
           </ng-container>
         </div>
         <div class="col-lg-1">
diff --git a/Open-ILS/src/eg2/src/app/staff/catalog/record/actions.component.html b/Open-ILS/src/eg2/src/app/staff/catalog/record/actions.component.html
index 1d3856da08..62008a47df 100644
--- a/Open-ILS/src/eg2/src/app/staff/catalog/record/actions.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/catalog/record/actions.component.html
@@ -5,8 +5,8 @@
   i18n-text text="Record Overlay Target Set"></eg-string>
 <eg-string key="catalog.record.toast.holdTransfer" 
   i18n-text text="Hold Transfer Target Set"></eg-string>
-<eg-string key="catalog.record.toast.volumeTransfer" 
-  i18n-text text="Call Number Transfer Target Set"></eg-string>
+<eg-string key="catalog.record.toast.holdingTransfer" 
+  i18n-text text="Holding Transfer Target Set"></eg-string>
 <eg-string key="catalog.record.toast.cleared" 
   text="Record Marks Cleared"></eg-string>
 
@@ -23,7 +23,7 @@
     <button class="btn btn-outline-primary ml-1" i18n>Place Hold</button>
   </a>
 
-  <button class="btn btn-outline-primary ml-1" (click)="addVolumes()" i18n>
+  <button class="btn btn-outline-primary ml-1" (click)="addHoldings()" i18n>
     Add Holdings
   </button>
 
@@ -62,10 +62,10 @@
             (Currently {{targets.holdTransfer.current}})</ng-container>
         </span>
       </button>
-      <button class="dropdown-item" (click)="mark('volumeTransfer')">
+      <button class="dropdown-item" (click)="mark('holdingTransfer')">
         <span i18n>
-          Call Number Transfer<ng-container *ngIf="targets.volumeTransfer.current">
-            (Currently {{targets.volumeTransfer.current}})</ng-container>
+          Holding Transfer<ng-container *ngIf="targets.holdingTransfer.current">
+            (Currently {{targets.holdingTransfer.current}})</ng-container>
         </span>
       </button>
       <button class="dropdown-item" (click)="clearMarks()">
diff --git a/Open-ILS/src/eg2/src/app/staff/catalog/record/actions.component.ts b/Open-ILS/src/eg2/src/app/staff/catalog/record/actions.component.ts
index 23ed6960cb..2e3e2ad302 100644
--- a/Open-ILS/src/eg2/src/app/staff/catalog/record/actions.component.ts
+++ b/Open-ILS/src/eg2/src/app/staff/catalog/record/actions.component.ts
@@ -32,8 +32,8 @@ export class RecordActionsComponent implements OnInit {
             key: 'eg.circ.hold.title_transfer_target',
             current: null
         },
-        volumeTransfer: {
-            key: 'eg.cat.marked_volume_transfer_record',
+        holdingTransfer: {
+            key: 'eg.cat.marked_holding_transfer_record',
             current: null
         }
     };
@@ -83,11 +83,11 @@ export class RecordActionsComponent implements OnInit {
             .then(txt => this.toast.success(txt));
     }
 
-    // TODO: Support adding copies to existing volumes by getting
-    // selected volumes from the holdings grid.
-    // TODO: Support adding like volumes by getting selected
-    // volumes from the holdings grid.
-    addVolumes() {
+    // TODO: Support adding copies to existing call numbers by getting
+    // selected call numbers from the holdings grid.
+    // TODO: Support adding like call numbers by getting selected
+    // call numbers from the holdings grid.
+    addHoldings() {
         this.holdings.spawnAddHoldingsUi(this.recId);
     }
 
diff --git a/Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.css b/Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.css
index 0a604184ba..18412dafa9 100644
--- a/Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.css
+++ b/Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.css
@@ -5,7 +5,7 @@
 
 /* colors are based on "Evergreen Green", tinted and desaturated */
 
-.holdings-volume-row {
+.holdings-callNum-row {
     background-color: #c9efe4;
 }
 
diff --git a/Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.html b/Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.html
index 6925b88b7f..3c09dded91 100644
--- a/Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.html
@@ -48,7 +48,7 @@
 <eg-mark-missing-dialog #markMissingDialog></eg-mark-missing-dialog>
 <eg-copy-alerts-dialog #copyAlertsDialog></eg-copy-alerts-dialog>
 <eg-replace-barcode-dialog #replaceBarcode></eg-replace-barcode-dialog>
-<eg-delete-volcopy-dialog #deleteVolcopy></eg-delete-volcopy-dialog>
+<eg-delete-holding-dialog #deleteHolding></eg-delete-holding-dialog>
 <eg-bucket-dialog #bucketDialog></eg-bucket-dialog>
 <eg-conjoined-items-dialog #conjoinedDialog></eg-conjoined-items-dialog>
 <eg-make-bookable-dialog #makeBookableDialog></eg-make-bookable-dialog>
@@ -63,13 +63,13 @@
     <!-- checkboxes / filters -->
 
     <eg-grid-toolbar-checkbox i18n-label label="Show Call Numbers"
-      #volsCheckbox (onChange)="toggleShowVolumes($event)">
+      #callNumsCheckbox (onChange)="toggleShowCallNums($event)">
     </eg-grid-toolbar-checkbox> 
     <eg-grid-toolbar-checkbox i18n-label label="Show Copies" 
       #copiesCheckbox (onChange)="toggleShowCopies($event)">
     </eg-grid-toolbar-checkbox> 
     <eg-grid-toolbar-checkbox i18n-label label="Show Empty Call Numbers"
-      #emptyVolsCheckbox (onChange)="toggleShowEmptyVolumes($event)">
+      #emptyCallNumsCheckbox (onChange)="toggleShowEmptyCallNums($event)">
     </eg-grid-toolbar-checkbox> 
     <eg-grid-toolbar-checkbox i18n-label label="Show Empty Libs"            
       #emptyLibsCheckbox (onChange)="toggleShowEmptyLibs($event)">
@@ -96,17 +96,17 @@
 
     <eg-grid-toolbar-action
       i18n-group group="Add" i18n-label label="Add Call Numbers"
-      (onClick)="openVolCopyEdit($event, true, false)">
+      (onClick)="openHoldingEdit($event, true, false)">
     </eg-grid-toolbar-action>
 
     <eg-grid-toolbar-action
       i18n-group group="Add" i18n-label label="Add Items"
-      (onClick)="openVolCopyEdit($event, false, true)">
+      (onClick)="openHoldingEdit($event, false, true)">
     </eg-grid-toolbar-action>
 
     <eg-grid-toolbar-action
       i18n-group group="Add" i18n-label label="Add Call Numbers and Items"
-      (onClick)="openVolCopyEdit($event, true, true)">
+      (onClick)="openHoldingEdit($event, true, true)">
     </eg-grid-toolbar-action>
 
     <eg-grid-toolbar-action
@@ -135,17 +135,17 @@
 
     <eg-grid-toolbar-action
       i18n-group group="Edit" i18n-label label="Edit Call Numbers"
-      (onClick)="openVolCopyEdit($event, true, false)">
+      (onClick)="openHoldingEdit($event, true, false)">
     </eg-grid-toolbar-action>
 
     <eg-grid-toolbar-action
       i18n-group group="Edit" i18n-label label="Edit Call Numbers And Items"
-      (onClick)="openVolCopyEdit($event, true, true)">
+      (onClick)="openHoldingEdit($event, true, true)">
     </eg-grid-toolbar-action>
 
     <eg-grid-toolbar-action
       i18n-group group="Edit" i18n-label label="Edit Items"
-      (onClick)="openVolCopyEdit($event, false, true)">
+      (onClick)="openHoldingEdit($event, false, true)">
     </eg-grid-toolbar-action>
     
     <eg-grid-toolbar-action
@@ -162,7 +162,7 @@
 
     <eg-grid-toolbar-action
       i18n-group group="Delete" i18n-label label="Delete Empty Call Numbers"
-      (onClick)="deleteHoldings($event, 'vols')">
+      (onClick)="deleteHoldings($event, 'callNums')">
     </eg-grid-toolbar-action>
 
     <eg-grid-toolbar-action
@@ -219,24 +219,24 @@
     </eg-grid-column>
     <eg-grid-column name="id" path="copy.id" [hidden]="true" label="Item ID" i18n-label>
     </eg-grid-column>
-    <eg-grid-column path="volume.id" [hidden]="true" label="Call Number ID" i18n-label>
+    <eg-grid-column path="callNum.id" [hidden]="true" label="Call Number ID" i18n-label>
     </eg-grid-column>
     <eg-grid-column name="owner_label" [flex]="4"
       [cellTemplate]="locationTemplate" [cellContext]="gridTemplateContext" 
       label="Location/Barcode" [disableTooltip]="true" i18n-label>
     </eg-grid-column>
-    <eg-grid-column path="volumeCount" datatype="number" label="Call Numbers" i18n-label>
+    <eg-grid-column path="callNumCount" datatype="number" label="Call Numbers" i18n-label>
     </eg-grid-column>
     <eg-grid-column path="copyCount" datatype="number" label="Copies" i18n-label>
     </eg-grid-column>
-    <eg-grid-column path="volume._label" name="call_number.label" 
+    <eg-grid-column path="callNum._label" name="call_number.label" 
       label="Call Number" i18n-label>
     </eg-grid-column>
     <eg-grid-column path="copy.barcode" name="barcode" label="Barcode" i18n-label>
     </eg-grid-column>
     <eg-grid-column i18n-label label="Circ Library" path="copy.circ_lib" 
       name="circ_lib.name" datatype="org_unit"></eg-grid-column>
-    <eg-grid-column i18n-label label="Owning Library" path="volume.owning_lib" 
+    <eg-grid-column i18n-label label="Owning Library" path="callNum.owning_lib" 
       datatype="org_unit"></eg-grid-column>
     <eg-grid-column i18n-label label="Due Date" path="circ.due_date" 
       datatype="timestamp"></eg-grid-column>
@@ -254,10 +254,10 @@
       path="copy.status.name" name="status_name">
     </eg-grid-column>
     <eg-grid-column i18n-label label="Call Number Prefix" 
-      path="volume.prefix.label" name="call_number.prefix.label" [hidden]="true">
+      path="callNum.prefix.label" name="call_number.prefix.label" [hidden]="true">
     </eg-grid-column>
     <eg-grid-column i18n-label label="Call Number Suffix" 
-      path="volume.suffix.label" name="call_number.suffix.label" [hidden]="true">
+      path="callNum.suffix.label" name="call_number.suffix.label" [hidden]="true">
     </eg-grid-column>
     <eg-grid-column i18n-label label="Active/Create Date" 
       path="copy.active_date" datatype="timestamp">
diff --git a/Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.ts b/Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.ts
index a41252117c..bc2390555f 100644
--- a/Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.ts
+++ b/Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.ts
@@ -25,7 +25,7 @@ import {CopyAlertsDialogComponent
     } from '@eg/staff/share/holdings/copy-alerts-dialog.component';
 import {ReplaceBarcodeDialogComponent
     } from '@eg/staff/share/holdings/replace-barcode-dialog.component';
-import {DeleteVolcopyDialogComponent
+import {DeleteHoldingDialogComponent
     } from '@eg/staff/share/holdings/delete-volcopy-dialog.component';
 import {BucketDialogComponent
     } from '@eg/staff/share/buckets/bucket-dialog.component';
@@ -38,12 +38,12 @@ import {MakeBookableDialogComponent
 // flattened on-demand into a list of HoldingEntry objects.
 class HoldingsTreeNode {
     children: HoldingsTreeNode[];
-    nodeType: 'org' | 'volume' | 'copy';
+    nodeType: 'org' | 'callNum' | 'copy';
     target: any;
     parentNode: HoldingsTreeNode;
     expanded: boolean;
     copyCount: number;
-    volumeCount: number;
+    callNumCount: number;
     constructor() {
         this.children = [];
     }
@@ -62,11 +62,11 @@ class HoldingsEntry {
     locationLabel: string;
     // location label indentation depth
     locationDepth: number | null;
-    volumeCount: number | null;
+    callNumCount: number | null;
     copyCount: number | null;
     callNumberLabel: string;
     copy: IdlObject;
-    volume: IdlObject;
+    callNum: IdlObject;
     circ: IdlObject;
     treeNode: HoldingsTreeNode;
 }
@@ -85,12 +85,12 @@ export class HoldingsMaintenanceComponent implements OnInit {
     @ViewChild('holdingsGrid') holdingsGrid: GridComponent;
 
     // Manage visibility of various sub-sections
-    @ViewChild('volsCheckbox')
-        private volsCheckbox: GridToolbarCheckboxComponent;
+    @ViewChild('callNumsCheckbox')
+        private callNumsCheckbox: GridToolbarCheckboxComponent;
     @ViewChild('copiesCheckbox')
         private copiesCheckbox: GridToolbarCheckboxComponent;
-    @ViewChild('emptyVolsCheckbox')
-        private emptyVolsCheckbox: GridToolbarCheckboxComponent;
+    @ViewChild('emptyCallNumsCheckbox')
+        private emptyCallNumsCheckbox: GridToolbarCheckboxComponent;
     @ViewChild('emptyLibsCheckbox')
         private emptyLibsCheckbox: GridToolbarCheckboxComponent;
     @ViewChild('markDamagedDialog')
@@ -101,8 +101,8 @@ export class HoldingsMaintenanceComponent implements OnInit {
         private copyAlertsDialog: CopyAlertsDialogComponent;
     @ViewChild('replaceBarcode')
         private replaceBarcode: ReplaceBarcodeDialogComponent;
-    @ViewChild('deleteVolcopy')
-        private deleteVolcopy: DeleteVolcopyDialogComponent;
+    @ViewChild('deleteHolding')
+        private deleteHolding: DeleteHoldingDialogComponent;
     @ViewChild('bucketDialog')
         private bucketDialog: BucketDialogComponent;
     @ViewChild('conjoinedDialog')
@@ -168,11 +168,11 @@ export class HoldingsMaintenanceComponent implements OnInit {
         this.contextOrg = this.staffCat.searchContext.searchOrg;
 
         this.rowClassCallback = (row: any): string => {
-            if (row.volume) {
+            if (row.callNum) {
                 if (row.copy) {
                     return 'holdings-copy-row';
                 } else {
-                    return 'holdings-volume-row';
+                    return 'holdings-callNum-row';
                 }
             } else {
                 // Add a generic org unit class and a depth-specific
@@ -218,13 +218,13 @@ export class HoldingsMaintenanceComponent implements OnInit {
             'cat.holdings_show_vols'
         ]);
 
-        // Show volumes by default when no preference is set.
-        let showVols = settings['cat.holdings_show_vols'];
-        if (showVols === null) { showVols = true; }
+        // Show call numbers by default when no preference is set.
+        let showCallNums = settings['cat.holdings_show_vols'];
+        if (showCallNums === null) { showCallNums = true; }
 
-        this.volsCheckbox.checked(showVols);
+        this.callNumsCheckbox.checked(showCallNums);
         this.copiesCheckbox.checked(settings['cat.holdings_show_copies']);
-        this.emptyVolsCheckbox.checked(settings['cat.holdings_show_empty']);
+        this.emptyCallNumsCheckbox.checked(settings['cat.holdings_show_empty']);
         this.emptyLibsCheckbox.checked(settings['cat.holdings_show_empty_org']);
 
         this.initHoldingsTree();
@@ -248,28 +248,28 @@ export class HoldingsMaintenanceComponent implements OnInit {
     toggleShowCopies(value: boolean) {
         this.store.setItem('cat.holdings_show_copies', value);
         if (value) {
-            // Showing copies implies showing volumes
-            this.volsCheckbox.checked(true);
+            // Showing copies implies showing call numbers
+            this.callNumsCheckbox.checked(true);
         }
         this.renderFromPrefs = true;
         this.holdingsGrid.reload();
     }
 
-    toggleShowVolumes(value: boolean) {
+    toggleShowCallNums(value: boolean) {
         this.store.setItem('cat.holdings_show_vols', value);
         if (!value) {
-            // Hiding volumes implies hiding empty vols and copies.
+            // Hiding call numbers implies hiding empty call numbers and copies.
             this.copiesCheckbox.checked(false);
-            this.emptyVolsCheckbox.checked(false);
+            this.emptyCallNumsCheckbox.checked(false);
         }
         this.renderFromPrefs = true;
         this.holdingsGrid.reload();
     }
 
-    toggleShowEmptyVolumes(value: boolean) {
+    toggleShowEmptyCallNums(value: boolean) {
         this.store.setItem('cat.holdings_show_empty', value);
         if (value) {
-            this.volsCheckbox.checked(true);
+            this.callNumsCheckbox.checked(true);
         }
         this.renderFromPrefs = true;
         this.holdingsGrid.reload();
@@ -311,7 +311,7 @@ export class HoldingsMaintenanceComponent implements OnInit {
 
         this.treeNodeCache = {
             org: {},
-            volume: {},
+            callNum: {},
             copy: {}
         };
 
@@ -337,7 +337,7 @@ export class HoldingsMaintenanceComponent implements OnInit {
                 return 1;
             } else {
                 // TODO: should this use label sortkey instead of
-                // the compiled volume label?
+                // the compiled call number label?
                 return a.target._label < b.target._label ? -1 : 1;
             }
         });
@@ -349,8 +349,8 @@ export class HoldingsMaintenanceComponent implements OnInit {
 
         if (node.nodeType === 'org') {
             node.copyCount = 0;
-            node.volumeCount = 0;
-        } else if (node.nodeType === 'volume') {
+            node.callNumCount = 0;
+        } else if (node.nodeType === 'callNum') {
             node.copyCount = 0;
         }
 
@@ -360,14 +360,14 @@ export class HoldingsMaintenanceComponent implements OnInit {
             this.setTreeCounts(child);
             if (node.nodeType === 'org') {
                 node.copyCount += child.copyCount;
-                if (child.nodeType === 'volume') {
-                    node.volumeCount++;
+                if (child.nodeType === 'callNum') {
+                    node.callNumCount++;
                 } else {
-                    hasChildOrgWithData = child.volumeCount > 0;
-                    hasChildOrgSansData = child.volumeCount === 0;
-                    node.volumeCount += child.volumeCount;
+                    hasChildOrgWithData = child.callNumCount > 0;
+                    hasChildOrgSansData = child.callNumCount === 0;
+                    node.callNumCount += child.callNumCount;
                 }
-            } else if (node.nodeType === 'volume') {
+            } else if (node.nodeType === 'callNum') {
                 node.copyCount = node.children.length;
                 if (this.renderFromPrefs) {
                     node.expanded = this.copiesCheckbox.checked();
@@ -376,9 +376,9 @@ export class HoldingsMaintenanceComponent implements OnInit {
         });
 
         if (this.renderFromPrefs && node.nodeType === 'org') {
-            if (node.copyCount > 0 && this.volsCheckbox.checked()) {
+            if (node.copyCount > 0 && this.callNumsCheckbox.checked()) {
                 node.expanded = true;
-            } else if (node.volumeCount > 0 && this.emptyVolsCheckbox.checked()) {
+            } else if (node.callNumCount > 0 && this.emptyCallNumsCheckbox.checked()) {
                 node.expanded = true;
             } else if (hasChildOrgWithData) {
                 node.expanded = true;
@@ -399,31 +399,31 @@ export class HoldingsMaintenanceComponent implements OnInit {
 
         switch (node.nodeType) {
             case 'org':
-                if (node.volumeCount === 0
+                if (node.callNumCount === 0
                     && !this.emptyLibsCheckbox.checked()) {
                     return;
                 }
                 entry.locationLabel = node.target.shortname();
                 entry.locationDepth = node.target.ou_type().depth();
                 entry.copyCount = node.copyCount;
-                entry.volumeCount = node.volumeCount;
+                entry.callNumCount = node.callNumCount;
                 this.sortOrgNodeChildren(node);
                 break;
 
-            case 'volume':
+            case 'callNum':
                 if (this.renderFromPrefs) {
-                    if (!this.volsCheckbox.checked()) {
+                    if (!this.callNumsCheckbox.checked()) {
                         return;
                     }
                     if (node.copyCount === 0
-                        && !this.emptyVolsCheckbox.checked()) {
+                        && !this.emptyCallNumsCheckbox.checked()) {
                         return;
                     }
                 }
                 entry.locationLabel = node.target._label;
                 entry.locationDepth = node.parentNode.target.ou_type().depth() + 1;
                 entry.callNumberLabel = entry.locationLabel;
-                entry.volume = node.target;
+                entry.callNum = node.target;
                 entry.copyCount = node.copyCount;
                 break;
 
@@ -431,7 +431,7 @@ export class HoldingsMaintenanceComponent implements OnInit {
                 entry.locationLabel = node.target.barcode();
                 entry.locationDepth = node.parentNode.parentNode.target.ou_type().depth() + 2;
                 entry.callNumberLabel = node.parentNode.target.label(); // TODO
-                entry.volume = node.parentNode.target;
+                entry.callNum = node.parentNode.target;
                 entry.copy = node.target;
                 entry.circ = node.target._circ;
                 break;
@@ -456,7 +456,7 @@ export class HoldingsMaintenanceComponent implements OnInit {
         this.renderFromPrefs = false;
     }
 
-    // Grab volumes, copies, and related data.
+    // Grab call numbers, copies, and related data.
     fetchHoldings(pager: Pager): Observable<any> {
         if (!this.recordId) { return of([]); }
 
@@ -485,7 +485,7 @@ export class HoldingsMaintenanceComponent implements OnInit {
                 },
                 {authoritative: true}
             ).subscribe(
-                vol => this.appendVolume(vol),
+                callNum => this.appendCallNum(callNum),
                 err => {},
                 ()  => {
                     this.refreshHoldings = false;
@@ -512,64 +512,64 @@ export class HoldingsMaintenanceComponent implements OnInit {
         })).toPromise();
     }
 
-    // Compile prefix + label + suffix into field volume._label;
-    setVolumeLabel(volume: IdlObject) {
-        const pfx = volume.prefix() ? volume.prefix().label() : '';
-        const sfx = volume.suffix() ? volume.suffix().label() : '';
-        volume._label = pfx ? pfx + ' ' : '';
-        volume._label += volume.label();
-        volume._label += sfx ? ' ' + sfx : '';
+    // Compile prefix + label + suffix into field callNum._label;
+    setCallNumLabel(callNum: IdlObject) {
+        const pfx = callNum.prefix() ? callNum.prefix().label() : '';
+        const sfx = callNum.suffix() ? callNum.suffix().label() : '';
+        callNum._label = pfx ? pfx + ' ' : '';
+        callNum._label += callNum.label();
+        callNum._label += sfx ? ' ' + sfx : '';
     }
 
-    // Create the tree node for the volume if it doesn't already exist.
+    // Create the tree node for the call number if it doesn't already exist.
     // Do the same for its linked copies.
-    appendVolume(volume: IdlObject) {
-        let volNode = this.treeNodeCache.volume[volume.id()];
-        this.setVolumeLabel(volume);
-
-        if (volNode) {
-            const pNode = this.treeNodeCache.org[volume.owning_lib()];
-            if (volNode.parentNode.target.id() !== pNode.target.id()) {
-                // Volume owning library changed.  Un-link it from the previous
-                // org unit collection before adding to the new one.
+    appendCallNum(callNum: IdlObject) {
+        let callNumNode = this.treeNodeCache.callNum[callNum.id()];
+        this.setCallNumLabel(callNum);
+
+        if (callNumNode) {
+            const pNode = this.treeNodeCache.org[callNum.owning_lib()];
+            if (callNumNode.parentNode.target.id() !== pNode.target.id()) {
+                // Call number owning library changed.  Un-link it from the
+                // previous org unit collection before adding to the new one.
                 // XXX TODO: ^--
-                volNode.parentNode = pNode;
-                volNode.parentNode.children.push(volNode);
+                callNumNode.parentNode = pNode;
+                callNumNode.parentNode.children.push(callNumNode);
             }
         } else {
-            volNode = new HoldingsTreeNode();
-            volNode.nodeType = 'volume';
-            volNode.parentNode = this.treeNodeCache.org[volume.owning_lib()];
-            volNode.parentNode.children.push(volNode);
-            this.treeNodeCache.volume[volume.id()] = volNode;
+            callNumNode = new HoldingsTreeNode();
+            callNumNode.nodeType = 'callNum';
+            callNumNode.parentNode = this.treeNodeCache.org[callNum.owning_lib()];
+            callNumNode.parentNode.children.push(callNumNode);
+            this.treeNodeCache.callNum[callNum.id()] = callNumNode;
         }
 
-        volNode.target = volume;
+        callNumNode.target = callNum;
 
-        volume.copies()
+        callNum.copies()
             .filter((copy: IdlObject) => (copy.deleted() !== 't'))
             .sort((a: IdlObject, b: IdlObject) => a.barcode() < b.barcode() ? -1 : 1)
-            .forEach((copy: IdlObject) => this.appendCopy(volNode, copy));
+            .forEach((copy: IdlObject) => this.appendCopy(callNumNode, copy));
     }
 
     // Find or create a copy node.
-    appendCopy(volNode: HoldingsTreeNode, copy: IdlObject) {
+    appendCopy(callNumNode: HoldingsTreeNode, copy: IdlObject) {
         let copyNode = this.treeNodeCache.copy[copy.id()];
 
         if (copyNode) {
             const oldParent = copyNode.parentNode;
-            if (oldParent.target.id() !== volNode.target.id()) {
-                // TODO: copy changed owning volume.  Remove it from
-                // the previous volume before adding to the new volume.
-                copyNode.parentNode = volNode;
-                volNode.children.push(copyNode);
+            if (oldParent.target.id() !== callNumNode.target.id()) {
+                // TODO: copy changed owning call number.  Remove it from
+                // the previous call number before adding to the new call number.
+                copyNode.parentNode = callNumNode;
+                callNumNode.children.push(copyNode);
             }
         } else {
             // New node required
             copyNode = new HoldingsTreeNode();
             copyNode.nodeType = 'copy';
-            volNode.children.push(copyNode);
-            copyNode.parentNode = volNode;
+            callNumNode.children.push(copyNode);
+            copyNode.parentNode = callNumNode;
             this.treeNodeCache.copy[copy.id()] = copyNode;
         }
 
@@ -592,10 +592,10 @@ export class HoldingsMaintenanceComponent implements OnInit {
         return copyRows.map(c => Number(c.id()));
     }
 
-    selectedVolumeIds(rows: HoldingsEntry[]): number[] {
+    selectedCallNumIds(rows: HoldingsEntry[]): number[] {
         return rows
-            .filter(r => r.treeNode.nodeType === 'volume')
-            .map(r => Number(r.volume.id()));
+            .filter(r => r.treeNode.nodeType === 'callNum')
+            .map(r => Number(r.callNum.id()));
     }
 
     async showMarkDamagedDialog(rows: HoldingsEntry[]) {
@@ -650,7 +650,7 @@ export class HoldingsMaintenanceComponent implements OnInit {
             return;
         }
 
-        // Action may only apply to a single org or volume row.
+        // Action may only apply to a single org or call number row.
         const node = rows[0].treeNode;
         if (node.nodeType === 'copy') {
             return;
@@ -661,17 +661,17 @@ export class HoldingsMaintenanceComponent implements OnInit {
         if (node.nodeType === 'org') {
             orgId = node.target.id();
 
-            // Clear volume target when performed on an org unit row
-            this.localStore.removeLocalItem('eg.cat.transfer_target_vol');
+            // Clear call number target when performed on an org unit row
+            this.localStore.removeLocalItem('eg.cat.transfer_target_callnum');
 
-        } else if (node.nodeType === 'volume') {
+        } else if (node.nodeType === 'callNum') {
 
-            // All volume nodes are children of org nodes.
+            // All call number nodes are children of org nodes.
             orgId = node.parentNode.target.id();
 
-            // Add volume target when performed on a volume row.
+            // Add call number target when performed on a call number row.
             this.localStore.setLocalItem(
-                'eg.cat.transfer_target_vol', node.target.id());
+                'eg.cat.transfer_target_callnum', node.target.id());
         }
 
         this.localStore.setLocalItem('eg.cat.transfer_target_record', this.recordId);
@@ -717,39 +717,39 @@ export class HoldingsMaintenanceComponent implements OnInit {
         .then(key => this.openAngJsWindow(`cat/printlabels/${key}`));
     }
 
-    openVolCopyEdit(rows: HoldingsEntry[], addVols: boolean, addCopies: boolean) {
+    openHoldingEdit(rows: HoldingsEntry[], addCallNums: boolean, addCopies: boolean) {
 
-        // The user may select a set of volumes by selecting volume and/or
+        // The user may select a set of call numbers by selecting call number and/or
         // copy rows.
-        const volumes = [];
+        const callNums = [];
         rows.forEach(r => {
-            if (r.treeNode.nodeType === 'volume') {
-                volumes.push(r.volume);
+            if (r.treeNode.nodeType === 'callNum') {
+                callNums.push(r.callNum);
             } else if (r.treeNode.nodeType === 'copy') {
-                volumes.push(r.treeNode.parentNode.target);
+                callNums.push(r.treeNode.parentNode.target);
             }
         });
 
-        if (addCopies && !addVols) {
-            // Adding copies to an existing set of volumes.
-            if (volumes.length > 0) {
-                const volIds = volumes.map(v => Number(v.id()));
-                this.holdings.spawnAddHoldingsUi(this.recordId, volIds);
+        if (addCopies && !addCallNums) {
+            // Adding copies to an existing set of call numbers.
+            if (callNums.length > 0) {
+                const callNumIds = callNums.map(v => Number(v.id()));
+                this.holdings.spawnAddHoldingsUi(this.recordId, callNumIds);
             }
 
-        } else if (addVols) {
+        } else if (addCallNums) {
             const entries = [];
 
-            if (volumes.length > 0) {
+            if (callNums.length > 0) {
 
-                // When adding volumes, if any are selected in the grid,
-                // create volumes that have the same label and owner.
-                volumes.forEach(v =>
+                // When adding call numbers, if any are selected in the grid,
+                // create call numbers that have the same label and owner.
+                callNums.forEach(v =>
                     entries.push({label: v.label(), owner: v.owning_lib()}));
 
                 } else {
 
-                // Otherwise create new volumes from scratch.
+                // Otherwise create new call numbers from scratch.
                 entries.push({owner: this.auth.user().ws_ou()});
             }
 
@@ -786,56 +786,56 @@ export class HoldingsMaintenanceComponent implements OnInit {
         );
     }
 
-    // mode 'vols' -- only delete empty volumes
+    // mode 'callNums' -- only delete empty call numbers
     // mode 'copies' -- only delete selected copies
-    // mode 'both' -- delete selected copies and selected volumes, plus all
-    // copies linked to selected volumes, regardless of whether they are selected.
-    deleteHoldings(rows: HoldingsEntry[], mode: 'vols' | 'copies' | 'both') {
-        const volHash: any = {};
-
-        if (mode === 'vols' || mode === 'both') {
-            // Collect the volumes to be deleted.
-            rows.filter(r => r.treeNode.nodeType === 'volume').forEach(r => {
-                const vol = this.idl.clone(r.volume);
-                if (mode === 'vols') {
-                    if (vol.copies().length > 0) {
-                        // cannot delete non-empty volume in this mode.
+    // mode 'both' -- delete selected copies and selected call numbers, plus all
+    // copies linked to selected call numbers, regardless of whether they are selected.
+    deleteHoldings(rows: HoldingsEntry[], mode: 'callNums' | 'copies' | 'both') {
+        const callNumHash: any = {};
+
+        if (mode === 'callNums' || mode === 'both') {
+            // Collect the call numbers to be deleted.
+            rows.filter(r => r.treeNode.nodeType === 'callNum').forEach(r => {
+                const callNum = this.idl.clone(r.callNum);
+                if (mode === 'callNums') {
+                    if (callNum.copies().length > 0) {
+                        // cannot delete non-empty call number in this mode.
                         return;
                     }
                 } else {
-                    vol.copies().forEach(c => c.isdeleted(true));
+                    callNum.copies().forEach(c => c.isdeleted(true));
                 }
-                vol.isdeleted(true);
-                volHash[vol.id()] = vol;
+                callNum.isdeleted(true);
+                callNumHash[callNum.id()] = callNum;
             });
         }
 
         if (mode === 'copies' || mode === 'both') {
-            // Collect the copies to be deleted, including their volumes
-            // since the API expects fleshed volume objects.
+            // Collect the copies to be deleted, including their call numbers
+            // since the API expects fleshed call number objects.
             rows.filter(r => r.treeNode.nodeType === 'copy').forEach(r => {
-                const vol = r.treeNode.parentNode.target;
-                if (!volHash[vol.id()]) {
-                    volHash[vol.id()] = this.idl.clone(vol);
-                    volHash[vol.id()].copies([]);
+                const callNum = r.treeNode.parentNode.target;
+                if (!callNumHash[callNum.id()]) {
+                    callNumHash[callNum.id()] = this.idl.clone(callNum);
+                    callNumHash[callNum.id()].copies([]);
                 }
                 const copy = this.idl.clone(r.copy);
                 copy.isdeleted(true);
-                volHash[vol.id()].copies().push(copy);
+                callNumHash[callNum.id()].copies().push(copy);
             });
         }
 
-        if (Object.keys(volHash).length === 0) {
+        if (Object.keys(callNumHash).length === 0) {
             // No data to process.
             return;
         }
 
         // Note forceDeleteCopies should not be necessary here, since we
-        // manually marked all copies as deleted on deleted volumes in
+        // manually marked all copies as deleted on deleted call numbers in
         // "both" mode.
-        this.deleteVolcopy.forceDeleteCopies = mode === 'both';
-        this.deleteVolcopy.volumes = Object.values(volHash);
-        this.deleteVolcopy.open({size: 'sm'}).subscribe(
+        this.deleteHolding.forceDeleteCopies = mode === 'both';
+        this.deleteHolding.callNums = Object.values(callNumHash);
+        this.deleteHolding.open({size: 'sm'}).subscribe(
             modified => {
                 if (modified) {
                     this.hardRefresh();
diff --git a/Open-ILS/src/eg2/src/app/staff/share/holdings/delete-volcopy-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/holdings/delete-volcopy-dialog.component.html
index 30b0f2c434..5bde3a7928 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/holdings/delete-volcopy-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/holdings/delete-volcopy-dialog.component.html
@@ -17,7 +17,7 @@
       </button>
     </div>
     <div class="modal-body">
-      <p i18n>Delete {{numVols}} call numbers and {{numCopies}} copies?</p>
+      <p i18n>Delete {{numCallNums}} call numbers and {{numCopies}} copies?</p>
     </div>
     <div class="modal-footer">
       <ng-container>
diff --git a/Open-ILS/src/eg2/src/app/staff/share/holdings/delete-volcopy-dialog.component.ts b/Open-ILS/src/eg2/src/app/staff/share/holdings/delete-volcopy-dialog.component.ts
index ad0e673e5a..397837404c 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/holdings/delete-volcopy-dialog.component.ts
+++ b/Open-ILS/src/eg2/src/app/staff/share/holdings/delete-volcopy-dialog.component.ts
@@ -16,25 +16,25 @@ import {StringComponent} from '@eg/share/string/string.component';
  */
 
 @Component({
-  selector: 'eg-delete-volcopy-dialog',
+  selector: 'eg-delete-holding-dialog',
   templateUrl: 'delete-volcopy-dialog.component.html'
 })
 
-export class DeleteVolcopyDialogComponent
+export class DeleteHoldingDialogComponent
     extends DialogComponent implements OnInit {
 
     // List of "acn" objects which may contain copies.
     // Objects of either type marked "isdeleted" will be deleted.
-    @Input() volumes: IdlObject[];
+    @Input() callNums: IdlObject[];
 
     // If true, just ask the server to delete all attached copies
     // for any deleted call numbers.
-    // Note if this is true and a volume is provided that does not contain
-    // of its fleshed copies, the number of copies to delete will not be
+    // Note if this is true and a call number is provided that does not
+    // contain its fleshed copies, the number of copies to delete will not be
     // reported correctly.
     @Input() forceDeleteCopies: boolean;
 
-    numVols: number;
+    numCallNums: number;
     numCopies: number;
     numSucceeded: number;
     numFailed: number;
@@ -59,17 +59,17 @@ export class DeleteVolcopyDialogComponent
     ngOnInit() {}
 
     open(args: NgbModalOptions): Observable<boolean> {
-        this.numVols = 0;
+        this.numCallNums = 0;
         this.numCopies = 0;
         this.numSucceeded = 0;
         this.numFailed = 0;
 
-        this.volumes.forEach(vol => {
-            if (vol.isdeleted()) {
-                this.numVols++;
+        this.callNums.forEach(callNum => {
+            if (callNum.isdeleted()) {
+                this.numCallNums++;
             }
-            if (Array.isArray(vol.copies())) {
-                vol.copies().forEach(c => {
+            if (Array.isArray(callNum.copies())) {
+                callNum.copies().forEach(c => {
                     if (c.isdeleted() || this.forceDeleteCopies) {
                         // Marking copies deleted in forceDeleteCopies mode
                         // is not required, but we do it here so we can
@@ -81,8 +81,8 @@ export class DeleteVolcopyDialogComponent
             }
         });
 
-        if (this.numVols === 0 && this.numCopies === 0) {
-            console.debug('Volcopy delete called with no usable data');
+        if (this.numCallNums === 0 && this.numCopies === 0) {
+            console.debug('Holdings delete called with no usable data');
             return throwError(false);
         }
 
@@ -98,7 +98,7 @@ export class DeleteVolcopyDialogComponent
         this.net.request(
             'open-ils.cat',
             'open-ils.cat.asset.volume.fleshed.batch.update.override',
-            this.auth.token(), this.volumes, 1, flags
+            this.auth.token(), this.callNums, 1, flags
         ).toPromise().then(
             result => {
                 const evt = this.evt.parse(result);
diff --git a/Open-ILS/src/eg2/src/app/staff/share/holdings/holdings.module.ts b/Open-ILS/src/eg2/src/app/staff/share/holdings/holdings.module.ts
index d9ae4fb7e3..be495548ca 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/holdings/holdings.module.ts
+++ b/Open-ILS/src/eg2/src/app/staff/share/holdings/holdings.module.ts
@@ -5,7 +5,7 @@ import {MarkDamagedDialogComponent} from './mark-damaged-dialog.component';
 import {MarkMissingDialogComponent} from './mark-missing-dialog.component';
 import {CopyAlertsDialogComponent} from './copy-alerts-dialog.component';
 import {ReplaceBarcodeDialogComponent} from './replace-barcode-dialog.component';
-import {DeleteVolcopyDialogComponent} from './delete-volcopy-dialog.component';
+import {DeleteHoldingDialogComponent} from './delete-volcopy-dialog.component';
 import {ConjoinedItemsDialogComponent} from './conjoined-items-dialog.component';
 
 @NgModule({
@@ -14,7 +14,7 @@ import {ConjoinedItemsDialogComponent} from './conjoined-items-dialog.component'
       MarkMissingDialogComponent,
       CopyAlertsDialogComponent,
       ReplaceBarcodeDialogComponent,
-      DeleteVolcopyDialogComponent,
+      DeleteHoldingDialogComponent,
       ConjoinedItemsDialogComponent
     ],
     imports: [
@@ -25,7 +25,7 @@ import {ConjoinedItemsDialogComponent} from './conjoined-items-dialog.component'
       MarkMissingDialogComponent,
       CopyAlertsDialogComponent,
       ReplaceBarcodeDialogComponent,
-      DeleteVolcopyDialogComponent,
+      DeleteHoldingDialogComponent,
       ConjoinedItemsDialogComponent
     ],
     providers: [
diff --git a/Open-ILS/src/eg2/src/app/staff/share/holdings/holdings.service.ts b/Open-ILS/src/eg2/src/app/staff/share/holdings/holdings.service.ts
index 87b0ff1a9a..3c703e6373 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/holdings/holdings.service.ts
+++ b/Open-ILS/src/eg2/src/app/staff/share/holdings/holdings.service.ts
@@ -7,7 +7,7 @@ import {AnonCacheService} from '@eg/share/util/anon-cache.service';
 import {AuthService} from '@eg/core/auth.service';
 import {EventService} from '@eg/core/event.service';
 
-interface NewVolumeData {
+interface NewCallNumData {
     owner: number;
     label?: string;
 }
@@ -25,16 +25,16 @@ export class HoldingsService {
     // Open the holdings editor UI in a new browser window/tab.
     spawnAddHoldingsUi(
         recordId: number,               // Bib record ID
-        addToVols?: number[],           // Add copies to / modify existing vols
-        volumeData?: NewVolumeData[],   // Creating new volumes
+        addToCallNums?: number[],           // Add copies to / modify existing CNs
+        callNumData?: NewCallNumData[],   // Creating new call numbers
         hideCopies?: boolean) {         // Hide the copy edit pane
 
         const raw: any[] = [];
 
-        if (addToVols) {
-            addToVols.forEach(volId => raw.push({callnumber: volId}));
-        } else if (volumeData) {
-            volumeData.forEach(data => raw.push(data));
+        if (addToCallNums) {
+            addToCallNums.forEach(callNumId => raw.push({callnumber: callNumId}));
+        } else if (callNumData) {
+            callNumData.forEach(data => raw.push(data));
         }
 
         if (raw.length === 0) { raw.push({}); }
diff --git a/Open-ILS/src/eg2/src/app/staff/share/holds/holds.service.ts b/Open-ILS/src/eg2/src/app/staff/share/holds/holds.service.ts
index 91a45ae570..231b44cba5 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/holds/holds.service.ts
+++ b/Open-ILS/src/eg2/src/app/staff/share/holds/holds.service.ts
@@ -39,8 +39,8 @@ export interface HoldRequest {
 
 // A fleshed hold request target object containing whatever data is
 // available for each hold type / target.  E.g. a TITLE hold will
-// not have a value for 'volume', but a COPY hold will, since all
-// copies have volumes.  Every HoldRequestTarget will have a bibId and
+// not have a value for 'callNum', but a COPY hold will, since all
+// copies have call numbers.  Every HoldRequestTarget will have a bibId and
 // bibSummary.  Some values come directly from the API call, others
 // applied locally.
 export interface HoldRequestTarget {
@@ -50,7 +50,7 @@ export interface HoldRequestTarget {
     bibId?: number;
     bibSummary?: BibRecordSummary;
     part?: IdlObject;
-    volume?: IdlObject;
+    callNum?: IdlObject;
     copy?: IdlObject;
     issuance?: IdlObject;
     metarecord_filters?: any;

commit 3bcffcf63d81405b70d7761d35dc09dedb7a6438
Author: Dan Wells <dbw2 at calvin.edu>
Date:   Thu Jul 18 13:53:13 2019 -0400

    LP1823367 Re-fix Copy to Item name changes
    
    Most of these changes already exist in the AngularJS client, so let's
    bring them over to Angular to keep with current practice.  Also, fix two
    pesky "Volume" labels which didn't make the previous commit.
    
    Signed-off-by: Dan Wells <dbw2 at calvin.edu>
    Signed-off-by: Bill Erickson <berickxx at gmail.com>
    Signed-off-by: Galen Charlton <gmc at equinoxinitiative.org>

diff --git a/Open-ILS/src/eg2/src/app/staff/admin/server/admin-server-splash.component.html b/Open-ILS/src/eg2/src/app/staff/admin/server/admin-server-splash.component.html
index 211283e341..99cb4781b7 100644
--- a/Open-ILS/src/eg2/src/app/staff/admin/server/admin-server-splash.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/admin/server/admin-server-splash.component.html
@@ -37,9 +37,9 @@
       routerLink="/staff/admin/server/config/circ_modifier"></eg-link-table-link>
     <eg-link-table-link i18n-label label="Circulation Recurring Fine Rules"  
       routerLink="/staff/admin/server/config/rule_recurring_fine"></eg-link-table-link>
-    <eg-link-table-link i18n-label label="Copy Statuses"  
+    <eg-link-table-link i18n-label label="Item Statuses"  
       routerLink="/staff/admin/server/config/copy_status"></eg-link-table-link>
-    <eg-link-table-link i18n-label label="Copy Tag Types"  
+    <eg-link-table-link i18n-label label="Item Tag Types"  
       routerLink="/staff/admin/server/config/copy_tag_type"></eg-link-table-link>
     <eg-link-table-link i18n-label label="Custom Org Unit Trees"  
       url="/eg/staff/admin/server/actor/org_unit_custom_tree"></eg-link-table-link>
diff --git a/Open-ILS/src/eg2/src/app/staff/admin/server/org-unit-type.component.html b/Open-ILS/src/eg2/src/app/staff/admin/server/org-unit-type.component.html
index 3c0af3b95c..99aeace45b 100644
--- a/Open-ILS/src/eg2/src/app/staff/admin/server/org-unit-type.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/admin/server/org-unit-type.component.html
@@ -73,7 +73,7 @@
       </div>
       <div class="row">
           <div class="col-lg-4">
-            <label i18n>Can Have Volumes: </label>
+            <label i18n>Can Have Holdings: </label>
           </div>
           <div class="col-lg-8 font-weight-bold">
             <!-- TODO: use <eg-bool/> once merged-->
diff --git a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/import.component.html b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/import.component.html
index c7f8c17ab1..47ab53519a 100644
--- a/Open-ILS/src/eg2/src/app/staff/cat/vandelay/import.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/cat/vandelay/import.component.html
@@ -198,7 +198,7 @@
     </div>
     <div class="col-lg-3">
       <label for="auto-overlay-acq-copies" i18n>
-        Auto-overlay In-process Acquisitions Copies
+        Auto-overlay In-process Acquisitions Items
       </label>
     </div>
     <div class="col-lg-3">
diff --git a/Open-ILS/src/eg2/src/app/staff/catalog/record/copies.component.html b/Open-ILS/src/eg2/src/app/staff/catalog/record/copies.component.html
index 0c07c5edd2..7ee041ffee 100644
--- a/Open-ILS/src/eg2/src/app/staff/catalog/record/copies.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/catalog/record/copies.component.html
@@ -21,7 +21,7 @@
       <a routerLink="/staff/catalog/hold/C"
         [queryParams]="{target: copy.id}"
         queryParamsHandling="merge" i18n>
-        Copy Hold
+        Item Hold
       </a>
     </div>
     <div>
@@ -39,12 +39,12 @@
   <eg-grid #copyGrid [dataSource]="gridDataSource" 
     [disableSelect]="true"
     [sortable]="false" persistKey="catalog.record.copies">
-    <eg-grid-column i18n-label label="Copy ID" path="id" 
+    <eg-grid-column i18n-label label="Item ID" path="id" 
       [hidden]="true" [index]="true">
     </eg-grid-column>
     <eg-grid-column i18n-label label="Location" path="circ_lib" datatype="org_unit">
     </eg-grid-column>
-    <eg-grid-column i18n-label label="Call Number / Copy Notes" 
+    <eg-grid-column i18n-label label="Call Number / Item Notes" 
       name="callnumber" [cellTemplate]="cnTemplate">
     </eg-grid-column>
     <eg-grid-column i18n-label label="Barcode" name="barcode"
diff --git a/Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.html b/Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.html
index ec94e18a81..6925b88b7f 100644
--- a/Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.html
@@ -217,7 +217,7 @@
 
     <eg-grid-column path="index" [hidden]="true" [index]="true">
     </eg-grid-column>
-    <eg-grid-column name="id" path="copy.id" [hidden]="true" label="Copy ID" i18n-label>
+    <eg-grid-column name="id" path="copy.id" [hidden]="true" label="Item ID" i18n-label>
     </eg-grid-column>
     <eg-grid-column path="volume.id" [hidden]="true" label="Call Number ID" i18n-label>
     </eg-grid-column>
@@ -246,7 +246,7 @@
     <eg-grid-column i18n-label label="Circulation Modifier" 
       path="copy.circ_modifier" name="circ_modifier">
     </eg-grid-column>
-    <eg-grid-column i18n-label label="Copy Number" path="copy.copy_number" 
+    <eg-grid-column i18n-label label="Item Number" path="copy.copy_number" 
       name="copy_number" [hidden]="true">
     </eg-grid-column>
 
@@ -264,7 +264,7 @@
     </eg-grid-column>
     <eg-grid-column i18n-label label="Age Hold Protection" 
       path="copy.age_protect.name" name="age_protect.name"></eg-grid-column>
-    <eg-grid-column i18n-label label="Copy Price" 
+    <eg-grid-column i18n-label label="Item Price" 
       path="copy.price" name="price" [hidden]="true"></eg-grid-column>
 
     <eg-grid-column i18n-label label="Circulate" path="copy.circulate" 
diff --git a/Open-ILS/src/eg2/src/app/staff/catalog/record/record.component.html b/Open-ILS/src/eg2/src/app/staff/catalog/record/record.component.html
index 8be4524985..f562123c4c 100644
--- a/Open-ILS/src/eg2/src/app/staff/catalog/record/record.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/catalog/record/record.component.html
@@ -27,7 +27,7 @@
       </div>
     </div>
     <ngb-tabset #recordTabs [activeId]="recordTab" (tabChange)="onTabChange($event)">
-      <ngb-tab title="Copy Table" i18n-title id="catalog">
+      <ngb-tab title="Item Table" i18n-title id="catalog">
         <ng-template ngbTabContent>
           <eg-catalog-copies [recordId]="recordId"></eg-catalog-copies>
         </ng-template>
diff --git a/Open-ILS/src/eg2/src/app/staff/nav.component.html b/Open-ILS/src/eg2/src/app/staff/nav.component.html
index 12fa1abc4c..059d327be0 100644
--- a/Open-ILS/src/eg2/src/app/staff/nav.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/nav.component.html
@@ -24,7 +24,7 @@
           </a>
           <a class="dropdown-item" href="/eg/staff/cat/item/search">
             <span class="material-icons">assignment</span>
-            <span i18n>Search for Copies by Barcode</span>
+            <span i18n>Search for Items by Barcode</span>
           </a>
           <a href="/eg/staff/cat/catalog/index" class="dropdown-item">
             <span class="material-icons">search</span>
@@ -156,7 +156,7 @@
           </a>
           <a href="/eg/staff/cat/bucket/copy/view" class="dropdown-item">
             <span class="material-icons">list_alt</span>
-            <span i18n>Copy Buckets</span>
+            <span i18n>Item Buckets</span>
           </a>
           <div class="dropdown-divider"></div>
           <a href="/eg/staff/cat/catalog/retrieve_by_id" class="dropdown-item">
diff --git a/Open-ILS/src/eg2/src/app/staff/share/holdings/copy-alerts-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/share/holdings/copy-alerts-dialog.component.html
index 039d776f13..25fe9195d8 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/holdings/copy-alerts-dialog.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/holdings/copy-alerts-dialog.component.html
@@ -1,5 +1,5 @@
-<eg-string #successMsg text="Successfully Modified Copy Alerts" i18n-text></eg-string>
-<eg-string #errorMsg text="Failed To Modify Copy Alerts" i18n-text></eg-string>
+<eg-string #successMsg text="Successfully Modified Item Alerts" i18n-text></eg-string>
+<eg-string #errorMsg text="Failed To Modify Item Alerts" i18n-text></eg-string>
 
 <ng-template #dialogContent>
   <div class="modal-header">
diff --git a/Open-ILS/src/eg2/src/app/staff/share/holds/grid.component.html b/Open-ILS/src/eg2/src/app/staff/share/holds/grid.component.html
index db3d31b25a..6b609303ea 100644
--- a/Open-ILS/src/eg2/src/app/staff/share/holds/grid.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/share/holds/grid.component.html
@@ -140,7 +140,7 @@
       <eg-grid-column i18n-label label="Hold Cancel Date/Time" path='cancel_time' datatype="timestamp" [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Cancelation note" path='cancel_note' [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Hold Target" path='target' [hidden]="true"></eg-grid-column>
-      <eg-grid-column i18n-label label="Current Copy" path='current_copy' [hidden]="true"></eg-grid-column>
+      <eg-grid-column i18n-label label="Current Item" path='current_copy' [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Fulfilling Staff" path='fulfillment_staff' [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Fulfilling Library" path='fulfillment_lib' [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Requesting Library" path='request_lib' [hidden]="true"></eg-grid-column>
@@ -173,17 +173,17 @@
       <eg-grid-column i18n-label label="Transit ID" path='tr_id' [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Transit Send Time" path='tr_source_send_time' datatype="timestamp" [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Transit Receive Time" path='tr_dest_recv_time' datatype="timestamp" [hidden]="true"></eg-grid-column>
-      <eg-grid-column i18n-label label="Transit Copy" path='tr_target_copy' [hidden]="true"></eg-grid-column>
+      <eg-grid-column i18n-label label="Transit Item" path='tr_target_copy' [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Transit Source" path='tr_source' [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Transit Destination" path='tr_dest' [hidden]="true"></eg-grid-column>
-      <eg-grid-column i18n-label label="Transit Copy Status" path='tr_copy_status' [hidden]="true"></eg-grid-column>
+      <eg-grid-column i18n-label label="Transit Item Status" path='tr_copy_status' [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Transit Hold" path='tr_hold' [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Transit Cancel Time" path='tr_cancel_time' datatype="timestamp" [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Hold Note Count" path='note_count' [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="User Display Name" path='usr_display_name' [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Requestor Username" path='rusr_usrname' [hidden]="true"></eg-grid-column>
-      <eg-grid-column i18n-label label="Copy ID" path='cp_id' [hidden]="true"></eg-grid-column>
-      <eg-grid-column i18n-label label="Copy Number on Volume" path='cp_copy_number' [hidden]="true"></eg-grid-column>
+      <eg-grid-column i18n-label label="Item ID" path='cp_id' [hidden]="true"></eg-grid-column>
+      <eg-grid-column i18n-label label="Item Number on Call Number" path='cp_copy_number' [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Fine Level" path='cp_fine_level' [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Can Circulate" path='cp_circulate' datatype="bool" [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Deposit Amount" path='cp_deposit_amount' datatype="bool" [hidden]="true"></eg-grid-column>
@@ -191,23 +191,23 @@
       <eg-grid-column i18n-label label="Is Reference" path='cp_ref' datatype="bool" [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Is Holdable" path='cp_holdable' datatype="bool" [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Price" path='cp_price' [hidden]="true"></eg-grid-column>
-      <eg-grid-column i18n-label label="Copy Barcode" path='cp_barcode' [hidden]="true"></eg-grid-column>
+      <eg-grid-column i18n-label label="Item Barcode" path='cp_barcode' [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Circulation Modifier" path='cp_circ_modifier' [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Circulate as MARC Type" path='cp_circ_as_type' [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Precat Dummy Title" path='cp_dummy_title' [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Precat Dummy Author" path='cp_dummy_author' [hidden]="true"></eg-grid-column>
-      <eg-grid-column i18n-label label="Copy Alert Message (deprecated)" path='cp_alert_message' [hidden]="true"></eg-grid-column>
-      <eg-grid-column i18n-label label="Copy OPAC Visible" path='cp_opac_visible' datatype="bool" [hidden]="true"></eg-grid-column>
-      <eg-grid-column i18n-label label="Copy Deleted" path='cp_deleted' datatype="bool" [hidden]="true"></eg-grid-column>
+      <eg-grid-column i18n-label label="Item Alert Message (deprecated)" path='cp_alert_message' [hidden]="true"></eg-grid-column>
+      <eg-grid-column i18n-label label="Item OPAC Visible" path='cp_opac_visible' datatype="bool" [hidden]="true"></eg-grid-column>
+      <eg-grid-column i18n-label label="Item Deleted" path='cp_deleted' datatype="bool" [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Floating Group" path='cp_floating' [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Precat Dummy ISBN" path='cp_dummy_isbn' [hidden]="true"></eg-grid-column>
-      <eg-grid-column i18n-label label="Copy Status Change Time" path='cp_status_change_time' datatype="timestamp" [hidden]="true"></eg-grid-column>
-      <eg-grid-column i18n-label label="Copy Active Date" path='cp_active_date' datatype="timestamp" [hidden]="true"></eg-grid-column>
-      <eg-grid-column i18n-label label="Copy Is Mint Condition" path='cp_mint_condition' datatype="bool" [hidden]="true"></eg-grid-column>
+      <eg-grid-column i18n-label label="Item Status Change Time" path='cp_status_change_time' datatype="timestamp" [hidden]="true"></eg-grid-column>
+      <eg-grid-column i18n-label label="Item Active Date" path='cp_active_date' datatype="timestamp" [hidden]="true"></eg-grid-column>
+      <eg-grid-column i18n-label label="Item Is Mint Condition" path='cp_mint_condition' datatype="bool" [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Cost" path='cp_cost' [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Status Is Holdable" path='cs_holdable' datatype="bool" [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Status Is OPAC Visible" path='cs_opac_visible' datatype="bool" [hidden]="true"></eg-grid-column>
-      <eg-grid-column i18n-label label="Status Is Copy-Active" path='cs_copy_active' datatype="bool" [hidden]="true"></eg-grid-column>
+      <eg-grid-column i18n-label label="Status Is Item-Active" path='cs_copy_active' datatype="bool" [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Status Is Deleted" path='cs_restrict_copy_delete' datatype="bool" [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Status Is Available" path='cs_is_available' datatype="bool" [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Issuance i18n-label label" path='issuance_label' [hidden]="true"></eg-grid-column>
@@ -221,18 +221,18 @@
       <eg-grid-column i18n-label label="Part Is Deleted" path='p_deleted' datatype="bool" [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="CN Full i18n-label label" path='cn_full_label' [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Record ID" path='record_id' [hidden]="true"></eg-grid-column>
-      <eg-grid-column i18n-label label="Copy Location ID" path='acpl_id' [hidden]="true"></eg-grid-column>
-      <eg-grid-column i18n-label label="Copy Location" path='acpl_name' [hidden]="true"></eg-grid-column>
-      <eg-grid-column i18n-label label="Copy Location Holdable" path='acpl_holdable' datatype="bool" [hidden]="true"></eg-grid-column>
-      <eg-grid-column i18n-label label="Copy Location Hold-Verify" path='acpl_hold_verify' datatype="bool" [hidden]="true"></eg-grid-column>
-      <eg-grid-column i18n-label label="Copy Location OPAC Visible" path='acpl_opac_visible' datatype="bool" [hidden]="true"></eg-grid-column>
-      <eg-grid-column i18n-label label="Copy Location Can Circulate" path='acpl_circulate' datatype="bool" [hidden]="true"></eg-grid-column>
-      <eg-grid-column i18n-label label="Copy Location Prefix" path='acpl_label_prefix' [hidden]="true"></eg-grid-column>
-      <eg-grid-column i18n-label label="Copy Location Suffix" path='acpl_label_suffix' [hidden]="true"></eg-grid-column>
-      <eg-grid-column i18n-label label="Copy Location Checkin Alert" path='acpl_checkin_alert' datatype="bool" [hidden]="true"></eg-grid-column>
-      <eg-grid-column i18n-label label="Copy Location Is Deleted" path='acpl_deleted' datatype="bool" [hidden]="true"></eg-grid-column>
-      <eg-grid-column i18n-label label="Copy Location URL" path='acpl_url' [hidden]="true"></eg-grid-column>
-      <eg-grid-column i18n-label label="Copy Location Order" path='copy_location_order_position' [hidden]="true"></eg-grid-column>
+      <eg-grid-column i18n-label label="Item Location ID" path='acpl_id' [hidden]="true"></eg-grid-column>
+      <eg-grid-column i18n-label label="Item Location" path='acpl_name' [hidden]="true"></eg-grid-column>
+      <eg-grid-column i18n-label label="Item Location Holdable" path='acpl_holdable' datatype="bool" [hidden]="true"></eg-grid-column>
+      <eg-grid-column i18n-label label="Item Location Hold-Verify" path='acpl_hold_verify' datatype="bool" [hidden]="true"></eg-grid-column>
+      <eg-grid-column i18n-label label="Item Location OPAC Visible" path='acpl_opac_visible' datatype="bool" [hidden]="true"></eg-grid-column>
+      <eg-grid-column i18n-label label="Item Location Can Circulate" path='acpl_circulate' datatype="bool" [hidden]="true"></eg-grid-column>
+      <eg-grid-column i18n-label label="Item Location Prefix" path='acpl_label_prefix' [hidden]="true"></eg-grid-column>
+      <eg-grid-column i18n-label label="Item Location Suffix" path='acpl_label_suffix' [hidden]="true"></eg-grid-column>
+      <eg-grid-column i18n-label label="Item Location Checkin Alert" path='acpl_checkin_alert' datatype="bool" [hidden]="true"></eg-grid-column>
+      <eg-grid-column i18n-label label="Item Location Is Deleted" path='acpl_deleted' datatype="bool" [hidden]="true"></eg-grid-column>
+      <eg-grid-column i18n-label label="Item Location URL" path='acpl_url' [hidden]="true"></eg-grid-column>
+      <eg-grid-column i18n-label label="Item Location Order" path='copy_location_order_position' [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Default Estimated Wait Time" path='default_estimated_wait' [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Minimum Estimated Wait Time" path='min_estimated_wait' [hidden]="true"></eg-grid-column>
       <eg-grid-column i18n-label label="Peer Hold Count" path='other_holds' [hidden]="true"></eg-grid-column>
diff --git a/Open-ILS/src/eg2/src/app/staff/splash.component.html b/Open-ILS/src/eg2/src/app/staff/splash.component.html
index 9daf3f822a..e4decff845 100644
--- a/Open-ILS/src/eg2/src/app/staff/splash.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/splash.component.html
@@ -98,7 +98,7 @@
             <div class="list-group-item border-0 p-2">
               <a href="/eg/staff/cat/bucket/copy/" i18n>
                 <img src="/images/portal/bucket.png" alt="" role="presentation"/>
-                Copy Buckets
+                Item Buckets
               </a>
             </div>
           </div>

commit e1b5a8b292ac9f81a0d6473507ed1b4447825bd3
Author: Bill Erickson <berickxx at gmail.com>
Date:   Wed Jul 17 12:36:10 2019 -0400

    LP1823367 Ang catalog replace 'Volume' with 'Call Number'
    
    Update references in the Angular staff catalog for "Volume" with the
    preffered "Call Number".
    
    Signed-off-by: Bill Erickson <berickxx at gmail.com>
    Signed-off-by: Dan Wells <dbw2 at calvin.edu>
    Signed-off-by: Galen Charlton <gmc at equinoxinitiative.org>

diff --git a/Open-ILS/src/eg2/src/app/staff/catalog/hold/hold.component.html b/Open-ILS/src/eg2/src/app/staff/catalog/hold/hold.component.html
index 1f79387232..a63c69a449 100644
--- a/Open-ILS/src/eg2/src/app/staff/catalog/hold/hold.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/catalog/hold/hold.component.html
@@ -167,7 +167,7 @@
   <div class="col-lg-12" i18n>Placing 
     <ng-container *ngIf="holdType == 'M'">METARECORD</ng-container> 
     <ng-container *ngIf="holdType == 'T'">TITLE</ng-container> 
-    <ng-container *ngIf="holdType == 'V'">VOLUME</ng-container> 
+    <ng-container *ngIf="holdType == 'V'">CALL NUMBER</ng-container>
     <ng-container *ngIf="holdType == 'F'">FORCE COPY</ng-container> 
     <ng-container *ngIf="holdType == 'C'">COPY</ng-container> 
     <ng-container *ngIf="holdType == 'R'">RECALL</ng-container> 
diff --git a/Open-ILS/src/eg2/src/app/staff/catalog/record/actions.component.html b/Open-ILS/src/eg2/src/app/staff/catalog/record/actions.component.html
index 452c3feb92..1d3856da08 100644
--- a/Open-ILS/src/eg2/src/app/staff/catalog/record/actions.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/catalog/record/actions.component.html
@@ -6,7 +6,7 @@
 <eg-string key="catalog.record.toast.holdTransfer" 
   i18n-text text="Hold Transfer Target Set"></eg-string>
 <eg-string key="catalog.record.toast.volumeTransfer" 
-  i18n-text text="Volume Transfer Target Set"></eg-string>
+  i18n-text text="Call Number Transfer Target Set"></eg-string>
 <eg-string key="catalog.record.toast.cleared" 
   text="Record Marks Cleared"></eg-string>
 
@@ -64,7 +64,7 @@
       </button>
       <button class="dropdown-item" (click)="mark('volumeTransfer')">
         <span i18n>
-          Volume Transfer<ng-container *ngIf="targets.volumeTransfer.current"> 
+          Call Number Transfer<ng-container *ngIf="targets.volumeTransfer.current">
             (Currently {{targets.volumeTransfer.current}})</ng-container>
         </span>
       </button>
diff --git a/Open-ILS/src/eg2/src/app/staff/catalog/record/copies.component.html b/Open-ILS/src/eg2/src/app/staff/catalog/record/copies.component.html
index 709dff2a1f..0c07c5edd2 100644
--- a/Open-ILS/src/eg2/src/app/staff/catalog/record/copies.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/catalog/record/copies.component.html
@@ -28,7 +28,7 @@
       <a routerLink="/staff/catalog/hold/V"
         [queryParams]="{target: copy.call_number}"
         queryParamsHandling="merge" i18n>
-        Volume Hold
+        Call Number Hold
       </a>
     </div>
   </span>
diff --git a/Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.html b/Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.html
index 830538fb9e..ec94e18a81 100644
--- a/Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.html
@@ -62,13 +62,13 @@
 
     <!-- checkboxes / filters -->
 
-    <eg-grid-toolbar-checkbox i18n-label label="Show Volumes" 
+    <eg-grid-toolbar-checkbox i18n-label label="Show Call Numbers"
       #volsCheckbox (onChange)="toggleShowVolumes($event)">
     </eg-grid-toolbar-checkbox> 
     <eg-grid-toolbar-checkbox i18n-label label="Show Copies" 
       #copiesCheckbox (onChange)="toggleShowCopies($event)">
     </eg-grid-toolbar-checkbox> 
-    <eg-grid-toolbar-checkbox i18n-label label="Show Empty Volumes"            
+    <eg-grid-toolbar-checkbox i18n-label label="Show Empty Call Numbers"
       #emptyVolsCheckbox (onChange)="toggleShowEmptyVolumes($event)">
     </eg-grid-toolbar-checkbox> 
     <eg-grid-toolbar-checkbox i18n-label label="Show Empty Libs"            
@@ -219,13 +219,13 @@
     </eg-grid-column>
     <eg-grid-column name="id" path="copy.id" [hidden]="true" label="Copy ID" i18n-label>
     </eg-grid-column>
-    <eg-grid-column path="volume.id" [hidden]="true" label="Volume ID" i18n-label>
+    <eg-grid-column path="volume.id" [hidden]="true" label="Call Number ID" i18n-label>
     </eg-grid-column>
     <eg-grid-column name="owner_label" [flex]="4"
       [cellTemplate]="locationTemplate" [cellContext]="gridTemplateContext" 
       label="Location/Barcode" [disableTooltip]="true" i18n-label>
     </eg-grid-column>
-    <eg-grid-column path="volumeCount" datatype="number" label="Volumes" i18n-label>
+    <eg-grid-column path="volumeCount" datatype="number" label="Call Numbers" i18n-label>
     </eg-grid-column>
     <eg-grid-column path="copyCount" datatype="number" label="Copies" i18n-label>
     </eg-grid-column>

commit 3c3377008c95e17bdcf25b51df6d60fbf10c8f3a
Author: Bill Erickson <berickxx at gmail.com>
Date:   Tue May 28 12:15:34 2019 -0400

    LP1823367 Grid toolbar checkbox onChange repairs
    
    Update checkbox onChange handler in the grid toolbar to emit an event
    instead of trying to call the handler like a function.
    
    Signed-off-by: Bill Erickson <berickxx at gmail.com>
    Signed-off-by: Dan Wells <dbw2 at calvin.edu>
    Signed-off-by: Galen Charlton <gmc at equinoxinitiative.org>

diff --git a/Open-ILS/src/eg2/src/app/share/grid/grid-toolbar.component.html b/Open-ILS/src/eg2/src/app/share/grid/grid-toolbar.component.html
index 35781a5014..55ca188f50 100644
--- a/Open-ILS/src/eg2/src/app/share/grid/grid-toolbar.component.html
+++ b/Open-ILS/src/eg2/src/app/share/grid/grid-toolbar.component.html
@@ -25,7 +25,7 @@
         <label class="form-check-label">
           <input class="form-check-input" type="checkbox"
             [(ngModel)]="cb.isChecked"
-            (click)="cb.onChange($event.target.checked)"/>
+            (click)="cb.onChange.emit($event.target.checked)"/>
             {{cb.label}}
         </label>
       </ng-container>

commit 68e096cb240204de0a61b595e3cce847c2e52328
Author: Bill Erickson <berickxx at gmail.com>
Date:   Tue May 28 11:00:39 2019 -0400

    LP1823367 Catalog ident query improvements
    
    * Default to ISBN search in the identifier query form.
    
    * Remove the disabled "call number browse" entry from the identifier
      query type selector, since CN browse now has a dedicated tab.
    
    Signed-off-by: Bill Erickson <berickxx at gmail.com>
    Signed-off-by: Dan Wells <dbw2 at calvin.edu>
    Signed-off-by: Galen Charlton <gmc at equinoxinitiative.org>

diff --git a/Open-ILS/src/eg2/src/app/staff/catalog/search-form.component.html b/Open-ILS/src/eg2/src/app/staff/catalog/search-form.component.html
index 72386f2621..d032f3d08f 100644
--- a/Open-ILS/src/eg2/src/app/staff/catalog/search-form.component.html
+++ b/Open-ILS/src/eg2/src/app/staff/catalog/search-form.component.html
@@ -224,7 +224,6 @@ TODO focus search input
                   [(ngModel)]="context.identSearch.queryType">
                   <option i18n value="identifier|isbn">ISBN</option>
                   <option i18n value="identifier|issn">ISSN</option>
-                  <option i18n disabled value="cnbrowse">Call Number (Shelf Browse)</option>
                   <option i18n value="identifier|lccn">LCCN</option>
                   <option i18n value="identifier|tcn">TCN</option>
                   <option i18n value="item_barcode">Item Barcode</option>
diff --git a/Open-ILS/src/eg2/src/app/staff/catalog/search-form.component.ts b/Open-ILS/src/eg2/src/app/staff/catalog/search-form.component.ts
index 0e010eb5ca..84dd830538 100644
--- a/Open-ILS/src/eg2/src/app/staff/catalog/search-form.component.ts
+++ b/Open-ILS/src/eg2/src/app/staff/catalog/search-form.component.ts
@@ -59,6 +59,10 @@ export class SearchFormComponent implements OnInit, AfterViewInit {
         // Avoid changing the tab in the lifecycle hook thread.
         setTimeout(() => {
 
+            if (this.context.identSearch.queryType === '') {
+                this.context.identSearch.queryType = 'identifier|isbn';
+            }
+
             // Apply a tab if none was already specified
             if (!this.searchTab) {
                 // Assumes that only one type of search will be searchable

-----------------------------------------------------------------------

Summary of changes:
 .../src/app/share/grid/grid-toolbar.component.html |   2 +-
 .../server/admin-server-splash.component.html      |   4 +-
 .../admin/server/org-unit-type.component.html      |   2 +-
 .../app/staff/cat/vandelay/import.component.html   |   2 +-
 .../src/app/staff/catalog/hold/hold.component.html |   6 +-
 .../staff/catalog/record/actions.component.html    |  12 +-
 .../app/staff/catalog/record/actions.component.ts  |  14 +-
 .../app/staff/catalog/record/copies.component.html |   8 +-
 .../staff/catalog/record/holdings.component.css    |   2 +-
 .../staff/catalog/record/holdings.component.html   |  42 ++--
 .../app/staff/catalog/record/holdings.component.ts | 268 ++++++++++-----------
 .../app/staff/catalog/record/record.component.html |   2 +-
 .../app/staff/catalog/search-form.component.html   |   1 -
 .../src/app/staff/catalog/search-form.component.ts |   4 +
 Open-ILS/src/eg2/src/app/staff/nav.component.html  |   4 +-
 .../holdings/copy-alerts-dialog.component.html     |   4 +-
 .../holdings/delete-volcopy-dialog.component.html  |   2 +-
 .../holdings/delete-volcopy-dialog.component.ts    |  30 +--
 .../app/staff/share/holdings/holdings.module.ts    |   6 +-
 .../app/staff/share/holdings/holdings.service.ts   |  14 +-
 .../src/app/staff/share/holds/grid.component.html  |  50 ++--
 .../eg2/src/app/staff/share/holds/holds.service.ts |   7 +-
 .../src/eg2/src/app/staff/splash.component.html    |   2 +-
 23 files changed, 246 insertions(+), 242 deletions(-)


hooks/post-receive
-- 
Evergreen ILS


More information about the open-ils-commits mailing list