text="There is no corresponding purchase order for this item.">
</eg-string>
+<eg-string #itemModified i18n-text text="Item Successfully Modified"></eg-string>
+
<div class="row mb-3">
<div class="col-lg-12 form-inline d-flex">
<div class="input-group">
{{r.call_number().suffix().label()}}
</ng-template>
+<ng-template #titleTemplate let-r="row">
+ <ng-container *ngIf="r.call_number().id() == -1">
+ {{r.dummy_title()}}
+ </ng-container>
+ <ng-container *ngIf="r.call_number().id() > 0">
+ <a target="_blank"
+ routerLink="/staff/catalog/record/{{r.call_number().record().id()}}">
+ {{r.call_number().record().simple_record().title()}}
+ </a>
+ </ng-container>
+</ng-template>
+
+
<eg-grid *ngIf="tab == 'list'" #grid [dataSource]="dataSource" idlClass="acp"
(onRowActivate)="showDetails($event)" [cellTextGenerator]="cellTextGenerator"
[useLocalSort]="true" [sortable]="true" [showDeclaredFieldsOnly]="true"
+ [rowFlairIsEnabled]="true" [rowFlairCallback]="rowFlair"
[disablePaging]="true" persistKey="cat.item.status.list">
<eg-grid-toolbar-button i18n-label label="Clear List" (onClick)="clearList()">
<eg-grid-column i18n-label label="Call Number" name="call_number_label"
[cellTemplate]="callNumberTemplate"></eg-grid-column>
- <eg-grid-column i18n-label label="Title"
- path="call_number.record.simple_record.title"></eg-grid-column>
+ <eg-grid-column i18n-label label="Title" name="title"
+ [cellTemplate]="titleTemplate"></eg-grid-column>
<eg-grid-column path="call_number.*" [hidden]="true"></eg-grid-column>
<eg-grid-column path="call_number.record.*" [hidden]="true"></eg-grid-column>
import {AnonCacheService} from '@eg/share/util/anon-cache.service';
import {ToastService} from '@eg/share/toast/toast.service';
import {StringService} from '@eg/share/string/string.service';
+import {StringComponent} from '@eg/share/string/string.component';
import {ConfirmDialogComponent} from '@eg/share/dialog/confirm.component';
import {MarkItemsDialogComponent
} from '@eg/staff/share/holdings/mark-items-dialog.component';
-import {GridDataSource, GridColumn, GridCellTextGenerator} from '@eg/share/grid/grid';
+import {GridDataSource, GridColumn, GridCellTextGenerator,
+ GridRowFlairEntry} from '@eg/share/grid/grid';
import {GridComponent} from '@eg/share/grid/grid.component';
import {Pager} from '@eg/share/util/pager';
import {ItemStatusService} from './item.service';
+import {BroadcastService} from '@eg/share/util/broadcast.service';
@Component({
templateUrl: 'status.component.html'
tab: string;
preloadCopyIds: number[];
+ rowFlair: (row: IdlObject) => GridRowFlairEntry;
cellTextGenerator: GridCellTextGenerator;
dataSource: GridDataSource = new GridDataSource();
@ViewChild('grid') private grid: GridComponent;
private cancelTransitDialog: CancelTransitDialogComponent;
@ViewChild('markItemsDialog')
private markItemsDialog: MarkItemsDialogComponent;
+ @ViewChild('itemModified')
+ private itemModified: StringComponent;
constructor(
private router: Router,
private toast: ToastService,
private strings: StringService,
private anonCache: AnonCacheService,
+ private broadcaster: BroadcastService,
private itemService: ItemStatusService
) {}
}
}
+ this.broadcaster.listen('eg.holdings.update').subscribe(data => {
+ if (data && data.copies) {
+ const copies = [];
+ this.itemService.scannedItems.forEach(item => {
+ if (data.copies.includes(item.id())) {
+ item.ischanged(true); // for grid flair
+ copies.push(item);
+ }
+ });
+
+ if (copies.length > 0) {
+ this.refreshSelectCopies(copies);
+ }
+ }
+ });
+
+ this.rowFlair = (row: IdlObject) => {
+ if (row.ischanged()) {
+ return {icon: 'save', title: this.itemModified.text}
+ }
+ };
+
this.dataSource.getRows = (pager: Pager, sort: any[]) => {
return from(this.itemService.scannedItems);
};
this.cellTextGenerator = {
+
+ title: row => {
+ if (row.call_number().id() === -1) {
+ return row.dummy_title();
+ } else {
+ return row.call_number().record().simple_record().title();
+ }
+ },
call_number_label: row => {
return row.call_number().prefix().label() + ' ' +
row.call_number().label() + ' ' +
// Retain the original grid index value so row
// selection can persist.
updatedCopy._index = item._index;
+ updatedCopy.ischanged(item.ischanged());
this.itemService.scannedItems.splice(idx, 1, updatedCopy);
}
});