tin-spa 14.0.1 → 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.
Files changed (234) hide show
  1. package/README.md +24 -24
  2. package/esm2020/lib/classes/Classes.mjs +206 -53
  3. package/esm2020/lib/classes/TinCore.mjs +46 -213
  4. package/esm2020/lib/components/accounts/accountDialog.component.mjs +56 -0
  5. package/esm2020/lib/components/accounts/accounts.component.mjs +70 -0
  6. package/esm2020/lib/components/alert/alert.component.mjs +7 -21
  7. package/esm2020/lib/components/attach/attach.component.mjs +33 -49
  8. package/esm2020/lib/components/bug/bug.component.mjs +14 -0
  9. package/esm2020/lib/components/change-password/change-password.component.mjs +92 -0
  10. package/esm2020/lib/components/create-account/create-account.component.mjs +109 -0
  11. package/esm2020/lib/components/customers/customers.component.mjs +60 -0
  12. package/esm2020/lib/components/date/date.component.mjs +8 -10
  13. package/esm2020/lib/components/datetime/datetime.component.mjs +3 -6
  14. package/esm2020/lib/{pages → components}/departments/departments.component.mjs +5 -3
  15. package/esm2020/lib/components/employees/employees.component.mjs +21 -0
  16. package/esm2020/lib/components/filter/filter.component.mjs +3 -7
  17. package/esm2020/lib/components/form/form.component.mjs +52 -157
  18. package/esm2020/lib/components/grades/grades.component.mjs +14 -0
  19. package/esm2020/lib/components/inventory/inventory.component.mjs +99 -0
  20. package/esm2020/lib/components/inventory/quantityDialog.component.mjs +53 -0
  21. package/esm2020/lib/components/invitations/invitations.component.mjs +14 -0
  22. package/esm2020/lib/components/invitations-table/invitations-table.component.mjs +70 -0
  23. package/esm2020/lib/components/label/label.component.mjs +3 -9
  24. package/esm2020/lib/components/list-dialog/list-dialog.component.mjs +3 -3
  25. package/esm2020/lib/components/login/login.component.mjs +127 -0
  26. package/esm2020/lib/components/logs/logs.component.mjs +37 -0
  27. package/esm2020/lib/components/membership/membership.component.mjs +48 -0
  28. package/esm2020/lib/components/money/money.component.mjs +9 -26
  29. package/esm2020/lib/components/nav-menu/nav-menu.component.mjs +28 -32
  30. package/esm2020/lib/components/notifications/notifications.component.mjs +14 -0
  31. package/esm2020/lib/components/number/number.component.mjs +8 -23
  32. package/esm2020/lib/components/option/option.component.mjs +14 -39
  33. package/esm2020/lib/components/plans/plans.component.mjs +47 -0
  34. package/esm2020/lib/components/positions/positions.component.mjs +21 -0
  35. package/esm2020/lib/components/profile/profile.component.mjs +92 -0
  36. package/esm2020/lib/components/recover-account/recover-account.component.mjs +46 -0
  37. package/esm2020/lib/{pages → components}/roles/addRoleDialog.component.mjs +3 -3
  38. package/esm2020/lib/components/roles/roles.component.mjs +91 -0
  39. package/esm2020/lib/components/search/search.component.mjs +5 -10
  40. package/esm2020/lib/components/select/select.component.mjs +119 -56
  41. package/esm2020/lib/components/settings/settings.component.mjs +62 -0
  42. package/esm2020/lib/components/signup/signup.component.mjs +50 -0
  43. package/esm2020/lib/components/steps/steps.component.mjs +61 -83
  44. package/esm2020/lib/components/suppliers/suppliers.component.mjs +50 -0
  45. package/esm2020/lib/components/table/detailsDialog.component.mjs +41 -215
  46. package/esm2020/lib/components/table/table.component.mjs +108 -142
  47. package/esm2020/lib/components/table-action/table-action.component.mjs +8 -42
  48. package/esm2020/lib/components/table-header/table-header.component.mjs +15 -87
  49. package/esm2020/lib/components/table-internal/detailsDialog-internal.component.mjs +39 -219
  50. package/esm2020/lib/components/table-internal/table-internal.component.mjs +109 -144
  51. package/esm2020/lib/components/table-row/table-row.component.mjs +6 -41
  52. package/esm2020/lib/components/tasks/tasks.component.mjs +86 -0
  53. package/esm2020/lib/components/tenant-settings/inviteDialog.component.mjs +60 -0
  54. package/esm2020/lib/components/tenant-settings/tenant-settings.component.mjs +155 -0
  55. package/esm2020/lib/components/tenants/tenants.component.mjs +47 -0
  56. package/esm2020/lib/components/text/text.component.mjs +48 -122
  57. package/esm2020/lib/components/tiles/tiles.component.mjs +26 -44
  58. package/esm2020/lib/components/transactions/transactDialog.component.mjs +80 -0
  59. package/esm2020/lib/components/transactions/transactions.component.mjs +101 -0
  60. package/esm2020/lib/components/users/users.component.mjs +118 -0
  61. package/esm2020/lib/components/viewer/viewer.component.mjs +3 -7
  62. package/esm2020/lib/components/viewer/viewerDialog.component.mjs +13 -20
  63. package/esm2020/lib/components/welcome/welcome.component.mjs +86 -0
  64. package/esm2020/lib/modules/admin/admin-routing.module.mjs +22 -32
  65. package/esm2020/lib/modules/index/index-routing.module.mjs +4 -4
  66. package/esm2020/lib/modules/spa-admin.module.mjs +7 -7
  67. package/esm2020/lib/modules/spa-index.module.mjs +4 -4
  68. package/esm2020/lib/modules/spa-user.module.mjs +3 -3
  69. package/esm2020/lib/modules/user/user-routing.module.mjs +3 -3
  70. package/esm2020/lib/services/auth.service.mjs +2 -3
  71. package/esm2020/lib/services/button.service.mjs +32 -92
  72. package/esm2020/lib/services/datalib.service.mjs +78 -551
  73. package/esm2020/lib/services/dialog.service.mjs +7 -51
  74. package/esm2020/lib/services/log.service.mjs +2 -2
  75. package/esm2020/lib/services/table-config.service.mjs +7 -55
  76. package/esm2020/lib/tin-spa.module.mjs +30 -72
  77. package/esm2020/public-api.mjs +25 -35
  78. package/fesm2015/tin-spa.mjs +2681 -6963
  79. package/fesm2015/tin-spa.mjs.map +1 -1
  80. package/fesm2020/tin-spa.mjs +2750 -7078
  81. package/fesm2020/tin-spa.mjs.map +1 -1
  82. package/lib/classes/Classes.d.ts +296 -280
  83. package/lib/classes/TinCore.d.ts +4 -15
  84. package/lib/components/alert/alert.component.d.ts +3 -4
  85. package/lib/components/attach/attach.component.d.ts +6 -13
  86. package/lib/{pages → components}/change-password/change-password.component.d.ts +1 -1
  87. package/lib/{pages → components}/create-account/create-account.component.d.ts +1 -2
  88. package/lib/{pages → components}/customers/customers.component.d.ts +8 -2
  89. package/lib/components/date/date.component.d.ts +1 -1
  90. package/lib/components/datetime/datetime.component.d.ts +1 -2
  91. package/lib/components/filter/filter.component.d.ts +0 -1
  92. package/lib/components/form/form.component.d.ts +9 -20
  93. package/lib/components/invitations/invitations.component.d.ts +8 -0
  94. package/lib/{pages → components}/invitations-table/invitations-table.component.d.ts +1 -1
  95. package/lib/components/label/label.component.d.ts +1 -3
  96. package/lib/{pages → components}/login/login.component.d.ts +3 -10
  97. package/lib/{pages → components}/logs/logs.component.d.ts +6 -2
  98. package/lib/{pages → components}/membership/membership.component.d.ts +6 -2
  99. package/lib/components/money/money.component.d.ts +1 -8
  100. package/lib/components/nav-menu/nav-menu.component.d.ts +2 -6
  101. package/lib/components/notifications/notifications.component.d.ts +8 -0
  102. package/lib/components/number/number.component.d.ts +1 -7
  103. package/lib/components/option/option.component.d.ts +2 -11
  104. package/lib/{pages → components}/plans/plans.component.d.ts +6 -2
  105. package/lib/{pages → components}/profile/profile.component.d.ts +1 -2
  106. package/lib/{pages → components}/roles/addRoleDialog.component.d.ts +1 -1
  107. package/lib/{pages → components}/roles/roles.component.d.ts +3 -15
  108. package/lib/components/search/search.component.d.ts +1 -3
  109. package/lib/components/select/select.component.d.ts +35 -16
  110. package/lib/{pages → components}/signup/signup.component.d.ts +1 -1
  111. package/lib/components/steps/steps.component.d.ts +9 -18
  112. package/lib/{pages → components}/suppliers/suppliers.component.d.ts +4 -1
  113. package/lib/components/table/detailsDialog.component.d.ts +7 -29
  114. package/lib/components/table/table.component.d.ts +9 -18
  115. package/lib/components/table-action/table-action.component.d.ts +1 -4
  116. package/lib/components/table-header/table-header.component.d.ts +4 -19
  117. package/lib/components/table-internal/detailsDialog-internal.component.d.ts +7 -29
  118. package/lib/components/table-internal/table-internal.component.d.ts +9 -18
  119. package/lib/components/table-row/table-row.component.d.ts +2 -5
  120. package/lib/{pages → components}/tasks/tasks.component.d.ts +1 -1
  121. package/lib/components/tenant-settings/inviteDialog.component.d.ts +28 -0
  122. package/lib/{pages → components}/tenant-settings/tenant-settings.component.d.ts +7 -12
  123. package/lib/{pages → components}/tenants/tenants.component.d.ts +2 -2
  124. package/lib/components/text/text.component.d.ts +5 -22
  125. package/lib/components/tiles/tiles.component.d.ts +4 -7
  126. package/lib/{pages → components}/users/users.component.d.ts +16 -8
  127. package/lib/components/viewer/viewerDialog.component.d.ts +1 -3
  128. package/lib/modules/spa-admin.module.d.ts +6 -6
  129. package/lib/modules/spa-index.module.d.ts +3 -3
  130. package/lib/modules/spa-user.module.d.ts +2 -2
  131. package/lib/services/auth.service.d.ts +1 -1
  132. package/lib/services/button.service.d.ts +8 -11
  133. package/lib/services/datalib.service.d.ts +10 -58
  134. package/lib/services/dialog.service.d.ts +2 -3
  135. package/lib/services/log.service.d.ts +1 -1
  136. package/lib/services/table-config.service.d.ts +1 -9
  137. package/lib/tin-spa.module.d.ts +33 -53
  138. package/package.json +1 -1
  139. package/public-api.d.ts +23 -33
  140. package/esm2020/lib/classes/LibClasses.mjs +0 -180
  141. package/esm2020/lib/components/capsules/capsules.component.mjs +0 -63
  142. package/esm2020/lib/components/cards/cards.component.mjs +0 -103
  143. package/esm2020/lib/components/email/email.component.mjs +0 -133
  144. package/esm2020/lib/components/html/html.component.mjs +0 -34
  145. package/esm2020/lib/components/multi-select/multi-select.component.mjs +0 -165
  146. package/esm2020/lib/components/multi-text/multi-text.component.mjs +0 -208
  147. package/esm2020/lib/components/notes/notes.component.mjs +0 -62
  148. package/esm2020/lib/components/page/page.component.mjs +0 -101
  149. package/esm2020/lib/components/select-bitwise/select-bitwise.component.mjs +0 -87
  150. package/esm2020/lib/components/select-common/select-common.component.mjs +0 -206
  151. package/esm2020/lib/components/select-internal/select-internal.component.mjs +0 -75
  152. package/esm2020/lib/components/select-lite/select-lite.component.mjs +0 -18
  153. package/esm2020/lib/components/statuses/statuses.component.mjs +0 -44
  154. package/esm2020/lib/components/suffix/suffix.component.mjs +0 -70
  155. package/esm2020/lib/components/table-lite/detailsDialog-lite.component.mjs +0 -404
  156. package/esm2020/lib/components/table-lite/table-lite.component.mjs +0 -441
  157. package/esm2020/lib/components/tabs/tabs.component.mjs +0 -74
  158. package/esm2020/lib/pages/accounts/accountDialog.component.mjs +0 -56
  159. package/esm2020/lib/pages/accounts/accounts.component.mjs +0 -70
  160. package/esm2020/lib/pages/app-models/app-models.component.mjs +0 -56
  161. package/esm2020/lib/pages/approvals/approvals.component.mjs +0 -19
  162. package/esm2020/lib/pages/approvals-config/approvals-config.component.mjs +0 -165
  163. package/esm2020/lib/pages/bug/bug.component.mjs +0 -14
  164. package/esm2020/lib/pages/change-password/change-password.component.mjs +0 -92
  165. package/esm2020/lib/pages/create-account/create-account.component.mjs +0 -110
  166. package/esm2020/lib/pages/customers/customers.component.mjs +0 -21
  167. package/esm2020/lib/pages/employees/employees.component.mjs +0 -20
  168. package/esm2020/lib/pages/grades/grades.component.mjs +0 -14
  169. package/esm2020/lib/pages/inventory/inventory.component.mjs +0 -99
  170. package/esm2020/lib/pages/inventory/quantityDialog.component.mjs +0 -53
  171. package/esm2020/lib/pages/invitations-table/invitations-table.component.mjs +0 -71
  172. package/esm2020/lib/pages/login/login.component.mjs +0 -166
  173. package/esm2020/lib/pages/logs/logs.component.mjs +0 -42
  174. package/esm2020/lib/pages/membership/membership.component.mjs +0 -44
  175. package/esm2020/lib/pages/notifications/notifications.component.mjs +0 -90
  176. package/esm2020/lib/pages/notifications-config/notifications-config.component.mjs +0 -113
  177. package/esm2020/lib/pages/plans/plans.component.mjs +0 -44
  178. package/esm2020/lib/pages/positions/positions.component.mjs +0 -21
  179. package/esm2020/lib/pages/profile/profile.component.mjs +0 -94
  180. package/esm2020/lib/pages/recover-account/recover-account.component.mjs +0 -46
  181. package/esm2020/lib/pages/roles/roles.component.mjs +0 -151
  182. package/esm2020/lib/pages/settings/settings.component.mjs +0 -54
  183. package/esm2020/lib/pages/signup/signup.component.mjs +0 -50
  184. package/esm2020/lib/pages/suppliers/suppliers.component.mjs +0 -22
  185. package/esm2020/lib/pages/tasks/tasks.component.mjs +0 -86
  186. package/esm2020/lib/pages/tenant-settings/tenant-settings.component.mjs +0 -228
  187. package/esm2020/lib/pages/tenants/tenants.component.mjs +0 -47
  188. package/esm2020/lib/pages/transactions/transactDialog.component.mjs +0 -80
  189. package/esm2020/lib/pages/transactions/transactions.component.mjs +0 -101
  190. package/esm2020/lib/pages/users/users.component.mjs +0 -167
  191. package/esm2020/lib/pages/welcome/welcome.component.mjs +0 -86
  192. package/esm2020/lib/select-context.directive.mjs +0 -23
  193. package/esm2020/lib/services/csv.service.mjs +0 -49
  194. package/esm2020/lib/services/notifications.service.mjs +0 -33
  195. package/lib/classes/LibClasses.d.ts +0 -173
  196. package/lib/components/capsules/capsules.component.d.ts +0 -26
  197. package/lib/components/cards/cards.component.d.ts +0 -39
  198. package/lib/components/email/email.component.d.ts +0 -40
  199. package/lib/components/html/html.component.d.ts +0 -16
  200. package/lib/components/multi-select/multi-select.component.d.ts +0 -47
  201. package/lib/components/multi-text/multi-text.component.d.ts +0 -56
  202. package/lib/components/notes/notes.component.d.ts +0 -19
  203. package/lib/components/page/page.component.d.ts +0 -38
  204. package/lib/components/select-bitwise/select-bitwise.component.d.ts +0 -31
  205. package/lib/components/select-common/select-common.component.d.ts +0 -53
  206. package/lib/components/select-internal/select-internal.component.d.ts +0 -23
  207. package/lib/components/select-lite/select-lite.component.d.ts +0 -8
  208. package/lib/components/statuses/statuses.component.d.ts +0 -12
  209. package/lib/components/suffix/suffix.component.d.ts +0 -23
  210. package/lib/components/table-lite/detailsDialog-lite.component.d.ts +0 -86
  211. package/lib/components/table-lite/table-lite.component.d.ts +0 -91
  212. package/lib/components/tabs/tabs.component.d.ts +0 -32
  213. package/lib/pages/app-models/app-models.component.d.ts +0 -15
  214. package/lib/pages/approvals/approvals.component.d.ts +0 -10
  215. package/lib/pages/approvals-config/approvals-config.component.d.ts +0 -24
  216. package/lib/pages/notifications/notifications.component.d.ts +0 -16
  217. package/lib/pages/notifications-config/notifications-config.component.d.ts +0 -17
  218. package/lib/select-context.directive.d.ts +0 -10
  219. package/lib/services/csv.service.d.ts +0 -10
  220. package/lib/services/notifications.service.d.ts +0 -12
  221. /package/lib/{pages → components}/accounts/accountDialog.component.d.ts +0 -0
  222. /package/lib/{pages → components}/accounts/accounts.component.d.ts +0 -0
  223. /package/lib/{pages → components}/bug/bug.component.d.ts +0 -0
  224. /package/lib/{pages → components}/departments/departments.component.d.ts +0 -0
  225. /package/lib/{pages → components}/employees/employees.component.d.ts +0 -0
  226. /package/lib/{pages → components}/grades/grades.component.d.ts +0 -0
  227. /package/lib/{pages → components}/inventory/inventory.component.d.ts +0 -0
  228. /package/lib/{pages → components}/inventory/quantityDialog.component.d.ts +0 -0
  229. /package/lib/{pages → components}/positions/positions.component.d.ts +0 -0
  230. /package/lib/{pages → components}/recover-account/recover-account.component.d.ts +0 -0
  231. /package/lib/{pages → components}/settings/settings.component.d.ts +0 -0
  232. /package/lib/{pages → components}/transactions/transactDialog.component.d.ts +0 -0
  233. /package/lib/{pages → components}/transactions/transactions.component.d.ts +0 -0
  234. /package/lib/{pages → components}/welcome/welcome.component.d.ts +0 -0
@@ -1,228 +0,0 @@
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 "@angular/material/dialog";
8
- import * as i5 from "@angular/common";
9
- import * as i6 from "@angular/material/button";
10
- import * as i7 from "../../components/label/label.component";
11
- import * as i8 from "../../components/select/select.component";
12
- import * as i9 from "../../components/table/table.component";
13
- import * as i10 from "../invitations-table/invitations-table.component";
14
- export class TenantSettingsComponent {
15
- constructor(dataService, messageService, authService, dialog) {
16
- this.dataService = dataService;
17
- this.messageService = messageService;
18
- this.authService = authService;
19
- this.dialog = dialog;
20
- this.roles = [
21
- { roleName: 'Default', roleID: 1 },
22
- ];
23
- //Members
24
- this.roleField = { name: 'roleID', type: 'select', required: true, span: true, options: this.roles, optionDisplay: 'roleName', optionValue: 'roleID', defaultFirstValue: true };
25
- this.inviteDialogConfig = {
26
- formConfig: {
27
- title: 'Add Member',
28
- fixedTitle: true,
29
- fields: [
30
- { name: 'email', type: 'text', required: true, span: true },
31
- { name: 'firstName', type: 'text', required: true, min: 2, },
32
- { name: 'lastName', type: 'text', required: true, min: 2, },
33
- this.roleField,
34
- ]
35
- },
36
- mode: 'create',
37
- buttons: [
38
- { name: 'create', action: { url: 'members/dto?action=invite', method: 'post', successMessage: 'Updated successfully' } }
39
- ]
40
- };
41
- this.membersFormConfig = {
42
- title: 'Member Access',
43
- alertConfig: { messages: [{ type: 'warn', content: 'You can amend the member\'s role here' }] },
44
- fields: [
45
- { name: 'email', type: 'text', readonly: true, span: true },
46
- { name: 'firstName', type: 'text', readonly: true },
47
- { name: 'lastName', type: 'text', readonly: true },
48
- this.roleField,
49
- ],
50
- };
51
- this.tableReload = new Subject();
52
- this.membersTableConfig = {
53
- greyOut: (value) => value.accepted == false,
54
- elevation: 'low',
55
- logResponse: true,
56
- minColumns: ['memberName'],
57
- minButtons: ['edit', 'remove'],
58
- flatButtons: true,
59
- columns: [
60
- { name: 'memberName', type: 'text', icons: [
61
- { name: 'schedule', tip: 'Waiting for user to accept invitation', condition: x => !x.accepted }
62
- ] },
63
- { name: 'email', type: 'text' },
64
- { name: 'roleName', alias: 'Role', type: 'text' },
65
- ],
66
- buttons: [
67
- { name: 'create', display: 'Add Member', dialog: true, detailsConfig: this.inviteDialogConfig },
68
- { name: 'edit', icon: { name: 'security' }, tip: 'Edit Access', dialog: true, action: { url: 'members/dto?action=role', method: 'post' }, },
69
- { name: 'remove', icon: { name: 'close', color: 'red' }, tip: 'Remove Member', confirm: { message: 'Remove Member from this Organisation ?' }, action: { url: 'members/dto?action=remove', method: 'post' }, disabled: x => x.own },
70
- ],
71
- loadAction: { url: 'members/all/x' },
72
- formConfig: this.membersFormConfig,
73
- };
74
- //Organsations
75
- this.orgFormConfig = {
76
- fixedTitle: true,
77
- fields: [
78
- { name: 'name', type: 'text', required: true, min: 2 },
79
- ]
80
- };
81
- this.createOrgDialogConfig = {
82
- formConfig: { ...this.orgFormConfig, title: 'New Organisation' },
83
- mode: 'create',
84
- buttons: [
85
- { name: 'create', action: { url: 'tenants/dto?action=create', method: 'post', successMessage: 'Created successfully' } }
86
- ]
87
- };
88
- this.renameOrgDialogConfig = {
89
- formConfig: {
90
- ...this.orgFormConfig,
91
- title: 'Organisation Details',
92
- fields: [
93
- ...this.orgFormConfig.fields,
94
- { name: 'companyDetails', type: 'section', },
95
- { name: 'companyName', type: 'text', required: true, span: true, alias: 'Company Name' },
96
- { name: 'address', type: 'text', required: true, rows: 3, span: true },
97
- { name: 'phone', type: 'text', required: true },
98
- { name: 'email', type: 'text', required: true }
99
- ]
100
- },
101
- mode: 'edit',
102
- buttons: [
103
- { name: 'edit', action: { url: 'tenants?action=edit', method: 'post', successMessage: 'Renamed successfully' } }
104
- ]
105
- };
106
- this.orgsReload = new Subject();
107
- this.orgsTableConfig = {
108
- greyOut: (value) => value.accepted == false,
109
- elevation: 'low',
110
- minColumns: ['name'],
111
- minButtons: ['login', 'edit', 'leave'],
112
- flatButtons: true,
113
- collapseButtons: true,
114
- columns: [
115
- { name: 'name', alias: 'Organisation', type: 'text', icons: [{ name: 'radio_button_checked', tip: 'Current Organisation', color: 'green', condition: x => x.tenantID == this.currentTenantID }] },
116
- { name: 'ownerName', type: 'text', alias: 'Owner' },
117
- ],
118
- buttons: [
119
- { name: 'create', display: 'New Organisation', dialog: true, detailsConfig: this.createOrgDialogConfig },
120
- {
121
- name: 'login', display: 'Switch to this Organisation', confirm: { message: 'Switch to this Organisation ?' }, action: { url: 'tenants/dto?action=switch', method: 'post' }, icon: { name: 'login', },
122
- visible: x => x.tenantID != this.currentTenantID
123
- },
124
- {
125
- name: 'edit', display: 'Rename Organisation', dialog: true, detailsConfig: this.renameOrgDialogConfig,
126
- visible: x => x.own
127
- },
128
- {
129
- name: 'leave', tip: 'Leave', icon: { name: 'directions_run', color: 'red' }, confirm: { message: 'Leave this Organisation ?' }, action: { url: 'members/dto?action=remove', method: 'post' },
130
- disabled: x => x.own
131
- },
132
- ],
133
- loadAction: { url: 'tenants/my_tenants/x' },
134
- };
135
- //Email
136
- this.mailerFormConfig = {
137
- fields: [
138
- { name: 'smtp', type: 'text', required: true, alias: 'SMTP Server' },
139
- { name: 'port', type: 'number', required: true, defaultValue: 587 },
140
- { name: 'address', type: 'text', required: true, alias: 'Email Address' },
141
- { name: 'display', type: 'text', required: true, alias: 'Display Name' },
142
- { name: 'password', type: 'password', required: true, span: true },
143
- { name: 'enableSsl', type: 'checkbox', alias: 'Enable SSL' },
144
- { name: 'isBodyHtml', type: 'checkbox', alias: 'HTML Body' },
145
- ]
146
- };
147
- this.mailerTableConfig = {
148
- showFilter: true,
149
- elevation: 'low',
150
- minColumns: ['smtp', 'address'],
151
- flatButtons: true,
152
- columns: [
153
- { name: 'smtp', type: 'text', alias: 'SMTP Server' },
154
- { name: 'port', type: 'number' },
155
- { name: 'address', type: 'text', alias: 'Email Address' },
156
- { name: 'display', type: 'text', alias: 'Display Name' },
157
- { name: 'enableSsl', type: 'checkbox', alias: 'SSL Enabled' },
158
- { name: 'isBodyHtml', type: 'checkbox', alias: 'HTML Body' },
159
- ],
160
- buttons: [
161
- { name: 'create', display: 'Configure Email', dialog: true, action: { url: 'mailerconfigs?action=create', method: 'post' } },
162
- { name: 'edit', dialog: true, action: { url: 'mailerconfigs?action=edit', method: 'post' } },
163
- { name: 'delete', dialog: true, action: { url: 'mailerconfigs?action=delete', method: 'post' } },
164
- ],
165
- loadAction: { url: 'mailerconfigs/all/x' },
166
- formConfig: this.mailerFormConfig
167
- };
168
- }
169
- ngOnInit() {
170
- this.authService.myRoleObserv.subscribe(rol => this.myRole = rol);
171
- this.loadData();
172
- this.loadTenants();
173
- }
174
- loadData() {
175
- this.dataService.CallApi({ url: 'tenants/meta/x' }, "").subscribe((apiResponse) => {
176
- this.currTenant = apiResponse.data.tenant;
177
- this.currentTenantID = apiResponse.data.currentTenantID;
178
- this.plan = apiResponse.data.plan;
179
- this.ownTenant = apiResponse.data.ownTenant;
180
- this.membersFormConfig.fields.find(x => x.name == 'roleID').options = apiResponse.data.roles;
181
- });
182
- }
183
- loadTenants() {
184
- this.dataService.CallApi({ url: 'tenants/meta_tenants/x' }, "").subscribe((apiResponse) => {
185
- this.tenants = apiResponse.data.tenants;
186
- });
187
- }
188
- updateTenant(x) {
189
- if (x.name == "edit" && x.data.success) {
190
- if (x.data.data.tenantID == this.currentTenantID) {
191
- this.authService.updateTenantName(x.data.data.name);
192
- }
193
- this.refreshOrgsLists();
194
- }
195
- if (x.name == "login" && x.data.success) {
196
- this.forceLogin();
197
- }
198
- if (x.name == "leave" && x.data.success) {
199
- this.refreshOrgsLists();
200
- }
201
- }
202
- refreshOrgsLists() {
203
- this.loadTenants();
204
- }
205
- switchTenant() {
206
- this.messageService.confirm(`Switch Organisation ?`).subscribe((result) => {
207
- if (result == "yes") {
208
- this.currTenant.tenantID = this.currentTenantID;
209
- this.dataService.CallApi({ url: 'tenants/dto?action=switch', method: 'post' }, this.currTenant).subscribe((apiResponse) => {
210
- if (apiResponse.success) {
211
- this.forceLogin();
212
- }
213
- });
214
- }
215
- });
216
- }
217
- forceLogin() {
218
- this.messageService.toast("Switched Successfully, please login again");
219
- this.authService.logoff();
220
- }
221
- }
222
- TenantSettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TenantSettingsComponent, deps: [{ token: i1.DataServiceLib }, { token: i2.MessageService }, { token: i3.AuthService }, { token: i4.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
223
- TenantSettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TenantSettingsComponent, selector: "spa-tenant-settings", ngImport: i0, template: "<div class=\"container\">\r\n\r\n <div>\r\n\r\n <label class=\"title\" >Organisation Details</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n\r\n <div *ngIf=\"currTenant && plan\" class=\"mb-2 mt-3 tin-grid\" style=\" font-size: 14px;\">\r\n\r\n <div class=\"tin-col mb-3\" style=\"max-width: 500px;\">\r\n <spa-select display=\"Current Organisation\" [options]=\"tenants\" optionDisplay=\"name\" optionValue=\"tenantID\" [(value)]=\"currentTenantID\"\r\n hint=\"You are required to login again after switching organisations.\" style=\"min-width: 300px;margin-bottom: 10px;\"></spa-select>\r\n <button mat-stroked-button color=\"primary\" [disabled]=\"currentTenantID == currTenant.tenantID\" (click)=\"switchTenant()\">Switch</button>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <ng-container *ngIf=\"ownTenant\" >\r\n <!-- Members -->\r\n <div class=\"mt-3\" >\r\n\r\n <label class=\"title\" >Members</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Invite other users to join your organisation as partners or employees to form a partnership or company.</label>\r\n\r\n <spa-table [config]=\"membersTableConfig\" [reload]=\"tableReload\" ></spa-table>\r\n\r\n </div>\r\n\r\n\r\n<!-- My Organisations -->\r\n <div class=\"mt-3\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\" >My Organisations</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Organisations that you are a member of.</label>\r\n\r\n <spa-table [config]=\"orgsTableConfig\" [reload]=\"orgsReload\" (actionResponse)=\"updateTenant($event)\"></spa-table>\r\n\r\n </div>\r\n\r\n\r\n <!-- My Invitations -->\r\n <div class=\"mt-3\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\">My Invitations</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Requests for you to join other organisations.</label>\r\n\r\n\r\n <spa-invitations-table></spa-invitations-table>\r\n\r\n </div>\r\n\r\n <!-- Billing -->\r\n <div class=\"mt-3\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\" >Billing and Subscription</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n\r\n <div *ngIf=\"currTenant && plan\" class=\"mb-1 mt-3\" style=\"max-width: 300px; font-size: 14px;\">\r\n <spa-label display=\"Plan\" [value]=\"plan.name\"></spa-label>\r\n <spa-label display=\"Next Payment\" format=\"money\" [value]=\"plan.price\"></spa-label>\r\n <spa-label display=\"Due Date\" format=\"date\" value=\"2024-01-01\"></spa-label>\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- Email -->\r\n <div class=\"mt-3 mb-5\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\">Email Configuration</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Configure email settings for sending notifications.</label>\r\n\r\n <spa-table [config]=\"mailerTableConfig\"></spa-table>\r\n\r\n </div>\r\n\r\n\r\n </ng-container>\r\n\r\n\r\n\r\n</div>\r\n\r\n\r\n", styles: [".title{margin-top:1em;font-size:28px;font-weight:300}.subtitle{font-size:smaller}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.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: i7.LabelComponent, selector: "spa-label", inputs: ["display", "value", "format", "suffix", "size"] }, { kind: "component", type: i8.SelectComponent, selector: "spa-select", inputs: ["detailsConfig"] }, { kind: "component", type: i9.TableComponent, selector: "spa-table", inputs: ["data", "tileData", "config", "reload", "activeTab", "inTab"], outputs: ["dataLoad", "actionSuccess", "refreshClick", "searchClick", "createClick", "actionClick", "inputChange", "actionResponse"] }, { kind: "component", type: i10.InvitationsTableComponent, selector: "spa-invitations-table" }] });
224
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TenantSettingsComponent, decorators: [{
225
- type: Component,
226
- args: [{ selector: 'spa-tenant-settings', template: "<div class=\"container\">\r\n\r\n <div>\r\n\r\n <label class=\"title\" >Organisation Details</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n\r\n <div *ngIf=\"currTenant && plan\" class=\"mb-2 mt-3 tin-grid\" style=\" font-size: 14px;\">\r\n\r\n <div class=\"tin-col mb-3\" style=\"max-width: 500px;\">\r\n <spa-select display=\"Current Organisation\" [options]=\"tenants\" optionDisplay=\"name\" optionValue=\"tenantID\" [(value)]=\"currentTenantID\"\r\n hint=\"You are required to login again after switching organisations.\" style=\"min-width: 300px;margin-bottom: 10px;\"></spa-select>\r\n <button mat-stroked-button color=\"primary\" [disabled]=\"currentTenantID == currTenant.tenantID\" (click)=\"switchTenant()\">Switch</button>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <ng-container *ngIf=\"ownTenant\" >\r\n <!-- Members -->\r\n <div class=\"mt-3\" >\r\n\r\n <label class=\"title\" >Members</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Invite other users to join your organisation as partners or employees to form a partnership or company.</label>\r\n\r\n <spa-table [config]=\"membersTableConfig\" [reload]=\"tableReload\" ></spa-table>\r\n\r\n </div>\r\n\r\n\r\n<!-- My Organisations -->\r\n <div class=\"mt-3\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\" >My Organisations</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Organisations that you are a member of.</label>\r\n\r\n <spa-table [config]=\"orgsTableConfig\" [reload]=\"orgsReload\" (actionResponse)=\"updateTenant($event)\"></spa-table>\r\n\r\n </div>\r\n\r\n\r\n <!-- My Invitations -->\r\n <div class=\"mt-3\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\">My Invitations</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Requests for you to join other organisations.</label>\r\n\r\n\r\n <spa-invitations-table></spa-invitations-table>\r\n\r\n </div>\r\n\r\n <!-- Billing -->\r\n <div class=\"mt-3\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\" >Billing and Subscription</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n\r\n <div *ngIf=\"currTenant && plan\" class=\"mb-1 mt-3\" style=\"max-width: 300px; font-size: 14px;\">\r\n <spa-label display=\"Plan\" [value]=\"plan.name\"></spa-label>\r\n <spa-label display=\"Next Payment\" format=\"money\" [value]=\"plan.price\"></spa-label>\r\n <spa-label display=\"Due Date\" format=\"date\" value=\"2024-01-01\"></spa-label>\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- Email -->\r\n <div class=\"mt-3 mb-5\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\">Email Configuration</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Configure email settings for sending notifications.</label>\r\n\r\n <spa-table [config]=\"mailerTableConfig\"></spa-table>\r\n\r\n </div>\r\n\r\n\r\n </ng-container>\r\n\r\n\r\n\r\n</div>\r\n\r\n\r\n", styles: [".title{margin-top:1em;font-size:28px;font-weight:300}.subtitle{font-size:smaller}\n"] }]
227
- }], ctorParameters: function () { return [{ type: i1.DataServiceLib }, { type: i2.MessageService }, { type: i3.AuthService }, { type: i4.MatDialog }]; } });
228
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LXNldHRpbmdzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9wYWdlcy90ZW5hbnQtc2V0dGluZ3MvdGVuYW50LXNldHRpbmdzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9wYWdlcy90ZW5hbnQtc2V0dGluZ3MvdGVuYW50LXNldHRpbmdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFNbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7O0FBTy9CLE1BQU0sT0FBTyx1QkFBdUI7SUFFbEMsWUFBbUIsV0FBMkIsRUFBVSxjQUE4QixFQUFTLFdBQXdCLEVBQVMsTUFBaUI7UUFBOUgsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBZ0JqSixVQUFLLEdBQUc7WUFDTixFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRTtTQUNuQyxDQUFBO1FBa0VELFNBQVM7UUFFVCxjQUFTLEdBQVUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUcsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQTtRQUVsTCx1QkFBa0IsR0FBd0I7WUFDeEMsVUFBVSxFQUFFO2dCQUNWLEtBQUss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LElBQUksS0FBSyxFQUFFO2dCQUVuQixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO2dCQUVoRCxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQXdCLEVBQUUsRUFBRTtvQkFFckksSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFO3dCQUN2QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7cUJBQ2xCO2dCQUNILENBQUMsQ0FBQyxDQUFDO2FBQ0o7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzVCLENBQUM7O29IQWpGVSx1QkFBdUI7d0dBQXZCLHVCQUF1QiwyRENicEMsOG1HQTBGQTsyRkQ3RWEsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db25maWcsIFRhYmxlQ29uZmlnLCBBcGlSZXNwb25zZSwgRGV0YWlsc0RpYWxvZ0NvbmZpZywgRmllbGQgfSBmcm9tICcuLi8uLi9jbGFzc2VzL0NsYXNzZXMnO1xyXG5pbXBvcnQgeyBEYXRhU2VydmljZUxpYiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RhdGFsaWIuc2VydmljZSc7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWVzc2FnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NwYS10ZW5hbnQtc2V0dGluZ3MnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90ZW5hbnQtc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RlbmFudC1zZXR0aW5ncy5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRlbmFudFNldHRpbmdzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZUxpYiwgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsIHB1YmxpYyBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYXV0aFNlcnZpY2UubXlSb2xlT2JzZXJ2LnN1YnNjcmliZShyb2wgPT4gdGhpcy5teVJvbGUgPSByb2wpO1xyXG4gICAgdGhpcy5sb2FkRGF0YSgpO1xyXG4gICAgdGhpcy5sb2FkVGVuYW50cygpXHJcbiAgfVxyXG5cclxuICBuZXdOYW1lO1xyXG5cclxuICBteVJvbGVcclxuICB0ZW5hbnRzO1xyXG4gIGN1cnJUZW5hbnQ7XHJcbiAgY3VycmVudFRlbmFudElEO1xyXG4gIHBsYW47XHJcbiAgb3duVGVuYW50O1xyXG4gIHJvbGVzID0gW1xyXG4gICAgeyByb2xlTmFtZTogJ0RlZmF1bHQnLCByb2xlSUQ6IDEgfSxcclxuICBdXHJcblxyXG4gIGxvYWREYXRhKCl7XHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLkNhbGxBcGkoeyB1cmw6ICd0ZW5hbnRzL21ldGEveCcgfSwgXCJcIikuc3Vic2NyaWJlKChhcGlSZXNwb25zZTogQXBpUmVzcG9uc2UpID0+IHtcclxuICAgICAgdGhpcy5jdXJyVGVuYW50ID0gYXBpUmVzcG9uc2UuZGF0YS50ZW5hbnQ7XHJcbiAgICAgIHRoaXMuY3VycmVudFRlbmFudElEID0gYXBpUmVzcG9uc2UuZGF0YS5jdXJyZW50VGVuYW50SUQ7XHJcbiAgICAgIHRoaXMucGxhbiA9IGFwaVJlc3BvbnNlLmRhdGEucGxhbjtcclxuICAgICAgdGhpcy5vd25UZW5hbnQgPSBhcGlSZXNwb25zZS5kYXRhLm93blRlbmFudFxyXG4gICAgICB0aGlzLm1lbWJlcnNGb3JtQ29uZmlnLmZpZWxkcy5maW5kKHggPT4geC5uYW1lID09ICdyb2xlSUQnKS5vcHRpb25zID0gYXBpUmVzcG9uc2UuZGF0YS5yb2xlcztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZFRlbmFudHMoKSB7XHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLkNhbGxBcGkoeyB1cmw6ICd0ZW5hbnRzL21ldGFfdGVuYW50cy94JyB9LCBcIlwiKS5zdWJzY3JpYmUoKGFwaVJlc3BvbnNlOiBBcGlSZXNwb25zZSkgPT4ge1xyXG4gICAgICB0aGlzLnRlbmFudHMgPSBhcGlSZXNwb25zZS5kYXRhLnRlbmFudHM7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICB1cGRhdGVUZW5hbnQoeCl7XHJcblxyXG4gICAgaWYgKHgubmFtZSA9PSBcImVkaXRcIiAmJiB4LmRhdGEuc3VjY2VzcyApIHtcclxuICAgICAgaWYgKHguZGF0YS5kYXRhLnRlbmFudElEID09IHRoaXMuY3VycmVudFRlbmFudElEKXtcclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLnVwZGF0ZVRlbmFudE5hbWUoeC5kYXRhLmRhdGEubmFtZSlcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlZnJlc2hPcmdzTGlzdHMoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoeC5uYW1lID09IFwibG9naW5cIiAmJiB4LmRhdGEuc3VjY2Vzcykge1xyXG4gICAgICB0aGlzLmZvcmNlTG9naW4oKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoeC5uYW1lID09IFwibGVhdmVcIiAmJiB4LmRhdGEuc3VjY2Vzcykge1xyXG4gICAgICB0aGlzLnJlZnJlc2hPcmdzTGlzdHMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlZnJlc2hPcmdzTGlzdHMoKXtcclxuICAgIHRoaXMubG9hZFRlbmFudHMoKTtcclxuICB9XHJcblxyXG4gIHN3aXRjaFRlbmFudCgpIHtcclxuXHJcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmNvbmZpcm0oYFN3aXRjaCBPcmdhbmlzYXRpb24gP2ApLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQgPT0gXCJ5ZXNcIikge1xyXG5cclxuICAgICAgICB0aGlzLmN1cnJUZW5hbnQudGVuYW50SUQgPSB0aGlzLmN1cnJlbnRUZW5hbnRJRDtcclxuXHJcbiAgICAgICAgdGhpcy5kYXRhU2VydmljZS5DYWxsQXBpKHsgdXJsOiAndGVuYW50cy9kdG8/YWN0aW9uPXN3aXRjaCcsIG1ldGhvZDogJ3Bvc3QnIH0sIHRoaXMuY3VyclRlbmFudCkuc3Vic2NyaWJlKChhcGlSZXNwb25zZTogQXBpUmVzcG9uc2UpID0+IHtcclxuXHJcbiAgICAgICAgICBpZiAoYXBpUmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLmZvcmNlTG9naW4oKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGZvcmNlTG9naW4oKXtcclxuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoXCJTd2l0Y2hlZCBTdWNjZXNzZnVsbHksIHBsZWFzZSBsb2dpbiBhZ2FpblwiKTtcclxuICAgIHRoaXMuYXV0aFNlcnZpY2UubG9nb2ZmKCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuICAvL01lbWJlcnNcclxuXHJcbiAgcm9sZUZpZWxkOiBGaWVsZCA9IHsgbmFtZTogJ3JvbGVJRCcsIHR5cGU6ICdzZWxlY3QnLCByZXF1aXJlZDogdHJ1ZSwgc3BhbiA6IHRydWUsIG9wdGlvbnM6IHRoaXMucm9sZXMsIG9wdGlvbkRpc3BsYXk6ICdyb2xlTmFtZScsIG9wdGlvblZhbHVlOiAncm9sZUlEJywgZGVmYXVsdEZpcnN0VmFsdWU6IHRydWUgfVxyXG5cclxuICBpbnZpdGVEaWFsb2dDb25maWc6IERldGFpbHNEaWFsb2dDb25maWcgPSB7XHJcbiAgICBmb3JtQ29uZmlnOiB7XHJcbiAgICAgIHRpdGxlOiAnQWRkIE1lbWJlcicsXHJcbiAgICAgIGZpeGVkVGl0bGU6IHRydWUsXHJcbiAgICAgIGZpZWxkczogW1xyXG4gICAgICAgIHsgbmFtZTogJ2VtYWlsJywgdHlwZTogJ3RleHQnLCByZXF1aXJlZDogdHJ1ZSwgc3BhbjogdHJ1ZSB9LFxyXG4gICAgICAgIHsgbmFtZTogJ2ZpcnN0TmFtZScsIHR5cGU6ICd0ZXh0JywgcmVxdWlyZWQ6IHRydWUsIG1pbjogMiwgfSxcclxuICAgICAgICB7IG5hbWU6ICdsYXN0TmFtZScsIHR5cGU6ICd0ZXh0JywgcmVxdWlyZWQ6IHRydWUsIG1pbjogMiwgfSxcclxuICAgICAgICB0aGlzLnJvbGVGaWVsZCxcclxuICAgICAgXVxyXG4gICAgfSxcclxuICAgIG1vZGU6ICdjcmVhdGUnLFxyXG4gICAgYnV0dG9uczogW1xyXG4gICAgICB7IG5hbWU6ICdjcmVhdGUnLCBhY3Rpb246IHsgdXJsOiAnbWVtYmVycy9kdG8/YWN0aW9uPWludml0ZScsIG1ldGhvZDogJ3Bvc3QnLCBzdWNjZXNzTWVzc2FnZTogJ1VwZGF0ZWQgc3VjY2Vzc2Z1bGx5JyB9IH1cclxuICAgIF1cclxuICB9O1xyXG5cclxuICBtZW1iZXJzRm9ybUNvbmZpZzogRm9ybUNvbmZpZyA9IHtcclxuXHJcbiAgICB0aXRsZSA6ICdNZW1iZXIgQWNjZXNzJyxcclxuICAgIGFsZXJ0Q29uZmlnIDoge21lc3NhZ2VzIDpbIHt0eXBlIDogJ3dhcm4nLCBjb250ZW50IDogJ1lvdSBjYW4gYW1lbmQgdGhlIG1lbWJlclxcJ3Mgcm9sZSBoZXJlJ31dIH0sXHJcbiAgICBmaWVsZHM6IFtcclxuICAgICAgeyBuYW1lOiAnZW1haWwnLCB0eXBlOiAndGV4dCcscmVhZG9ubHk6IHRydWUsIHNwYW46IHRydWUgfSxcclxuICAgICAgeyBuYW1lOiAnZmlyc3ROYW1lJywgdHlwZTogJ3RleHQnLCByZWFkb25seTogdHJ1ZSB9LFxyXG4gICAgICB7IG5hbWU6ICdsYXN0TmFtZScsIHR5cGU6ICd0ZXh0JywgIHJlYWRvbmx5OiB0cnVlIH0sXHJcbiAgICAgIHRoaXMucm9sZUZpZWxkLFxyXG4gICAgXSxcclxuXHJcbiAgfVxyXG5cclxuICB0YWJsZVJlbG9hZDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgbWVtYmVyc1RhYmxlQ29uZmlnOiBUYWJsZUNvbmZpZyA9IHtcclxuXHJcbiAgICBncmV5T3V0IDogKHZhbHVlKSA9PiB2YWx1ZS5hY2NlcHRlZCA9PSBmYWxzZSxcclxuICAgIGVsZXZhdGlvbjogJ2xvdycsXHJcbiAgICBsb2dSZXNwb25zZSA6IHRydWUsXHJcbiAgICBtaW5Db2x1bW5zOiBbJ21lbWJlck5hbWUnXSxcclxuICAgIG1pbkJ1dHRvbnM6IFsnZWRpdCcsJ3JlbW92ZSddLFxyXG4gICAgZmxhdEJ1dHRvbnM6IHRydWUsXHJcblxyXG4gICAgY29sdW1uczogW1xyXG4gICAgICB7IG5hbWU6ICdtZW1iZXJOYW1lJywgdHlwZTogJ3RleHQnLCBpY29ucyA6IFtcclxuICAgICAgICB7IG5hbWU6ICdzY2hlZHVsZScsIHRpcCA6ICdXYWl0aW5nIGZvciB1c2VyIHRvIGFjY2VwdCBpbnZpdGF0aW9uJywgIGNvbmRpdGlvbjogeCA9PiAheC5hY2NlcHRlZCB9XHJcbiAgICAgIF0gfSxcclxuICAgICAgeyBuYW1lOiAnZW1haWwnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgeyBuYW1lOiAncm9sZU5hbWUnLCBhbGlhcyA6ICdSb2xlJywgdHlwZTogJ3RleHQnfSxcclxuICAgIF0sXHJcblxyXG4gICAgYnV0dG9uczogW1xyXG4gICAgICB7IG5hbWU6ICdjcmVhdGUnLCBkaXNwbGF5OiAnQWRkIE1lbWJlcicsIGRpYWxvZyA6IHRydWUsIGRldGFpbHNDb25maWc6IHRoaXMuaW52aXRlRGlhbG9nQ29uZmlnIH0sXHJcbiAgICAgIHsgbmFtZTogJ2VkaXQnLCBpY29uOiB7IG5hbWU6ICdzZWN1cml0eScgfSwgdGlwIDogJ0VkaXQgQWNjZXNzJywgZGlhbG9nOiB0cnVlLCBhY3Rpb246IHsgdXJsOiAnbWVtYmVycy9kdG8/YWN0aW9uPXJvbGUnLCBtZXRob2Q6ICdwb3N0JyB9LCB9LFxyXG4gICAgICB7IG5hbWU6ICdyZW1vdmUnLCBpY29uOiB7IG5hbWU6ICdjbG9zZScsIGNvbG9yIDogJ3JlZCcgfSwgdGlwIDogJ1JlbW92ZSBNZW1iZXInLCBjb25maXJtOiB7IG1lc3NhZ2U6ICdSZW1vdmUgTWVtYmVyIGZyb20gdGhpcyBPcmdhbmlzYXRpb24gPycgfSwgYWN0aW9uOiB7IHVybDogJ21lbWJlcnMvZHRvP2FjdGlvbj1yZW1vdmUnLCBtZXRob2Q6ICdwb3N0JyB9LCBkaXNhYmxlZCA6IHggPT4geC5vd24gfSxcclxuICAgIF0sXHJcblxyXG4gICAgbG9hZEFjdGlvbjogeyB1cmw6ICdtZW1iZXJzL2FsbC94JyB9LFxyXG5cclxuICAgIGZvcm1Db25maWc6IHRoaXMubWVtYmVyc0Zvcm1Db25maWcsXHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIC8vT3JnYW5zYXRpb25zXHJcblxyXG4gIG9yZ0Zvcm1Db25maWc6IEZvcm1Db25maWcgPSB7XHJcbiAgICBmaXhlZFRpdGxlOiB0cnVlLFxyXG4gICAgZmllbGRzOiBbXHJcbiAgICAgIHsgbmFtZTogJ25hbWUnLCB0eXBlOiAndGV4dCcsIHJlcXVpcmVkOiB0cnVlLCBtaW46IDIgfSxcclxuICAgIF1cclxuICB9XHJcbiAgY3JlYXRlT3JnRGlhbG9nQ29uZmlnOiBEZXRhaWxzRGlhbG9nQ29uZmlnID0ge1xyXG4gICAgZm9ybUNvbmZpZzogey4uLnRoaXMub3JnRm9ybUNvbmZpZywgdGl0bGU6ICdOZXcgT3JnYW5pc2F0aW9uJ30sXHJcbiAgICBtb2RlOiAnY3JlYXRlJyxcclxuICAgIGJ1dHRvbnM6IFtcclxuICAgICAgeyBuYW1lOiAnY3JlYXRlJywgYWN0aW9uOiB7IHVybDogJ3RlbmFudHMvZHRvP2FjdGlvbj1jcmVhdGUnLCBtZXRob2Q6ICdwb3N0Jywgc3VjY2Vzc01lc3NhZ2U6ICdDcmVhdGVkIHN1Y2Nlc3NmdWxseScgfSB9XHJcbiAgICBdXHJcbiAgfTtcclxuXHJcbiAgcmVuYW1lT3JnRGlhbG9nQ29uZmlnOiBEZXRhaWxzRGlhbG9nQ29uZmlnID0ge1xyXG4gICAgZm9ybUNvbmZpZzoge1xyXG4gICAgICAuLi50aGlzLm9yZ0Zvcm1Db25maWcsXHJcbiAgICAgIHRpdGxlOiAnT3JnYW5pc2F0aW9uIERldGFpbHMnLFxyXG4gICAgICBmaWVsZHM6IFtcclxuICAgICAgICAuLi50aGlzLm9yZ0Zvcm1Db25maWcuZmllbGRzLFxyXG4gICAgICAgIHsgbmFtZTogJ2NvbXBhbnlEZXRhaWxzJywgdHlwZTogJ3NlY3Rpb24nLCB9LFxyXG4gICAgICAgIHsgbmFtZTogJ2NvbXBhbnlOYW1lJywgdHlwZTogJ3RleHQnLCByZXF1aXJlZDogdHJ1ZSwgc3BhbjogdHJ1ZSwgYWxpYXM6ICdDb21wYW55IE5hbWUnIH0sXHJcbiAgICAgICAgeyBuYW1lOiAnYWRkcmVzcycsIHR5cGU6ICd0ZXh0JywgcmVxdWlyZWQ6IHRydWUsIHJvd3MgOiAzLCBzcGFuOiB0cnVlIH0sXHJcbiAgICAgICAgeyBuYW1lOiAncGhvbmUnLCB0eXBlOiAndGV4dCcsIHJlcXVpcmVkOiB0cnVlIH0sXHJcbiAgICAgICAgeyBuYW1lOiAnZW1haWwnLCB0eXBlOiAndGV4dCcsIHJlcXVpcmVkOiB0cnVlIH1cclxuICAgICAgXVxyXG5cclxuICAgIH0sXHJcbiAgICBtb2RlOiAnZWRpdCcsXHJcbiAgICBidXR0b25zOiBbXHJcbiAgICAgIHsgbmFtZTogJ2VkaXQnLCBhY3Rpb246IHsgdXJsOiAndGVuYW50cz9hY3Rpb249ZWRpdCcsIG1ldGhvZDogJ3Bvc3QnLCBzdWNjZXNzTWVzc2FnZTogJ1JlbmFtZWQgc3VjY2Vzc2Z1bGx5JyB9IH1cclxuICAgIF1cclxuICB9XHJcblxyXG4gIG9yZ3NSZWxvYWQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xyXG4gIG9yZ3NUYWJsZUNvbmZpZzogVGFibGVDb25maWcgPSB7XHJcblxyXG4gICAgZ3JleU91dDogKHZhbHVlKSA9PiB2YWx1ZS5hY2NlcHRlZCA9PSBmYWxzZSxcclxuICAgIGVsZXZhdGlvbjogJ2xvdycsXHJcbiAgICBtaW5Db2x1bW5zOiBbJ25hbWUnXSxcclxuICAgIG1pbkJ1dHRvbnM6IFsnbG9naW4nLCdlZGl0JywnbGVhdmUnXSxcclxuICAgIGZsYXRCdXR0b25zOiB0cnVlLFxyXG4gICAgY29sbGFwc2VCdXR0b25zIDogdHJ1ZSxcclxuXHJcbiAgICBjb2x1bW5zOiBbXHJcbiAgICAgIHsgbmFtZTogJ25hbWUnLCBhbGlhcyA6ICdPcmdhbmlzYXRpb24nLCB0eXBlOiAndGV4dCcsIGljb25zOiBbeyBuYW1lOiAncmFkaW9fYnV0dG9uX2NoZWNrZWQnLCB0aXAgOiAnQ3VycmVudCBPcmdhbmlzYXRpb24nLCBjb2xvcjogJ2dyZWVuJywgY29uZGl0aW9uOiB4ID0+IHgudGVuYW50SUQgPT0gdGhpcy5jdXJyZW50VGVuYW50SUQgfV0gfSxcclxuICAgICAgeyBuYW1lOiAnb3duZXJOYW1lJywgdHlwZTogJ3RleHQnLCBhbGlhczogJ093bmVyJyB9LFxyXG4gICAgXSxcclxuXHJcbiAgICBidXR0b25zOiBbXHJcbiAgICAgIHsgbmFtZTogJ2NyZWF0ZScsIGRpc3BsYXk6ICdOZXcgT3JnYW5pc2F0aW9uJywgZGlhbG9nOiB0cnVlLCBkZXRhaWxzQ29uZmlnOiB0aGlzLmNyZWF0ZU9yZ0RpYWxvZ0NvbmZpZyB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ2xvZ2luJywgZGlzcGxheTogJ1N3aXRjaCB0byB0aGlzIE9yZ2FuaXNhdGlvbicsIGNvbmZpcm06IHsgbWVzc2FnZTogJ1N3aXRjaCB0byB0aGlzIE9yZ2FuaXNhdGlvbiA/JyB9LCBhY3Rpb246IHsgdXJsOiAndGVuYW50cy9kdG8/YWN0aW9uPXN3aXRjaCcsIG1ldGhvZDogJ3Bvc3QnIH0sIGljb246IHsgbmFtZTogJ2xvZ2luJywgfSxcclxuICAgICAgICB2aXNpYmxlOiB4ID0+IHgudGVuYW50SUQgIT0gdGhpcy5jdXJyZW50VGVuYW50SURcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdlZGl0JywgZGlzcGxheTogJ1JlbmFtZSBPcmdhbmlzYXRpb24nLCBkaWFsb2c6IHRydWUsIGRldGFpbHNDb25maWc6IHRoaXMucmVuYW1lT3JnRGlhbG9nQ29uZmlnICxcclxuICAgICAgICB2aXNpYmxlOiB4ID0+IHgub3duXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnbGVhdmUnLCB0aXA6ICdMZWF2ZScsIGljb246IHsgbmFtZTogJ2RpcmVjdGlvbnNfcnVuJywgY29sb3IgOiAncmVkJ30sIGNvbmZpcm06IHsgbWVzc2FnZTogJ0xlYXZlIHRoaXMgT3JnYW5pc2F0aW9uID8nIH0sIGFjdGlvbjogeyB1cmw6ICdtZW1iZXJzL2R0bz9hY3Rpb249cmVtb3ZlJywgbWV0aG9kOiAncG9zdCcgfSAsXHJcbiAgICAgICAgZGlzYWJsZWQgOiB4ID0+IHgub3duXHJcbiAgICAgIH0sXHJcbiAgICBdLFxyXG5cclxuICAgIGxvYWRBY3Rpb246IHsgdXJsOiAndGVuYW50cy9teV90ZW5hbnRzL3gnIH0sXHJcblxyXG4gIH1cclxuXHJcblxyXG5cclxuICAvL0VtYWlsXHJcbiAgbWFpbGVyRm9ybUNvbmZpZzogRm9ybUNvbmZpZyA9IHtcclxuICAgIGZpZWxkczogW1xyXG4gICAgICB7IG5hbWU6ICdzbXRwJywgdHlwZTogJ3RleHQnLCByZXF1aXJlZDogdHJ1ZSwgYWxpYXM6ICdTTVRQIFNlcnZlcicgfSxcclxuICAgICAgeyBuYW1lOiAncG9ydCcsIHR5cGU6ICdudW1iZXInLCByZXF1aXJlZDogdHJ1ZSwgZGVmYXVsdFZhbHVlOiA1ODcgfSxcclxuICAgICAgeyBuYW1lOiAnYWRkcmVzcycsIHR5cGU6ICd0ZXh0JywgcmVxdWlyZWQ6IHRydWUsIGFsaWFzOiAnRW1haWwgQWRkcmVzcycgfSxcclxuICAgICAgeyBuYW1lOiAnZGlzcGxheScsIHR5cGU6ICd0ZXh0JywgcmVxdWlyZWQ6IHRydWUsIGFsaWFzOiAnRGlzcGxheSBOYW1lJyB9LFxyXG4gICAgICB7IG5hbWU6ICdwYXNzd29yZCcsIHR5cGU6ICdwYXNzd29yZCcsIHJlcXVpcmVkOiB0cnVlLCBzcGFuOiB0cnVlIH0sXHJcblxyXG4gICAgICB7IG5hbWU6ICdlbmFibGVTc2wnLCB0eXBlOiAnY2hlY2tib3gnLCBhbGlhczogJ0VuYWJsZSBTU0wnIH0sXHJcbiAgICAgIHsgbmFtZTogJ2lzQm9keUh0bWwnLCB0eXBlOiAnY2hlY2tib3gnLCBhbGlhczogJ0hUTUwgQm9keScgfSxcclxuXHJcblxyXG4gICAgXVxyXG4gIH1cclxuXHJcbiAgbWFpbGVyVGFibGVDb25maWc6IFRhYmxlQ29uZmlnID0ge1xyXG4gICAgc2hvd0ZpbHRlcjogdHJ1ZSxcclxuICAgIGVsZXZhdGlvbjogJ2xvdycsXHJcbiAgICBtaW5Db2x1bW5zOiBbJ3NtdHAnLCAnYWRkcmVzcyddLFxyXG4gICAgZmxhdEJ1dHRvbnM6IHRydWUsXHJcblxyXG4gICAgY29sdW1uczogW1xyXG4gICAgICB7IG5hbWU6ICdzbXRwJywgdHlwZTogJ3RleHQnLCBhbGlhczogJ1NNVFAgU2VydmVyJyB9LFxyXG4gICAgICB7IG5hbWU6ICdwb3J0JywgdHlwZTogJ251bWJlcicgfSxcclxuICAgICAgeyBuYW1lOiAnYWRkcmVzcycsIHR5cGU6ICd0ZXh0JywgYWxpYXM6ICdFbWFpbCBBZGRyZXNzJyB9LFxyXG4gICAgICB7IG5hbWU6ICdkaXNwbGF5JywgdHlwZTogJ3RleHQnLCBhbGlhczogJ0Rpc3BsYXkgTmFtZScgfSxcclxuICAgICAgeyBuYW1lOiAnZW5hYmxlU3NsJywgdHlwZTogJ2NoZWNrYm94JywgYWxpYXM6ICdTU0wgRW5hYmxlZCcgfSxcclxuICAgICAgeyBuYW1lOiAnaXNCb2R5SHRtbCcsIHR5cGU6ICdjaGVja2JveCcsIGFsaWFzOiAnSFRNTCBCb2R5JyB9LFxyXG4gICAgXSxcclxuXHJcbiAgICBidXR0b25zOiBbXHJcbiAgICAgIHsgbmFtZTogJ2NyZWF0ZScsIGRpc3BsYXk6ICdDb25maWd1cmUgRW1haWwnLCBkaWFsb2c6IHRydWUsIGFjdGlvbjogeyB1cmw6ICdtYWlsZXJjb25maWdzP2FjdGlvbj1jcmVhdGUnLCBtZXRob2Q6ICdwb3N0JyB9IH0sXHJcbiAgICAgIHsgbmFtZTogJ2VkaXQnLCBkaWFsb2c6IHRydWUsIGFjdGlvbjogeyB1cmw6ICdtYWlsZXJjb25maWdzP2FjdGlvbj1lZGl0JywgbWV0aG9kOiAncG9zdCcgfSB9LFxyXG4gICAgICB7IG5hbWU6ICdkZWxldGUnLCBkaWFsb2c6IHRydWUsIGFjdGlvbjogeyB1cmw6ICdtYWlsZXJjb25maWdzP2FjdGlvbj1kZWxldGUnLCBtZXRob2Q6ICdwb3N0JyB9IH0sXHJcbiAgICBdLFxyXG5cclxuICAgIGxvYWRBY3Rpb246IHsgdXJsOiAnbWFpbGVyY29uZmlncy9hbGwveCcgfSxcclxuICAgIGZvcm1Db25maWc6IHRoaXMubWFpbGVyRm9ybUNvbmZpZ1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcblxyXG4gIDxkaXY+XHJcblxyXG4gICAgPGxhYmVsIGNsYXNzPVwidGl0bGVcIiA+T3JnYW5pc2F0aW9uIERldGFpbHM8L2xhYmVsPlxyXG4gICAgPGhyIHN0eWxlPVwibWFyZ2luLXRvcDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7XCI+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cImN1cnJUZW5hbnQgJiYgcGxhblwiIGNsYXNzPVwibWItMiBtdC0zIHRpbi1ncmlkXCIgc3R5bGU9XCIgZm9udC1zaXplOiAxNHB4O1wiPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInRpbi1jb2wgbWItM1wiIHN0eWxlPVwibWF4LXdpZHRoOiA1MDBweDtcIj5cclxuICAgICAgICA8c3BhLXNlbGVjdCBkaXNwbGF5PVwiQ3VycmVudCBPcmdhbmlzYXRpb25cIiBbb3B0aW9uc109XCJ0ZW5hbnRzXCIgb3B0aW9uRGlzcGxheT1cIm5hbWVcIiBvcHRpb25WYWx1ZT1cInRlbmFudElEXCIgWyh2YWx1ZSldPVwiY3VycmVudFRlbmFudElEXCJcclxuICAgICAgICAgIGhpbnQ9XCJZb3UgYXJlIHJlcXVpcmVkIHRvIGxvZ2luIGFnYWluIGFmdGVyIHN3aXRjaGluZyBvcmdhbmlzYXRpb25zLlwiIHN0eWxlPVwibWluLXdpZHRoOiAzMDBweDttYXJnaW4tYm90dG9tOiAxMHB4O1wiPjwvc3BhLXNlbGVjdD5cclxuICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiY3VycmVudFRlbmFudElEID09IGN1cnJUZW5hbnQudGVuYW50SURcIiAoY2xpY2spPVwic3dpdGNoVGVuYW50KClcIj5Td2l0Y2g8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm93blRlbmFudFwiID5cclxuIDwhLS0gTWVtYmVycyAtLT5cclxuICA8ZGl2IGNsYXNzPVwibXQtM1wiID5cclxuXHJcbiAgICA8bGFiZWwgY2xhc3M9XCJ0aXRsZVwiID5NZW1iZXJzPC9sYWJlbD5cclxuICAgIDxociBzdHlsZT1cIm1hcmdpbi10b3A6IDBweDsgbWFyZ2luLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwic3VidGl0bGUgdGV4dC1tdXRlZFwiPkludml0ZSBvdGhlciB1c2VycyB0byBqb2luIHlvdXIgb3JnYW5pc2F0aW9uIGFzIHBhcnRuZXJzIG9yIGVtcGxveWVlcyB0byBmb3JtIGEgcGFydG5lcnNoaXAgb3IgY29tcGFueS48L2xhYmVsPlxyXG5cclxuICAgIDxzcGEtdGFibGUgW2NvbmZpZ109XCJtZW1iZXJzVGFibGVDb25maWdcIiBbcmVsb2FkXT1cInRhYmxlUmVsb2FkXCIgPjwvc3BhLXRhYmxlPlxyXG5cclxuICA8L2Rpdj5cclxuXHJcblxyXG48IS0tIE15IE9yZ2FuaXNhdGlvbnMgLS0+XHJcbiAgPGRpdiBjbGFzcz1cIm10LTNcIiAqbmdJZj1cIm93blRlbmFudFwiPlxyXG5cclxuICAgIDxsYWJlbCBjbGFzcz1cInRpdGxlXCIgPk15IE9yZ2FuaXNhdGlvbnM8L2xhYmVsPlxyXG4gICAgPGhyIHN0eWxlPVwibWFyZ2luLXRvcDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7XCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJzdWJ0aXRsZSB0ZXh0LW11dGVkXCI+T3JnYW5pc2F0aW9ucyB0aGF0IHlvdSBhcmUgYSBtZW1iZXIgb2YuPC9sYWJlbD5cclxuXHJcbiAgICA8c3BhLXRhYmxlIFtjb25maWddPVwib3Jnc1RhYmxlQ29uZmlnXCIgW3JlbG9hZF09XCJvcmdzUmVsb2FkXCIgKGFjdGlvblJlc3BvbnNlKT1cInVwZGF0ZVRlbmFudCgkZXZlbnQpXCI+PC9zcGEtdGFibGU+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuXHJcbiAgPCEtLSBNeSBJbnZpdGF0aW9ucyAtLT5cclxuICA8ZGl2IGNsYXNzPVwibXQtM1wiICpuZ0lmPVwib3duVGVuYW50XCI+XHJcblxyXG4gICAgPGxhYmVsIGNsYXNzPVwidGl0bGVcIj5NeSBJbnZpdGF0aW9uczwvbGFiZWw+XHJcbiAgICA8aHIgc3R5bGU9XCJtYXJnaW4tdG9wOiAwcHg7IG1hcmdpbi1ib3R0b206IDBweDtcIj5cclxuICAgIDxsYWJlbCBjbGFzcz1cInN1YnRpdGxlIHRleHQtbXV0ZWRcIj5SZXF1ZXN0cyBmb3IgeW91IHRvIGpvaW4gb3RoZXIgb3JnYW5pc2F0aW9ucy48L2xhYmVsPlxyXG5cclxuXHJcbiAgICA8c3BhLWludml0YXRpb25zLXRhYmxlPjwvc3BhLWludml0YXRpb25zLXRhYmxlPlxyXG5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBCaWxsaW5nIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJtdC0zXCIgKm5nSWY9XCJvd25UZW5hbnRcIj5cclxuXHJcbiAgICA8bGFiZWwgY2xhc3M9XCJ0aXRsZVwiID5CaWxsaW5nIGFuZCBTdWJzY3JpcHRpb248L2xhYmVsPlxyXG4gICAgPGhyIHN0eWxlPVwibWFyZ2luLXRvcDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7XCI+XHJcblxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiY3VyclRlbmFudCAmJiBwbGFuXCIgY2xhc3M9XCJtYi0xIG10LTNcIiBzdHlsZT1cIm1heC13aWR0aDogMzAwcHg7IGZvbnQtc2l6ZTogMTRweDtcIj5cclxuICAgICAgICA8c3BhLWxhYmVsIGRpc3BsYXk9XCJQbGFuXCIgW3ZhbHVlXT1cInBsYW4ubmFtZVwiPjwvc3BhLWxhYmVsPlxyXG4gICAgICAgIDxzcGEtbGFiZWwgZGlzcGxheT1cIk5leHQgUGF5bWVudFwiIGZvcm1hdD1cIm1vbmV5XCIgW3ZhbHVlXT1cInBsYW4ucHJpY2VcIj48L3NwYS1sYWJlbD5cclxuICAgICAgICA8c3BhLWxhYmVsIGRpc3BsYXk9XCJEdWUgRGF0ZVwiIGZvcm1hdD1cImRhdGVcIiB2YWx1ZT1cIjIwMjQtMDEtMDFcIj48L3NwYS1sYWJlbD5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gRW1haWwgLS0+XHJcbiAgPGRpdiBjbGFzcz1cIm10LTMgbWItNVwiICpuZ0lmPVwib3duVGVuYW50XCI+XHJcblxyXG4gIDxsYWJlbCBjbGFzcz1cInRpdGxlXCI+RW1haWwgQ29uZmlndXJhdGlvbjwvbGFiZWw+XHJcbiAgPGhyIHN0eWxlPVwibWFyZ2luLXRvcDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7XCI+XHJcbiAgPGxhYmVsIGNsYXNzPVwic3VidGl0bGUgdGV4dC1tdXRlZFwiPkNvbmZpZ3VyZSBlbWFpbCBzZXR0aW5ncyBmb3Igc2VuZGluZyBub3RpZmljYXRpb25zLjwvbGFiZWw+XHJcblxyXG4gIDxzcGEtdGFibGUgW2NvbmZpZ109XCJtYWlsZXJUYWJsZUNvbmZpZ1wiPjwvc3BhLXRhYmxlPlxyXG5cclxuICA8L2Rpdj5cclxuXHJcblxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcblxyXG48L2Rpdj5cclxuXHJcblxyXG4iXX0=
@@ -1,47 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "../../services/datalib.service";
4
- import * as i2 from "../../services/message.service";
5
- import * as i3 from "../../services/auth.service";
6
- import * as i4 from "../../components/table/table.component";
7
- export class TenantsComponent {
8
- constructor(dataService, messageService, authService) {
9
- this.dataService = dataService;
10
- this.messageService = messageService;
11
- this.authService = authService;
12
- this.tenantFormConfig = {
13
- fields: [
14
- { name: 'name', type: 'text', required: true, min: 2 },
15
- { name: 'planID', alias: 'Plan', type: 'number', required: true },
16
- ],
17
- reset: true,
18
- };
19
- this.tenantsTableConfig = {
20
- showFilter: true,
21
- minColumns: ['name'],
22
- flatButtons: true,
23
- columns: [
24
- { name: 'tenantID', type: 'number', alias: 'ID' },
25
- { name: 'name', type: 'text' },
26
- { name: 'planName', alias: 'Plan', type: 'text' },
27
- ],
28
- buttons: [
29
- { name: 'create', display: 'Create', dialog: true, action: { url: 'tenants?action=create', method: 'post' } },
30
- { name: 'view', dialog: true },
31
- { name: 'edit', dialog: true, action: { url: 'tenants?action=edit', method: 'post' } },
32
- { name: 'delete', dialog: true, action: { url: 'tenants?action=delete', method: 'post' } },
33
- ],
34
- loadAction: { url: 'tenants/all_tenants/x' },
35
- formConfig: this.tenantFormConfig
36
- };
37
- }
38
- ngOnInit() {
39
- }
40
- }
41
- TenantsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TenantsComponent, deps: [{ token: i1.DataServiceLib }, { token: i2.MessageService }, { token: i3.AuthService }], target: i0.ɵɵFactoryTarget.Component });
42
- TenantsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TenantsComponent, selector: "spa-tenants", ngImport: i0, template: "<h4>Tenants</h4>\r\n<hr>\r\n\r\n\r\n<div class=\" mt-3\" style=\" font-size: 14px;\">\r\n <spa-table [config]=\"tenantsTableConfig\" ></spa-table>\r\n</div>\r\n", styles: [".title{margin-top:1em;font-size:larger;font-weight:300}\n"], dependencies: [{ kind: "component", type: i4.TableComponent, selector: "spa-table", inputs: ["data", "tileData", "config", "reload", "activeTab", "inTab"], outputs: ["dataLoad", "actionSuccess", "refreshClick", "searchClick", "createClick", "actionClick", "inputChange", "actionResponse"] }] });
43
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TenantsComponent, decorators: [{
44
- type: Component,
45
- args: [{ selector: 'spa-tenants', template: "<h4>Tenants</h4>\r\n<hr>\r\n\r\n\r\n<div class=\" mt-3\" style=\" font-size: 14px;\">\r\n <spa-table [config]=\"tenantsTableConfig\" ></spa-table>\r\n</div>\r\n", styles: [".title{margin-top:1em;font-size:larger;font-weight:300}\n"] }]
46
- }], ctorParameters: function () { return [{ type: i1.DataServiceLib }, { type: i2.MessageService }, { type: i3.AuthService }]; } });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90aW4tc3BhL3NyYy9saWIvcGFnZXMvdGVuYW50cy90ZW5hbnRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9wYWdlcy90ZW5hbnRzL3RlbmFudHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBV2xELE1BQU0sT0FBTyxnQkFBZ0I7SUFFM0IsWUFBb0IsV0FBMkIsRUFBVSxjQUE4QixFQUFTLFdBQXdCO1FBQXBHLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFTLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBT3hILHFCQUFnQixHQUFlO1lBRTdCLE1BQU0sRUFBRTtnQkFDTixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RELEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTthQUNsRTtZQUVELEtBQUssRUFBRSxJQUFJO1NBRVosQ0FBQTtRQUVELHVCQUFrQixHQUFnQjtZQUNoQyxVQUFVLEVBQUUsSUFBSTtZQUNoQixVQUFVLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDcEIsV0FBVyxFQUFFLElBQUk7WUFFakIsT0FBTyxFQUFFO2dCQUNQLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7Z0JBQ2pELEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUM5QixFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2FBRW5EO1lBRUQsT0FBTyxFQUFFO2dCQUNQLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBQztnQkFDNUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQzlCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQ3RGLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUU7YUFDM0Y7WUFFRCxVQUFVLEVBQUUsRUFBRSxHQUFHLEVBQUUsdUJBQXVCLEVBQUU7WUFFNUMsVUFBVSxFQUFFLElBQUksQ0FBQyxnQkFBZ0I7U0FFbEMsQ0FBQTtJQXpDMkgsQ0FBQztJQUU3SCxRQUFRO0lBQ1IsQ0FBQzs7NkdBTFUsZ0JBQWdCO2lHQUFoQixnQkFBZ0IsbURDWDdCLG1LQU9BOzJGRElhLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGF0YVNlcnZpY2VMaWIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhbGliLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb3JtQ29uZmlnLCBUYWJsZUNvbmZpZywgQXBpUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL0NsYXNzZXMnO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21lc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc3BhLXRlbmFudHMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90ZW5hbnRzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90ZW5hbnRzLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGVuYW50c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlTGliLCBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSwgcHVibGljIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcblxyXG5cclxuICB0ZW5hbnRGb3JtQ29uZmlnOiBGb3JtQ29uZmlnID0ge1xyXG5cclxuICAgIGZpZWxkczogW1xyXG4gICAgICB7IG5hbWU6ICduYW1lJywgdHlwZTogJ3RleHQnLCByZXF1aXJlZDogdHJ1ZSwgbWluOiAyIH0sXHJcbiAgICAgIHsgbmFtZTogJ3BsYW5JRCcsIGFsaWFzIDonUGxhbicsIHR5cGU6ICdudW1iZXInLCByZXF1aXJlZDogdHJ1ZSB9LFxyXG4gICAgXSxcclxuXHJcbiAgICByZXNldDogdHJ1ZSxcclxuXHJcbiAgfVxyXG5cclxuICB0ZW5hbnRzVGFibGVDb25maWc6IFRhYmxlQ29uZmlnID0ge1xyXG4gICAgc2hvd0ZpbHRlcjogdHJ1ZSxcclxuICAgIG1pbkNvbHVtbnM6IFsnbmFtZSddLFxyXG4gICAgZmxhdEJ1dHRvbnM6IHRydWUsXHJcblxyXG4gICAgY29sdW1uczogW1xyXG4gICAgICB7IG5hbWU6ICd0ZW5hbnRJRCcsIHR5cGU6ICdudW1iZXInLCBhbGlhczogJ0lEJyB9LFxyXG4gICAgICB7IG5hbWU6ICduYW1lJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgIHsgbmFtZTogJ3BsYW5OYW1lJywgYWxpYXMgOiAnUGxhbicsIHR5cGU6ICd0ZXh0JyB9LFxyXG5cclxuICAgIF0sXHJcblxyXG4gICAgYnV0dG9uczogW1xyXG4gICAgICB7IG5hbWU6ICdjcmVhdGUnLCBkaXNwbGF5OiAnQ3JlYXRlJywgZGlhbG9nOiB0cnVlLCBhY3Rpb246IHsgdXJsOiAndGVuYW50cz9hY3Rpb249Y3JlYXRlJywgbWV0aG9kOiAncG9zdCcgfX0sXHJcbiAgICAgIHsgbmFtZTogJ3ZpZXcnLCBkaWFsb2c6IHRydWUgfSxcclxuICAgICAgeyBuYW1lOiAnZWRpdCcsIGRpYWxvZzogdHJ1ZSwgYWN0aW9uOiB7IHVybDogJ3RlbmFudHM/YWN0aW9uPWVkaXQnLCBtZXRob2Q6ICdwb3N0JyB9IH0sXHJcbiAgICAgIHsgbmFtZTogJ2RlbGV0ZScsIGRpYWxvZzogdHJ1ZSwgYWN0aW9uOiB7IHVybDogJ3RlbmFudHM/YWN0aW9uPWRlbGV0ZScsIG1ldGhvZDogJ3Bvc3QnIH0gfSxcclxuICAgIF0sXHJcblxyXG4gICAgbG9hZEFjdGlvbjogeyB1cmw6ICd0ZW5hbnRzL2FsbF90ZW5hbnRzL3gnIH0sXHJcblxyXG4gICAgZm9ybUNvbmZpZzogdGhpcy50ZW5hbnRGb3JtQ29uZmlnXHJcblxyXG4gIH1cclxufVxyXG4iLCI8aDQ+VGVuYW50czwvaDQ+XHJcbjxocj5cclxuXHJcblxyXG48ZGl2IGNsYXNzPVwiIG10LTNcIiBzdHlsZT1cIiBmb250LXNpemU6IDE0cHg7XCI+XHJcbiAgPHNwYS10YWJsZSBbY29uZmlnXT1cInRlbmFudHNUYWJsZUNvbmZpZ1wiID48L3NwYS10YWJsZT5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -1,80 +0,0 @@
1
- //-------------------------------------------VIEW
2
- import { Component, Inject } from '@angular/core';
3
- import { MAT_DIALOG_DATA } from '@angular/material/dialog';
4
- import { Transaction } from '../../classes/Classes';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "../../services/loader.service";
7
- import * as i2 from "../../services/message.service";
8
- import * as i3 from "../../services/datalib.service";
9
- import * as i4 from "@angular/material/dialog";
10
- import * as i5 from "@angular/common";
11
- import * as i6 from "@angular/material/button";
12
- import * as i7 from "../../components/text/text.component";
13
- import * as i8 from "../../components/date/date.component";
14
- import * as i9 from "../../components/select/select.component";
15
- import * as i10 from "../../components/money/money.component";
16
- export class transactDialog {
17
- constructor(loaderService, messageService, dataService, dialogRef, data) {
18
- this.loaderService = loaderService;
19
- this.messageService = messageService;
20
- this.dataService = dataService;
21
- this.dialogRef = dialogRef;
22
- this.data = data;
23
- this.txn = new Transaction;
24
- this.isLoadComplete = false;
25
- this.isProcessing = false;
26
- }
27
- ngOnInit() {
28
- this.action = this.data.action;
29
- this.account = this.data.account;
30
- this.accounts = this.data.accounts;
31
- this.categories = this.data.categories;
32
- this.isLoadComplete = true;
33
- if (this.action == "edit") {
34
- this.txn = this.data.data;
35
- }
36
- this.loaderService.isLoading.subscribe(x => this.isProcessing = x);
37
- }
38
- submit() {
39
- if (parseFloat(this.txn.amount) == 0) {
40
- this.messageService.toast("Enter Amount");
41
- return;
42
- }
43
- if (this.action == "income") {
44
- this.txn.type = 1;
45
- }
46
- else {
47
- this.txn.type = 0;
48
- }
49
- this.txn.accountID = this.account.accountID;
50
- let act;
51
- if (this.action == "edit") {
52
- act = 'edit';
53
- }
54
- else if (this.action == "transfer") {
55
- act = 'transfer';
56
- }
57
- else {
58
- act = 'create';
59
- }
60
- this.dataService.CallApi({ url: `general/transactions?action=${act}`, method: 'post' }, this.txn).subscribe((x) => {
61
- if (x.success) {
62
- this.dialogRef.close('success');
63
- }
64
- else {
65
- this.messageService.toast(x.message);
66
- }
67
- });
68
- }
69
- }
70
- transactDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: transactDialog, deps: [{ token: i1.LoaderService }, { token: i2.MessageService }, { token: i3.DataServiceLib }, { token: i4.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
71
- transactDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: transactDialog, selector: "app-quanityDiag", ngImport: i0, template: "\r\n<h2 mat-dialog-title>{{action | titlecase}}</h2>\r\n\r\n\r\n<mat-dialog-content class=\"mat-typography\">\r\n\r\n <div class=\"tin-input\" style=\"font-size:14px\">\r\n\r\n <spa-select *ngIf=\"action == 'transfer'\" [(value)]=\"txn.destinationID\" display=\"Transfer to\" [options]=\"accounts\" optionDisplay=\"name\" optionValue=\"accountID\"></spa-select>\r\n\r\n <spa-date display=\"Date\" [(value)]=\"txn.date\"></spa-date>\r\n <spa-money display=\"Amount\" [(value)]=\"txn.amount\"></spa-money>\r\n <spa-text display=\"Narration\" [(value)]=\"txn.narration\"></spa-text>\r\n <spa-select display=\"Category\" [(value)]=\"txn.categoryID\" [options]=\"categories\" optionDisplay=\"name\" optionValue=\"listItemID\" [defaultFirstValue]=\"true\"></spa-select>\r\n\r\n\r\n\r\n </div>\r\n\r\n</mat-dialog-content>\r\n\r\n\r\n<mat-dialog-actions>\r\n<button mat-button [disabled]=\"isProcessing\" (click)=\"submit()\" cdkFocusInitial>Submit</button>\r\n<button mat-button [disabled]=\"isProcessing\" cdkFocusInitial mat-dialog-close>Cancel</button>\r\n</mat-dialog-actions>\r\n\r\n\r\n\r\n", styles: [".info{color:#4682b4;margin-top:5px;margin-right:5px;font-size:18px}.sign{margin-top:5px;font-size:18px}.actionbuttons{gap:1px}button{padding-left:7px}.mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.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: i7.TextComponent, selector: "spa-text", inputs: ["appearance", "readonly", "hint", "display", "placeholder", "value", "format", "type", "rows", "width", "copyContent", "clearContent", "options", "optionDisplay", "optionValue", "loadAction", "required", "min", "max", "regex", "suffix", "infoMessage"], outputs: ["valueChange", "leave", "enterPress"] }, { kind: "component", type: i8.DateComponent, selector: "spa-date", inputs: ["required", "min", "max", "readonly", "hint", "value", "display", "placeholder", "width", "infoMessage"], outputs: ["valueChange", "infoClick"] }, { kind: "component", type: i9.SelectComponent, selector: "spa-select", inputs: ["detailsConfig"] }, { kind: "component", type: i10.MoneyComponent, selector: "spa-money", inputs: ["readonly", "hint", "display", "placeholder", "value", "width", "currency", "required", "min", "max", "infoMessage", "copyContent", "clearContent", "suffix"], outputs: ["valueChange", "leave", "enterPress", "infoClick"] }, { kind: "pipe", type: i5.TitleCasePipe, name: "titlecase" }] });
72
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: transactDialog, decorators: [{
73
- type: Component,
74
- args: [{ selector: 'app-quanityDiag', template: "\r\n<h2 mat-dialog-title>{{action | titlecase}}</h2>\r\n\r\n\r\n<mat-dialog-content class=\"mat-typography\">\r\n\r\n <div class=\"tin-input\" style=\"font-size:14px\">\r\n\r\n <spa-select *ngIf=\"action == 'transfer'\" [(value)]=\"txn.destinationID\" display=\"Transfer to\" [options]=\"accounts\" optionDisplay=\"name\" optionValue=\"accountID\"></spa-select>\r\n\r\n <spa-date display=\"Date\" [(value)]=\"txn.date\"></spa-date>\r\n <spa-money display=\"Amount\" [(value)]=\"txn.amount\"></spa-money>\r\n <spa-text display=\"Narration\" [(value)]=\"txn.narration\"></spa-text>\r\n <spa-select display=\"Category\" [(value)]=\"txn.categoryID\" [options]=\"categories\" optionDisplay=\"name\" optionValue=\"listItemID\" [defaultFirstValue]=\"true\"></spa-select>\r\n\r\n\r\n\r\n </div>\r\n\r\n</mat-dialog-content>\r\n\r\n\r\n<mat-dialog-actions>\r\n<button mat-button [disabled]=\"isProcessing\" (click)=\"submit()\" cdkFocusInitial>Submit</button>\r\n<button mat-button [disabled]=\"isProcessing\" cdkFocusInitial mat-dialog-close>Cancel</button>\r\n</mat-dialog-actions>\r\n\r\n\r\n\r\n", styles: [".info{color:#4682b4;margin-top:5px;margin-right:5px;font-size:18px}.sign{margin-top:5px;font-size:18px}.actionbuttons{gap:1px}button{padding-left:7px}.mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}\n"] }]
75
- }], ctorParameters: function () { return [{ type: i1.LoaderService }, { type: i2.MessageService }, { type: i3.DataServiceLib }, { type: i4.MatDialogRef }, { type: undefined, decorators: [{
76
- type: Inject,
77
- args: [MAT_DIALOG_DATA]
78
- }] }]; } });
79
- ;
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3REaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL3BhZ2VzL3RyYW5zYWN0aW9ucy90cmFuc2FjdERpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90aW4tc3BhL3NyYy9saWIvcGFnZXMvdHJhbnNhY3Rpb25zL3RyYW5zYWN0RGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlEQUFpRDtBQUVqRCxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBR3pFLE9BQU8sRUFBYyxXQUFXLEVBQWUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBUzdFLE1BQU0sT0FBTyxjQUFjO0lBRXpCLFlBQW9CLGFBQTRCLEVBQVMsY0FBOEIsRUFBVSxXQUEyQixFQUFVLFNBQXVDLEVBQWtDLElBQUk7UUFBL0wsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFBUyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUE4QjtRQUFrQyxTQUFJLEdBQUosSUFBSSxDQUFBO1FBbUJuTixRQUFHLEdBQUcsSUFBSyxXQUFXLENBQUM7UUFNdkIsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFDaEMsaUJBQVksR0FBWSxLQUFLLENBQUM7SUExQnlMLENBQUM7SUFFeE4sUUFBUTtRQUVOLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDdkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFFM0IsSUFBRyxJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sRUFBQztZQUN2QixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFBO1NBQzFCO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztJQUVyRSxDQUFDO0lBYUQsTUFBTTtRQUVKLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFDO1lBQ25DLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFBO1lBQ3pDLE9BQU07U0FDUDtRQUVELElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxRQUFRLEVBQUM7WUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFBO1NBQ2xCO2FBQUk7WUFDSCxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUE7U0FDbEI7UUFHRCxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQTtRQUUzQyxJQUFJLEdBQUcsQ0FBQztRQUNSLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxNQUFNLEVBQUM7WUFDeEIsR0FBRyxHQUFHLE1BQU0sQ0FBQTtTQUNiO2FBQ0ksSUFBRyxJQUFJLENBQUMsTUFBTSxJQUFJLFVBQVUsRUFBRTtZQUNqQyxHQUFHLEdBQUcsVUFBVSxDQUFBO1NBQ2pCO2FBQ0c7WUFDRixHQUFHLEdBQUcsUUFBUSxDQUFBO1NBQ2Y7UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSwrQkFBK0IsR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFlLEVBQUUsRUFBRTtZQUM5SCxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUM7Z0JBQ1osSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDakM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBO2FBQ3JDO1FBRUgsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDOzsyR0FsRVUsY0FBYyx1SUFFOEosZUFBZTsrRkFGM0wsY0FBYyx1RENmM0IscWxDQTZCQTsyRkRkYSxjQUFjO2tCQUwxQixTQUFTOytCQUNFLGlCQUFpQjs7MEJBTXFKLE1BQU07MkJBQUMsZUFBZTs7QUFpRXZNLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1WSUVXXHJcblxyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgRGF0YVNlcnZpY2VMaWIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhbGliLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21lc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEZvcm1Db25maWcsIFRyYW5zYWN0aW9uLCBBcGlSZXNwb25zZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvQ2xhc3Nlcyc7XHJcbmltcG9ydCB7IExvYWRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2FkZXIuc2VydmljZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtcXVhbml0eURpYWcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cmFuc2FjdERpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHJhbnNhY3Rpb25zLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgdHJhbnNhY3REaWFsb2cgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxvYWRlclNlcnZpY2U6IExvYWRlclNlcnZpY2UscHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlTGliLCBwcml2YXRlIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPHRyYW5zYWN0RGlhbG9nPiwgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcblxyXG4gICAgdGhpcy5hY3Rpb24gPSB0aGlzLmRhdGEuYWN0aW9uO1xyXG4gICAgdGhpcy5hY2NvdW50ID0gdGhpcy5kYXRhLmFjY291bnQ7XHJcbiAgICB0aGlzLmFjY291bnRzID0gdGhpcy5kYXRhLmFjY291bnRzO1xyXG4gICAgdGhpcy5jYXRlZ29yaWVzID0gdGhpcy5kYXRhLmNhdGVnb3JpZXM7XHJcbiAgICB0aGlzLmlzTG9hZENvbXBsZXRlID0gdHJ1ZTtcclxuXHJcbiAgICBpZih0aGlzLmFjdGlvbiA9PSBcImVkaXRcIil7XHJcbiAgICAgIHRoaXMudHhuID0gdGhpcy5kYXRhLmRhdGFcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxvYWRlclNlcnZpY2UuaXNMb2FkaW5nLnN1YnNjcmliZSh4ID0+IHRoaXMuaXNQcm9jZXNzaW5nID0geCk7XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIHR4biA9IG5ldyAgVHJhbnNhY3Rpb247XHJcbiAgYWN0aW9uXHJcbiAgYWNjb3VudFxyXG4gIGFjY291bnRzXHJcbiAgY2F0ZWdvcmllc1xyXG5cclxuICBpc0xvYWRDb21wbGV0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzUHJvY2Vzc2luZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHJcbiAgc3VibWl0KCkge1xyXG5cclxuICAgIGlmIChwYXJzZUZsb2F0KHRoaXMudHhuLmFtb3VudCkgPT0gMCl7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoXCJFbnRlciBBbW91bnRcIilcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuYWN0aW9uID09IFwiaW5jb21lXCIpe1xyXG4gICAgICB0aGlzLnR4bi50eXBlID0gMVxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMudHhuLnR5cGUgPSAwXHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRoaXMudHhuLmFjY291bnRJRCA9IHRoaXMuYWNjb3VudC5hY2NvdW50SURcclxuXHJcbiAgICBsZXQgYWN0O1xyXG4gICAgaWYgKHRoaXMuYWN0aW9uID09IFwiZWRpdFwiKXtcclxuICAgICAgYWN0ID0gJ2VkaXQnXHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKHRoaXMuYWN0aW9uID09IFwidHJhbnNmZXJcIikge1xyXG4gICAgICBhY3QgPSAndHJhbnNmZXInXHJcbiAgICB9XHJcbiAgICBlbHNle1xyXG4gICAgICBhY3QgPSAnY3JlYXRlJ1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGF0YVNlcnZpY2UuQ2FsbEFwaSh7IHVybDogYGdlbmVyYWwvdHJhbnNhY3Rpb25zP2FjdGlvbj0ke2FjdH1gLCBtZXRob2Q6ICdwb3N0JyB9LCB0aGlzLnR4bikuc3Vic2NyaWJlKCh4IDogQXBpUmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKHguc3VjY2Vzcyl7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoJ3N1Y2Nlc3MnKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KHgubWVzc2FnZSlcclxuICAgICAgfVxyXG5cclxuICAgIH0pXHJcbiAgfVxyXG59O1xyXG5cclxuXHJcblxyXG4iLCJcclxuPGgyIG1hdC1kaWFsb2ctdGl0bGU+e3thY3Rpb24gfCB0aXRsZWNhc2V9fTwvaDI+XHJcblxyXG5cclxuPG1hdC1kaWFsb2ctY29udGVudCBjbGFzcz1cIm1hdC10eXBvZ3JhcGh5XCI+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJ0aW4taW5wdXRcIiBzdHlsZT1cImZvbnQtc2l6ZToxNHB4XCI+XHJcblxyXG4gICAgPHNwYS1zZWxlY3QgKm5nSWY9XCJhY3Rpb24gPT0gJ3RyYW5zZmVyJ1wiIFsodmFsdWUpXT1cInR4bi5kZXN0aW5hdGlvbklEXCIgZGlzcGxheT1cIlRyYW5zZmVyIHRvXCIgW29wdGlvbnNdPVwiYWNjb3VudHNcIiBvcHRpb25EaXNwbGF5PVwibmFtZVwiIG9wdGlvblZhbHVlPVwiYWNjb3VudElEXCI+PC9zcGEtc2VsZWN0PlxyXG5cclxuICAgIDxzcGEtZGF0ZSBkaXNwbGF5PVwiRGF0ZVwiIFsodmFsdWUpXT1cInR4bi5kYXRlXCI+PC9zcGEtZGF0ZT5cclxuICAgIDxzcGEtbW9uZXkgZGlzcGxheT1cIkFtb3VudFwiIFsodmFsdWUpXT1cInR4bi5hbW91bnRcIj48L3NwYS1tb25leT5cclxuICAgIDxzcGEtdGV4dCBkaXNwbGF5PVwiTmFycmF0aW9uXCIgWyh2YWx1ZSldPVwidHhuLm5hcnJhdGlvblwiPjwvc3BhLXRleHQ+XHJcbiAgICA8c3BhLXNlbGVjdCBkaXNwbGF5PVwiQ2F0ZWdvcnlcIiBbKHZhbHVlKV09XCJ0eG4uY2F0ZWdvcnlJRFwiIFtvcHRpb25zXT1cImNhdGVnb3JpZXNcIiBvcHRpb25EaXNwbGF5PVwibmFtZVwiIG9wdGlvblZhbHVlPVwibGlzdEl0ZW1JRFwiIFtkZWZhdWx0Rmlyc3RWYWx1ZV09XCJ0cnVlXCI+PC9zcGEtc2VsZWN0PlxyXG5cclxuXHJcblxyXG4gIDwvZGl2PlxyXG5cclxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XHJcblxyXG5cclxuPG1hdC1kaWFsb2ctYWN0aW9ucz5cclxuPGJ1dHRvbiBtYXQtYnV0dG9uIFtkaXNhYmxlZF09XCJpc1Byb2Nlc3NpbmdcIiAoY2xpY2spPVwic3VibWl0KClcIiBjZGtGb2N1c0luaXRpYWw+U3VibWl0PC9idXR0b24+XHJcbjxidXR0b24gbWF0LWJ1dHRvbiBbZGlzYWJsZWRdPVwiaXNQcm9jZXNzaW5nXCIgY2RrRm9jdXNJbml0aWFsIG1hdC1kaWFsb2ctY2xvc2U+Q2FuY2VsPC9idXR0b24+XHJcbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxyXG5cclxuXHJcblxyXG4iXX0=