@vgip/meta-ui 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/bundles/vgip-meta-ui.umd.js +6323 -0
- package/bundles/vgip-meta-ui.umd.js.map +1 -0
- package/esm2015/lib/common/fieldNormalizer/boolean.js +12 -0
- package/esm2015/lib/common/fieldNormalizer/datetime.js +9 -0
- package/esm2015/lib/common/fieldNormalizer/index.js +168 -0
- package/esm2015/lib/common/fieldNormalizer/number.js +9 -0
- package/esm2015/lib/common/fieldNormalizer/options.js +50 -0
- package/esm2015/lib/common/fieldNormalizer/radio.js +10 -0
- package/esm2015/lib/common/fieldNormalizer/reference.js +36 -0
- package/esm2015/lib/common/fieldNormalizer/richtext.js +15 -0
- package/esm2015/lib/common/fieldNormalizer/string.js +24 -0
- package/esm2015/lib/common/fieldNormalizer/text.js +15 -0
- package/esm2015/lib/common/fieldNormalizer/uniqueNameFilter.js +23 -0
- package/esm2015/lib/common/metaAutofocus.directive.js +35 -0
- package/esm2015/lib/common/metaIcons.pipe.js +28 -0
- package/esm2015/lib/common/metaModel.pipe.js +22 -0
- package/esm2015/lib/common/metaNormalizer.js +311 -0
- package/esm2015/lib/common/metaStripHtml.pipe.js +18 -0
- package/esm2015/lib/common/utils/colorThemes.js +77 -0
- package/esm2015/lib/common/utils/indexedDbStore/index.js +218 -0
- package/esm2015/lib/common/utils/relativeTimeBuilder.js +51 -0
- package/esm2015/lib/common/utils/templateBuilder.js +92 -0
- package/esm2015/lib/field.js +157 -0
- package/esm2015/lib/fieldAbstract.js +195 -0
- package/esm2015/lib/fieldBoolean/index.js +50 -0
- package/esm2015/lib/fieldComposite/index.js +41 -0
- package/esm2015/lib/fieldDatetime/index.js +334 -0
- package/esm2015/lib/fieldInput/index.js +421 -0
- package/esm2015/lib/fieldList/index.js +68 -0
- package/esm2015/lib/fieldRadio/index.js +85 -0
- package/esm2015/lib/fieldReference/index.js +797 -0
- package/esm2015/lib/fieldRichtext/index.js +82 -0
- package/esm2015/lib/fieldSelect/index.js +448 -0
- package/esm2015/lib/fieldText/index.js +66 -0
- package/esm2015/lib/fieldUnknown/index.js +16 -0
- package/esm2015/lib/index.js +105 -0
- package/esm2015/lib/layout/index.js +155 -0
- package/esm2015/lib/refDialog/index.js +134 -0
- package/esm2015/lib/resource/index.js +424 -0
- package/esm2015/lib/resourceCard/index.js +56 -0
- package/esm2015/lib/services/metaContext/index.js +34 -0
- package/esm2015/lib/services/metaMsg/index.js +86 -0
- package/esm2015/lib/services/metaReference/index.js +98 -0
- package/esm2015/lib/services/metaResource/index.js +141 -0
- package/esm2015/lib/services/metaResource/metaHttpClient.js +65 -0
- package/esm2015/lib/services/metaTracker/index.js +30 -0
- package/esm2015/lib/services/resourceDrafts/index.js +70 -0
- package/esm2015/public-api.js +5 -0
- package/esm2015/vgip-meta-ui.js +5 -0
- package/fesm2015/vgip-meta-ui.js +5226 -0
- package/fesm2015/vgip-meta-ui.js.map +1 -0
- package/lib/common/fieldNormalizer/boolean.d.ts +1 -0
- package/lib/common/fieldNormalizer/datetime.d.ts +1 -0
- package/lib/common/fieldNormalizer/index.d.ts +1 -0
- package/lib/common/fieldNormalizer/number.d.ts +1 -0
- package/lib/common/fieldNormalizer/options.d.ts +1 -0
- package/lib/common/fieldNormalizer/radio.d.ts +1 -0
- package/lib/common/fieldNormalizer/reference.d.ts +1 -0
- package/lib/common/fieldNormalizer/richtext.d.ts +1 -0
- package/lib/common/fieldNormalizer/string.d.ts +1 -0
- package/lib/common/fieldNormalizer/text.d.ts +1 -0
- package/lib/common/fieldNormalizer/uniqueNameFilter.d.ts +1 -0
- package/lib/common/metaAutofocus.directive.d.ts +7 -0
- package/lib/common/metaIcons.pipe.d.ts +7 -0
- package/lib/common/metaModel.pipe.d.ts +5 -0
- package/lib/common/metaNormalizer.d.ts +1 -0
- package/lib/common/metaStripHtml.pipe.d.ts +4 -0
- package/lib/common/utils/colorThemes.d.ts +8 -0
- package/lib/common/utils/indexedDbStore/index.d.ts +24 -0
- package/lib/common/utils/relativeTimeBuilder.d.ts +1 -0
- package/lib/common/utils/templateBuilder.d.ts +1 -0
- package/lib/field.d.ts +22 -0
- package/lib/fieldAbstract.d.ts +58 -0
- package/lib/fieldBoolean/index.d.ts +7 -0
- package/lib/fieldComposite/index.d.ts +8 -0
- package/lib/fieldDatetime/index.d.ts +23 -0
- package/lib/fieldInput/index.d.ts +28 -0
- package/lib/fieldList/index.d.ts +10 -0
- package/lib/fieldRadio/index.d.ts +12 -0
- package/lib/fieldReference/index.d.ts +68 -0
- package/lib/fieldRichtext/index.d.ts +27 -0
- package/lib/fieldSelect/index.d.ts +38 -0
- package/lib/fieldText/index.d.ts +12 -0
- package/lib/fieldUnknown/index.d.ts +3 -0
- package/lib/index.d.ts +35 -0
- package/lib/layout/index.d.ts +35 -0
- package/lib/refDialog/index.d.ts +30 -0
- package/lib/resource/index.d.ts +54 -0
- package/lib/resourceCard/index.d.ts +15 -0
- package/lib/services/metaContext/index.d.ts +23 -0
- package/lib/services/metaMsg/index.d.ts +11 -0
- package/lib/services/metaReference/index.d.ts +11 -0
- package/lib/services/metaResource/index.d.ts +28 -0
- package/lib/services/metaResource/metaHttpClient.d.ts +12 -0
- package/lib/services/metaTracker/index.d.ts +16 -0
- package/lib/services/resourceDrafts/index.d.ts +23 -0
- package/package.json +23 -0
- package/public-api.d.ts +1 -0
- package/vgip-meta-ui.d.ts +4 -0
- package/vgip-meta-ui.metadata.json +1 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @Author: Alexander.Vangelov@vonage.com
|
|
3
|
+
* @Date: 2019-09-19 17:35:19
|
|
4
|
+
* @Last Modified by: Alexander.Vangelov@vonage.com
|
|
5
|
+
* @Last Modified time: 2020-03-06 10:10:09
|
|
6
|
+
*/
|
|
7
|
+
import { Injectable } from '@angular/core';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
export class MetaContextService {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.defaultContactables = {};
|
|
12
|
+
this.workers = {};
|
|
13
|
+
this.contactables = {};
|
|
14
|
+
this.profiles = {};
|
|
15
|
+
}
|
|
16
|
+
set(context) {
|
|
17
|
+
if (context) {
|
|
18
|
+
if (context.phoneNumber) {
|
|
19
|
+
this.phoneNumber = context.phoneNumber;
|
|
20
|
+
}
|
|
21
|
+
if (context.displayName) {
|
|
22
|
+
this.displayName = context.displayName;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
MetaContextService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MetaContextService_Factory() { return new MetaContextService(); }, token: MetaContextService, providedIn: "root" });
|
|
28
|
+
MetaContextService.decorators = [
|
|
29
|
+
{ type: Injectable, args: [{
|
|
30
|
+
providedIn: 'root'
|
|
31
|
+
},] }
|
|
32
|
+
];
|
|
33
|
+
MetaContextService.ctorParameters = () => [];
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXRhLXVpL3NyYy9saWIvc2VydmljZXMvbWV0YUNvbnRleHQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sa0JBQWtCO0lBYTdCO1FBVkEsd0JBQW1CLEdBQXFDLEVBQUUsQ0FBQztRQUMzRCxZQUFPLEdBQXFDLEVBQUUsQ0FBQztRQUMvQyxpQkFBWSxHQUFxQyxFQUFFLENBQUM7UUFDcEQsYUFBUSxHQUFxQyxFQUFFLENBQUM7SUFTaEQsQ0FBQztJQUVELEdBQUcsQ0FBQyxPQUFRO1FBQ1YsSUFBSSxPQUFPLEVBQUU7WUFDWCxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQzthQUN4QztZQUNELElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDO2FBQ3hDO1NBQ0Y7SUFDSCxDQUFDOzs7O1lBN0JGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBAQXV0aG9yOiBBbGV4YW5kZXIuVmFuZ2Vsb3ZAdm9uYWdlLmNvbVxuICogQERhdGU6IDIwMTktMDktMTkgMTc6MzU6MTlcbiAqIEBMYXN0IE1vZGlmaWVkIGJ5OiBBbGV4YW5kZXIuVmFuZ2Vsb3ZAdm9uYWdlLmNvbVxuICogQExhc3QgTW9kaWZpZWQgdGltZTogMjAyMC0wMy0wNiAxMDoxMDowOVxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTWV0YUNvbnRleHRTZXJ2aWNlIHtcbiAgcGhvbmVOdW1iZXI6IHN0cmluZztcbiAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgZGVmYXVsdENvbnRhY3RhYmxlczoge1tpbnRlZ3JhdGlvbkNvZGU6IHN0cmluZ106IGFueX0gPSB7fTtcbiAgd29ya2Vyczoge1tpbnRlZ3JhdGlvbkNvZGU6IHN0cmluZ106IGFueX0gPSB7fTtcbiAgY29udGFjdGFibGVzOiB7W2ludGVncmF0aW9uQ29kZTogc3RyaW5nXTogYW55fSA9IHt9O1xuICBwcm9maWxlczoge1tpbnRlZ3JhdGlvbkNvZGU6IHN0cmluZ106IGFueX0gPSB7fTtcbiAgdmdpcEV2ZW50SWQ6IHN0cmluZztcbiAgdmdpcFVzZXJJZDogc3RyaW5nO1xuICBjb250ZXh0OiBhbnk7XG4gIHVpZDogc3RyaW5nO1xuICBzdWJqZWN0OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoKSB7XG5cbiAgfVxuXG4gIHNldChjb250ZXh0Pykge1xuICAgIGlmIChjb250ZXh0KSB7XG4gICAgICBpZiAoY29udGV4dC5waG9uZU51bWJlcikge1xuICAgICAgICB0aGlzLnBob25lTnVtYmVyID0gY29udGV4dC5waG9uZU51bWJlcjtcbiAgICAgIH1cbiAgICAgIGlmIChjb250ZXh0LmRpc3BsYXlOYW1lKSB7XG4gICAgICAgIHRoaXMuZGlzcGxheU5hbWUgPSBjb250ZXh0LmRpc3BsYXlOYW1lO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @Author: Alexander.Vangelov@vonage.com
|
|
3
|
+
* @Date: 2019-09-19 17:35:19
|
|
4
|
+
* @Last Modified by: Alexander.Vangelov@vonage.com
|
|
5
|
+
* @Last Modified time: 2020-05-03 21:31:16
|
|
6
|
+
*/
|
|
7
|
+
/*
|
|
8
|
+
* Worker messages systems. Every integration may extend the base functionality by registering an integration worker.
|
|
9
|
+
* This service provides single response for the worker message requests as a callback.
|
|
10
|
+
*/
|
|
11
|
+
import { Injectable } from '@angular/core';
|
|
12
|
+
import { MetaContextService } from '../metaContext';
|
|
13
|
+
import * as i0 from "@angular/core";
|
|
14
|
+
import * as i1 from "../metaContext/index";
|
|
15
|
+
export class MetaMsgService {
|
|
16
|
+
constructor(metaContext) {
|
|
17
|
+
this.metaContext = metaContext;
|
|
18
|
+
this.msgCallbacks = {}; // message subscribers holder
|
|
19
|
+
this.msgListeneres = []; // ensure listener is registerd only once
|
|
20
|
+
this.workerMsgListener = (msg) => {
|
|
21
|
+
if (msg && msg.data && msg.data.action && msg.data.$state) {
|
|
22
|
+
const state = msg.data.$state;
|
|
23
|
+
const callback = this.msgCallbacks[state]; // original requester callback
|
|
24
|
+
if (callback) {
|
|
25
|
+
delete msg.data.$state;
|
|
26
|
+
callback(msg.data);
|
|
27
|
+
}
|
|
28
|
+
delete this.msgCallbacks[state]; // get rid of the listener callback when done
|
|
29
|
+
}
|
|
30
|
+
this.removeExpiredListeners(); // wipe out the expired listeners if any
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
sendMessage(provider, msg, callback, isLong = false) {
|
|
34
|
+
provider = (provider || '').toUpperCase();
|
|
35
|
+
const providerWorker = this.metaContext.workers[provider];
|
|
36
|
+
if (providerWorker) {
|
|
37
|
+
if (this.msgListeneres.indexOf(provider)) {
|
|
38
|
+
this.msgListeneres.push(provider);
|
|
39
|
+
providerWorker.addEventListener('message', this.workerMsgListener, false); // register a short time listener
|
|
40
|
+
}
|
|
41
|
+
let state; // message unique identifier
|
|
42
|
+
do {
|
|
43
|
+
state = new Date().getTime();
|
|
44
|
+
} while (!!this.msgCallbacks[state]);
|
|
45
|
+
this.msgCallbacks[state] = callback; // register message callback
|
|
46
|
+
msg.$state = state;
|
|
47
|
+
providerWorker.postMessage(msg);
|
|
48
|
+
setTimeout(() => {
|
|
49
|
+
this.cancelMsgListener(msg.action, state); // give up, worker does not replied on time
|
|
50
|
+
const listenerIndex = this.msgListeneres.indexOf(provider);
|
|
51
|
+
if (listenerIndex !== -1) {
|
|
52
|
+
this.msgListeneres.splice(listenerIndex, 1);
|
|
53
|
+
}
|
|
54
|
+
providerWorker.removeEventListener('message', this.workerMsgListener); // remove listener when done
|
|
55
|
+
}, isLong ? 60000 : 2000);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
callback({ action: msg.action, error: `Worker ${provider} is not registered` });
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
cancelMsgListener(action, storedState) {
|
|
62
|
+
const storedCallback = this.msgCallbacks[storedState];
|
|
63
|
+
if (storedCallback) {
|
|
64
|
+
storedCallback({ action, error: 'Timeout', state: storedState }); // always reply with something
|
|
65
|
+
}
|
|
66
|
+
delete this.msgCallbacks[storedState];
|
|
67
|
+
}
|
|
68
|
+
removeExpiredListeners() {
|
|
69
|
+
const now = new Date();
|
|
70
|
+
for (const state in this.msgCallbacks) { // cleanup expired listeners (< 1 min ago);
|
|
71
|
+
if (parseInt(state, 10) < now.setMinutes(now.getMinutes() - 1)) {
|
|
72
|
+
delete this.msgCallbacks[state];
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
MetaMsgService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MetaMsgService_Factory() { return new MetaMsgService(i0.ɵɵinject(i1.MetaContextService)); }, token: MetaMsgService, providedIn: "root" });
|
|
78
|
+
MetaMsgService.decorators = [
|
|
79
|
+
{ type: Injectable, args: [{
|
|
80
|
+
providedIn: 'root'
|
|
81
|
+
},] }
|
|
82
|
+
];
|
|
83
|
+
MetaMsgService.ctorParameters = () => [
|
|
84
|
+
{ type: MetaContextService }
|
|
85
|
+
];
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXRhLXVpL3NyYy9saWIvc2VydmljZXMvbWV0YU1zZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVGOzs7RUFHRTtBQUNILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUtwRCxNQUFNLE9BQU8sY0FBYztJQUd6QixZQUFvQixXQUErQjtRQUEvQixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFGM0MsaUJBQVksR0FBMkIsRUFBRSxDQUFDLENBQUMsNkJBQTZCO1FBQ3hFLGtCQUFhLEdBQWtCLEVBQUUsQ0FBQyxDQUFDLHlDQUF5QztRQTBDNUUsc0JBQWlCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNsQyxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUN6RCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztnQkFDOUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLDhCQUE4QjtnQkFDekUsSUFBSSxRQUFRLEVBQUU7b0JBQ1osT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztvQkFDdkIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDcEI7Z0JBQ0QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsNkNBQTZDO2FBQy9FO1lBQ0QsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQyx3Q0FBd0M7UUFDekUsQ0FBQyxDQUFDO0lBbkRGLENBQUM7SUFFRCxXQUFXLENBQUMsUUFBZ0IsRUFBRSxHQUFRLEVBQUUsUUFBNEIsRUFBRSxNQUFNLEdBQUcsS0FBSztRQUNsRixRQUFRLEdBQUcsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDMUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUQsSUFBSSxjQUFjLEVBQUU7WUFDbEIsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDeEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2xDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsaUNBQWlDO2FBQzdHO1lBQ0QsSUFBSSxLQUFLLENBQUMsQ0FBQyw0QkFBNEI7WUFDdkMsR0FBRztnQkFDRCxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUM5QixRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBRXJDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsNEJBQTRCO1lBQ2pFLEdBQUcsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ25CLGNBQWMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFaEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLDJDQUEyQztnQkFDdEYsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzNELElBQUksYUFBYSxLQUFLLENBQUMsQ0FBQyxFQUFFO29CQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQzdDO2dCQUNELGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyw0QkFBNEI7WUFDckcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMzQjthQUFNO1lBQ0wsUUFBUSxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFVBQVUsUUFBUSxvQkFBb0IsRUFBRSxDQUFDLENBQUM7U0FDakY7SUFDSCxDQUFDO0lBRU8saUJBQWlCLENBQUMsTUFBTSxFQUFFLFdBQVc7UUFDM0MsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN0RCxJQUFJLGNBQWMsRUFBRTtZQUNsQixjQUFjLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLDhCQUE4QjtTQUNqRztRQUNELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBZU8sc0JBQXNCO1FBQzVCLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsMkNBQTJDO1lBQ2xGLElBQUksUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDOUQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ2pDO1NBQ0Y7SUFDSCxDQUFDOzs7O1lBbkVGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBSlEsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIEBBdXRob3I6IEFsZXhhbmRlci5WYW5nZWxvdkB2b25hZ2UuY29tXG4gKiBARGF0ZTogMjAxOS0wOS0xOSAxNzozNToxOVxuICogQExhc3QgTW9kaWZpZWQgYnk6IEFsZXhhbmRlci5WYW5nZWxvdkB2b25hZ2UuY29tXG4gKiBATGFzdCBNb2RpZmllZCB0aW1lOiAyMDIwLTA1LTAzIDIxOjMxOjE2XG4gKi9cblxuIC8qXG4gKiBXb3JrZXIgbWVzc2FnZXMgc3lzdGVtcy4gRXZlcnkgaW50ZWdyYXRpb24gbWF5IGV4dGVuZCB0aGUgYmFzZSBmdW5jdGlvbmFsaXR5IGJ5IHJlZ2lzdGVyaW5nIGFuIGludGVncmF0aW9uIHdvcmtlci5cbiAqIFRoaXMgc2VydmljZSBwcm92aWRlcyBzaW5nbGUgcmVzcG9uc2UgZm9yIHRoZSB3b3JrZXIgbWVzc2FnZSByZXF1ZXN0cyBhcyBhIGNhbGxiYWNrLlxuICovXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1ldGFDb250ZXh0U2VydmljZSB9IGZyb20gJy4uL21ldGFDb250ZXh0JztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTWV0YU1zZ1NlcnZpY2Uge1xuICBwcml2YXRlIG1zZ0NhbGxiYWNrczoge1tzdGF0ZTogbnVtYmVyXTogYW55fSA9IHt9OyAvLyBtZXNzYWdlIHN1YnNjcmliZXJzIGhvbGRlclxuICBwcml2YXRlIG1zZ0xpc3RlbmVyZXM6IEFycmF5PHN0cmluZz4gPSBbXTsgLy8gZW5zdXJlIGxpc3RlbmVyIGlzIHJlZ2lzdGVyZCBvbmx5IG9uY2VcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtZXRhQ29udGV4dDogTWV0YUNvbnRleHRTZXJ2aWNlKSB7XG4gIH1cblxuICBzZW5kTWVzc2FnZShwcm92aWRlcjogc3RyaW5nLCBtc2c6IGFueSwgY2FsbGJhY2s6IChyZXNwb25zZSkgPT4gdm9pZCwgaXNMb25nID0gZmFsc2UpIHtcbiAgICBwcm92aWRlciA9IChwcm92aWRlciB8fCAnJykudG9VcHBlckNhc2UoKTtcbiAgICBjb25zdCBwcm92aWRlcldvcmtlciA9IHRoaXMubWV0YUNvbnRleHQud29ya2Vyc1twcm92aWRlcl07XG4gICAgaWYgKHByb3ZpZGVyV29ya2VyKSB7XG4gICAgICBpZiAodGhpcy5tc2dMaXN0ZW5lcmVzLmluZGV4T2YocHJvdmlkZXIpKSB7XG4gICAgICAgIHRoaXMubXNnTGlzdGVuZXJlcy5wdXNoKHByb3ZpZGVyKTtcbiAgICAgICAgcHJvdmlkZXJXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMud29ya2VyTXNnTGlzdGVuZXIsIGZhbHNlKTsgLy8gcmVnaXN0ZXIgYSBzaG9ydCB0aW1lIGxpc3RlbmVyXG4gICAgICB9XG4gICAgICBsZXQgc3RhdGU7IC8vIG1lc3NhZ2UgdW5pcXVlIGlkZW50aWZpZXJcbiAgICAgIGRvIHtcbiAgICAgICAgc3RhdGUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgIH0gd2hpbGUgKCEhdGhpcy5tc2dDYWxsYmFja3Nbc3RhdGVdKTtcblxuICAgICAgdGhpcy5tc2dDYWxsYmFja3Nbc3RhdGVdID0gY2FsbGJhY2s7IC8vIHJlZ2lzdGVyIG1lc3NhZ2UgY2FsbGJhY2tcbiAgICAgIG1zZy4kc3RhdGUgPSBzdGF0ZTtcbiAgICAgIHByb3ZpZGVyV29ya2VyLnBvc3RNZXNzYWdlKG1zZyk7XG5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNhbmNlbE1zZ0xpc3RlbmVyKG1zZy5hY3Rpb24sIHN0YXRlKTsgLy8gZ2l2ZSB1cCwgd29ya2VyIGRvZXMgbm90IHJlcGxpZWQgb24gdGltZVxuICAgICAgICBjb25zdCBsaXN0ZW5lckluZGV4ID0gdGhpcy5tc2dMaXN0ZW5lcmVzLmluZGV4T2YocHJvdmlkZXIpO1xuICAgICAgICBpZiAobGlzdGVuZXJJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICB0aGlzLm1zZ0xpc3RlbmVyZXMuc3BsaWNlKGxpc3RlbmVySW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgICAgIHByb3ZpZGVyV29ya2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCB0aGlzLndvcmtlck1zZ0xpc3RlbmVyKTsgLy8gcmVtb3ZlIGxpc3RlbmVyIHdoZW4gZG9uZVxuICAgICAgfSwgaXNMb25nID8gNjAwMDAgOiAyMDAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FsbGJhY2soeyBhY3Rpb246IG1zZy5hY3Rpb24sIGVycm9yOiBgV29ya2VyICR7cHJvdmlkZXJ9IGlzIG5vdCByZWdpc3RlcmVkYCB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNhbmNlbE1zZ0xpc3RlbmVyKGFjdGlvbiwgc3RvcmVkU3RhdGUpIHtcbiAgICBjb25zdCBzdG9yZWRDYWxsYmFjayA9IHRoaXMubXNnQ2FsbGJhY2tzW3N0b3JlZFN0YXRlXTtcbiAgICBpZiAoc3RvcmVkQ2FsbGJhY2spIHtcbiAgICAgIHN0b3JlZENhbGxiYWNrKHsgYWN0aW9uLCBlcnJvcjogJ1RpbWVvdXQnLCBzdGF0ZTogc3RvcmVkU3RhdGUgfSk7IC8vIGFsd2F5cyByZXBseSB3aXRoIHNvbWV0aGluZ1xuICAgIH1cbiAgICBkZWxldGUgdGhpcy5tc2dDYWxsYmFja3Nbc3RvcmVkU3RhdGVdO1xuICB9XG5cbiAgcHJpdmF0ZSB3b3JrZXJNc2dMaXN0ZW5lciA9IChtc2cpID0+IHtcbiAgICBpZiAobXNnICYmIG1zZy5kYXRhICYmIG1zZy5kYXRhLmFjdGlvbiAmJiBtc2cuZGF0YS4kc3RhdGUpIHtcbiAgICAgIGNvbnN0IHN0YXRlID0gbXNnLmRhdGEuJHN0YXRlO1xuICAgICAgY29uc3QgY2FsbGJhY2sgPSB0aGlzLm1zZ0NhbGxiYWNrc1tzdGF0ZV07IC8vIG9yaWdpbmFsIHJlcXVlc3RlciBjYWxsYmFja1xuICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgIGRlbGV0ZSBtc2cuZGF0YS4kc3RhdGU7XG4gICAgICAgIGNhbGxiYWNrKG1zZy5kYXRhKTtcbiAgICAgIH1cbiAgICAgIGRlbGV0ZSB0aGlzLm1zZ0NhbGxiYWNrc1tzdGF0ZV07IC8vIGdldCByaWQgb2YgdGhlIGxpc3RlbmVyIGNhbGxiYWNrIHdoZW4gZG9uZVxuICAgIH1cbiAgICB0aGlzLnJlbW92ZUV4cGlyZWRMaXN0ZW5lcnMoKTsgLy8gd2lwZSBvdXQgdGhlIGV4cGlyZWQgbGlzdGVuZXJzIGlmIGFueVxuICB9O1xuXG4gIHByaXZhdGUgcmVtb3ZlRXhwaXJlZExpc3RlbmVycygpIHtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGZvciAoY29uc3Qgc3RhdGUgaW4gdGhpcy5tc2dDYWxsYmFja3MpIHsgLy8gY2xlYW51cCBleHBpcmVkIGxpc3RlbmVycyAoPCAxIG1pbiBhZ28pO1xuICAgICAgaWYgKHBhcnNlSW50KHN0YXRlLCAxMCkgPCBub3cuc2V0TWludXRlcyhub3cuZ2V0TWludXRlcygpIC0gMSkpIHtcbiAgICAgICAgZGVsZXRlIHRoaXMubXNnQ2FsbGJhY2tzW3N0YXRlXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @Author: Alexander.Vangelov@vonage.com
|
|
3
|
+
* @Date: 2019-09-19 17:35:19
|
|
4
|
+
* @Last Modified by: Alexander.Vangelov@vonage.com
|
|
5
|
+
* @Last Modified time: 2020-05-03 21:31:44
|
|
6
|
+
*/
|
|
7
|
+
import { Injectable, ApplicationRef, Injector } from '@angular/core';
|
|
8
|
+
import { Router } from '@angular/router';
|
|
9
|
+
import { Observable } from 'rxjs';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "@angular/router";
|
|
12
|
+
export class MetaReferenceService {
|
|
13
|
+
constructor(appRef, injector, router) {
|
|
14
|
+
this.appRef = appRef;
|
|
15
|
+
this.injector = injector;
|
|
16
|
+
this.router = router;
|
|
17
|
+
this.dialogs = [];
|
|
18
|
+
this.router.events.subscribe((e) => {
|
|
19
|
+
if (this.dialogs.length) {
|
|
20
|
+
for (let d = (this.dialogs.length - 1); d >= 0; d--) {
|
|
21
|
+
this.dialogs[d].onComplete();
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
openDialog(refDialogFactory, metaResource, integrationCode, reference, resource, preview, preferResourceType, theme) {
|
|
27
|
+
const references = !(reference instanceof Array) ? [reference] : reference.filter((r) => r.creatable !== false);
|
|
28
|
+
if (resource && resource.type) {
|
|
29
|
+
if (!references.find((f) => (f.name || f.resourceType) === (resource.resourceType || resource.type))) {
|
|
30
|
+
references.push({
|
|
31
|
+
name: resource.resourceType || resource.type,
|
|
32
|
+
resourceType: resource.resourceType || resource.type,
|
|
33
|
+
label: resource.label || resource.resourceType || resource.type
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
const modalObservable = new Observable(observer => {
|
|
38
|
+
const componentRef = refDialogFactory.create(this.injector);
|
|
39
|
+
this.appRef.attachView(componentRef.hostView);
|
|
40
|
+
const refDialog = componentRef.instance;
|
|
41
|
+
refDialog.integrationCode = integrationCode;
|
|
42
|
+
refDialog.reference = references;
|
|
43
|
+
refDialog.resource = resource;
|
|
44
|
+
refDialog.metaResource = metaResource;
|
|
45
|
+
refDialog.edit = !preview;
|
|
46
|
+
refDialog.preferResourceType = preferResourceType;
|
|
47
|
+
refDialog.theme = theme;
|
|
48
|
+
const domElem = componentRef.hostView.rootNodes[0];
|
|
49
|
+
const dialogIndex = this.dialogs.push(refDialog);
|
|
50
|
+
if (dialogIndex > 1) {
|
|
51
|
+
const modalPanel = domElem.querySelector('.Vlt-modal__panel');
|
|
52
|
+
if (modalPanel) {
|
|
53
|
+
modalPanel.style.marginLeft = `${(dialogIndex * 5)}px`;
|
|
54
|
+
modalPanel.style.marginTop = `${(dialogIndex * 10)}px`;
|
|
55
|
+
modalPanel.style.marginBottom = `${((dialogIndex - 1) * 8)}px`;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
document.body.appendChild(domElem);
|
|
59
|
+
refDialog.onComplete = (result) => {
|
|
60
|
+
if (result) {
|
|
61
|
+
/* eslint-disable no-underscore-dangle */
|
|
62
|
+
if (result._vgis) {
|
|
63
|
+
observer.next({
|
|
64
|
+
id: result._vgis.externalId || result._vgis.id,
|
|
65
|
+
label: result._vgis.label,
|
|
66
|
+
type: result._vgis.resourceType,
|
|
67
|
+
raw: result
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
console.log('onComplete non VGIS result', result);
|
|
72
|
+
}
|
|
73
|
+
/* eslint-enable no-underscore-dangle */
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
observer.next();
|
|
77
|
+
}
|
|
78
|
+
observer.complete();
|
|
79
|
+
this.appRef.detachView(componentRef.hostView);
|
|
80
|
+
componentRef.destroy();
|
|
81
|
+
this.dialogs.splice(dialogIndex - 1, 1);
|
|
82
|
+
};
|
|
83
|
+
});
|
|
84
|
+
return modalObservable;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
MetaReferenceService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MetaReferenceService_Factory() { return new MetaReferenceService(i0.ɵɵinject(i0.ApplicationRef), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(i1.Router)); }, token: MetaReferenceService, providedIn: "root" });
|
|
88
|
+
MetaReferenceService.decorators = [
|
|
89
|
+
{ type: Injectable, args: [{
|
|
90
|
+
providedIn: 'root'
|
|
91
|
+
},] }
|
|
92
|
+
];
|
|
93
|
+
MetaReferenceService.ctorParameters = () => [
|
|
94
|
+
{ type: ApplicationRef },
|
|
95
|
+
{ type: Injector },
|
|
96
|
+
{ type: Router }
|
|
97
|
+
];
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXRhLXVpL3NyYy9saWIvc2VydmljZXMvbWV0YVJlZmVyZW5jZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBS2xDLE1BQU0sT0FBTyxvQkFBb0I7SUFFL0IsWUFDVSxNQUFzQixFQUN0QixRQUFrQixFQUNsQixNQUFjO1FBRmQsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2pDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7Z0JBQ3ZCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUNuRCxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO2lCQUM5QjthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUgsVUFBVSxDQUFDLGdCQUFnQixFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFpQixFQUFFLGtCQUFtQixF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OzRCQUNaLEVBQUUsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7NEJBQzlDLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUs7NEJBQ3pCLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVk7NEJBQy9CLEdBQUcsRUFBRSxNQUFNO3lCQUNaLENBQUMsQ0FBQztxQkFDSjt5QkFBTTt3QkFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixFQUFFLE1BQU0sQ0FBQyxDQUFDO3FCQUNuRDtvQkFDRCx3Q0FBd0M7aUJBQ3pDO3FCQUFNO29CQUNMLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztpQkFDakI7Z0JBQ0QsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzlDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMxQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7Ozs7WUFuRkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFOb0IsY0FBYztZQUFFLFFBQVE7WUFDcEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBAQXV0aG9yOiBBbGV4YW5kZXIuVmFuZ2Vsb3ZAdm9uYWdlLmNvbVxuICogQERhdGU6IDIwMTktMDktMTkgMTc6MzU6MTlcbiAqIEBMYXN0IE1vZGlmaWVkIGJ5OiBBbGV4YW5kZXIuVmFuZ2Vsb3ZAdm9uYWdlLmNvbVxuICogQExhc3QgTW9kaWZpZWQgdGltZTogMjAyMC0wNS0wMyAyMTozMTo0NFxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUsIEFwcGxpY2F0aW9uUmVmLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTWV0YVJlZmVyZW5jZVNlcnZpY2Uge1xuICBkaWFsb2dzOiBBcnJheTxhbnk+O1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFwcFJlZjogQXBwbGljYXRpb25SZWYsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge1xuICAgICAgdGhpcy5kaWFsb2dzID0gW107XG4gICAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmRpYWxvZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgZm9yIChsZXQgZCA9ICh0aGlzLmRpYWxvZ3MubGVuZ3RoIC0gMSk7IGQgPj0gMDsgZC0tKSB7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZ3NbZF0ub25Db21wbGV0ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gIG9wZW5EaWFsb2cocmVmRGlhbG9nRmFjdG9yeSwgbWV0YVJlc291cmNlLCBpbnRlZ3JhdGlvbkNvZGUsIHJlZmVyZW5jZSwgcmVzb3VyY2UsIHByZXZpZXc/OiBib29sZWFuLCBwcmVmZXJSZXNvdXJjZVR5cGU/LCB0aGVtZT86IHN0cmluZykge1xuICAgIGNvbnN0IHJlZmVyZW5jZXMgPSAhKHJlZmVyZW5jZSBpbnN0YW5jZW9mIEFycmF5KSA/IFtyZWZlcmVuY2VdIDogcmVmZXJlbmNlLmZpbHRlcigocikgPT4gci5jcmVhdGFibGUgIT09IGZhbHNlKTtcbiAgICBpZiAocmVzb3VyY2UgJiYgcmVzb3VyY2UudHlwZSkge1xuICAgICAgaWYgKCFyZWZlcmVuY2VzLmZpbmQoKGYpID0+IChmLm5hbWUgfHwgZi5yZXNvdXJjZVR5cGUpID09PSAocmVzb3VyY2UucmVzb3VyY2VUeXBlIHx8IHJlc291cmNlLnR5cGUpKSkge1xuICAgICAgICByZWZlcmVuY2VzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHJlc291cmNlLnJlc291cmNlVHlwZSB8fCByZXNvdXJjZS50eXBlLFxuICAgICAgICAgIHJlc291cmNlVHlwZTogcmVzb3VyY2UucmVzb3VyY2VUeXBlIHx8IHJlc291cmNlLnR5cGUsXG4gICAgICAgICAgbGFiZWw6IHJlc291cmNlLmxhYmVsIHx8IHJlc291cmNlLnJlc291cmNlVHlwZSB8fCByZXNvdXJjZS50eXBlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG1vZGFsT2JzZXJ2YWJsZSA9IG5ldyBPYnNlcnZhYmxlKG9ic2VydmVyID0+IHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHJlZkRpYWxvZ0ZhY3RvcnkuY3JlYXRlKHRoaXMuaW5qZWN0b3IpO1xuICAgICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgICAgY29uc3QgcmVmRGlhbG9nID0gY29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgICAgcmVmRGlhbG9nLmludGVncmF0aW9uQ29kZSA9IGludGVncmF0aW9uQ29kZTtcbiAgICAgIHJlZkRpYWxvZy5yZWZlcmVuY2UgPSByZWZlcmVuY2VzO1xuICAgICAgcmVmRGlhbG9nLnJlc291cmNlID0gcmVzb3VyY2U7XG4gICAgICByZWZEaWFsb2cubWV0YVJlc291cmNlID0gbWV0YVJlc291cmNlO1xuICAgICAgcmVmRGlhbG9nLmVkaXQgPSAhcHJldmlldztcbiAgICAgIHJlZkRpYWxvZy5wcmVmZXJSZXNvdXJjZVR5cGUgPSBwcmVmZXJSZXNvdXJjZVR5cGU7XG4gICAgICByZWZEaWFsb2cudGhlbWUgPSB0aGVtZTtcblxuICAgICAgY29uc3QgZG9tRWxlbSA9IChjb21wb25lbnRSZWYuaG9zdFZpZXcgYXMgYW55KS5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBcbiAgICAgIGNvbnN0IGRpYWxvZ0luZGV4ID0gdGhpcy5kaWFsb2dzLnB1c2gocmVmRGlhbG9nKTtcblxuICAgICAgaWYgKGRpYWxvZ0luZGV4ID4gMSkge1xuICAgICAgICBjb25zdCBtb2RhbFBhbmVsOiBIVE1MRWxlbWVudCA9IGRvbUVsZW0ucXVlcnlTZWxlY3RvcignLlZsdC1tb2RhbF9fcGFuZWwnKTtcbiAgICAgICAgaWYgKG1vZGFsUGFuZWwpIHtcbiAgICAgICAgICBtb2RhbFBhbmVsLnN0eWxlLm1hcmdpbkxlZnQgPSBgJHsoZGlhbG9nSW5kZXggKiA1KX1weGA7XG4gICAgICAgICAgbW9kYWxQYW5lbC5zdHlsZS5tYXJnaW5Ub3AgPSBgJHsoZGlhbG9nSW5kZXggKiAxMCl9cHhgO1xuICAgICAgICAgIG1vZGFsUGFuZWwuc3R5bGUubWFyZ2luQm90dG9tID0gYCR7KChkaWFsb2dJbmRleCAtIDEpICogOCl9cHhgO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9tRWxlbSk7XG5cbiAgICAgIHJlZkRpYWxvZy5vbkNvbXBsZXRlID0gKHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZXJzY29yZS1kYW5nbGUgKi9cbiAgICAgICAgICBpZiAocmVzdWx0Ll92Z2lzKSB7XG4gICAgICAgICAgICBvYnNlcnZlci5uZXh0KHtcbiAgICAgICAgICAgICAgaWQ6IHJlc3VsdC5fdmdpcy5leHRlcm5hbElkIHx8IHJlc3VsdC5fdmdpcy5pZCxcbiAgICAgICAgICAgICAgbGFiZWw6IHJlc3VsdC5fdmdpcy5sYWJlbCxcbiAgICAgICAgICAgICAgdHlwZTogcmVzdWx0Ll92Z2lzLnJlc291cmNlVHlwZSxcbiAgICAgICAgICAgICAgcmF3OiByZXN1bHRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnb25Db21wbGV0ZSBub24gVkdJUyByZXN1bHQnLCByZXN1bHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLXVuZGVyc2NvcmUtZGFuZ2xlICovXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2JzZXJ2ZXIubmV4dCgpO1xuICAgICAgICB9XG4gICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuYXBwUmVmLmRldGFjaFZpZXcoY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcbiAgICAgICAgY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5kaWFsb2dzLnNwbGljZShkaWFsb2dJbmRleCAtIDEsIDEpO1xuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHJldHVybiBtb2RhbE9ic2VydmFibGU7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @Author: Alexander.Vangelov@vonage.com
|
|
3
|
+
* @Date: 2019-09-19 17:35:19
|
|
4
|
+
* @Last Modified by: Alexander.Vangelov@vonage.com
|
|
5
|
+
* @Last Modified time: 2020-08-10 22:35:31
|
|
6
|
+
*/
|
|
7
|
+
import { Injectable } from '@angular/core';
|
|
8
|
+
import { MetaHttpClient } from './metaHttpClient';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "./metaHttpClient";
|
|
11
|
+
const STORAGE_PARAMS_REGEXES = {
|
|
12
|
+
localStorage: /^localStorage\.(.*)/,
|
|
13
|
+
sessionStorage: /^sessionStorage\.(.*)/,
|
|
14
|
+
};
|
|
15
|
+
const INTEGRATION_URL_TEMPLATE = '/extensions/v2/accounts/${localStorage.vgis.accountId}/users/${localStorage.vgis.userId}/connectors/${integrationCode}';
|
|
16
|
+
const RESOURCE_URL_TEMPLATE = INTEGRATION_URL_TEMPLATE + '${parentsPath}/${resourceType}';
|
|
17
|
+
const NEW_RESOURCE_URL_TEMPLATE = INTEGRATION_URL_TEMPLATE + '${parentsPath}/resources/${resourceType}';
|
|
18
|
+
export class IMetaParentConfig {
|
|
19
|
+
}
|
|
20
|
+
export class IMetaResourceConfig {
|
|
21
|
+
}
|
|
22
|
+
export class MetaResourceService {
|
|
23
|
+
constructor(httpClient) {
|
|
24
|
+
this.httpClient = httpClient;
|
|
25
|
+
}
|
|
26
|
+
setConfig(config) {
|
|
27
|
+
this.baseIntegrationUrl = INTEGRATION_URL_TEMPLATE.replace(/\${\s*([\w\.]+)\s*}/g, (m, value) => {
|
|
28
|
+
for (const storage of Object.keys(STORAGE_PARAMS_REGEXES)) {
|
|
29
|
+
const match = value.match(STORAGE_PARAMS_REGEXES[storage]);
|
|
30
|
+
if (match) {
|
|
31
|
+
return window[storage].getItem(match[1]) || window[storage].getItem(`cti.${match[1]}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return config[value];
|
|
35
|
+
});
|
|
36
|
+
this.baseResourceUrl = RESOURCE_URL_TEMPLATE.replace(/\${\s*([\w\.]+)\s*}/g, (m, value) => {
|
|
37
|
+
for (const storage of Object.keys(STORAGE_PARAMS_REGEXES)) {
|
|
38
|
+
const match = value.match(STORAGE_PARAMS_REGEXES[storage]);
|
|
39
|
+
if (match) {
|
|
40
|
+
return window[storage].getItem(match[1]) || window[storage].getItem(`cti.${match[1]}`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (value === 'parentsPath') {
|
|
44
|
+
let parentsPath = '';
|
|
45
|
+
if (config.parent) { // config.parent: { resourceType: '...', id: '...', parent: {...} }
|
|
46
|
+
let rootParent = config.parent;
|
|
47
|
+
while (rootParent) {
|
|
48
|
+
parentsPath += `/${rootParent.resourceType || rootParent.type}/${rootParent.externalId || rootParent.id}`;
|
|
49
|
+
rootParent = rootParent.parent;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return parentsPath;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
return config[value];
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
this.newResourceUrl = NEW_RESOURCE_URL_TEMPLATE.replace(/\${\s*([\w\.]+)\s*}/g, (m, value) => {
|
|
59
|
+
for (const storage of Object.keys(STORAGE_PARAMS_REGEXES)) {
|
|
60
|
+
const match = value.match(STORAGE_PARAMS_REGEXES[storage]);
|
|
61
|
+
if (match) {
|
|
62
|
+
return window[storage].getItem(match[1]);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (value === 'parentsPath') {
|
|
66
|
+
let parentsPath = '';
|
|
67
|
+
if (config.parent) { // config.parent: { resourceType: '...', id: '...', parent: {...} }
|
|
68
|
+
let rootParent = config.parent;
|
|
69
|
+
while (rootParent) {
|
|
70
|
+
parentsPath += `/${rootParent.resourceType || rootParent.type}/${rootParent.externalId || rootParent.id}`;
|
|
71
|
+
rootParent = rootParent.parent;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return parentsPath;
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
return config[value];
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
this.id = config.externalId;
|
|
81
|
+
}
|
|
82
|
+
new(config) {
|
|
83
|
+
const s = new MetaResourceService(this.httpClient);
|
|
84
|
+
s.setConfig(config);
|
|
85
|
+
return s;
|
|
86
|
+
}
|
|
87
|
+
searchIntegration(query, scope) {
|
|
88
|
+
let searchUrl = `${this.baseIntegrationUrl}/search?q=${encodeURIComponent(query)}`;
|
|
89
|
+
if (scope) {
|
|
90
|
+
searchUrl += `&scope=${encodeURIComponent(scope)}`;
|
|
91
|
+
}
|
|
92
|
+
return this.httpClient.get(searchUrl);
|
|
93
|
+
}
|
|
94
|
+
getMetadata(layoutId, refresh) {
|
|
95
|
+
let url = `${this.baseResourceUrl.replace('/v2/', '/v3/')}/metadata`;
|
|
96
|
+
url += `?t=${new Date().getTime()}`;
|
|
97
|
+
if (refresh) {
|
|
98
|
+
url += '&refresh=true';
|
|
99
|
+
}
|
|
100
|
+
if (layoutId) {
|
|
101
|
+
url += `&layoutId=${layoutId}`;
|
|
102
|
+
}
|
|
103
|
+
return this.httpClient.get(url);
|
|
104
|
+
}
|
|
105
|
+
getDetails(externalId, extraParams) {
|
|
106
|
+
let params = 'referenceDetails=true';
|
|
107
|
+
if (extraParams) {
|
|
108
|
+
for (const p in extraParams) {
|
|
109
|
+
if (extraParams[p]) {
|
|
110
|
+
params += `&${p}=${extraParams[p]}`;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return this.httpClient.get(`${this.baseResourceUrl}/${externalId}?${params}`);
|
|
115
|
+
}
|
|
116
|
+
getByPath(path) {
|
|
117
|
+
let fullPath = `${this.newResourceUrl}${path}`;
|
|
118
|
+
if (/^..\//.test(path)) {
|
|
119
|
+
fullPath = `${this.baseIntegrationUrl}${path.substring(2)}`;
|
|
120
|
+
}
|
|
121
|
+
return this.httpClient.get(fullPath);
|
|
122
|
+
}
|
|
123
|
+
save(payload) {
|
|
124
|
+
if (this.id) {
|
|
125
|
+
return this.httpClient.put(`${this.baseResourceUrl}/${this.id}`, payload);
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
return this.httpClient.post(`${this.baseResourceUrl}`, payload);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
MetaResourceService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MetaResourceService_Factory() { return new MetaResourceService(i0.ɵɵinject(i1.MetaHttpClient)); }, token: MetaResourceService, providedIn: "root" });
|
|
133
|
+
MetaResourceService.decorators = [
|
|
134
|
+
{ type: Injectable, args: [{
|
|
135
|
+
providedIn: 'root'
|
|
136
|
+
},] }
|
|
137
|
+
];
|
|
138
|
+
MetaResourceService.ctorParameters = () => [
|
|
139
|
+
{ type: MetaHttpClient }
|
|
140
|
+
];
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXRhLXVpL3NyYy9saWIvc2VydmljZXMvbWV0YVJlc291cmNlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQUVsRCxNQUFNLHNCQUFzQixHQUFHO0lBQzdCLFlBQVksRUFBRSxxQkFBcUI7SUFDbkMsY0FBYyxFQUFFLHVCQUF1QjtDQUN4QyxDQUFDO0FBRUYsTUFBTSx3QkFBd0IsR0FDNUIsd0hBQXdILENBQUM7QUFDM0gsTUFBTSxxQkFBcUIsR0FBRyx3QkFBd0IsR0FBRyxnQ0FBZ0MsQ0FBQztBQUMxRixNQUFNLHlCQUF5QixHQUFHLHdCQUF3QixHQUFHLDBDQUEwQyxDQUFDO0FBRXhHLE1BQU0sT0FBTyxpQkFBaUI7Q0FJN0I7QUFDRCxNQUFNLE9BQU8sbUJBQW1CO0NBTS9CO0FBS0QsTUFBTSxPQUFPLG1CQUFtQjtJQU05QixZQUFvQixVQUEwQjtRQUExQixlQUFVLEdBQVYsVUFBVSxDQUFnQjtJQUFJLENBQUM7SUFFbkQsU0FBUyxDQUFDLE1BQTJCO1FBQ25DLElBQUksQ0FBQyxrQkFBa0IsR0FBRyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDOUYsS0FBSyxNQUFNLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEVBQUU7Z0JBQ3pELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDM0QsSUFBSSxLQUFLLEVBQUU7b0JBQ1QsT0FBTyxNQUFNLENBQUMsT0FBTyxD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ZGVyLlZhbmdlbG92QHZvbmFnZS5jb20gXG4gKiBARGF0ZTogMjAxOS0wOS0xOSAxNzozNToxOSBcbiAqIEBMYXN0IE1vZGlmaWVkIGJ5OiBBbGV4YW5kZXIuVmFuZ2Vsb3ZAdm9uYWdlLmNvbVxuICogQExhc3QgTW9kaWZpZWQgdGltZTogMjAyMC0wOC0xMCAyMjozNTozMVxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTWV0YUh0dHBDbGllbnQgfSBmcm9tICcuL21ldGFIdHRwQ2xpZW50JztcblxuY29uc3QgU1RPUkFHRV9QQVJBTVNfUkVHRVhFUyA9IHtcbiAgbG9jYWxTdG9yYWdlOiAvXmxvY2FsU3RvcmFnZVxcLiguKikvLFxuICBzZXNzaW9uU3RvcmFnZTogL15zZXNzaW9uU3RvcmFnZVxcLiguKikvLFxufTtcblxuY29uc3QgSU5URUdSQVRJT05fVVJMX1RFTVBMQVRFID1cbiAgJy9leHRlbnNpb25zL3YyL2FjY291bnRzLyR7bG9jYWxTdG9yYWdlLnZnaXMuYWNjb3VudElkfS91c2Vycy8ke2xvY2FsU3RvcmFnZS52Z2lzLnVzZXJJZH0vY29ubmVjdG9ycy8ke2ludGVncmF0aW9uQ29kZX0nO1xuY29uc3QgUkVTT1VSQ0VfVVJMX1RFTVBMQVRFID0gSU5URUdSQVRJT05fVVJMX1RFTVBMQVRFICsgJyR7cGFyZW50c1BhdGh9LyR7cmVzb3VyY2VUeXBlfSc7XG5jb25zdCBORVdfUkVTT1VSQ0VfVVJMX1RFTVBMQVRFID0gSU5URUdSQVRJT05fVVJMX1RFTVBMQVRFICsgJyR7cGFyZW50c1BhdGh9L3Jlc291cmNlcy8ke3Jlc291cmNlVHlwZX0nO1xuXG5leHBvcnQgY2xhc3MgSU1ldGFQYXJlbnRDb25maWcge1xuICByZXNvdXJjZVR5cGU6IHN0cmluZztcbiAgZXh0ZXJuYWxJZDogc3RyaW5nO1xuICBwYXJlbnQ/OiBJTWV0YVBhcmVudENvbmZpZztcbn1cbmV4cG9ydCBjbGFzcyBJTWV0YVJlc291cmNlQ29uZmlnIHtcbiAgaW50ZWdyYXRpb25Db2RlOiBzdHJpbmc7XG4gIHJlc291cmNlVHlwZTogc3RyaW5nO1xuICBleHRlcm5hbElkPzogc3RyaW5nO1xuICBwYXJlbnQ/OiBJTWV0YVBhcmVudENvbmZpZztcbiAgdXJsVGVtcGxhdGU/OiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE1ldGFSZXNvdXJjZVNlcnZpY2Uge1xuICBiYXNlSW50ZWdyYXRpb25Vcmw6IHN0cmluZztcbiAgYmFzZVJlc291cmNlVXJsOiBzdHJpbmc7XG4gIG5ld1Jlc291cmNlVXJsOiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwQ2xpZW50OiBNZXRhSHR0cENsaWVudCkgeyB9XG5cbiAgc2V0Q29uZmlnKGNvbmZpZzogSU1ldGFSZXNvdXJjZUNvbmZpZykge1xuICAgIHRoaXMuYmFzZUludGVncmF0aW9uVXJsID0gSU5URUdSQVRJT05fVVJMX1RFTVBMQVRFLnJlcGxhY2UoL1xcJHtcXHMqKFtcXHdcXC5dKylcXHMqfS9nLCAobSwgdmFsdWUpID0+IHtcbiAgICAgIGZvciAoY29uc3Qgc3RvcmFnZSBvZiBPYmplY3Qua2V5cyhTVE9SQUdFX1BBUkFNU19SRUdFWEVTKSkge1xuICAgICAgICBjb25zdCBtYXRjaCA9IHZhbHVlLm1hdGNoKFNUT1JBR0VfUEFSQU1TX1JFR0VYRVNbc3RvcmFnZV0pO1xuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICByZXR1cm4gd2luZG93W3N0b3JhZ2VdLmdldEl0ZW0obWF0Y2hbMV0pIHx8IHdpbmRvd1tzdG9yYWdlXS5nZXRJdGVtKGBjdGkuJHttYXRjaFsxXX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbmZpZ1t2YWx1ZV07XG4gICAgfSk7XG4gICAgdGhpcy5iYXNlUmVzb3VyY2VVcmwgPSBSRVNPVVJDRV9VUkxfVEVNUExBVEUucmVwbGFjZSgvXFwke1xccyooW1xcd1xcLl0rKVxccyp9L2csIChtLCB2YWx1ZSkgPT4ge1xuICAgICAgZm9yIChjb25zdCBzdG9yYWdlIG9mIE9iamVjdC5rZXlzKFNUT1JBR0VfUEFSQU1TX1JFR0VYRVMpKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gdmFsdWUubWF0Y2goU1RPUkFHRV9QQVJBTVNfUkVHRVhFU1tzdG9yYWdlXSk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIHJldHVybiB3aW5kb3dbc3RvcmFnZV0uZ2V0SXRlbShtYXRjaFsxXSkgfHwgd2luZG93W3N0b3JhZ2VdLmdldEl0ZW0oYGN0aS4ke21hdGNoWzFdfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodmFsdWUgPT09ICdwYXJlbnRzUGF0aCcpIHtcbiAgICAgICAgbGV0IHBhcmVudHNQYXRoID0gJyc7XG4gICAgICAgIGlmIChjb25maWcucGFyZW50KSB7IC8vIGNvbmZpZy5wYXJlbnQ6IHsgcmVzb3VyY2VUeXBlOiAnLi4uJywgaWQ6ICcuLi4nLCBwYXJlbnQ6IHsuLi59IH1cbiAgICAgICAgICBsZXQgcm9vdFBhcmVudDogYW55ID0gY29uZmlnLnBhcmVudDtcbiAgICAgICAgICB3aGlsZSAocm9vdFBhcmVudCkge1xuICAgICAgICAgICAgcGFyZW50c1BhdGggKz0gYC8ke3Jvb3RQYXJlbnQucmVzb3VyY2VUeXBlIHx8IHJvb3RQYXJlbnQudHlwZX0vJHtyb290UGFyZW50LmV4dGVybmFsSWQgfHwgcm9vdFBhcmVudC5pZH1gO1xuICAgICAgICAgICAgcm9vdFBhcmVudCA9IHJvb3RQYXJlbnQucGFyZW50O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFyZW50c1BhdGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gY29uZmlnW3ZhbHVlXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLm5ld1Jlc291cmNlVXJsID0gTkVXX1JFU09VUkNFX1VSTF9URU1QTEFURS5yZXBsYWNlKC9cXCR7XFxzKihbXFx3XFwuXSspXFxzKn0vZywgKG0sIHZhbHVlKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IHN0b3JhZ2Ugb2YgT2JqZWN0LmtleXMoU1RPUkFHRV9QQVJBTVNfUkVHRVhFUykpIHtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSB2YWx1ZS5tYXRjaChTVE9SQUdFX1BBUkFNU19SRUdFWEVTW3N0b3JhZ2VdKTtcbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgcmV0dXJuIHdpbmRvd1tzdG9yYWdlXS5nZXRJdGVtKG1hdGNoWzFdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHZhbHVlID09PSAncGFyZW50c1BhdGgnKSB7XG4gICAgICAgIGxldCBwYXJlbnRzUGF0aCA9ICcnO1xuICAgICAgICBpZiAoY29uZmlnLnBhcmVudCkgeyAvLyBjb25maWcucGFyZW50OiB7IHJlc291cmNlVHlwZTogJy4uLicsIGlkOiAnLi4uJywgcGFyZW50OiB7Li4ufSB9XG4gICAgICAgICAgbGV0IHJvb3RQYXJlbnQ6IGFueSA9IGNvbmZpZy5wYXJlbnQ7XG4gICAgICAgICAgd2hpbGUgKHJvb3RQYXJlbnQpIHtcbiAgICAgICAgICAgIHBhcmVudHNQYXRoICs9IGAvJHtyb290UGFyZW50LnJlc291cmNlVHlwZSB8fCByb290UGFyZW50LnR5cGV9LyR7cm9vdFBhcmVudC5leHRlcm5hbElkIHx8IHJvb3RQYXJlbnQuaWR9YDtcbiAgICAgICAgICAgIHJvb3RQYXJlbnQgPSByb290UGFyZW50LnBhcmVudDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcmVudHNQYXRoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGNvbmZpZ1t2YWx1ZV07XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5pZCA9IGNvbmZpZy5leHRlcm5hbElkO1xuICB9XG5cbiAgbmV3KGNvbmZpZzogSU1ldGFSZXNvdXJjZUNvbmZpZykge1xuICAgIGNvbnN0IHMgPSBuZXcgTWV0YVJlc291cmNlU2VydmljZSh0aGlzLmh0dHBDbGllbnQpO1xuICAgIHMuc2V0Q29uZmlnKGNvbmZpZyk7XG4gICAgcmV0dXJuIHM7XG4gIH1cblxuICBzZWFyY2hJbnRlZ3JhdGlvbihxdWVyeSwgc2NvcGU/OiBzdHJpbmcpIHtcbiAgICBsZXQgc2VhcmNoVXJsID0gYCR7dGhpcy5iYXNlSW50ZWdyYXRpb25Vcmx9L3NlYXJjaD9xPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHF1ZXJ5KX1gO1xuICAgIGlmIChzY29wZSkge1xuICAgICAgc2VhcmNoVXJsICs9IGAmc2NvcGU9JHtlbmNvZGVVUklDb21wb25lbnQoc2NvcGUpfWA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KHNlYXJjaFVybCk7XG4gIH1cblxuICBnZXRNZXRhZGF0YShsYXlvdXRJZD8sIHJlZnJlc2g/KSB7XG4gICAgbGV0IHVybCA9IGAke3RoaXMuYmFzZVJlc291cmNlVXJsLnJlcGxhY2UoJy92Mi8nLCAnL3YzLycpfS9tZXRhZGF0YWA7XG4gICAgdXJsICs9IGA/dD0ke25ldyBEYXRlKCkuZ2V0VGltZSgpfWA7XG4gICAgaWYgKHJlZnJlc2gpIHtcbiAgICAgIHVybCArPSAnJnJlZnJlc2g9dHJ1ZSc7XG4gICAgfVxuICAgIGlmIChsYXlvdXRJZCkge1xuICAgICAgdXJsICs9IGAmbGF5b3V0SWQ9JHtsYXlvdXRJZH1gO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldCh1cmwpO1xuICB9XG5cbiAgZ2V0RGV0YWlscyhleHRlcm5hbElkLCBleHRyYVBhcmFtcz8pIHtcbiAgICBsZXQgcGFyYW1zID0gJ3JlZmVyZW5jZURldGFpbHM9dHJ1ZSc7XG4gICAgaWYgKGV4dHJhUGFyYW1zKSB7XG4gICAgICBmb3IgKGNvbnN0IHAgaW4gZXh0cmFQYXJhbXMpIHtcbiAgICAgICAgaWYgKGV4dHJhUGFyYW1zW3BdKSB7XG4gICAgICAgICAgcGFyYW1zICs9IGAmJHtwfT0ke2V4dHJhUGFyYW1zW3BdfWA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5iYXNlUmVzb3VyY2VVcmx9LyR7ZXh0ZXJuYWxJZH0/JHtwYXJhbXN9YCk7XG4gIH1cblxuICBnZXRCeVBhdGgocGF0aCkgeyAvLyBUT0RPIG5vdCB1bml2ZXJzYWwhXG4gICAgbGV0IGZ1bGxQYXRoID0gYCR7dGhpcy5uZXdSZXNvdXJjZVVybH0ke3BhdGh9YDtcbiAgICBpZiAoL14uLlxcLy8udGVzdChwYXRoKSkge1xuICAgICAgZnVsbFBhdGggPSBgJHt0aGlzLmJhc2VJbnRlZ3JhdGlvblVybH0ke3BhdGguc3Vic3RyaW5nKDIpfWA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGZ1bGxQYXRoKTtcbiAgfVxuXG4gIHNhdmUocGF5bG9hZCkge1xuICAgIGlmICh0aGlzLmlkKSB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnB1dChcbiAgICAgICAgYCR7dGhpcy5iYXNlUmVzb3VyY2VVcmx9LyR7dGhpcy5pZH1gLFxuICAgICAgICBwYXlsb2FkXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QoXG4gICAgICAgIGAke3RoaXMuYmFzZVJlc291cmNlVXJsfWAsXG4gICAgICAgIHBheWxvYWRcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @Author: Alexander.Vangelov@vonage.com
|
|
3
|
+
* @Date: 2019-09-19 17:35:19
|
|
4
|
+
* @Last Modified by: Alexander.Vangelov@vonage.com
|
|
5
|
+
* @Last Modified time: 2019-11-22 14:57:07
|
|
6
|
+
*/
|
|
7
|
+
import { Injectable } from '@angular/core';
|
|
8
|
+
import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@angular/common/http";
|
|
11
|
+
export class MetaHttpClient {
|
|
12
|
+
constructor(httpClient) {
|
|
13
|
+
this.httpClient = httpClient;
|
|
14
|
+
}
|
|
15
|
+
delete(url, queryParams = {}) {
|
|
16
|
+
const options = this.prepareOptions(queryParams);
|
|
17
|
+
return this.httpClient.delete(`${this.constructUrl(url)}`, options);
|
|
18
|
+
}
|
|
19
|
+
get(url, queryParams = {}) {
|
|
20
|
+
const options = this.prepareOptions(queryParams);
|
|
21
|
+
return this.httpClient.get(`${this.constructUrl(url)}`, options);
|
|
22
|
+
}
|
|
23
|
+
post(url, body, queryParams = {}) {
|
|
24
|
+
const options = this.prepareOptions(queryParams);
|
|
25
|
+
return this.httpClient.post(`${this.constructUrl(url)}`, body, options);
|
|
26
|
+
}
|
|
27
|
+
put(url, body, queryParams = {}) {
|
|
28
|
+
const options = this.prepareOptions(queryParams);
|
|
29
|
+
return this.httpClient.put(`${this.constructUrl(url)}`, body, options);
|
|
30
|
+
}
|
|
31
|
+
patch(url, body, queryParams = {}) {
|
|
32
|
+
const options = this.prepareOptions(queryParams);
|
|
33
|
+
return this.httpClient.patch(`${this.constructUrl(url)}`, body, options);
|
|
34
|
+
}
|
|
35
|
+
constructUrl(path) {
|
|
36
|
+
return /^http/.test(path) ? path : `${path}`;
|
|
37
|
+
}
|
|
38
|
+
prepareOptions(queryParams) {
|
|
39
|
+
Object.keys(queryParams).forEach(key => {
|
|
40
|
+
if (queryParams[key] == null || queryParams[key] === '') {
|
|
41
|
+
delete queryParams[key];
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
const params = new HttpParams({
|
|
45
|
+
fromObject: queryParams
|
|
46
|
+
});
|
|
47
|
+
const options = {
|
|
48
|
+
headers: new HttpHeaders({
|
|
49
|
+
Accept: 'application/json' // eslint-disable-line @typescript-eslint/naming-convention
|
|
50
|
+
}),
|
|
51
|
+
params
|
|
52
|
+
};
|
|
53
|
+
return options;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
MetaHttpClient.ɵprov = i0.ɵɵdefineInjectable({ factory: function MetaHttpClient_Factory() { return new MetaHttpClient(i0.ɵɵinject(i1.HttpClient)); }, token: MetaHttpClient, providedIn: "root" });
|
|
57
|
+
MetaHttpClient.decorators = [
|
|
58
|
+
{ type: Injectable, args: [{
|
|
59
|
+
providedIn: 'root'
|
|
60
|
+
},] }
|
|
61
|
+
];
|
|
62
|
+
MetaHttpClient.ctorParameters = () => [
|
|
63
|
+
{ type: HttpClient }
|
|
64
|
+
];
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YUh0dHBDbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXRhLXVpL3NyYy9saWIvc2VydmljZXMvbWV0YVJlc291cmNlL21ldGFIdHRwQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBVTNFLE1BQU0sT0FBTyxjQUFjO0lBRXpCLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7SUFBRyxDQUFDO0lBRTlDLE1BQU0sQ0FBQyxHQUFXLEVBQUUsV0FBVyxHQUFHLEVBQUU7UUFDbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVqRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxHQUFHLENBQUksR0FBVyxFQUFFLFdBQVcsR0FBRyxFQUFFO1FBQ2xDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsSUFBSSxDQUFJLEdBQVcsRUFBRSxJQUFTLEVBQUUsV0FBVyxHQUFHLEVBQUU7UUFDOUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVqRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsR0FBRyxDQUFJLEdBQVcsRUFBRSxJQUFTLEVBQUUsV0FBVyxHQUFHLEVBQUU7UUFDN0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVqRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQsS0FBSyxDQUFJLEdBQVcsRUFBRSxJQUFTLEVBQUUsV0FBVyxHQUFHLEVBQUU7UUFDL0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVqRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRU8sWUFBWSxDQUFDLElBQVk7UUFDL0IsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVPLGNBQWMsQ0FBQyxXQUFnQjtRQUNyQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNyQyxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDdkQsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDekI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxDQUFDO1lBQzVCLFVBQVUsRUFBRSxXQUFXO1NBQ3hCLENBQUMsQ0FBQztRQUVILE1BQU0sT0FBTyxHQUFzQjtZQUNqQyxPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUM7Z0JBQ3ZCLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQywyREFBMkQ7YUFDdkYsQ0FBQztZQUNGLE1BQU07U0FDUCxDQUFDO1FBRUYsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQzs7OztZQTNERixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQVRRLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQEF1dGhvcjogQWxleGFuZGVyLlZhbmdlbG92QHZvbmFnZS5jb20gXG4gKiBARGF0ZTogMjAxOS0wOS0xOSAxNzozNToxOSBcbiAqIEBMYXN0IE1vZGlmaWVkIGJ5OiBBbGV4YW5kZXIuVmFuZ2Vsb3ZAdm9uYWdlLmNvbVxuICogQExhc3QgTW9kaWZpZWQgdGltZTogMjAxOS0xMS0yMiAxNDo1NzowN1xuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbnRlcmZhY2UgSHR0cENsaWVudE9wdGlvbnMge1xuICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7IFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIH07XG4gIHBhcmFtcz86IEh0dHBQYXJhbXM7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE1ldGFIdHRwQ2xpZW50IHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQpIHt9XG5cbiAgZGVsZXRlKHVybDogc3RyaW5nLCBxdWVyeVBhcmFtcyA9IHt9KSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMucHJlcGFyZU9wdGlvbnMocXVlcnlQYXJhbXMpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5kZWxldGUoYCR7dGhpcy5jb25zdHJ1Y3RVcmwodXJsKX1gLCBvcHRpb25zKTtcbiAgfVxuXG4gIGdldDxUPih1cmw6IHN0cmluZywgcXVlcnlQYXJhbXMgPSB7fSkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLnByZXBhcmVPcHRpb25zKHF1ZXJ5UGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxUPihgJHt0aGlzLmNvbnN0cnVjdFVybCh1cmwpfWAsIG9wdGlvbnMpO1xuICB9XG5cbiAgcG9zdDxUPih1cmw6IHN0cmluZywgYm9keTogYW55LCBxdWVyeVBhcmFtcyA9IHt9KSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMucHJlcGFyZU9wdGlvbnMocXVlcnlQYXJhbXMpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PFQ+KGAke3RoaXMuY29uc3RydWN0VXJsKHVybCl9YCwgYm9keSwgb3B0aW9ucyk7XG4gIH1cblxuICBwdXQ8VD4odXJsOiBzdHJpbmcsIGJvZHk6IGFueSwgcXVlcnlQYXJhbXMgPSB7fSkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLnByZXBhcmVPcHRpb25zKHF1ZXJ5UGFyYW1zKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucHV0PFQ+KGAke3RoaXMuY29uc3RydWN0VXJsKHVybCl9YCwgYm9keSwgb3B0aW9ucyk7XG4gIH1cblxuICBwYXRjaDxUPih1cmw6IHN0cmluZywgYm9keTogYW55LCBxdWVyeVBhcmFtcyA9IHt9KSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMucHJlcGFyZU9wdGlvbnMocXVlcnlQYXJhbXMpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wYXRjaDxUPihgJHt0aGlzLmNvbnN0cnVjdFVybCh1cmwpfWAsIGJvZHksIG9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RVcmwocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gL15odHRwLy50ZXN0KHBhdGgpID8gcGF0aCA6IGAke3BhdGh9YDtcbiAgfVxuXG4gIHByaXZhdGUgcHJlcGFyZU9wdGlvbnMocXVlcnlQYXJhbXM6IGFueSk6IEh0dHBDbGllbnRPcHRpb25zIHtcbiAgICBPYmplY3Qua2V5cyhxdWVyeVBhcmFtcykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKHF1ZXJ5UGFyYW1zW2tleV0gPT0gbnVsbCB8fCBxdWVyeVBhcmFtc1trZXldID09PSAnJykge1xuICAgICAgICBkZWxldGUgcXVlcnlQYXJhbXNba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKHtcbiAgICAgIGZyb21PYmplY3Q6IHF1ZXJ5UGFyYW1zXG4gICAgfSk7XG5cbiAgICBjb25zdCBvcHRpb25zOiBIdHRwQ2xpZW50T3B0aW9ucyA9IHtcbiAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAgIEFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24nIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgICB9KSxcbiAgICAgIHBhcmFtc1xuICAgIH07XG5cbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @Author: Alexander.Vangelov@vonage.com
|
|
3
|
+
* @Date: 2019-09-19 17:35:19
|
|
4
|
+
* @Last Modified by: Alexander.Vangelov@vonage.com
|
|
5
|
+
* @Last Modified time: 2020-03-23 17:08:23
|
|
6
|
+
*/
|
|
7
|
+
import { Injectable, EventEmitter } from '@angular/core';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
export class MetaTrackerService {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.events = new EventEmitter();
|
|
12
|
+
}
|
|
13
|
+
emit(event) {
|
|
14
|
+
if (!event.integration) {
|
|
15
|
+
event.integration = this.integrationCode || 'N/A';
|
|
16
|
+
}
|
|
17
|
+
if (!event.resource) {
|
|
18
|
+
event.resource = this.resourceType || 'N/A';
|
|
19
|
+
}
|
|
20
|
+
this.events.emit(event);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
MetaTrackerService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MetaTrackerService_Factory() { return new MetaTrackerService(); }, token: MetaTrackerService, providedIn: "root" });
|
|
24
|
+
MetaTrackerService.decorators = [
|
|
25
|
+
{ type: Injectable, args: [{
|
|
26
|
+
providedIn: 'root'
|
|
27
|
+
},] }
|
|
28
|
+
];
|
|
29
|
+
MetaTrackerService.ctorParameters = () => [];
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXRhLXVpL3NyYy9saWIvc2VydmljZXMvbWV0YVRyYWNrZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFjekQsTUFBTSxPQUFPLGtCQUFrQjtJQUs3QjtRQUZBLFdBQU0sR0FBb0MsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUU5QyxDQUFDO0lBRWhCLElBQUksQ0FBQyxLQUF3QjtRQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRTtZQUN0QixLQUFLLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLElBQUksS0FBSyxDQUFDO1NBQ25EO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFDbkIsS0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxJQUFJLEtBQUssQ0FBQztTQUM3QztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7Ozs7WUFsQkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIEBBdXRob3I6IEFsZXhhbmRlci5WYW5nZWxvdkB2b25hZ2UuY29tXG4gKiBARGF0ZTogMjAxOS0wOS0xOSAxNzozNToxOVxuICogQExhc3QgTW9kaWZpZWQgYnk6IEFsZXhhbmRlci5WYW5nZWxvdkB2b25hZ2UuY29tXG4gKiBATGFzdCBNb2RpZmllZCB0aW1lOiAyMDIwLTAzLTIzIDE3OjA4OjIzXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU1ldGFUcmFja2VyRXZlbnQge1xuICBpbnRlZ3JhdGlvbj86IHN0cmluZztcbiAgcmVzb3VyY2U/OiBzdHJpbmc7XG4gIGZpZWxkPzogc3RyaW5nO1xuICBhY3Rpb24/OiBzdHJpbmc7XG4gIHZhbHVlPzogc3RyaW5nO1xuICBpc0NvbnRhY3RhYmxlPzogYm9vbGVhbjtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTWV0YVRyYWNrZXJTZXJ2aWNlIHtcbiAgaW50ZWdyYXRpb25Db2RlOiBzdHJpbmc7XG4gIHJlc291cmNlVHlwZTogc3RyaW5nO1xuICBldmVudHM6IEV2ZW50RW1pdHRlcjxJTWV0YVRyYWNrZXJFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIGVtaXQoZXZlbnQ6IElNZXRhVHJhY2tlckV2ZW50KSB7XG4gICAgaWYgKCFldmVudC5pbnRlZ3JhdGlvbikge1xuICAgICAgZXZlbnQuaW50ZWdyYXRpb24gPSB0aGlzLmludGVncmF0aW9uQ29kZSB8fCAnTi9BJztcbiAgICB9XG4gICAgaWYgKCFldmVudC5yZXNvdXJjZSkge1xuICAgICAgZXZlbnQucmVzb3VyY2UgPSB0aGlzLnJlc291cmNlVHlwZSB8fCAnTi9BJztcbiAgICB9XG4gICAgdGhpcy5ldmVudHMuZW1pdChldmVudCk7XG4gIH1cbn1cbiJdfQ==
|