f61d3d419282db2e7caa2b768a76836949a169cb
[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 NewCallNumData {
11     owner?: number;
12     label?: string;
13     fast_add?: boolean;
14     barcode?: string;
15 }
16
17 @Injectable()
18 export class HoldingsService {
19
20     constructor(
21         private net: NetService,
22         private auth: AuthService,
23         private evt: EventService,
24         private anonCache: AnonCacheService
25     ) {}
26
27     // Open the holdings editor UI in a new browser window/tab.
28     spawnAddHoldingsUi(
29         recordId: number,                  // Bib record ID
30         editExistingCallNums?: number[],   // Add copies to / modify existing CNs
31         newCallNumData?: NewCallNumData[], // Creating new call numbers
32         editCopyIds?: number[],            // Edit existing items
33         hideCopies?: boolean,              // Hide the copy edit pane
34         hideVols?: boolean) {
35
36         const raw: any[] = [];
37
38         if (editExistingCallNums) {
39             editExistingCallNums.forEach(
40                 callNumId => raw.push({callnumber: callNumId}));
41         } else if (newCallNumData) {
42             newCallNumData.forEach(data => raw.push(data));
43         }
44
45         this.anonCache.setItem(null, 'edit-these-copies', {
46             record_id: recordId,
47             raw: raw,
48             copies: editCopyIds,
49             hide_vols : hideVols === true,
50             hide_copies : hideCopies === true
51         }).then(key => {
52             if (!key) {
53                 console.error('Could not create holds cache key!');
54                 return;
55             }
56             setTimeout(() => {
57                 const url = `/eg/staff/cat/volcopy/${key}`;
58                 window.open(url, '_blank');
59             });
60         });
61     }
62 }
63