tin-spa 10.0.0 → 14.3.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -24
- package/esm2020/lib/classes/Classes.mjs +265 -0
- package/esm2020/lib/classes/TinCore.mjs +401 -0
- package/esm2020/lib/components/accounts/accountDialog.component.mjs +56 -0
- package/esm2020/lib/components/accounts/accounts.component.mjs +70 -0
- package/esm2020/lib/components/activity/activity.component.mjs +24 -0
- package/esm2020/lib/components/alert/alert.component.mjs +29 -0
- package/esm2020/lib/components/attach/attach.component.mjs +86 -0
- package/esm2020/lib/components/bug/bug.component.mjs +14 -0
- package/esm2020/lib/components/change-password/change-password.component.mjs +92 -0
- package/esm2020/lib/components/check/check.component.mjs +67 -0
- package/esm2020/lib/components/chips/chips.component.mjs +58 -0
- package/esm2020/lib/components/create-account/create-account.component.mjs +109 -0
- package/esm2020/lib/components/customers/customers.component.mjs +60 -0
- package/esm2020/lib/components/date/date.component.mjs +101 -0
- package/esm2020/lib/components/datetime/datetime.component.mjs +52 -0
- package/esm2020/lib/components/departments/departments.component.mjs +24 -0
- package/esm2020/lib/components/employees/employees.component.mjs +21 -0
- package/esm2020/lib/components/filter/filter.component.mjs +54 -0
- package/esm2020/lib/components/form/form.component.mjs +191 -0
- package/esm2020/lib/components/grades/grades.component.mjs +14 -0
- package/esm2020/lib/components/inventory/inventory.component.mjs +99 -0
- package/esm2020/lib/components/inventory/quantityDialog.component.mjs +53 -0
- package/esm2020/lib/components/invitations/invitations.component.mjs +14 -0
- package/esm2020/lib/components/invitations-table/invitations-table.component.mjs +70 -0
- package/esm2020/lib/components/label/label.component.mjs +25 -0
- package/esm2020/lib/components/list-dialog/list-dialog.component.mjs +68 -0
- package/esm2020/lib/components/loader/loader.component.mjs +25 -0
- package/esm2020/lib/components/login/login.component.mjs +127 -0
- package/esm2020/lib/components/logs/logs.component.mjs +37 -0
- package/esm2020/lib/components/membership/membership.component.mjs +48 -0
- package/esm2020/lib/components/message/messageDialog.component.mjs +33 -0
- package/esm2020/lib/components/money/currency-input-mask.directive.mjs +185 -0
- package/esm2020/lib/components/money/currency-input-mask.module.mjs +28 -0
- package/esm2020/lib/components/money/money.component.mjs +120 -0
- package/esm2020/lib/components/nav-menu/nav-menu.component.mjs +84 -0
- package/esm2020/lib/components/notifications/notifications.component.mjs +14 -0
- package/esm2020/lib/components/number/number.component.mjs +116 -0
- package/esm2020/lib/components/option/option.component.mjs +67 -0
- package/esm2020/lib/components/plans/plans.component.mjs +47 -0
- package/esm2020/lib/components/positions/positions.component.mjs +21 -0
- package/esm2020/lib/components/profile/profile.component.mjs +92 -0
- package/esm2020/lib/components/recover-account/recover-account.component.mjs +46 -0
- package/esm2020/lib/components/roles/addRoleDialog.component.mjs +60 -0
- package/esm2020/lib/components/roles/roles.component.mjs +91 -0
- package/esm2020/lib/components/search/search.component.mjs +31 -0
- package/esm2020/lib/components/select/select.component.mjs +138 -0
- package/esm2020/lib/components/settings/settings.component.mjs +62 -0
- package/esm2020/lib/components/signup/signup.component.mjs +50 -0
- package/esm2020/lib/components/steps/steps.component.mjs +90 -0
- package/esm2020/lib/components/suppliers/suppliers.component.mjs +50 -0
- package/esm2020/lib/components/table/detailsDialog.component.mjs +232 -0
- package/esm2020/lib/components/table/table.component.mjs +406 -0
- package/esm2020/lib/components/table-action/table-action.component.mjs +46 -0
- package/esm2020/lib/components/table-header/table-header.component.mjs +76 -0
- package/esm2020/lib/components/table-internal/detailsDialog-internal.component.mjs +226 -0
- package/esm2020/lib/components/table-internal/table-internal.component.mjs +406 -0
- package/esm2020/lib/components/table-row/table-row.component.mjs +58 -0
- package/esm2020/lib/components/tasks/tasks.component.mjs +86 -0
- package/esm2020/lib/components/tenant-settings/inviteDialog.component.mjs +60 -0
- package/esm2020/lib/components/tenant-settings/tenant-settings.component.mjs +155 -0
- package/esm2020/lib/components/tenants/tenants.component.mjs +47 -0
- package/esm2020/lib/components/text/text.component.mjs +181 -0
- package/esm2020/lib/components/tiles/tiles.component.mjs +81 -0
- package/esm2020/lib/components/tin-spa.component.mjs +19 -0
- package/esm2020/lib/components/transactions/transactDialog.component.mjs +80 -0
- package/esm2020/lib/components/transactions/transactions.component.mjs +101 -0
- package/esm2020/lib/components/users/users.component.mjs +118 -0
- package/esm2020/lib/components/viewer/viewer.component.mjs +79 -0
- package/esm2020/lib/components/viewer/viewerDialog.component.mjs +88 -0
- package/esm2020/lib/components/welcome/welcome.component.mjs +86 -0
- package/esm2020/lib/modules/admin/admin-routing.module.mjs +61 -0
- package/esm2020/lib/modules/admin/admin.module.mjs +26 -0
- package/esm2020/lib/modules/index/index-routing.module.mjs +27 -0
- package/esm2020/lib/modules/index/index.module.mjs +26 -0
- package/esm2020/lib/modules/spa-admin.module.mjs +71 -0
- package/esm2020/lib/modules/spa-index.module.mjs +54 -0
- package/esm2020/lib/modules/spa-mat.module.mjs +84 -0
- package/esm2020/lib/modules/spa-user.module.mjs +47 -0
- package/esm2020/lib/modules/user/user-routing.module.mjs +23 -0
- package/esm2020/lib/modules/user/user.module.mjs +26 -0
- package/esm2020/lib/pipes/camelToWords.pipe.mjs +17 -0
- package/esm2020/lib/services/auth.service.mjs +174 -0
- package/esm2020/lib/services/button.service.mjs +102 -0
- package/esm2020/lib/services/condition.service.mjs +32 -0
- package/esm2020/lib/services/datalib.service.mjs +387 -0
- package/esm2020/lib/services/dialog.service.mjs +81 -0
- package/esm2020/lib/services/export.service.mjs +16 -0
- package/esm2020/lib/services/http.service.mjs +79 -0
- package/esm2020/lib/services/loader-interceptor.service.mjs +86 -0
- package/esm2020/lib/services/loader.service.mjs +17 -0
- package/esm2020/lib/services/log.service.mjs +77 -0
- package/esm2020/lib/services/message.service.mjs +59 -0
- package/esm2020/lib/services/storage.service.mjs +34 -0
- package/esm2020/lib/services/table-config.service.mjs +30 -0
- package/esm2020/lib/services/tin-spa.service.mjs +14 -0
- package/esm2020/lib/tin-spa.module.mjs +183 -0
- package/esm2020/public-api.mjs +80 -0
- package/esm2020/tin-spa.mjs +5 -0
- package/fesm2015/tin-spa.mjs +7454 -0
- package/fesm2015/tin-spa.mjs.map +1 -0
- package/fesm2020/tin-spa.mjs +7410 -0
- package/fesm2020/tin-spa.mjs.map +1 -0
- package/index.d.ts +5 -3408
- package/lib/classes/Classes.d.ts +431 -0
- package/lib/classes/TinCore.d.ts +48 -0
- package/lib/components/accounts/accountDialog.component.d.ts +27 -0
- package/lib/components/accounts/accounts.component.d.ts +25 -0
- package/lib/components/activity/activity.component.d.ts +11 -0
- package/lib/components/alert/alert.component.d.ts +14 -0
- package/lib/components/attach/attach.component.d.ts +23 -0
- package/lib/components/bug/bug.component.d.ts +8 -0
- package/lib/components/change-password/change-password.component.d.ts +27 -0
- package/lib/components/check/check.component.d.ts +24 -0
- package/lib/components/chips/chips.component.d.ts +18 -0
- package/lib/components/create-account/create-account.component.d.ts +33 -0
- package/lib/components/customers/customers.component.d.ts +18 -0
- package/lib/components/date/date.component.d.ts +29 -0
- package/lib/components/datetime/datetime.component.d.ts +18 -0
- package/lib/components/departments/departments.component.d.ts +14 -0
- package/lib/components/employees/employees.component.d.ts +12 -0
- package/lib/components/filter/filter.component.d.ts +19 -0
- package/lib/components/form/form.component.d.ts +36 -0
- package/lib/components/grades/grades.component.d.ts +8 -0
- package/lib/components/inventory/inventory.component.d.ts +25 -0
- package/lib/components/inventory/quantityDialog.component.d.ts +23 -0
- package/lib/components/invitations/invitations.component.d.ts +8 -0
- package/lib/components/invitations-table/invitations-table.component.d.ts +19 -0
- package/lib/components/label/label.component.d.ts +11 -0
- package/lib/components/list-dialog/list-dialog.component.d.ts +23 -0
- package/lib/components/loader/loader.component.d.ts +12 -0
- package/lib/components/login/login.component.d.ts +39 -0
- package/lib/components/logs/logs.component.d.ts +18 -0
- package/lib/components/membership/membership.component.d.ts +17 -0
- package/lib/components/message/messageDialog.component.d.ts +15 -0
- package/lib/components/money/currency-input-mask.directive.d.ts +41 -0
- package/lib/components/money/currency-input-mask.module.d.ts +9 -0
- package/lib/components/money/money.component.d.ts +33 -0
- package/lib/components/nav-menu/nav-menu.component.d.ts +34 -0
- package/lib/components/notifications/notifications.component.d.ts +8 -0
- package/lib/components/number/number.component.d.ts +35 -0
- package/lib/components/option/option.component.d.ts +23 -0
- package/lib/components/plans/plans.component.d.ts +17 -0
- package/lib/components/positions/positions.component.d.ts +12 -0
- package/lib/components/profile/profile.component.d.ts +34 -0
- package/lib/components/recover-account/recover-account.component.d.ts +18 -0
- package/lib/components/roles/addRoleDialog.component.d.ts +24 -0
- package/lib/components/roles/roles.component.d.ts +30 -0
- package/lib/components/search/search.component.d.ts +13 -0
- package/lib/components/select/select.component.d.ts +42 -0
- package/lib/components/settings/settings.component.d.ts +19 -0
- package/lib/components/signup/signup.component.d.ts +23 -0
- package/lib/components/steps/steps.component.d.ts +18 -0
- package/lib/components/suppliers/suppliers.component.d.ts +17 -0
- package/lib/components/table/detailsDialog.component.d.ts +64 -0
- package/lib/components/table/table.component.d.ts +82 -0
- package/lib/components/table-action/table-action.component.d.ts +22 -0
- package/lib/components/table-header/table-header.component.d.ts +31 -0
- package/lib/components/table-internal/detailsDialog-internal.component.d.ts +64 -0
- package/lib/components/table-internal/table-internal.component.d.ts +82 -0
- package/lib/components/table-row/table-row.component.d.ts +28 -0
- package/lib/components/tasks/tasks.component.d.ts +27 -0
- package/lib/components/tenant-settings/inviteDialog.component.d.ts +28 -0
- package/lib/components/tenant-settings/tenant-settings.component.d.ts +42 -0
- package/lib/components/tenants/tenants.component.d.ts +17 -0
- package/lib/components/text/text.component.d.ts +46 -0
- package/lib/components/tiles/tiles.component.d.ts +25 -0
- package/lib/components/tin-spa.component.d.ts +5 -0
- package/lib/components/transactions/transactDialog.component.d.ts +26 -0
- package/lib/components/transactions/transactions.component.d.ts +31 -0
- package/lib/components/users/users.component.d.ts +36 -0
- package/lib/components/viewer/viewer.component.d.ts +25 -0
- package/lib/components/viewer/viewerDialog.component.d.ts +22 -0
- package/lib/components/welcome/welcome.component.d.ts +25 -0
- package/lib/modules/admin/admin-routing.module.d.ts +7 -0
- package/lib/modules/admin/admin.module.d.ts +9 -0
- package/lib/modules/index/index-routing.module.d.ts +7 -0
- package/lib/modules/index/index.module.d.ts +9 -0
- package/lib/modules/spa-admin.module.d.ts +15 -0
- package/lib/modules/spa-index.module.d.ts +13 -0
- package/lib/modules/spa-mat.module.d.ts +38 -0
- package/lib/modules/spa-user.module.d.ts +11 -0
- package/lib/modules/user/user-routing.module.d.ts +7 -0
- package/lib/modules/user/user.module.d.ts +9 -0
- package/lib/pipes/camelToWords.pipe.d.ts +7 -0
- package/lib/services/auth.service.d.ts +61 -0
- package/lib/services/button.service.d.ts +27 -0
- package/lib/services/condition.service.d.ts +10 -0
- package/lib/services/datalib.service.d.ts +77 -0
- package/lib/services/dialog.service.d.ts +19 -0
- package/lib/services/export.service.d.ts +6 -0
- package/lib/services/http.service.d.ts +22 -0
- package/lib/services/loader-interceptor.service.d.ts +22 -0
- package/lib/services/loader.service.d.ts +8 -0
- package/lib/services/log.service.d.ts +19 -0
- package/lib/services/message.service.d.ts +16 -0
- package/lib/services/storage.service.d.ts +10 -0
- package/lib/services/table-config.service.d.ts +9 -0
- package/lib/services/tin-spa.service.d.ts +6 -0
- package/lib/tin-spa.module.d.ts +66 -0
- package/package.json +13 -8
- package/public-api.d.ts +69 -0
- package/fesm2022/tin-spa.mjs +0 -12474
- package/fesm2022/tin-spa.mjs.map +0 -1
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { Core } from '../../classes/TinCore';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../services/message.service";
|
|
5
|
+
import * as i2 from "../../services/datalib.service";
|
|
6
|
+
import * as i3 from "@angular/common";
|
|
7
|
+
import * as i4 from "@angular/material/button";
|
|
8
|
+
import * as i5 from "../text/text.component";
|
|
9
|
+
import * as i6 from "../check/check.component";
|
|
10
|
+
import * as i7 from "../date/date.component";
|
|
11
|
+
import * as i8 from "../label/label.component";
|
|
12
|
+
import * as i9 from "../select/select.component";
|
|
13
|
+
import * as i10 from "../money/money.component";
|
|
14
|
+
import * as i11 from "../attach/attach.component";
|
|
15
|
+
import * as i12 from "../number/number.component";
|
|
16
|
+
import * as i13 from "../viewer/viewer.component";
|
|
17
|
+
import * as i14 from "../../pipes/camelToWords.pipe";
|
|
18
|
+
// import { DialogService } from '../../services/dialog.service';
|
|
19
|
+
// import { DetailsDialog } from '../table/detailsDialog.component';
|
|
20
|
+
export class FormComponent {
|
|
21
|
+
constructor(messageService, dataService) {
|
|
22
|
+
this.messageService = messageService;
|
|
23
|
+
this.dataService = dataService;
|
|
24
|
+
this.files = [];
|
|
25
|
+
this.buttonDisplay = "Submit";
|
|
26
|
+
this.isProcessing = false;
|
|
27
|
+
this.multiColumn = false;
|
|
28
|
+
this.buttonClick = new EventEmitter();
|
|
29
|
+
this.inputChange = new EventEmitter();
|
|
30
|
+
}
|
|
31
|
+
ngOnInit() {
|
|
32
|
+
if (!this.config.fields) {
|
|
33
|
+
this.messageService.toast("Please Configure Form Fields");
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
if (!this.data) {
|
|
37
|
+
this.messageService.toast("Please Configure Form Data");
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
this.fields = this.config.fields;
|
|
41
|
+
if (this.config.multiColumn) {
|
|
42
|
+
this.multiColumn = this.config.multiColumn;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
this.multiColumn = this.fields.length > 2;
|
|
46
|
+
}
|
|
47
|
+
if (this.config?.button?.display) {
|
|
48
|
+
this.buttonDisplay = this.config.button.display;
|
|
49
|
+
}
|
|
50
|
+
this.fileField = this.fields.find(x => x.type == 'file');
|
|
51
|
+
if (this.config?.button?.action && this.fileField) {
|
|
52
|
+
this.config.button.action.isFormData = true;
|
|
53
|
+
}
|
|
54
|
+
this.childFields = this.fields.filter(x => x.masterField);
|
|
55
|
+
this.childFields.forEach(child => {
|
|
56
|
+
let master = this.fields.find(x => x.name == child.masterField);
|
|
57
|
+
this.updateChildOptions(master);
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
ngOnChanges() {
|
|
61
|
+
}
|
|
62
|
+
ngAfterViewInit() {
|
|
63
|
+
}
|
|
64
|
+
getVisibleFields() {
|
|
65
|
+
return this.fields?.filter(x => Core.testVisible(this.config, this.data, x));
|
|
66
|
+
}
|
|
67
|
+
testReadOnly(f) {
|
|
68
|
+
if (this.config.mode == 'create') {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
if (f.readonly)
|
|
72
|
+
return true;
|
|
73
|
+
if (this.config.mode == 'view') {
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
if (f.readonlyCondition) {
|
|
77
|
+
return f.readonlyCondition(this.data);
|
|
78
|
+
}
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
inputChanged(field, value) {
|
|
82
|
+
this.inputChange.emit({ field: field, value: value });
|
|
83
|
+
this.updateChildOptions(field);
|
|
84
|
+
if (this.config.mode == 'create' && field.child) {
|
|
85
|
+
let child = this.fields.find(x => x.name == field.child.childField);
|
|
86
|
+
this.data[child.name] = field.options.find(x => x[field.optionValue] == value)[field.child.childValueField];
|
|
87
|
+
}
|
|
88
|
+
if (this.config.mode == 'create' && field.children) {
|
|
89
|
+
console.log("Children found");
|
|
90
|
+
field.children.forEach(childConfig => {
|
|
91
|
+
let child = this.fields.find(x => x.name == childConfig.childField);
|
|
92
|
+
console.log("Child found");
|
|
93
|
+
this.data[child.name] = field.options.find(x => x[field.optionValue] == value)[childConfig.childValueField];
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
updateChildOptions(masterField) {
|
|
98
|
+
let child = this.childFields.find(x => x.masterField == masterField.name);
|
|
99
|
+
if (child != null) {
|
|
100
|
+
//current is master
|
|
101
|
+
//filter child options based on master value
|
|
102
|
+
child.options = child.masterOptions.filter(x => x[masterField.optionValue] == this.data[masterField.name]);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
handleInfoClick(field) {
|
|
106
|
+
if (field.infoMessage) {
|
|
107
|
+
this.messageService.info(field.infoMessage);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
buttonClicked() {
|
|
111
|
+
this.buttonClick.emit(this.data);
|
|
112
|
+
let button = this.config.button;
|
|
113
|
+
if (!button) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
//validation
|
|
117
|
+
let resp = Core.validateObject(this.getVisibleFields(), this.data);
|
|
118
|
+
if (resp != '') {
|
|
119
|
+
this.messageService.toast(resp);
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
if (this.files.length < 1 && this.fileField?.required && this.config.mode == 'create') {
|
|
123
|
+
this.messageService.toast("Please attach file(s)");
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
if (button.confirm) {
|
|
127
|
+
this.messageService.confirm(`${button.confirm.message}`).subscribe((result) => {
|
|
128
|
+
if (result == "yes") {
|
|
129
|
+
this.processCall(button);
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
this.processCall(button);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
processCall(button) {
|
|
138
|
+
if (!button.action)
|
|
139
|
+
return;
|
|
140
|
+
let dataOut;
|
|
141
|
+
if (button.action.isFormData) {
|
|
142
|
+
let formData = new FormData();
|
|
143
|
+
for (let i = 0; i < this.files.length; i++) {
|
|
144
|
+
formData.append(`uploadFile${i}`, this.files[i], this.files[i].name);
|
|
145
|
+
}
|
|
146
|
+
formData.append("data", JSON.stringify(this.data));
|
|
147
|
+
dataOut = formData;
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
dataOut = this.data;
|
|
151
|
+
}
|
|
152
|
+
this.isProcessing = true;
|
|
153
|
+
this.dataService.CallApi(button.action, dataOut).subscribe((apiResponse) => {
|
|
154
|
+
this.isProcessing = false;
|
|
155
|
+
if (apiResponse.success) {
|
|
156
|
+
if (button.action.successMessage) {
|
|
157
|
+
this.messageService.toast(button.action.successMessage);
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
this.messageService.toast("Submitted");
|
|
161
|
+
}
|
|
162
|
+
if (this.config.reset) {
|
|
163
|
+
Core.resetObject(this.fields, this.data);
|
|
164
|
+
this.files = [];
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
this.messageService.toast("Error: " + apiResponse.message);
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
processForm() {
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
FormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FormComponent, deps: [{ token: i1.MessageService }, { token: i2.DataServiceLib }], target: i0.ɵɵFactoryTarget.Component });
|
|
176
|
+
FormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FormComponent, selector: "spa-form", inputs: { files: "files", data: "data", config: "config" }, outputs: { buttonClick: "buttonClick", inputChange: "inputChange" }, usesOnChanges: true, ngImport: i0, template: "\r\n<div [ngClass]=\"multiColumn ? 'tin-grid' : 'tin-col'\">\r\n\r\n <div [ngClass]=\"field.span || field.type =='section' || field.type =='file' || field.type =='file-view' ? 'span-col' : ''\" *ngFor=\"let field of getVisibleFields()\">\r\n\r\n <ng-container >\r\n\r\n <ng-container [ngSwitch]=\"field.type\" class=\"highlight\">\r\n\r\n <div *ngSwitchCase=\"'section'\" class=\"title\">\r\n <label style=\"font-size: larger;\">{{field.name | camelToWords}}</label>\r\n </div>\r\n\r\n <ng-container *ngSwitchCase=\"'file'\">\r\n <div class=\"mt-1 mb-2\" *ngIf=\"config.mode !='view'\">\r\n <spa-attach message=\"Drag and Drop files here\" [(files)]=\"files\"></spa-attach>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'file-view'\">\r\n <div class=\"mt-1 mb-2\" *ngIf=\"config.mode && config.mode !='create'\">\r\n <spa-viewer [fileAction]=\"config.fileAction\" [path]=\"field.path\" [folderName]=\"data[field.keyFiledName]\" ></spa-viewer>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <label *ngSwitchCase=\"'blank'\"></label>\r\n\r\n <spa-label *ngSwitchCase=\"'label'\" [display]=\"field.alias ?? field.name | camelToWords\" [value]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" ></spa-label>\r\n\r\n <spa-number *ngSwitchCase=\"'number'\" [display]=\"field.alias ?? field.name | camelToWords\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [required]=\"field.required\" [min]=\"field.min\" [max]=\"field.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" (infoClick)=\"handleInfoClick(field)\" [suffix]=\"field.suffix\"></spa-number>\r\n\r\n <spa-money *ngSwitchCase=\"'money'\" [display]=\"field.alias ?? field.name | camelToWords\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [required]=\"field.required\" [min]=\"field.min\" [max]=\"field.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" (infoClick)=\"handleInfoClick(field)\"></spa-money>\r\n\r\n <spa-check *ngSwitchCase=\"'checkbox'\" [display]=\"field.alias ?? field.name | camelToWords\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [readonly]=\"testReadOnly(field)\" [infoMessage]=\"field.infoMessage\" (infoClick)=\"handleInfoClick(field)\"></spa-check>\r\n\r\n <spa-date *ngSwitchCase=\"'date'\" [display]=\"field.alias ?? field.name | camelToWords\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [min]=\"field?.min\" [max]=\"field?.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" (infoClick)=\"handleInfoClick(field)\"></spa-date>\r\n\r\n <spa-select *ngSwitchCase=\"'select'\"\r\n [display]=\"field.alias ?? field.name | camelToWords\" [nullable]=\"field.nullable\"\r\n [options]=\"field.options\" [masterOptions]=\"field.masterOptions\" [optionDisplay]=\"field.optionDisplay ?? 'name'\" [optionValue]=\"field.optionValue ?? 'value'\"\r\n [(value)]=\"data[field.name]\" [defaultFirstValue]=\"field.defaultFirstValue\" (valueChange)=\"inputChanged(field, data[field.name])\"\r\n [readonly]=\"testReadOnly(field)\"\r\n [hint]=\"field.hint\"\r\n [peekConfig]=\"field.peekConfig\"\r\n [infoMessage]=\"field.infoMessage\"\r\n >\r\n </spa-select>\r\n\r\n <spa-select *ngSwitchCase=\"'multi-select'\" [display]=\"field.alias ?? field.name | camelToWords\" [options]=\"field.options\" [optionDisplay]=\"field.optionDisplay ?? 'name'\" [optionValue]=\"field.optionValue ?? 'value'\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [readonly]=\"testReadOnly(field)\" [multiple]=\"true\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" (infoClick)=\"handleInfoClick(field)\">\r\n </spa-select>\r\n\r\n <spa-text *ngSwitchDefault [display]=\"field.alias ?? field.name | camelToWords\" [options]=\"field.options\" [optionValue]=\"field.optionValue ?? 'value'\" [rows]=\"field.rows\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field,data[field.name])\" [required]=\"field.required\" [min]=\"field.min\" [max]=\"field.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" (infoClick)=\"handleInfoClick(field)\" [suffix]=\"field.suffix\"></spa-text>\r\n\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"span-col-center\" *ngIf=\"config.button\">\r\n <button mat-raised-button color=\"primary\" (click)=\"buttonClicked()\" cdkFocusInitial>{{buttonDisplay}}</button>\r\n </div>\r\n\r\n\r\n</div>\r\n", styles: [".title{margin-top:1em;font-size:larger;font-weight:300}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.TextComponent, selector: "spa-text", inputs: ["readonly", "hint", "display", "placeholder", "value", "format", "type", "rows", "width", "options", "optionValue", "required", "min", "max", "regex", "suffix", "infoMessage"], outputs: ["valueChange", "leave", "enterPress", "infoClick"] }, { kind: "component", type: i6.CheckComponent, selector: "spa-check", inputs: ["readonly", "display", "value", "infoMessage"], outputs: ["valueChange", "click", "check", "uncheck", "infoClick"] }, { kind: "component", type: i7.DateComponent, selector: "spa-date", inputs: ["required", "min", "max", "readonly", "hint", "value", "display", "placeholder", "width", "infoMessage"], outputs: ["valueChange", "infoClick"] }, { kind: "component", type: i8.LabelComponent, selector: "spa-label", inputs: ["display", "value", "format"] }, { kind: "component", type: i9.SelectComponent, selector: "spa-select", inputs: ["width", "readonly", "required", "defaultFirstValue", "readonlyMode", "hint", "placeholder", "multiple", "display", "value", "options", "masterOptions", "optionValue", "optionDisplay", "optionDisplayExtra", "nullable", "peekConfig", "infoMessage"], outputs: ["valueChange", "infoClick"] }, { kind: "component", type: i10.MoneyComponent, selector: "spa-money", inputs: ["readonly", "hint", "display", "placeholder", "value", "width", "currency", "required", "min", "max", "infoMessage"], outputs: ["valueChange", "leave", "enterPress", "infoClick"] }, { kind: "component", type: i11.AttachComponent, selector: "spa-attach", inputs: ["message", "files", "enableUpload"], outputs: ["filesChange", "upload"] }, { kind: "component", type: i12.NumberComponent, selector: "spa-number", inputs: ["readonly", "hint", "display", "placeholder", "value", "width", "required", "min", "max", "step", "suffix", "infoMessage"], outputs: ["valueChange", "leave", "enterPress", "infoClick"] }, { kind: "component", type: i13.ViewerComponent, selector: "spa-viewer", inputs: ["fileAction", "path", "folderName", "fileNames", "removable", "display", "title"], outputs: ["remove"] }, { kind: "pipe", type: i14.CamelToWordsPipe, name: "camelToWords" }] });
|
|
177
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FormComponent, decorators: [{
|
|
178
|
+
type: Component,
|
|
179
|
+
args: [{ selector: 'spa-form', template: "\r\n<div [ngClass]=\"multiColumn ? 'tin-grid' : 'tin-col'\">\r\n\r\n <div [ngClass]=\"field.span || field.type =='section' || field.type =='file' || field.type =='file-view' ? 'span-col' : ''\" *ngFor=\"let field of getVisibleFields()\">\r\n\r\n <ng-container >\r\n\r\n <ng-container [ngSwitch]=\"field.type\" class=\"highlight\">\r\n\r\n <div *ngSwitchCase=\"'section'\" class=\"title\">\r\n <label style=\"font-size: larger;\">{{field.name | camelToWords}}</label>\r\n </div>\r\n\r\n <ng-container *ngSwitchCase=\"'file'\">\r\n <div class=\"mt-1 mb-2\" *ngIf=\"config.mode !='view'\">\r\n <spa-attach message=\"Drag and Drop files here\" [(files)]=\"files\"></spa-attach>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'file-view'\">\r\n <div class=\"mt-1 mb-2\" *ngIf=\"config.mode && config.mode !='create'\">\r\n <spa-viewer [fileAction]=\"config.fileAction\" [path]=\"field.path\" [folderName]=\"data[field.keyFiledName]\" ></spa-viewer>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <label *ngSwitchCase=\"'blank'\"></label>\r\n\r\n <spa-label *ngSwitchCase=\"'label'\" [display]=\"field.alias ?? field.name | camelToWords\" [value]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" ></spa-label>\r\n\r\n <spa-number *ngSwitchCase=\"'number'\" [display]=\"field.alias ?? field.name | camelToWords\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [required]=\"field.required\" [min]=\"field.min\" [max]=\"field.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" (infoClick)=\"handleInfoClick(field)\" [suffix]=\"field.suffix\"></spa-number>\r\n\r\n <spa-money *ngSwitchCase=\"'money'\" [display]=\"field.alias ?? field.name | camelToWords\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [required]=\"field.required\" [min]=\"field.min\" [max]=\"field.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" (infoClick)=\"handleInfoClick(field)\"></spa-money>\r\n\r\n <spa-check *ngSwitchCase=\"'checkbox'\" [display]=\"field.alias ?? field.name | camelToWords\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [readonly]=\"testReadOnly(field)\" [infoMessage]=\"field.infoMessage\" (infoClick)=\"handleInfoClick(field)\"></spa-check>\r\n\r\n <spa-date *ngSwitchCase=\"'date'\" [display]=\"field.alias ?? field.name | camelToWords\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [min]=\"field?.min\" [max]=\"field?.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" (infoClick)=\"handleInfoClick(field)\"></spa-date>\r\n\r\n <spa-select *ngSwitchCase=\"'select'\"\r\n [display]=\"field.alias ?? field.name | camelToWords\" [nullable]=\"field.nullable\"\r\n [options]=\"field.options\" [masterOptions]=\"field.masterOptions\" [optionDisplay]=\"field.optionDisplay ?? 'name'\" [optionValue]=\"field.optionValue ?? 'value'\"\r\n [(value)]=\"data[field.name]\" [defaultFirstValue]=\"field.defaultFirstValue\" (valueChange)=\"inputChanged(field, data[field.name])\"\r\n [readonly]=\"testReadOnly(field)\"\r\n [hint]=\"field.hint\"\r\n [peekConfig]=\"field.peekConfig\"\r\n [infoMessage]=\"field.infoMessage\"\r\n >\r\n </spa-select>\r\n\r\n <spa-select *ngSwitchCase=\"'multi-select'\" [display]=\"field.alias ?? field.name | camelToWords\" [options]=\"field.options\" [optionDisplay]=\"field.optionDisplay ?? 'name'\" [optionValue]=\"field.optionValue ?? 'value'\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [readonly]=\"testReadOnly(field)\" [multiple]=\"true\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" (infoClick)=\"handleInfoClick(field)\">\r\n </spa-select>\r\n\r\n <spa-text *ngSwitchDefault [display]=\"field.alias ?? field.name | camelToWords\" [options]=\"field.options\" [optionValue]=\"field.optionValue ?? 'value'\" [rows]=\"field.rows\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field,data[field.name])\" [required]=\"field.required\" [min]=\"field.min\" [max]=\"field.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" (infoClick)=\"handleInfoClick(field)\" [suffix]=\"field.suffix\"></spa-text>\r\n\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"span-col-center\" *ngIf=\"config.button\">\r\n <button mat-raised-button color=\"primary\" (click)=\"buttonClicked()\" cdkFocusInitial>{{buttonDisplay}}</button>\r\n </div>\r\n\r\n\r\n</div>\r\n", styles: [".title{margin-top:1em;font-size:larger;font-weight:300}\n"] }]
|
|
180
|
+
}], ctorParameters: function () { return [{ type: i1.MessageService }, { type: i2.DataServiceLib }]; }, propDecorators: { files: [{
|
|
181
|
+
type: Input
|
|
182
|
+
}], data: [{
|
|
183
|
+
type: Input
|
|
184
|
+
}], config: [{
|
|
185
|
+
type: Input
|
|
186
|
+
}], buttonClick: [{
|
|
187
|
+
type: Output
|
|
188
|
+
}], inputChange: [{
|
|
189
|
+
type: Output
|
|
190
|
+
}] } });
|
|
191
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90aW4tc3BhL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2Zvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBRzdDLGlFQUFpRTtBQUNqRSxvRUFBb0U7QUFPcEUsTUFBTSxPQUFPLGFBQWE7SUFFeEIsWUFBcUIsY0FBOEIsRUFBVSxXQUEyQjtRQUFuRSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFrRi9FLFVBQUssR0FBVSxFQUFFLENBQUM7UUFFM0Isa0JBQWEsR0FBRyxRQUFRLENBQUM7UUFDekIsaUJBQVksR0FBYSxLQUFLLENBQUM7UUFDL0IsZ0JBQVcsR0FBYSxLQUFLLENBQUM7UUFNcEIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQTdGaUQsQ0FBQztJQUU3RixRQUFRO1FBRU4sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFDO1lBQ3RCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUE7WUFDekQsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDZCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyw0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QUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29uZmlnLCBGaWVsZCwgQnV0dG9uIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9DbGFzc2VzJztcclxuaW1wb3J0IHsgQ29yZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvVGluQ29yZSc7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWVzc2FnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0YVNlcnZpY2VMaWIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhbGliLnNlcnZpY2UnO1xyXG4vLyBpbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGlhbG9nLnNlcnZpY2UnO1xyXG4vLyBpbXBvcnQgeyBEZXRhaWxzRGlhbG9nIH0gZnJvbSAnLi4vdGFibGUvZGV0YWlsc0RpYWxvZy5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzcGEtZm9ybScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Zvcm0uY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IoIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLCBwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZUxpYikgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG5cclxuICAgIGlmICghdGhpcy5jb25maWcuZmllbGRzKXtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChcIlBsZWFzZSBDb25maWd1cmUgRm9ybSBGaWVsZHNcIilcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5kYXRhKSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoXCJQbGVhc2UgQ29uZmlndXJlIEZvcm0gRGF0YVwiKVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5maWVsZHMgPSB0aGlzLmNvbmZpZy5maWVsZHM7XHJcblxyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZy5tdWx0aUNvbHVtbil7XHJcbiAgICAgIHRoaXMubXVsdGlDb2x1bW4gPSB0aGlzLmNvbmZpZy5tdWx0aUNvbHVtblxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMubXVsdGlDb2x1bW4gPSB0aGlzLmZpZWxkcy5sZW5ndGggPiAyXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY29uZmlnPy5idXR0b24/LmRpc3BsYXkpe1xyXG4gICAgICB0aGlzLmJ1dHRvbkRpc3BsYXkgPSB0aGlzLmNvbmZpZy5idXR0b24uZGlzcGxheTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZpbGVGaWVsZCA9IHRoaXMuZmllbGRzLmZpbmQoeCA9PiB4LnR5cGUgPT0gJ2ZpbGUnKVxyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZz8uYnV0dG9uPy5hY3Rpb24gJiYgdGhpcy5maWxlRmllbGQpIHtcclxuICAgICAgdGhpcy5jb25maWcuYnV0dG9uLmFjdGlvbi5pc0Zvcm1EYXRhID0gdHJ1ZTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jaGlsZEZpZWxkcyA9IHRoaXMuZmllbGRzLmZpbHRlcih4ID0+IHgubWFzdGVyRmllbGQpXHJcblxyXG4gICAgdGhpcy5jaGlsZEZpZWxkcy5mb3JFYWNoKGNoaWxkID0+IHtcclxuICAgICAgbGV0IG1hc3RlciA9IHRoaXMuZmllbGRzLmZpbmQoeCA9PiB4Lm5hbWUgPT0gY2hpbGQubWFzdGVyRmllbGQpXHJcbiAgICAgIHRoaXMudXBkYXRlQ2hpbGRPcHRpb25zKG1hc3Rlcik7XHJcblxyXG4gICAgfSk7XHJcblxyXG5cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKCkge1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gIH1cclxuXHJcbiAgZ2V0VmlzaWJsZUZpZWxkcygpe1xyXG4gICAgcmV0dXJuIHRoaXMuZmllbGRzPy5maWx0ZXIoeCA9PiBDb3JlLnRlc3RWaXNpYmxlKHRoaXMuY29uZmlnLCB0aGlzLmRhdGEsIHgpKVxyXG4gIH1cclxuXHJcblxyXG5cclxuICB0ZXN0UmVhZE9ubHkoZjogRmllbGQpOiBib29sZWFuIHtcclxuXHJcblxyXG4gICAgaWYgKHRoaXMuY29uZmlnLm1vZGUgPT0gJ2NyZWF0ZScpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChmLnJlYWRvbmx5KSByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICBpZiAodGhpcy5jb25maWcubW9kZSA9PSAndmlldycpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGlmIChmLnJlYWRvbmx5Q29uZGl0aW9uKSB7XHJcbiAgICAgIHJldHVybiBmLnJlYWRvbmx5Q29uZGl0aW9uKHRoaXMuZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcblxyXG4gIGZpbGVOYW1lc1xyXG4gIGZpbGVGaWVsZDogRmllbGQ7XHJcbiAgZmlsZVZpZXdGaWVsZDogRmllbGQ7XHJcbiAgQElucHV0KCkgZmlsZXM6IGFueVtdID0gW107XHJcbiAgZmllbGRzOiBGaWVsZFtdO1xyXG4gIGJ1dHRvbkRpc3BsYXkgPSBcIlN1Ym1pdFwiO1xyXG4gIGlzUHJvY2Vzc2luZyA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBtdWx0aUNvbHVtbiA6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY2hpbGRGaWVsZHMgOiBGaWVsZFtdO1xyXG5cclxuICBASW5wdXQoKSBkYXRhOiBhbnk7XHJcbiAgQElucHV0KCkgY29uZmlnOiBGb3JtQ29uZmlnO1xyXG4gIEBPdXRwdXQoKSBidXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgaW5wdXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGlucHV0Q2hhbmdlZChmaWVsZCA6IEZpZWxkLCB2YWx1ZSl7XHJcblxyXG5cclxuICAgIHRoaXMuaW5wdXRDaGFuZ2UuZW1pdCh7IGZpZWxkOiBmaWVsZCwgdmFsdWU6IHZhbHVlfSlcclxuXHJcbiAgICB0aGlzLnVwZGF0ZUNoaWxkT3B0aW9ucyhmaWVsZClcclxuXHJcbiAgICBpZiAodGhpcy5jb25maWcubW9kZSA9PSAnY3JlYXRlJyAmJiBmaWVsZC5jaGlsZCl7XHJcblxyXG4gICAgICBsZXQgY2hpbGQgPSB0aGlzLmZpZWxkcy5maW5kKHggPT4geC5uYW1lID09IGZpZWxkLmNoaWxkLmNoaWxkRmllbGQpXHJcbiAgICAgIHRoaXMuZGF0YVtjaGlsZC5uYW1lXSA9IGZpZWxkLm9wdGlvbnMuZmluZCh4ID0+IHhbZmllbGQub3B0aW9uVmFsdWVdID09IHZhbHVlKVtmaWVsZC5jaGlsZC5jaGlsZFZhbHVlRmllbGRdXHJcblxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBpZiAodGhpcy5jb25maWcubW9kZSA9PSAnY3JlYXRlJyAmJiBmaWVsZC5jaGlsZHJlbil7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiQ2hpbGRyZW4gZm91bmRcIilcclxuXHJcbiAgICAgIGZpZWxkLmNoaWxkcmVuLmZvckVhY2goY2hpbGRDb25maWcgPT4ge1xyXG5cclxuICAgICAgICBsZXQgY2hpbGQgPSB0aGlzLmZpZWxkcy5maW5kKHggPT4geC5uYW1lID09IGNoaWxkQ29uZmlnLmNoaWxkRmllbGQpXHJcbiAgICAgICAgY29uc29sZS5sb2coXCJDaGlsZCBmb3VuZFwiKVxyXG5cclxuICAgICAgICB0aGlzLmRhdGFbY2hpbGQubmFtZV0gPSBmaWVsZC5vcHRpb25zLmZpbmQoeCA9PiB4W2ZpZWxkLm9wdGlvblZhbHVlXSA9PSB2YWx1ZSlbY2hpbGRDb25maWcuY2hpbGRWYWx1ZUZpZWxkXVxyXG5cclxuICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHVwZGF0ZUNoaWxkT3B0aW9ucyhtYXN0ZXJGaWVsZDogRmllbGQpe1xyXG5cclxuICAgIGxldCBjaGlsZCA9IHRoaXMuY2hpbGRGaWVsZHMuZmluZCh4ID0+IHgubWFzdGVyRmllbGQgPT0gbWFzdGVyRmllbGQubmFtZSlcclxuICAgIGlmIChjaGlsZCAhPSBudWxsKSB7XHJcblxyXG4gICAgICAvL2N1cnJlbnQgaXMgbWFzdGVyXHJcblxyXG4gICAgICAvL2ZpbHRlciBjaGlsZCBvcHRpb25zIGJhc2VkIG9uIG1hc3RlciB2YWx1ZVxyXG4gICAgICBjaGlsZC5vcHRpb25zID0gY2hpbGQubWFzdGVyT3B0aW9ucy5maWx0ZXIoeCA9PiB4W21hc3RlckZpZWxkLm9wdGlvblZhbHVlXSA9PSB0aGlzLmRhdGFbbWFzdGVyRmllbGQubmFtZV0pXHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG5cclxuICBoYW5kbGVJbmZvQ2xpY2soZmllbGQ6IEZpZWxkKSB7XHJcbiAgICBpZiAoZmllbGQuaW5mb01lc3NhZ2UpIHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5pbmZvKGZpZWxkLmluZm9NZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGJ1dHRvbkNsaWNrZWQoKXtcclxuXHJcbiAgICB0aGlzLmJ1dHRvbkNsaWNrLmVtaXQodGhpcy5kYXRhKTtcclxuXHJcbiAgICBsZXQgYnV0dG9uID0gdGhpcy5jb25maWcuYnV0dG9uO1xyXG5cclxuICAgIGlmICghYnV0dG9uKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvL3ZhbGlkYXRpb25cclxuICAgIGxldCByZXNwID0gQ29yZS52YWxpZGF0ZU9iamVjdCh0aGlzLmdldFZpc2libGVGaWVsZHMoKSx0aGlzLmRhdGEpO1xyXG4gICAgaWYgKHJlc3AgIT0gJycpe1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KHJlc3ApXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIGlmICh0aGlzLmZpbGVzLmxlbmd0aCA8IDEgJiYgdGhpcy5maWxlRmllbGQ/LnJlcXVpcmVkICYmIHRoaXMuY29uZmlnLm1vZGUgPT0nY3JlYXRlJykge1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiUGxlYXNlIGF0dGFjaCBmaWxlKHMpXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGlmIChidXR0b24uY29uZmlybSl7XHJcblxyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmNvbmZpcm0oYCR7YnV0dG9uLmNvbmZpcm0ubWVzc2FnZX1gKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQgPT0gXCJ5ZXNcIikge1xyXG4gICAgICAgICAgdGhpcy5wcm9jZXNzQ2FsbChidXR0b24pXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5wcm9jZXNzQ2FsbChidXR0b24pXHJcbiAgICB9XHJcblxyXG5cclxuXHJcblxyXG4gIH1cclxuXHJcbiAgcHJvY2Vzc0NhbGwoYnV0dG9uOiBCdXR0b24pe1xyXG5cclxuICAgIGlmICghYnV0dG9uLmFjdGlvbikgcmV0dXJuXHJcblxyXG4gICAgbGV0IGRhdGFPdXQ7XHJcblxyXG4gICAgaWYgKGJ1dHRvbi5hY3Rpb24uaXNGb3JtRGF0YSl7XHJcblxyXG4gICAgICBsZXQgZm9ybURhdGE6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5maWxlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZChgdXBsb2FkRmlsZSR7aX1gLCB0aGlzLmZpbGVzW2ldLCB0aGlzLmZpbGVzW2ldLm5hbWUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoXCJkYXRhXCIsIEpTT04uc3RyaW5naWZ5KHRoaXMuZGF0YSkpO1xyXG5cclxuXHJcbiAgICAgIGRhdGFPdXQgPSBmb3JtRGF0YVxyXG4gICAgfWVsc2V7XHJcblxyXG4gICAgICBkYXRhT3V0ID0gdGhpcy5kYXRhXHJcbiAgICB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgICB0aGlzLmlzUHJvY2Vzc2luZyA9IHRydWVcclxuICAgIHRoaXMuZGF0YVNlcnZpY2UuQ2FsbEFwaShidXR0b24uYWN0aW9uLCBkYXRhT3V0KS5zdWJzY3JpYmUoKGFwaVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gZmFsc2VcclxuXHJcbiAgICAgIGlmIChhcGlSZXNwb25zZS5zdWNjZXNzKSB7XHJcblxyXG4gICAgICAgIGlmIChidXR0b24uYWN0aW9uLnN1Y2Nlc3NNZXNzYWdlKSB7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KGJ1dHRvbi5hY3Rpb24uc3VjY2Vzc01lc3NhZ2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiU3VibWl0dGVkXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLnJlc2V0KSB7XHJcbiAgICAgICAgICBDb3JlLnJlc2V0T2JqZWN0KHRoaXMuZmllbGRzLCB0aGlzLmRhdGEpXHJcbiAgICAgICAgICB0aGlzLmZpbGVzID0gW107XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChcIkVycm9yOiBcIiArIGFwaVJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByb2Nlc3NGb3JtKCl7XHJcblxyXG5cclxuXHJcblxyXG5cclxuICB9XHJcblxyXG59XHJcblxyXG5cclxuIiwiXHJcbjxkaXYgW25nQ2xhc3NdPVwibXVsdGlDb2x1bW4gPyAndGluLWdyaWQnIDogJ3Rpbi1jb2wnXCI+XHJcblxyXG4gIDxkaXYgW25nQ2xhc3NdPVwiZmllbGQuc3BhbiB8fCBmaWVsZC50eXBlID09J3NlY3Rpb24nIHx8IGZpZWxkLnR5cGUgPT0nZmlsZScgfHwgZmllbGQudHlwZSA9PSdmaWxlLXZpZXcnICA/ICdzcGFuLWNvbCcgOiAnJ1wiICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBnZXRWaXNpYmxlRmllbGRzKClcIj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICA+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJmaWVsZC50eXBlXCIgY2xhc3M9XCJoaWdobGlnaHRcIj5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ3NlY3Rpb24nXCIgY2xhc3M9XCJ0aXRsZVwiPlxyXG4gICAgICAgICAgPGxhYmVsIHN0eWxlPVwiZm9udC1zaXplOiBsYXJnZXI7XCI+e3tmaWVsZC5uYW1lIHwgY2FtZWxUb1dvcmRzfX08L2xhYmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZmlsZSdcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0xIG1iLTJcIiAqbmdJZj1cImNvbmZpZy5tb2RlICE9J3ZpZXcnXCI+XHJcbiAgICAgICAgICAgIDxzcGEtYXR0YWNoIG1lc3NhZ2U9XCJEcmFnIGFuZCBEcm9wIGZpbGVzIGhlcmVcIiBbKGZpbGVzKV09XCJmaWxlc1wiPjwvc3BhLWF0dGFjaD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZmlsZS12aWV3J1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTEgbWItMlwiICpuZ0lmPVwiY29uZmlnLm1vZGUgJiYgY29uZmlnLm1vZGUgIT0nY3JlYXRlJ1wiPlxyXG4gICAgICAgICAgICA8c3BhLXZpZXdlciBbZmlsZUFjdGlvbl09XCJjb25maWcuZmlsZUFjdGlvblwiIFtwYXRoXT1cImZpZWxkLnBhdGhcIiBbZm9sZGVyTmFtZV09XCJkYXRhW2ZpZWxkLmtleUZpbGVkTmFtZV1cIiA+PC9zcGEtdmlld2VyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuICAgICAgICA8bGFiZWwgKm5nU3dpdGNoQ2FzZT1cIidibGFuaydcIj48L2xhYmVsPlxyXG5cclxuICAgICAgICA8c3BhLWxhYmVsICpuZ1N3aXRjaENhc2U9XCInbGFiZWwnXCIgW2Rpc3BsYXldPVwiZmllbGQuYWxpYXMgPz8gZmllbGQubmFtZSB8IGNhbWVsVG9Xb3Jkc1wiIFt2YWx1ZV09XCJkYXRhW2ZpZWxkLm5hbWVdXCIgKHZhbHVlQ2hhbmdlKT1cImlucHV0Q2hhbmdlZChmaWVsZCwgZGF0YVtmaWVsZC5uYW1lXSlcIiA+PC9zcGEtbGFiZWw+XHJcblxyXG4gICAgICAgIDxzcGEtbnVtYmVyICpuZ1N3aXRjaENhc2U9XCInbnVtYmVyJ1wiIFtkaXNwbGF5XT1cImZpZWxkLmFsaWFzID8/IGZpZWxkLm5hbWUgfCBjYW1lbFRvV29yZHNcIiBbKHZhbHVlKV09XCJkYXRhW2ZpZWxkLm5hbWVdXCIgKHZhbHVlQ2hhbmdlKT1cImlucHV0Q2hhbmdlZChmaWVsZCwgZGF0YVtmaWVsZC5uYW1lXSlcIiBbcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIiBbbWluXT1cImZpZWxkLm1pblwiIFttYXhdPVwiZmllbGQubWF4XCIgW3JlYWRvbmx5XT1cInRlc3RSZWFkT25seShmaWVsZClcIiBbaGludF09XCJmaWVsZC5oaW50XCIgW2luZm9NZXNzYWdlXT1cImZpZWxkLmluZm9NZXNzYWdlXCIgKGluZm9DbGljayk9XCJoYW5kbGVJbmZvQ2xpY2soZmllbGQpXCIgW3N1ZmZpeF09XCJmaWVsZC5zdWZmaXhcIj48L3NwYS1udW1iZXI+XHJcblxyXG4gICAgICAgIDxzcGEtbW9uZXkgKm5nU3dpdGNoQ2FzZT1cIidtb25leSdcIiBbZGlzcGxheV09XCJmaWVsZC5hbGlhcyA/PyBmaWVsZC5uYW1lIHwgY2FtZWxUb1dvcmRzXCIgWyh2YWx1ZSldPVwiZGF0YVtmaWVsZC5uYW1lXVwiICh2YWx1ZUNoYW5nZSk9XCJpbnB1dENoYW5nZWQoZmllbGQsIGRhdGFbZmllbGQubmFtZV0pXCIgW3JlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCIgW21pbl09XCJmaWVsZC5taW5cIiBbbWF4XT1cImZpZWxkLm1heFwiIFtyZWFkb25seV09XCJ0ZXN0UmVhZE9ubHkoZmllbGQpXCIgW2hpbnRdPVwiZmllbGQuaGludFwiIFtpbmZvTWVzc2FnZV09XCJmaWVsZC5pbmZvTWVzc2FnZVwiIChpbmZvQ2xpY2spPVwiaGFuZGxlSW5mb0NsaWNrKGZpZWxkKVwiPjwvc3BhLW1vbmV5PlxyXG5cclxuICAgICAgICA8c3BhLWNoZWNrICpuZ1N3aXRjaENhc2U9XCInY2hlY2tib3gnXCIgW2Rpc3BsYXldPVwiZmllbGQuYWxpYXMgPz8gZmllbGQubmFtZSB8IGNhbWVsVG9Xb3Jkc1wiIFsodmFsdWUpXT1cImRhdGFbZmllbGQubmFtZV1cIiAodmFsdWVDaGFuZ2UpPVwiaW5wdXRDaGFuZ2VkKGZpZWxkLCBkYXRhW2ZpZWxkLm5hbWVdKVwiIFtyZWFkb25seV09XCJ0ZXN0UmVhZE9ubHkoZmllbGQpXCIgW2luZm9NZXNzYWdlXT1cImZpZWxkLmluZm9NZXNzYWdlXCIgKGluZm9DbGljayk9XCJoYW5kbGVJbmZvQ2xpY2soZmllbGQpXCI+PC9zcGEtY2hlY2s+XHJcblxyXG4gICAgICAgIDxzcGEtZGF0ZSAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGUnXCIgW2Rpc3BsYXldPVwiZmllbGQuYWxpYXMgPz8gZmllbGQubmFtZSB8IGNhbWVsVG9Xb3Jkc1wiIFsodmFsdWUpXT1cImRhdGFbZmllbGQubmFtZV1cIiAodmFsdWVDaGFuZ2UpPVwiaW5wdXRDaGFuZ2VkKGZpZWxkLCBkYXRhW2ZpZWxkLm5hbWVdKVwiIFttaW5dPVwiZmllbGQ/Lm1pblwiIFttYXhdPVwiZmllbGQ/Lm1heFwiIFtyZWFkb25seV09XCJ0ZXN0UmVhZE9ubHkoZmllbGQpXCIgW2hpbnRdPVwiZmllbGQuaGludFwiIFtpbmZvTWVzc2FnZV09XCJmaWVsZC5pbmZvTWVzc2FnZVwiIChpbmZvQ2xpY2spPVwiaGFuZGxlSW5mb0NsaWNrKGZpZWxkKVwiPjwvc3BhLWRhdGU+XHJcblxyXG4gICAgICAgIDxzcGEtc2VsZWN0ICpuZ1N3aXRjaENhc2U9XCInc2VsZWN0J1wiXHJcbiAgICAgICAgICBbZGlzcGxheV09XCJmaWVsZC5hbGlhcyA/PyBmaWVsZC5uYW1lIHwgY2FtZWxUb1dvcmRzXCIgW251bGxhYmxlXT1cImZpZWxkLm51bGxhYmxlXCJcclxuICAgICAgICAgIFtvcHRpb25zXT1cImZpZWxkLm9wdGlvbnNcIiBbbWFzdGVyT3B0aW9uc109XCJmaWVsZC5tYXN0ZXJPcHRpb25zXCIgW29wdGlvbkRpc3BsYXldPVwiZmllbGQub3B0aW9uRGlzcGxheSA/PyAnbmFtZSdcIiBbb3B0aW9uVmFsdWVdPVwiZmllbGQub3B0aW9uVmFsdWUgPz8gJ3ZhbHVlJ1wiXHJcbiAgICAgICAgICBbKHZhbHVlKV09XCJkYXRhW2ZpZWxkLm5hbWVdXCIgW2RlZmF1bHRGaXJzdFZhbHVlXT1cImZpZWxkLmRlZmF1bHRGaXJzdFZhbHVlXCIgKHZhbHVlQ2hhbmdlKT1cImlucHV0Q2hhbmdlZChmaWVsZCwgZGF0YVtmaWVsZC5uYW1lXSlcIlxyXG4gICAgICAgICAgW3JlYWRvbmx5XT1cInRlc3RSZWFkT25seShmaWVsZClcIlxyXG4gICAgICAgICAgW2hpbnRdPVwiZmllbGQuaGludFwiXHJcbiAgICAgICAgICBbcGVla0NvbmZpZ109XCJmaWVsZC5wZWVrQ29uZmlnXCJcclxuICAgICAgICAgIFtpbmZvTWVzc2FnZV09XCJmaWVsZC5pbmZvTWVzc2FnZVwiXHJcbiAgICAgICAgID5cclxuICAgICAgICA8L3NwYS1zZWxlY3Q+XHJcblxyXG4gICAgICAgIDxzcGEtc2VsZWN0ICpuZ1N3aXRjaENhc2U9XCInbXVsdGktc2VsZWN0J1wiIFtkaXNwbGF5XT1cImZpZWxkLmFsaWFzID8/IGZpZWxkLm5hbWUgfCBjYW1lbFRvV29yZHNcIiBbb3B0aW9uc109XCJmaWVsZC5vcHRpb25zXCIgW29wdGlvbkRpc3BsYXldPVwiZmllbGQub3B0aW9uRGlzcGxheSA/PyAnbmFtZSdcIiBbb3B0aW9uVmFsdWVdPVwiZmllbGQub3B0aW9uVmFsdWUgPz8gJ3ZhbHVlJ1wiIFsodmFsdWUpXT1cImRhdGFbZmllbGQubmFtZV1cIiAodmFsdWVDaGFuZ2UpPVwiaW5wdXRDaGFuZ2VkKGZpZWxkLCBkYXRhW2ZpZWxkLm5hbWVdKVwiIFtyZWFkb25seV09XCJ0ZXN0UmVhZE9ubHkoZmllbGQpXCIgW211bHRpcGxlXT1cInRydWVcIiBbaGludF09XCJmaWVsZC5oaW50XCIgW2luZm9NZXNzYWdlXT1cImZpZWxkLmluZm9NZXNzYWdlXCIgKGluZm9DbGljayk9XCJoYW5kbGVJbmZvQ2xpY2soZmllbGQpXCI+XHJcbiAgICAgICAgPC9zcGEtc2VsZWN0PlxyXG5cclxuICAgICAgICA8c3BhLXRleHQgKm5nU3dpdGNoRGVmYXVsdCBbZGlzcGxheV09XCJmaWVsZC5hbGlhcyA/PyBmaWVsZC5uYW1lIHwgY2FtZWxUb1dvcmRzXCIgW29wdGlvbnNdPVwiZmllbGQub3B0aW9uc1wiIFtvcHRpb25WYWx1ZV09XCJmaWVsZC5vcHRpb25WYWx1ZSA/PyAndmFsdWUnXCIgW3Jvd3NdPVwiZmllbGQucm93c1wiIFsodmFsdWUpXT1cImRhdGFbZmllbGQubmFtZV1cIiAodmFsdWVDaGFuZ2UpPVwiaW5wdXRDaGFuZ2VkKGZpZWxkLGRhdGFbZmllbGQubmFtZV0pXCIgW3JlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCIgW21pbl09XCJmaWVsZC5taW5cIiBbbWF4XT1cImZpZWxkLm1heFwiIFtyZWFkb25seV09XCJ0ZXN0UmVhZE9ubHkoZmllbGQpXCIgW2hpbnRdPVwiZmllbGQuaGludFwiIFtpbmZvTWVzc2FnZV09XCJmaWVsZC5pbmZvTWVzc2FnZVwiIChpbmZvQ2xpY2spPVwiaGFuZGxlSW5mb0NsaWNrKGZpZWxkKVwiIFtzdWZmaXhdPVwiZmllbGQuc3VmZml4XCI+PC9zcGEtdGV4dD5cclxuXHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8L2Rpdj5cclxuXHJcblxyXG4gIDxkaXYgY2xhc3M9XCJzcGFuLWNvbC1jZW50ZXJcIiAqbmdJZj1cImNvbmZpZy5idXR0b25cIj5cclxuICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgIChjbGljayk9XCJidXR0b25DbGlja2VkKClcIiAgY2RrRm9jdXNJbml0aWFsPnt7YnV0dG9uRGlzcGxheX19PC9idXR0b24+XHJcbiAgPC9kaXY+XHJcblxyXG5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class GradesComponent {
|
|
4
|
+
constructor() { }
|
|
5
|
+
ngOnInit() {
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
GradesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: GradesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9
|
+
GradesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: GradesComponent, selector: "spa-grades", ngImport: i0, template: "<h4>Grades</h4>\n<hr>\n", styles: [""] });
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: GradesComponent, decorators: [{
|
|
11
|
+
type: Component,
|
|
12
|
+
args: [{ selector: 'spa-grades', template: "<h4>Grades</h4>\n<hr>\n" }]
|
|
13
|
+
}], ctorParameters: function () { return []; } });
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhZGVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9jb21wb25lbnRzL2dyYWRlcy9ncmFkZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvZ3JhZGVzL2dyYWRlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDOztBQU9sRCxNQUFNLE9BQU8sZUFBZTtJQUUxQixnQkFBZ0IsQ0FBQztJQUVqQixRQUFRO0lBQ1IsQ0FBQzs7NEdBTFUsZUFBZTtnR0FBZixlQUFlLGtEQ1A1Qix5QkFFQTsyRkRLYSxlQUFlO2tCQUwzQixTQUFTOytCQUNFLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzcGEtZ3JhZGVzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dyYWRlcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dyYWRlcy5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgR3JhZGVzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG5cbn1cbiIsIjxoND5HcmFkZXM8L2g0PlxuPGhyPlxuIl19
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { quantityDialog } from './quantityDialog.component';
|
|
3
|
+
import { Subject } from 'rxjs';
|
|
4
|
+
import { ListDialogComponent } from '../list-dialog/list-dialog.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../../services/datalib.service";
|
|
7
|
+
import * as i2 from "../../services/message.service";
|
|
8
|
+
import * as i3 from "../../services/auth.service";
|
|
9
|
+
import * as i4 from "@angular/material/dialog";
|
|
10
|
+
import * as i5 from "@angular/material/button";
|
|
11
|
+
import * as i6 from "@angular/material/icon";
|
|
12
|
+
import * as i7 from "@angular/material/tooltip";
|
|
13
|
+
import * as i8 from "../table/table.component";
|
|
14
|
+
export class InventoryComponent {
|
|
15
|
+
constructor(dataService, messageService, authService, dialog) {
|
|
16
|
+
this.dataService = dataService;
|
|
17
|
+
this.messageService = messageService;
|
|
18
|
+
this.authService = authService;
|
|
19
|
+
this.dialog = dialog;
|
|
20
|
+
this.reload = new Subject();
|
|
21
|
+
this.formConfig = {
|
|
22
|
+
fields: [
|
|
23
|
+
{ name: 'name', type: 'text' },
|
|
24
|
+
{ name: 'description', type: 'text' },
|
|
25
|
+
{ name: 'serial', type: 'text', hidden: true },
|
|
26
|
+
{ name: 'price', type: 'money', },
|
|
27
|
+
{ name: 'minQuantity', alias: 'Minimum Quantity', type: 'number' },
|
|
28
|
+
{ name: 'categoryID', alias: 'Category', type: 'select', optionDisplay: 'name', optionValue: 'listItemID', defaultFirstValue: true },
|
|
29
|
+
],
|
|
30
|
+
reset: true,
|
|
31
|
+
};
|
|
32
|
+
this.config = {
|
|
33
|
+
showFilter: true,
|
|
34
|
+
minColumns: ['name', 'quantity'],
|
|
35
|
+
minButtons: ['increase', 'decrease', 'edit'],
|
|
36
|
+
flatButtons: true,
|
|
37
|
+
columns: [
|
|
38
|
+
{ name: 'name', type: 'text' },
|
|
39
|
+
{ name: 'description', type: 'text' },
|
|
40
|
+
{ name: 'categoryName', alias: 'Category', type: 'text' },
|
|
41
|
+
{ name: 'quantity', type: 'number', icon: { name: 'warning', color: 'red', tip: 'Stock up', condition: x => x.quantity <= x.minQuantity } },
|
|
42
|
+
{ name: 'price', alias: 'Unit Price', type: 'money', },
|
|
43
|
+
],
|
|
44
|
+
buttons: [
|
|
45
|
+
{ name: 'increase', icon: { name: 'add' }, color: 'green', },
|
|
46
|
+
{ name: 'decrease', icon: { name: 'remove' }, color: 'red', },
|
|
47
|
+
{ name: 'create', display: 'Create', dialog: true, action: { url: 'general/inventory?action=create', method: 'post' } },
|
|
48
|
+
{ name: 'edit', dialog: true, action: { url: 'general/inventory?action=edit', method: 'post' } },
|
|
49
|
+
{ name: 'delete', dialog: true, action: { url: 'general/inventory?action=delete', method: 'post' } },
|
|
50
|
+
],
|
|
51
|
+
loadAction: { url: 'general/inventory/x' },
|
|
52
|
+
formConfig: this.formConfig
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
ngOnInit() {
|
|
56
|
+
this.loadData();
|
|
57
|
+
}
|
|
58
|
+
loadData() {
|
|
59
|
+
this.dataService.CallApi({ url: 'general/lists/InventoryCategories' }).subscribe((apiResponse) => {
|
|
60
|
+
this.formConfig.fields.find(x => x.name == 'categoryID').options = apiResponse.data;
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
clicked(x) {
|
|
64
|
+
if (x.name == "increase" || x.name == "decrease") {
|
|
65
|
+
this.comment(x);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
comment(x) {
|
|
69
|
+
const dialogRef = this.dialog.open(quantityDialog, {
|
|
70
|
+
width: "900px",
|
|
71
|
+
data: x,
|
|
72
|
+
});
|
|
73
|
+
dialogRef.afterClosed().subscribe((result) => {
|
|
74
|
+
if (result == 'success') {
|
|
75
|
+
this.reload.next(true);
|
|
76
|
+
this.messageService.toast("Updated");
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
cats() {
|
|
81
|
+
let conf = { title: "Inventory Categories", name: 'Category', listName: 'InventoryCategories' };
|
|
82
|
+
const dialogRef = this.dialog.open(ListDialogComponent, {
|
|
83
|
+
width: "900px",
|
|
84
|
+
data: conf,
|
|
85
|
+
});
|
|
86
|
+
dialogRef.afterClosed().subscribe((result) => {
|
|
87
|
+
if (result == 'success') {
|
|
88
|
+
this.loadData();
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
InventoryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: InventoryComponent, deps: [{ token: i1.DataServiceLib }, { token: i2.MessageService }, { token: i3.AuthService }, { token: i4.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
94
|
+
InventoryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: InventoryComponent, selector: "spa-inventory", ngImport: i0, template: "<div class=\"d-flex align-items-center justify-content-between mt-0\" style=\"margin-left: 10px\">\n\n <label style=\"font-size: 16px;\">Inventory</label>\n\n <div >\n <button mat-mini-fab color=\"primary\" style=\"margin-right:1em;\" (click)=\"cats()\" matTooltip=\"Categories\" matTooltipPosition=\"above\"><mat-icon >category</mat-icon></button>\n </div>\n\n</div>\n<hr>\n\n\n<div class=\"mt-3\" style=\" font-size: 14px;\">\n <spa-table [config]=\"config\" (actionClick)=\"clicked($event)\" [reload]=\"reload\"></spa-table>\n</div>\n", styles: [".mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}.refreshIcon{font-size:22px!important;margin-top:-7px!important}\n"], dependencies: [{ kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i8.TableComponent, selector: "spa-table", inputs: ["hideTitle", "data", "config", "reload"], outputs: ["dataLoad", "refreshClick", "searchClick", "createClick", "actionClick", "inputChange"] }] });
|
|
95
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: InventoryComponent, decorators: [{
|
|
96
|
+
type: Component,
|
|
97
|
+
args: [{ selector: 'spa-inventory', template: "<div class=\"d-flex align-items-center justify-content-between mt-0\" style=\"margin-left: 10px\">\n\n <label style=\"font-size: 16px;\">Inventory</label>\n\n <div >\n <button mat-mini-fab color=\"primary\" style=\"margin-right:1em;\" (click)=\"cats()\" matTooltip=\"Categories\" matTooltipPosition=\"above\"><mat-icon >category</mat-icon></button>\n </div>\n\n</div>\n<hr>\n\n\n<div class=\"mt-3\" style=\" font-size: 14px;\">\n <spa-table [config]=\"config\" (actionClick)=\"clicked($event)\" [reload]=\"reload\"></spa-table>\n</div>\n", styles: [".mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}.refreshIcon{font-size:22px!important;margin-top:-7px!important}\n"] }]
|
|
98
|
+
}], ctorParameters: function () { return [{ type: i1.DataServiceLib }, { type: i2.MessageService }, { type: i3.AuthService }, { type: i4.MatDialog }]; } });
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52ZW50b3J5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9jb21wb25lbnRzL2ludmVudG9yeS9pbnZlbnRvcnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvaW52ZW50b3J5L2ludmVudG9yeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBS2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUU1RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7Ozs7O0FBUTNFLE1BQU0sT0FBTyxrQkFBa0I7SUFFN0IsWUFBb0IsV0FBMkIsRUFBVSxjQUE4QixFQUFTLFdBQXdCLEVBQVMsTUFBaUI7UUFBOUgsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBWWxKLFdBQU0sR0FBcUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQTRDekMsZUFBVSxHQUFlO1lBRXZCLE1BQU0sRUFBRTtnQkFDTixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtnQkFDOUIsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7Z0JBQ3JDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRyxJQUFJLEVBQUU7Z0JBQy9DLEVBQUUsSUFBSSxFQUFF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QUFJLFNBQVMsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFBO2FBQ2hCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFTCxDQUFDOzsrR0F2RFUsa0JBQWtCO21HQUFsQixrQkFBa0IscURDaEIvQixtaUJBZUE7MkZEQ2Esa0JBQWtCO2tCQUw5QixTQUFTOytCQUNFLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEYXRhU2VydmljZUxpYiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RhdGFsaWIuc2VydmljZSc7XHJcbmltcG9ydCB7IEZvcm1Db25maWcsIExpc3REaWFsb2dDb25maWcsIFRhYmxlQ29uZmlnLCBBcGlSZXNwb25zZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvQ2xhc3Nlcyc7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWVzc2FnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBxdWFudGl0eURpYWxvZyB9IGZyb20gJy4vcXVhbnRpdHlEaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBMaXN0RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vbGlzdC1kaWFsb2cvbGlzdC1kaWFsb2cuY29tcG9uZW50JztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NwYS1pbnZlbnRvcnknLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnZlbnRvcnkuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ludmVudG9yeS5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEludmVudG9yeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlTGliLCBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSwgcHVibGljIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSwgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWREYXRhKCk7XHJcbiAgfVxyXG5cclxuICBsb2FkRGF0YSgpe1xyXG4gICAgdGhpcy5kYXRhU2VydmljZS5DYWxsQXBpKHt1cmwgOidnZW5lcmFsL2xpc3RzL0ludmVudG9yeUNhdGVnb3JpZXMnfSkuc3Vic2NyaWJlKChhcGlSZXNwb25zZSA6IEFwaVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIHRoaXMuZm9ybUNvbmZpZy5maWVsZHMuZmluZCh4ID0+IHgubmFtZSA9PSAnY2F0ZWdvcnlJRCcpLm9wdGlvbnMgPSBhcGlSZXNwb25zZS5kYXRhO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHJlbG9hZDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGNsaWNrZWQoeCl7XHJcblxyXG4gICAgaWYgKHgubmFtZSA9PSBcImluY3JlYXNlXCIgfHwgeC5uYW1lID09IFwiZGVjcmVhc2VcIil7XHJcbiAgICAgIHRoaXMuY29tbWVudCh4KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29tbWVudCh4KSB7XHJcblxyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihxdWFudGl0eURpYWxvZywge1xyXG4gICAgICB3aWR0aDogXCI5MDBweFwiLFxyXG4gICAgICBkYXRhOiB4LFxyXG4gICAgfSk7XHJcblxyXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuXHJcbiAgICAgIGlmIChyZXN1bHQgPT0gJ3N1Y2Nlc3MnKSB7XHJcbiAgICAgICAgdGhpcy5yZWxvYWQubmV4dCh0cnVlKTtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiVXBkYXRlZFwiKVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNhdHMoKSB7XHJcblxyXG4gICAgbGV0IGNvbmY6IExpc3REaWFsb2dDb25maWcgPSB7IHRpdGxlOiBcIkludmVudG9yeSBDYXRlZ29yaWVzXCIsIG5hbWUgOiAnQ2F0ZWdvcnknLCBsaXN0TmFtZSA6ICdJbnZlbnRvcnlDYXRlZ29yaWVzJ31cclxuXHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKExpc3REaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6IFwiOTAwcHhcIixcclxuICAgICAgZGF0YTogY29uZiAsXHJcbiAgICB9KTtcclxuXHJcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG5cclxuICAgICAgaWYgKHJlc3VsdCA9PSAnc3VjY2VzcycpIHtcclxuICAgICAgICB0aGlzLmxvYWREYXRhKClcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIGZvcm1Db25maWc6IEZvcm1Db25maWcgPSB7XHJcblxyXG4gICAgZmllbGRzOiBbXHJcbiAgICAgIHsgbmFtZTogJ25hbWUnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgeyBuYW1lOiAnZGVzY3JpcHRpb24nLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgeyBuYW1lOiAnc2VyaWFsJywgdHlwZTogJ3RleHQnLCBoaWRkZW4gOiB0cnVlIH0sXHJcbiAgICAgIHsgbmFtZTogJ3ByaWNlJywgdHlwZTogJ21vbmV5JywgfSxcclxuICAgICAgeyBuYW1lOiAnbWluUXVhbnRpdHknLCBhbGlhcyA6ICdNaW5pbXVtIFF1YW50aXR5JywgdHlwZTogJ251bWJlcicgfSxcclxuICAgICAgeyBuYW1lOiAnY2F0ZWdvcnlJRCcsIGFsaWFzIDogJ0NhdGVnb3J5JywgdHlwZTogJ3NlbGVjdCcsIG9wdGlvbkRpc3BsYXkgOiAnbmFtZScsIG9wdGlvblZhbHVlIDogJ2xpc3RJdGVtSUQnLCBkZWZhdWx0Rmlyc3RWYWx1ZSA6IHRydWUgfSxcclxuXHJcbiAgICBdLFxyXG5cclxuICAgIHJlc2V0OiB0cnVlLFxyXG4gIH1cclxuXHJcbiAgY29uZmlnOiBUYWJsZUNvbmZpZyA9IHtcclxuICAgIHNob3dGaWx0ZXI6IHRydWUsXHJcbiAgICBtaW5Db2x1bW5zOiBbJ25hbWUnLCAncXVhbnRpdHknXSxcclxuICAgIG1pbkJ1dHRvbnM6IFsnaW5jcmVhc2UnLCAnZGVjcmVhc2UnLCAnZWRpdCddLFxyXG4gICAgZmxhdEJ1dHRvbnM6IHRydWUsXHJcblxyXG4gICAgY29sdW1uczogW1xyXG4gICAgICB7IG5hbWU6ICduYW1lJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgIHsgbmFtZTogJ2Rlc2NyaXB0aW9uJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgIHsgbmFtZTogJ2NhdGVnb3J5TmFtZScsIGFsaWFzIDogJ0NhdGVnb3J5JywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgIHsgbmFtZTogJ3F1YW50aXR5JywgdHlwZTogJ251bWJlcicsIGljb24gOntuYW1lIDogJ3dhcm5pbmcnLCBjb2xvciA6ICdyZWQnLCB0aXAgOiAnU3RvY2sgdXAnLCBjb25kaXRpb24gOiB4ID0+IHgucXVhbnRpdHkgPD0geC5taW5RdWFudGl0eX0gfSxcclxuICAgICAgeyBuYW1lOiAncHJpY2UnLCBhbGlhcyA6ICdVbml0IFByaWNlJywgdHlwZTogJ21vbmV5JywgfSxcclxuICAgIF0sXHJcblxyXG4gICAgYnV0dG9uczogW1xyXG4gICAgICB7IG5hbWU6ICdpbmNyZWFzZScsIGljb246IHsgbmFtZTogJ2FkZCcgfSwgY29sb3I6ICdncmVlbicsIH0sXHJcbiAgICAgIHsgbmFtZTogJ2RlY3JlYXNlJywgaWNvbjogeyBuYW1lOiAncmVtb3ZlJyB9LCBjb2xvcjogJ3JlZCcsICB9LFxyXG4gICAgICB7IG5hbWU6ICdjcmVhdGUnLCBkaXNwbGF5OiAnQ3JlYXRlJywgZGlhbG9nOiB0cnVlLCBhY3Rpb246IHsgdXJsOiAnZ2VuZXJhbC9pbnZlbnRvcnk/YWN0aW9uPWNyZWF0ZScsIG1ldGhvZDogJ3Bvc3QnIH0gfSxcclxuXHJcbiAgICAgIHsgbmFtZTogJ2VkaXQnLCBkaWFsb2c6IHRydWUsIGFjdGlvbjogeyB1cmw6ICdnZW5lcmFsL2ludmVudG9yeT9hY3Rpb249ZWRpdCcsIG1ldGhvZDogJ3Bvc3QnIH0gfSxcclxuICAgICAgeyBuYW1lOiAnZGVsZXRlJywgZGlhbG9nOiB0cnVlLCBhY3Rpb246IHsgdXJsOiAnZ2VuZXJhbC9pbnZlbnRvcnk/YWN0aW9uPWRlbGV0ZScsIG1ldGhvZDogJ3Bvc3QnIH0gfSxcclxuICAgIF0sXHJcblxyXG4gICAgbG9hZEFjdGlvbjogeyB1cmw6ICdnZW5lcmFsL2ludmVudG9yeS94JyB9LFxyXG5cclxuICAgIGZvcm1Db25maWc6IHRoaXMuZm9ybUNvbmZpZ1xyXG5cclxuICB9XHJcblxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC0wXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweFwiPlxuXG4gIDxsYWJlbCBzdHlsZT1cImZvbnQtc2l6ZTogMTZweDtcIj5JbnZlbnRvcnk8L2xhYmVsPlxuXG4gIDxkaXYgPlxuICAgIDxidXR0b24gbWF0LW1pbmktZmFiIGNvbG9yPVwicHJpbWFyeVwiICBzdHlsZT1cIm1hcmdpbi1yaWdodDoxZW07XCIgKGNsaWNrKT1cImNhdHMoKVwiIG1hdFRvb2x0aXA9XCJDYXRlZ29yaWVzXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIj48bWF0LWljb24gPmNhdGVnb3J5PC9tYXQtaWNvbj48L2J1dHRvbj5cbiAgPC9kaXY+XG5cbjwvZGl2PlxuPGhyPlxuXG5cbjxkaXYgY2xhc3M9XCJtdC0zXCIgc3R5bGU9XCIgZm9udC1zaXplOiAxNHB4O1wiPlxuICA8c3BhLXRhYmxlIFtjb25maWddPVwiY29uZmlnXCIgKGFjdGlvbkNsaWNrKT1cImNsaWNrZWQoJGV2ZW50KVwiIFtyZWxvYWRdPVwicmVsb2FkXCI+PC9zcGEtdGFibGU+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
//-------------------------------------------VIEW
|
|
2
|
+
import { Component, Inject } from '@angular/core';
|
|
3
|
+
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../services/loader.service";
|
|
6
|
+
import * as i2 from "../../services/message.service";
|
|
7
|
+
import * as i3 from "../../services/datalib.service";
|
|
8
|
+
import * as i4 from "@angular/material/dialog";
|
|
9
|
+
import * as i5 from "@angular/material/button";
|
|
10
|
+
import * as i6 from "../text/text.component";
|
|
11
|
+
import * as i7 from "../number/number.component";
|
|
12
|
+
import * as i8 from "@angular/common";
|
|
13
|
+
// import { ApiResponse, DataServiceLib, MessageService } from 'projects/tin-spa/src/public-api';
|
|
14
|
+
export class quantityDialog {
|
|
15
|
+
constructor(loaderService, messageService, dataService, dialogRef, data) {
|
|
16
|
+
this.loaderService = loaderService;
|
|
17
|
+
this.messageService = messageService;
|
|
18
|
+
this.dataService = dataService;
|
|
19
|
+
this.dialogRef = dialogRef;
|
|
20
|
+
this.data = data;
|
|
21
|
+
this.quantity = 0;
|
|
22
|
+
this.isLoadComplete = false;
|
|
23
|
+
this.isProcessing = false;
|
|
24
|
+
}
|
|
25
|
+
ngOnInit() {
|
|
26
|
+
this.action = this.data.name;
|
|
27
|
+
this.inv = this.data.data;
|
|
28
|
+
this.isLoadComplete = true;
|
|
29
|
+
this.loaderService.isLoading.subscribe(x => this.isProcessing = x);
|
|
30
|
+
}
|
|
31
|
+
submit() {
|
|
32
|
+
this.inv.quantity = this.quantity;
|
|
33
|
+
this.dataService.CallApi({ url: `general/inventory?action=${this.action}`, method: 'post' }, this.inv).subscribe((x) => {
|
|
34
|
+
if (x.success) {
|
|
35
|
+
this.dialogRef.close('success');
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
this.messageService.toast(x.message);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
quantityDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: quantityDialog, deps: [{ token: i1.LoaderService }, { token: i2.MessageService }, { token: i3.DataServiceLib }, { token: i4.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
44
|
+
quantityDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: quantityDialog, selector: "app-quanityDiag", ngImport: i0, template: "\r\n<h2 mat-dialog-title>{{data.name | titlecase}} {{inv.name}}</h2>\r\n<mat-dialog-content class=\"mat-typography\">\r\n\r\n<div class=\"tin-grid\" style=\"font-size:14px\">\r\n\r\n <spa-text display=\"Name\" [value]=\"inv.name\" [readonly]=\"true\"></spa-text>\r\n <spa-text display=\"Description\" [value]=\"inv.description\" [readonly]=\"true\"></spa-text>\r\n <spa-number display=\"Quantity\" [(value)]=\"quantity\" [hint]=\"'Quantity to ' + data.name\" ></spa-number>\r\n\r\n</div>\r\n\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions>\r\n<button mat-button [disabled]=\"isProcessing\" (click)=\"submit()\" cdkFocusInitial>Submit</button>\r\n<button mat-button cdkFocusInitial mat-dialog-close>Cancel</button>\r\n</mat-dialog-actions>\r\n\r\n\r\n\r\n", styles: [".mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}.refreshIcon{font-size:22px!important;margin-top:-7px!important}\n"], dependencies: [{ kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i4.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i4.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i6.TextComponent, selector: "spa-text", inputs: ["readonly", "hint", "display", "placeholder", "value", "format", "type", "rows", "width", "options", "optionValue", "required", "min", "max", "regex", "suffix", "infoMessage"], outputs: ["valueChange", "leave", "enterPress", "infoClick"] }, { kind: "component", type: i7.NumberComponent, selector: "spa-number", inputs: ["readonly", "hint", "display", "placeholder", "value", "width", "required", "min", "max", "step", "suffix", "infoMessage"], outputs: ["valueChange", "leave", "enterPress", "infoClick"] }, { kind: "pipe", type: i8.TitleCasePipe, name: "titlecase" }] });
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: quantityDialog, decorators: [{
|
|
46
|
+
type: Component,
|
|
47
|
+
args: [{ selector: 'app-quanityDiag', template: "\r\n<h2 mat-dialog-title>{{data.name | titlecase}} {{inv.name}}</h2>\r\n<mat-dialog-content class=\"mat-typography\">\r\n\r\n<div class=\"tin-grid\" style=\"font-size:14px\">\r\n\r\n <spa-text display=\"Name\" [value]=\"inv.name\" [readonly]=\"true\"></spa-text>\r\n <spa-text display=\"Description\" [value]=\"inv.description\" [readonly]=\"true\"></spa-text>\r\n <spa-number display=\"Quantity\" [(value)]=\"quantity\" [hint]=\"'Quantity to ' + data.name\" ></spa-number>\r\n\r\n</div>\r\n\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions>\r\n<button mat-button [disabled]=\"isProcessing\" (click)=\"submit()\" cdkFocusInitial>Submit</button>\r\n<button mat-button cdkFocusInitial mat-dialog-close>Cancel</button>\r\n</mat-dialog-actions>\r\n\r\n\r\n\r\n", styles: [".mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}.refreshIcon{font-size:22px!important;margin-top:-7px!important}\n"] }]
|
|
48
|
+
}], ctorParameters: function () { return [{ type: i1.LoaderService }, { type: i2.MessageService }, { type: i3.DataServiceLib }, { type: i4.MatDialogRef }, { type: undefined, decorators: [{
|
|
49
|
+
type: Inject,
|
|
50
|
+
args: [MAT_DIALOG_DATA]
|
|
51
|
+
}] }]; } });
|
|
52
|
+
;
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVhbnRpdHlEaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvaW52ZW50b3J5L3F1YW50aXR5RGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9jb21wb25lbnRzL2ludmVudG9yeS9xdWFudGl0eURpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpREFBaUQ7QUFFakQsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7OztBQU16RSxpR0FBaUc7QUFPakcsTUFBTSxPQUFPLGNBQWM7SUFFekIsWUFBb0IsYUFBNEIsRUFBUyxjQUE4QixFQUFVLFdBQTRCLEVBQVUsU0FBdUMsRUFBa0MsSUFBSTtRQUFoTSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFTLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQThCO1FBQWtDLFNBQUksR0FBSixJQUFJLENBQUE7UUFXcE4sYUFBUSxHQUFHLENBQUMsQ0FBQTtRQUdaLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBQ2hDLGlCQUFZLEdBQVksS0FBSyxDQUFDO0lBZjBMLENBQUM7SUFFek4sUUFBUTtRQUVOLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQTtRQUN6QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBRXJFLENBQUM7SUFRRCxNQUFNO1FBQ0osSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQTtRQUNqQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSw0QkFBNEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBZSxFQUFFLEVBQUU7WUFFbkksSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFDO2dCQUNaLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ2pDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQTthQUNyQztRQUVILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQzs7MkdBOUJVLGNBQWMsdUlBRStKLGVBQWU7K0ZBRjVMLGNBQWMsdURDaEIzQiw0dkJBcUJBOzJGRExhLGNBQWM7a0JBTDFCLFNBQVM7K0JBQ0UsaUJBQWlCOzswQkFNc0osTUFBTTsyQkFBQyxlQUFlOztBQTZCeE0sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVZJRVdcclxuXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBEYXRhU2VydmljZUxpYiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RhdGFsaWIuc2VydmljZSc7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWVzc2FnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTG9hZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xvYWRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBpUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL0NsYXNzZXMnO1xyXG5cclxuLy8gaW1wb3J0IHsgQXBpUmVzcG9uc2UsIERhdGFTZXJ2aWNlTGliLCBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3Byb2plY3RzL3Rpbi1zcGEvc3JjL3B1YmxpYy1hcGknO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtcXVhbml0eURpYWcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWFudGl0eURpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW52ZW50b3J5LmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgcXVhbnRpdHlEaWFsb2cgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxvYWRlclNlcnZpY2U6IExvYWRlclNlcnZpY2UscHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsIHByaXZhdGUgZGF0YVNlcnZpY2UgOiBEYXRhU2VydmljZUxpYiwgcHJpdmF0ZSBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxxdWFudGl0eURpYWxvZz4sIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YSkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG5cclxuICAgIHRoaXMuYWN0aW9uID0gdGhpcy5kYXRhLm5hbWU7XHJcbiAgICB0aGlzLmludiA9IHRoaXMuZGF0YS5kYXRhXHJcbiAgICB0aGlzLmlzTG9hZENvbXBsZXRlID0gdHJ1ZTtcclxuICAgIHRoaXMubG9hZGVyU2VydmljZS5pc0xvYWRpbmcuc3Vic2NyaWJlKHggPT4gdGhpcy5pc1Byb2Nlc3NpbmcgPSB4KTtcclxuXHJcbiAgfVxyXG5cclxuICBxdWFudGl0eSA9IDBcclxuICBhY3Rpb247XHJcbiAgaW52XHJcbiAgaXNMb2FkQ29tcGxldGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1Byb2Nlc3Npbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgc3VibWl0KCkge1xyXG4gICAgdGhpcy5pbnYucXVhbnRpdHkgPSB0aGlzLnF1YW50aXR5XHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLkNhbGxBcGkoeyB1cmw6IGBnZW5lcmFsL2ludmVudG9yeT9hY3Rpb249JHt0aGlzLmFjdGlvbn1gLCBtZXRob2Q6ICdwb3N0JyB9LCB0aGlzLmludikuc3Vic2NyaWJlKCh4IDogQXBpUmVzcG9uc2UpID0+IHtcclxuXHJcbiAgICAgIGlmICh4LnN1Y2Nlc3Mpe1xyXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCdzdWNjZXNzJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdCh4Lm1lc3NhZ2UpXHJcbiAgICAgIH1cclxuXHJcbiAgICB9KVxyXG4gIH1cclxufTtcclxuXHJcblxyXG5cclxuIiwiXHJcbjxoMiBtYXQtZGlhbG9nLXRpdGxlPnt7ZGF0YS5uYW1lIHwgdGl0bGVjYXNlfX0ge3tpbnYubmFtZX19PC9oMj5cclxuPG1hdC1kaWFsb2ctY29udGVudCBjbGFzcz1cIm1hdC10eXBvZ3JhcGh5XCI+XHJcblxyXG48ZGl2IGNsYXNzPVwidGluLWdyaWRcIiBzdHlsZT1cImZvbnQtc2l6ZToxNHB4XCI+XHJcblxyXG4gIDxzcGEtdGV4dCBkaXNwbGF5PVwiTmFtZVwiIFt2YWx1ZV09XCJpbnYubmFtZVwiIFtyZWFkb25seV09XCJ0cnVlXCI+PC9zcGEtdGV4dD5cclxuICA8c3BhLXRleHQgZGlzcGxheT1cIkRlc2NyaXB0aW9uXCIgW3ZhbHVlXT1cImludi5kZXNjcmlwdGlvblwiIFtyZWFkb25seV09XCJ0cnVlXCI+PC9zcGEtdGV4dD5cclxuICA8c3BhLW51bWJlciBkaXNwbGF5PVwiUXVhbnRpdHlcIiBbKHZhbHVlKV09XCJxdWFudGl0eVwiIFtoaW50XT1cIidRdWFudGl0eSB0byAnICsgZGF0YS5uYW1lXCIgPjwvc3BhLW51bWJlcj5cclxuXHJcbjwvZGl2PlxyXG5cclxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XHJcblxyXG48bWF0LWRpYWxvZy1hY3Rpb25zPlxyXG48YnV0dG9uIG1hdC1idXR0b24gW2Rpc2FibGVkXT1cImlzUHJvY2Vzc2luZ1wiIChjbGljayk9XCJzdWJtaXQoKVwiIGNka0ZvY3VzSW5pdGlhbD5TdWJtaXQ8L2J1dHRvbj5cclxuPGJ1dHRvbiBtYXQtYnV0dG9uIGNka0ZvY3VzSW5pdGlhbCBtYXQtZGlhbG9nLWNsb3NlPkNhbmNlbDwvYnV0dG9uPlxyXG48L21hdC1kaWFsb2ctYWN0aW9ucz5cclxuXHJcblxyXG5cclxuIl19
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class InvitationsComponent {
|
|
4
|
+
constructor() { }
|
|
5
|
+
ngOnInit() {
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
InvitationsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: InvitationsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9
|
+
InvitationsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: InvitationsComponent, selector: "spa-invitations", ngImport: i0, template: "<p>invitations works!</p>\n", styles: [""] });
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: InvitationsComponent, decorators: [{
|
|
11
|
+
type: Component,
|
|
12
|
+
args: [{ selector: 'spa-invitations', template: "<p>invitations works!</p>\n" }]
|
|
13
|
+
}], ctorParameters: function () { return []; } });
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52aXRhdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvaW52aXRhdGlvbnMvaW52aXRhdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvaW52aXRhdGlvbnMvaW52aXRhdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7QUFPbEQsTUFBTSxPQUFPLG9CQUFvQjtJQUUvQixnQkFBZ0IsQ0FBQztJQUVqQixRQUFRO0lBQ1IsQ0FBQzs7aUhBTFUsb0JBQW9CO3FHQUFwQixvQkFBb0IsdURDUGpDLDZCQUNBOzJGRE1hLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzcGEtaW52aXRhdGlvbnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW52aXRhdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbnZpdGF0aW9ucy5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSW52aXRhdGlvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gIH1cblxufVxuIiwiPHA+aW52aXRhdGlvbnMgd29ya3MhPC9wPlxuIl19
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../services/datalib.service";
|
|
5
|
+
import * as i2 from "../../services/message.service";
|
|
6
|
+
import * as i3 from "../../services/auth.service";
|
|
7
|
+
import * as i4 from "../table/table.component";
|
|
8
|
+
export class InvitationsTableComponent {
|
|
9
|
+
constructor(dataService, messageService, authService) {
|
|
10
|
+
this.dataService = dataService;
|
|
11
|
+
this.messageService = messageService;
|
|
12
|
+
this.authService = authService;
|
|
13
|
+
this.tableReload = new Subject();
|
|
14
|
+
this.invTableConfig = {
|
|
15
|
+
greyOut: (value) => value.accepted == false,
|
|
16
|
+
elevation: 'low',
|
|
17
|
+
minColumns: ['tenantName'],
|
|
18
|
+
minButtons: ['accept', 'decline'],
|
|
19
|
+
flatButtons: true,
|
|
20
|
+
columns: [
|
|
21
|
+
{ name: 'tenantName', alias: 'Organisation', type: 'text' },
|
|
22
|
+
{ name: 'owner', type: 'text', },
|
|
23
|
+
],
|
|
24
|
+
buttons: [
|
|
25
|
+
{ name: 'accept', icon: { 'name': 'done', }, color: 'green', confirm: { message: 'Accept ?' }, disabled: (x) => x.accepted },
|
|
26
|
+
{ name: 'decline', icon: { 'name': 'close', }, color: 'red', confirm: { message: 'Decline ?' }, disabled: (x) => x.accepted },
|
|
27
|
+
],
|
|
28
|
+
loadAction: { url: 'tenant/invitations/x' },
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
ngOnInit() {
|
|
32
|
+
}
|
|
33
|
+
invActionClicked(x) {
|
|
34
|
+
let message = "Accept";
|
|
35
|
+
let action = "accept";
|
|
36
|
+
if (x.name == "decline") {
|
|
37
|
+
action = "remove";
|
|
38
|
+
message = "Decline";
|
|
39
|
+
}
|
|
40
|
+
//accept / decline
|
|
41
|
+
this.messageService.confirm(`${message} ${x.data.tenantName} ?`).subscribe((result) => {
|
|
42
|
+
if (result == "yes") {
|
|
43
|
+
this.dataService.CallApi({ url: 'tenant/members?action=' + action, method: 'post', }, x.data).subscribe((apiResponse) => {
|
|
44
|
+
if (apiResponse.success) {
|
|
45
|
+
this.tableReload.next(true);
|
|
46
|
+
// switch
|
|
47
|
+
this.messageService.confirm(`Switch to ${x.data.tenantName} now ?`).subscribe((result) => {
|
|
48
|
+
if (result == "yes") {
|
|
49
|
+
let tenant = { tenantID: x.data.tenantID };
|
|
50
|
+
this.dataService.CallApi({ url: 'tenant/tenants?action=switch', method: 'post' }, tenant).subscribe((apiResponse) => {
|
|
51
|
+
if (apiResponse.success) {
|
|
52
|
+
this.messageService.toast("Switched Successfully, please login again");
|
|
53
|
+
this.authService.logoff();
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
InvitationsTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: InvitationsTableComponent, deps: [{ token: i1.DataServiceLib }, { token: i2.MessageService }, { token: i3.AuthService }], target: i0.ɵɵFactoryTarget.Component });
|
|
65
|
+
InvitationsTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: InvitationsTableComponent, selector: "spa-invitations-table", ngImport: i0, template: "<spa-table [config]=\"invTableConfig\" (actionClick)=\"invActionClicked($event)\" [reload]=\"tableReload\"></spa-table>\n", styles: [""], dependencies: [{ kind: "component", type: i4.TableComponent, selector: "spa-table", inputs: ["hideTitle", "data", "config", "reload"], outputs: ["dataLoad", "refreshClick", "searchClick", "createClick", "actionClick", "inputChange"] }] });
|
|
66
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: InvitationsTableComponent, decorators: [{
|
|
67
|
+
type: Component,
|
|
68
|
+
args: [{ selector: 'spa-invitations-table', template: "<spa-table [config]=\"invTableConfig\" (actionClick)=\"invActionClicked($event)\" [reload]=\"tableReload\"></spa-table>\n" }]
|
|
69
|
+
}], ctorParameters: function () { return [{ type: i1.DataServiceLib }, { type: i2.MessageService }, { type: i3.AuthService }]; } });
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52aXRhdGlvbnMtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvaW52aXRhdGlvbnMtdGFibGUvaW52aXRhdGlvbnMtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvaW52aXRhdGlvbnMtdGFibGUvaW52aXRhdGlvbnMtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUtsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7QUFPL0IsTUFBTSxPQUFPLHlCQUF5QjtJQUVwQyxZQUFtQixXQUEyQixFQUFVLGNBQThCLEVBQVMsV0FBd0I7UUFBcEcsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFpRHZILGdCQUFXLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7UUFDOUMsbUJBQWMsR0FBZ0I7WUFFNUIsT0FBTyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLEtBQUs7WUFDM0MsU0FBUyxFQUFFLEtBQUs7WUFDaEIsVUFBVSxFQUFFLENBQUMsWUFBWSxDQUFDO1lBQzFCLFVBQVUsRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUM7WUFDakMsV0FBVyxFQUFHLElBQUk7WUFFbEIsT0FBTyxFQUFFO2dCQUNQLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7Z0JBQzNELEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFB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ImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFwaVJlc3BvbnNlLCBUYWJsZUNvbmZpZyB9IGZyb20gJy4uLy4uL2NsYXNzZXMvQ2xhc3Nlcyc7XHJcbmltcG9ydCB7IERhdGFTZXJ2aWNlTGliIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YWxpYi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tZXNzYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc3BhLWludml0YXRpb25zLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW52aXRhdGlvbnMtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ludml0YXRpb25zLXRhYmxlLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW52aXRhdGlvbnNUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkYXRhU2VydmljZTogRGF0YVNlcnZpY2VMaWIsIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLCBwdWJsaWMgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICBpbnZBY3Rpb25DbGlja2VkKHgpIHtcclxuXHJcbiAgICBsZXQgbWVzc2FnZSA9IFwiQWNjZXB0XCJcclxuICAgIGxldCBhY3Rpb24gPSBcImFjY2VwdFwiXHJcbiAgICBpZiAoeC5uYW1lID09IFwiZGVjbGluZVwiKSB7XHJcbiAgICAgIGFjdGlvbiA9IFwicmVtb3ZlXCI7XHJcbiAgICAgIG1lc3NhZ2UgPSBcIkRlY2xpbmVcIlxyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgLy9hY2NlcHQgLyBkZWNsaW5lXHJcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmNvbmZpcm0oYCR7bWVzc2FnZX0gJHt4LmRhdGEudGVuYW50TmFtZX0gP2ApLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcblxyXG4gICAgICBpZiAocmVzdWx0ID09IFwieWVzXCIpIHtcclxuICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLkNhbGxBcGkoeyB1cmw6ICd0ZW5hbnQvbWVtYmVycz9hY3Rpb249JyArIGFjdGlvbiwgbWV0aG9kOiAncG9zdCcsIH0sIHguZGF0YSkuc3Vic2NyaWJlKChhcGlSZXNwb25zZTogQXBpUmVzcG9uc2UpID0+IHtcclxuXHJcbiAgICAgICAgICBpZiAoYXBpUmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLnRhYmxlUmVsb2FkLm5leHQodHJ1ZSlcclxuXHJcbiAgICAgICAgICAgIC8vIHN3aXRjaFxyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmNvbmZpcm0oYFN3aXRjaCB0byAke3guZGF0YS50ZW5hbnROYW1lfSBub3cgP2ApLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBcInllc1wiKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHRlbmFudCA9IHt0ZW5hbnRJRCA6IHguZGF0YS50ZW5hbnRJRH1cclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLkNhbGxBcGkoeyB1cmw6ICd0ZW5hbnQvdGVuYW50cz9hY3Rpb249c3dpdGNoJywgbWV0aG9kOiAncG9zdCcgfSwgdGVuYW50KS5zdWJzY3JpYmUoKGFwaVJlc3BvbnNlOiBBcGlSZXNwb25zZSkgPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgICAgaWYgKGFwaVJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiU3dpdGNoZWQgU3VjY2Vzc2Z1bGx5LCBwbGVhc2UgbG9naW4gYWdhaW5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5sb2dvZmYoKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICB0YWJsZVJlbG9hZDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgaW52VGFibGVDb25maWc6IFRhYmxlQ29uZmlnID0ge1xyXG5cclxuICAgIGdyZXlPdXQ6ICh2YWx1ZSkgPT4gdmFsdWUuYWNjZXB0ZWQgPT0gZmFsc2UsXHJcbiAgICBlbGV2YXRpb246ICdsb3cnLFxyXG4gICAgbWluQ29sdW1uczogWyd0ZW5hbnROYW1lJ10sXHJcbiAgICBtaW5CdXR0b25zOiBbJ2FjY2VwdCcsICdkZWNsaW5lJ10sXHJcbiAgICBmbGF0QnV0dG9ucyA6IHRydWUsXHJcblxyXG4gICAgY29sdW1uczogW1xyXG4gICAgICB7IG5hbWU6ICd0ZW5hbnROYW1lJywgYWxpYXM6ICdPcmdhbmlzYXRpb24nLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgeyBuYW1lOiAnb3duZXInLCB0eXBlOiAndGV4dCcsIH0sXHJcbiAgICBdLFxyXG5cclxuICAgIGJ1dHRvbnM6IFtcclxuICAgICAgeyBuYW1lOiAnYWNjZXB0JywgaWNvbjogeyAnbmFtZSc6ICdkb25lJywgfSwgY29sb3I6ICdncmVlbicsIGNvbmZpcm06IHsgbWVzc2FnZTogJ0FjY2VwdCA/JyB9LCBkaXNhYmxlZDogKHgpID0+IHguYWNjZXB0ZWQgfSxcclxuICAgICAgeyBuYW1lOiAnZGVjbGluZScsIGljb246IHsgJ25hbWUnOiAnY2xvc2UnLCB9LCBjb2xvcjogJ3JlZCcsIGNvbmZpcm06IHsgbWVzc2FnZTogJ0RlY2xpbmUgPycgfSwgZGlzYWJsZWQ6ICh4KSA9PiB4LmFjY2VwdGVkIH0sXHJcbiAgICBdLFxyXG5cclxuICAgIGxvYWRBY3Rpb246IHsgdXJsOiAndGVuYW50L2ludml0YXRpb25zL3gnIH0sXHJcblxyXG4gIH1cclxufVxyXG4iLCI8c3BhLXRhYmxlIFtjb25maWddPVwiaW52VGFibGVDb25maWdcIiAoYWN0aW9uQ2xpY2spPVwiaW52QWN0aW9uQ2xpY2tlZCgkZXZlbnQpXCIgW3JlbG9hZF09XCJ0YWJsZVJlbG9hZFwiPjwvc3BhLXRhYmxlPlxuIl19
|