]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/eg2/src/app/staff/share/holdings.service.ts
LP#1775466 Angular(6) base application
[Evergreen.git] / Open-ILS / src / eg2 / src / app / staff / share / holdings.service.ts
1 /**
2  * Common code for mananging holdings
3  */
4 import {Injectable, EventEmitter} from '@angular/core';
5 import {NetService} from '@eg/core/net.service';
6
7 interface NewVolumeData {
8     owner: number;
9     label?: string;
10 }
11
12 @Injectable()
13 export class HoldingsService {
14
15     constructor(private net: NetService) {}
16
17     // Open the holdings editor UI in a new browser window/tab.
18     spawnAddHoldingsUi(
19         recordId: number,                   // Bib record ID
20         addToVols: number[] = [],           // Add copies to existing volumes
21         volumeData: NewVolumeData[] = []) { // Creating new volumes
22
23         const raw: any[] = [];
24
25         if (addToVols) {
26             addToVols.forEach(volId => raw.push({callnumber: volId}));
27         } else if (volumeData) {
28             volumeData.forEach(data => raw.push(data));
29         }
30
31         if (raw.length === 0) { raw.push({}); }
32
33         this.net.request(
34             'open-ils.actor',
35             'open-ils.actor.anon_cache.set_value',
36             null, 'edit-these-copies', {
37                 record_id: recordId,
38                 raw: raw,
39                 hide_vols : false,
40                 hide_copies : false
41             }
42         ).subscribe(
43             key => {
44                 if (!key) {
45                     console.error('Could not create holds cache key!');
46                     return;
47                 }
48                 setTimeout(() => {
49                     const url = `/eg/staff/cat/volcopy/${key}`;
50                     window.open(url, '_blank');
51                 });
52             }
53         );
54     }
55
56 }
57