@vgip/meta-ui 1.1.6 → 1.2.2
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/{esm2015/lib/common/fieldNormalizer/boolean.js → esm2020/lib/common/fieldNormalizer/boolean.mjs} +0 -0
- package/{esm2015/lib/common/fieldNormalizer/datetime.js → esm2020/lib/common/fieldNormalizer/datetime.mjs} +0 -0
- package/{esm2015/lib/common/fieldNormalizer/index.js → esm2020/lib/common/fieldNormalizer/index.mjs} +0 -0
- package/{esm2015/lib/common/fieldNormalizer/number.js → esm2020/lib/common/fieldNormalizer/number.mjs} +0 -0
- package/{esm2015/lib/common/fieldNormalizer/options.js → esm2020/lib/common/fieldNormalizer/options.mjs} +0 -0
- package/{esm2015/lib/common/fieldNormalizer/radio.js → esm2020/lib/common/fieldNormalizer/radio.mjs} +0 -0
- package/{esm2015/lib/common/fieldNormalizer/reference.js → esm2020/lib/common/fieldNormalizer/reference.mjs} +0 -0
- package/{esm2015/lib/common/fieldNormalizer/richtext.js → esm2020/lib/common/fieldNormalizer/richtext.mjs} +0 -0
- package/{esm2015/lib/common/fieldNormalizer/string.js → esm2020/lib/common/fieldNormalizer/string.mjs} +0 -0
- package/{esm2015/lib/common/fieldNormalizer/text.js → esm2020/lib/common/fieldNormalizer/text.mjs} +0 -0
- package/{esm2015/lib/common/fieldNormalizer/uniqueNameFilter.js → esm2020/lib/common/fieldNormalizer/uniqueNameFilter.mjs} +0 -0
- package/esm2020/lib/common/metaAutofocus.directive.mjs +35 -0
- package/esm2020/lib/common/metaIcons.pipe.mjs +29 -0
- package/esm2020/lib/common/metaModel.pipe.mjs +25 -0
- package/esm2020/lib/common/metaNormalizer.mjs +309 -0
- package/esm2020/lib/common/metaStripHtml.pipe.mjs +22 -0
- package/{esm2015/lib/common/utils/colorThemes.js → esm2020/lib/common/utils/colorThemes.mjs} +0 -0
- package/{esm2015/lib/common/utils/indexedDbStore/index.js → esm2020/lib/common/utils/indexedDbStore/index.mjs} +0 -0
- package/esm2020/lib/common/utils/relativeTimeBuilder.mjs +49 -0
- package/{esm2015/lib/common/utils/templateBuilder.js → esm2020/lib/common/utils/templateBuilder.mjs} +0 -0
- package/esm2020/lib/field.mjs +2176 -0
- package/esm2020/lib/fieldAbstract.mjs +198 -0
- package/esm2020/lib/fieldBoolean/index.mjs +51 -0
- package/esm2020/lib/fieldDatetime/index.mjs +337 -0
- package/esm2020/lib/fieldInput/index.mjs +444 -0
- package/esm2020/lib/fieldRadio/index.mjs +87 -0
- package/esm2020/lib/fieldRichtext/index.mjs +85 -0
- package/esm2020/lib/fieldText/index.mjs +65 -0
- package/esm2020/lib/fieldUnknown/index.mjs +19 -0
- package/esm2020/lib/index.mjs +165 -0
- package/esm2020/lib/services/metaContext/index.mjs +35 -0
- package/esm2020/lib/services/metaMsg/index.mjs +84 -0
- package/esm2020/lib/services/metaReference/index.mjs +94 -0
- package/esm2020/lib/services/metaResource/index.mjs +139 -0
- package/esm2020/lib/services/metaResource/metaHttpClient.mjs +64 -0
- package/esm2020/lib/services/metaTracker/index.mjs +31 -0
- package/esm2020/lib/services/resourceDrafts/index.mjs +68 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/{esm2015/vgip-meta-ui.js → esm2020/vgip-meta-ui.mjs} +0 -0
- package/fesm2015/vgip-meta-ui.mjs +5208 -0
- package/fesm2015/vgip-meta-ui.mjs.map +1 -0
- package/fesm2020/vgip-meta-ui.mjs +5208 -0
- package/fesm2020/vgip-meta-ui.mjs.map +1 -0
- package/lib/common/metaAutofocus.directive.d.ts +3 -0
- package/lib/common/metaIcons.pipe.d.ts +3 -0
- package/lib/common/metaModel.pipe.d.ts +3 -0
- package/lib/common/metaStripHtml.pipe.d.ts +3 -0
- package/lib/field.d.ts +260 -1
- package/lib/fieldAbstract.d.ts +3 -0
- package/lib/fieldBoolean/index.d.ts +3 -0
- package/lib/fieldDatetime/index.d.ts +3 -0
- package/lib/fieldInput/index.d.ts +4 -0
- package/lib/fieldRadio/index.d.ts +3 -0
- package/lib/fieldRichtext/index.d.ts +3 -0
- package/lib/fieldText/index.d.ts +3 -0
- package/lib/fieldUnknown/index.d.ts +3 -0
- package/lib/index.d.ts +28 -8
- package/lib/services/metaContext/index.d.ts +3 -0
- package/lib/services/metaMsg/index.d.ts +3 -0
- package/lib/services/metaReference/index.d.ts +3 -0
- package/lib/services/metaResource/index.d.ts +3 -0
- package/lib/services/metaResource/metaHttpClient.d.ts +3 -0
- package/lib/services/metaTracker/index.d.ts +3 -0
- package/lib/services/resourceDrafts/index.d.ts +3 -0
- package/package.json +19 -7
- package/vgip-meta-ui.d.ts +1 -0
- package/bundles/vgip-meta-ui.umd.js +0 -6327
- package/bundles/vgip-meta-ui.umd.js.map +0 -1
- package/esm2015/lib/common/metaAutofocus.directive.js +0 -35
- package/esm2015/lib/common/metaIcons.pipe.js +0 -28
- package/esm2015/lib/common/metaModel.pipe.js +0 -22
- package/esm2015/lib/common/metaNormalizer.js +0 -311
- package/esm2015/lib/common/metaStripHtml.pipe.js +0 -18
- package/esm2015/lib/common/utils/relativeTimeBuilder.js +0 -51
- package/esm2015/lib/field.js +0 -157
- package/esm2015/lib/fieldAbstract.js +0 -195
- package/esm2015/lib/fieldBoolean/index.js +0 -50
- package/esm2015/lib/fieldComposite/index.js +0 -41
- package/esm2015/lib/fieldDatetime/index.js +0 -334
- package/esm2015/lib/fieldInput/index.js +0 -421
- package/esm2015/lib/fieldList/index.js +0 -68
- package/esm2015/lib/fieldRadio/index.js +0 -85
- package/esm2015/lib/fieldReference/index.js +0 -798
- package/esm2015/lib/fieldRichtext/index.js +0 -82
- package/esm2015/lib/fieldSelect/index.js +0 -448
- package/esm2015/lib/fieldText/index.js +0 -66
- package/esm2015/lib/fieldUnknown/index.js +0 -16
- package/esm2015/lib/index.js +0 -105
- package/esm2015/lib/layout/index.js +0 -155
- package/esm2015/lib/refDialog/index.js +0 -133
- package/esm2015/lib/resource/index.js +0 -428
- package/esm2015/lib/resourceCard/index.js +0 -56
- package/esm2015/lib/services/metaContext/index.js +0 -34
- package/esm2015/lib/services/metaMsg/index.js +0 -86
- package/esm2015/lib/services/metaReference/index.js +0 -98
- package/esm2015/lib/services/metaResource/index.js +0 -141
- package/esm2015/lib/services/metaResource/metaHttpClient.js +0 -65
- package/esm2015/lib/services/metaTracker/index.js +0 -30
- package/esm2015/lib/services/resourceDrafts/index.js +0 -70
- package/fesm2015/vgip-meta-ui.js +0 -5230
- package/fesm2015/vgip-meta-ui.js.map +0 -1
- package/lib/fieldComposite/index.d.ts +0 -8
- package/lib/fieldList/index.d.ts +0 -10
- package/lib/fieldReference/index.d.ts +0 -68
- package/lib/fieldSelect/index.d.ts +0 -38
- package/lib/layout/index.d.ts +0 -35
- package/lib/refDialog/index.d.ts +0 -30
- package/lib/resource/index.d.ts +0 -55
- package/lib/resourceCard/index.d.ts +0 -15
- package/vgip-meta-ui.metadata.json +0 -1
|
@@ -1,428 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* @Author: Alexander.Vangelov@vonage.com
|
|
3
|
-
* @Date: 2019-09-19 17:35:28
|
|
4
|
-
* @Last Modified by: Alexander.Vangelov@vonage.com
|
|
5
|
-
* @Last Modified time: 2020-09-03 13:22:14
|
|
6
|
-
*/
|
|
7
|
-
import { Component, Input, ChangeDetectorRef, Output, EventEmitter, ElementRef, ComponentFactoryResolver } from '@angular/core';
|
|
8
|
-
import { MetaResourceService } from '../services/metaResource';
|
|
9
|
-
import { MetaContextService } from '../services/metaContext';
|
|
10
|
-
import { MetaMsgService } from '../services/metaMsg';
|
|
11
|
-
import { metaNormalizer } from '../common/metaNormalizer';
|
|
12
|
-
import { templateBuilder } from '../common/utils/templateBuilder';
|
|
13
|
-
import { metaDark, metaLight } from '../common/utils/colorThemes';
|
|
14
|
-
export class MetaResource {
|
|
15
|
-
constructor(componentFactoryResolver, ref, el, metaResourceService, metaContext, metaMsgService) {
|
|
16
|
-
this.componentFactoryResolver = componentFactoryResolver;
|
|
17
|
-
this.ref = ref;
|
|
18
|
-
this.el = el;
|
|
19
|
-
this.metaResourceService = metaResourceService;
|
|
20
|
-
this.metaContext = metaContext;
|
|
21
|
-
this.metaMsgService = metaMsgService;
|
|
22
|
-
this.done = new EventEmitter();
|
|
23
|
-
this.edit = true;
|
|
24
|
-
this.contactsSuggestionsDone = false;
|
|
25
|
-
this.onMenuClickout = () => {
|
|
26
|
-
delete this.resourceMenuVisible;
|
|
27
|
-
document.removeEventListener('click', this.onMenuClickout);
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
ngOnInit() {
|
|
31
|
-
this.integrationCode = (this.resource.integrationCode || '').toUpperCase();
|
|
32
|
-
this.resourceType = this.resource.resourceType;
|
|
33
|
-
this.service = (this.metaResourceServiceDelegated || this.metaResourceService).new(this.resource);
|
|
34
|
-
if (!this.model) {
|
|
35
|
-
this.model = {};
|
|
36
|
-
}
|
|
37
|
-
if (this.resource.ref && this.resource.ref.activity) { // reuse failed autoactivities data
|
|
38
|
-
this.model = this.resource.ref.activity;
|
|
39
|
-
}
|
|
40
|
-
if (this.resource.activity && this.resource.ref.editable === false && !this.resource.externalId) {
|
|
41
|
-
this.resource.externalId = 'MISSING_EXTERNAL_ID';
|
|
42
|
-
}
|
|
43
|
-
this.isPersistent = this.resource && this.resource.externalId;
|
|
44
|
-
if (!this.resource.meta) {
|
|
45
|
-
this.loadMetadata(this.resource.layoutId);
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
// if (this.isPersistent && (!this.isEditable || this.resources[ref.name].meta.layout.children)) {
|
|
49
|
-
// this.edit = false;
|
|
50
|
-
// }
|
|
51
|
-
this.meta = this.resource.meta;
|
|
52
|
-
this.currentLayoutId = this.meta.layout.id;
|
|
53
|
-
this.getDetails();
|
|
54
|
-
this.getFieldsMap();
|
|
55
|
-
}
|
|
56
|
-
if (this.theme !== 'inherit') {
|
|
57
|
-
this.applyTheme();
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
ngOnChanges(changes) {
|
|
61
|
-
if (changes.theme) {
|
|
62
|
-
this.theme = changes.theme.currentValue;
|
|
63
|
-
if (this.theme !== 'inherit') {
|
|
64
|
-
this.applyTheme();
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
editMode() {
|
|
69
|
-
this.edit = true;
|
|
70
|
-
}
|
|
71
|
-
loadMetadata(layoutId, refresh = false) {
|
|
72
|
-
const layoutStoreKey = `vgis.layout_${this.metaContext.vgipUserId}_${this.integrationCode}_${this.resource.resourceType}`;
|
|
73
|
-
if (!layoutId) {
|
|
74
|
-
layoutId = localStorage.getItem(layoutStoreKey);
|
|
75
|
-
}
|
|
76
|
-
this.busy = true;
|
|
77
|
-
setTimeout(() => {
|
|
78
|
-
this.metaLoading = true;
|
|
79
|
-
}, 0);
|
|
80
|
-
delete this.resource.niceFields;
|
|
81
|
-
this.service.getMetadata(layoutId, refresh).subscribe({
|
|
82
|
-
next: (meta) => {
|
|
83
|
-
this.currentLayoutId = meta.layout.id;
|
|
84
|
-
if (layoutId !== meta.layout.id && !this.isPersistent) {
|
|
85
|
-
localStorage.removeItem(layoutStoreKey);
|
|
86
|
-
}
|
|
87
|
-
this.meta = metaNormalizer(meta, this.integrationCode, this.resource.resourceType);
|
|
88
|
-
this.isEditable = this.meta.layout && this.meta.layout.editable !== false;
|
|
89
|
-
this.resource.meta = this.meta;
|
|
90
|
-
if (this.isPersistent && (!this.isEditable || this.meta.layout.children)) {
|
|
91
|
-
this.edit = false;
|
|
92
|
-
}
|
|
93
|
-
delete this.busy;
|
|
94
|
-
this.getDetails();
|
|
95
|
-
this.getFieldsMap();
|
|
96
|
-
},
|
|
97
|
-
error: (metaError) => {
|
|
98
|
-
delete this.busy;
|
|
99
|
-
this.generalError = `Error loading resource metadata (${metaError.statusText})`;
|
|
100
|
-
},
|
|
101
|
-
complete: () => {
|
|
102
|
-
delete this.metaLoading;
|
|
103
|
-
this.forceUiUpdate();
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
changeLayout() {
|
|
108
|
-
localStorage.setItem(`vgis.layout_${this.metaContext.vgipUserId}_${this.integrationCode}_${this.resource.resourceType}`, this.currentLayoutId);
|
|
109
|
-
this.loadMetadata(this.currentLayoutId);
|
|
110
|
-
}
|
|
111
|
-
getDetails() {
|
|
112
|
-
if (this.resource && (this.resource.externalId || this.resource.id)) {
|
|
113
|
-
if (this.resource.parent && this.resource.activity // skip fetch
|
|
114
|
-
&& this.meta.layout.editable === false && !this.meta.layout.children) {
|
|
115
|
-
for (const p in this.resource.activity) {
|
|
116
|
-
if (this.resource.activity[p] && this.fieldNames.indexOf(p) !== -1) {
|
|
117
|
-
this.model[p] = this.resource.activity[p];
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
this.busy = true;
|
|
123
|
-
this.service.getDetails((this.resource.externalId || this.resource.id), {
|
|
124
|
-
eventId: this.resource.eventId !== 'NO_EVENT' ? this.resource.eventId : null, layoutId: this.resource.layoutId
|
|
125
|
-
}).subscribe({
|
|
126
|
-
next: (resource) => {
|
|
127
|
-
/* eslint-disable no-underscore-dangle */
|
|
128
|
-
if (resource._vgis) {
|
|
129
|
-
if (resource._vgis.eventId) {
|
|
130
|
-
this.metaContext.vgipEventId = resource._vgis.eventId;
|
|
131
|
-
}
|
|
132
|
-
if (resource.layoutId && resource._vgis.layoutId !== this.currentLayoutId) {
|
|
133
|
-
this.loadMetadata(resource._vgis.layoutId);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
/* eslint-enable no-underscore-dangle */
|
|
137
|
-
for (const p in resource) {
|
|
138
|
-
if (typeof (resource[p] !== 'undefined') && (this.fieldNames.indexOf(p) !== -1 || p === '_vgis')) {
|
|
139
|
-
this.model[p] = resource[p];
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
delete this.busy;
|
|
143
|
-
},
|
|
144
|
-
error: (resourceError) => {
|
|
145
|
-
this.generalError = resourceError.error ? resourceError.error.message || resourceError.message : resourceError.message;
|
|
146
|
-
delete this.busy;
|
|
147
|
-
},
|
|
148
|
-
complete: () => {
|
|
149
|
-
this.forceUiUpdate();
|
|
150
|
-
}
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
else {
|
|
155
|
-
this.performAutoFill();
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
performAutoFill() {
|
|
159
|
-
this.metaMsgService.sendMessage(this.integrationCode, {
|
|
160
|
-
action: 'autoFill',
|
|
161
|
-
integration: this.integrationCode,
|
|
162
|
-
resourceType: this.resourceType,
|
|
163
|
-
resource: JSON.parse(JSON.stringify(this.model)),
|
|
164
|
-
fields: this.niceFields,
|
|
165
|
-
event: this.metaContext.context,
|
|
166
|
-
profile: this.metaContext.profiles[this.integrationCode]
|
|
167
|
-
}, (response) => {
|
|
168
|
-
if (!response.error) {
|
|
169
|
-
for (const afp in response.autoFill) {
|
|
170
|
-
if (!this.model[afp]) {
|
|
171
|
-
this.model[afp] = response.autoFill[afp];
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
|
-
getFieldsMap() {
|
|
178
|
-
if (this.meta.fieldsMap) {
|
|
179
|
-
this.fieldsMap = this.meta.fieldsMap;
|
|
180
|
-
this.markContactables();
|
|
181
|
-
this.buildContactsSuggestions();
|
|
182
|
-
if (!this.resource.externalId) {
|
|
183
|
-
this.buildSubjectTemplate();
|
|
184
|
-
this.execTransformer();
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
else {
|
|
188
|
-
this.metaMsgService.sendMessage(this.integrationCode, { action: 'fieldsMap', integration: this.integrationCode, resourceType: this.resourceType }, (response) => {
|
|
189
|
-
if (!response.error) {
|
|
190
|
-
this.fieldsMap = response.fieldsMap;
|
|
191
|
-
this.markContactables();
|
|
192
|
-
this.buildContactsSuggestions();
|
|
193
|
-
if (!this.resource.externalId) {
|
|
194
|
-
this.buildSubjectTemplate();
|
|
195
|
-
this.execTransformer();
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
else {
|
|
199
|
-
console.log('No fields map', this.integrationCode, this.resourceType, response.error);
|
|
200
|
-
}
|
|
201
|
-
});
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
openResourceMenu() {
|
|
205
|
-
this.resourceMenuVisible = true;
|
|
206
|
-
setTimeout(() => {
|
|
207
|
-
document.addEventListener('click', this.onMenuClickout);
|
|
208
|
-
}, 10);
|
|
209
|
-
}
|
|
210
|
-
close(result) {
|
|
211
|
-
this.done.emit(result);
|
|
212
|
-
}
|
|
213
|
-
submit(resourceForm) {
|
|
214
|
-
delete this.formErrors;
|
|
215
|
-
resourceForm.form.submitted = true;
|
|
216
|
-
if (resourceForm.valid) {
|
|
217
|
-
this.busy = true;
|
|
218
|
-
if (this.metaContext.vgipEventId) {
|
|
219
|
-
/* eslint-disable no-underscore-dangle */
|
|
220
|
-
if (!this.model._vgis) {
|
|
221
|
-
this.model._vgis = {
|
|
222
|
-
connector: this.integrationCode,
|
|
223
|
-
resourceType: this.resourceType
|
|
224
|
-
};
|
|
225
|
-
}
|
|
226
|
-
this.model._vgis.layoutId = this.currentLayoutId;
|
|
227
|
-
this.model._vgis.timeZoneOffsetInMinutes = new Date().getTimezoneOffset();
|
|
228
|
-
this.model._vgis.eventId = this.metaContext.vgipEventId;
|
|
229
|
-
/* eslint-enable no-underscore-dangle */
|
|
230
|
-
}
|
|
231
|
-
this.service.save(this.model).subscribe((result) => {
|
|
232
|
-
this.close(result);
|
|
233
|
-
delete this.busy;
|
|
234
|
-
}, (errorResult) => {
|
|
235
|
-
this.formErrors = errorResult.error;
|
|
236
|
-
delete this.busy;
|
|
237
|
-
});
|
|
238
|
-
}
|
|
239
|
-
else {
|
|
240
|
-
this.formErrors = Object.keys(resourceForm.controls)
|
|
241
|
-
.filter((c) => resourceForm.controls[c].invalid).join(', ');
|
|
242
|
-
// .map((f) => this.niceFields(this.currentResource).label).join(', ');
|
|
243
|
-
setTimeout(() => {
|
|
244
|
-
const selector = `form[name="${this.resourceType}"] .Vlt-form__element--error .main:not(.standalone)`;
|
|
245
|
-
const firstInvalid = this.el.nativeElement.querySelector(selector);
|
|
246
|
-
if (firstInvalid) {
|
|
247
|
-
firstInvalid.focus();
|
|
248
|
-
}
|
|
249
|
-
});
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
clearFormErrors() {
|
|
253
|
-
delete this.formErrors;
|
|
254
|
-
}
|
|
255
|
-
get niceFields() {
|
|
256
|
-
if (!this.resource.niceFields
|
|
257
|
-
&& this.resource.meta
|
|
258
|
-
&& this.resource.meta.layout
|
|
259
|
-
&& this.resource.meta.layout.sections) {
|
|
260
|
-
const extractSectionFields = (s) => {
|
|
261
|
-
for (const f of s.fields) {
|
|
262
|
-
if (f.fields && f.fields.length) {
|
|
263
|
-
extractSectionFields(f);
|
|
264
|
-
}
|
|
265
|
-
else {
|
|
266
|
-
this.resource.niceFields[f.name] = f;
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
};
|
|
270
|
-
this.resource.niceFields = {};
|
|
271
|
-
for (const s of this.resource.meta.layout.sections) {
|
|
272
|
-
extractSectionFields(s);
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
return this.resource.niceFields;
|
|
276
|
-
}
|
|
277
|
-
get fieldNames() {
|
|
278
|
-
const names = Object.keys(this.niceFields);
|
|
279
|
-
if (this.resource.meta.layout.children) {
|
|
280
|
-
for (const child of this.resource.meta.layout.children) {
|
|
281
|
-
names.push(child.name);
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
return names;
|
|
285
|
-
}
|
|
286
|
-
suggestFieldProperty(key, value) {
|
|
287
|
-
if (key && value) {
|
|
288
|
-
const fieldNames = this.fieldNames;
|
|
289
|
-
if (this.model) {
|
|
290
|
-
const nestMatch = key.match(/(\S+)\[\d\]\.(\S+)/);
|
|
291
|
-
if (nestMatch && fieldNames.indexOf(nestMatch[1]) !== -1) {
|
|
292
|
-
this.model[nestMatch[1]] = [];
|
|
293
|
-
const nestKeys = {};
|
|
294
|
-
nestKeys[nestMatch[2]] = value;
|
|
295
|
-
this.model[nestMatch[1]].push(nestKeys);
|
|
296
|
-
}
|
|
297
|
-
else if (fieldNames.indexOf(key) !== -1) {
|
|
298
|
-
this.model[key] = value;
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
execTransformer() {
|
|
304
|
-
if (this.metaContext && this.fieldsMap) {
|
|
305
|
-
setTimeout(() => {
|
|
306
|
-
this.suggestFieldProperty(this.fieldsMap.phoneNumber, this.metaContext.phoneNumber);
|
|
307
|
-
if (this.fieldsMap.firstName || this.fieldsMap.lastName) {
|
|
308
|
-
const names = (this.metaContext.displayName || '').split(' ');
|
|
309
|
-
this.suggestFieldProperty(this.fieldsMap.firstName, names[0]);
|
|
310
|
-
this.suggestFieldProperty(this.fieldsMap.lastName, names[1]);
|
|
311
|
-
}
|
|
312
|
-
else if (this.fieldsMap.displayName) {
|
|
313
|
-
this.suggestFieldProperty(this.fieldsMap.displayName, this.metaContext.displayName);
|
|
314
|
-
}
|
|
315
|
-
}, 100);
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
markContactables() {
|
|
319
|
-
if (this.fieldsMap.contactables && this.fieldsMap.contactables.length) {
|
|
320
|
-
for (const c of this.fieldsMap.contactables) {
|
|
321
|
-
const field = this.niceFields[c];
|
|
322
|
-
if (field) {
|
|
323
|
-
Object.defineProperty(field, '$isContactable', {
|
|
324
|
-
value: true,
|
|
325
|
-
configurable: true,
|
|
326
|
-
enumerable: false
|
|
327
|
-
});
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
buildSubjectTemplate() {
|
|
333
|
-
if (!this.model[this.fieldsMap.subject] && this.fieldsMap.subject && this.niceFields[this.fieldsMap.subject]) {
|
|
334
|
-
let subjectTemplate;
|
|
335
|
-
if (this.niceFields[this.fieldsMap.subject].default) {
|
|
336
|
-
subjectTemplate = this.niceFields[this.fieldsMap.subject].default.id || this.niceFields[this.fieldsMap.subject].default;
|
|
337
|
-
}
|
|
338
|
-
else if (this.metaContext.profiles[this.integrationCode]) {
|
|
339
|
-
const profile = this.metaContext.profiles[this.integrationCode] || {};
|
|
340
|
-
subjectTemplate = profile.defaultSubject ?
|
|
341
|
-
profile.defaultSubject[((this.metaContext.context || 'CALL').type || '').toUpperCase()] : profile.activityDefaultSubjectTemplate;
|
|
342
|
-
}
|
|
343
|
-
if (subjectTemplate) {
|
|
344
|
-
this.model[this.fieldsMap.subject] = templateBuilder(this.metaContext, subjectTemplate);
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
buildContactsSuggestions() {
|
|
349
|
-
// let hasDefaultContact = false;
|
|
350
|
-
if (this.metaContext.contactables[this.integrationCode] && this.meta.layout && this.meta.layout.sections) {
|
|
351
|
-
for (const s of this.meta.layout.sections) {
|
|
352
|
-
for (const f of (s.fields || [])) {
|
|
353
|
-
if (f.type === 'reference') {
|
|
354
|
-
const refTypes = (f.reference.length ? f.reference : [f.reference]).map(r => r.name);
|
|
355
|
-
for (const c of this.metaContext.contactables[this.integrationCode]) {
|
|
356
|
-
if (refTypes.indexOf(c.resourceType || c.type) !== -1) {
|
|
357
|
-
if (!f.suggestions) {
|
|
358
|
-
f.suggestions = [];
|
|
359
|
-
}
|
|
360
|
-
let tLabel = c.displayName || c.name;
|
|
361
|
-
if (c.phoneNumbers) {
|
|
362
|
-
tLabel += (' ✆' + c.phoneNumbers.map(p => p.phoneNumber).join(','));
|
|
363
|
-
}
|
|
364
|
-
f.suggestions.push({
|
|
365
|
-
id: c.externalId || c.identifier || c.id,
|
|
366
|
-
label: tLabel,
|
|
367
|
-
type: c.resourceType || c.type
|
|
368
|
-
});
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
if ((this.fieldsMap.contactables || []).indexOf(f.name) !== -1) { // evaluate usability?
|
|
372
|
-
f.alwaysVisible = true;
|
|
373
|
-
}
|
|
374
|
-
// if (
|
|
375
|
-
// !hasDefaultContact && this.metaContext.defaultContactables[this.integrationCode]
|
|
376
|
-
// && refTypes.indexOf(this.metaContext.defaultContactables[this.integrationCode].type) !== -1
|
|
377
|
-
// ) {
|
|
378
|
-
// this.resource[f.name] = this.metaContext.defaultContactables[this.integrationCode];
|
|
379
|
-
// hasDefaultContact = true;
|
|
380
|
-
// } else if (!hasDefaultContact && this.fieldsMap.contactables && f.suggestions && f.suggestions.length === 1) {
|
|
381
|
-
// if (this.fieldsMap.contactables.indexOf(f.name) !== -1 && !f.default) {
|
|
382
|
-
// f.default = f.suggestions[0];
|
|
383
|
-
// hasDefaultContact = true;
|
|
384
|
-
// }
|
|
385
|
-
// }
|
|
386
|
-
}
|
|
387
|
-
}
|
|
388
|
-
}
|
|
389
|
-
this.contactsSuggestionsDone = true;
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
|
-
applyTheme() {
|
|
393
|
-
const metaTheme = this.theme === 'dark' ? metaDark : metaLight;
|
|
394
|
-
console.log('resource apply theme', this.theme);
|
|
395
|
-
for (const key of Object.keys(metaTheme.properties)) {
|
|
396
|
-
this.el.nativeElement.style.setProperty(key, metaTheme.properties[key]);
|
|
397
|
-
}
|
|
398
|
-
}
|
|
399
|
-
forceUiUpdate() {
|
|
400
|
-
// this.ref.detectChanges();
|
|
401
|
-
const e = document.createEvent('Events');
|
|
402
|
-
e.initEvent('click', true, false);
|
|
403
|
-
this.el.nativeElement.dispatchEvent(e);
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
MetaResource.decorators = [
|
|
407
|
-
{ type: Component, args: [{
|
|
408
|
-
selector: 'vgip-meta-resource',
|
|
409
|
-
template: "<div *ngIf='generalError' class=\"Vlt-callout Vlt-callout--critical\" style='overflow: auto; margin: 20px;'>\n\t<i></i>\n\t<div class=\"Vlt-callout__content\">\n\t\t<p>{{generalError}}</p>\n\t</div>\n</div>\n<div *ngIf='!meta' class=\"Vlt-progress\">\n\t<div class=\"Vlt-progress__bar\" [ngClass]=\"{ loading: metaLoading }\" role=\"progressbar\" aria-valuemin=\"0\" aria-valuetext=\"Loading Metadata\" aria-valuemax=\"100\"></div>\n</div>\n<form [vgipMetaFormAutofocus]='!resource || !resource.externalId' *ngIf='meta && !generalError' #resourceForm=\"ngForm\" [name]='resource.resourceType' (ngSubmit)='submit(resourceForm)' novalidate>\n\t<div class='form-content'>\n\t\t<div [ngClass]=\"{ 'Vlt-callout--dismissed': !formErrors }\" class=\"Vlt-callout Vlt-callout--banner Vlt-callout--critical\">\n\t\t\t<i></i>\n\t\t\t<div class=\"Vlt-callout__content\" style=\"margin-top: auto;\">\n\t\t\t\t<p>There is a problem with one or more fields</p>\n\t\t\t\t<small style='font-weight: 600; font-size: 1.0em;' *ngIf='formErrors'>{{ formErrors.message || formErrors }}</small>\n\t\t\t</div>\n\t\t\t<button type='button' class=\"Vlt-callout__dismiss\" (click)='clearFormErrors()' aria-label=\"Dismiss\"></button>\n\t\t</div>\n\t\t<div class=\"Vlt-card__content\" style='min-height: 40px;'>\n\t\t\t<vgip-meta-layout *ngIf='edit' [meta]='meta.layout' [resource]='model' [preview]='false' [integration]='meta.integration' [type]='resource.resourceType' theme='inherit'></vgip-meta-layout>\n\t\t\t<vgip-meta-layout *ngIf='!edit' [meta]='meta.layout' [resource]='model' [preview]='true' [integration]='meta.integration' [type]='resource.resourceType' theme='inherit'></vgip-meta-layout>\n\t\t</div>\n\t</div>\n\t<div class=\"Vlt-card__footer\">\n\t\t<button class=\"Vlt-btn Vlt-btn--secondary Vlt-btn--app Vlt-btn--outline\" type='button' aria-label='Cancel' (click)='close()'>\n\t\t\t{{ edit ? 'Cancel' : 'Close' }}\n\t\t</button>\n\t\t<button *ngIf='edit' class=\"Vlt-btn Vlt-btn--app\" [ngClass]=\"{ 'Vlt-btn--primary': isPersistent, 'Vlt-btn--secondary': !isPersistent }\" type='submit'>\n\t\t\t{{ (resource && resource.externalId) ? 'Update' : 'Create' }}\n\t\t</button>\n\t\t<button (click)='editMode()' *ngIf='!edit && isEditable' [disabled]='!isEditable' class=\"Vlt-btn Vlt-btn--app Vlt-btn--primary\" type='button' aria-label='Edit'>\n\t\t\tEdit\n\t\t</button>\n\t\t<div style='margin-right: 8px; flex: 1;'>\n\t\t\t<div *ngIf='meta.availableLayouts && meta.availableLayouts.length' class=\"Vlt-form__element Vlt-form__element--big\" style='padding: 0; margin: -8px -18px -8px 0;'>\n\t\t\t\t<div class=\"Vlt-select\">\n\t\t\t\t\t<label style='all: inherit;'>\n\t\t\t\t\t\t<select style='border: 0; margin-top: 3px; background: transparent;' (change)='changeLayout()' [(ngModel)]='currentLayoutId' [ngModelOptions]='{ standalone: true }' [disabled]='isPersistent'>\n\t\t\t\t\t\t\t<option selected disabled>Select layout</option>\n\t\t\t\t\t\t\t<option *ngFor='let layout of meta.availableLayouts' [ngValue]='layout.id'>{{layout.name}}</option>\n\t\t\t\t\t\t</select>\n\t\t\t\t\t\t<label>Layout</label>\n\t\t\t\t\t</label>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"Vlt-dropdown resource-menu\" [ngClass]=\"{ 'Vlt-dropdown--expanded': resourceMenuVisible }\" style='margin-left: 2px;'>\n\t\t\t<div class=\"Vlt-dropdown__panel\" style='bottom: 40px; right: -4px; top: initial;'>\n\t\t\t\t<div class=\"Vlt-dropdown__panel__content\">\n\t\t\t\t\t<a class=\"Vlt-dropdown__link\" (click)='loadMetadata(currentLayoutId, true)'>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<svg class='Vlt-icon Vlt-icon--smaller'><use xlink:href=\"volta/volta-icons.svg#Vlt-icon-refresh\"/></svg> Refresh metadata\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"Vlt-dropdown__trigger\">\n\t\t\t\t<button type='button' (click)='openResourceMenu()' class=\"Vlt-btn Vlt-btn--link\" aria-label='Resource menu'>\n\t\t\t\t\t<svg class='Vlt-icon Vlt-icon--small' style='margin: 0;'><use xlink:href=\"volta/volta-icons.svg#Vlt-icon-more-v-negative\"/></svg>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</form>\n<div class='busy-mask' [ngClass]=\"{ active: busy }\">\n\t<div style='height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center;'>\n\t\t<div class=\"Vlt-spinner\"></div>\n\t</div>\n</div>",
|
|
410
|
-
styles: [":host{flex:1;display:flex;flex-direction:column;min-height:0;color:var(--vgip-meta-resource-color)}.Vlt-callout--banner{justify-content:normal;text-align:left;text-align:initial;overflow-y:auto}.Vlt-callout--banner.Vlt-callout--dismissed{padding:0}.Vlt-callout--banner:not(.Vlt-callout--dismissed){min-height:78px}.Vlt-spinner:after,.Vlt-spinner:before{border:6px solid transparent;border-top-color:#616266}.Vlt-card__content{padding:8px 8px 8px 16px;display:flex;flex-direction:column;min-height:0;flex:1;overflow-y:scroll;overflow-x:hidden;background-color:var(--vgip-meta-resource-bg-color)}@media (hover:none){.Vlt-card__content{padding-right:16px}}.Vlt-card__content::-webkit-scrollbar{width:8px}.Vlt-card__content::-webkit-scrollbar-thumb{background-color:var(--vgip-meta-scrollbar-color);border:2px solid transparent;border-radius:6px;background-clip:content-box}.Vlt-card__footer{background:var(--vgip-meta-resource-bar-color);border-top:1px solid var(--vgip-meta-separator-color);display:flex;flex-direction:row;margin:16px -24px -24px;padding:8px 8px 8px 16px;box-shadow:0 0 4px rgba(0,0,0,.25);z-index:1}.Vlt-card__footer .Vlt-select select{color:var(--vgip-meta-input-color)}.Vlt-card__footer .Vlt-select select:disabled{background:transparent none repeat 0 0/auto auto padding-box border-box scroll;background:initial;cursor:not-allowed}.Vlt-card__footer .Vlt-select:after{background-image:var(--vgip-meta-dropdown-icon)}.Vlt-card__footer .resource-menu .Vlt-icon:not(:hover){fill:var(--vgip-meta-input-label-color)}.Vlt-card__footer button.Vlt-btn--secondary{border:none;box-shadow:inset 0 0 0 1px var(--vgip-meta-button-border-color)}.Vlt-card__footer button.Vlt-btn--secondary:not([type=submit]){color:var(--vgip-meta-input-color)}.Vlt-card__footer button.Vlt-btn--secondary:hover{box-shadow:inset 0 0 0 1px var(--vgip-meta-input-accent-color)}.Vlt-card__footer button.Vlt-btn--secondary:hover[type=submit]{background-color:var(--vgip-meta-submit-hover-bg-color)}.Vlt-progress{margin:0;position:sticky}.Vlt-progress .Vlt-progress__bar{width:0;transition:width 5s}.Vlt-progress .Vlt-progress__bar.loading{width:100%}form{border-radius:6px;padding:24px;display:flex;flex-direction:column;min-height:0;flex:1}form .form-content{margin:-24px -24px -16px;padding-bottom:0;flex:1;display:flex;flex-direction:column}.busy-mask{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.32);opacity:1;z-index:898;display:none;border-bottom-left-radius:6px;border-bottom-right-radius:6px;margin:1px;cursor:progress}.busy-mask.active{display:block}"]
|
|
411
|
-
},] }
|
|
412
|
-
];
|
|
413
|
-
MetaResource.ctorParameters = () => [
|
|
414
|
-
{ type: ComponentFactoryResolver },
|
|
415
|
-
{ type: ChangeDetectorRef },
|
|
416
|
-
{ type: ElementRef },
|
|
417
|
-
{ type: MetaResourceService },
|
|
418
|
-
{ type: MetaContextService },
|
|
419
|
-
{ type: MetaMsgService }
|
|
420
|
-
];
|
|
421
|
-
MetaResource.propDecorators = {
|
|
422
|
-
resource: [{ type: Input }],
|
|
423
|
-
model: [{ type: Input }],
|
|
424
|
-
metaResourceServiceDelegated: [{ type: Input }],
|
|
425
|
-
theme: [{ type: Input }],
|
|
426
|
-
done: [{ type: Output }]
|
|
427
|
-
};
|
|
428
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXRhLXVpL3NyYy9saWIvcmVzb3VyY2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBVSxNQUFNLEVBQUUsWUFBWSxFQUN4RSxVQUFVLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLG1CQUFtQixFQUF1QixNQUFNLDBCQUEwQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFPbEUsTUFBTSxPQUFPLFlBQVk7SUF1QnZCLFlBQ1Usd0JBQWtELEVBQ2xELEdBQXNCLEVBQ3RCLEVBQWMsRUFDZCxtQkFBd0MsRUFDeEMsV0FBK0IsRUFDL0IsY0FBOEI7UUFMOUIsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2Qsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDL0IsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBeEJ2QixTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVMzQyxTQUFJLEdBQUcsSUFBSSxDQUFDO1FBS1osNEJBQXVCLEdBQUcsS0FBSyxDQUFDO1FBc1N4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QUNULFFBQVEsRUFBRSxvQkFBb0I7Z0JBQzlCLDh4SUFBMEI7O2FBRTNCOzs7WUFkYSx3QkFBd0I7WUFEWCxpQkFBaUI7WUFDMUMsVUFBVTtZQUVILG1CQUFtQjtZQUNuQixrQkFBa0I7WUFDbEIsY0FBYzs7O3VCQVlwQixLQUFLO29CQUNMLEtBQUs7MkNBQ0wsS0FBSztvQkFDTCxLQUFLO21CQUNMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQEF1dGhvcjogQWxleGFuZGVyLlZhbmdlbG92QHZvbmFnZS5jb21cbiAqIEBEYXRlOiAyMDE5LTA5LTE5IDE3OjM1OjI4XG4gKiBATGFzdCBNb2RpZmllZCBieTogQWxleGFuZGVyLlZhbmdlbG92QHZvbmFnZS5jb21cbiAqIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMjAtMDktMDMgMTM6MjI6MTRcbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBDaGFuZ2VEZXRlY3RvclJlZiwgT25Jbml0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25DaGFuZ2VzLFxuICBFbGVtZW50UmVmLCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTWV0YVJlc291cmNlU2VydmljZSwgSU1ldGFSZXNvdXJjZUNvbmZpZyB9IGZyb20gJy4uL3NlcnZpY2VzL21ldGFSZXNvdXJjZSc7XG5pbXBvcnQgeyBNZXRhQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9tZXRhQ29udGV4dCc7XG5pbXBvcnQgeyBNZXRhTXNnU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL21ldGFNc2cnO1xuXG5pbXBvcnQgeyBtZXRhTm9ybWFsaXplciB9IGZyb20gJy4uL2NvbW1vbi9tZXRhTm9ybWFsaXplcic7XG5pbXBvcnQgeyB0ZW1wbGF0ZUJ1aWxkZXIgfSBmcm9tICcuLi9jb21tb24vdXRpbHMvdGVtcGxhdGVCdWlsZGVyJztcbmltcG9ydCB7IG1ldGFEYXJrLCBtZXRhTGlnaHQgfSBmcm9tICcuLi9jb21tb24vdXRpbHMvY29sb3JUaGVtZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2Z2lwLW1ldGEtcmVzb3VyY2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlldy5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3R5bGUuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE1ldGFSZXNvdXJjZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgcmVzb3VyY2U6IGFueTtcbiAgQElucHV0KCkgbW9kZWw6IGFueTtcbiAgQElucHV0KCkgbWV0YVJlc291cmNlU2VydmljZURlbGVnYXRlZDogTWV0YVJlc291cmNlU2VydmljZTsgLy8gY2FyeSBpdCBmcm9tIHRoZSBwYXJlbnQgdG8ga2VlcCB0aGUgaW50ZXJjZXB0b3JzXG4gIEBJbnB1dCgpIHRoZW1lOiBzdHJpbmc7XG4gIEBPdXRwdXQoKSBwdWJsaWMgZG9uZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBpbnRlZ3JhdGlvbkNvZGU6IHN0cmluZztcbiAgcmVzb3VyY2VUeXBlOiBzdHJpbmc7XG4gIG1ldGE6IGFueTtcbiAgc2VydmljZTogTWV0YVJlc291cmNlU2VydmljZTtcbiAgY3VycmVudExheW91dElkOiBhbnk7XG4gIGZvcm1FcnJvcnM6IGFueTtcbiAgZmllbGRzTWFwOiBhbnk7XG4gIGVkaXQgPSB0cnVlO1xuICBidXN5OiBib29sZWFuO1xuICBtZXRhTG9hZGluZzogYm9vbGVhbjtcbiAgZ2VuZXJhbEVycm9yOiBzdHJpbmc7XG4gIHJlc291cmNlTWVudVZpc2libGU6IGJvb2xlYW47XG4gIGNvbnRhY3RzU3VnZ2VzdGlvbnNEb25lID0gZmFsc2U7XG4gIGlzRWRpdGFibGU6IGJvb2xlYW47XG4gIGlzUGVyc2lzdGVudDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgbWV0YVJlc291cmNlU2VydmljZTogTWV0YVJlc291cmNlU2VydmljZSxcbiAgICBwcml2YXRlIG1ldGFDb250ZXh0OiBNZXRhQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXRhTXNnU2VydmljZTogTWV0YU1zZ1NlcnZpY2VcbiAgKSB7XG5cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW50ZWdyYXRpb25Db2RlID0gKHRoaXMucmVzb3VyY2UuaW50ZWdyYXRpb25Db2RlIHx8ICcnKS50b1VwcGVyQ2FzZSgpO1xuICAgIHRoaXMucmVzb3VyY2VUeXBlID0gdGhpcy5yZXNvdXJjZS5yZXNvdXJjZVR5cGU7XG4gICAgdGhpcy5zZXJ2aWNlID0gKHRoaXMubWV0YVJlc291cmNlU2VydmljZURlbGVnYXRlZCB8fCB0aGlzLm1ldGFSZXNvdXJjZVNlcnZpY2UpLm5ldyh0aGlzLnJlc291cmNlKTtcbiAgICBpZiAoIXRoaXMubW9kZWwpIHtcbiAgICAgIHRoaXMubW9kZWwgPSB7fTtcbiAgICB9XG4gICAgaWYgKHRoaXMucmVzb3VyY2UucmVmICYmIHRoaXMucmVzb3VyY2UucmVmLmFjdGl2aXR5KSB7IC8vIHJldXNlIGZhaWxlZCBhdXRvYWN0aXZpdGllcyBkYXRhIFxuICAgICAgdGhpcy5tb2RlbCA9IHRoaXMucmVzb3VyY2UucmVmLmFjdGl2aXR5O1xuICAgIH1cbiAgICBpZiAodGhpcy5yZXNvdXJjZS5hY3Rpdml0eSAmJiB0aGlzLnJlc291cmNlLnJlZi5lZGl0YWJsZSA9PT0gZmFsc2UgJiYgIXRoaXMucmVzb3VyY2UuZXh0ZXJuYWxJZCkge1xuICAgICAgdGhpcy5yZXNvdXJjZS5leHRlcm5hbElkID0gJ01JU1NJTkdfRVhURVJOQUxfSUQnO1xuICAgIH1cbiAgICB0aGlzLmlzUGVyc2lzdGVudCA9IHRoaXMucmVzb3VyY2UgJiYgdGhpcy5yZXNvdXJjZS5leHRlcm5hbElkO1xuICAgIGlmICghdGhpcy5yZXNvdXJjZS5tZXRhKSB7XG4gICAgICB0aGlzLmxvYWRNZXRhZGF0YSh0aGlzLnJlc291cmNlLmxheW91dElkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gICBpZiAodGhpcy5pc1BlcnNpc3RlbnQgJiYgKCF0aGlzLmlzRWRpdGFibGUgfHwgdGhpcy5yZXNvdXJjZXNbcmVmLm5hbWVdLm1ldGEubGF5b3V0LmNoaWxkcmVuKSkge1xuICAgICAgLy8gICAgIHRoaXMuZWRpdCA9IGZhbHNlO1xuICAgICAgLy8gICB9XG4gICAgICB0aGlzLm1ldGEgPSB0aGlzLnJlc291cmNlLm1ldGE7XG4gICAgICB0aGlzLmN1cnJlbnRMYXlvdXRJZCA9IHRoaXMubWV0YS5sYXlvdXQuaWQ7XG4gICAgICB0aGlzLmdldERldGFpbHMoKTtcbiAgICAgIHRoaXMuZ2V0RmllbGRzTWFwKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnRoZW1lICE9PSAnaW5oZXJpdCcpIHtcbiAgICAgIHRoaXMuYXBwbHlUaGVtZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IGFueSkge1xuICAgIGlmIChjaGFuZ2VzLnRoZW1lKSB7XG4gICAgICB0aGlzLnRoZW1lID0gY2hhbmdlcy50aGVtZS5jdXJyZW50VmFsdWU7XG4gICAgICBpZiAodGhpcy50aGVtZSAhPT0gJ2luaGVyaXQnKSB7XG4gICAgICAgIHRoaXMuYXBwbHlUaGVtZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGVkaXRNb2RlKCkge1xuICAgIHRoaXMuZWRpdCA9IHRydWU7XG4gIH1cblxuICBsb2FkTWV0YWRhdGEobGF5b3V0SWQ/LCByZWZyZXNoID0gZmFsc2UpIHtcbiAgICBjb25zdCBsYXlvdXRTdG9yZUtleSA9IGB2Z2lzLmxheW91dF8ke3RoaXMubWV0YUNvbnRleHQudmdpcFVzZXJJZH1fJHt0aGlzLmludGVncmF0aW9uQ29kZX1fJHt0aGlzLnJlc291cmNlLnJlc291cmNlVHlwZX1gO1xuICAgIGlmICghbGF5b3V0SWQpIHtcbiAgICAgIGxheW91dElkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obGF5b3V0U3RvcmVLZXkpO1xuICAgIH1cbiAgICB0aGlzLmJ1c3kgPSB0cnVlO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5tZXRhTG9hZGluZyA9IHRydWU7XG4gICAgfSwgMCk7XG4gICAgZGVsZXRlIHRoaXMucmVzb3VyY2UubmljZUZpZWxkcztcbiAgICB0aGlzLnNlcnZpY2UuZ2V0TWV0YWRhdGEobGF5b3V0SWQsIHJlZnJlc2gpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAobWV0YTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudExheW91dElkID0gbWV0YS5sYXlvdXQuaWQ7XG4gICAgICAgIGlmIChsYXlvdXRJZCAhPT0gbWV0YS5sYXlvdXQuaWQgJiYgIXRoaXMuaXNQZXJzaXN0ZW50KSB7XG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0obGF5b3V0U3RvcmVLZXkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubWV0YSA9IG1ldGFOb3JtYWxpemVyKG1ldGEsIHRoaXMuaW50ZWdyYXRpb25Db2RlLCB0aGlzLnJlc291cmNlLnJlc291cmNlVHlwZSk7XG4gICAgICAgIHRoaXMuaXNFZGl0YWJsZSA9IHRoaXMubWV0YS5sYXlvdXQgJiYgdGhpcy5tZXRhLmxheW91dC5lZGl0YWJsZSAhPT0gZmFsc2U7XG4gICAgICAgIHRoaXMucmVzb3VyY2UubWV0YSA9IHRoaXMubWV0YTtcbiAgICAgICAgaWYgKHRoaXMuaXNQZXJzaXN0ZW50ICYmICghdGhpcy5pc0VkaXRhYmxlIHx8IHRoaXMubWV0YS5sYXlvdXQuY2hpbGRyZW4pKSB7XG4gICAgICAgICAgdGhpcy5lZGl0ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZGVsZXRlIHRoaXMuYnVzeTtcbiAgICAgICAgdGhpcy5nZXREZXRhaWxzKCk7XG4gICAgICAgIHRoaXMuZ2V0RmllbGRzTWFwKCk7XG4gICAgICB9LCBcbiAgICAgIGVycm9yOiAobWV0YUVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgZGVsZXRlIHRoaXMuYnVzeTtcbiAgICAgICAgdGhpcy5nZW5lcmFsRXJyb3IgPSBgRXJyb3IgbG9hZGluZyByZXNvdXJjZSBtZXRhZGF0YSAoJHttZXRhRXJyb3Iuc3RhdHVzVGV4dH0pYDtcbiAgICAgIH0sIFxuICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgZGVsZXRlIHRoaXMubWV0YUxvYWRpbmc7XG4gICAgICAgIHRoaXMuZm9yY2VVaVVwZGF0ZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY2hhbmdlTGF5b3V0KCkge1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxuICAgICAgYHZnaXMubGF5b3V0XyR7dGhpcy5tZXRhQ29udGV4dC52Z2lwVXNlcklkfV8ke3RoaXMuaW50ZWdyYXRpb25Db2RlfV8ke3RoaXMucmVzb3VyY2UucmVzb3VyY2VUeXBlfWAsIFxuICAgICAgdGhpcy5jdXJyZW50TGF5b3V0SWRcbiAgICApO1xuICAgIHRoaXMubG9hZE1ldGFkYXRhKHRoaXMuY3VycmVudExheW91dElkKTtcbiAgfVxuXG4gIGdldERldGFpbHMoKSB7XG4gICAgaWYgKHRoaXMucmVzb3VyY2UgJiYgKHRoaXMucmVzb3VyY2UuZXh0ZXJuYWxJZCB8fCB0aGlzLnJlc291cmNlLmlkKSkge1xuICAgICAgaWYgKHRoaXMucmVzb3VyY2UucGFyZW50ICYmIHRoaXMucmVzb3VyY2UuYWN0aXZpdHkgLy8gc2tpcCBmZXRjaFxuICAgICAgICAmJiB0aGlzLm1ldGEubGF5b3V0LmVkaXRhYmxlID09PSBmYWxzZSAmJiAhdGhpcy5tZXRhLmxheW91dC5jaGlsZHJlblxuICAgICAgKSB7XG4gICAgICAgIGZvciAoY29uc3QgcCBpbiB0aGlzLnJlc291cmNlLmFjdGl2aXR5KSB7XG4gICAgICAgICAgaWYgKHRoaXMucmVzb3VyY2UuYWN0aXZpdHlbcF0gJiYgdGhpcy5maWVsZE5hbWVzLmluZGV4T2YocCkgIT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGVsW3BdID0gdGhpcy5yZXNvdXJjZS5hY3Rpdml0eVtwXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYnVzeSA9IHRydWU7XG4gICAgICAgIHRoaXMuc2VydmljZS5nZXREZXRhaWxzKFxuICAgICAgICAgICh0aGlzLnJlc291cmNlLmV4dGVybmFsSWQgfHwgdGhpcy5yZXNvdXJjZS5pZCksIHsgXG4gICAgICAgICAgICBldmVudElkOiB0aGlzLnJlc291cmNlLmV2ZW50SWQgIT09ICdOT19FVkVOVCcgPyB0aGlzLnJlc291cmNlLmV2ZW50SWQgOiBudWxsLCBsYXlvdXRJZDogdGhpcy5yZXNvdXJjZS5sYXlvdXRJZCBcbiAgICAgICAgICB9XG4gICAgICAgICkuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAocmVzb3VyY2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZXJzY29yZS1kYW5nbGUgKi9cbiAgICAgICAgICAgIGlmIChyZXNvdXJjZS5fdmdpcykgeyBcbiAgICAgICAgICAgICAgaWYgKHJlc291cmNlLl92Z2lzLmV2ZW50SWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1ldGFDb250ZXh0LnZnaXBFdmVudElkID0gcmVzb3VyY2UuX3ZnaXMuZXZlbnRJZDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAocmVzb3VyY2UubGF5b3V0SWQgJiYgcmVzb3VyY2UuX3ZnaXMubGF5b3V0SWQgIT09IHRoaXMuY3VycmVudExheW91dElkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkTWV0YWRhdGEocmVzb3VyY2UuX3ZnaXMubGF5b3V0SWQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLXVuZGVyc2NvcmUtZGFuZ2xlICovXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHAgaW4gcmVzb3VyY2UpIHtcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZihyZXNvdXJjZVtwXSAhPT0gJ3VuZGVmaW5lZCcpICYmICh0aGlzLmZpZWxkTmFtZXMuaW5kZXhPZihwKSAhPT0gLTEgfHwgcCA9PT0gJ192Z2lzJykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1vZGVsW3BdID0gcmVzb3VyY2VbcF07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmJ1c3k7XG4gICAgICAgICAgfSwgXG4gICAgICAgICAgZXJyb3I6IChyZXNvdXJjZUVycm9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdlbmVyYWxFcnJvciA9IHJlc291cmNlRXJyb3IuZXJyb3IgPyByZXNvdXJjZUVycm9yLmVycm9yLm1lc3NhZ2UgfHwgcmVzb3VyY2VFcnJvci5tZXNzYWdlIDogcmVzb3VyY2VFcnJvci5tZXNzYWdlO1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuYnVzeTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZvcmNlVWlVcGRhdGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBlcmZvcm1BdXRvRmlsbCgpO1xuICAgIH1cbiAgfVxuXG4gIHBlcmZvcm1BdXRvRmlsbCgpIHtcbiAgICB0aGlzLm1ldGFNc2dTZXJ2aWNlLnNlbmRNZXNzYWdlKFxuICAgICAgdGhpcy5pbnRlZ3JhdGlvbkNvZGUsIFxuICAgICAgeyBcbiAgICAgICAgYWN0aW9uOiAnYXV0b0ZpbGwnLFxuICAgICAgICBpbnRlZ3JhdGlvbjogdGhpcy5pbnRlZ3JhdGlvbkNvZGUsXG4gICAgICAgIHJlc291cmNlVHlwZTogdGhpcy5yZXNvdXJjZVR5cGUsXG4gICAgICAgIHJlc291cmNlOiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMubW9kZWwpKSxcbiAgICAgICAgZmllbGRzOiB0aGlzLm5pY2VGaWVsZHMsXG4gICAgICAgIGV2ZW50OiB0aGlzLm1ldGFDb250ZXh0LmNvbnRleHQsIFxuICAgICAgICBwcm9maWxlOiB0aGlzLm1ldGFDb250ZXh0LnByb2ZpbGVzW3RoaXMuaW50ZWdyYXRpb25Db2RlXVxuICAgICAgfSxcbiAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAoIXJlc3BvbnNlLmVycm9yKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBhZnAgaW4gcmVzcG9uc2UuYXV0b0ZpbGwpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5tb2RlbFthZnBdKSB7XG4gICAgICAgICAgICAgIHRoaXMubW9kZWxbYWZwXSA9IHJlc3BvbnNlLmF1dG9GaWxsW2FmcF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGdldEZpZWxkc01hcCgpIHtcbiAgICBpZiAodGhpcy5tZXRhLmZpZWxkc01hcCkge1xuICAgICAgdGhpcy5maWVsZHNNYXAgPSB0aGlzLm1ldGEuZmllbGRzTWFwO1xuICAgICAgdGhpcy5tYXJrQ29udGFjdGFibGVzKCk7XG4gICAgICB0aGlzLmJ1aWxkQ29udGFjdHNTdWdnZXN0aW9ucygpO1xuICAgICAgaWYgKCF0aGlzLnJlc291cmNlLmV4dGVybmFsSWQpIHtcbiAgICAgICAgdGhpcy5idWlsZFN1YmplY3RUZW1wbGF0ZSgpO1xuICAgICAgICB0aGlzLmV4ZWNUcmFuc2Zvcm1lcigpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1ldGFNc2dTZXJ2aWNlLnNlbmRNZXNzYWdlKFxuICAgICAgICB0aGlzLmludGVncmF0aW9uQ29kZSwgXG4gICAgICAgIHsgYWN0aW9uOiAnZmllbGRzTWFwJywgaW50ZWdyYXRpb246IHRoaXMuaW50ZWdyYXRpb25Db2RlLCByZXNvdXJjZVR5cGU6IHRoaXMucmVzb3VyY2VUeXBlIH0sXG4gICAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGlmICghcmVzcG9uc2UuZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMuZmllbGRzTWFwID0gcmVzcG9uc2UuZmllbGRzTWFwO1xuICAgICAgICAgICAgdGhpcy5tYXJrQ29udGFjdGFibGVzKCk7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkQ29udGFjdHNTdWdnZXN0aW9ucygpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLnJlc291cmNlLmV4dGVybmFsSWQpIHtcbiAgICAgICAgICAgICAgdGhpcy5idWlsZFN1YmplY3RUZW1wbGF0ZSgpO1xuICAgICAgICAgICAgICB0aGlzLmV4ZWNUcmFuc2Zvcm1lcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnTm8gZmllbGRzIG1hcCcsIHRoaXMuaW50ZWdyYXRpb25Db2RlLCB0aGlzLnJlc291cmNlVHlwZSwgcmVzcG9uc2UuZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBvcGVuUmVzb3VyY2VNZW51KCkge1xuICAgIHRoaXMucmVzb3VyY2VNZW51VmlzaWJsZSA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMub25NZW51Q2xpY2tvdXQpO1xuICAgIH0sIDEwKTtcbiAgfVxuXG4gIGNsb3NlKHJlc3VsdD8pIHtcbiAgICB0aGlzLmRvbmUuZW1pdChyZXN1bHQpO1xuICB9XG5cbiAgc3VibWl0KHJlc291cmNlRm9ybSkge1xuICAgIGRlbGV0ZSB0aGlzLmZvcm1FcnJvcnM7XG4gICAgcmVzb3VyY2VGb3JtLmZvcm0uc3VibWl0dGVkID0gdHJ1ZTtcbiAgICBpZiAocmVzb3VyY2VGb3JtLnZhbGlkKSB7XG4gICAgICB0aGlzLmJ1c3kgPSB0cnVlO1xuICAgICAgaWYgKHRoaXMubWV0YUNvbnRleHQudmdpcEV2ZW50SWQpIHtcbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZXJzY29yZS1kYW5nbGUgKi9cbiAgICAgICAgaWYgKCF0aGlzLm1vZGVsLl92Z2lzKSB7XG4gICAgICAgICAgdGhpcy5tb2RlbC5fdmdpcyA9IHtcbiAgICAgICAgICAgIGNvbm5lY3RvcjogdGhpcy5pbnRlZ3JhdGlvbkNvZGUsXG4gICAgICAgICAgICByZXNvdXJjZVR5cGU6IHRoaXMucmVzb3VyY2VUeXBlXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1vZGVsLl92Z2lzLmxheW91dElkID0gdGhpcy5jdXJyZW50TGF5b3V0SWQ7XG4gICAgICAgIHRoaXMubW9kZWwuX3ZnaXMudGltZVpvbmVPZmZzZXRJbk1pbnV0ZXMgPSBuZXcgRGF0ZSgpLmdldFRpbWV6b25lT2Zmc2V0KCk7XG4gICAgICAgIHRoaXMubW9kZWwuX3ZnaXMuZXZlbnRJZCA9IHRoaXMubWV0YUNvbnRleHQudmdpcEV2ZW50SWQ7XG4gICAgICAgIC8qIGVzbGludC1lbmFibGUgbm8tdW5kZXJzY29yZS1kYW5nbGUgKi9cbiAgICAgIH1cbiAgICAgIHRoaXMuc2VydmljZS5zYXZlKHRoaXMubW9kZWwpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5jbG9zZShyZXN1bHQpO1xuICAgICAgICBkZWxldGUgdGhpcy5idXN5O1xuICAgICAgfSwgKGVycm9yUmVzdWx0KSA9PiB7XG4gICAgICAgIHRoaXMuZm9ybUVycm9ycyA9IGVycm9yUmVzdWx0LmVycm9yO1xuICAgICAgICBkZWxldGUgdGhpcy5idXN5O1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybUVycm9ycyA9IE9iamVjdC5rZXlzKHJlc291cmNlRm9ybS5jb250cm9scylcbiAgICAgICAgLmZpbHRlcigoYykgPT4gcmVzb3VyY2VGb3JtLmNvbnRyb2xzW2NdLmludmFsaWQpLmpvaW4oJywgJyk7XG4gICAgICAgIC8vIC5tYXAoKGYpID0+IHRoaXMubmljZUZpZWxkcyh0aGlzLmN1cnJlbnRSZXNvdXJjZSkubGFiZWwpLmpvaW4oJywgJyk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0b3IgPSBgZm9ybVtuYW1lPVwiJHt0aGlzLnJlc291cmNlVHlwZX1cIl0gLlZsdC1mb3JtX19lbGVtZW50LS1lcnJvciAubWFpbjpub3QoLnN0YW5kYWxvbmUpYDtcbiAgICAgICAgY29uc3QgZmlyc3RJbnZhbGlkOiBIVE1MSW5wdXRFbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xuICAgICAgICBpZiAoZmlyc3RJbnZhbGlkKSB7XG4gICAgICAgICAgZmlyc3RJbnZhbGlkLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyRm9ybUVycm9ycygpIHtcbiAgICBkZWxldGUgdGhpcy5mb3JtRXJyb3JzO1xuICB9XG5cbiAgZ2V0IG5pY2VGaWVsZHMoKSB7XG4gICAgaWYgKFxuICAgICAgIXRoaXMucmVzb3VyY2UubmljZUZpZWxkc1xuICAgICAgJiYgdGhpcy5yZXNvdXJjZS5tZXRhXG4gICAgICAmJiB0aGlzLnJlc291cmNlLm1ldGEubGF5b3V0XG4gICAgICAmJiB0aGlzLnJlc291cmNlLm1ldGEubGF5b3V0LnNlY3Rpb25zXG4gICAgKSB7XG4gICAgICBjb25zdCBleHRyYWN0U2VjdGlvbkZpZWxkcyA9IChzKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgZiBvZiBzLmZpZWxkcykge1xuICAgICAgICAgIGlmIChmLmZpZWxkcyAmJiBmLmZpZWxkcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGV4dHJhY3RTZWN0aW9uRmllbGRzKGYpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlc291cmNlLm5pY2VGaWVsZHNbZi5uYW1lXSA9IGY7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgdGhpcy5yZXNvdXJjZS5uaWNlRmllbGRzID0ge307XG4gICAgICBmb3IgKGNvbnN0IHMgb2YgdGhpcy5yZXNvdXJjZS5tZXRhLmxheW91dC5zZWN0aW9ucykge1xuICAgICAgICBleHRyYWN0U2VjdGlvbkZpZWxkcyhzKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2UubmljZUZpZWxkcztcbiAgfVxuXG4gIGdldCBmaWVsZE5hbWVzKCkge1xuICAgIGNvbnN0IG5hbWVzID0gT2JqZWN0LmtleXModGhpcy5uaWNlRmllbGRzKTtcbiAgICBpZiAodGhpcy5yZXNvdXJjZS5tZXRhLmxheW91dC5jaGlsZHJlbikge1xuICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiB0aGlzLnJlc291cmNlLm1ldGEubGF5b3V0LmNoaWxkcmVuKSB7XG4gICAgICAgIG5hbWVzLnB1c2goY2hpbGQubmFtZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuYW1lcztcbiAgfVxuXG4gIHByaXZhdGUgb25NZW51Q2xpY2tvdXQgPSAoKSA9PiB7XG4gICAgZGVsZXRlIHRoaXMucmVzb3VyY2VNZW51VmlzaWJsZTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMub25NZW51Q2xpY2tvdXQpO1xuICB9O1xuXG4gIHByaXZhdGUgc3VnZ2VzdEZpZWxkUHJvcGVydHkoa2V5LCB2YWx1ZSkge1xuICAgIGlmIChrZXkgJiYgdmFsdWUpIHtcbiAgICAgIGNvbnN0IGZpZWxkTmFtZXMgPSB0aGlzLmZpZWxkTmFtZXM7XG4gICAgICBpZiAodGhpcy5tb2RlbCkge1xuICAgICAgICBjb25zdCBuZXN0TWF0Y2ggPSBrZXkubWF0Y2goLyhcXFMrKVxcW1xcZFxcXVxcLihcXFMrKS8pO1xuICAgICAgICBpZiAobmVzdE1hdGNoICYmIGZpZWxkTmFtZXMuaW5kZXhPZihuZXN0TWF0Y2hbMV0pICE9PSAtMSkge1xuICAgICAgICAgIHRoaXMubW9kZWxbbmVzdE1hdGNoWzFdXSA9IFtdO1xuICAgICAgICAgIGNvbnN0IG5lc3RLZXlzOiBhbnkgPSB7fTtcbiAgICAgICAgICBuZXN0S2V5c1tuZXN0TWF0Y2hbMl1dID0gdmFsdWU7XG4gICAgICAgICAgdGhpcy5tb2RlbFtuZXN0TWF0Y2hbMV1dLnB1c2gobmVzdEtleXMpO1xuICAgICAgICB9IGVsc2UgaWYgKGZpZWxkTmFtZXMuaW5kZXhPZihrZXkpICE9PSAtMSkge1xuICAgICAgICAgIHRoaXMubW9kZWxba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBleGVjVHJhbnNmb3JtZXIoKSB7XG4gICAgaWYgKHRoaXMubWV0YUNvbnRleHQgJiYgdGhpcy5maWVsZHNNYXApIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnN1Z2dlc3RGaWVsZFByb3BlcnR5KHRoaXMuZmllbGRzTWFwLnBob25lTnVtYmVyLCB0aGlzLm1ldGFDb250ZXh0LnBob25lTnVtYmVyKTtcbiAgICAgICAgaWYgKHRoaXMuZmllbGRzTWFwLmZpcnN0TmFtZSB8fCB0aGlzLmZpZWxkc01hcC5sYXN0TmFtZSkge1xuICAgICAgICAgIGNvbnN0IG5hbWVzID0gKHRoaXMubWV0YUNvbnRleHQuZGlzcGxheU5hbWUgfHwgJycpLnNwbGl0KCcgJyk7XG4gICAgICAgICAgdGhpcy5zdWdnZXN0RmllbGRQcm9wZXJ0eSh0aGlzLmZpZWxkc01hcC5maXJzdE5hbWUsIG5hbWVzWzBdKTtcbiAgICAgICAgICB0aGlzLnN1Z2dlc3RGaWVsZFByb3BlcnR5KHRoaXMuZmllbGRzTWFwLmxhc3ROYW1lLCBuYW1lc1sxXSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5maWVsZHNNYXAuZGlzcGxheU5hbWUpIHtcbiAgICAgICAgICB0aGlzLnN1Z2dlc3RGaWVsZFByb3BlcnR5KHRoaXMuZmllbGRzTWFwLmRpc3BsYXlOYW1lLCB0aGlzLm1ldGFDb250ZXh0LmRpc3BsYXlOYW1lKTtcbiAgICAgICAgfVxuICAgICAgfSwgMTAwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcmtDb250YWN0YWJsZXMoKSB7XG4gICAgaWYgKHRoaXMuZmllbGRzTWFwLmNvbnRhY3RhYmxlcyAmJiB0aGlzLmZpZWxkc01hcC5jb250YWN0YWJsZXMubGVuZ3RoKSB7XG4gICAgICBmb3IgKGNvbnN0IGMgb2YgdGhpcy5maWVsZHNNYXAuY29udGFjdGFibGVzKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5uaWNlRmllbGRzW2NdO1xuICAgICAgICBpZiAoZmllbGQpIHtcbiAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZmllbGQsICckaXNDb250YWN0YWJsZScsIHtcbiAgICAgICAgICAgIHZhbHVlOiB0cnVlLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2VcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRTdWJqZWN0VGVtcGxhdGUoKSB7XG4gICAgaWYgKCF0aGlzLm1vZGVsW3RoaXMuZmllbGRzTWFwLnN1YmplY3RdICYmIHRoaXMuZmllbGRzTWFwLnN1YmplY3QgJiYgdGhpcy5uaWNlRmllbGRzW3RoaXMuZmllbGRzTWFwLnN1YmplY3RdKSB7XG4gICAgICBsZXQgc3ViamVjdFRlbXBsYXRlOiBzdHJpbmc7XG4gICAgICBpZiAodGhpcy5uaWNlRmllbGRzW3RoaXMuZmllbGRzTWFwLnN1YmplY3RdLmRlZmF1bHQpIHtcbiAgICAgICAgc3ViamVjdFRlbXBsYXRlID0gdGhpcy5uaWNlRmllbGRzW3RoaXMuZmllbGRzTWFwLnN1YmplY3RdLmRlZmF1bHQuaWQgfHwgdGhpcy5uaWNlRmllbGRzW3RoaXMuZmllbGRzTWFwLnN1YmplY3RdLmRlZmF1bHQ7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMubWV0YUNvbnRleHQucHJvZmlsZXNbdGhpcy5pbnRlZ3JhdGlvbkNvZGVdKSB7XG4gICAgICAgIGNvbnN0IHByb2ZpbGUgPSB0aGlzLm1ldGFDb250ZXh0LnByb2ZpbGVzW3RoaXMuaW50ZWdyYXRpb25Db2RlXSB8fCB7fTtcbiAgICAgICAgc3ViamVjdFRlbXBsYXRlID0gcHJvZmlsZS5kZWZhdWx0U3ViamVjdCA/IFxuICAgICAgICAgIHByb2ZpbGUuZGVmYXVsdFN1YmplY3RbKCh0aGlzLm1ldGFDb250ZXh0LmNvbnRleHQgfHwgJ0NBTEwnKS50eXBlIHx8ICcnKS50b1VwcGVyQ2FzZSgpXSA6IHByb2ZpbGUuYWN0aXZpdHlEZWZhdWx0U3ViamVjdFRlbXBsYXRlO1xuICAgICAgfVxuICAgICAgaWYgKHN1YmplY3RUZW1wbGF0ZSkge1xuICAgICAgICB0aGlzLm1vZGVsW3RoaXMuZmllbGRzTWFwLnN1YmplY3RdID0gdGVtcGxhdGVCdWlsZGVyKHRoaXMubWV0YUNvbnRleHQsIHN1YmplY3RUZW1wbGF0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZENvbnRhY3RzU3VnZ2VzdGlvbnMoKSB7XG4gICAgLy8gbGV0IGhhc0RlZmF1bHRDb250YWN0ID0gZmFsc2U7XG4gICAgaWYgKHRoaXMubWV0YUNvbnRleHQuY29udGFjdGFibGVzW3RoaXMuaW50ZWdyYXRpb25Db2RlXSAmJiB0aGlzLm1ldGEubGF5b3V0ICYmIHRoaXMubWV0YS5sYXlvdXQuc2VjdGlvbnMpIHtcbiAgICAgIGZvciAoY29uc3QgcyBvZiB0aGlzLm1ldGEubGF5b3V0LnNlY3Rpb25zKSB7XG4gICAgICAgIGZvciAoY29uc3QgZiBvZiAocy5maWVsZHMgfHwgW10pKSB7XG4gICAgICAgICAgaWYgKGYudHlwZSA9PT0gJ3JlZmVyZW5jZScpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlZlR5cGVzID0gKGYucmVmZXJlbmNlLmxlbmd0aCA/IGYucmVmZXJlbmNlIDogW2YucmVmZXJlbmNlXSkubWFwKHIgPT4gci5uYW1lKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgYyBvZiB0aGlzLm1ldGFDb250ZXh0LmNvbnRhY3RhYmxlc1t0aGlzLmludGVncmF0aW9uQ29kZV0pIHtcbiAgICAgICAgICAgICAgaWYgKHJlZlR5cGVzLmluZGV4T2YoYy5yZXNvdXJjZVR5cGUgfHwgYy50eXBlKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWYuc3VnZ2VzdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgIGYuc3VnZ2VzdGlvbnMgPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IHRMYWJlbCA9IGMuZGlzcGxheU5hbWUgfHwgYy5uYW1lO1xuICAgICAgICAgICAgICAgIGlmIChjLnBob25lTnVtYmVycykge1xuICAgICAgICAgICAgICAgICAgdExhYmVsICs9ICgnIOKchicgKyBjLnBob25lTnVtYmVycy5tYXAocCA9PiBwLnBob25lTnVtYmVyKS5qb2luKCcsJykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmLnN1Z2dlc3Rpb25zLnB1c2goeyBcbiAgICAgICAgICAgICAgICAgIGlkOiBjLmV4dGVybmFsSWQgfHwgYy5pZGVudGlmaWVyIHx8IGMuaWQsIFxuICAgICAgICAgICAgICAgICAgbGFiZWw6IHRMYWJlbCwgXG4gICAgICAgICAgICAgICAgICB0eXBlOiBjLnJlc291cmNlVHlwZSB8fCBjLnR5cGVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCh0aGlzLmZpZWxkc01hcC5jb250YWN0YWJsZXMgfHwgW10pLmluZGV4T2YoZi5uYW1lKSAhPT0gLTEpIHsgLy8gZXZhbHVhdGUgdXNhYmlsaXR5P1xuICAgICAgICAgICAgICBmLmFsd2F5c1Zpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gaWYgKFxuICAgICAgICAgICAgLy8gICAhaGFzRGVmYXVsdENvbnRhY3QgJiYgdGhpcy5tZXRhQ29udGV4dC5kZWZhdWx0Q29udGFjdGFibGVzW3RoaXMuaW50ZWdyYXRpb25Db2RlXVxuICAgICAgICAgICAgLy8gICAmJiByZWZUeXBlcy5pbmRleE9mKHRoaXMubWV0YUNvbnRleHQuZGVmYXVsdENvbnRhY3RhYmxlc1t0aGlzLmludGVncmF0aW9uQ29kZV0udHlwZSkgIT09IC0xXG4gICAgICAgICAgICAvLyApIHtcbiAgICAgICAgICAgIC8vICAgdGhpcy5yZXNvdXJjZVtmLm5hbWVdID0gdGhpcy5tZXRhQ29udGV4dC5kZWZhdWx0Q29udGFjdGFibGVzW3RoaXMuaW50ZWdyYXRpb25Db2RlXTtcbiAgICAgICAgICAgIC8vICAgaGFzRGVmYXVsdENvbnRhY3QgPSB0cnVlO1xuICAgICAgICAgICAgLy8gfSBlbHNlIGlmICghaGFzRGVmYXVsdENvbnRhY3QgJiYgdGhpcy5maWVsZHNNYXAuY29udGFjdGFibGVzICYmIGYuc3VnZ2VzdGlvbnMgJiYgZi5zdWdnZXN0aW9ucy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIC8vICAgaWYgKHRoaXMuZmllbGRzTWFwLmNvbnRhY3RhYmxlcy5pbmRleE9mKGYubmFtZSkgIT09IC0xICYmICFmLmRlZmF1bHQpIHtcbiAgICAgICAgICAgIC8vICAgICBmLmRlZmF1bHQgPSBmLnN1Z2dlc3Rpb25zWzBdO1xuICAgICAgICAgICAgLy8gICAgIGhhc0RlZmF1bHRDb250YWN0ID0gdHJ1ZTtcbiAgICAgICAgICAgIC8vICAgfVxuICAgICAgICAgICAgLy8gfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5jb250YWN0c1N1Z2dlc3Rpb25zRG9uZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVRoZW1lKCkge1xuICAgIGNvbnN0IG1ldGFUaGVtZSA9IHRoaXMudGhlbWUgPT09ICdkYXJrJyA/IG1ldGFEYXJrIDogbWV0YUxpZ2h0O1xuICAgIGNvbnNvbGUubG9nKCdyZXNvdXJjZSBhcHBseSB0aGVtZScsIHRoaXMudGhlbWUpO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG1ldGFUaGVtZS5wcm9wZXJ0aWVzKSkge1xuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KGtleSwgbWV0YVRoZW1lLnByb3BlcnRpZXNba2V5XSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmb3JjZVVpVXBkYXRlKCkgeyAvLyBpT1Mgd2VidmlldyBkb2VzIG5vdCB1cGRhdGUgdGhlIFVJIGFmdGVyIGFzeWMgY2hhbmdlcy4gVGVtcCBmaXggOihcbiAgICAvLyB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgY29uc3QgZSA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudHMnKTtcbiAgICBlLmluaXRFdmVudCgnY2xpY2snLCB0cnVlLCBmYWxzZSk7XG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmRpc3BhdGNoRXZlbnQoZSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* @Author: Alexander.Vangelov@vonage.com
|
|
3
|
-
* @Date: 2019-09-19 17:35:28
|
|
4
|
-
* @Last Modified by: Alexander.Vangelov@vonage.com
|
|
5
|
-
* @Last Modified time: 2020-05-03 21:30:58
|
|
6
|
-
*/
|
|
7
|
-
import { Component, Input, ComponentFactoryResolver } from '@angular/core';
|
|
8
|
-
import { MetaResourceService } from '../services/metaResource';
|
|
9
|
-
import { MetaRefDialog } from '../refDialog';
|
|
10
|
-
import { MetaReferenceService } from '../services/metaReference';
|
|
11
|
-
// import { tMetaLayout } from '../definitions/tMetaLayout';
|
|
12
|
-
export class MetaResourceCard {
|
|
13
|
-
constructor(componentFactoryResolver, metaResource, referenceService) {
|
|
14
|
-
this.componentFactoryResolver = componentFactoryResolver;
|
|
15
|
-
this.metaResource = metaResource;
|
|
16
|
-
this.referenceService = referenceService;
|
|
17
|
-
}
|
|
18
|
-
ngOnInit() {
|
|
19
|
-
this.integrationCode = (this.resource.integration || this.resource.integrationCode || '').toLowerCase();
|
|
20
|
-
}
|
|
21
|
-
open(reference, model) {
|
|
22
|
-
if (!this.refDialogFactory) {
|
|
23
|
-
this.refDialogFactory = this.componentFactoryResolver.resolveComponentFactory(MetaRefDialog);
|
|
24
|
-
}
|
|
25
|
-
this.referenceService.openDialog(this.refDialogFactory, this.metaResource, this.integrationCode, reference, model, model && (reference.editable === false) // is preview mode
|
|
26
|
-
).subscribe((result) => {
|
|
27
|
-
console.log('dialog result', result);
|
|
28
|
-
// if (result && result.raw) {
|
|
29
|
-
// if (!this.parent[reference.type]) {
|
|
30
|
-
// this.parent[reference.type] = [];
|
|
31
|
-
// }
|
|
32
|
-
// this.parent[reference.type].push(result.raw);
|
|
33
|
-
// }
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
MetaResourceCard.decorators = [
|
|
38
|
-
{ type: Component, args: [{
|
|
39
|
-
selector: 'vgip-meta-resource-card',
|
|
40
|
-
template: "<div class=\"Vlt-card Vlt-bg-white\">\n\t<div class=\"Vlt-card__content Vlt-btn-on-hover\">\n\t\t<h5>{{model.Subject || model.subject || model.summary || model.title || model.CaseNumber || model.comment || model.body || model.name || model.topic || '...' }}</h5>\n\t\t<div style='font-size: 12px; line-height: 16px;'>\n\t\t\tCreated: <span class='Vlt-black'>{{model._vgis.createdDate | date:'mediumDate'}}</span>\n\t\t\tEdited: <span class='Vlt-black'>{{model._vgis.modifiedDate | date:'medium'}}</span>\n\t\t</div>\n\t\t<div class=\"Vlt-badge Vlt-badge--app Vlt-badge--purple Vlt-badge--small\">{{model._vgis.resourceType}}</div>\n\t\t<div class=\"Vlt-btn-group Vlt-btn-group--hover\">\n\t\t\t<a *ngIf='model._vgis.externalLink' attr.href='{{model._vgis.externalLink}}' target='_blank' rel='noopener' class=\"Vlt-btn Vlt-btn--tertiary Vlt-btn--icon\" aria-label='Open external'><svg style='margin-left: 0; margin-right: 0;'><use xlink:href=\"volta/volta-icons.svg#Vlt-icon-open\"/></svg></a>\n\t\t\t<button type='button' (click)='open(resource, model)' class=\"Vlt-btn Vlt-btn--tertiary Vlt-btn--icon\" aria-label='Edit'><svg style='margin-left: 0; margin-right: 0;'><use xlink:href=\"volta/volta-icons.svg#Vlt-icon-edit\"/></svg></button>\n\t\t</div>\n\t</div>\n</div>\n",
|
|
41
|
-
entryComponents: [
|
|
42
|
-
MetaRefDialog
|
|
43
|
-
],
|
|
44
|
-
styles: [".Vlt-card{margin-bottom:8px;padding:16px}.Vlt-card .Vlt-btn-group.Vlt-btn-group--hover{right:-8px}"]
|
|
45
|
-
},] }
|
|
46
|
-
];
|
|
47
|
-
MetaResourceCard.ctorParameters = () => [
|
|
48
|
-
{ type: ComponentFactoryResolver },
|
|
49
|
-
{ type: MetaResourceService },
|
|
50
|
-
{ type: MetaReferenceService }
|
|
51
|
-
];
|
|
52
|
-
MetaResourceCard.propDecorators = {
|
|
53
|
-
resource: [{ type: Input }],
|
|
54
|
-
model: [{ type: Input }]
|
|
55
|
-
};
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXRhLXVpL3NyYy9saWIvcmVzb3VyY2VDYXJkL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVqRSw0REFBNEQ7QUFVNUQsTUFBTSxPQUFPLGdCQUFnQjtJQU8zQixZQUNVLHdCQUFrRCxFQUNsRCxZQUFpQyxFQUNqQyxnQkFBc0M7UUFGdEMsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFzQjtJQUM3QyxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMxRyxDQUFDO0lBRUQsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFNO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUM5RjtRQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQzlCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFDaEYsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsS0FBSyxLQUFLLENBQUMsQ0FBQyxrQkFBa0I7U0FDM0QsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTtZQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNyQyw4QkFBOEI7WUFDOUIsd0NBQXdDO1lBQ3hDLHdDQUF3QztZQUN4QyxNQUFNO1lBQ04sa0RBQWtEO1lBQ2xELElBQUk7UUFDTixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OztZQXpDRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtnQkFDbkMsb3dDQUEwQjtnQkFFMUIsZUFBZSxFQUFFO29CQUNmLGFBQWE7aUJBQ2Q7O2FBQ0Y7OztZQWZrQyx3QkFBd0I7WUFFbEQsbUJBQW1CO1lBRW5CLG9CQUFvQjs7O3VCQWExQixLQUFLO29CQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQEF1dGhvcjogQWxleGFuZGVyLlZhbmdlbG92QHZvbmFnZS5jb20gXG4gKiBARGF0ZTogMjAxOS0wOS0xOSAxNzozNToyOCBcbiAqIEBMYXN0IE1vZGlmaWVkIGJ5OiBBbGV4YW5kZXIuVmFuZ2Vsb3ZAdm9uYWdlLmNvbVxuICogQExhc3QgTW9kaWZpZWQgdGltZTogMjAyMC0wNS0wMyAyMTozMDo1OFxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1ldGFSZXNvdXJjZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9tZXRhUmVzb3VyY2UnO1xuaW1wb3J0IHsgTWV0YVJlZkRpYWxvZyB9IGZyb20gJy4uL3JlZkRpYWxvZyc7XG5pbXBvcnQgeyBNZXRhUmVmZXJlbmNlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL21ldGFSZWZlcmVuY2UnO1xuXG4vLyBpbXBvcnQgeyB0TWV0YUxheW91dCB9IGZyb20gJy4uL2RlZmluaXRpb25zL3RNZXRhTGF5b3V0JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmdpcC1tZXRhLXJlc291cmNlLWNhcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlldy5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3R5bGUuc2NzcyddLFxuICBlbnRyeUNvbXBvbmVudHM6IFtcbiAgICBNZXRhUmVmRGlhbG9nXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTWV0YVJlc291cmNlQ2FyZCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHJlc291cmNlOiBhbnk7XG4gIEBJbnB1dCgpIG1vZGVsOiBhbnk7XG5cbiAgaW50ZWdyYXRpb25Db2RlOiBzdHJpbmc7XG4gIHJlZkRpYWxvZ0ZhY3Rvcnk6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHByaXZhdGUgbWV0YVJlc291cmNlOiBNZXRhUmVzb3VyY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVmZXJlbmNlU2VydmljZTogTWV0YVJlZmVyZW5jZVNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW50ZWdyYXRpb25Db2RlID0gKHRoaXMucmVzb3VyY2UuaW50ZWdyYXRpb24gfHwgdGhpcy5yZXNvdXJjZS5pbnRlZ3JhdGlvbkNvZGUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICBvcGVuKHJlZmVyZW5jZSwgbW9kZWw/KSB7XG4gICAgaWYgKCF0aGlzLnJlZkRpYWxvZ0ZhY3RvcnkpIHtcbiAgICAgIHRoaXMucmVmRGlhbG9nRmFjdG9yeSA9IHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KE1ldGFSZWZEaWFsb2cpO1xuICAgIH1cbiAgICB0aGlzLnJlZmVyZW5jZVNlcnZpY2Uub3BlbkRpYWxvZyhcbiAgICAgIHRoaXMucmVmRGlhbG9nRmFjdG9yeSwgdGhpcy5tZXRhUmVzb3VyY2UsIHRoaXMuaW50ZWdyYXRpb25Db2RlLCByZWZlcmVuY2UsIG1vZGVsLCBcbiAgICAgIG1vZGVsICYmIChyZWZlcmVuY2UuZWRpdGFibGUgPT09IGZhbHNlKSAvLyBpcyBwcmV2aWV3IG1vZGVcbiAgICApLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdkaWFsb2cgcmVzdWx0JywgcmVzdWx0KTtcbiAgICAgIC8vIGlmIChyZXN1bHQgJiYgcmVzdWx0LnJhdykge1xuICAgICAgLy8gICBpZiAoIXRoaXMucGFyZW50W3JlZmVyZW5jZS50eXBlXSkge1xuICAgICAgLy8gICAgIHRoaXMucGFyZW50W3JlZmVyZW5jZS50eXBlXSA9IFtdO1xuICAgICAgLy8gICB9XG4gICAgICAvLyAgIHRoaXMucGFyZW50W3JlZmVyZW5jZS50eXBlXS5wdXNoKHJlc3VsdC5yYXcpO1xuICAgICAgLy8gfVxuICAgIH0pO1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -1,34 +0,0 @@
|
|
|
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
|