<eg-hold-cancel-dialog #cancelDialog></eg-hold-cancel-dialog>
<eg-hold-manage-dialog #manageDialog></eg-hold-manage-dialog>
+<eg-string key="hold-status--1" i18n-text text="Unknown Error"></eg-string>
+<eg-string key="hold-status-1" i18n-text text="Waiting for Item"></eg-string>
+<eg-string key="hold-status-2" i18n-text text="Waiting for Capture"></eg-string>
+<eg-string key="hold-status-3" i18n-text text="In Transit"></eg-string>
+<eg-string key="hold-status-4" i18n-text text="Ready for Pickup"></eg-string>
+<eg-string key="hold-status-5" i18n-text text="Hold Shelf Delay"></eg-string>
+<eg-string key="hold-status-6" i18n-text text="Canceled"></eg-string>
+<eg-string key="hold-status-7" i18n-text text="Suspended"></eg-string>
+<eg-string key="hold-status-8" i18n-text text="Wrong Shelf"></eg-string>
+<eg-string key="hold-status-9" i18n-text text="Fulfilled"></eg-string>
+
<div class='eg-holds w-100 mt-3'>
<ng-container *ngIf="mode == 'detail'">
[hidden]="true"></eg-grid-column>
<eg-grid-column i18n-label label="Potential Items" path='potentials' datatype="int">
</eg-grid-column>
- <eg-grid-column i18n-label label="Status" path='status_string'>
+
+ <eg-grid-column i18n-label label="Hold Status" path='status_string'>
</eg-grid-column>
+
<eg-grid-column i18n-label label="Queue Position"
path='relative_queue_position' [hidden]="true" datatype="int"></eg-grid-column>
<eg-grid-column path='usr_id' i18n-label label="User ID" [hidden]="true"></eg-grid-column>
<eg-grid-column i18n-label label="Shelf Expire Time" path='shelf_expire_time' datatype="timestamp" [hidden]="true"></eg-grid-column>
<eg-grid-column i18n-label label="Current Shelf Library" path='current_shelf_lib' [hidden]="true"></eg-grid-column>
<eg-grid-column i18n-label label="Behind Desk" path='behind_desk' datatype="bool" [hidden]="true"></eg-grid-column>
- <eg-grid-column i18n-label label="Status" path='hold_status' [hidden]="true"></eg-grid-column>
<eg-grid-column i18n-label label="Clearable" path='clear_me' datatype="bool" [hidden]="true"></eg-grid-column>
<eg-grid-column i18n-label label="Is Staff-placed Hold" path='is_staff_hold' datatype="bool" [hidden]="true"></eg-grid-column>
<eg-grid-column i18n-label label="Cancelation Cause ID" path='cc_id' [hidden]="true"></eg-grid-column>
-import {Component, OnInit, Input, ViewChild} from '@angular/core';
+import {Component, OnInit, Input, ViewChild, QueryList, ViewChildren} from '@angular/core';
import {Observable, Observer, of} from 'rxjs';
import {IdlObject} from '@eg/core/idl.service';
import {NetService} from '@eg/core/net.service';
import {HoldCancelDialogComponent} from './cancel-dialog.component';
import {HoldManageDialogComponent} from './manage-dialog.component';
import {PrintService} from '@eg/share/print/print.service';
+import {StringComponent} from '@eg/share/string/string.component';
/** Holds grid with access to detail page and other actions */
@ViewChild('manageDialog', { static: true })
private manageDialog: HoldManageDialogComponent;
+ @ViewChildren(StringComponent) strings: QueryList<StringComponent>;
+
// Bib record ID.
_recordId: number;
@Input() set recordId(id: number) {
}
const filters = this.applyFilters();
-
const orderBy: any = [];
+
if (sort.length > 0) {
sort.forEach(obj => {
const subObj: any = {};
- subObj[obj.name] = {dir: obj.dir, nulls: 'last'};
+ let fieldName = obj.name;
+
+ if (fieldName === 'status_string') {
+ // status_string is a locally derived value which
+ // cannot be server-sorted. Instead, sort by the
+ // status number for consistent sort behavior and to
+ // avoid API explosions
+ fieldName = 'hold_status';
+ }
+
+ subObj[fieldName] = {dir: obj.dir, nulls: 'last'};
orderBy.push(subObj);
});
}
this.progressDialog.update(
{value: ++loadCount, max: this.holdsCount});
+ // Map the status strings listed in our template
+ // to the status number on the hold.
+ this.strings.forEach(s => {
+ if (s.key === 'hold-status-' + holdData.hold_status) {
+ holdData.status_string = s.text;
+ }
+ });
+
observer.next(holdData);
}
},