87b0ff1a9a62beab1a75e48b3d3d17e0d464cd39
[Evergreen.git] / Open-ILS / src / eg2 / src / app / staff / share / holdings / 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 import {AnonCacheService} from '@eg/share/util/anon-cache.service';
7 import {AuthService} from '@eg/core/auth.service';
8 import {EventService} from '@eg/core/event.service';
9
10 interface NewVolumeData {
11     owner: number;
12     label?: string;
13 }
14
15 @Injectable()
16 export class HoldingsService {
17
18     constructor(
19         private net: NetService,
20         private auth: AuthService,
21         private evt: EventService,
22         private anonCache: AnonCacheService
23     ) {}
24
25     // Open the holdings editor UI in a new browser window/tab.
26     spawnAddHoldingsUi(
27         recordId: number,               // Bib record ID
28         addToVols?: number[],           // Add copies to / modify existing vols
29         volumeData?: NewVolumeData[],   // Creating new volumes
30         hideCopies?: boolean) {         // Hide the copy edit pane
31
32         const raw: any[] = [];
33
34         if (addToVols) {
35             addToVols.forEach(volId => raw.push({callnumber: volId}));
36         } else if (volumeData) {
37             volumeData.forEach(data => raw.push(data));
38         }
39
40         if (raw.length === 0) { raw.push({}); }
41
42         this.anonCache.setItem(null, 'edit-these-copies', {
43             record_id: recordId,
44             raw: raw,
45             hide_vols : false,
46             hide_copies : hideCopies ? true : false
47         }).then(key => {
48             if (!key) {
49                 console.error('Could not create holds cache key!');
50                 return;
51             }
52             setTimeout(() => {
53                 const url = `/eg/staff/cat/volcopy/${key}`;
54                 window.open(url, '_blank');
55             });
56         });
57     }
58 }
59