+<eg-record-bucket-dialog #addBasketToBucketDialog>
+</eg-record-bucket-dialog>
<div class="row">
<div class="col-lg-4 pr-1">
[disabled]="!basketCount()"
[(ngModel)]="basketAction" (change)="applyAction()">
<option value='' [disabled]="true" i18n>Basket Actions...</option>
- <option value="view" i18n>View Basket</option>
+ <option value="view" i18n>View Basket</option>
<option value="hold" [disabled]="true" i18n>Place Hold</option>
<option value="print" [disabled]="true" i18n>Print Title Details</option>
<option value="email" [disabled]="true" i18n>Email Title Details</option>
- <option value="bucket" [disabled]="true" i18n>Add Basket to Bucket</option>
+ <option value="bucket" i18n>Add Basket to Bucket</option>
<option value="clear" [disabled]="true" i18n>Clear Basket</option>
</select>
</div>
-import {Component, OnInit} from '@angular/core';
+import {Component, OnInit, ViewChild} from '@angular/core';
import {BasketService} from '@eg/share/catalog/basket.service';
import {Subscription} from 'rxjs/Subscription';
import {Router} from '@angular/router';
+import {RecordBucketDialogComponent}
+ from '@eg/staff/share/buckets/record-bucket-dialog.component';
@Component({
selector: 'eg-catalog-basket-actions',
basketAction: string;
+ @ViewChild('addBasketToBucketDialog')
+ addToBucketDialog: RecordBucketDialogComponent;
+
constructor(
private router: Router,
private basket: BasketService
case 'clear':
this.basket.removeAllRecordIds();
break;
+
+ case 'bucket':
+ this.basket.getRecordIds().then(ids => {
+ this.addToBucketDialog.recordId = ids;
+ this.addToBucketDialog.open({size: 'lg'});
+ });
+ break;
+
}
// Resetting basketAction inside its onchange handler
</div>
</div>
-
<!-- header, pager, and list of records -->
<div id="staff-catalog-results-container" *ngIf="searchHasResults()">
<div class="row">
- <div class="col-lg-2"><!--match pagination margin-->
+ <div class="col-lg-2" *ngIf="!searchContext.basket">
<h3 i18n>Search Results ({{searchContext.result.count}})</h3>
</div>
+ <div class="col-lg-2" *ngIf="searchContext.basket">
+ <h3 i18n>Basket View</h3>
+ </div>
<div class="col-lg-2">
- <label class="checkbox">
+ <label class="checkbox" *ngIf="!searchContext.basket">
<input type='checkbox' [(ngModel)]="allRecsSelected"
(change)="toggleAllRecsSelected()"/>
<span class="pl-1" i18n>Select {{searchContext.pager.rowNumber(0)}} -
</div>
<div>
<div class="row mt-2">
- <div class="col-lg-2">
+ <div class="col-lg-2" *ngIf="!searchContext.basket">
<eg-catalog-result-facets></eg-catalog-result-facets>
</div>
- <div class="col-lg-10">
+ <div
+ [ngClass]="{'col-lg-10': !searchContext.basket, 'col-lg-12': searchContext.basket}">
<div *ngIf="shouldStartRendering()">
<div *ngFor="let summary of searchContext.result.records; let idx = index">
<div *ngIf="summary">
formEnter(source) {
this.searchContext.pager.offset = 0;
+ // Form searches override basket displays.
+ this.searchContext.basket = null;
+
switch (source) {
case 'query': // main search form query input
<ng-template #dialogContent>
<div class="modal-header bg-info">
- <h4 class="modal-title" i18n>Add To Record #{{recId}} to Bucket</h4>
+ <h4 class="modal-title">
+ <span *ngIf="recIds.length == 1" i18n>
+ Add To Record #{{recIds[0]}} to Bucket</span>
+ <span *ngIf="recIds.length != 1" i18n>
+ Add {{recIds.length}} Record(s) to Bucket</span>
+ </h4>
<button type="button" class="close"
i18n-aria-label aria-label="Close"
(click)="dismiss('cross_click')">
newBucketDesc: string;
buckets: any[];
- recId: number;
- @Input() set recordId(id: number) {
- this.recId = id;
+ recIds: number[];
+ @Input() set recordId(id: number | number[]) {
+ this.recIds = [].concat(id);
}
constructor(
});
}
- // Add the record to the selected existing bucket
+ // Add the record(s) to the bucket with provided ID.
addToBucket(id: number) {
- const item = this.idl.create('cbrebi');
- item.bucket(id);
- item.target_biblio_record_entry(this.recId);
+ const items = [];
+ this.recIds.forEach(recId => {
+ const item = this.idl.create('cbrebi');
+ item.bucket(id);
+ item.target_biblio_record_entry(recId);
+ items.push(item);
+ });
this.net.request(
'open-ils.actor',
'open-ils.actor.container.item.create',
- this.auth.token(), 'biblio', item
+ this.auth.token(), 'biblio', items
).subscribe(resp => {
const evt = this.evt.parse(resp);
if (evt) {
return $e->die_event unless $e->checkauth;
my $items = (ref $item eq 'ARRAY') ? $item : [$item];
+ # Elect an item to be the source of the bucket we will
+ # add all items to.
+ $item = $items->[0];
+
my ( $bucket, $evt ) = $apputils->fetch_container_e($e, $item->bucket, $class);
return $evt if $evt;