@resolveio/client-lib-core 16.0.0 → 21.0.0
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/fesm2022/resolveio-client-lib-core.min.mjs +1 -0
- package/package.json +10 -8
- package/types/resolveio-client-lib-core.d.ts +1904 -0
- package/esm2022/lib/account-manager.service.mjs +0 -229
- package/esm2022/lib/auth/auth-guard.service.mjs +0 -174
- package/esm2022/lib/auth/auth-permissions.service.mjs +0 -23
- package/esm2022/lib/auth/auth.service.mjs +0 -251
- package/esm2022/lib/auth/auth365.component.mjs +0 -51
- package/esm2022/lib/auth/can-deactivate-guard.service.mjs +0 -13
- package/esm2022/lib/auth/enroll.component.mjs +0 -88
- package/esm2022/lib/auth/forgot-password.component.mjs +0 -89
- package/esm2022/lib/core.component.mjs +0 -404
- package/esm2022/lib/core.module.mjs +0 -176
- package/esm2022/lib/core.service.mjs +0 -88
- package/esm2022/lib/directive/focus.mjs +0 -24
- package/esm2022/lib/directive/scroll.mjs +0 -54
- package/esm2022/lib/home/home.component.mjs +0 -84
- package/esm2022/lib/logger/logger.component.mjs +0 -229
- package/esm2022/lib/models/app-status.model.mjs +0 -2
- package/esm2022/lib/models/collection-document.model.mjs +0 -2
- package/esm2022/lib/models/cron-job.model.mjs +0 -2
- package/esm2022/lib/models/dialog.model.mjs +0 -2
- package/esm2022/lib/models/file.model.mjs +0 -2
- package/esm2022/lib/models/log-method-latency.model.mjs +0 -2
- package/esm2022/lib/models/navbar-main-tab.model.mjs +0 -2
- package/esm2022/lib/models/pagination.model.mjs +0 -2
- package/esm2022/lib/models/permission.model.mjs +0 -2
- package/esm2022/lib/models/select-data-label.model.mjs +0 -2
- package/esm2022/lib/models/subscription.model.mjs +0 -2
- package/esm2022/lib/models/support-ticket.model.mjs +0 -2
- package/esm2022/lib/models/user-group.model.mjs +0 -2
- package/esm2022/lib/models/user.model.mjs +0 -2
- package/esm2022/lib/offline-db.mjs +0 -519
- package/esm2022/lib/offline-manager.service.mjs +0 -109
- package/esm2022/lib/pipes/domsanitizor.pipe.mjs +0 -29
- package/esm2022/lib/pipes/filter.pipe.mjs +0 -36
- package/esm2022/lib/pipes/json-parse.pipe.mjs +0 -29
- package/esm2022/lib/pipes/minus-currency.pipe.mjs +0 -16
- package/esm2022/lib/pipes/phone.pipe.mjs +0 -47
- package/esm2022/lib/pipes/pipe.module.mjs +0 -54
- package/esm2022/lib/pipes/reverse-list.pipe.mjs +0 -17
- package/esm2022/lib/pipes/titlecase.pipe.mjs +0 -22
- package/esm2022/lib/report-builder.permission.mjs +0 -13
- package/esm2022/lib/resolveio-class.mjs +0 -50
- package/esm2022/lib/shared/shared.module.mjs +0 -96
- package/esm2022/lib/socket-manager.service.mjs +0 -340
- package/esm2022/lib/socket.service.mjs +0 -200
- package/esm2022/lib/super-admin.permission.mjs +0 -9
- package/esm2022/lib/support-ticket/detail/support-ticket-detail.component.mjs +0 -211
- package/esm2022/lib/support-ticket/edit/support-ticket-edit.component.mjs +0 -131
- package/esm2022/lib/support-ticket/list/support-ticket-list.component.mjs +0 -142
- package/esm2022/lib/support-ticket/new/support-ticket-new.component.mjs +0 -121
- package/esm2022/lib/support-ticket/support-ticket.component.mjs +0 -67
- package/esm2022/lib/support-ticket/support-ticket.module.mjs +0 -50
- package/esm2022/lib/support-ticket/support-ticket.routing.mjs +0 -20
- package/esm2022/lib/support-ticket/support-ticket.service.mjs +0 -16
- package/esm2022/lib/token-manager.service.mjs +0 -25
- package/esm2022/lib/user-settings/settings/users-settings.component.mjs +0 -302
- package/esm2022/lib/user-settings/user-settings.component.mjs +0 -61
- package/esm2022/lib/user-settings/user-settings.module.mjs +0 -41
- package/esm2022/lib/user-settings/user-settings.permission.mjs +0 -10
- package/esm2022/lib/user-settings/user-settings.routing.mjs +0 -14
- package/esm2022/lib/user-settings/user-settings.service.mjs +0 -16
- package/esm2022/lib/util/action-name.helper.mjs +0 -9
- package/esm2022/lib/util/aws.service.mjs +0 -80
- package/esm2022/lib/util/common.helper.mjs +0 -133
- package/esm2022/lib/util/validation.service.mjs +0 -185
- package/esm2022/lib/util/window-resize.service.mjs +0 -38
- package/esm2022/lib/util/window.service.mjs +0 -16
- package/esm2022/lib/widgets/alert/alert.model.mjs +0 -2
- package/esm2022/lib/widgets/alert/alert.service.mjs +0 -79
- package/esm2022/lib/widgets/collapse-table/collapse-table.component.mjs +0 -83
- package/esm2022/lib/widgets/collapse-table/collapse-table.module.mjs +0 -34
- package/esm2022/lib/widgets/data-table/data-table.component.mjs +0 -84
- package/esm2022/lib/widgets/data-table/data-table.model.mjs +0 -2
- package/esm2022/lib/widgets/data-table/data-table.module.mjs +0 -41
- package/esm2022/lib/widgets/date-shortcut/date-shortcut.component.mjs +0 -198
- package/esm2022/lib/widgets/date-shortcut/date-shortcut.module.mjs +0 -32
- package/esm2022/lib/widgets/dialog/dialog.confirm.content.mjs +0 -67
- package/esm2022/lib/widgets/dialog/dialog.error.content.mjs +0 -60
- package/esm2022/lib/widgets/dialog/dialog.input.content.mjs +0 -200
- package/esm2022/lib/widgets/dialog/dialog.login.content.mjs +0 -354
- package/esm2022/lib/widgets/dialog/dialog.notify.content.mjs +0 -60
- package/esm2022/lib/widgets/dialog/dialog.register.content.mjs +0 -333
- package/esm2022/lib/widgets/dialog/dialog.select-array-objs.content.mjs +0 -203
- package/esm2022/lib/widgets/dialog/dialog.select-array.content.mjs +0 -310
- package/esm2022/lib/widgets/dialog/dialog.select-data-labels.content.mjs +0 -196
- package/esm2022/lib/widgets/dialog/dialog.select-datetime.content.mjs +0 -191
- package/esm2022/lib/widgets/dialog/dialog.select-with-buttons-url.content.mjs +0 -166
- package/esm2022/lib/widgets/dialog/dialog.service.mjs +0 -98
- package/esm2022/lib/widgets/file/file-upload.component.mjs +0 -433
- package/esm2022/lib/widgets/file/file-upload.module.mjs +0 -48
- package/esm2022/lib/widgets/form-button/form-button.component.mjs +0 -97
- package/esm2022/lib/widgets/form-button/form-button.module.mjs +0 -28
- package/esm2022/lib/widgets/navbar-main/navbar-main.component.mjs +0 -222
- package/esm2022/lib/widgets/navbar-module/navbar-module.component.mjs +0 -108
- package/esm2022/lib/widgets/navbar-module/navbar-module.model.mjs +0 -2
- package/esm2022/lib/widgets/responsive-button-group/responsive-button-group.component.mjs +0 -41
- package/esm2022/lib/widgets/responsive-button-group/responsive-button-group.module.mjs +0 -24
- package/esm2022/lib/widgets/scheduler/scheduler.component.mjs +0 -186
- package/esm2022/lib/widgets/scheduler/scheduler.module.mjs +0 -37
- package/esm2022/lib/widgets/sort-table/sort-table-header.component.mjs +0 -72
- package/esm2022/lib/widgets/sort-table/sort-table-ngfor.component.mjs +0 -49
- package/esm2022/lib/widgets/sort-table/sort-table.directive.mjs +0 -177
- package/esm2022/lib/widgets/sort-table/sort-table.module.mjs +0 -38
- package/esm2022/lib/widgets/user-role/user-role.component.mjs +0 -29
- package/esm2022/lib/widgets/user-role/user-role.module.mjs +0 -24
- package/esm2022/public_api.mjs +0 -91
- package/esm2022/resolveio-client-lib-core.mjs +0 -5
- package/fesm2022/resolveio-client-lib-core.mjs +0 -9019
- package/fesm2022/resolveio-client-lib-core.mjs.map +0 -1
- package/index.d.ts +0 -5
- package/lib/account-manager.service.d.ts +0 -41
- package/lib/auth/auth-guard.service.d.ts +0 -26
- package/lib/auth/auth-permissions.service.d.ts +0 -10
- package/lib/auth/auth.service.d.ts +0 -30
- package/lib/auth/auth365.component.d.ts +0 -20
- package/lib/auth/can-deactivate-guard.service.d.ts +0 -10
- package/lib/auth/enroll.component.d.ts +0 -28
- package/lib/auth/forgot-password.component.d.ts +0 -28
- package/lib/core.component.d.ts +0 -63
- package/lib/core.module.d.ts +0 -34
- package/lib/core.service.d.ts +0 -49
- package/lib/directive/focus.d.ts +0 -10
- package/lib/directive/scroll.d.ts +0 -20
- package/lib/home/home.component.d.ts +0 -28
- package/lib/logger/logger.component.d.ts +0 -37
- package/lib/models/app-status.model.d.ts +0 -4
- package/lib/models/collection-document.model.d.ts +0 -6
- package/lib/models/cron-job.model.d.ts +0 -13
- package/lib/models/dialog.model.d.ts +0 -23
- package/lib/models/file.model.d.ts +0 -9
- package/lib/models/log-method-latency.model.d.ts +0 -7
- package/lib/models/navbar-main-tab.model.d.ts +0 -14
- package/lib/models/pagination.model.d.ts +0 -17
- package/lib/models/permission.model.d.ts +0 -14
- package/lib/models/select-data-label.model.d.ts +0 -9
- package/lib/models/subscription.model.d.ts +0 -19
- package/lib/models/support-ticket.model.d.ts +0 -71
- package/lib/models/user-group.model.d.ts +0 -19
- package/lib/models/user.model.d.ts +0 -70
- package/lib/offline-db.d.ts +0 -28
- package/lib/offline-manager.service.d.ts +0 -23
- package/lib/pipes/domsanitizor.pipe.d.ts +0 -10
- package/lib/pipes/filter.pipe.d.ts +0 -12
- package/lib/pipes/json-parse.pipe.d.ts +0 -7
- package/lib/pipes/minus-currency.pipe.d.ts +0 -7
- package/lib/pipes/phone.pipe.d.ts +0 -7
- package/lib/pipes/pipe.module.d.ts +0 -13
- package/lib/pipes/reverse-list.pipe.d.ts +0 -6
- package/lib/pipes/titlecase.pipe.d.ts +0 -7
- package/lib/report-builder.permission.d.ts +0 -2
- package/lib/resolveio-class.d.ts +0 -26
- package/lib/shared/shared.module.d.ts +0 -17
- package/lib/socket-manager.service.d.ts +0 -36
- package/lib/socket.service.d.ts +0 -38
- package/lib/super-admin.permission.d.ts +0 -2
- package/lib/support-ticket/detail/support-ticket-detail.component.d.ts +0 -32
- package/lib/support-ticket/edit/support-ticket-edit.component.d.ts +0 -30
- package/lib/support-ticket/list/support-ticket-list.component.d.ts +0 -26
- package/lib/support-ticket/new/support-ticket-new.component.d.ts +0 -26
- package/lib/support-ticket/support-ticket.component.d.ts +0 -20
- package/lib/support-ticket/support-ticket.module.d.ts +0 -15
- package/lib/support-ticket/support-ticket.routing.d.ts +0 -3
- package/lib/support-ticket/support-ticket.service.d.ts +0 -9
- package/lib/token-manager.service.d.ts +0 -11
- package/lib/user-settings/settings/users-settings.component.d.ts +0 -54
- package/lib/user-settings/user-settings.component.d.ts +0 -20
- package/lib/user-settings/user-settings.module.d.ts +0 -12
- package/lib/user-settings/user-settings.permission.d.ts +0 -2
- package/lib/user-settings/user-settings.routing.d.ts +0 -3
- package/lib/user-settings/user-settings.service.d.ts +0 -9
- package/lib/util/action-name.helper.d.ts +0 -1
- package/lib/util/aws.service.d.ts +0 -16
- package/lib/util/common.helper.d.ts +0 -12
- package/lib/util/validation.service.d.ts +0 -88
- package/lib/util/window-resize.service.d.ts +0 -13
- package/lib/util/window.service.d.ts +0 -6
- package/lib/widgets/alert/alert.model.d.ts +0 -1
- package/lib/widgets/alert/alert.service.d.ts +0 -11
- package/lib/widgets/collapse-table/collapse-table.component.d.ts +0 -23
- package/lib/widgets/collapse-table/collapse-table.module.d.ts +0 -9
- package/lib/widgets/data-table/data-table.component.d.ts +0 -23
- package/lib/widgets/data-table/data-table.model.d.ts +0 -13
- package/lib/widgets/data-table/data-table.module.d.ts +0 -12
- package/lib/widgets/date-shortcut/date-shortcut.component.d.ts +0 -20
- package/lib/widgets/date-shortcut/date-shortcut.module.d.ts +0 -10
- package/lib/widgets/dialog/dialog.confirm.content.d.ts +0 -12
- package/lib/widgets/dialog/dialog.error.content.d.ts +0 -11
- package/lib/widgets/dialog/dialog.input.content.d.ts +0 -18
- package/lib/widgets/dialog/dialog.login.content.d.ts +0 -17
- package/lib/widgets/dialog/dialog.notify.content.d.ts +0 -11
- package/lib/widgets/dialog/dialog.register.content.d.ts +0 -13
- package/lib/widgets/dialog/dialog.select-array-objs.content.d.ts +0 -23
- package/lib/widgets/dialog/dialog.select-array.content.d.ts +0 -31
- package/lib/widgets/dialog/dialog.select-data-labels.content.d.ts +0 -22
- package/lib/widgets/dialog/dialog.select-datetime.content.d.ts +0 -21
- package/lib/widgets/dialog/dialog.select-with-buttons-url.content.d.ts +0 -25
- package/lib/widgets/dialog/dialog.service.d.ts +0 -21
- package/lib/widgets/file/file-upload.component.d.ts +0 -49
- package/lib/widgets/file/file-upload.module.d.ts +0 -14
- package/lib/widgets/form-button/form-button.component.d.ts +0 -15
- package/lib/widgets/form-button/form-button.module.d.ts +0 -9
- package/lib/widgets/navbar-main/navbar-main.component.d.ts +0 -52
- package/lib/widgets/navbar-module/navbar-module.component.d.ts +0 -24
- package/lib/widgets/navbar-module/navbar-module.model.d.ts +0 -13
- package/lib/widgets/responsive-button-group/responsive-button-group.component.d.ts +0 -17
- package/lib/widgets/responsive-button-group/responsive-button-group.module.d.ts +0 -8
- package/lib/widgets/scheduler/scheduler.component.d.ts +0 -50
- package/lib/widgets/scheduler/scheduler.module.d.ts +0 -11
- package/lib/widgets/sort-table/sort-table-header.component.d.ts +0 -23
- package/lib/widgets/sort-table/sort-table-ngfor.component.d.ts +0 -17
- package/lib/widgets/sort-table/sort-table.directive.d.ts +0 -48
- package/lib/widgets/sort-table/sort-table.module.d.ts +0 -11
- package/lib/widgets/user-role/user-role.component.d.ts +0 -10
- package/lib/widgets/user-role/user-role.module.d.ts +0 -8
- package/public_api.d.ts +0 -87
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export const SuperAdminModulePermission = {
|
|
2
|
-
name: 'super-admin',
|
|
3
|
-
views: [
|
|
4
|
-
{ link: '/super-admin/dashboard', label: 'Dashboard' },
|
|
5
|
-
{ link: '/super-admin/apm', label: 'APM' },
|
|
6
|
-
{ link: '/super-admin/monitor', label: 'Monitor' }
|
|
7
|
-
]
|
|
8
|
-
};
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwZXItYWRtaW4ucGVybWlzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9zdXBlci1hZG1pbi5wZXJtaXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUEwQjtJQUNoRSxJQUFJLEVBQUUsYUFBYTtJQUNuQixLQUFLLEVBQUU7UUFDTixFQUFDLElBQUksRUFBRSx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFDO1FBQ3BELEVBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUM7UUFDeEMsRUFBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBQztLQUNoRDtDQUNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2R1bGVQZXJtaXNzaW9uTW9kZWwgfSBmcm9tICcuL21vZGVscy9wZXJtaXNzaW9uLm1vZGVsJztcblxuZXhwb3J0IGNvbnN0IFN1cGVyQWRtaW5Nb2R1bGVQZXJtaXNzaW9uOiBNb2R1bGVQZXJtaXNzaW9uTW9kZWwgPSB7XG5cdG5hbWU6ICdzdXBlci1hZG1pbicsXG5cdHZpZXdzOiBbXG5cdFx0e2xpbms6ICcvc3VwZXItYWRtaW4vZGFzaGJvYXJkJywgbGFiZWw6ICdEYXNoYm9hcmQnfSxcblx0XHR7bGluazogJy9zdXBlci1hZG1pbi9hcG0nLCBsYWJlbDogJ0FQTSd9LFxuXHRcdHtsaW5rOiAnL3N1cGVyLWFkbWluL21vbml0b3InLCBsYWJlbDogJ01vbml0b3InfVxuXHRdXG59O1xuIl19
|
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
import { Component, ViewChild } from '@angular/core';
|
|
2
|
-
import { ActivatedRoute } from '@angular/router';
|
|
3
|
-
import { SupportTicketService } from '../support-ticket.service';
|
|
4
|
-
import { ProviderService, BaseComponent } from '../../resolveio-class';
|
|
5
|
-
import { Validators } from '@angular/forms';
|
|
6
|
-
import { DialogService } from '../../widgets/dialog/dialog.service';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/router";
|
|
9
|
-
import * as i2 from "../support-ticket.service";
|
|
10
|
-
import * as i3 from "../../resolveio-class";
|
|
11
|
-
import * as i4 from "../../widgets/dialog/dialog.service";
|
|
12
|
-
import * as i5 from "@ng-bootstrap/ng-bootstrap";
|
|
13
|
-
import * as i6 from "../../widgets/responsive-button-group/responsive-button-group.component";
|
|
14
|
-
import * as i7 from "@angular/common";
|
|
15
|
-
import * as i8 from "../../widgets/file/file-upload.component";
|
|
16
|
-
;
|
|
17
|
-
export class SupportTicketDetailComponent extends BaseComponent {
|
|
18
|
-
_route;
|
|
19
|
-
_sts;
|
|
20
|
-
_services;
|
|
21
|
-
_ds;
|
|
22
|
-
fileUpload;
|
|
23
|
-
subscription$ = [];
|
|
24
|
-
id;
|
|
25
|
-
data;
|
|
26
|
-
files = [];
|
|
27
|
-
constructor(_route, _sts, _services, _ds) {
|
|
28
|
-
super(_services);
|
|
29
|
-
this._route = _route;
|
|
30
|
-
this._sts = _sts;
|
|
31
|
-
this._services = _services;
|
|
32
|
-
this._ds = _ds;
|
|
33
|
-
}
|
|
34
|
-
ngOnInit() {
|
|
35
|
-
this.id = this._route.snapshot.params['id'];
|
|
36
|
-
this._sts.setSelectedSupportTicket(this.id);
|
|
37
|
-
this._services._socket.call('supportGetSupportTicketWithId', this.id, (err, res) => {
|
|
38
|
-
if (!res) {
|
|
39
|
-
this._services._router.navigateByUrl('/support-ticket/list');
|
|
40
|
-
this._ds.error('Could not find support ticket');
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
this.data = res;
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
ngOnDestroy() {
|
|
47
|
-
this.subscription$.forEach(sub => {
|
|
48
|
-
sub.unsubscribe();
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
onFileAdded(file) {
|
|
52
|
-
this.data.files.push(file._id);
|
|
53
|
-
this._services._socket.call('supportUpdateSupportTicket', this.data, (err, res) => {
|
|
54
|
-
if (err || !res) {
|
|
55
|
-
this._ds.error('Could not update support ticket files');
|
|
56
|
-
this._services._socket.call('insertErrorLog', 'support-ticket-detail - update support-ticket files add', [
|
|
57
|
-
this.data.files, err
|
|
58
|
-
]);
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
// this._services._alert.setAlert('info', 'Sending email(s).');
|
|
62
|
-
// this._services._socket.callSupport('sendSupportTicketModifiedEmail', this.data, this.data.files, (errEmail, resEmail) => {
|
|
63
|
-
// if (errEmail || !resEmail) {
|
|
64
|
-
// this._ds.error('Could not email support ticket');
|
|
65
|
-
// this._services._socket.call('insertErrorLog', 'support-ticket-detail - email support-ticket', [
|
|
66
|
-
// {prop: 'status', data: this.data.status}, errEmail
|
|
67
|
-
// ]);
|
|
68
|
-
// }
|
|
69
|
-
// else {
|
|
70
|
-
// this._services._alert.setAlert('success', 'Support Ticket email has been sent');
|
|
71
|
-
// }
|
|
72
|
-
// });
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
onFilesRemoved(file) {
|
|
77
|
-
this._ds.confirm('Are you sure you want to remove a file? This will email all current watchers?').then(yes => {
|
|
78
|
-
if (this.data.files.indexOf(file._id) !== -1) {
|
|
79
|
-
this.data.files.splice(this.data.files.indexOf(file._id), 1);
|
|
80
|
-
this._services._socket.call('supportUpdateSupportTicket', this.data, (err, res) => {
|
|
81
|
-
if (err || !res) {
|
|
82
|
-
this._ds.error('Could not update support-ticket files');
|
|
83
|
-
this._services._socket.call('insertErrorLog', 'support-ticket-detail - update files remove', [
|
|
84
|
-
{ prop: 'files', data: this.data.files }, err
|
|
85
|
-
]);
|
|
86
|
-
}
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
}, () => { });
|
|
90
|
-
}
|
|
91
|
-
edit() {
|
|
92
|
-
this._services._router.navigateByUrl('/support-ticket/edit/' + this.id);
|
|
93
|
-
}
|
|
94
|
-
newMessage() {
|
|
95
|
-
this._ds.input('Input Message', [
|
|
96
|
-
{
|
|
97
|
-
label: 'Message',
|
|
98
|
-
form: 'message',
|
|
99
|
-
data: '',
|
|
100
|
-
validators: [Validators.required],
|
|
101
|
-
validatorErrors: ['required'],
|
|
102
|
-
validatorMsg: ['Message is required'],
|
|
103
|
-
required: true,
|
|
104
|
-
type: 'textarea'
|
|
105
|
-
}
|
|
106
|
-
]).then(close => {
|
|
107
|
-
this.data.messages.push({
|
|
108
|
-
message: close.message.value,
|
|
109
|
-
id_user: this._services._account.getUser()._id,
|
|
110
|
-
user: this._services._account.getUser().fullname,
|
|
111
|
-
date: new Date(),
|
|
112
|
-
type: 'Client'
|
|
113
|
-
});
|
|
114
|
-
this._services._socket.call('supportUpdateSupportTicket', this.data, (err, res) => {
|
|
115
|
-
if (res) {
|
|
116
|
-
// this._services._alert.setAlert('success', 'Support ticket has been updated');
|
|
117
|
-
// this._services._socket.callSupport('sendSupportTicketModifiedEmail', this.data, this.data.files, (errEmail, resEmail) => {
|
|
118
|
-
// if (errEmail || !resEmail) {
|
|
119
|
-
// this._ds.error('Could not email support ticket');
|
|
120
|
-
// this._services._socket.call('insertErrorLog', 'support-ticket-detail - email support-ticket', [
|
|
121
|
-
// {prop: 'status', data: this.data.status}, errEmail
|
|
122
|
-
// ]);
|
|
123
|
-
// }
|
|
124
|
-
// else {
|
|
125
|
-
// this._services._alert.setAlert('success', 'Support Ticket email has been sent');
|
|
126
|
-
// }
|
|
127
|
-
// });
|
|
128
|
-
}
|
|
129
|
-
else {
|
|
130
|
-
this._services._socket.call('insertErrorLog', 'Support Ticket Detail - Add Message');
|
|
131
|
-
this._ds.error('Support ticket could not update');
|
|
132
|
-
}
|
|
133
|
-
});
|
|
134
|
-
}, () => { });
|
|
135
|
-
}
|
|
136
|
-
editMessage(index) {
|
|
137
|
-
let message = this.data.messages[index];
|
|
138
|
-
this._ds.input('Input Message', [
|
|
139
|
-
{
|
|
140
|
-
label: 'Message',
|
|
141
|
-
form: 'message',
|
|
142
|
-
data: message.message,
|
|
143
|
-
validators: [Validators.required],
|
|
144
|
-
validatorErrors: ['required'],
|
|
145
|
-
validatorMsg: ['Message is required'],
|
|
146
|
-
required: true,
|
|
147
|
-
type: 'textarea'
|
|
148
|
-
}
|
|
149
|
-
]).then(close => {
|
|
150
|
-
message.message = close.message.value;
|
|
151
|
-
this._services._socket.call('supportUpdateSupportTicket', this.data, (err, res) => {
|
|
152
|
-
if (res) {
|
|
153
|
-
// this._services._alert.setAlert('success', 'Support ticket has been updated');
|
|
154
|
-
// this._services._socket.callSupport('sendSupportTicketModifiedEmail', this.data, this.data.files, (errEmail, resEmail) => {
|
|
155
|
-
// if (errEmail || !resEmail) {
|
|
156
|
-
// this._ds.error('Could not email support ticket');
|
|
157
|
-
// this._services._socket.call('insertErrorLog', 'support-ticket-detail - email support-ticket', [
|
|
158
|
-
// {prop: 'status', data: this.data.status}, errEmail
|
|
159
|
-
// ]);
|
|
160
|
-
// }
|
|
161
|
-
// else {
|
|
162
|
-
// this._services._alert.setAlert('success', 'Support Ticket email has been sent');
|
|
163
|
-
// }
|
|
164
|
-
// });
|
|
165
|
-
}
|
|
166
|
-
else {
|
|
167
|
-
this._services._socket.call('insertErrorLog', 'Support Ticket Detail - Add Message');
|
|
168
|
-
this._ds.error('Support ticket could not update');
|
|
169
|
-
}
|
|
170
|
-
});
|
|
171
|
-
}, () => { });
|
|
172
|
-
}
|
|
173
|
-
deleteMessage(index) {
|
|
174
|
-
this._ds.confirm('Are you sure you want to remove this message?').then(() => {
|
|
175
|
-
this.data.messages.splice(index, 1);
|
|
176
|
-
this._services._socket.call('supportUpdateSupportTicket', this.data, (err, res) => {
|
|
177
|
-
if (res) {
|
|
178
|
-
// this._services._alert.setAlert('success', 'Support ticket has been updated');
|
|
179
|
-
// this._services._socket.callSupport('sendSupportTicketModifiedEmail', this.data, this.data.files, (errEmail, resEmail) => {
|
|
180
|
-
// if (errEmail || !resEmail) {
|
|
181
|
-
// this._ds.error('Could not email support ticket');
|
|
182
|
-
// this._services._socket.call('insertErrorLog', 'support-ticket-detail - email support-ticket', [
|
|
183
|
-
// {prop: 'status', data: this.data.status}, errEmail
|
|
184
|
-
// ]);
|
|
185
|
-
// }
|
|
186
|
-
// else {
|
|
187
|
-
// this._services._alert.setAlert('success', 'Support Ticket email has been sent');
|
|
188
|
-
// }
|
|
189
|
-
// });
|
|
190
|
-
}
|
|
191
|
-
else {
|
|
192
|
-
this._services._socket.call('insertErrorLog', 'Support Ticket Detail - Add Message');
|
|
193
|
-
this._ds.error('Support ticket could not update');
|
|
194
|
-
}
|
|
195
|
-
});
|
|
196
|
-
}, () => { });
|
|
197
|
-
}
|
|
198
|
-
isMyMessage(message) {
|
|
199
|
-
return this._services._account.getUser()._id === message.id_user;
|
|
200
|
-
}
|
|
201
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SupportTicketDetailComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.SupportTicketService }, { token: i3.ProviderService }, { token: i4.DialogService }], target: i0.ɵɵFactoryTarget.Component });
|
|
202
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SupportTicketDetailComponent, selector: "ng-component", providers: [ProviderService], viewQueries: [{ propertyName: "fileUpload", first: true, predicate: ["fileUpload"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<style>\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n\n ngb-accordion {\n width: 100%;\n }\n\n dl {\n margin-bottom: 0px;\n }\n\n .selected {\n background-color: lightblue;\n }\n</style>\n\n<div class=\"col-lg-12\" *ngIf=\"data\">\n <div class=\"row\">\n <ngb-accordion #acc=\"ngbAccordion\" activeIds=\"supportTicketInfo, supportTicketMessages, files\">\n <ngb-panel id=\"supportTicketInfo\">\n <ng-template ngbPanelTitle>\n <div> \n <label class=\"label-accordion\">Support Ticket Info</label>\n <i *ngIf=\"!acc.activeIds.includes('supportTicketInfo')\" class=\"fa fa-plus float-end\" aria-hidden=\"true\"></i>\n <i *ngIf=\"acc.activeIds.includes('supportTicketInfo')\" class=\"fa fa-minus float-end\" aria-hidden=\"true\"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class=\"card\">\n <div class=\"card-header\"><b>General Info</b></div>\n <div class=\"card-body\">\n <div class=\"row\">\n <div class=\"col-lg-4\">\n <dl>\n <dt>Support Ticket #</dt>\n <dd>{{data.support_ticket_number | number}}</dd>\n <dt>Date Created</dt>\n <dd>{{data.date_created | date: 'short'}}</dd>\n </dl>\n </div>\n <div class=\"col-lg-4\">\n <dl>\n <dt>Type</dt>\n <dd>{{data.type}}</dd>\n <dt>User</dt>\n <dd>{{data.user_created}}</dd>\n </dl>\n </div>\n <div class=\"col-lg-4\">\n <dl>\n <dt>Status</dt>\n <dd>{{ data.status }}</dd>\n </dl>\n </div>\n </div>\n </div>\n </div>\n <div class=\"card\">\n <div class=\"card-header\"><b>Problem Description</b></div>\n <div class=\"card-body\">\n <pre>{{data.issue}}</pre>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n <ngb-panel id=\"supportTicketMessages\" *ngIf=\"data\">\n <ng-template ngbPanelTitle>\n <div> \n <label class=\"label-accordion\">Messages</label>\n <i *ngIf=\"!acc.activeIds.includes('supportTicketMessages')\" class=\"fa fa-plus float-end\" aria-hidden=\"true\"></i>\n <i *ngIf=\"acc.activeIds.includes('supportTicketMessages')\" class=\"fa fa-minus float-end\" aria-hidden=\"true\"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class=\"row\">\n <div class=\"col-lg-12\">\n <div class=\"card\" *ngFor=\"let message of data.messages; let i = index;\">\n <div class=\"card-header\"><b>User: {{message.user}} - Date: {{message.date | date : 'short'}}</b></div>\n <div class=\"card-body\" [ngClass]=\"[message.type === 'ResolveIO' ? 'selected' : '']\">\n <div class=\"row\" style=\"width: 100%\">\n <div class=\"col-lg-10\">\n <pre>{{message.message}}</pre>\n </div>\n <div class=\"col-lg-2\">\n <responsive-button-group collapseSize=\"900\">\n <button type=\"button\" class=\"btn btn-warning\" (click)=\"editMessage(i)\" *ngIf=\"isMyMessage(message)\">Edit</button>\n <button type=\"button\" class=\"btn btn-danger\" (click)=\"deleteMessage(i)\" *ngIf=\"isMyMessage(message)\">Delete</button>\n </responsive-button-group>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"row\" style=\"margin-top: 10px;\">\n <div class=\"col-lg-12\">\n <button type=\"button\" class=\"btn btn-success\" (click)=\"newMessage()\">New Message</button>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n <ngb-panel id=\"files\">\n\t\t\t\t<ng-template ngbPanelTitle>\n\t\t\t\t\t<div> \n\t\t\t\t\t\t<label class=\"label-accordion\">Support Ticket Files</label>\n\t\t\t\t\t\t<i *ngIf=\"!acc.activeIds.includes('files')\" class=\"fa fa-plus float-end\" aria-hidden=\"true\"></i>\n\t\t\t\t\t\t<i *ngIf=\"acc.activeIds.includes('files')\" class=\"fa fa-minus float-end\" aria-hidden=\"true\"></i>\n\t\t\t\t\t</div>\n\t\t\t\t</ng-template>\n\t\t\t\t<ng-template ngbPanelContent>\n\t\t\t\t\t<file-upload #fileUpload (fileAdded)=\"onFileAdded($event)\" (fileRemoved)=\"onFilesRemoved($event)\" [files]=\"files\" [allowDelete]=\"true\" [allowReplace]=\"true\"></file-upload>\n\t\t\t\t</ng-template>\n\t\t\t</ngb-panel>\n </ngb-accordion>\n </div>\n <div class=\"row\" style=\"padding-top: 15px;\">\n <responsive-button-group collapseSize=\"900\">\n <button class=\"btn btn-warning\" type=\"button\" (click)=\"edit()\">Edit Support Ticket</button>\n </responsive-button-group>\n </div>\n</div>\n ", styles: ["\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n\n ngb-accordion {\n width: 100%;\n }\n\n dl {\n margin-bottom: 0px;\n }\n\n .selected {\n background-color: lightblue;\n }\n"], dependencies: [{ kind: "component", type: i5.NgbAccordion, selector: "ngb-accordion", inputs: ["animation", "activeIds", "closeOthers", "destroyOnHide", "type"], outputs: ["panelChange", "shown", "hidden"], exportAs: ["ngbAccordion"] }, { kind: "directive", type: i5.NgbPanel, selector: "ngb-panel", inputs: ["disabled", "id", "title", "type", "cardClass"], outputs: ["shown", "hidden"] }, { kind: "directive", type: i5.NgbPanelTitle, selector: "ng-template[ngbPanelTitle]" }, { kind: "directive", type: i5.NgbPanelContent, selector: "ng-template[ngbPanelContent]" }, { kind: "component", type: i6.ResponsiveButtonGroupComponent, selector: "responsive-button-group", inputs: ["collapseSize"] }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.FileUploadComponent, selector: "file-upload", inputs: ["files", "allowDelete", "allowReplace", "showFileUpload", "fileType"], outputs: ["filesChanged", "fileAdded", "fileRemoved"] }, { kind: "pipe", type: i7.DecimalPipe, name: "number" }, { kind: "pipe", type: i7.DatePipe, name: "date" }] });
|
|
203
|
-
}
|
|
204
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SupportTicketDetailComponent, decorators: [{
|
|
205
|
-
type: Component,
|
|
206
|
-
args: [{ providers: [ProviderService], template: "<style>\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n\n ngb-accordion {\n width: 100%;\n }\n\n dl {\n margin-bottom: 0px;\n }\n\n .selected {\n background-color: lightblue;\n }\n</style>\n\n<div class=\"col-lg-12\" *ngIf=\"data\">\n <div class=\"row\">\n <ngb-accordion #acc=\"ngbAccordion\" activeIds=\"supportTicketInfo, supportTicketMessages, files\">\n <ngb-panel id=\"supportTicketInfo\">\n <ng-template ngbPanelTitle>\n <div> \n <label class=\"label-accordion\">Support Ticket Info</label>\n <i *ngIf=\"!acc.activeIds.includes('supportTicketInfo')\" class=\"fa fa-plus float-end\" aria-hidden=\"true\"></i>\n <i *ngIf=\"acc.activeIds.includes('supportTicketInfo')\" class=\"fa fa-minus float-end\" aria-hidden=\"true\"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class=\"card\">\n <div class=\"card-header\"><b>General Info</b></div>\n <div class=\"card-body\">\n <div class=\"row\">\n <div class=\"col-lg-4\">\n <dl>\n <dt>Support Ticket #</dt>\n <dd>{{data.support_ticket_number | number}}</dd>\n <dt>Date Created</dt>\n <dd>{{data.date_created | date: 'short'}}</dd>\n </dl>\n </div>\n <div class=\"col-lg-4\">\n <dl>\n <dt>Type</dt>\n <dd>{{data.type}}</dd>\n <dt>User</dt>\n <dd>{{data.user_created}}</dd>\n </dl>\n </div>\n <div class=\"col-lg-4\">\n <dl>\n <dt>Status</dt>\n <dd>{{ data.status }}</dd>\n </dl>\n </div>\n </div>\n </div>\n </div>\n <div class=\"card\">\n <div class=\"card-header\"><b>Problem Description</b></div>\n <div class=\"card-body\">\n <pre>{{data.issue}}</pre>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n <ngb-panel id=\"supportTicketMessages\" *ngIf=\"data\">\n <ng-template ngbPanelTitle>\n <div> \n <label class=\"label-accordion\">Messages</label>\n <i *ngIf=\"!acc.activeIds.includes('supportTicketMessages')\" class=\"fa fa-plus float-end\" aria-hidden=\"true\"></i>\n <i *ngIf=\"acc.activeIds.includes('supportTicketMessages')\" class=\"fa fa-minus float-end\" aria-hidden=\"true\"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class=\"row\">\n <div class=\"col-lg-12\">\n <div class=\"card\" *ngFor=\"let message of data.messages; let i = index;\">\n <div class=\"card-header\"><b>User: {{message.user}} - Date: {{message.date | date : 'short'}}</b></div>\n <div class=\"card-body\" [ngClass]=\"[message.type === 'ResolveIO' ? 'selected' : '']\">\n <div class=\"row\" style=\"width: 100%\">\n <div class=\"col-lg-10\">\n <pre>{{message.message}}</pre>\n </div>\n <div class=\"col-lg-2\">\n <responsive-button-group collapseSize=\"900\">\n <button type=\"button\" class=\"btn btn-warning\" (click)=\"editMessage(i)\" *ngIf=\"isMyMessage(message)\">Edit</button>\n <button type=\"button\" class=\"btn btn-danger\" (click)=\"deleteMessage(i)\" *ngIf=\"isMyMessage(message)\">Delete</button>\n </responsive-button-group>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"row\" style=\"margin-top: 10px;\">\n <div class=\"col-lg-12\">\n <button type=\"button\" class=\"btn btn-success\" (click)=\"newMessage()\">New Message</button>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n <ngb-panel id=\"files\">\n\t\t\t\t<ng-template ngbPanelTitle>\n\t\t\t\t\t<div> \n\t\t\t\t\t\t<label class=\"label-accordion\">Support Ticket Files</label>\n\t\t\t\t\t\t<i *ngIf=\"!acc.activeIds.includes('files')\" class=\"fa fa-plus float-end\" aria-hidden=\"true\"></i>\n\t\t\t\t\t\t<i *ngIf=\"acc.activeIds.includes('files')\" class=\"fa fa-minus float-end\" aria-hidden=\"true\"></i>\n\t\t\t\t\t</div>\n\t\t\t\t</ng-template>\n\t\t\t\t<ng-template ngbPanelContent>\n\t\t\t\t\t<file-upload #fileUpload (fileAdded)=\"onFileAdded($event)\" (fileRemoved)=\"onFilesRemoved($event)\" [files]=\"files\" [allowDelete]=\"true\" [allowReplace]=\"true\"></file-upload>\n\t\t\t\t</ng-template>\n\t\t\t</ngb-panel>\n </ngb-accordion>\n </div>\n <div class=\"row\" style=\"padding-top: 15px;\">\n <responsive-button-group collapseSize=\"900\">\n <button class=\"btn btn-warning\" type=\"button\" (click)=\"edit()\">Edit Support Ticket</button>\n </responsive-button-group>\n </div>\n</div>\n " }]
|
|
207
|
-
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.SupportTicketService }, { type: i3.ProviderService }, { type: i4.DialogService }]; }, propDecorators: { fileUpload: [{
|
|
208
|
-
type: ViewChild,
|
|
209
|
-
args: ['fileUpload', { static: true }]
|
|
210
|
-
}] } });
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydC10aWNrZXQtZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9zdXBwb3J0LXRpY2tldC9kZXRhaWwvc3VwcG9ydC10aWNrZXQtZGV0YWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9zdXBwb3J0LXRpY2tldC9kZXRhaWwvc3VwcG9ydC10aWNrZXQtZGV0YWlsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7Ozs7O0FBQ2hCLENBQUM7QUFPckQsTUFBTSxPQUFPLDRCQUE2QixTQUFRLGFBQWE7SUFXMUM7SUFBZ0M7SUFBb0M7SUFBb0M7SUFUbkYsVUFBVSxDQUFDO0lBRXBELGFBQWEsR0FBbUIsRUFBRSxDQUFDO0lBRW5DLEVBQUUsQ0FBUztJQUNYLElBQUksQ0FBcUI7SUFFekIsS0FBSyxHQUFnQixFQUFFLENBQUM7SUFFeEIsWUFBb0IsTUFBc0IsRUFBVSxJQUEwQixFQUFVLFNBQTBCLEVBQVUsR0FBa0I7UUFDN0ksS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBREUsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFzQjtR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RyxFQUFFLEdBQUcsRUFBRSxFQUFFO2dCQUNqRixJQUFJLEdBQUcsRUFBRTtvQkFDUixnRkFBZ0Y7b0JBRWhGLDZIQUE2SDtvQkFDN0gsZ0NBQWdDO29CQUNoQyxzREFBc0Q7b0JBQ3RELG9HQUFvRztvQkFDcEcsd0RBQXdEO29CQUN4RCxRQUFRO29CQUNSLEtBQUs7b0JBQ0wsVUFBVTtvQkFDVixxRkFBcUY7b0JBQ3JGLEtBQUs7b0JBQ0wsTUFBTTtpQkFDTjtxQkFDSTtvQkFDSixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUscUNBQXFDLENBQUMsQ0FBQztvQkFDckYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQztpQkFDbEQ7WUFDRixDQUFDLENBQUMsQ0FBQztRQUNKLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztJQUNkLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBTztRQUNsQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsS0FBSyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQ2xFLENBQUM7d0dBek1XLDRCQUE0Qjs0RkFBNUIsNEJBQTRCLHVDQUo3QixDQUFDLGVBQWUsQ0FBQyx5S0NYN0IsODhNQXFJSTs7NEZEdEhTLDRCQUE0QjtrQkFMeEMsU0FBUztnQ0FDRSxDQUFDLGVBQWUsQ0FBQztrTUFNYSxVQUFVO3NCQUFsRCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1cHBvcnRUaWNrZXRTZXJ2aWNlIH0gZnJvbSAnLi4vc3VwcG9ydC10aWNrZXQuc2VydmljZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFByb3ZpZGVyU2VydmljZSwgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3Jlc29sdmVpby1jbGFzcyc7XG5pbXBvcnQgeyBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3VwcG9ydFRpY2tldE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3N1cHBvcnQtdGlja2V0Lm1vZGVsJztcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi93aWRnZXRzL2RpYWxvZy9kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBGaWxlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmlsZS5tb2RlbCc7O1xuXG5AQ29tcG9uZW50KHtcblx0cHJvdmlkZXJzOiBbUHJvdmlkZXJTZXJ2aWNlXSxcblx0dGVtcGxhdGVVcmw6ICcuL3N1cHBvcnQtdGlja2V0LWRldGFpbC5jb21wb25lbnQuaHRtbCdcbn0pXG5cbmV4cG9ydCBjbGFzcyBTdXBwb3J0VGlja2V0RGV0YWlsQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHsgXG5cblx0QFZpZXdDaGlsZCgnZmlsZVVwbG9hZCcsIHtzdGF0aWM6IHRydWV9KSBmaWxlVXBsb2FkO1xuXG5cdHN1YnNjcmlwdGlvbiQ6IFN1YnNjcmlwdGlvbltdID0gW107XG5cblx0aWQ6IHN0cmluZztcblx0ZGF0YTogU3VwcG9ydFRpY2tldE1vZGVsO1xuXG5cdGZpbGVzOiBGaWxlTW9kZWxbXSA9IFtdO1xuXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgX3JvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJpdmF0ZSBfc3RzOiBTdXBwb3J0VGlja2V0U2VydmljZSwgcHJpdmF0ZSBfc2VydmljZXM6IFByb3ZpZGVyU2VydmljZSwgcHJpdmF0ZSBfZHM6IERpYWxvZ1NlcnZpY2UpIHtcblx0XHRzdXBlcihfc2VydmljZXMpO1xuXHR9XG5cdFx0XG5cdG5nT25Jbml0KCkge1xuXHRcdHRoaXMuaWQgPSB0aGlzLl9yb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2lkJ107XG5cdFx0dGhpcy5fc3RzLnNldFNlbGVjdGVkU3VwcG9ydFRpY2tldCh0aGlzLmlkKTtcblxuXHRcdHRoaXMuX3NlcnZpY2VzLl9zb2NrZXQuY2FsbCgnc3VwcG9ydEdldFN1cHBvcnRUaWNrZXRXaXRoSWQnLCB0aGlzLmlkLCAoZXJyLCByZXMpID0+IHtcblx0XHRcdGlmICghcmVzKSB7XG5cdFx0XHRcdHRoaXMuX3NlcnZpY2VzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgnL3N1cHBvcnQtdGlja2V0L2xpc3QnKTtcblx0XHRcdFx0dGhpcy5fZHMuZXJyb3IoJ0NvdWxkIG5vdCBmaW5kIHN1cHBvcnQgdGlja2V0Jyk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdFxuXHRcdFx0dGhpcy5kYXRhID0gcmVzO1xuXHRcdH0pO1xuXHR9XG5cblx0bmdPbkRlc3Ryb3koKSB7XG5cdFx0dGhpcy5zdWJzY3JpcHRpb24kLmZvckVhY2goc3ViID0+IHtcblx0XHRcdHN1Yi51bnN1YnNjcmliZSgpO1xuXHRcdH0pO1xuXHR9XG5cblx0b25GaWxlQWRkZWQoZmlsZTogRmlsZU1vZGVsKSB7XHRcblx0XHR0aGlzLmRhdGEuZmlsZXMucHVzaChmaWxlLl9pZCk7XG5cblx0XHR0aGlzLl9zZXJ2aWNlcy5fc29ja2V0LmNhbGwoJ3N1cHBvcnRVcGRhdGVTdXBwb3J0VGlja2V0JywgdGhpcy5kYXRhLCAoZXJyLCByZXMpID0+IHtcblx0XHRcdGlmIChlcnIgfHwgIXJlcykge1xuXHRcdFx0XHR0aGlzLl9kcy5lcnJvcignQ291bGQgbm90IHVwZGF0ZSBzdXBwb3J0IHRpY2tldCBmaWxlcycpO1xuXHRcdFx0XHR0aGlzLl9zZXJ2aWNlcy5fc29ja2V0LmNhbGwoJ2luc2VydEVycm9yTG9nJywgJ3N1cHBvcnQtdGlja2V0LWRldGFpbCAtIHVwZGF0ZSBzdXBwb3J0LXRpY2tldCBmaWxlcyBhZGQnLCBbXG5cdFx0XHRcdFx0dGhpcy5kYXRhLmZpbGVzLCBlcnJcblx0XHRcdFx0XSk7XG5cdFx0XHR9XG5cdFx0XHRcblx0XHRcdGVsc2Uge1xuXHRcdFx0XHQvLyB0aGlzLl9zZXJ2aWNlcy5fYWxlcnQuc2V0QWxlcnQoJ2luZm8nLCAnU2VuZGluZyBlbWFpbChzKS4nKTtcblxuXHRcdFx0XHQvLyB0aGlzLl9zZXJ2aWNlcy5fc29ja2V0LmNhbGxTdXBwb3J0KCdzZW5kU3VwcG9ydFRpY2tldE1vZGlmaWVkRW1haWwnLCB0aGlzLmRhdGEsIHRoaXMuZGF0YS5maWxlcywgKGVyckVtYWlsLCByZXNFbWFpbCkgPT4ge1xuXHRcdFx0XHQvLyBcdGlmIChlcnJFbWFpbCB8fCAhcmVzRW1haWwpIHtcblx0XHRcdFx0Ly8gXHRcdHRoaXMuX2RzLmVycm9yKCdDb3VsZCBub3QgZW1haWwgc3VwcG9ydCB0aWNrZXQnKTtcblx0XHRcdFx0Ly8gXHRcdHRoaXMuX3NlcnZpY2VzLl9zb2NrZXQuY2FsbCgnaW5zZXJ0RXJyb3JMb2cnLCAnc3VwcG9ydC10aWNrZXQtZGV0YWlsIC0gZW1haWwgc3VwcG9ydC10aWNrZXQnLCBbXG5cdFx0XHRcdC8vIFx0XHRcdHtwcm9wOiAnc3RhdHVzJywgZGF0YTogdGhpcy5kYXRhLnN0YXR1c30sIGVyckVtYWlsXG5cdFx0XHRcdC8vIFx0XHRdKTtcblx0XHRcdFx0Ly8gXHR9XG5cdFx0XHRcdC8vIFx0ZWxzZSB7XG5cdFx0XHRcdC8vIFx0XHR0aGlzLl9zZXJ2aWNlcy5fYWxlcnQuc2V0QWxlcnQoJ3N1Y2Nlc3MnLCAnU3VwcG9ydCBUaWNrZXQgZW1haWwgaGFzIGJlZW4gc2VudCcpO1xuXHRcdFx0XHQvLyBcdH1cblx0XHRcdFx0Ly8gfSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRvbkZpbGVzUmVtb3ZlZChmaWxlOiBGaWxlTW9kZWwpIHtcblx0XHR0aGlzLl9kcy5jb25maXJtKCdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIGEgZmlsZT8gVGhpcyB3aWxsIGVtYWlsIGFsbCBjdXJyZW50IHdhdGNoZXJzPycpLnRoZW4oeWVzID0+IHtcblx0XHRcdGlmICh0aGlzLmRhdGEuZmlsZXMuaW5kZXhPZihmaWxlLl9pZCkgIT09IC0xKSB7XG5cdFx0XHRcdHRoaXMuZGF0YS5maWxlcy5zcGxpY2UodGhpcy5kYXRhLmZpbGVzLmluZGV4T2YoZmlsZS5faWQpLCAxKTtcblxuXHRcdFx0XHR0aGlzLl9zZXJ2aWNlcy5fc29ja2V0LmNhbGwoJ3N1cHBvcnRVcGRhdGVTdXBwb3J0VGlja2V0JywgdGhpcy5kYXRhLCAoZXJyLCByZXMpID0+IHtcblx0XHRcdFx0XHRpZiAoZXJyIHx8ICFyZXMpIHtcblx0XHRcdFx0XHRcdHRoaXMuX2RzLmVycm9yKCdDb3VsZCBub3QgdXBkYXRlIHN1cHBvcnQtdGlja2V0IGZpbGVzJyk7XG5cdFx0XHRcdFx0XHR0aGlzLl9zZXJ2aWNlcy5fc29ja2V0LmNhbGwoJ2luc2VydEVycm9yTG9nJywgJ3N1cHBvcnQtdGlja2V0LWRldGFpbCAtIHVwZGF0ZSBmaWxlcyByZW1vdmUnLCBbXG5cdFx0XHRcdFx0XHRcdHtwcm9wOiAnZmlsZXMnLCBkYXRhOiB0aGlzLmRhdGEuZmlsZXN9LCBlcnJcblx0XHRcdFx0XHRcdF0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSwgKCkgPT4ge30pO1xuXHR9XG5cblx0ZWRpdCgpIHtcblx0XHR0aGlzLl9zZXJ2aWNlcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoJy9zdXBwb3J0LXRpY2tldC9lZGl0LycgKyB0aGlzLmlkKTtcblx0fVxuXG5cdG5ld01lc3NhZ2UoKSB7XG5cdFx0dGhpcy5fZHMuaW5wdXQoJ0lucHV0IE1lc3NhZ2UnLCBbXG5cdFx0XHR7XG5cdFx0XHRcdGxhYmVsOiAnTWVzc2FnZScsXG5cdFx0XHRcdGZvcm06ICdtZXNzYWdlJyxcblx0XHRcdFx0ZGF0YTogJycsXG5cdFx0XHRcdHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcblx0XHRcdFx0dmFsaWRhdG9yRXJyb3JzOiBbJ3JlcXVpcmVkJ10sXG5cdFx0XHRcdHZhbGlkYXRvck1zZzogWydNZXNzYWdlIGlzIHJlcXVpcmVkJ10sXG5cdFx0XHRcdHJlcXVpcmVkOiB0cnVlLFxuXHRcdFx0XHR0eXBlOiAndGV4dGFyZWEnXG5cdFx0XHR9XG5cdFx0XSkudGhlbihjbG9zZSA9PiB7XG5cdFx0XHR0aGlzLmRhdGEubWVzc2FnZXMucHVzaCh7XG5cdFx0XHRcdG1lc3NhZ2U6IGNsb3NlLm1lc3NhZ2UudmFsdWUsXG5cdFx0XHRcdGlkX3VzZXI6IHRoaXMuX3NlcnZpY2VzLl9hY2NvdW50LmdldFVzZXIoKS5faWQsXG5cdFx0XHRcdHVzZXI6IHRoaXMuX3NlcnZpY2VzLl9hY2NvdW50LmdldFVzZXIoKS5mdWxsbmFtZSxcblx0XHRcdFx0ZGF0ZTogbmV3IERhdGUoKSxcblx0XHRcdFx0dHlwZTogJ0NsaWVudCdcblx0XHRcdH0pO1xuXG5cdFx0XHR0aGlzLl9zZXJ2aWNlcy5fc29ja2V0LmNhbGwoJ3N1cHBvcnRVcGRhdGVTdXBwb3J0VGlja2V0JywgdGhpcy5kYXRhLCAoZXJyLCByZXMpID0+IHtcblx0XHRcdFx0aWYgKHJlcykge1xuXHRcdFx0XHRcdC8vIHRoaXMuX3NlcnZpY2VzLl9hbGVydC5zZXRBbGVydCgnc3VjY2VzcycsICdTdXBwb3J0IHRpY2tldCBoYXMgYmVlbiB1cGRhdGVkJyk7XG5cblx0XHRcdFx0XHQvLyB0aGlzLl9zZXJ2aWNlcy5fc29ja2V0LmNhbGxTdXBwb3J0KCdzZW5kU3VwcG9ydFRpY2tldE1vZGlmaWVkRW1haWwnLCB0aGlzLmRhdGEsIHRoaXMuZGF0YS5maWxlcywgKGVyckVtYWlsLCByZXNFbWFpbCkgPT4ge1xuXHRcdFx0XHRcdC8vIFx0aWYgKGVyckVtYWlsIHx8ICFyZXNFbWFpbCkge1xuXHRcdFx0XHRcdC8vIFx0XHR0aGlzLl9kcy5lcnJvcignQ291bGQgbm90IGVtYWlsIHN1cHBvcnQgdGlja2V0Jyk7XG5cdFx0XHRcdFx0Ly8gXHRcdHRoaXMuX3NlcnZpY2VzLl9zb2NrZXQuY2FsbCgnaW5zZXJ0RXJyb3JMb2cnLCAnc3VwcG9ydC10aWNrZXQtZGV0YWlsIC0gZW1haWwgc3VwcG9ydC10aWNrZXQnLCBbXG5cdFx0XHRcdFx0Ly8gXHRcdFx0e3Byb3A6ICdzdGF0dXMnLCBkYXRhOiB0aGlzLmRhdGEuc3RhdHVzfSwgZXJyRW1haWxcblx0XHRcdFx0XHQvLyBcdFx0XSk7XG5cdFx0XHRcdFx0Ly8gXHR9XG5cdFx0XHRcdFx0Ly8gXHRlbHNlIHtcblx0XHRcdFx0XHQvLyBcdFx0dGhpcy5fc2VydmljZXMuX2FsZXJ0LnNldEFsZXJ0KCdzdWNjZXNzJywgJ1N1cHBvcnQgVGlja2V0IGVtYWlsIGhhcyBiZWVuIHNlbnQnKTtcblx0XHRcdFx0XHQvLyBcdH1cblx0XHRcdFx0XHQvLyB9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHR0aGlzLl9zZXJ2aWNlcy5fc29ja2V0LmNhbGwoJ2luc2VydEVycm9yTG9nJywgJ1N1cHBvcnQgVGlja2V0IERldGFpbCAtIEFkZCBNZXNzYWdlJyk7XG5cdFx0XHRcdFx0dGhpcy5fZHMuZXJyb3IoJ1N1cHBvcnQgdGlja2V0IGNvdWxkIG5vdCB1cGRhdGUnKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fSwgKCkgPT4ge30pO1xuXHR9XG5cblx0ZWRpdE1lc3NhZ2UoaW5kZXgpIHtcblx0XHRsZXQgbWVzc2FnZSA9IHRoaXMuZGF0YS5tZXNzYWdlc1tpbmRleF07XG5cdFx0dGhpcy5fZHMuaW5wdXQoJ0lucHV0IE1lc3NhZ2UnLCBbXG5cdFx0XHR7XG5cdFx0XHRcdGxhYmVsOiAnTWVzc2FnZScsXG5cdFx0XHRcdGZvcm06ICdtZXNzYWdlJyxcblx0XHRcdFx0ZGF0YTogbWVzc2FnZS5tZXNzYWdlLFxuXHRcdFx0XHR2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG5cdFx0XHRcdHZhbGlkYXRvckVycm9yczogWydyZXF1aXJlZCddLFxuXHRcdFx0XHR2YWxpZGF0b3JNc2c6IFsnTWVzc2FnZSBpcyByZXF1aXJlZCddLFxuXHRcdFx0XHRyZXF1aXJlZDogdHJ1ZSxcblx0XHRcdFx0dHlwZTogJ3RleHRhcmVhJ1xuXHRcdFx0fVxuXHRcdF0pLnRoZW4oY2xvc2UgPT4ge1xuXHRcdFx0bWVzc2FnZS5tZXNzYWdlID0gY2xvc2UubWVzc2FnZS52YWx1ZTtcblxuXHRcdFx0dGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsKCdzdXBwb3J0VXBkYXRlU3VwcG9ydFRpY2tldCcsIHRoaXMuZGF0YSwgKGVyciwgcmVzKSA9PiB7XG5cdFx0XHRcdGlmIChyZXMpIHtcblx0XHRcdFx0XHQvLyB0aGlzLl9zZXJ2aWNlcy5fYWxlcnQuc2V0QWxlcnQoJ3N1Y2Nlc3MnLCAnU3VwcG9ydCB0aWNrZXQgaGFzIGJlZW4gdXBkYXRlZCcpO1xuXG5cdFx0XHRcdFx0Ly8gdGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsU3VwcG9ydCgnc2VuZFN1cHBvcnRUaWNrZXRNb2RpZmllZEVtYWlsJywgdGhpcy5kYXRhLCB0aGlzLmRhdGEuZmlsZXMsIChlcnJFbWFpbCwgcmVzRW1haWwpID0+IHtcblx0XHRcdFx0XHQvLyBcdGlmIChlcnJFbWFpbCB8fCAhcmVzRW1haWwpIHtcblx0XHRcdFx0XHQvLyBcdFx0dGhpcy5fZHMuZXJyb3IoJ0NvdWxkIG5vdCBlbWFpbCBzdXBwb3J0IHRpY2tldCcpO1xuXHRcdFx0XHRcdC8vIFx0XHR0aGlzLl9zZXJ2aWNlcy5fc29ja2V0LmNhbGwoJ2luc2VydEVycm9yTG9nJywgJ3N1cHBvcnQtdGlja2V0LWRldGFpbCAtIGVtYWlsIHN1cHBvcnQtdGlja2V0JywgW1xuXHRcdFx0XHRcdC8vIFx0XHRcdHtwcm9wOiAnc3RhdHVzJywgZGF0YTogdGhpcy5kYXRhLnN0YXR1c30sIGVyckVtYWlsXG5cdFx0XHRcdFx0Ly8gXHRcdF0pO1xuXHRcdFx0XHRcdC8vIFx0fVxuXHRcdFx0XHRcdC8vIFx0ZWxzZSB7XG5cdFx0XHRcdFx0Ly8gXHRcdHRoaXMuX3NlcnZpY2VzLl9hbGVydC5zZXRBbGVydCgnc3VjY2VzcycsICdTdXBwb3J0IFRpY2tldCBlbWFpbCBoYXMgYmVlbiBzZW50Jyk7XG5cdFx0XHRcdFx0Ly8gXHR9XG5cdFx0XHRcdFx0Ly8gfSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsKCdpbnNlcnRFcnJvckxvZycsICdTdXBwb3J0IFRpY2tldCBEZXRhaWwgLSBBZGQgTWVzc2FnZScpO1xuXHRcdFx0XHRcdHRoaXMuX2RzLmVycm9yKCdTdXBwb3J0IHRpY2tldCBjb3VsZCBub3QgdXBkYXRlJyk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0sICgpID0+IHt9KTtcblx0fVxuXG5cdGRlbGV0ZU1lc3NhZ2UoaW5kZXgpIHtcblx0XHR0aGlzLl9kcy5jb25maXJtKCdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgbWVzc2FnZT8nKS50aGVuKCgpID0+IHtcblx0XHRcdHRoaXMuZGF0YS5tZXNzYWdlcy5zcGxpY2UoaW5kZXgsIDEpO1xuXG5cdFx0XHR0aGlzLl9zZXJ2aWNlcy5fc29ja2V0LmNhbGwoJ3N1cHBvcnRVcGRhdGVTdXBwb3J0VGlja2V0JywgdGhpcy5kYXRhLCAoZXJyLCByZXMpID0+IHtcblx0XHRcdFx0aWYgKHJlcykge1xuXHRcdFx0XHRcdC8vIHRoaXMuX3NlcnZpY2VzLl9hbGVydC5zZXRBbGVydCgnc3VjY2VzcycsICdTdXBwb3J0IHRpY2tldCBoYXMgYmVlbiB1cGRhdGVkJyk7XG5cblx0XHRcdFx0XHQvLyB0aGlzLl9zZXJ2aWNlcy5fc29ja2V0LmNhbGxTdXBwb3J0KCdzZW5kU3VwcG9ydFRpY2tldE1vZGlmaWVkRW1haWwnLCB0aGlzLmRhdGEsIHRoaXMuZGF0YS5maWxlcywgKGVyckVtYWlsLCByZXNFbWFpbCkgPT4ge1xuXHRcdFx0XHRcdC8vIFx0aWYgKGVyckVtYWlsIHx8ICFyZXNFbWFpbCkge1xuXHRcdFx0XHRcdC8vIFx0XHR0aGlzLl9kcy5lcnJvcignQ291bGQgbm90IGVtYWlsIHN1cHBvcnQgdGlja2V0Jyk7XG5cdFx0XHRcdFx0Ly8gXHRcdHRoaXMuX3NlcnZpY2VzLl9zb2NrZXQuY2FsbCgnaW5zZXJ0RXJyb3JMb2cnLCAnc3VwcG9ydC10aWNrZXQtZGV0YWlsIC0gZW1haWwgc3VwcG9ydC10aWNrZXQnLCBbXG5cdFx0XHRcdFx0Ly8gXHRcdFx0e3Byb3A6ICdzdGF0dXMnLCBkYXRhOiB0aGlzLmRhdGEuc3RhdHVzfSwgZXJyRW1haWxcblx0XHRcdFx0XHQvLyBcdFx0XSk7XG5cdFx0XHRcdFx0Ly8gXHR9XG5cdFx0XHRcdFx0Ly8gXHRlbHNlIHtcblx0XHRcdFx0XHQvLyBcdFx0dGhpcy5fc2VydmljZXMuX2FsZXJ0LnNldEFsZXJ0KCdzdWNjZXNzJywgJ1N1cHBvcnQgVGlja2V0IGVtYWlsIGhhcyBiZWVuIHNlbnQnKTtcblx0XHRcdFx0XHQvLyBcdH1cblx0XHRcdFx0XHQvLyB9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHR0aGlzLl9zZXJ2aWNlcy5fc29ja2V0LmNhbGwoJ2luc2VydEVycm9yTG9nJywgJ1N1cHBvcnQgVGlja2V0IERldGFpbCAtIEFkZCBNZXNzYWdlJyk7XG5cdFx0XHRcdFx0dGhpcy5fZHMuZXJyb3IoJ1N1cHBvcnQgdGlja2V0IGNvdWxkIG5vdCB1cGRhdGUnKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fSwgKCkgPT4ge30pO1xuXHR9XG5cblx0aXNNeU1lc3NhZ2UobWVzc2FnZSkge1xuXHRcdHJldHVybiB0aGlzLl9zZXJ2aWNlcy5fYWNjb3VudC5nZXRVc2VyKCkuX2lkID09PSBtZXNzYWdlLmlkX3VzZXI7XG5cdH1cbn0iLCI8c3R5bGU+XG4gICAgLmxhYmVsLWFjY29yZGlvbiB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICBjb2xvcjogYmxhY2s7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDBweDtcbiAgICB9XG5cbiAgICAuZmEtcGx1cyB7XG4gICAgICAgIGNvbG9yOiBibGFjaztcbiAgICB9XG5cbiAgICAuZmEtbWludXMge1xuICAgICAgICBjb2xvcjogYmxhY2s7XG4gICAgfVxuXG4gICAgbmdiLWFjY29yZGlvbiB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIGRsIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMHB4O1xuICAgIH1cblxuICAgIC5zZWxlY3RlZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1ZTtcbiAgICB9XG48L3N0eWxlPlxuXG48ZGl2IGNsYXNzPVwiY29sLWxnLTEyXCIgKm5nSWY9XCJkYXRhXCI+XG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8bmdiLWFjY29yZGlvbiAjYWNjPVwibmdiQWNjb3JkaW9uXCIgYWN0aXZlSWRzPVwic3VwcG9ydFRpY2tldEluZm8sIHN1cHBvcnRUaWNrZXRNZXNzYWdlcywgZmlsZXNcIj5cbiAgICAgICAgICAgIDxuZ2ItcGFuZWwgaWQ9XCJzdXBwb3J0VGlja2V0SW5mb1wiPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JQYW5lbFRpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PiBcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsLWFjY29yZGlvblwiPlN1cHBvcnQgVGlja2V0IEluZm88L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCIhYWNjLmFjdGl2ZUlkcy5pbmNsdWRlcygnc3VwcG9ydFRpY2tldEluZm8nKVwiIGNsYXNzPVwiZmEgZmEtcGx1cyBmbG9hdC1lbmRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImFjYy5hY3RpdmVJZHMuaW5jbHVkZXMoJ3N1cHBvcnRUaWNrZXRJbmZvJylcIiBjbGFzcz1cImZhIGZhLW1pbnVzIGZsb2F0LWVuZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiUGFuZWxDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCI+PGI+R2VuZXJhbCBJbmZvPC9iPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PlN1cHBvcnQgVGlja2V0ICM8L2R0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZD57e2RhdGEuc3VwcG9ydF90aWNrZXRfbnVtYmVyIHwgbnVtYmVyfX08L2RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5EYXRlIENyZWF0ZWQ8L2R0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZD57e2RhdGEuZGF0ZV9jcmVhdGVkIHwgZGF0ZTogJ3Nob3J0J319PC9kZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+VHlwZTwvZHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRkPnt7ZGF0YS50eXBlfX08L2RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Vc2VyPC9kdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+e3tkYXRhLnVzZXJfY3JlYXRlZH19PC9kZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+U3RhdHVzPC9kdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+e3sgZGF0YS5zdGF0dXMgfX08L2RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIj48Yj5Qcm9ibGVtIERlc2NyaXB0aW9uPC9iPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+e3tkYXRhLmlzc3VlfX08L3ByZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZ2ItcGFuZWw+XG4gICAgICAgICAgICA8bmdiLXBhbmVsIGlkPVwic3VwcG9ydFRpY2tldE1lc3NhZ2VzXCIgKm5nSWY9XCJkYXRhXCI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYlBhbmVsVGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+IFxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibGFiZWwtYWNjb3JkaW9uXCI+TWVzc2FnZXM8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCIhYWNjLmFjdGl2ZUlkcy5pbmNsdWRlcygnc3VwcG9ydFRpY2tldE1lc3NhZ2VzJylcIiBjbGFzcz1cImZhIGZhLXBsdXMgZmxvYXQtZW5kXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJhY2MuYWN0aXZlSWRzLmluY2x1ZGVzKCdzdXBwb3J0VGlja2V0TWVzc2FnZXMnKVwiIGNsYXNzPVwiZmEgZmEtbWludXMgZmxvYXQtZW5kXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JQYW5lbENvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiICpuZ0Zvcj1cImxldCBtZXNzYWdlIG9mIGRhdGEubWVzc2FnZXM7IGxldCBpID0gaW5kZXg7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlclwiPjxiPlVzZXI6IHt7bWVzc2FnZS51c2VyfX0gLSBEYXRlOiB7e21lc3NhZ2UuZGF0ZSB8IGRhdGUgOiAnc2hvcnQnfX08L2I+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIiBbbmdDbGFzc109XCJbbWVzc2FnZS50eXBlID09PSAnUmVzb2x2ZUlPJyA/ICdzZWxlY3RlZCcgOiAnJ11cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAgc3R5bGU9XCJ3aWR0aDogMTAwJVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByZT57e21lc3NhZ2UubWVzc2FnZX19PC9wcmU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXNwb25zaXZlLWJ1dHRvbi1ncm91cCBjb2xsYXBzZVNpemU9XCI5MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13YXJuaW5nXCIgKGNsaWNrKT1cImVkaXRNZXNzYWdlKGkpXCIgKm5nSWY9XCJpc015TWVzc2FnZShtZXNzYWdlKVwiPkVkaXQ8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXJcIiAoY2xpY2spPVwiZGVsZXRlTWVzc2FnZShpKVwiICpuZ0lmPVwiaXNNeU1lc3NhZ2UobWVzc2FnZSlcIj5EZWxldGU8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZXNwb25zaXZlLWJ1dHRvbi1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwibWFyZ2luLXRvcDogMTBweDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiIChjbGljayk9XCJuZXdNZXNzYWdlKClcIj5OZXcgTWVzc2FnZTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L25nYi1wYW5lbD5cbiAgICAgICAgICAgIDxuZ2ItcGFuZWwgaWQ9XCJmaWxlc1wiPlxuXHRcdFx0XHQ8bmctdGVtcGxhdGUgbmdiUGFuZWxUaXRsZT5cblx0XHRcdFx0XHQ8ZGl2PiBcblx0XHRcdFx0XHRcdDxsYWJlbCBjbGFzcz1cImxhYmVsLWFjY29yZGlvblwiPlN1cHBvcnQgVGlja2V0IEZpbGVzPC9sYWJlbD5cblx0XHRcdFx0XHRcdDxpICpuZ0lmPVwiIWFjYy5hY3RpdmVJZHMuaW5jbHVkZXMoJ2ZpbGVzJylcIiBjbGFzcz1cImZhIGZhLXBsdXMgZmxvYXQtZW5kXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuXHRcdFx0XHRcdFx0PGkgKm5nSWY9XCJhY2MuYWN0aXZlSWRzLmluY2x1ZGVzKCdmaWxlcycpXCIgY2xhc3M9XCJmYSBmYS1taW51cyBmbG9hdC1lbmRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdDwvbmctdGVtcGxhdGU+XG5cdFx0XHRcdDxuZy10ZW1wbGF0ZSBuZ2JQYW5lbENvbnRlbnQ+XG5cdFx0XHRcdFx0PGZpbGUtdXBsb2FkICNmaWxlVXBsb2FkIChmaWxlQWRkZWQpPVwib25GaWxlQWRkZWQoJGV2ZW50KVwiIChmaWxlUmVtb3ZlZCk9XCJvbkZpbGVzUmVtb3ZlZCgkZXZlbnQpXCIgW2ZpbGVzXT1cImZpbGVzXCIgW2FsbG93RGVsZXRlXT1cInRydWVcIiBbYWxsb3dSZXBsYWNlXT1cInRydWVcIj48L2ZpbGUtdXBsb2FkPlxuXHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxuXHRcdFx0PC9uZ2ItcGFuZWw+XG4gICAgICAgIDwvbmdiLWFjY29yZGlvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJwYWRkaW5nLXRvcDogMTVweDtcIj5cbiAgICAgICAgPHJlc3BvbnNpdmUtYnV0dG9uLWdyb3VwIGNvbGxhcHNlU2l6ZT1cIjkwMFwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4td2FybmluZ1wiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZWRpdCgpXCI+RWRpdCBTdXBwb3J0IFRpY2tldDwvYnV0dG9uPlxuICAgICAgICA8L3Jlc3BvbnNpdmUtYnV0dG9uLWdyb3VwPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4gICAgIl19
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import { Component, ViewChild } from '@angular/core';
|
|
2
|
-
import { SupportTicketService } from '../support-ticket.service';
|
|
3
|
-
import { Validators } from '@angular/forms';
|
|
4
|
-
import { ActivatedRoute } from '@angular/router';
|
|
5
|
-
import { ProviderService, BaseComponent } from '../../resolveio-class';
|
|
6
|
-
import { DialogService } from '../../widgets/dialog/dialog.service';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/router";
|
|
9
|
-
import * as i2 from "../support-ticket.service";
|
|
10
|
-
import * as i3 from "../../resolveio-class";
|
|
11
|
-
import * as i4 from "../../widgets/dialog/dialog.service";
|
|
12
|
-
import * as i5 from "@angular/forms";
|
|
13
|
-
import * as i6 from "@ng-bootstrap/ng-bootstrap";
|
|
14
|
-
import * as i7 from "../../widgets/form-button/form-button.component";
|
|
15
|
-
import * as i8 from "@angular/common";
|
|
16
|
-
export class SupportTicketEditComponent extends BaseComponent {
|
|
17
|
-
_route;
|
|
18
|
-
_sts;
|
|
19
|
-
_services;
|
|
20
|
-
_ds;
|
|
21
|
-
fileUpload;
|
|
22
|
-
selectType;
|
|
23
|
-
id;
|
|
24
|
-
data;
|
|
25
|
-
subscription$ = [];
|
|
26
|
-
form;
|
|
27
|
-
disableFormButton = false;
|
|
28
|
-
constructor(_route, _sts, _services, _ds) {
|
|
29
|
-
super(_services);
|
|
30
|
-
this._route = _route;
|
|
31
|
-
this._sts = _sts;
|
|
32
|
-
this._services = _services;
|
|
33
|
-
this._ds = _ds;
|
|
34
|
-
}
|
|
35
|
-
ngOnInit() {
|
|
36
|
-
this.id = this._route.snapshot.params['id'];
|
|
37
|
-
this._sts.setSelectedSupportTicket(this.id.toString());
|
|
38
|
-
this.form = this._services._fb.group({
|
|
39
|
-
_id: [''],
|
|
40
|
-
__v: [0],
|
|
41
|
-
type: ['', [Validators.required]],
|
|
42
|
-
priority: ['', [Validators.required]],
|
|
43
|
-
issue: ['', [Validators.required]],
|
|
44
|
-
support_ticket_number: [null],
|
|
45
|
-
support_ticket_number_string: [null],
|
|
46
|
-
status: ['Opened'],
|
|
47
|
-
substatus: ['New'],
|
|
48
|
-
client: [''],
|
|
49
|
-
id_client: ['', [Validators.required]],
|
|
50
|
-
messages: [[]],
|
|
51
|
-
date_created: [null],
|
|
52
|
-
date_created_string: [''],
|
|
53
|
-
id_user_created: [this._services._account.getUser()._id],
|
|
54
|
-
user_created: [this._services._account.getUser().fullname],
|
|
55
|
-
billable: [false, [Validators.required]],
|
|
56
|
-
date_investigation: [null],
|
|
57
|
-
date_closed: [null],
|
|
58
|
-
files: [[]],
|
|
59
|
-
current_watchers: [[]],
|
|
60
|
-
client_user: [null],
|
|
61
|
-
users_assigned: [[]],
|
|
62
|
-
bill_description: [''],
|
|
63
|
-
tasks: [[]],
|
|
64
|
-
notes: [[]],
|
|
65
|
-
difficulty: [1]
|
|
66
|
-
});
|
|
67
|
-
this._services._socket.call('supportGetSupportTicketWithId', this.id, (err, res) => {
|
|
68
|
-
if (!res) {
|
|
69
|
-
this._services._router.navigateByUrl('/support-ticket/list');
|
|
70
|
-
this._ds.error('Could not find support ticket');
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
this.data = res;
|
|
74
|
-
this.loadForm();
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
ngOnDestroy() {
|
|
78
|
-
this.subscription$.forEach(sub => {
|
|
79
|
-
sub.unsubscribe();
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
loadForm() {
|
|
83
|
-
this.form.patchValue(this.data);
|
|
84
|
-
}
|
|
85
|
-
onTypeChange() {
|
|
86
|
-
if (this.form.controls.type.value === 'System Impairment') {
|
|
87
|
-
this.form.controls.priority.setValue('High');
|
|
88
|
-
this.form.controls.billable.setValue(false);
|
|
89
|
-
}
|
|
90
|
-
else if (this.form.controls.type.value === 'Request New Feature') {
|
|
91
|
-
this.form.controls.priority.setValue('Low');
|
|
92
|
-
this.form.controls.billable.setValue(true);
|
|
93
|
-
}
|
|
94
|
-
else if (this.form.controls.type.value === 'General Inquery') {
|
|
95
|
-
this.form.controls.priority.setValue('Low');
|
|
96
|
-
this.form.controls.billable.setValue(true);
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
this.form.controls.priority.setValue('');
|
|
100
|
-
this.form.controls.billable.setValue(false);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
submitForm(form) {
|
|
104
|
-
this.disableFormButton = true;
|
|
105
|
-
this._services._socket.call('supportUpdateSupportTicket', this.form.value, (err, res) => {
|
|
106
|
-
if (res) {
|
|
107
|
-
this._services._alert.setAlert('info', 'Editing support ticket, please wait');
|
|
108
|
-
this._services._router.navigateByUrl('/support-ticket/detail/' + this.id);
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
this._ds.error('Could not edit support ticket');
|
|
112
|
-
this._services._socket.call('insertErrorLog', 'Support-ticket-edit - update support ticket', [
|
|
113
|
-
this.form.value, err
|
|
114
|
-
]);
|
|
115
|
-
}
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SupportTicketEditComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.SupportTicketService }, { token: i3.ProviderService }, { token: i4.DialogService }], target: i0.ɵɵFactoryTarget.Component });
|
|
119
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SupportTicketEditComponent, selector: "ng-component", providers: [ProviderService], viewQueries: [{ propertyName: "fileUpload", first: true, predicate: ["fileUpload"], descendants: true, static: true }, { propertyName: "selectType", first: true, predicate: ["selectType"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<style>\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n</style>\n\n<div class=\"col-lg-12\">\n <form [formGroup]=\"form\" novalidate (ngSubmit)=\"submitForm(form)\">\n <div class=\"row\">\n <ngb-accordion #acc=\"ngbAccordion\" activeIds=\"supportTicketInfo\">\n <ngb-panel id=\"supportTicketInfo\">\n <ng-template ngbPanelTitle>\n <div> \n <label class=\"label-accordion\">Support Ticket Info</label>\n <i *ngIf=\"!acc.activeIds.includes('supportTicketInfo')\" class=\"fa fa-plus float-end\" aria-hidden=\"true\"></i>\n <i *ngIf=\"acc.activeIds.includes('supportTicketInfo')\" class=\"fa fa-minus float-end\" aria-hidden=\"true\"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"form-group\">\n <label class=\"form-control-label\">Support Ticket Type</label>\n <em *ngIf=\"!form.controls.type.valid\">- Required</em>\n <select [ngClass]=\"['form-control', form.controls.type.valid ? 'is-valid' : 'is-invalid']\" formControlName=\"type\" (change)=\"onTypeChange()\">\n <option value=\"\">Select Type</option>\n <option value=\"General Inquery\">General Inquery</option>\n <option value=\"System Impairment\">System Impairment</option>\n <option value=\"Request New Feature\">Request New Feature</option>\n </select>\n <div class=\"invalid-feedback\" *ngIf=\"!form.controls.type.valid\">Type is required</div>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-lg-12\">\n <div class=\"form-group\">\n <label class=\"form-control-label\">Problem Description</label>\n <em *ngIf=\"!form.controls.issue.valid\">- Required</em>\n <textarea formControlName=\"issue\" [ngClass]=\"['form-control', form.controls.issue.valid ? 'is-valid' : 'is-invalid' ]\" [rows]=\"5\" style=\"overflow-x: hidden\"></textarea>\n <div class=\"invalid-feedback\" *ngIf=\"!form.controls.issue.valid\">Problem Description is required</div>\n </div>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n </ngb-accordion>\n </div>\n <div class=\"row\" style=\"padding-top: 15px;\">\n <form-button [form]=\"form\" [disabled]=\"disableFormButton\"></form-button>\n </div>\n </form>\n</div>\n ", styles: ["\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n"], dependencies: [{ kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.NgbAccordion, selector: "ngb-accordion", inputs: ["animation", "activeIds", "closeOthers", "destroyOnHide", "type"], outputs: ["panelChange", "shown", "hidden"], exportAs: ["ngbAccordion"] }, { kind: "directive", type: i6.NgbPanel, selector: "ngb-panel", inputs: ["disabled", "id", "title", "type", "cardClass"], outputs: ["shown", "hidden"] }, { kind: "directive", type: i6.NgbPanelTitle, selector: "ng-template[ngbPanelTitle]" }, { kind: "directive", type: i6.NgbPanelContent, selector: "ng-template[ngbPanelContent]" }, { kind: "component", type: i7.FormButtonComponent, selector: "form-button", inputs: ["form", "disabled", "type"] }, { kind: "directive", type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
120
|
-
}
|
|
121
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SupportTicketEditComponent, decorators: [{
|
|
122
|
-
type: Component,
|
|
123
|
-
args: [{ providers: [ProviderService], template: "<style>\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n</style>\n\n<div class=\"col-lg-12\">\n <form [formGroup]=\"form\" novalidate (ngSubmit)=\"submitForm(form)\">\n <div class=\"row\">\n <ngb-accordion #acc=\"ngbAccordion\" activeIds=\"supportTicketInfo\">\n <ngb-panel id=\"supportTicketInfo\">\n <ng-template ngbPanelTitle>\n <div> \n <label class=\"label-accordion\">Support Ticket Info</label>\n <i *ngIf=\"!acc.activeIds.includes('supportTicketInfo')\" class=\"fa fa-plus float-end\" aria-hidden=\"true\"></i>\n <i *ngIf=\"acc.activeIds.includes('supportTicketInfo')\" class=\"fa fa-minus float-end\" aria-hidden=\"true\"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"form-group\">\n <label class=\"form-control-label\">Support Ticket Type</label>\n <em *ngIf=\"!form.controls.type.valid\">- Required</em>\n <select [ngClass]=\"['form-control', form.controls.type.valid ? 'is-valid' : 'is-invalid']\" formControlName=\"type\" (change)=\"onTypeChange()\">\n <option value=\"\">Select Type</option>\n <option value=\"General Inquery\">General Inquery</option>\n <option value=\"System Impairment\">System Impairment</option>\n <option value=\"Request New Feature\">Request New Feature</option>\n </select>\n <div class=\"invalid-feedback\" *ngIf=\"!form.controls.type.valid\">Type is required</div>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-lg-12\">\n <div class=\"form-group\">\n <label class=\"form-control-label\">Problem Description</label>\n <em *ngIf=\"!form.controls.issue.valid\">- Required</em>\n <textarea formControlName=\"issue\" [ngClass]=\"['form-control', form.controls.issue.valid ? 'is-valid' : 'is-invalid' ]\" [rows]=\"5\" style=\"overflow-x: hidden\"></textarea>\n <div class=\"invalid-feedback\" *ngIf=\"!form.controls.issue.valid\">Problem Description is required</div>\n </div>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n </ngb-accordion>\n </div>\n <div class=\"row\" style=\"padding-top: 15px;\">\n <form-button [form]=\"form\" [disabled]=\"disableFormButton\"></form-button>\n </div>\n </form>\n</div>\n " }]
|
|
124
|
-
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.SupportTicketService }, { type: i3.ProviderService }, { type: i4.DialogService }]; }, propDecorators: { fileUpload: [{
|
|
125
|
-
type: ViewChild,
|
|
126
|
-
args: ['fileUpload', { static: true }]
|
|
127
|
-
}], selectType: [{
|
|
128
|
-
type: ViewChild,
|
|
129
|
-
args: ['selectType', { static: true }]
|
|
130
|
-
}] } });
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydC10aWNrZXQtZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvc3VwcG9ydC10aWNrZXQvZWRpdC9zdXBwb3J0LXRpY2tldC1lZGl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9zdXBwb3J0LXRpY2tldC9lZGl0L3N1cHBvcnQtdGlja2V0LWVkaXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7Ozs7Ozs7QUFPcEUsTUFBTSxPQUFPLDBCQUEyQixTQUFRLGFBQWE7SUFjeEM7SUFBZ0M7SUFBb0M7SUFBb0M7SUFabEYsVUFBVSxDQUFDO0lBQ1gsVUFBVSxDQUFDO0lBRXJELEVBQUUsQ0FBUztJQUNYLElBQUksQ0FBcUI7SUFFekIsYUFBYSxHQUFtQixFQUFFLENBQUM7SUFFbkMsSUFBSSxDQUFZO0lBRWhCLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUUxQixZQUFvQixNQUFzQixFQUFVLElBQTBCLEVBQVUsU0FBMEIsRUFBVSxHQUFrQjtRQUM3SSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFERSxXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUFVLFNBQUksR0FBSixJ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LEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3VwcG9ydFRpY2tldFNlcnZpY2UgfSBmcm9tICcuLi9zdXBwb3J0LXRpY2tldC5zZXJ2aWNlJztcbmltcG9ydCB7IFZhbGlkYXRvcnMsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUHJvdmlkZXJTZXJ2aWNlLCBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcmVzb2x2ZWlvLWNsYXNzJztcbmltcG9ydCB7IFN1cHBvcnRUaWNrZXRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zdXBwb3J0LXRpY2tldC5tb2RlbCc7XG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vd2lkZ2V0cy9kaWFsb2cvZGlhbG9nLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcblx0cHJvdmlkZXJzOiBbUHJvdmlkZXJTZXJ2aWNlXSxcblx0dGVtcGxhdGVVcmw6ICcuL3N1cHBvcnQtdGlja2V0LWVkaXQuY29tcG9uZW50Lmh0bWwnXG59KVxuXG5leHBvcnQgY2xhc3MgU3VwcG9ydFRpY2tldEVkaXRDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kgeyBcblxuXHRAVmlld0NoaWxkICgnZmlsZVVwbG9hZCcsIHtzdGF0aWM6IHRydWV9KSBmaWxlVXBsb2FkO1xuXHRAVmlld0NoaWxkICgnc2VsZWN0VHlwZScsIHtzdGF0aWM6IHRydWV9KSBzZWxlY3RUeXBlO1xuXG5cdGlkOiBzdHJpbmc7XG5cdGRhdGE6IFN1cHBvcnRUaWNrZXRNb2RlbDtcblx0XG5cdHN1YnNjcmlwdGlvbiQ6IFN1YnNjcmlwdGlvbltdID0gW107XG5cblx0Zm9ybTogRm9ybUdyb3VwO1xuXG5cdGRpc2FibGVGb3JtQnV0dG9uID0gZmFsc2U7XG5cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBfcm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcml2YXRlIF9zdHM6IFN1cHBvcnRUaWNrZXRTZXJ2aWNlLCBwcml2YXRlIF9zZXJ2aWNlczogUHJvdmlkZXJTZXJ2aWNlLCBwcml2YXRlIF9kczogRGlhbG9nU2VydmljZSkge1xuXHRcdHN1cGVyKF9zZXJ2aWNlcyk7XG5cdH1cblxuXHRuZ09uSW5pdCgpIHtcblx0XHR0aGlzLmlkID0gdGhpcy5fcm91dGUuc25hcHNob3QucGFyYW1zWydpZCddO1xuXHRcdHRoaXMuX3N0cy5zZXRTZWxlY3RlZFN1cHBvcnRUaWNrZXQodGhpcy5pZC50b1N0cmluZygpKTtcblxuXHRcdHRoaXMuZm9ybSA9IHRoaXMuX3NlcnZpY2VzLl9mYi5ncm91cCh7XG5cdFx0XHRfaWQ6IFsnJ10sXG5cdFx0XHRfX3Y6IFswXSxcblx0XHRcdHR5cGU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcblx0XHRcdHByaW9yaXR5OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG5cdFx0XHRpc3N1ZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuXHRcdFx0c3VwcG9ydF90aWNrZXRfbnVtYmVyOiBbbnVsbF0sXG5cdFx0XHRzdXBwb3J0X3RpY2tldF9udW1iZXJfc3RyaW5nOiBbbnVsbF0sXG5cdFx0XHRzdGF0dXM6IFsnT3BlbmVkJ10sXG5cdFx0XHRzdWJzdGF0dXM6IFsnTmV3J10sXG5cdFx0XHRjbGllbnQ6IFsnJ10sXG5cdFx0XHRpZF9jbGllbnQ6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcblx0XHRcdG1lc3NhZ2VzOiBbW11dLFxuXHRcdFx0ZGF0ZV9jcmVhdGVkOiBbbnVsbF0sXG5cdFx0XHRkYXRlX2NyZWF0ZWRfc3RyaW5nOiBbJyddLFxuXHRcdFx0aWRfdXNlcl9jcmVhdGVkOiBbdGhpcy5fc2VydmljZXMuX2FjY291bnQuZ2V0VXNlcigpLl9pZF0sXG5cdFx0XHR1c2VyX2NyZWF0ZWQ6IFt0aGlzLl9zZXJ2aWNlcy5fYWNjb3VudC5nZXRVc2VyKCkuZnVsbG5hbWVdLFxuXHRcdFx0YmlsbGFibGU6IFtmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcblx0XHRcdGRhdGVfaW52ZXN0aWdhdGlvbjogW251bGxdLFxuXHRcdFx0ZGF0ZV9jbG9zZWQ6IFtudWxsXSxcblx0XHRcdGZpbGVzOiBbW11dLFxuXHRcdFx0Y3VycmVudF93YXRjaGVyczogW1tdXSxcblx0XHRcdGNsaWVudF91c2VyOiBbbnVsbF0sXG5cdFx0XHR1c2Vyc19hc3NpZ25lZDogW1tdXSxcblx0XHRcdGJpbGxfZGVzY3JpcHRpb246IFsnJ10sXG5cdFx0XHR0YXNrczogW1tdXSxcblx0XHRcdG5vdGVzOiBbW11dLFxuXHRcdFx0ZGlmZmljdWx0eTogWzFdXG5cdFx0fSk7XG5cblx0XHR0aGlzLl9zZXJ2aWNlcy5fc29ja2V0LmNhbGwoJ3N1cHBvcnRHZXRTdXBwb3J0VGlja2V0V2l0aElkJywgdGhpcy5pZCwgKGVyciwgcmVzKSA9PiB7XG5cdFx0XHRpZiAoIXJlcykge1xuXHRcdFx0XHR0aGlzLl9zZXJ2aWNlcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoJy9zdXBwb3J0LXRpY2tldC9saXN0Jyk7XG5cdFx0XHRcdHRoaXMuX2RzLmVycm9yKCdDb3VsZCBub3QgZmluZCBzdXBwb3J0IHRpY2tldCcpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuZGF0YSA9IHJlcztcblxuXHRcdFx0dGhpcy5sb2FkRm9ybSgpO1xuXHRcdH0pO1xuXHR9XG5cblx0bmdPbkRlc3Ryb3koKSB7XG5cdFx0dGhpcy5zdWJzY3JpcHRpb24kLmZvckVhY2goc3ViID0+IHtcblx0XHRcdHN1Yi51bnN1YnNjcmliZSgpO1xuXHRcdH0pO1xuXHR9XG5cblx0bG9hZEZvcm0oKSB7XG5cdFx0dGhpcy5mb3JtLnBhdGNoVmFsdWUodGhpcy5kYXRhKTtcblx0fVxuXG5cdG9uVHlwZUNoYW5nZSgpIHtcblx0XHRpZiAodGhpcy5mb3JtLmNvbnRyb2xzLnR5cGUudmFsdWUgPT09ICdTeXN0ZW0gSW1wYWlybWVudCcpIHtcblx0XHRcdHRoaXMuZm9ybS5jb250cm9scy5wcmlvcml0eS5zZXRWYWx1ZSgnSGlnaCcpO1xuXHRcdFx0dGhpcy5mb3JtLmNvbnRyb2xzLmJpbGxhYmxlLnNldFZhbHVlKGZhbHNlKTtcblx0XHR9XG5cdFx0ZWxzZSBpZiAodGhpcy5mb3JtLmNvbnRyb2xzLnR5cGUudmFsdWUgPT09ICdSZXF1ZXN0IE5ldyBGZWF0dXJlJykge1xuXHRcdFx0dGhpcy5mb3JtLmNvbnRyb2xzLnByaW9yaXR5LnNldFZhbHVlKCdMb3cnKTtcblx0XHRcdHRoaXMuZm9ybS5jb250cm9scy5iaWxsYWJsZS5zZXRWYWx1ZSh0cnVlKTtcblx0XHR9XG5cdFx0ZWxzZSBpZiAodGhpcy5mb3JtLmNvbnRyb2xzLnR5cGUudmFsdWUgPT09ICdHZW5lcmFsIElucXVlcnknKSB7XG5cdFx0XHR0aGlzLmZvcm0uY29udHJvbHMucHJpb3JpdHkuc2V0VmFsdWUoJ0xvdycpO1xuXHRcdFx0dGhpcy5mb3JtLmNvbnRyb2xzLmJpbGxhYmxlLnNldFZhbHVlKHRydWUpO1xuXHRcdH1cblx0XHRlbHNlIHtcblx0XHRcdHRoaXMuZm9ybS5jb250cm9scy5wcmlvcml0eS5zZXRWYWx1ZSgnJyk7XG5cdFx0XHR0aGlzLmZvcm0uY29udHJvbHMuYmlsbGFibGUuc2V0VmFsdWUoZmFsc2UpO1xuXHRcdH1cblx0fVxuXG5cdHN1Ym1pdEZvcm0oZm9ybSkge1xuXHRcdHRoaXMuZGlzYWJsZUZvcm1CdXR0b24gPSB0cnVlO1xuXG5cdFx0dGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsKCdzdXBwb3J0VXBkYXRlU3VwcG9ydFRpY2tldCcsIHRoaXMuZm9ybS52YWx1ZSwgKGVyciwgcmVzKSA9PiB7XG5cdFx0XHRpZiAocmVzKSB7XG5cdFx0XHRcdHRoaXMuX3NlcnZpY2VzLl9hbGVydC5zZXRBbGVydCgnaW5mbycsICdFZGl0aW5nIHN1cHBvcnQgdGlja2V0LCBwbGVhc2Ugd2FpdCcpO1xuXHRcdFx0XHR0aGlzLl9zZXJ2aWNlcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoJy9zdXBwb3J0LXRpY2tldC9kZXRhaWwvJyArIHRoaXMuaWQpO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSB7XG5cdFx0XHRcdHRoaXMuX2RzLmVycm9yKCdDb3VsZCBub3QgZWRpdCBzdXBwb3J0IHRpY2tldCcpO1xuXHRcdFx0XHR0aGlzLl9zZXJ2aWNlcy5fc29ja2V0LmNhbGwoJ2luc2VydEVycm9yTG9nJywgJ1N1cHBvcnQtdGlja2V0LWVkaXQgLSB1cGRhdGUgc3VwcG9ydCB0aWNrZXQnLCBbXG5cdFx0XHRcdFx0dGhpcy5mb3JtLnZhbHVlLCBlcnJcblx0XHRcdFx0XSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cbn1cbiIsIjxzdHlsZT5cbiAgICAubGFiZWwtYWNjb3JkaW9uIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIGNvbG9yOiBibGFjaztcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMHB4O1xuICAgIH1cblxuICAgIC5mYS1wbHVzIHtcbiAgICAgICAgY29sb3I6IGJsYWNrO1xuICAgIH1cblxuICAgIC5mYS1taW51cyB7XG4gICAgICAgIGNvbG9yOiBibGFjaztcbiAgICB9XG48L3N0eWxlPlxuXG48ZGl2IGNsYXNzPVwiY29sLWxnLTEyXCI+XG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgbm92YWxpZGF0ZSAobmdTdWJtaXQpPVwic3VibWl0Rm9ybShmb3JtKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICA8bmdiLWFjY29yZGlvbiAjYWNjPVwibmdiQWNjb3JkaW9uXCIgYWN0aXZlSWRzPVwic3VwcG9ydFRpY2tldEluZm9cIj5cbiAgICAgICAgICAgICAgICA8bmdiLXBhbmVsIGlkPVwic3VwcG9ydFRpY2tldEluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYlBhbmVsVGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbC1hY2NvcmRpb25cIj5TdXBwb3J0IFRpY2tldCBJbmZvPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIiFhY2MuYWN0aXZlSWRzLmluY2x1ZGVzKCdzdXBwb3J0VGlja2V0SW5mbycpXCIgY2xhc3M9XCJmYSBmYS1wbHVzIGZsb2F0LWVuZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImFjYy5hY3RpdmVJZHMuaW5jbHVkZXMoJ3N1cHBvcnRUaWNrZXRJbmZvJylcIiBjbGFzcz1cImZhIGZhLW1pbnVzIGZsb2F0LWVuZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiUGFuZWxDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbC1sYWJlbFwiPlN1cHBvcnQgVGlja2V0IFR5cGU8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtICpuZ0lmPVwiIWZvcm0uY29udHJvbHMudHlwZS52YWxpZFwiPi0gUmVxdWlyZWQ8L2VtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgW25nQ2xhc3NdPVwiWydmb3JtLWNvbnRyb2wnLCBmb3JtLmNvbnRyb2xzLnR5cGUudmFsaWQgPyAnaXMtdmFsaWQnIDogJ2lzLWludmFsaWQnXVwiIGZvcm1Db250cm9sTmFtZT1cInR5cGVcIiAoY2hhbmdlKT1cIm9uVHlwZUNoYW5nZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5TZWxlY3QgVHlwZTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiR2VuZXJhbCBJbnF1ZXJ5XCI+R2VuZXJhbCBJbnF1ZXJ5PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJTeXN0ZW0gSW1wYWlybWVudFwiPlN5c3RlbSBJbXBhaXJtZW50PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJSZXF1ZXN0IE5ldyBGZWF0dXJlXCI+UmVxdWVzdCBOZXcgRmVhdHVyZTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cIiFmb3JtLmNvbnRyb2xzLnR5cGUudmFsaWRcIj5UeXBlIGlzIHJlcXVpcmVkPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jb250cm9sLWxhYmVsXCI+UHJvYmxlbSBEZXNjcmlwdGlvbjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gKm5nSWY9XCIhZm9ybS5jb250cm9scy5pc3N1ZS52YWxpZFwiPi0gUmVxdWlyZWQ8L2VtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGZvcm1Db250cm9sTmFtZT1cImlzc3VlXCIgW25nQ2xhc3NdPVwiWydmb3JtLWNvbnRyb2wnLCBmb3JtLmNvbnRyb2xzLmlzc3VlLnZhbGlkID8gJ2lzLXZhbGlkJyA6ICdpcy1pbnZhbGlkJyBdXCIgW3Jvd3NdPVwiNVwiIHN0eWxlPVwib3ZlcmZsb3cteDogaGlkZGVuXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCIhZm9ybS5jb250cm9scy5pc3N1ZS52YWxpZFwiPlByb2JsZW0gRGVzY3JpcHRpb24gaXMgcmVxdWlyZWQ8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L25nYi1wYW5lbD5cbiAgICAgICAgICAgIDwvbmdiLWFjY29yZGlvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cInBhZGRpbmctdG9wOiAxNXB4O1wiPlxuICAgICAgICAgICAgPGZvcm0tYnV0dG9uIFtmb3JtXT1cImZvcm1cIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUZvcm1CdXR0b25cIj48L2Zvcm0tYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG48L2Rpdj5cbiAgICAiXX0=
|