tin-spa 9.0.0 → 9.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (249) hide show
  1. package/bundles/tin-spa.umd.js +4416 -1589
  2. package/bundles/tin-spa.umd.js.map +1 -1
  3. package/bundles/tin-spa.umd.min.js +2 -2
  4. package/bundles/tin-spa.umd.min.js.map +1 -1
  5. package/esm2015/lib/classes/Classes.js +58 -45
  6. package/esm2015/lib/classes/TinCore.js +137 -0
  7. package/esm2015/lib/components/activity/activity.component.js +84 -18
  8. package/esm2015/lib/components/attach/attach.component.js +101 -27
  9. package/esm2015/lib/components/change-password/change-password.component.js +122 -34
  10. package/esm2015/lib/components/check/check.component.js +39 -33
  11. package/esm2015/lib/components/chips/chips.component.js +75 -35
  12. package/esm2015/lib/components/create-account/create-account.component.js +124 -42
  13. package/esm2015/lib/components/date/date.component.js +54 -33
  14. package/esm2015/lib/components/datetime/datetime.component.js +43 -30
  15. package/esm2015/lib/components/filter/filter.component.js +64 -0
  16. package/esm2015/lib/components/html/html.component.js +30 -25
  17. package/esm2015/lib/components/label/label.component.js +109 -21
  18. package/esm2015/lib/components/loader/loader.component.js +43 -20
  19. package/esm2015/lib/components/login/login.component.js +194 -76
  20. package/esm2015/lib/components/logs/logs.component.js +180 -28
  21. package/esm2015/lib/components/message/messageDialog.component.js +128 -17
  22. package/esm2015/lib/components/money/currency-input-mask.directive.js +187 -0
  23. package/esm2015/lib/components/money/currency-input-mask.module.js +30 -0
  24. package/esm2015/lib/components/money/money.component.js +141 -39
  25. package/esm2015/lib/components/nav-menu/nav-menu.component.js +174 -21
  26. package/esm2015/lib/components/option/option.component.js +107 -40
  27. package/esm2015/lib/components/profile/profile.component.js +143 -53
  28. package/esm2015/lib/components/recover-account/recover-account.component.js +48 -26
  29. package/esm2015/lib/components/roles/addRoleDialog.component.js +99 -26
  30. package/esm2015/lib/components/roles/roles.component.js +153 -73
  31. package/esm2015/lib/components/select/select.component.js +108 -48
  32. package/esm2015/lib/components/settings/settings.component.js +76 -21
  33. package/esm2015/lib/components/signup/signup.component.js +107 -24
  34. package/esm2015/lib/components/steps/steps.component.js +47 -31
  35. package/esm2015/lib/components/table/table.component.js +301 -35
  36. package/esm2015/lib/components/text/text.component.js +146 -71
  37. package/esm2015/lib/components/tiles/tiles.component.js +75 -21
  38. package/esm2015/lib/components/timeout/timeout.component.js +65 -22
  39. package/esm2015/lib/components/tin-spa.component.js +19 -12
  40. package/esm2015/lib/components/users/users.component.js +308 -65
  41. package/esm2015/lib/components/viewer/viewer.component.js +64 -39
  42. package/esm2015/lib/components/viewer/viewerDialog.component.js +73 -18
  43. package/esm2015/lib/dnd.directive.js +30 -25
  44. package/esm2015/lib/modules/spa-admin.module.js +65 -51
  45. package/esm2015/lib/modules/spa-index.module.js +45 -20
  46. package/esm2015/lib/modules/spa-mat.module.js +40 -25
  47. package/esm2015/lib/modules/spa-user.module.js +43 -19
  48. package/esm2015/lib/services/auth.service.js +39 -50
  49. package/esm2015/lib/services/data.service.js +82 -49
  50. package/esm2015/lib/services/export.service.js +11 -11
  51. package/esm2015/lib/services/http.service.js +79 -0
  52. package/esm2015/lib/services/loader-interceptor.service.js +30 -30
  53. package/esm2015/lib/services/loader.service.js +11 -11
  54. package/esm2015/lib/services/log.service.js +12 -12
  55. package/esm2015/lib/services/message.service.js +11 -17
  56. package/esm2015/lib/services/storage.service.js +12 -11
  57. package/esm2015/lib/services/tin-spa.service.js +11 -11
  58. package/esm2015/lib/tin-spa.module.js +113 -48
  59. package/esm2015/public-api.js +4 -6
  60. package/esm2015/tin-spa.js +1 -5
  61. package/esm5/lib/classes/Classes.js +70 -55
  62. package/esm5/lib/classes/TinCore.js +164 -0
  63. package/esm5/lib/components/activity/activity.component.js +82 -15
  64. package/esm5/lib/components/attach/attach.component.js +100 -24
  65. package/esm5/lib/components/change-password/change-password.component.js +120 -31
  66. package/esm5/lib/components/check/check.component.js +37 -30
  67. package/esm5/lib/components/chips/chips.component.js +73 -32
  68. package/esm5/lib/components/create-account/create-account.component.js +122 -39
  69. package/esm5/lib/components/date/date.component.js +52 -30
  70. package/esm5/lib/components/datetime/datetime.component.js +41 -27
  71. package/esm5/lib/components/filter/filter.component.js +66 -0
  72. package/esm5/lib/components/html/html.component.js +28 -22
  73. package/esm5/lib/components/label/label.component.js +107 -18
  74. package/esm5/lib/components/loader/loader.component.js +41 -17
  75. package/esm5/lib/components/login/login.component.js +193 -74
  76. package/esm5/lib/components/logs/logs.component.js +178 -25
  77. package/esm5/lib/components/message/messageDialog.component.js +126 -14
  78. package/esm5/lib/components/money/currency-input-mask.directive.js +193 -0
  79. package/esm5/lib/components/money/currency-input-mask.module.js +34 -0
  80. package/esm5/lib/components/money/money.component.js +139 -36
  81. package/esm5/lib/components/nav-menu/nav-menu.component.js +172 -18
  82. package/esm5/lib/components/option/option.component.js +105 -37
  83. package/esm5/lib/components/profile/profile.component.js +141 -50
  84. package/esm5/lib/components/recover-account/recover-account.component.js +46 -23
  85. package/esm5/lib/components/roles/addRoleDialog.component.js +97 -23
  86. package/esm5/lib/components/roles/roles.component.js +152 -72
  87. package/esm5/lib/components/select/select.component.js +106 -45
  88. package/esm5/lib/components/settings/settings.component.js +74 -18
  89. package/esm5/lib/components/signup/signup.component.js +105 -21
  90. package/esm5/lib/components/steps/steps.component.js +46 -28
  91. package/esm5/lib/components/table/table.component.js +299 -32
  92. package/esm5/lib/components/text/text.component.js +144 -68
  93. package/esm5/lib/components/tiles/tiles.component.js +73 -18
  94. package/esm5/lib/components/timeout/timeout.component.js +63 -19
  95. package/esm5/lib/components/tin-spa.component.js +16 -8
  96. package/esm5/lib/components/users/users.component.js +307 -62
  97. package/esm5/lib/components/viewer/viewer.component.js +62 -36
  98. package/esm5/lib/components/viewer/viewerDialog.component.js +71 -15
  99. package/esm5/lib/dnd.directive.js +28 -22
  100. package/esm5/lib/modules/spa-admin.module.js +63 -48
  101. package/esm5/lib/modules/spa-index.module.js +43 -17
  102. package/esm5/lib/modules/spa-mat.module.js +38 -22
  103. package/esm5/lib/modules/spa-user.module.js +41 -16
  104. package/esm5/lib/services/auth.service.js +37 -47
  105. package/esm5/lib/services/data.service.js +89 -55
  106. package/esm5/lib/services/export.service.js +9 -8
  107. package/esm5/lib/services/http.service.js +81 -0
  108. package/esm5/lib/services/loader-interceptor.service.js +28 -27
  109. package/esm5/lib/services/loader.service.js +9 -8
  110. package/esm5/lib/services/log.service.js +11 -9
  111. package/esm5/lib/services/message.service.js +9 -14
  112. package/esm5/lib/services/storage.service.js +10 -8
  113. package/esm5/lib/services/tin-spa.service.js +9 -8
  114. package/esm5/lib/tin-spa.module.js +111 -45
  115. package/esm5/public-api.js +4 -6
  116. package/esm5/tin-spa.js +1 -5
  117. package/fesm2015/tin-spa.js +4418 -1612
  118. package/fesm2015/tin-spa.js.map +1 -1
  119. package/fesm5/tin-spa.js +4442 -1612
  120. package/fesm5/tin-spa.js.map +1 -1
  121. package/lib/classes/Classes.d.ts +55 -43
  122. package/lib/classes/TinCore.d.ts +27 -0
  123. package/lib/components/activity/activity.component.d.ts +3 -5
  124. package/lib/components/attach/attach.component.d.ts +3 -5
  125. package/lib/components/change-password/change-password.component.d.ts +11 -9
  126. package/lib/components/check/check.component.d.ts +3 -5
  127. package/lib/components/chips/chips.component.d.ts +3 -5
  128. package/lib/components/create-account/create-account.component.d.ts +13 -13
  129. package/lib/components/date/date.component.d.ts +6 -7
  130. package/lib/components/datetime/datetime.component.d.ts +3 -5
  131. package/lib/components/filter/filter.component.d.ts +15 -0
  132. package/lib/components/html/html.component.d.ts +3 -5
  133. package/lib/components/label/label.component.d.ts +3 -5
  134. package/lib/components/loader/loader.component.d.ts +3 -5
  135. package/lib/components/login/login.component.d.ts +12 -14
  136. package/lib/components/logs/logs.component.d.ts +5 -9
  137. package/lib/components/message/messageDialog.component.d.ts +3 -5
  138. package/lib/components/money/currency-input-mask.directive.d.ts +41 -0
  139. package/lib/components/money/currency-input-mask.module.d.ts +8 -0
  140. package/lib/components/money/money.component.d.ts +19 -8
  141. package/lib/components/nav-menu/nav-menu.component.d.ts +3 -5
  142. package/lib/components/option/option.component.d.ts +4 -5
  143. package/lib/components/profile/profile.component.d.ts +9 -11
  144. package/lib/components/recover-account/recover-account.component.d.ts +6 -8
  145. package/lib/components/roles/addRoleDialog.component.d.ts +5 -7
  146. package/lib/components/roles/roles.component.d.ts +6 -10
  147. package/lib/components/select/select.component.d.ts +4 -6
  148. package/lib/components/settings/settings.component.d.ts +5 -7
  149. package/lib/components/signup/signup.component.d.ts +6 -8
  150. package/lib/components/steps/steps.component.d.ts +3 -5
  151. package/lib/components/table/table.component.d.ts +3 -5
  152. package/lib/components/text/text.component.d.ts +4 -5
  153. package/lib/components/tiles/tiles.component.d.ts +3 -5
  154. package/lib/components/timeout/timeout.component.d.ts +3 -5
  155. package/lib/components/tin-spa.component.d.ts +3 -5
  156. package/lib/components/users/users.component.d.ts +8 -13
  157. package/lib/components/viewer/viewer.component.d.ts +3 -5
  158. package/lib/components/viewer/viewerDialog.component.d.ts +4 -6
  159. package/lib/dnd.directive.d.ts +3 -5
  160. package/lib/modules/spa-admin.module.d.ts +13 -19
  161. package/lib/modules/spa-index.module.d.ts +10 -11
  162. package/lib/modules/spa-mat.module.d.ts +30 -32
  163. package/lib/modules/spa-user.module.d.ts +9 -10
  164. package/lib/services/auth.service.d.ts +14 -14
  165. package/lib/services/data.service.d.ts +28 -17
  166. package/lib/services/export.service.d.ts +3 -4
  167. package/lib/services/http.service.d.ts +22 -0
  168. package/lib/services/loader-interceptor.service.d.ts +3 -5
  169. package/lib/services/loader.service.d.ts +3 -4
  170. package/lib/services/log.service.d.ts +3 -4
  171. package/lib/services/message.service.d.ts +3 -4
  172. package/lib/services/storage.service.d.ts +3 -4
  173. package/lib/services/tin-spa.service.d.ts +3 -4
  174. package/lib/tin-spa.module.d.ts +35 -35
  175. package/package.json +2 -10
  176. package/public-api.d.ts +3 -5
  177. package/tin-spa.d.ts +1 -6
  178. package/__ivy_ngcc__/fesm2015/tin-spa.js +0 -6813
  179. package/__ivy_ngcc__/fesm2015/tin-spa.js.map +0 -1
  180. package/esm2015/lib/components/profiles/profiles.component.js +0 -16
  181. package/esm2015/lib/components/roles/editRoleDialog.component.js +0 -57
  182. package/esm2015/lib/components/roles/viewRoleDialog.component.js +0 -38
  183. package/esm2015/lib/components/users/addUserDialog.component.js +0 -53
  184. package/esm2015/lib/components/users/editUserDialog.component.js +0 -96
  185. package/esm5/lib/components/profiles/profiles.component.js +0 -18
  186. package/esm5/lib/components/roles/editRoleDialog.component.js +0 -59
  187. package/esm5/lib/components/roles/viewRoleDialog.component.js +0 -39
  188. package/esm5/lib/components/users/addUserDialog.component.js +0 -55
  189. package/esm5/lib/components/users/editUserDialog.component.js +0 -99
  190. package/lib/components/activity/activity.component.d.ts.__ivy_ngcc_bak +0 -8
  191. package/lib/components/attach/attach.component.d.ts.__ivy_ngcc_bak +0 -39
  192. package/lib/components/change-password/change-password.component.d.ts.__ivy_ngcc_bak +0 -20
  193. package/lib/components/check/check.component.d.ts.__ivy_ngcc_bak +0 -16
  194. package/lib/components/chips/chips.component.d.ts.__ivy_ngcc_bak +0 -15
  195. package/lib/components/create-account/create-account.component.d.ts.__ivy_ngcc_bak +0 -25
  196. package/lib/components/date/date.component.d.ts.__ivy_ngcc_bak +0 -13
  197. package/lib/components/datetime/datetime.component.d.ts.__ivy_ngcc_bak +0 -12
  198. package/lib/components/html/html.component.d.ts.__ivy_ngcc_bak +0 -12
  199. package/lib/components/label/label.component.d.ts.__ivy_ngcc_bak +0 -8
  200. package/lib/components/loader/loader.component.d.ts.__ivy_ngcc_bak +0 -9
  201. package/lib/components/login/login.component.d.ts.__ivy_ngcc_bak +0 -29
  202. package/lib/components/logs/logs.component.d.ts.__ivy_ngcc_bak +0 -17
  203. package/lib/components/message/messageDialog.component.d.ts.__ivy_ngcc_bak +0 -12
  204. package/lib/components/money/money.component.d.ts.__ivy_ngcc_bak +0 -14
  205. package/lib/components/nav-menu/nav-menu.component.d.ts.__ivy_ngcc_bak +0 -17
  206. package/lib/components/option/option.component.d.ts.__ivy_ngcc_bak +0 -17
  207. package/lib/components/profile/profile.component.d.ts.__ivy_ngcc_bak +0 -30
  208. package/lib/components/profiles/profiles.component.d.ts +0 -10
  209. package/lib/components/profiles/profiles.component.d.ts.__ivy_ngcc_bak +0 -5
  210. package/lib/components/recover-account/recover-account.component.d.ts.__ivy_ngcc_bak +0 -15
  211. package/lib/components/roles/addRoleDialog.component.d.ts.__ivy_ngcc_bak +0 -19
  212. package/lib/components/roles/editRoleDialog.component.d.ts +0 -24
  213. package/lib/components/roles/editRoleDialog.component.d.ts.__ivy_ngcc_bak +0 -19
  214. package/lib/components/roles/roles.component.d.ts.__ivy_ngcc_bak +0 -29
  215. package/lib/components/roles/viewRoleDialog.component.d.ts +0 -20
  216. package/lib/components/roles/viewRoleDialog.component.d.ts.__ivy_ngcc_bak +0 -15
  217. package/lib/components/select/select.component.d.ts.__ivy_ngcc_bak +0 -20
  218. package/lib/components/settings/settings.component.d.ts.__ivy_ngcc_bak +0 -16
  219. package/lib/components/signup/signup.component.d.ts.__ivy_ngcc_bak +0 -20
  220. package/lib/components/steps/steps.component.d.ts.__ivy_ngcc_bak +0 -15
  221. package/lib/components/table/table.component.d.ts.__ivy_ngcc_bak +0 -25
  222. package/lib/components/text/text.component.d.ts.__ivy_ngcc_bak +0 -37
  223. package/lib/components/tiles/tiles.component.d.ts.__ivy_ngcc_bak +0 -11
  224. package/lib/components/timeout/timeout.component.d.ts.__ivy_ngcc_bak +0 -21
  225. package/lib/components/tin-spa.component.d.ts.__ivy_ngcc_bak +0 -5
  226. package/lib/components/users/addUserDialog.component.d.ts +0 -21
  227. package/lib/components/users/addUserDialog.component.d.ts.__ivy_ngcc_bak +0 -16
  228. package/lib/components/users/editUserDialog.component.d.ts +0 -32
  229. package/lib/components/users/editUserDialog.component.d.ts.__ivy_ngcc_bak +0 -27
  230. package/lib/components/users/users.component.d.ts.__ivy_ngcc_bak +0 -35
  231. package/lib/components/viewer/viewer.component.d.ts.__ivy_ngcc_bak +0 -16
  232. package/lib/components/viewer/viewerDialog.component.d.ts.__ivy_ngcc_bak +0 -19
  233. package/lib/dnd.directive.d.ts.__ivy_ngcc_bak +0 -8
  234. package/lib/modules/spa-admin.module.d.ts.__ivy_ngcc_bak +0 -2
  235. package/lib/modules/spa-index.module.d.ts.__ivy_ngcc_bak +0 -2
  236. package/lib/modules/spa-mat.module.d.ts.__ivy_ngcc_bak +0 -2
  237. package/lib/modules/spa-user.module.d.ts.__ivy_ngcc_bak +0 -2
  238. package/lib/services/auth.service.d.ts.__ivy_ngcc_bak +0 -45
  239. package/lib/services/data.service.d.ts.__ivy_ngcc_bak +0 -23
  240. package/lib/services/export.service.d.ts.__ivy_ngcc_bak +0 -7
  241. package/lib/services/loader-interceptor.service.d.ts.__ivy_ngcc_bak +0 -18
  242. package/lib/services/loader.service.d.ts.__ivy_ngcc_bak +0 -5
  243. package/lib/services/log.service.d.ts.__ivy_ngcc_bak +0 -16
  244. package/lib/services/message.service.d.ts.__ivy_ngcc_bak +0 -12
  245. package/lib/services/storage.service.d.ts.__ivy_ngcc_bak +0 -7
  246. package/lib/services/tin-spa.service.d.ts.__ivy_ngcc_bak +0 -3
  247. package/lib/tin-spa.module.d.ts.__ivy_ngcc_bak +0 -2
  248. package/tin-spa.d.ts.__ivy_ngcc_bak +0 -8
  249. package/tin-spa.metadata.json +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://tin-spa/lib/classes/Classes.ts","ng://tin-spa/lib/services/tin-spa.service.ts","ng://tin-spa/lib/services/storage.service.ts","ng://tin-spa/lib/components/message/messageDialog.component.ts","ng://tin-spa/lib/services/message.service.ts","ng://tin-spa/lib/services/export.service.ts","ng://tin-spa/lib/services/log.service.ts","ng://tin-spa/lib/services/auth.service.ts","ng://tin-spa/lib/services/data.service.ts","ng://tin-spa/lib/services/loader.service.ts","ng://tin-spa/lib/components/loader/loader.component.ts","ng://tin-spa/lib/modules/spa-mat.module.ts","ng://tin-spa/lib/services/loader-interceptor.service.ts","ng://tin-spa/lib/components/tin-spa.component.ts","ng://tin-spa/lib/components/nav-menu/nav-menu.component.ts","ng://tin-spa/lib/components/timeout/timeout.component.ts","ng://tin-spa/lib/components/table/table.component.ts","ng://tin-spa/lib/components/tiles/tiles.component.ts","ng://tin-spa/lib/components/date/date.component.ts","ng://tin-spa/lib/components/text/text.component.ts","ng://tin-spa/lib/components/viewer/viewerDialog.component.ts","ng://tin-spa/lib/components/viewer/viewer.component.ts","ng://tin-spa/lib/components/select/select.component.ts","ng://tin-spa/lib/components/check/check.component.ts","ng://tin-spa/lib/components/attach/attach.component.ts","ng://tin-spa/lib/components/datetime/datetime.component.ts","ng://tin-spa/lib/components/money/money.component.ts","ng://tin-spa/lib/dnd.directive.ts","ng://tin-spa/lib/components/chips/chips.component.ts","ng://tin-spa/lib/components/activity/activity.component.ts","ng://tin-spa/lib/components/html/html.component.ts","ng://tin-spa/lib/components/option/option.component.ts","ng://tin-spa/lib/components/label/label.component.ts","ng://tin-spa/lib/components/steps/steps.component.ts","ng://tin-spa/lib/tin-spa.module.ts","ng://tin-spa/lib/components/login/login.component.ts","ng://tin-spa/lib/components/signup/signup.component.ts","ng://tin-spa/lib/components/recover-account/recover-account.component.ts","ng://tin-spa/lib/modules/spa-index.module.ts","ng://tin-spa/lib/components/change-password/change-password.component.ts","ng://tin-spa/lib/components/profile/profile.component.ts","ng://tin-spa/lib/modules/spa-user.module.ts","ng://tin-spa/lib/components/settings/settings.component.ts","ng://tin-spa/lib/components/logs/logs.component.ts","ng://tin-spa/lib/components/users/users.component.ts","ng://tin-spa/lib/components/users/addUserDialog.component.ts","ng://tin-spa/lib/components/users/editUserDialog.component.ts","ng://tin-spa/lib/components/roles/viewRoleDialog.component.ts","ng://tin-spa/lib/components/roles/addRoleDialog.component.ts","ng://tin-spa/lib/components/roles/editRoleDialog.component.ts","ng://tin-spa/lib/components/roles/roles.component.ts","ng://tin-spa/lib/components/profiles/profiles.component.ts","ng://tin-spa/lib/components/create-account/create-account.component.ts","ng://tin-spa/lib/modules/spa-admin.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__param","paramIndex","decorator","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","TypeError","call","pop","push","__values","o","s","m","LogLevel","TinSpaService","Injectable","providedIn","StorageService","store","storageKey","encryptedValue","btoa","escape","JSON","stringify","localStorage","setItem","_a","get","getItem","ret","parse","unescape","atob","removeStorageItem","removeItem","clear","messageDialog","dialogRef","data","ngOnInit","messageType","type","_messageSubject","subject","_messageDetails","details","response","resp","close","MatDialogRef","Inject","args","MAT_DIALOG_DATA","Component","selector","template","MessageService","snackBar","dialog","toast","msg","open","duration","info","width","error","confirm","afterClosed","pipe","mergeMap","of","MatSnackBar","MatDialog","ExportService","fileType","fileExtension","exportExcel","jsonData","fileName","wb","Sheets","XLSX.utils","json_to_sheet","SheetNames","excelBuffer","XLSX.write","bookType","saveExcelFile","buffer","Blob","FileSaver.saveAs","TableColumnType","enableFilter","TableCreate","greyout","Condition","name","display","String","Operator","field","operator","Equal","Color","_super","Icon","appName","selfService","logo","logoSize","ADAuth","localAuth","employees","approvals","enabled","newLine","showMenu","ignoreSubsDisplay","link","icon","roleID","roleName","cap1","cap2","cap3","cap4","cap5","cap6","cap7","cap8","cap9","cap10","cap11","cap12","cap13","cap14","cap15","cap16","cap17","cap18","cap19","cap20","cap21","cap22","cap23","cap24","cap25","cap26","cap27","cap28","cap29","cap30","cap31","cap32","cap33","cap34","cap35","cap36","cap37","cap38","cap39","cap40","cap41","cap42","cap43","cap44","cap45","cap46","cap47","cap48","cap49","cap50","cap51","cap52","cap53","cap54","cap55","cap56","cap57","cap58","cap59","cap60","cap61","cap62","cap63","cap64","cap65","cap66","cap67","cap68","cap69","cap70","cap71","cap72","cap73","cap74","cap75","cap76","cap77","cap78","cap79","cap80","cap81","cap82","cap83","cap84","cap85","cap86","cap87","cap88","cap89","cap90","cap91","cap92","cap93","cap94","cap95","cap96","cap97","cap98","cap99","cap100","userID","password","tries","locked","logged","disabled","changepassword","dateCreated","Core","nowDate","dateUpdated","token","dateExpire","tokenExpire","authType","currentPassword","newPassword","confirmPassword","profileID","firstName","lastName","email","empID","arID","LogService","level","All","logToConsole","logToApi","debug","optionalParams","_i","writeToLog","Debug","Info","warn","Warn","Error","fatal","Fatal","log","params","shouldLog","getFormatedDate","Date","replace","formatParams","console","join","some","params_1","params_1_1","item","Off","AuthService","storage","router","httpService","messageService","logService","loggedin","loggedinSource","BehaviorSubject","loggedinObserv","asObservable","tokenSource","tokenObserv","tokenExpireSource","tokenExpireObserv","currentUser","currentUserSource","currentUserObserv","islineManager","isLineManagerSource","isLineManagerObserv","currentRole","Role","currentRoleSource","myRoleObserv","loggedUserSource","loggedUserFullName","updateloggedin","updateToken","newToken","updateTokenExpire","newTokenExpire","updateCurrentUser","newUser","toLocaleLowerCase","updateIsLineManager","manager","updateRole","role","updateLoggedUserFullName","username","isAuthorised","capName","navigate","isValidToken","valid","canActivate","_this","Constants","AUTH_USER","AUTH_NAME","AUTH_ROLES","AUTH_TOKEN","AUTH_TOKEN_EXPIRE","Router","HttpService","DataService","capUsers","CapItem","tmpProfileUserID","GetUser","by","val","Get","UpdateUser","user","action","Post","login","u","changePassword","changePasswordAdmin","SelfReset","UpdateRole","GetRole","UpdateAccount","account","GetProfile","UpdateProfile","profile","GetLog","GetSetting","UpdateSetting","setting","LoaderService","isLoading","LoaderComponent","loaderService","subscribe","loading","Input","disableClose","hasBackdrop","SpaMatModule","NgModule","declarations","imports","exports","CommonModule","FormsModule","ReactiveFormsModule","MatMenuModule","MatSliderModule","MatTableModule","MatPaginatorModule","MatCheckboxModule","MatBadgeModule","MatButtonModule","MatIconModule","MatDialogModule","MatSnackBarModule","MatTabsModule","MatFormFieldModule","MatInputModule","MatCardModule","MatChipsModule","MatSelectModule","MatNativeDateModule","MatProgressSpinnerModule","MatListModule","MatAutocompleteModule","MatTooltipModule","MatSortModule","MatDatepickerModule","MatStepperModule","MatRadioModule","providers","provide","MAT_DIALOG_DEFAULT_OPTIONS","useValue","ɵ0","MAT_DATE_LOCALE","LoaderInterceptor","authService","requests","removeRequest","req","indexOf","splice","intercept","request","requestClone","clone","setHeaders","Authorization","Observable","observer","subscription","handle","event","HttpResponse","err","statusText","status","complete","unsubscribe","TinSpaComponent","NavMenuComponent","isExpanded","appConfig","AppConfig","rol","myRole","obj","collapse","toggle","redirectTo","TimeoutComponent","idle","keepalive","idleState","timedOut","lastPing","isWarning","setIdle","setTimeout","setInterrupts","DEFAULT_INTERRUPTSOURCES","onIdleStart","onIdleEnd","onTimeoutWarning","countdown","onTimeout","stopWatch","interval","onPing","startWatch","watch","stop","using","Idle","Keepalive","TableComponent","dataChange","EventEmitter","buttonClick","loadClick","createClick","colType","displayedColumns","_filterText","config","columns","forEach","element","styleString","actions","ngOnChanges","MatTableDataSource","paginator","tablePaginator","applyFilter","filterValue","filter","trim","toLowerCase","do","ActionResponse","emit","load","test","a","Greater","Less","NotEqual","Output","ViewChild","TilesComponent","clickable","tileClick","selected","clicked","tileName","DateComponent","date","FormControl","readonly","currentYear","getFullYear","min","max","onChangeEvent","TextComponent","hideRequiredControl","hint","placeholder","valueChange","format","leave","enterPress","rows","options","optionValue","optionDisplay","myControl","required","regex","control","Validators","minLength","maxLength","pattern","initFilter","ngAfterViewInit","setValidators","updateValueAndValidity","filteredOptions","valueChanges","startWith","map","_filter","option","includes","changed","changed2","leaved","enterPressed","validate","hasError","viewerDialog","isProcessing","fileNames","currIndex","currentFileUrl","imageDoc","path","setURL","previous","apiUrl","endsWith","window","change","ViewerComponent","dir","folderName","removable","remove","title","viewDocs","minWidth","maxWidth","removed","SelectComponent","readonlyMode","optionDisplayExtra","displayValue","selectChanged","CheckComponent","click","check","uncheck","unchecked","checked","AttachComponent","message","files","filesChange","upload","enableUpload","onFileDropped","$event","prepareFilesList","fileBrowseHandler","deleteFile","index","files_1","files_1_1","progress","formatBytes","bytes","decimals","dm","Math","floor","parseFloat","pow","toFixed","uploaded","filesChanged","DatetimeComponent","MoneyComponent","currency","DndDirective","fileDropped","onDragOver","evt","preventDefault","stopPropagation","fileOver","onDragLeave","ondrop","dataTransfer","HostBinding","HostListener","Directive","ChipsComponent","addable","chip","ActivityComponent","notes","notesMessage","HtmlComponent","editable","spellcheck","height","minHeight","translate","defaultParagraphSeparator","defaultFontName","toolbarHiddenButtons","customClasses","class","tag","OptionComponent","show","resetValue","LabelComponent","displayDefaultIndicatorType","StepsComponent","pushSteps","setStepper","stepper","selectedIndex","pushStepper","count","steps","_b","_c","STEPPER_GLOBAL_OPTIONS","ɵ0$1","TinSpaModule","entryComponents","withConfig","warnOnNgModelWithFormControl","MomentModule","NgxDocViewerModule","AngularEditorModule","NgIdleKeepaliveModule","forRoot","HTTP_INTERCEPTORS","useClass","multi","LocationStrategy","HashLocationStrategy","LoginComponent","storageService","dataService","User","hide","signup","recoverAccount","apiResponse","ds","dtUser","dtProfile","dtRole","setRole","dt","SignupComponent","Profile","Account","RecoverAccountComponent","location","recover","back","Location","SpaIndexModule","ChangePasswordComponent","ChangeUserPassword","ProfileComponent","selfProfile","loadProfile","dtProfiles","roles","dtRoles","approvalRoles","dtApprovalRoles","dtEmployees","loadRoles","gotoUsers","update","updateProfile","SpaUserModule","SettingsComponent","loadSettings","settings","updateSetting","sName","addSetting","LogsComponent","loadLogs","logs","logsPaginator","UsersComponent","UpdateData","users","usersPaginator","createAccount","viewProfile","lock","updateUser","unlock","enable","disable","deleteUser","AddUserDialog","dataserv","currentCount","Signup","EditUserDialog","myUser","Update","DeleteUser","myData","myResponse","viewRoleDialog","authserv","submit","addRoleDialog","capItems","editRoleDialog","isLoadComplete","RolesComponent","refresh","addRole","viewRole","editRole","deleteRole","ProfilesComponent","CreateAccountComponent","openProfile","SpaAdminModule"],"mappings":";;;;;;;;;;;;;;oFAgBA,IAAIA,EAAgB,SAASC,EAAGC,GAI5B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,MACpDN,EAAGC,IAGrB,SAASO,EAAUR,EAAGC,GAEzB,SAASQ,IAAOC,KAAKC,YAAcX,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEY,UAAkB,OAANX,EAAaC,OAAOW,OAAOZ,IAAMQ,EAAGG,UAAYX,EAAEW,UAAW,IAAIH,GA0B5E,SAASK,EAAWC,EAAYC,EAAQC,EAAKC,GAChD,IAA2HlB,EAAvHmB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOhB,OAAOqB,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAAS1B,EAAIe,EAAWW,MAAIJ,GAAKH,EAAI,EAAInB,EAAEsB,GAAKH,EAAI,EAAInB,EAAEgB,EAAQC,EAAKK,GAAKtB,EAAEgB,EAAQC,KAASK,GAChJ,OAAOH,EAAI,GAAKG,GAAKpB,OAAOyB,eAAeX,EAAQC,EAAKK,GAAIA,EAGzD,SAASM,EAAQC,EAAYC,GAChC,OAAO,SAAUd,EAAQC,GAAOa,EAAUd,EAAQC,EAAKY,IAOpD,SAASE,EAAUC,EAASC,EAAYC,EAAGC,GAE9C,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,IAAW,MAAOG,GAAKL,EAAOK,IACpF,SAASC,EAASJ,GAAS,IAAMC,EAAKN,EAAiB,MAAEK,IAAW,MAAOG,GAAKL,EAAOK,IACvF,SAASF,EAAKI,GAJlB,IAAeL,EAIaK,EAAOC,KAAOT,EAAQQ,EAAOL,QAJ1CA,EAIyDK,EAAOL,MAJhDA,aAAiBN,EAAIM,EAAQ,IAAIN,GAAE,SAAUG,GAAWA,EAAQG,OAITO,KAAKR,EAAWK,GAClGH,GAAMN,EAAYA,EAAUa,MAAMhB,EAASC,GAAc,KAAKS,WAI/D,SAASO,EAAYjB,EAASkB,GACjC,IAAsGC,EAAGC,EAAGC,EAAGC,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPJ,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOK,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEZ,KAAMkB,EAAK,GAAIC,MAASD,EAAK,GAAIE,OAAUF,EAAK,IAAwB,mBAAXG,SAA0BT,EAAES,OAAOC,UAAY,WAAa,OAAOtD,OAAU4C,EACvJ,SAASM,EAAKK,GAAK,OAAO,SAAUC,GAAK,OACzC,SAAcC,GACV,GAAIhB,EAAG,MAAM,IAAIiB,UAAU,mCAC3B,KAAOb,GAAG,IACN,GAAIJ,EAAI,EAAGC,IAAMC,EAAY,EAARc,EAAG,GAASf,EAAU,OAAIe,EAAG,GAAKf,EAAS,SAAOC,EAAID,EAAU,SAAMC,EAAEgB,KAAKjB,GAAI,GAAKA,EAAEV,SAAWW,EAAIA,EAAEgB,KAAKjB,EAAGe,EAAG,KAAKrB,KAAM,OAAOO,EAE3J,OADID,EAAI,EAAGC,IAAGc,EAAK,CAAS,EAARA,EAAG,GAAQd,EAAEb,QACzB2B,EAAG,IACP,KAAK,EAAG,KAAK,EAAGd,EAAIc,EAAI,MACxB,KAAK,EAAc,OAAXZ,EAAEC,QAAgB,CAAEhB,MAAO2B,EAAG,GAAIrB,MAAM,GAChD,KAAK,EAAGS,EAAEC,QAASJ,EAAIe,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKZ,EAAEI,IAAIW,MAAOf,EAAEG,KAAKY,MAAO,SACxC,QACI,KAAMjB,EAAIE,EAAEG,MAAML,EAAIA,EAAEhC,OAAS,GAAKgC,EAAEA,EAAEhC,OAAS,KAAkB,IAAV8C,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEZ,EAAI,EAAG,SACjG,GAAc,IAAVY,EAAG,MAAcd,GAAMc,EAAG,GAAKd,EAAE,IAAMc,EAAG,GAAKd,EAAE,IAAM,CAAEE,EAAEC,MAAQW,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYZ,EAAEC,MAAQH,EAAE,GAAI,CAAEE,EAAEC,MAAQH,EAAE,GAAIA,EAAIc,EAAI,MAC7D,GAAId,GAAKE,EAAEC,MAAQH,EAAE,GAAI,CAAEE,EAAEC,MAAQH,EAAE,GAAIE,EAAEI,IAAIY,KAAKJ,GAAK,MACvDd,EAAE,IAAIE,EAAEI,IAAIW,MAChBf,EAAEG,KAAKY,MAAO,SAEtBH,EAAKjB,EAAKmB,KAAKrC,EAASuB,GAC1B,MAAOZ,GAAKwB,EAAK,CAAC,EAAGxB,GAAIS,EAAI,EAAI,QAAWD,EAAIE,EAAI,EACtD,GAAY,EAARc,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE3B,MAAO2B,EAAG,GAAKA,EAAG,QAAK,EAAQrB,MAAM,GArB9BL,CAAK,CAACwB,EAAGC,MA6BtD,SAASM,EAASC,GACrB,IAAIC,EAAsB,mBAAXX,QAAyBA,OAAOC,SAAUW,EAAID,GAAKD,EAAEC,GAAIhD,EAAI,EAC5E,GAAIiD,EAAG,OAAOA,EAAEN,KAAKI,GACrB,GAAIA,GAAyB,iBAAbA,EAAEpD,OAAqB,MAAO,CAC1CqB,KAAM,WAEF,OADI+B,GAAK/C,GAAK+C,EAAEpD,SAAQoD,OAAI,GACrB,CAAEjC,MAAOiC,GAAKA,EAAE/C,KAAMoB,MAAO2B,KAG5C,MAAM,IAAIL,UAAUM,EAAI,0BAA4B,uCCjH5CE,eCEV,SAAAC,uGAFWA,EAAa/D,EAAA,CAHzBgE,EAAAA,WAAW,CACVC,WAAY,UAEDF,mBCEX,SAAAG,YAGMA,EAAApE,UAAAqE,MAAN,SAAYC,EAAoB1C,mGAG9B,OAFM2C,EAAiBC,KAAKC,OAAOC,KAAKC,UAAU/C,KAElD,CAAA,EAAMgD,aAAaC,QAASP,EAAYC,kBAAxCO,EAAAjC,mBAIIuB,EAAApE,UAAA+E,IAAN,SAAUT,mGACI,MAAA,CAAA,EAAMM,aAAaI,QAASV,WACxC,OADMW,EAAMH,EAAAjC,OACZ,CAAA,EAAO6B,KAAKQ,MAAMC,SAASC,KAAKH,cAK5Bb,EAAApE,UAAAqF,kBAAN,SAAwBf,6FACtB,MAAA,CAAA,EAAMM,aAAaU,WAAWhB,kBAA9BQ,EAAAjC,mBAIIuB,EAAApE,UAAAuF,MAAN,qGACE,MAAA,CAAA,EAAMX,aAAaW,uBAAnBT,EAAAjC,8GAzBSuB,EAAclE,EAAA,CAH1BgE,EAAAA,WAAW,CACVC,WAAY,UAEDC,mBCOX,SAAAoB,EAAoBC,EAAwEC,GAAxE5F,KAAA2F,UAAAA,EAAwE3F,KAAA4F,KAAAA,EAqB9F,OAlBEF,EAAAxF,UAAA2F,SAAA,WAEE7F,KAAK8F,YAAc9F,KAAK4F,KAAKG,KAC7B/F,KAAKgG,gBAAkBhG,KAAK4F,KAAKK,QACjCjG,KAAKkG,gBAAkBlG,KAAK4F,KAAKO,SAQnCT,EAAAxF,UAAAkG,SAAA,SAASC,GAEPrG,KAAK2F,UAAUW,MAAMD,6CAjBQE,EAAAA,6CAA8BC,EAAAA,OAAMC,KAAA,CAACC,EAAAA,sBAFzDhB,EAAatF,EAAA,CALzBuG,EAAAA,UAAU,CACTC,SAAU,kBACVC,SAAA,+wCAK6D3F,EAAA,EAAAsF,EAAAA,OAAOE,EAAAA,mBAFzDhB,mBCCX,SAAAoB,EAAoBC,EAA8BC,GAA9BhH,KAAA+G,SAAAA,EAA8B/G,KAAAgH,OAAAA,SAE3CF,EAAA5G,UAAA+G,MAAP,SAAaC,GACXlH,KAAK+G,SAASI,KAAKD,EAAK,KAAM,CAAEE,SAAU,OAGrCN,EAAA5G,UAAAmH,KAAP,SAAYpB,EAAiBE,GAITnG,KAAKgH,OAAOG,KAAKzB,EAAe,CAChD4B,MAAO,QACP1B,KAAM,CAACG,KAJE,OAIIE,QAAOA,EAAEE,QAAOA,MAK1BW,EAAA5G,UAAAqH,MAAP,SAAcpB,GAKMnG,KAAKgH,OAAOG,KAAKzB,EAAe,CAChD4B,MAAO,QACP1B,KAAM,CAACG,KALE,QAKIE,aAJXA,EAIoBE,QAAOA,MAK1BW,EAAA5G,UAAAsH,QAAP,SAAeN,GAEZ,IAEIf,EAAUe,EAOf,OALkBlH,KAAKgH,OAAOG,KAAKzB,EAAe,CAChD4B,MAAO,QACP1B,KAAM,CAACG,KANG,UAMGE,QALA,GAKSE,QAAOA,KAGdsB,cAAcC,KAAKC,EAAAA,UAAS,SAACxF,GAE1C,OAAOyF,EAAAA,GAAGzF,iDA1Cc0F,EAAAA,mBAA4BC,EAAAA,2JAD/ChB,EAAc1G,EAAA,CAH1BgE,EAAAA,WAAW,CACVC,WAAY,UAEDyC,oBCDX,SAAAiB,IAEA/H,KAAAgI,SAAW,kFACXhI,KAAAiI,cAAgB,eAETF,EAAA7H,UAAAgI,YAAP,SAAmBC,EAAiBC,GAElC,IACMC,EAAoB,CAAEC,OAAQ,CAAE1C,KADX2C,EAAAA,MAAWC,cAAcL,IACAM,WAAY,CAAC,SAC3DC,EAAmBC,EAAAA,MAAWN,EAAI,CAAEO,SAAU,OAAQ7C,KAAM,UAClE/F,KAAK6I,cAAcH,EAAaN,IAG1BL,EAAA7H,UAAA2I,cAAR,SAAsBC,EAAaV,GACjC,IAAMxC,EAAa,IAAImD,KAAK,CAACD,GAAS,CAAC/C,KAAM/F,KAAKgI,WAClDgB,EAAAA,OAAiBpD,EAAMwC,EAAWpI,KAAKiI,2GAjB9BF,EAAa3H,EAAA,CAHzBgE,EAAAA,WAAW,CACVC,WAAY,UAED0D,OLFD7D,EAAAA,EAAAA,WAAAA,EAAAA,SAAQ,KAClBA,EAAA,IAAA,GAAA,MACAA,EAAAA,EAAA,MAAA,GAAA,QACAA,EAAAA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,MAAA,GAAA,QACAA,EAAAA,EAAA,MAAA,GAAA,QACAA,EAAAA,EAAA,IAAA,GAAA,UAoDU+E,MAhDZ,gBAUA,gBAKA,WAEEjJ,KAAAkJ,cAAwB,EACxBlJ,KAAAG,OAAS,IAAIgJ,GAKbnJ,KAAAoJ,QAAU,IAAIC,OAIhB,gBAOE,WACErJ,KAAKsJ,KAAO,UACZtJ,KAAKuJ,QAAU,UACfvJ,KAAK+F,KAAOkD,EAAAA,gBAAgBO,SAWpBP,GAAAA,EAAAA,kBAAAA,EAAAA,gBAAe,KACzBA,GAAA,OAAA,GAAA,SAAQA,GAAAA,GAAA,KAAA,GAAA,OAAMA,GAAAA,GAAA,SAAA,GAAA,WAAUA,GAAAA,GAAA,MAAA,GAAA,QAAOA,GAAAA,GAAA,KAAA,GAAA,OAAMA,GAAAA,GAAA,SAAA,GAAA,WAAUA,GAAAA,GAAA,KAAA,GAAA,WAgBrCQ,MAVV,WACEzJ,KAAK0J,MAAQ,GACb1J,KAAK2J,SAAWF,EAAAA,SAASG,MACzB5J,KAAK8B,MAAQ,KAOL2H,GAAAA,EAAAA,WAAAA,EAAAA,SAAQ,KACpBA,GAAA,MAAA,GAAA,QAAOA,GAAAA,GAAA,KAAA,GAAA,OAAMA,GAAAA,GAAA,QAAA,GAAA,UAASA,GAAAA,GAAA,SAAA,GAAA,8BAKtB,SAAAI,mDAEA,OAF2B/J,EAAA+J,EAAAC,GAE3BD,GAF2BR,mBAI3B,SAAAU,mDAIA,OAJ0BjK,EAAAiK,EAAAD,GAI1BC,GAJ0BV,OAQ1B,gBAeA,gBASE,WACErJ,KAAKgK,QAAU,GACfhK,KAAKiK,aAAc,EACnBjK,KAAKkK,KAAO,GACZlK,KAAKmK,SAAW,aAYhB,WACEnK,KAAKgK,QAAU,WACfhK,KAAKkK,KAAO,GACZlK,KAAKoK,QAAS,EACdpK,KAAKqK,WAAY,EACjBrK,KAAKsK,WAAY,EACjBtK,KAAKuK,WAAY,MAanB,WACEvK,KAAKsJ,KAAO,GACZtJ,KAAKuJ,QAAU,eACfvJ,KAAKwK,SAAU,EACfxK,KAAK+F,KAAM,GACX/F,KAAKyK,SAAU,EACfzK,KAAK0K,UAAU,EACf1K,KAAK2K,mBAAoB,EACzB3K,KAAK4K,KAAO,GACZ5K,KAAK6K,KAAO,oBAuBd,WACA7K,KAAK8K,OAAU,GACf9K,KAAK+K,SAAY,WACjB/K,KAAKgL,MAAQ,EACbhL,KAAKiL,MAAQ,EACbjL,KAAKkL,MAAQ,EACblL,KAAKmL,MAAQ,EACbnL,KAAKoL,MAAQ,EACbpL,KAAKqL,MAAQ,EACbrL,KAAKsL,MAAQ,EACbtL,KAAKuL,MAAQ,EACbvL,KAAKwL,MAAQ,EACbxL,KAAKyL,OAAS,EACdzL,KAAK0L,OAAS,EACd1L,KAAK2L,OAAS,EACd3L,KAAK4L,OAAS,EACd5L,KAAK6L,OAAS,EACd7L,KAAK8L,OAAS,EACd9L,KAAK+L,OAAS,EACd/L,KAAKgM,OAAS,EACdhM,KAAKiM,OAAS,EACdjM,KAAKkM,OAAS,EACdlM,KAAKmM,OAAS,EACdnM,KAAKoM,OAAS,EACdpM,KAAKqM,OAAS,EACdrM,KAAKsM,OAAS,EACdtM,KAAKuM,OAAS,EACdvM,KAAKwM,OAAS,EACdxM,KAAKyM,OAAS,EACdzM,KAAK0M,OAAS,EACd1M,KAAK2M,OAAS,EACd3M,KAAK4M,OAAS,EACd5M,KAAK6M,OAAS,EACd7M,KAAK8M,OAAS,EACd9M,KAAK+M,OAAS,EACd/M,KAAKgN,OAAS,EACdhN,KAAKiN,OAAS,EACdjN,KAAKkN,OAAS,EACdlN,KAAKmN,OAAS,EACdnN,KAAKoN,OAAS,EACdpN,KAAKqN,OAAS,EACdrN,KAAKsN,OAAS,EACdtN,KAAKuN,OAAS,EACdvN,KAAKwN,OAAS,EACdxN,KAAKyN,OAAS,EACdzN,KAAK0N,OAAS,EACd1N,KAAK2N,OAAS,EACd3N,KAAK4N,OAAS,EACd5N,KAAK6N,OAAS,EACd7N,KAAK8N,OAAS,EACd9N,KAAK+N,OAAS,EACd/N,KAAKgO,OAAS,EACdhO,KAAKiO,OAAS,EACdjO,KAAKkO,OAAS,EACdlO,KAAKmO,OAAS,EACdnO,KAAKoO,OAAS,EACdpO,KAAKqO,OAAS,EACdrO,KAAKsO,OAAS,EACdtO,KAAKuO,OAAS,EACdvO,KAAKwO,OAAS,EACdxO,KAAKyO,OAAS,EACdzO,KAAK0O,OAAS,EACd1O,KAAK2O,OAAS,EACd3O,KAAK4O,OAAS,EACd5O,KAAK6O,OAAS,EACd7O,KAAK8O,OAAS,EACd9O,KAAK+O,OAAS,EACd/O,KAAKgP,OAAS,EACdhP,KAAKiP,OAAS,EACdjP,KAAKkP,OAAS,EACdlP,KAAKmP,OAAS,EACdnP,KAAKoP,OAAS,EACdpP,KAAKqP,OAAS,EACdrP,KAAKsP,OAAS,EACdtP,KAAKuP,OAAS,EACdvP,KAAKwP,OAAS,EACdxP,KAAKyP,OAAS,EACdzP,KAAK0P,OAAS,EACd1P,KAAK2P,OAAS,EACd3P,KAAK4P,OAAS,EACd5P,KAAK6P,OAAS,EACd7P,KAAK8P,OAAS,EACd9P,KAAK+P,OAAS,EACd/P,KAAKgQ,OAAS,EACdhQ,KAAKiQ,OAAS,EACdjQ,KAAKkQ,OAAS,EACdlQ,KAAKmQ,OAAS,EACdnQ,KAAKoQ,OAAS,EACdpQ,KAAKqQ,OAAS,EACdrQ,KAAKsQ,OAAS,EACdtQ,KAAKuQ,OAAS,EACdvQ,KAAKwQ,OAAS,EACdxQ,KAAKyQ,OAAS,EACdzQ,KAAK0Q,OAAS,EACd1Q,KAAK2Q,OAAS,EACd3Q,KAAK4Q,OAAS,EACd5Q,KAAK6Q,OAAS,EACd7Q,KAAK8Q,OAAS,EACd9Q,KAAK+Q,OAAS,EACd/Q,KAAKgR,OAAS,EACdhR,KAAKiR,OAAS,EACdjR,KAAKkR,OAAS,EACdlR,KAAKmR,QAAU,MA2GnB,gBAQE,WAEEnR,KAAKoR,OAAS,GACdpR,KAAKqR,SAAW,GAChBrR,KAAKsR,MAAQ,IACbtR,KAAKuR,OAAS,IACdvR,KAAKwR,OAAS,IACdxR,KAAKyR,SAAW,IAChBzR,KAAK0R,eAAiB,IACtB1R,KAAK2R,YAAcC,EAAAA,KAAKC,UACxB7R,KAAK8R,YAAcF,EAAAA,KAAKC,UACxB7R,KAAK+R,MAAQ,GACb/R,KAAKgS,WAAcJ,EAAAA,KAAKC,UACxB7R,KAAKiS,YAAcL,EAAAA,KAAKC,UACxB7R,KAAKkS,SAAW,OAsBlB,WACElS,KAAKoR,OAAS,GACdpR,KAAKmS,gBAAkB,GACvBnS,KAAKoS,YAAc,GACnBpS,KAAKqS,gBAAkB,OAUzB,WACArS,KAAKsS,UAAa,GAClBtS,KAAKoR,OAAU,GACfpR,KAAK8K,OAAU,IACf9K,KAAKuS,UAAa,GAClBvS,KAAKwS,SAAY,GACjBxS,KAAKyS,MAAS,GACdzS,KAAK0S,MAAQ,GACb1S,KAAK2S,KAAO,IACZ3S,KAAKkS,SAAW,kBMzchB,SAAAU,IAEA5S,KAAA6S,MAAkB3O,EAAAA,SAAS4O,IAE3B9S,KAAA+S,cAAwB,EAExB/S,KAAAgT,UAAoB,SAEpBJ,EAAA1S,UAAA+S,MAAA,SAAM/L,OAAa,IAAAgM,EAAA,GAAAC,EAAA,EAAAA,EAAAzS,UAAAC,OAAAwS,IAAAD,EAAAC,EAAA,GAAAzS,UAAAyS,GACjBnT,KAAKoT,WAAWlM,EAAKhD,EAAAA,SAASmP,MAAOH,IAGvCN,EAAA1S,UAAAmH,KAAA,SAAKH,OAAa,IAAAgM,EAAA,GAAAC,EAAA,EAAAA,EAAAzS,UAAAC,OAAAwS,IAAAD,EAAAC,EAAA,GAAAzS,UAAAyS,GAChBnT,KAAKoT,WAAWlM,EAAKhD,EAAAA,SAASoP,KAAMJ,IAGtCN,EAAA1S,UAAAqT,KAAA,SAAKrM,OAAa,IAAAgM,EAAA,GAAAC,EAAA,EAAAA,EAAAzS,UAAAC,OAAAwS,IAAAD,EAAAC,EAAA,GAAAzS,UAAAyS,GAChBnT,KAAKoT,WAAWlM,EAAKhD,EAAAA,SAASsP,KAAMN,IAGtCN,EAAA1S,UAAAqH,MAAA,SAAML,OAAa,IAAAgM,EAAA,GAAAC,EAAA,EAAAA,EAAAzS,UAAAC,OAAAwS,IAAAD,EAAAC,EAAA,GAAAzS,UAAAyS,GACjBnT,KAAKoT,WAAWlM,EAAKhD,EAAAA,SAASuP,MAAOP,IAGvCN,EAAA1S,UAAAwT,MAAA,SAAMxM,OAAa,IAAAgM,EAAA,GAAAC,EAAA,EAAAA,EAAAzS,UAAAC,OAAAwS,IAAAD,EAAAC,EAAA,GAAAzS,UAAAyS,GACjBnT,KAAKoT,WAAWlM,EAAKhD,EAAAA,SAASyP,MAAOT,IAGvCN,EAAA1S,UAAA0T,IAAA,SAAI1M,OAAa,IAAAgM,EAAA,GAAAC,EAAA,EAAAA,EAAAzS,UAAAC,OAAAwS,IAAAD,EAAAC,EAAA,GAAAzS,UAAAyS,GACfnT,KAAKoT,WAAWlM,EAAKhD,EAAAA,SAAS4O,IAAKI,IAI7BN,EAAA1S,UAAAkT,WAAR,SAAmBlM,EAAa2L,EAAiBgB,GAE/C,GAAI7T,KAAK8T,UAAUjB,GAAQ,CAGzB,IAAI/Q,EAAgB8P,EAAAA,KAAKmC,gBAAgBC,QAAO,GAAOC,QAAQ,IAAI,KAEnEnS,GAAS,eAAiBoF,EAGtB2M,EAAOlT,SACTmB,GAAS,kBAAoB9B,KAAKkU,aAAaL,IAI7C7T,KAAK+S,cACPoB,QAAQP,IAAI9R,GAGV9B,KAAKgT,WAOLJ,EAAA1S,UAAAgU,aAAR,SAAqBL,WAEf1O,EAAc0O,EAAOO,KAAK,KAE9B,GAAIP,EAAOQ,MAAK,SAACzU,GAAM,MAAY,iBAALA,KAAgB,CAC5CuF,EAAM,OAEN,IAAiB,IAAAmP,EAAAxQ,EAAA+P,GAAMU,EAAAD,EAAAtS,QAAAuS,EAAAnS,KAAAmS,EAAAD,EAAAtS,OAAE,CAApB,IAAIwS,EAAID,EAAAzS,MACXqD,GAAOP,KAAKC,UAAU2P,GAAQ,uGAGlC,OAAOrP,GAGDyN,EAAA1S,UAAA4T,UAAR,SAAkBjB,GAEhB,IAAI1N,GAAe,EASnB,OANG0N,GAAS7S,KAAK6S,OAASA,IAAU3O,EAAAA,SAASuQ,KAC3CzU,KAAK6S,QAAU3O,EAAAA,SAAS4O,OAExB3N,GAAM,GAGDA,8FArFEyN,EAAUxS,EAAA,CAHtBgE,EAAAA,WAAW,CACVC,WAAY,UAEDuO,oBCcX,SAAA8B,EAAoBC,EAAgCC,EAAwBC,EAAkCC,EAAwCC,GAAlI/U,KAAA2U,QAAAA,EAAgC3U,KAAA4U,OAAAA,EAAwB5U,KAAA6U,YAAAA,EAAkC7U,KAAA8U,eAAAA,EAAwC9U,KAAA+U,WAAAA,EAI9I/U,KAAAgV,UAAoB,EACpBhV,KAAAiV,eAAiB,IAAIC,EAAAA,gBAAgBlV,KAAKgV,UAC3ChV,KAAAmV,eAAiBnV,KAAKiV,eAAeG,eAOpCpV,KAAA+R,MAAgB,GACjB/R,KAAAqV,YAAc,IAAIH,EAAAA,gBAAgBlV,KAAK+R,OACvC/R,KAAAsV,YAActV,KAAKqV,YAAYD,eAO5BpV,KAAAiS,YAAsB,GACvBjS,KAAAuV,kBAAoB,IAAIL,EAAAA,gBAAgBlV,KAAKiS,aAC7CjS,KAAAwV,kBAAoBxV,KAAKuV,kBAAkBH,eAO7CpV,KAAAyV,YAAsB,WACrBzV,KAAA0V,kBAAoB,IAAIR,EAAAA,gBAAgBlV,KAAKyV,aAC9CzV,KAAA2V,kBAAoB3V,KAAK0V,kBAAkBN,eAO1CpV,KAAA4V,eAAyB,EACzB5V,KAAA6V,oBAAsB,IAAIX,EAAAA,gBAAgBlV,KAAK4V,eAChD5V,KAAA8V,oBAAsB9V,KAAK6V,oBAAoBT,eAM9CpV,KAAA+V,YAAc,IAAIC,GACnBhW,KAAAiW,kBAAoB,IAAIf,EAAAA,gBAAgBlV,KAAK+V,aAC7C/V,KAAAkW,aAAelW,KAAKiW,kBAAkBb,eAMrCpV,KAAAmW,iBAAmB,IAAIjB,EAAAA,gBAAgB,YACxClV,KAAAoW,mBAAqBpW,KAAKmW,iBAAiBf,sBAlDlDV,EAAAxU,UAAAmW,eAAA,SAAerB,GACbhV,KAAKiV,eAAejT,KAAKgT,GACzBhV,KAAKgV,SAAWA,GAOlBN,EAAAxU,UAAAoW,YAAA,SAAYC,GACVvW,KAAKqV,YAAYrT,KAAKuU,IAQtB7B,EAAAxU,UAAAsW,kBAAA,SAAkBC,GAChBzW,KAAKuV,kBAAkBvT,KAAKyU,IAQhC/B,EAAAxU,UAAAwW,kBAAA,SAAkBC,GAChB3W,KAAK0V,kBAAkB1T,KAAK2U,EAAQC,qBACpC5W,KAAKyV,YAAckB,EAAQC,qBAO7BlC,EAAAxU,UAAA2W,oBAAA,SAAoBC,GAClB9W,KAAK6V,oBAAoB7T,KAAK8U,IAOhCpC,EAAAxU,UAAA6W,WAAA,SAAWC,GACThX,KAAKiW,kBAAkBjU,KAAKgV,IAM9BtC,EAAAxU,UAAA+W,yBAAA,SAAyBC,GACvBlX,KAAKmW,iBAAiBnU,KAAKkV,IAK7BxC,EAAAxU,UAAAiX,aAAA,SAAaC,GAIX,QAAKpX,KAAKiW,kBAAkBnU,MAAMsV,KAEhCpX,KAAK4U,OAAOyC,SAAS,CAAC,SACtBrX,KAAK8U,eAAe7N,MAAM,iBAAiBmQ,IAEpC,IAOX1C,EAAAxU,UAAAoX,aAAA,WAGE,IAIIC,EAJoB,IAAIvD,KAAKhU,KAAKuV,kBAAkBzT,OACpC,IAAIkS,KAWxB,OANKuD,IAEHvX,KAAK4U,OAAOyC,SAAS,CAAC,UACtBrX,KAAK8U,eAAe7N,MAAM,oBAGrBsQ,GAIT7C,EAAAxU,UAAAsX,YAAA,WAAA,IAAAC,EAAAzX,KAGE,SAAIA,KAAKgV,WAAYhV,KAAKsX,kBAKwB,OAA9CxS,aAAaI,QAAQwS,EAAAA,UAAUC,YAGjC3X,KAAKqW,gBAAe,GACpBrW,KAAK4U,OAAOyC,SAAS,CAAC,WACf,IAKPrX,KAAKqW,gBAAe,GAEpBrW,KAAK2U,QAAQ1P,IAAIyS,EAAAA,UAAUC,WAAWtV,MAAK,SAACgE,GAC1CoR,EAAKf,kBAAkBrQ,MAIzBrG,KAAK2U,QAAQ1P,IAAIyS,EAAAA,UAAUE,WAAWvV,MAAK,SAACgE,GAC1CoR,EAAKR,yBAAyB5Q,MAIhCrG,KAAK2U,QAAQ1P,IAAIyS,EAAAA,UAAUG,YAAYxV,MAAK,SAACgE,GAC3C,IAAIlB,EAAMP,KAAKQ,MAAMiB,GAErBoR,EAAKV,WAAW5R,MAIlBnF,KAAK2U,QAAQ1P,IAAIyS,EAAAA,UAAUI,YAAYzV,MAAK,SAACgE,GAC3CoR,EAAKnB,YAAYjQ,MAInBrG,KAAK2U,QAAQ1P,IAAIyS,EAAAA,UAAUK,mBAAmB1V,MAAK,SAACgE,GAClDoR,EAAKjB,kBAAkBnQ,GACvBoR,EAAKH,mBAIA,8CAnJkBhT,SAA+B0T,EAAAA,cAA6BC,EAAAA,mBAAqCnR,SAAoC8L,4LADvJ8B,EAAWtU,EAAA,CAJvBgE,EAAAA,WAAW,CACVC,WAAY,UAGDqQ,oBCXX,SAAAwD,EAAoBrD,GAAA7U,KAAA6U,YAAAA,EASpB7U,KAAAmY,SAAW,IAAIC,GAIRpY,KAAAqY,iBAAmB,GATxBrY,KAAKmY,SAAS7O,KAAO,OACrBtJ,KAAKmY,SAAS5O,QAAU,QACxBvJ,KAAKmY,SAASvN,KAAO,0BAWhBsN,EAAAhY,UAAAoY,QAAP,SAAeC,EAAYC,GACzB,OAAOxY,KAAK6U,YAAY4D,IAAI,oBAAsBF,EAAK,QAAUC,IAG5DN,EAAAhY,UAAAwY,WAAP,SAAkBC,EAAMC,GACtB,OAAO5Y,KAAK6U,YAAYgE,KAAK,2BAA6BD,EAAQD,IAG7DT,EAAAhY,UAAA4Y,MAAP,SAAaC,GACX,OAAO/Y,KAAK6U,YAAYgE,KAAK,cAAeE,IAGvCb,EAAAhY,UAAA8Y,eAAP,SAAsBD,GACpB,OAAO/Y,KAAK6U,YAAYgE,KAAK,uBAAwBE,IAGhDb,EAAAhY,UAAA+Y,oBAAP,SAA2BF,GACzB,OAAO/Y,KAAK6U,YAAYgE,KAAK,4BAA6BE,IAGrDb,EAAAhY,UAAAgZ,UAAP,SAAiBH,GACf,OAAO/Y,KAAK6U,YAAYgE,KAAK,kBAAmBE,IAO3Cb,EAAAhY,UAAAiZ,WAAP,SAAkBnC,EAAM4B,GACtB,OAAO5Y,KAAK6U,YAAYgE,KAAK,2BAA6BD,EAAQ5B,IAG7DkB,EAAAhY,UAAAkZ,QAAP,SAAeb,EAAYC,GACzB,OAAOxY,KAAK6U,YAAY4D,IAAI,oBAAsBF,EAAK,QAAUC,IAK5DN,EAAAhY,UAAAmZ,cAAP,SAAqBC,EAASV,GAC5B,OAAO5Y,KAAK6U,YAAYgE,KAAK,8BAAgCD,EAAQU,IAKhEpB,EAAAhY,UAAAqZ,WAAP,SAAkBhB,EAAYC,GAC5B,OAAOxY,KAAK6U,YAAY4D,IAAI,uBAAyBF,EAAK,QAAUC,IAG/DN,EAAAhY,UAAAsZ,cAAP,SAAqBC,EAASb,GAC5B,OAAO5Y,KAAK6U,YAAYgE,KAAK,8BAAgCD,EAAQa,IAIhEvB,EAAAhY,UAAAwZ,OAAP,SAAcnB,EAAYC,GACxB,OAAOxY,KAAK6U,YAAY4D,IAAI,mBAAqBF,EAAK,QAAUC,IAI1DN,EAAAhY,UAAAyZ,WAAP,SAAkBpB,EAAYC,GAC7B,OAAOxY,KAAK6U,YAAY4D,IAAI,uBAAyBF,EAAK,QAAUC,IAG/DN,EAAAhY,UAAA0Z,cAAP,SAAqBC,EAASjB,GAC5B,OAAO5Y,KAAK6U,YAAYgE,KAAK,8BAAgCD,EAAQiB,6CAhFtC5B,EAAAA,qIAFtBC,EAAW9X,EAAA,CAHvBgE,EAAAA,WAAW,CACVC,WAAY,UAED6T,oBCCX,SAAA4B,IADO9Z,KAAA+Z,UAAY,IAAI7E,EAAAA,iBAAgB,qGAF5B4E,EAAa1Z,EAAA,CAHzBgE,EAAAA,WAAW,CACVC,WAAY,UAEDyV,oBCIX,SAAAE,EAAoBC,GAApB,IAAAxC,EAAAzX,KAAoBA,KAAAia,cAAAA,EAWXja,KAAAkK,KAAO,GATdlK,KAAKia,cAAcF,UAAUG,WAAU,SAAC1W,GAEtCiU,EAAK0C,QAAU3W,KAUrB,OANEwW,EAAA9Z,UAAA2F,SAAA,sDARmCiU,MAW1B1Z,EAAA,CAARga,EAAAA,oCAbUJ,EAAe5Z,EAAA,CAL3BuG,EAAAA,UAAU,CACTC,SAAU,aACVC,SAAA,ktCAGWmT,SCoCwC,CAAEK,cAAc,EAAMC,aAAa,iBAIxF,SAAAC,KAA4B,OAAfA,EAAYna,EAAA,CAnBxBoa,EAAAA,SAAS,CACRC,aAAc,GACdC,QAAS,GAITC,QAAS,CACPC,EAAAA,aAAaC,EAAAA,YAAaC,EAAAA,oBAC1BC,EAAAA,cAAkBC,EAAAA,gBAAoBC,EAAAA,eAAmBC,EAAAA,mBACzDC,EAAAA,kBAAsBC,EAAAA,eAAmBC,EAAAA,gBAAoBC,EAAAA,cAAkBC,EAAAA,gBAAoBC,EAAAA,kBACnGC,EAAAA,cAAkBC,EAAAA,mBAAuBC,EAAAA,eAAmBC,EAAAA,cAAkBC,EAAAA,eAAmBC,EAAAA,gBACjGC,EAAAA,oBAAwBC,EAAAA,yBAA6BC,EAAAA,cAAkBC,EAAAA,sBAA0BC,EAAAA,iBAAqBC,EAAAA,cACtHC,EAAAA,oBAAwBC,EAAAA,iBAAqBC,EAAAA,gBAE/CC,UAAU,CACR,CAAEC,QAASC,EAAAA,2BAA4BC,SAAQC,IAC/C,CAAEH,QAASI,EAAAA,gBAAiBF,SAAU,aAG7BpC,oBCnCX,SAAAuC,EAAoB7C,EAAsCnF,EAAwCiI,EAAkCnI,EAAwBG,GAAxI/U,KAAAia,cAAAA,EAAsCja,KAAA8U,eAAAA,EAAwC9U,KAAA+c,YAAAA,EAAkC/c,KAAA4U,OAAAA,EAAwB5U,KAAA+U,WAAAA,EAFpJ/U,KAAAgd,SAA+B,GAuEzC,OAlEEF,EAAA5c,UAAA+c,cAAA,SAAcC,GACZ,IAAMlc,EAAIhB,KAAKgd,SAASG,QAAQD,GAC5Blc,GAAK,GACPhB,KAAKgd,SAASI,OAAOpc,EAAG,GAE1BhB,KAAKia,cAAcF,UAAU/X,KAAKhC,KAAKgd,SAASrc,OAAS,IAG3Dmc,EAAA5c,UAAAmd,UAAA,SAAUC,EAA2Btb,GAArC,IAAAyV,EAAAzX,KAGMud,EAAeD,EAAQE,MAAM,CAC/BC,WAAY,CACVC,cAAe,SAAWhZ,KAAK1E,KAAK+c,YAAYtH,YAAc,IAAMzV,KAAK+c,YAAY1H,YAAYvT,UAgBrG,OAXA9B,KAAKgd,SAASnZ,KAAK0Z,GAEfvd,KAAKgd,SAASrc,OAAS,GACzBX,KAAK+U,WAAW1N,KAAK,mCAAqCrH,KAAKgd,SAASrc,QAM1EX,KAAKia,cAAcF,UAAU/X,MAAK,GAE3B2b,EAAAA,WAAWxd,QAAO,SAAAyd,GAEvB,IAAMC,EAAe7b,EAAK8b,OAAOP,GAC9BrD,WACC,SAAA6D,GACMA,aAAiBC,EAAAA,eACnBvG,EAAKwF,cAAcM,GACnBK,EAAS5b,KAAK+b,OAGlB,SAACE,GAECxG,EAAK3C,eAAe7N,MAAM,UAAYgX,EAAIC,YAE1CzG,EAAKwF,cAAcM,GACnBK,EAASrW,MAAM0W,GAEI,MAAfA,EAAIE,QAEN1G,EAAK7C,OAAOyC,SAAS,CAAC,aAI1B,WACEI,EAAKwF,cAAcM,GACnBK,EAASQ,cAKf,OAAO,WACL3G,EAAKwF,cAAcM,GACnBM,EAAaQ,4DAhEgBvE,UAAuChT,SAAqC4N,UAA6BsD,EAAAA,cAA4BpF,MAH7JkK,EAAiB1c,EAAA,CAD7BgE,EAAAA,cACY0Y,oBCGX,SAAAwB,KAKF,OAHEA,EAAApe,UAAA2F,SAAA,aAJWyY,EAAele,EAAA,CAT3BuG,EAAAA,UAAU,CACTC,SAAU,cACVC,SAAU,mDAOCyX,oBCEX,SAAAC,EAAmB3J,EAAuBmI,GAAvB/c,KAAA4U,OAAAA,EAAuB5U,KAAA+c,YAAAA,EAa1C/c,KAAAwe,YAAa,EAEJxe,KAAAye,UAAY,IAAIC,GA+B3B,OA5CEH,EAAAre,UAAA2F,SAAA,WAAA,IAAA4R,EAAAzX,KAEEA,KAAK+c,YAAY3G,mBAAmB8D,WAAU,SAAAvB,GAAQ,OAAAlB,EAAKrB,mBAAqBuC,KAChF3Y,KAAK+c,YAAY7G,aAAagE,WAAU,SAAAyE,GAAO,OAAAlH,EAAKmH,OAASD,KAC7D3e,KAAK+c,YAAY5H,eAAe+E,WAAU,SAAA2E,GAAO,OAAApH,EAAKzC,SAAW6J,MAanEN,EAAAre,UAAA4e,SAAA,WACE9e,KAAKwe,YAAa,GAGpBD,EAAAre,UAAA6e,OAAA,WACE/e,KAAKwe,YAAcxe,KAAKwe,YAU1BD,EAAAre,UAAA8e,WAAA,SAAWpU,GAEC,IAANA,GACF5K,KAAK4U,OAAOyC,SAAS,CAACzM,8CArCCoN,EAAAA,cAA4BtD,MAe9CtU,EAAA,CAARga,EAAAA,yCAjBUmE,EAAgBne,EAAA,CAL5BuG,EAAAA,UAAU,CACTC,SAAU,eACVC,SAAA,qtGAGW0X,oBCGX,SAAAU,EAAoBC,EAAoBC,EAA8BpC,EAAkCnI,GAAxG,IAAA6C,EAAAzX,KAAoBA,KAAAkf,KAAAA,EAAoBlf,KAAAmf,UAAAA,EAA8Bnf,KAAA+c,YAAAA,EAAkC/c,KAAA4U,OAAAA,EA4DxG5U,KAAAgV,UAAW,EACXhV,KAAAof,UAAY,eACZpf,KAAAqf,UAAW,EACXrf,KAAAsf,SAAkB,KAClBtf,KAAAuf,WAAY,EA9DVvf,KAAK+c,YAAY5H,eAAe+E,WAAU,SAAA2E,GACxCpH,EAAKzC,SAAW6J,KAUhBK,EAAKM,QAAQ,KAEbN,EAAKO,WAAW,IAEhBP,EAAKQ,cAAcC,EAAAA,0BAGnBT,EAAKU,YAAY1F,WAAU,WACzBzC,EAAK2H,UAAY,uBAGnBF,EAAKW,UAAU3F,WAAU,WACvBzC,EAAK2H,UAAY,kBACjB3H,EAAK8H,WAAY,KAGnBL,EAAKY,iBAAiB5F,WAAU,SAAC6F,GAC/BtI,EAAK2H,UAAY,6BAA+BW,EAAY,YAExDtI,EAAKzC,WACPyC,EAAK8H,WAAY,MAKrBL,EAAKc,UAAU9F,WAAU,WACvBzC,EAAK2H,UAAY,aACjB3H,EAAK4H,UAAW,EAGhB5H,EAAKwI,eAQPd,EAAUe,SAAS,IAEnBf,EAAUgB,OAAOjG,WAAU,WACzBzC,EAAK6H,SAAW,IAAItL,QAGtBhU,KAAKogB,aAiCX,OAvBEnB,EAAA/e,UAAA2F,SAAA,aAGAoZ,EAAA/e,UAAAkgB,WAAA,WACEpgB,KAAKkf,KAAKmB,QACVrgB,KAAKof,UAAY,WACjBpf,KAAKqf,UAAW,EAChBrf,KAAKuf,WAAY,GAGnBN,EAAA/e,UAAA+f,UAAA,WACEjgB,KAAKkf,KAAKoB,OACVtgB,KAAKuf,WAAY,EACjBvf,KAAK4U,OAAOyC,SAAS,CAAC,WAGxB4H,EAAA/e,UAAAqgB,MAAA,WAEEvgB,KAAKuf,WAAY,4CArFOiB,EAAAA,YAAyBC,EAAAA,iBAAgC/L,UAA6BsD,EAAAA,UAFrGiH,EAAgB7e,EAAA,CAL5BuG,EAAAA,UAAU,CACTC,SAAU,cACVC,SAAA,62DAGWoY,oBCAX,SAAAyB,IAyBU1gB,KAAA2gB,WAAa,IAAIC,EAAAA,aACjB5gB,KAAA6gB,YAAc,IAAID,EAAAA,aAClB5gB,KAAA8gB,UAAY,IAAIF,EAAAA,aAChB5gB,KAAA+gB,YAAc,IAAIH,EAAAA,aAI5B5gB,KAAAghB,QAAU/X,EAAAA,gBACVjJ,KAAAyD,GAAKgG,EAAAA,SAELzJ,KAAAihB,iBAA6B,GAI7BjhB,KAAAkhB,YAAc,GAgEhB,OArGER,EAAAxgB,UAAA2F,SAAA,WAAA,IAAA4R,EAAAzX,KAGEA,KAAKmhB,OAAOC,QAAQC,SAAQ,SAAAC,GAC1B7J,EAAKwJ,iBAAiBpd,KAAKyd,EAAQhY,SAGrCtJ,KAAKihB,iBAAiBpd,KAAK,UAE3B7D,KAAKuhB,YAAc,UAAU,GAAKvhB,KAAKmhB,OAAOK,QAAQ7gB,OAAM,MAI9D+f,EAAAxgB,UAAAuhB,YAAA,WAEEzhB,KAAK4F,KAAO,IAAI8b,EAAAA,mBAAmB1hB,KAAK4F,MACxC5F,KAAK4F,KAAK+b,UAAY3hB,KAAK4hB,eAC3B5hB,KAAK6hB,YAAY7hB,KAAKkhB,cAqBxBR,EAAAxgB,UAAA2hB,YAAA,SAAYC,GACV9hB,KAAK4F,KAAKmc,OAASD,EAAYE,OAAOC,eAGxCvB,EAAAxgB,UAAAgiB,GAAA,SAAG5Y,EAAMkL,GAEP,IAAInO,EAAO,IAAI8b,GACf9b,EAAKiD,KAAOA,EACZjD,EAAKvE,MAAQ0S,EACbxU,KAAK6gB,YAAYuB,KAAK/b,IAIxBqa,EAAAxgB,UAAAC,OAAA,WACEH,KAAK+gB,YAAYqB,QAGnB1B,EAAAxgB,UAAAmiB,KAAA,WACEriB,KAAK8gB,UAAUsB,QAGjB1B,EAAAxgB,UAAAoiB,KAAA,SAAKC,EAAO9e,EAAclE,GAExB,OAAIkE,GAAMgG,EAAAA,SAASG,MACb2Y,GAAKhjB,EAQPkE,GAAMgG,EAAAA,SAAS+Y,QACbD,EAAIhjB,EAQNkE,GAAMgG,EAAAA,SAASgZ,KACbF,EAAIhjB,EAQNkE,GAAMgG,EAAAA,SAASiZ,SACbH,GAAKhjB,OADX,GAnEOa,EAAA,CAARga,EAAAA,sCACQha,EAAA,CAARga,EAAAA,oCACSha,EAAA,CAATuiB,EAAAA,2CACSviB,EAAA,CAATuiB,EAAAA,4CACSviB,EAAA,CAATuiB,EAAAA,0CACSviB,EAAA,CAATuiB,EAAAA,4CAE4BviB,EAAA,CAA5BwiB,EAAAA,UAAU,wDAhCAlC,EAActgB,EAAA,CAL1BuG,EAAAA,UAAU,CACTC,SAAU,YACVC,SAAA,ooMAGW6Z,oBCCX,SAAAmC,IAOS7iB,KAAA8iB,WAAqB,EACpB9iB,KAAA+iB,UAAY,IAAInC,EAAAA,aAE1B5gB,KAAAgjB,SAAmB,GAkBrB,OA1BEH,EAAA3iB,UAAA2F,SAAA,aAUAgd,EAAA3iB,UAAA+iB,QAAA,SAAQzf,GAEFxD,KAAK8iB,YAGN9iB,KAAKgjB,UAAYxf,EAAE0f,UACpBljB,KAAK+iB,UAAUX,KAAK,IACpBpiB,KAAKgjB,SAAW,KAEhBhjB,KAAK+iB,UAAUX,KAAK5e,EAAE0f,UACtBljB,KAAKgjB,SAAWxf,EAAE0f,YAjBb9iB,EAAA,CAARga,EAAAA,qCAEQha,EAAA,CAARga,EAAAA,yCACSha,EAAA,CAATuiB,EAAAA,0CAVUE,EAAcziB,EAAA,CAL1BuG,EAAAA,UAAU,CACTC,SAAU,YACVC,SAAA,q0DAGWgc,oBCGX,SAAAM,IAMSnjB,KAAAojB,KAAO,IAAIC,EAAAA,YAAY,IAAIrP,MAC3BhU,KAAAuJ,QAAU,GACVvJ,KAAAsjB,UAAW,EAEpBtjB,KAAAujB,aAAc,IAAIvP,MAAOwP,cAChBxjB,KAAAyjB,IAAM,IAAIJ,EAAAA,YAAY,IAAIrP,KAAKhU,KAAKujB,YAAc,GAAI,EAAG,IACzDvjB,KAAA0jB,IAAM,IAAIL,EAAAA,YAAY,IAAIrP,KAAKhU,KAAKujB,YAAc,GAAI,EAAG,IAapE,OAtBEJ,EAAAjjB,UAAA2F,SAAA,aAkBAsd,EAAAjjB,UAAAyjB,cAAA,SAAcrkB,KAfLc,EAAA,CAARga,EAAAA,oCACQha,EAAA,CAARga,EAAAA,uCACQha,EAAA,CAARga,EAAAA,wCAGQha,EAAA,CAARga,EAAAA,mCACQha,EAAA,CAARga,EAAAA,mCAdU+I,EAAa/iB,EAAA,CALzBuG,EAAAA,UAAU,CACTC,SAAU,WACVC,SAAA,oZAGWsc,oBCEX,SAAAS,IA+BA5jB,KAAA6jB,oBAAsB,IAAIR,EAAAA,aAAY,GAE7BrjB,KAAAsjB,UAAW,EACXtjB,KAAA8jB,KAAO,GACP9jB,KAAAuJ,QAAU,GACVvJ,KAAA+jB,YAAc,GACd/jB,KAAA8B,MAAQ,GACP9B,KAAAgkB,YAAc,IAAIpD,EAAAA,aACnB5gB,KAAAikB,OAAS,OAERjkB,KAAAkkB,MAAQ,IAAItD,EAAAA,aACZ5gB,KAAAmkB,WAAa,IAAIvD,EAAAA,aAElB5gB,KAAAokB,KAAO,GACPpkB,KAAAsH,MAAQ,OAIRtH,KAAAqkB,QAAe,GACfrkB,KAAAskB,YAAc,GACdtkB,KAAAukB,cAAgB,GAEzBvkB,KAAAwkB,UAAY,IAAInB,EAAAA,YAqBPrjB,KAAAykB,UAAW,EACXzkB,KAAAyjB,IAAM,EACNzjB,KAAA0jB,IAAM,KACN1jB,KAAA0kB,MAAQ,GAkCjB1kB,KAAA2kB,QAAU,IAAItB,EAAAA,YAAarjB,KAAK8B,MAAO,CAAC8iB,EAAAA,WAAWH,SAAUG,EAAAA,WAAWC,UAAU7kB,KAAKyjB,KAAMmB,EAAAA,WAAWE,UAAU9kB,KAAK0jB,KAAMkB,EAAAA,WAAWG,QAAQ/kB,KAAK0kB,SAoCvJ,OAjJEd,EAAA1jB,UAAA2F,SAAA,WAEK7F,KAAKqkB,QAAQ1jB,OAAS,GACvBX,KAAKglB,aAGiB,IAApBhlB,KAAK+jB,cACP/jB,KAAK+jB,YAAc/jB,KAAKuJ,UAK5Bqa,EAAA1jB,UAAA+kB,gBAAA,WAEMjlB,KAAKsjB,WACPtjB,KAAK2kB,QAAQO,cAAc,MAC3BllB,KAAK2kB,QAAQQ,0BAEVnlB,KAAKykB,UAAazkB,KAAKsjB,WAE1BtjB,KAAK2kB,QAAQO,cAAc,CAACN,EAAAA,WAAWC,UAAU7kB,KAAKyjB,KAAMmB,EAAAA,WAAWE,UAAU9kB,KAAK0jB,KAAMkB,EAAAA,WAAWG,QAAQ/kB,KAAK0kB,SACpH1kB,KAAK2kB,QAAQQ,2BAiCTvB,EAAA1jB,UAAA8kB,WAAR,WAAA,IAAAvN,EAAAzX,KACEA,KAAKolB,gBAAkBplB,KAAKwkB,UAAUa,aAAa3d,KACjD4d,EAAAA,UAAU,IACVC,EAAAA,KAAI,SAACzjB,GAAU,OAAA2V,EAAK+N,QAAQ1jB,QAIxB8hB,EAAA1jB,UAAAslB,QAAR,SAAgB1jB,GAAhB,IAAA2V,EAAAzX,KACQ8hB,EAAchgB,EAAMmgB,cAE1B,OAAOjiB,KAAKqkB,QAAQtC,QAAO,SAAC0D,GAAW,OAAAA,EAAO,GAAGhO,EAAK8M,eAAiBtC,cAAcyD,SAAS5D,OAahG8B,EAAA1jB,UAAAylB,QAAA,WAQE3lB,KAAKgkB,YAAY5B,KAAKpiB,KAAK8B,QAI7B8hB,EAAA1jB,UAAA0lB,SAAA,WAQE5lB,KAAKgkB,YAAY5B,KAAKpiB,KAAKwkB,UAAU1iB,QAIvC8hB,EAAA1jB,UAAA2lB,OAAA,WACE7lB,KAAKkkB,MAAM9B,QAGbwB,EAAA1jB,UAAA4lB,aAAA,WACE9lB,KAAKmkB,WAAW/B,QAKlBwB,EAAA1jB,UAAA6lB,SAAA,WAGE,OAAK/lB,KAAKykB,UAAYzkB,KAAKyjB,IAAM,IAAMzjB,KAAK2kB,QAAQqB,SAAS,YACpD,WAGLhmB,KAAK2kB,QAAQqB,SAAS,aACjB,qBAAqBhmB,KAAKyjB,IAG/BzjB,KAAK2kB,QAAQqB,SAAS,aACjB,qBAAqBhmB,KAAK0jB,IAG/B1jB,KAAK2kB,QAAQqB,SAAS,WACjB,gBAeF,IA/GA5lB,EAAA,CAARga,EAAAA,wCACQha,EAAA,CAARga,EAAAA,oCACQha,EAAA,CAARga,EAAAA,uCACQha,EAAA,CAARga,EAAAA,2CACQha,EAAA,CAARga,EAAAA,qCACSha,EAAA,CAATuiB,EAAAA,4CACQviB,EAAA,CAARga,EAAAA,sCAESha,EAAA,CAATuiB,EAAAA,sCACSviB,EAAA,CAATuiB,EAAAA,2CAEQviB,EAAA,CAARga,EAAAA,oCACQha,EAAA,CAARga,EAAAA,qCAIQha,EAAA,CAARga,EAAAA,uCACQha,EAAA,CAARga,EAAAA,2CACQha,EAAA,CAARga,EAAAA,6CAuBQha,EAAA,CAARga,EAAAA,wCACQha,EAAA,CAARga,EAAAA,mCACQha,EAAA,CAARga,EAAAA,mCACQha,EAAA,CAARga,EAAAA,qCA/EUwJ,EAAaxjB,EAAA,CALzBuG,EAAAA,UAAU,CACTC,SAAU,WACVC,SAAA,g/DAGW+c,oBCGX,SAAAqC,EAAoBpR,EAA0DjP,GAA1D5F,KAAA6U,YAAAA,EAA0D7U,KAAA4F,KAAAA,EAY9E5F,KAAAkmB,cAAwB,EAGxBlmB,KAAAmmB,UAAY,IAAIxmB,MAEhBK,KAAAomB,UAAY,EAEZpmB,KAAAqmB,eAAiB,GAyCjBrmB,KAAAsmB,UAAW,EAsBb,OAhFEL,EAAA/lB,UAAA2F,SAAA,WAEE7F,KAAKmmB,UAAYnmB,KAAK4F,KAAKugB,UAC3BnmB,KAAKumB,KAAOvmB,KAAK4F,KAAK2gB,KACtBvmB,KAAKoI,SAAWpI,KAAK4F,KAAKwC,SAC1BpI,KAAKomB,UAAYpmB,KAAK4F,KAAKugB,UAAUhJ,QAAQnd,KAAKoI,UAClDpI,KAAKwmB,UAcPP,EAAA/lB,UAAAumB,SAAA,WAE+B,GAAzBzmB,KAAKmmB,UAAUxlB,SAIfX,KAAKomB,UAAW,GAAK,EAEvBpmB,KAAKomB,UAAYpmB,KAAKomB,UAAY,EAET,GAAlBpmB,KAAKomB,YAEZpmB,KAAKomB,UAAYpmB,KAAKmmB,UAAUxlB,OAAQ,GAG1CX,KAAKwmB,WAIPP,EAAA/lB,UAAA8B,KAAA,WAE+B,GAAzBhC,KAAKmmB,UAAUxlB,SAIfX,KAAKomB,UAAW,EAAIpmB,KAAKmmB,UAAUxlB,OAErCX,KAAKomB,UAAYpmB,KAAKomB,UAAY,EAE3BpmB,KAAKomB,UAAW,EAAIpmB,KAAKmmB,UAAUxlB,OAAQ,IAElDX,KAAKomB,UAAY,GAGnBpmB,KAAKwmB,WAKPP,EAAA/lB,UAAAsmB,OAAA,WAGExmB,KAAKqmB,eAAiB,GAAGrmB,KAAK6U,YAAY6R,OAAOzS,QAAQ,QAAS,KAAOjU,KAAKumB,KAAKtS,QAAQ,KAAM,KAAI,IAAIjU,KAAKmmB,UAAUnmB,KAAKomB,WAEzHpmB,KAAKqmB,eAAezP,oBAAoB+P,SAAS,SAAW3mB,KAAKqmB,eAAezP,oBAAoB+P,SAAS,SAAW3mB,KAAKqmB,eAAezP,oBAAoB+P,SAAS,SAC3K3mB,KAAKsmB,UAAW,GAEhBtmB,KAAKsmB,UAAW,EAChBM,OAAOzf,KAAKnH,KAAKqmB,eAAgB,YAMrCJ,EAAA/lB,UAAA2mB,OAAA,SAAOze,GAELpI,KAAKomB,UAAYpmB,KAAKmmB,UAAUhJ,QAAQ/U,GACxCpI,KAAKwmB,mDA/E0BvO,EAAAA,4CAAczR,EAAAA,OAAMC,KAAA,CAACC,EAAAA,sBAF3Cuf,EAAY7lB,EAAA,CALxBuG,EAAAA,UAAU,CACTC,SAAU,kBACVC,SAAA,qqCAK+C3F,EAAA,EAAAsF,EAAAA,OAAOE,EAAAA,mBAF3Cuf,oBCAX,SAAAa,EAAmB9f,GAAAhH,KAAAgH,OAAAA,EAOVhH,KAAA+mB,IAAM,GACN/mB,KAAAgnB,WAAW,GACXhnB,KAAAmmB,UAAY,IAAIxmB,MAChBK,KAAAinB,WAAY,EACXjnB,KAAAknB,OAAS,IAAItG,EAAAA,aACd5gB,KAAAuJ,QAAU,YACVvJ,KAAAmnB,MAAQ,YA2BnB,OAtCEL,EAAA5mB,UAAA2F,SAAA,aAgBAihB,EAAA5mB,UAAAknB,SAAA,SAAShf,GAEP,GAAuB,iBAAZA,EAOOpI,KAAKgH,OAAOG,KAAK8e,GAAc,CAC/CoB,SAAU,SACVC,SAAU,OAEV1hB,KAAM,CAAEugB,UAAWnmB,KAAKmmB,UAAW/d,SAAUA,EAAUme,KAAQvmB,KAAK+mB,IAAG,IAAI/mB,KAAKgnB,eAKpFF,EAAA5mB,UAAAqnB,QAAA,SAAQvmB,GACNhB,KAAKknB,OAAO9E,KAAKphB,6CArCQ8G,EAAAA,aAOlB1H,EAAA,CAARga,EAAAA,mCACQha,EAAA,CAARga,EAAAA,0CACQha,EAAA,CAARga,EAAAA,yCACQha,EAAA,CAARga,EAAAA,yCACSha,EAAA,CAATuiB,EAAAA,uCACQviB,EAAA,CAARga,EAAAA,uCACQha,EAAA,CAARga,EAAAA,qCAfU0M,EAAe1mB,EAAA,CAL3BuG,EAAAA,UAAU,CACTC,SAAU,aACVC,SAAA,qoBAGWigB,oBCAX,SAAAU,IAkBSxnB,KAAAsH,MAAQ,OACRtH,KAAAsjB,UAAW,EACXtjB,KAAAynB,aAAe,GACfznB,KAAA8jB,KAAO,GAGP9jB,KAAAuJ,QAAU,GACVvJ,KAAA8B,MAAQ,GAER9B,KAAAskB,YAAc,GACdtkB,KAAAukB,cAAgB,GAChBvkB,KAAA0nB,mBAAqB,GAEpB1nB,KAAAgkB,YAAc,IAAIpD,EAAAA,aAa9B,OA1CE4G,EAAAtnB,UAAA2F,SAAA,aAMA2hB,EAAAtnB,UAAAuhB,YAAA,WAAA,IAAAhK,EAAAzX,KAE2B,IAArBA,KAAKynB,cAAsBznB,KAAKqkB,QAAQ1jB,OAAS,IACnDX,KAAK2nB,aAAe3nB,KAAKqkB,QAAQtC,QAAO,SAAC9d,GAAM,OAAAA,EAAE,GAAGwT,EAAK6M,cAAkB7M,EAAK3V,SAAO,GAAG,GAAG9B,KAAKukB,iBAwBtGiD,EAAAtnB,UAAAylB,QAAA,WACE3lB,KAAKgkB,YAAY5B,KAAKpiB,KAAK8B,QAI7B0lB,EAAAtnB,UAAA0nB,cAAA,aAtBSxnB,EAAA,CAARga,EAAAA,qCACQha,EAAA,CAARga,EAAAA,wCACQha,EAAA,CAARga,EAAAA,4CACQha,EAAA,CAARga,EAAAA,oCAGQha,EAAA,CAARga,EAAAA,uCACQha,EAAA,CAARga,EAAAA,qCACQha,EAAA,CAARga,EAAAA,uCACQha,EAAA,CAARga,EAAAA,2CACQha,EAAA,CAARga,EAAAA,6CACQha,EAAA,CAARga,EAAAA,kDAESha,EAAA,CAATuiB,EAAAA,4CAjCU6E,EAAepnB,EAAA,CAL3BuG,EAAAA,UAAU,CACTC,SAAU,aACVC,SAAA,i0BAGW2gB,oBCGX,SAAAK,IAKS7nB,KAAAsjB,UAAW,EACXtjB,KAAAuJ,QAAU,GACVvJ,KAAA8B,OAAQ,EACP9B,KAAAgkB,YAAc,IAAIpD,EAAAA,aAClB5gB,KAAA8nB,MAAQ,IAAIlH,EAAAA,aACZ5gB,KAAA+nB,MAAQ,IAAInH,EAAAA,aACZ5gB,KAAAgoB,QAAU,IAAIpH,EAAAA,aAuB1B,OAhCEiH,EAAA3nB,UAAA2F,SAAA,aAWAgiB,EAAA3nB,UAAAylB,QAAA,WACE3lB,KAAKgkB,YAAY5B,KAAKpiB,KAAK8B,QAG7B+lB,EAAA3nB,UAAA+iB,QAAA,WACEjjB,KAAK8nB,MAAM1F,OAEPpiB,KAAK8B,MAGP9B,KAAKioB,YAFLjoB,KAAKkoB,WAMTL,EAAA3nB,UAAAgoB,QAAA,WACEloB,KAAK+nB,MAAM3F,QAEbyF,EAAA3nB,UAAA+nB,UAAA,WACEjoB,KAAKgoB,QAAQ5F,QA1BNhiB,EAAA,CAARga,EAAAA,wCACQha,EAAA,CAARga,EAAAA,uCACQha,EAAA,CAARga,EAAAA,qCACSha,EAAA,CAATuiB,EAAAA,4CACSviB,EAAA,CAATuiB,EAAAA,sCACSviB,EAAA,CAATuiB,EAAAA,sCACSviB,EAAA,CAATuiB,EAAAA,wCAbUkF,EAAcznB,EAAA,CAL1BuG,EAAAA,UAAU,CACTC,SAAU,YACVC,SAAA,4MAGWghB,oBCEX,SAAAM,IAKSnoB,KAAAooB,QAAU,2BACVpoB,KAAAqoB,MAAe,GACdroB,KAAAsoB,YAAc,IAAI1H,EAAAA,aAClB5gB,KAAAuoB,OAAS,IAAI3H,EAAAA,aAGd5gB,KAAAwoB,cAAe,EAgF1B,OAzFEL,EAAAjoB,UAAA2F,SAAA,aAeAsiB,EAAAjoB,UAAAuoB,cAAA,SAAcC,GACZ1oB,KAAK2oB,iBAAiBD,IAMxBP,EAAAjoB,UAAA0oB,kBAAA,SAAkBP,GAChBroB,KAAK2oB,iBAAiBN,IAOxBF,EAAAjoB,UAAA2oB,WAAA,SAAWC,GACT9oB,KAAKqoB,MAAMjL,OAAO0L,EAAO,IA2B3BX,EAAAjoB,UAAAyoB,iBAAA,SAAiBN,eACf,IAAmB,IAAAU,EAAAjlB,EAAAukB,GAAKW,EAAAD,EAAA/mB,QAAAgnB,EAAA5mB,KAAA4mB,EAAAD,EAAA/mB,OAAE,CAArB,IAAMwS,EAAIwU,EAAAlnB,MACb0S,EAAKyU,SAAW,EAChBjpB,KAAKqoB,MAAMxkB,KAAK2Q,uGAUpB2T,EAAAjoB,UAAAgpB,YAAA,SAAYC,EAAOC,GACjB,GAAc,IAAVD,EACF,MAAO,UAET,IACME,EAAKD,GAAY,EAAI,EAAIA,GAAY,EAErCpoB,EAAIsoB,KAAKC,MAAMD,KAAK1V,IAAIuV,GAASG,KAAK1V,IAHlC,OAIV,OAAO4V,YAAYL,EAAQG,KAAKG,IAJtB,KAI6BzoB,IAAI0oB,QAAQL,IAAO,IAF5C,CAAC,QAAS,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAEIroB,IAGxEmnB,EAAAjoB,UAAAypB,SAAA,WACE3pB,KAAKuoB,OAAOnG,QAGd+F,EAAAjoB,UAAA0pB,aAAA,WACE5pB,KAAKsoB,YAAYlG,KAAKpiB,KAAKqoB,QApFpBjoB,EAAA,CAARga,EAAAA,uCACQha,EAAA,CAARga,EAAAA,qCACSha,EAAA,CAATuiB,EAAAA,4CACSviB,EAAA,CAATuiB,EAAAA,uCAGQviB,EAAA,CAARga,EAAAA,4CAbU+N,EAAe/nB,EAAA,CAL3BuG,EAAAA,UAAU,CACTC,SAAU,aACVC,SAAA,i3HAGWshB,oBCCX,SAAA0B,IAKS7pB,KAAAuJ,QAAU,GACVvJ,KAAA8B,MAAQ,GACP9B,KAAAgkB,YAAc,IAAIpD,EAAAA,aACnB5gB,KAAAsjB,UAAW,EAEXtjB,KAAAyjB,IAAM,cAENzjB,KAAA0jB,IAAM,cAMjB,OAhBEmG,EAAA3pB,UAAA2F,SAAA,aAYAgkB,EAAA3pB,UAAAylB,QAAA,WACE3lB,KAAKgkB,YAAY5B,KAAKpiB,KAAK8B,QAVpB1B,EAAA,CAARga,EAAAA,uCACQha,EAAA,CAARga,EAAAA,qCACSha,EAAA,CAATuiB,EAAAA,4CACQviB,EAAA,CAARga,EAAAA,wCAEQha,EAAA,CAARga,EAAAA,mCAEQha,EAAA,CAARga,EAAAA,mCAdUyP,EAAiBzpB,EAAA,CAL7BuG,EAAAA,UAAU,CACTC,SAAU,eACVC,SAAA,sTAGWgjB,oBCIX,SAAAC,IAWS9pB,KAAAsjB,UAAW,EACXtjB,KAAAuJ,QAAU,GACVvJ,KAAA8B,MAAQ,GACP9B,KAAAgkB,YAAc,IAAIpD,EAAAA,aAEnB5gB,KAAAsH,MAAQ,OACRtH,KAAA8jB,KAAO,GACP9jB,KAAA+pB,SAAW,IAatB,OA7BED,EAAA5pB,UAAA2F,SAAA,aAKAikB,EAAA5pB,UAAAuhB,YAAA,aAiBAqI,EAAA5pB,UAAAylB,QAAA,WAEE3lB,KAAKgkB,YAAY5B,KAAKpiB,KAAK8B,QAfpB1B,EAAA,CAARga,EAAAA,wCACQha,EAAA,CAARga,EAAAA,uCACQha,EAAA,CAARga,EAAAA,qCACSha,EAAA,CAATuiB,EAAAA,4CAEQviB,EAAA,CAARga,EAAAA,qCACQha,EAAA,CAARga,EAAAA,oCACQha,EAAA,CAARga,EAAAA,wCApBU0P,EAAc1pB,EAAA,CAL1BuG,EAAAA,UAAU,CACTC,SAAU,YACVC,SAAA,0xBAGWijB,oBCGb,SAAAE,IAEYhqB,KAAAiqB,YAAc,IAAIrJ,EAAAA,aA0B9B,OAvBwCoJ,EAAA9pB,UAAAgqB,WAAA,SAAWC,GAC/CA,EAAIC,iBACJD,EAAIE,kBACJrqB,KAAKsqB,UAAW,GAI4BN,EAAA9pB,UAAAqqB,YAAP,SAAmBJ,GACxDA,EAAIC,iBACJD,EAAIE,kBACJrqB,KAAKsqB,UAAW,GAIuBN,EAAA9pB,UAAAsqB,OAAP,SAAcL,GAC9CA,EAAIC,iBACJD,EAAIE,kBACJrqB,KAAKsqB,UAAW,EAChB,IAAIjC,EAAQ8B,EAAIM,aAAapC,MACzBA,EAAM1nB,OAAS,GACjBX,KAAKiqB,YAAY7H,KAAKiG,IAxBKjoB,EAAA,CAA9BsqB,EAAAA,YAAY,kDACHtqB,EAAA,CAATuiB,EAAAA,4CAGqCviB,EAAA,CAArCuqB,EAAAA,aAAa,WAAY,CAAC,2CAOYvqB,EAAA,CAAtCuqB,EAAAA,aAAa,YAAa,CAAC,4CAOMvqB,EAAA,CAAjCuqB,EAAAA,aAAa,OAAQ,CAAC,uCAnBZX,EAAY5pB,EAAA,CAHxBwqB,EAAAA,UAAU,CACThkB,SAAU,cAECojB,oBCHX,SAAAa,EAAoB/V,GAAA9U,KAAA8U,eAAAA,EAOX9U,KAAA6K,KAAO,GACP7K,KAAAinB,WAAY,EACZjnB,KAAA8qB,SAAU,EAOT9qB,KAAA8nB,MAAQ,IAAIlH,EAAAA,aAEZ5gB,KAAAknB,OAAS,IAAItG,EAAAA,aAkCzB,OAjDEiK,EAAA3qB,UAAA2F,SAAA,aAiBAglB,EAAA3qB,UAAA+iB,QAAA,SAAQ8H,GAEN5W,QAAQP,IAAI,iBAAmBmX,GAEZ,iBAARA,GAIPA,GACF/qB,KAAK8nB,MAAM1F,KAAK2I,IAKpBF,EAAA3qB,UAAAqnB,QAAA,SAAQwD,GAAR,IAAAtT,EAAAzX,KAQEA,KAAK8U,eAAetN,QAAQ,UAAUujB,EAAI,MAAM7Q,WAAU,SAAC/X,GAC3C,OAAVA,GAEFsV,EAAKyP,OAAO9E,KAAK2I,gDA7CajkB,KAO3B1G,EAAA,CAARga,EAAAA,oCACQha,EAAA,CAARga,EAAAA,yCACQha,EAAA,CAARga,EAAAA,uCAIQha,EAAA,CAARga,EAAAA,qCAGSha,EAAA,CAATuiB,EAAAA,sCAESviB,EAAA,CAATuiB,EAAAA,uCApBUkI,EAAczqB,EAAA,CAL1BuG,EAAAA,UAAU,CACTC,SAAU,YACVC,SAAA,wqBAGWgkB,oBCEX,SAAAG,IAKShrB,KAAAirB,MAAQ,IAAItrB,MACrBK,KAAAkrB,aAAuB,QACdlrB,KAAAmnB,MAAQ,QAEnB,OAPE6D,EAAA9qB,UAAA2F,SAAA,aAGSzF,EAAA,CAARga,EAAAA,qCAEQha,EAAA,CAARga,EAAAA,qCATU4Q,EAAiB5qB,EAAA,CAL7BuG,EAAAA,UAAU,CACTC,SAAU,eACVC,SAAA,kgCAGWmkB,oBCGX,SAAAG,IAKSnrB,KAAA8B,MAAQ,GACP9B,KAAAgkB,YAAc,IAAIpD,EAAAA,aACnB5gB,KAAAsjB,UAAW,EAYXtjB,KAAAmhB,OAA8B,CACrCiK,UAAU,EACVC,YAAY,EACZC,OAAQ,OACRC,UAAW,OACXxH,YAAa,qBACbyH,UAAW,KACXC,0BAA2B,GAC3BC,gBAAiB,QACjBC,qBAAsB,CACpB,CACE,OACA,SACA,YACA,gBACA,YACA,cACA,cACA,gBACA,eACA,cACA,SACA,UACA,sBACA,oBACA,UACA,YAEF,CACE,WACA,YACA,kBACA,gBACA,OACA,SACA,cACA,cACA,uBACA,eACA,qBAGJC,cAAe,CACb,CACEtiB,KAAM,QACNuiB,MAAO,SAET,CACEviB,KAAM,UACNuiB,MAAO,WAET,CACEviB,KAAM,YACNuiB,MAAO,YACPC,IAAK,QAKb,OA5EEX,EAAAjrB,UAAA2F,SAAA,aAOAslB,EAAAjrB,UAAAylB,QAAA,WACE3lB,KAAKgkB,YAAY5B,KAAKpiB,KAAK8B,QAG7BqpB,EAAAjrB,UAAAuhB,YAAA,WAEEzhB,KAAKmhB,OAAOiK,UAAYprB,KAAKsjB,UAVtBljB,EAAA,CAARga,EAAAA,qCACSha,EAAA,CAATuiB,EAAAA,4CACQviB,EAAA,CAARga,EAAAA,wCAYQha,EAAA,CAARga,EAAAA,sCArBU+Q,EAAa/qB,EAAA,CALzBuG,EAAAA,UAAU,CACTC,SAAU,WACVC,SAAA,2HAGWskB,oBCCX,SAAAY,IAQS/rB,KAAAskB,YAAc,GACdtkB,KAAAukB,cAAgB,GAChBvkB,KAAAsjB,UAAW,EAEXtjB,KAAA8B,MAAQ,GACR9B,KAAAuJ,QAAU,GACVvJ,KAAAgsB,MAAgB,EAGfhsB,KAAAgkB,YAAc,IAAIpD,EAAAA,aAClB5gB,KAAAmkB,WAAa,IAAIvD,EAAAA,aAgB7B,OAhCEmL,EAAA7rB,UAAA2F,SAAA,aAkBAkmB,EAAA7rB,UAAAylB,QAAA,WACE3lB,KAAKgkB,YAAY5B,KAAKpiB,KAAK8B,QAG7BiqB,EAAA7rB,UAAA4lB,aAAA,WACE9lB,KAAKgkB,YAAY5B,QAGnB2J,EAAA7rB,UAAA+rB,WAAA,WACEjsB,KAAK8B,MAAQ,GACb9B,KAAK2lB,WAvBEvlB,EAAA,CAARga,EAAAA,uCACQha,EAAA,CAARga,EAAAA,2CACQha,EAAA,CAARga,EAAAA,6CACQha,EAAA,CAARga,EAAAA,wCAEQha,EAAA,CAARga,EAAAA,qCACQha,EAAA,CAARga,EAAAA,uCACQha,EAAA,CAARga,EAAAA,oCAGSha,EAAA,CAATuiB,EAAAA,4CACSviB,EAAA,CAATuiB,EAAAA,2CApBUoJ,EAAe3rB,EAAA,CAL3BuG,EAAAA,UAAU,CACTC,SAAU,aACVC,SAAA,6oCAGWklB,oBCEX,SAAAG,IAKSlsB,KAAAuJ,QAAU,GACVvJ,KAAA8B,MAAQ,GACR9B,KAAAikB,OAAS,OAEpB,OAPEiI,EAAAhsB,UAAA2F,SAAA,aAGSzF,EAAA,CAARga,EAAAA,uCACQha,EAAA,CAARga,EAAAA,qCACQha,EAAA,CAARga,EAAAA,sCATU8R,EAAc9rB,EAAA,CAL1BuG,EAAAA,UAAU,CACTC,SAAU,YACVC,SAAA,irBAGWqlB,SCGkC,CAAEC,6BAA6B,iBAK5E,SAAAC,IAgBSpsB,KAAA8B,MAAQ,GA0FnB,OAxGEsqB,EAAAlsB,UAAA2F,SAAA,aAIAumB,EAAAlsB,UAAA+kB,gBAAA,aAIAmH,EAAAlsB,UAAAuhB,YAAA,WAEEzhB,KAAKqsB,aAOPD,EAAAlsB,UAAAosB,WAAA,WAEE,GAAkB,IAAdtsB,KAAK8B,MAOT,OAFA9B,KAAKusB,QAAQC,cAAgB,EAErBxsB,KAAK8B,OAIX,IAAK,QACH9B,KAAKusB,QAAQC,cAAgB,EAC7B,MAEF,IAAK,gBACHxsB,KAAKysB,YAAY,GACjB,MAEF,IAAK,cACHzsB,KAAKysB,YAAY,GACjB,MAEF,IAAK,UACHzsB,KAAKysB,YAAY,GACjB,MAEF,IAAK,eACHzsB,KAAKysB,YAAY,GACjB,MAEF,IAAK,SACHzsB,KAAKysB,YAAY,GACjB,MAEF,IAAK,eACHzsB,KAAKysB,YAAY,GACjB,MAEF,IAAK,iBACHzsB,KAAKysB,YAAY,KAOvBL,EAAAlsB,UAAAusB,YAAA,SAAYC,GAEV,IAAK,IAAI5D,EAAQ,EAAGA,EAAQ4D,EAAQ,EAAG5D,IAErC9oB,KAAKusB,QAAQC,cAAgB1D,GAOjCsD,EAAAlsB,UAAAmsB,UAAA,mBAEE,GAAwB,GAArBrsB,KAAK2sB,MAAMhsB,QACI,IAAdX,KAAK8B,MAAT,CACA9B,KAAKusB,QAAQC,cAAgB,EAG7B,IAAIxrB,EAAI,MAER,IAAiB,IAAA4rB,EAAA9oB,EAAA9D,KAAK2sB,OAAKE,EAAAD,EAAA5qB,QAAA6qB,EAAAzqB,KAAAyqB,EAAAD,EAAA5qB,OAAE,CAE3B,GAFW6qB,EAAA/qB,MAEFwH,MAAQtJ,KAAK8B,MAKf,CAEL9B,KAAKusB,QAAQC,cAAgBxrB,EAE7B,MAPAhB,KAAKusB,QAAQC,cAAgBxrB,EAC7BA,yGA9EgBZ,EAAA,CAArBwiB,EAAAA,UAAU,0CACFxiB,EAAA,CAARga,EAAAA,qCACQha,EAAA,CAARga,EAAAA,qCAnBUgS,EAAchsB,EAAA,CAR1BuG,EAAAA,UAAU,CACTC,SAAU,YACVC,SAAA,23CAEA2V,UAAW,CAAC,CACVC,QAASqQ,EAAAA,uBAAwBnQ,SAAQoQ,6UAGhCX,oBCiFb,SAAAY,KAA2B,OAAdA,EAAY5sB,EAAA,CAzDxBoa,EAAAA,SAAS,CACRC,aAAc,CAACuP,GAAa1L,GAAiB5Y,EAAe6Y,GAAkBvE,GAC5EiF,GAAkByB,GAAgBmC,GAAgBM,GAAeS,GACjEkD,GAAiBU,GAAiBK,GAAgBM,GAAiB0B,GACnEC,GACAe,GACAG,GAAmB/E,GAAckF,GAAeY,GAAiBG,GAAgBE,IAEnFa,gBAAiB,CAACvnB,GAElBgV,QAAS,CACPI,EAAAA,oBAAoBoS,WAAW,CAAEC,6BAA8B,UAC/DvS,EAAAA,aACAC,EAAAA,YACAC,EAAAA,oBACAP,GACA6S,EAAAA,aACAC,EAAAA,mBACAC,EAAAA,oBAEAC,EAAAA,sBAAsBC,WAGxB7S,QAAS,CACPC,EAAAA,aACAC,EAAAA,YACAN,GACA+D,GACA5Y,EACA6Y,GACAvE,GACAiF,GACAyB,GACAmC,GACAM,GACA2D,GACAU,GACA5D,GACAiG,GACAhC,GACAM,GACA2B,GACAe,GACAG,GACAG,GACAY,GACAG,GACAE,IAIF5P,UAAW,CAET,CAAEC,QAASgR,EAAAA,kBAAmBC,SAAU5Q,GAAmB6Q,OAAO,GAClE,CAAElR,QAASmR,EAAAA,iBAAkBF,SAAUG,EAAAA,0BAG9Bb,oBCpEX,SAAAc,EACUjZ,EACAkZ,EACDnZ,EACCE,EACAkZ,EACDjR,EACChI,GANA/U,KAAA6U,YAAAA,EACA7U,KAAA+tB,eAAAA,EACD/tB,KAAA4U,OAAAA,EACC5U,KAAA8U,eAAAA,EACA9U,KAAAguB,YAAAA,EACDhuB,KAAA+c,YAAAA,EACC/c,KAAA+U,WAAAA,EAGH/U,KAAA2Y,KAAO,IAAIsV,GAClBjuB,KAAAkuB,MAAO,EACPluB,KAAAkmB,cAAwB,EASflmB,KAAAye,UAAY,IAAIC,GA8F3B,OApGEoP,EAAA5tB,UAAA2F,SAAA,WACE7F,KAAK+c,YAAY1G,gBAAe,GAChCrW,KAAK+c,YAAYhG,WAAW,MAC5B/W,KAAK+tB,eAAetoB,SAKfqoB,EAAA5tB,UAAAiuB,OAAP,WACEnuB,KAAK4U,OAAOyC,SAAS,CAAC,YAGjByW,EAAA5tB,UAAAkuB,eAAP,WACEpuB,KAAK4U,OAAOyC,SAAS,CAAC,qBAGjByW,EAAA5tB,UAAA4Y,MAAP,WAAA,IAAArB,EAAAzX,KAE0B,IAApBA,KAAK2Y,KAAKvH,QAAsC,IAAtBpR,KAAK2Y,KAAKtH,UAMxCrR,KAAK+U,WAAW1N,KAAK,cAErBrH,KAAKkmB,cAAe,EAEpBlmB,KAAKguB,YAAYlV,MAAM9Y,KAAK2Y,MAAMuB,WAChC,SAACmU,GAGC,GAFA5W,EAAKyO,cAAe,EAEO,WAAvBmI,EAAYjG,QAAsB,CAGpC,GAA4C,SAAxCiG,EAAYC,GAAGC,OAAO,GAAa,WAAiB9W,EAAKgH,UAAUpU,UAErE,YADAoN,EAAK3C,eAAe7N,MAAM,4CAI5B,GAA4C,MAAxConB,EAAYC,GAAGC,OAAO,GAAa,WAAc9W,EAAKgH,UAAUrU,OAElE,YADAqN,EAAK3C,eAAe7N,MAAM,4CAK5BwQ,EAAKsF,YAAY1G,gBAAe,GAEhCoB,EAAKsF,YAAYzG,YAAY+X,EAAYC,GAAGC,OAAO,GAAU,OAC7D9W,EAAKsW,eAAexpB,MAAMmT,EAAAA,UAAUI,WAAYuW,EAAYC,GAAGC,OAAO,GAAU,OAEhF9W,EAAKsF,YAAYvG,kBAAkB6X,EAAYC,GAAGC,OAAO,GAAgB,aACzE9W,EAAKsW,eAAexpB,MAAMmT,EAAAA,UAAUK,kBAAmBsW,EAAYC,GAAGC,OAAO,GAAgB,aAE7F9W,EAAKsF,YAAYrG,kBAAkBe,EAAKkB,KAAKvH,QAC7CqG,EAAKsW,eAAexpB,MAAMmT,EAAAA,UAAUC,UAAWF,EAAKkB,KAAKvH,QAEzDqG,EAAKsF,YAAY9F,yBAA0BoX,EAAYC,GAAGE,UAAU,GAAc,WAClF/W,EAAKsW,eAAexpB,MAAMmT,EAAAA,UAAUE,UAAWyW,EAAYC,GAAGE,UAAU,GAAc,WAGtF/W,EAAKsF,YAAYhG,WAAWsX,EAAYC,GAAGG,OAAO,IAClDhX,EAAKsW,eAAexpB,MAAMmT,EAAAA,UAAUG,WAAYjT,KAAKC,UAAUwpB,EAAYC,GAAGG,OAAO,KAKnC,KAA9CJ,EAAYC,GAAGC,OAAO,GAAmB,gBAC3C9W,EAAK7C,OAAOyC,SAAS,CAAC,SAEtBI,EAAK1C,WAAW1N,KAAK,cAErBoQ,EAAK7C,OAAOyC,SAAS,CAAC,mCAIxBI,EAAK3C,eAAe7N,MAAM,UAAYonB,EAAYjG,SAClD3Q,EAAKkB,KAAKtH,SAAW,MAGzB,SAAC9J,GACCkQ,EAAKyO,cAAe,EAEpBzO,EAAK3C,eAAe7N,MAAMwQ,EAAK5C,YAAYpB,MAAMlM,QAhEnDvH,KAAK8U,eAAe7N,MAAM,kCAqE9B6mB,EAAA5tB,UAAAwuB,QAAA,SAAQ5jB,GAAR,IAAA2M,EAAAzX,KACEA,KAAKguB,YACF5U,QAAQ,KAAMtO,GACdoP,WAAU,SAACmU,GACV5W,EAAKsF,YAAYhG,WAAWsX,EAAYM,GAAG,IAE3ClX,EAAKsW,eAAexpB,MAClBmT,EAAAA,UAAUG,WACVjT,KAAKC,UAAUwpB,EAAYM,GAAG,kDA9Gf1W,EAAAA,mBACG3T,SACT0T,EAAAA,cACSlR,SACHoR,UACDxD,UACA9B,MAMbxS,EAAA,CAARga,EAAAA,sCAQQha,EAAA,CAARga,EAAAA,yCAtBU0T,EAAc1tB,EAAA,CAL1BuG,EAAAA,UAAU,CACTC,SAAU,YACVC,SAAA,ixGAGWinB,oBCVX,SAAAc,EAAoB/Z,EAAkCC,EAAwCkZ,EAAkCjR,GAA5G/c,KAAA6U,YAAAA,EAAkC7U,KAAA8U,eAAAA,EAAwC9U,KAAAguB,YAAAA,EAAkChuB,KAAA+c,YAAAA,EAQhI/c,KAAAkmB,cAAwB,EACxBlmB,KAAA2Y,KAAO,IAAIsV,GACXjuB,KAAAyZ,QAAU,IAAIoV,GAEd7uB,KAAAsZ,QAAU,IAAIwV,GAiChB,OA3CEF,EAAA1uB,UAAA2F,SAAA,WAEE7F,KAAKsZ,QAAQX,KAAO3Y,KAAK2Y,KACzB3Y,KAAKsZ,QAAQG,QAAUzZ,KAAKyZ,SAYhCmV,EAAA1uB,UAAAC,OAAA,WAAA,IAAAsX,EAAAzX,KAEEA,KAAKyZ,QAAQrI,OAASpR,KAAK2Y,KAAKvH,OAEhCpR,KAAKkmB,cAAe,EAClBlmB,KAAKguB,YAAY3U,cAAcrZ,KAAKsZ,QAAQ,OAAOY,WACjD,SAACmU,GACC5W,EAAKyO,cAAe,EAEO,WAAvBmI,EAAYjG,SACd3Q,EAAK3C,eAAe7N,MAAM,mBAE1BwQ,EAAKkB,KAAO,IAAIsV,GAChBxW,EAAKgC,QAAU,IAAIoV,IAGnBpX,EAAK3C,eAAe7N,MAAM,UAAYonB,EAAYjG,YAGtD,SAAC7gB,GACCkQ,EAAKyO,cAAe,EACpBzO,EAAK3C,eAAe7N,MAAMwQ,EAAK5C,YAAYpB,MAAMlM,iDAtCtB0Q,EAAAA,mBAAqCnR,SAAqCoR,UAAkCxD,MAHlIka,EAAexuB,EAAA,CAL3BuG,EAAAA,UAAU,CACTC,SAAU,aACVC,SAAA,2lEAGW+nB,oBCGX,SAAAG,EAAoBC,EAA4BhB,EAAiCjR,EAAkCjI,GAA/F9U,KAAAgvB,SAAAA,EAA4BhvB,KAAAguB,YAAAA,EAAiChuB,KAAA+c,YAAAA,EAAkC/c,KAAA8U,eAAAA,EAKnH9U,KAAAoR,OAAiB,GAyBnB,OA5BE2d,EAAA7uB,UAAA2F,SAAA,aAKAkpB,EAAA7uB,UAAA+uB,QAAA,WAAA,IAAAxX,EAAAzX,KAGE,GAAmB,IAAfA,KAAKoR,OAAT,CAKE,IAAI2H,EAAI,IAAIkV,GACZlV,EAAE3H,OAASpR,KAAKoR,OAEhBpR,KAAKguB,YAAY9U,UAAUH,GAAGmB,WAAU,SAACmU,GACZ,WAAvBA,EAAYjG,SACd3Q,EAAK3C,eAAe7N,MAAM,4CAC1BwQ,EAAKuX,SAASE,QAEdzX,EAAK3C,eAAe7N,MAAM,UAAYonB,EAAYjG,iBAXtDpoB,KAAK8U,eAAe7N,MAAM,sEAZAkoB,EAAAA,gBAA+BjX,UAAiCxD,UAAqC5N,KAFxHioB,EAAuB3uB,EAAA,CALnCuG,EAAAA,UAAU,CACTC,SAAU,sBACVC,SAAA,6sBAGWkoB,oBCiBb,SAAAK,KAA6B,OAAhBA,EAAchvB,EAAA,CAtB1Boa,EAAAA,SAAS,CACRC,aAAc,CAACqT,GAAgBc,GAAiBG,IAEhD9B,gBAAiB,GAEjBvS,QAAS,CACPI,EAAAA,oBAAoBoS,WAAW,CAAEC,6BAA8B,UAC/DvS,EAAAA,aACAC,EAAAA,YACAC,EAAAA,oBACAP,IAGFI,QAAS,CACPC,EAAAA,aACAC,EAAAA,YACAN,GACAuT,GACAc,GACAG,OAGSK,oBCdX,SAAAC,EAAoBL,EAA4Bna,EAAiCC,EAAwCkZ,EAAkCjR,GAAvI/c,KAAAgvB,SAAAA,EAA4BhvB,KAAA6U,YAAAA,EAAiC7U,KAAA8U,eAAAA,EAAwC9U,KAAAguB,YAAAA,EAAkChuB,KAAA+c,YAAAA,EAuB3J/c,KAAAkmB,cAAwB,EAExBlmB,KAAAgZ,eAAiB,IAAIsW,GAsEvB,OA7FED,EAAAnvB,UAAA2F,SAAA,WACE7F,KAAK4e,OAAS5e,KAAK+c,YAAY9G,kBAAkBnU,MAEV,IAAnC9B,KAAKguB,YAAY3V,iBACnBrY,KAAKgZ,eAAe5H,OAASpR,KAAK+c,YAAYtH,aAG9CzV,KAAKgZ,eAAe5H,OAASpR,KAAKguB,YAAY3V,iBAC9CrY,KAAKguB,YAAY3V,iBAAmB,KAiBjCgX,EAAAnvB,UAAA2mB,OAAP,WAAA,IAAApP,EAAAzX,KAGOA,KAAK4e,OAAO5e,KAAKguB,YAAY7V,SAAS7O,OACE,IAAvCtJ,KAAKgZ,eAAe7G,gBASa,IAAnCnS,KAAKgZ,eAAe5G,YAKmB,IAAvCpS,KAAKgZ,eAAe3G,gBAKpBrS,KAAKgZ,eAAe3G,iBAAmBrS,KAAKgZ,eAAe5G,aAK/DpS,KAAKkmB,cAAe,EAEhBlmB,KAAK4e,OAAO5e,KAAKguB,YAAY7V,SAAS7O,MAExCtJ,KAAKguB,YAAY/U,oBAAoBjZ,KAAKgZ,gBAAgBkB,WAAU,SAACmU,GACnE5W,EAAKyO,cAAe,EAEO,WAAvBmI,EAAYjG,SACd3Q,EAAK3C,eAAe7N,MAAM,oBAE1BwQ,EAAKuX,SAASE,QAEdzX,EAAK3C,eAAe7N,MAAM,UAAYonB,EAAYjG,YAOtDpoB,KAAKguB,YAAYhV,eAAehZ,KAAKgZ,gBAAgBkB,WAAU,SAACmU,GAC9D5W,EAAKyO,cAAe,EAEO,WAAvBmI,EAAYjG,SACd3Q,EAAK3C,eAAe7N,MAAM,oBAE1BwQ,EAAKuX,SAASE,QAEdzX,EAAK3C,eAAe7N,MAAM,UAAYonB,EAAYjG,aA/BtDpoB,KAAK8U,eAAe7N,MAAM,0BAL1BjH,KAAK8U,eAAe7N,MAAM,+BAL1BjH,KAAK8U,eAAe7N,MAAM,6BATxBjH,KAAK8U,eAAe7N,MAAM,2EAhCFkoB,EAAAA,gBAA+BlX,EAAAA,mBAAoCnR,SAAqCoR,UAAkCxD,MAF7J2a,EAAuBjvB,EAAA,CALnCuG,EAAAA,UAAU,CACTC,SAAU,sBACVC,SAAA,44EAGWwoB,oBCGX,SAAAE,EAAmBvB,EAAkClZ,EAAwCD,EAAkCD,EAAwBmI,GAApI/c,KAAAguB,YAAAA,EAAkChuB,KAAA8U,eAAAA,EAAwC9U,KAAA6U,YAAAA,EAAkC7U,KAAA4U,OAAAA,EAAwB5U,KAAA+c,YAAAA,EAuB9I/c,KAAAye,UAAY,IAAIC,GAGzB1e,KAAAwvB,aAAwB,EAExBxvB,KAAAyZ,QAAU,IAAIoV,GA2GhB,OArIEU,EAAArvB,UAAA2F,SAAA,WAEE7F,KAAK4e,OAAS5e,KAAK+c,YAAY9G,kBAAkBnU,MAIV,IAAnC9B,KAAKguB,YAAY3V,iBACnBrY,KAAKyvB,YAAYzvB,KAAK+c,YAAYtH,cAGlCzV,KAAKyvB,YAAYzvB,KAAKguB,YAAY3V,kBAClCrY,KAAKguB,YAAY3V,iBAAmB,KAqBxCkX,EAAArvB,UAAAuvB,YAAA,SAAYre,GAAZ,IAAAqG,EAAAzX,KAEM4Y,EAAS,MAET5Y,KAAKye,UAAUlU,WAAavK,KAAKye,UAAUnU,YAC7CsO,EAAS,OAGP5Y,KAAKye,UAAUlU,YAAcvK,KAAKye,UAAUnU,YAC9CsO,EAAS,WAGN5Y,KAAKye,UAAUlU,WAAavK,KAAKye,UAAUnU,YAC9CsO,EAAS,UAIX5Y,KAAKguB,YAAYzU,WAAWX,EAAQxH,GAAQ8I,WAC1C,SAACmU,GAEC5W,EAAKgC,QAAU4U,EAAYC,GAAGoB,WAAW,GAErCjY,EAAKgC,QAAQrI,OAAOwF,qBAAuBa,EAAKsF,YAAYtH,YAAYmB,sBAC1Ea,EAAK+X,aAAc,GAIrB/X,EAAKkY,MAAQtB,EAAYC,GAAGsB,QAC5BnY,EAAKoY,cAAgBxB,EAAYC,GAAGwB,gBACpCrY,EAAKnN,UAAY+jB,EAAYC,GAAGyB,eAIlC,SAACxoB,GACCkQ,EAAKyO,cAAe,EACpBzO,EAAK3C,eAAe7N,MAAMwQ,EAAK5C,YAAYpB,MAAMlM,QAQvDgoB,EAAArvB,UAAA8vB,UAAA,WAAA,IAAAvY,EAAAzX,KAGEA,KAAKguB,YAAY5U,QAAQ,MAAO,IAAIc,WAClC,SAACmU,GAEC5W,EAAKkY,MAAQtB,EAAYM,MAE3B,SAACpnB,GACCkQ,EAAKyO,cAAe,EACpBzO,EAAK3C,eAAe7N,MAAMwQ,EAAK5C,YAAYpB,MAAMlM,QAUvDgoB,EAAArvB,UAAA8Y,eAAA,WACEhZ,KAAKguB,YAAY3V,iBAAmBrY,KAAKyZ,QAAQrI,OACjDpR,KAAK4U,OAAOyC,SAAS,CAAC,+BAGxBkY,EAAArvB,UAAA+vB,UAAA,WACEjwB,KAAK4U,OAAOyC,SAAS,CAAC,sBAGxBkY,EAAArvB,UAAAgwB,OAAA,aAIAX,EAAArvB,UAAAiwB,cAAA,WAAA,IAAA1Y,EAAAzX,KACEA,KAAKkmB,cAAe,EACpBlmB,KAAKguB,YAAYxU,cAAcxZ,KAAKyZ,QAAS,QAAQS,WACnD,SAACmU,GACC5W,EAAKyO,cAAe,EAEO,WAAvBmI,EAAYjG,QACd3Q,EAAK3C,eAAe7N,MAAM,mBAK1BwQ,EAAK3C,eAAe7N,MAAM,UAAYonB,EAAYjG,YAGtD,SAAC7gB,GACCkQ,EAAK3C,eAAe7N,MAAM,sBAC1BwQ,EAAKyO,cAAe,+CA/HMhO,UAAqCpR,SAAqCmR,EAAAA,mBAA6BD,EAAAA,cAA6BtD,MAuB3JtU,EAAA,CAARga,EAAAA,yCA1BUmV,EAAgBnvB,EAAA,CAL5BuG,EAAAA,UAAU,CACTC,SAAU,cACVC,SAAA,qpIAGW0oB,oBCcb,SAAAa,KAA4B,OAAfA,EAAahwB,EAAA,CArBzBoa,EAAAA,SAAS,CACRC,aAAc,CAAC4U,GAAyBE,IAExCtC,gBAAiB,GAEjBvS,QAAS,CACPI,EAAAA,oBAAoBoS,WAAW,CAAEC,6BAA8B,UAC/DvS,EAAAA,aACAC,EAAAA,YACAC,EAAAA,oBACAP,IAGFI,QAAS,CACPC,EAAAA,aACAC,EAAAA,YACAN,GACA8U,GACAE,OAGSa,oBChBX,SAAAC,EAAoBrC,EAAkClZ,GAAlC9U,KAAAguB,YAAAA,EAAkChuB,KAAA8U,eAAAA,EAMtD9U,KAAAkhB,YAAc,GAEdlhB,KAAAkmB,cAAe,EAkDjB,OAxDEmK,EAAAnwB,UAAA2F,SAAA,WACE7F,KAAKswB,gBAOPD,EAAAnwB,UAAA2hB,YAAA,SAAYC,GACV9hB,KAAKuwB,SAASxO,OAASD,EAAYE,OAAOC,eAG5CoO,EAAAnwB,UAAAowB,aAAA,WAAA,IAAA7Y,EAAAzX,KACEA,KAAKguB,YAAYrU,WAAW,MAAO,IAAIO,WACrC,SAACmU,GACC5W,EAAK8Y,SAAWlC,EAAYM,OAOlC0B,EAAAnwB,UAAAswB,cAAA,SAAc3W,GAAd,IAAApC,EAAAzX,KAEEA,KAAKkmB,cAAe,EACpBlmB,KAAKguB,YAAYpU,cAAcC,EAAS,QAAQK,WAAU,SAACmU,GACzD5W,EAAKyO,cAAe,EAEO,WAAvBmI,EAAYjG,SACd3Q,EAAK3C,eAAe7N,MAAM,WAAW4S,EAAQ4W,MAAK,YAClDhZ,EAAK6Y,gBAGL7Y,EAAK3C,eAAe7N,MAAM,UAAYonB,EAAYjG,aAOxDiI,EAAAnwB,UAAAwwB,WAAA,WAYE1wB,KAAK8U,eAAe7N,MAAM,mEAtDKiR,UAAqCpR,KAF3DupB,EAAiBjwB,EAAA,CAL7BuG,EAAAA,UAAU,CACTC,SAAU,eACVC,SAAA,uqCAGWwpB,oBCGX,SAAAM,EAAsB5T,EAAkCiR,GAAlChuB,KAAA+c,YAAAA,EAAkC/c,KAAAguB,YAAAA,EAMxDhuB,KAAAkmB,cAAwB,EAGxBlmB,KAAAkhB,YAAc,GAIdlhB,KAAAihB,iBAA6B,CAAE,aAAc,SAAS,WAAW,SAAU,WAiB7E,OA5BE0P,EAAAzwB,UAAA2F,SAAA,WACI7F,KAAK4wB,YAYFD,EAAAzwB,UAAA0wB,SAAP,WAAA,IAAAnZ,EAAAzX,KACEA,KAAKguB,YAAYtU,OAAO,MAAM,IAAIQ,WAChC,SAACmU,GACC5W,EAAKoZ,KAAO,IAAInP,EAAAA,mBAAmB2M,EAAYM,IAC/ClX,EAAKoZ,KAAKlP,UAAYlK,EAAKqZ,cAC3BrZ,EAAKoK,YAAYpK,EAAKyJ,iBAK5ByP,EAAAzwB,UAAA2hB,YAAA,SAAYC,GACV9hB,KAAK6wB,KAAK9O,OAASD,EAAYE,OAAOC,wDA1BLvN,UAAkCwD,MAOzC9X,EAAA,CAA3BwiB,EAAAA,UAAU,sDARA+N,EAAavwB,EAAA,CALzBuG,EAAAA,UAAU,CACTC,SAAU,WACVC,SAAA,iqFAGW8pB,oBCSX,SAAAI,EAAoBlc,EAAiCD,EAAwBmI,EAAkCiR,EAAiChnB,EAA2B8N,GAAvJ9U,KAAA6U,YAAAA,EAAiC7U,KAAA4U,OAAAA,EAAwB5U,KAAA+c,YAAAA,EAAkC/c,KAAAguB,YAAAA,EAAiChuB,KAAAgH,OAAAA,EAA2BhH,KAAA8U,eAAAA,EAQ3K9U,KAAAkmB,cAAwB,EAGxBlmB,KAAAkhB,YAAc,GAIdlhB,KAAAihB,iBAA6B,CAAC,SAAU,WAAY,WAAY,SAAU,cAAe,UA6H3F,OA1IE8P,EAAA7wB,UAAA2F,SAAA,WAEI7F,KAAKgxB,cAaFD,EAAA7wB,UAAA8wB,WAAP,WAAA,IAAAvZ,EAAAzX,KACEA,KAAKguB,YAAY1V,QAAQ,MAAM,IAAI4B,WACjC,SAACmU,GAEC5W,EAAKwZ,MAAQ,IAAIvP,EAAAA,mBAAmB2M,EAAYM,IAChDlX,EAAKwZ,MAAMtP,UAAYlK,EAAKyZ,eAC5BzZ,EAAKoK,YAAYpK,EAAKyJ,gBAExB,SAAC3Z,GACCkQ,EAAKyO,cAAe,EACpBzO,EAAK3C,eAAe7N,MAAMwQ,EAAK5C,YAAYpB,MAAMlM,QAKvDwpB,EAAA7wB,UAAA2hB,YAAA,SAAYC,GACV9hB,KAAKixB,MAAMlP,OAASD,EAAYE,OAAOC,eAGzC8O,EAAA7wB,UAAAixB,cAAA,WAEGnxB,KAAK4U,OAAOyC,SAAS,CAAC,+BAIzB0Z,EAAA7wB,UAAAkxB,YAAA,SAAYzY,GAEV3Y,KAAKguB,YAAY3V,iBAAmBM,EAAKvH,OACzCpR,KAAK4U,OAAOyC,SAAS,CAAC,uBAIzB0Z,EAAA7wB,UAAAmxB,KAAA,SAAKtY,GACJA,EAAExH,OAAS,IACXvR,KAAKsxB,WAAWvY,IAGjBgY,EAAA7wB,UAAAqxB,OAAA,SAAOxY,GACNA,EAAExH,OAAS,IACXwH,EAAEzH,MAAQ,IACVtR,KAAKsxB,WAAWvY,IAGjBgY,EAAA7wB,UAAAsxB,OAAA,SAAOzY,GACNA,EAAEtH,SAAW,IACbzR,KAAKsxB,WAAWvY,IAGjBgY,EAAA7wB,UAAAuxB,QAAA,SAAQ1Y,GACPA,EAAEtH,SAAW,IACbzR,KAAKsxB,WAAWvY,IAGjBgY,EAAA7wB,UAAA+uB,QAAA,SAAQlW,GAAR,IAAAtB,EAAAzX,KAICA,KAAKguB,YAAY9U,UAAUH,GAAGmB,WAAU,SAACmU,GACZ,WAAvBA,EAAYjG,QACd3Q,EAAK3C,eAAe7N,MAAM,uCAE1BwQ,EAAK3C,eAAe7N,MAAM,UAAYonB,EAAYjG,aAMvD2I,EAAA7wB,UAAAoxB,WAAA,SAAW3Y,GAAX,IAAAlB,EAAAzX,KACCA,KAAKkmB,cAAe,EACpBlmB,KAAKguB,YAAYtV,WAAWC,EAAM,QAAQuB,WACxC,SAACmU,GACC5W,EAAKyO,cAAe,EAEO,WAAvBmI,EAAYjG,SACd3Q,EAAK3C,eAAe7N,MAAM,gBAE1BwQ,EAAKuZ,cAGLvZ,EAAK3C,eAAe7N,MAAM,UAAYonB,EAAYjG,YAGtD,SAAC7gB,GACCkQ,EAAK3C,eAAe7N,MAAM,sBAC1BwQ,EAAKyO,cAAe,MAKzB6K,EAAA7wB,UAAAwxB,WAAA,SAAW/Y,GAAX,IAAAlB,EAAAzX,KAGCA,KAAK8U,eAAetN,QAAQ,UAAUmR,EAAKvH,OAAM,MAAM8I,WAAU,SAAC/X,GAElD,OAAVA,IAEFsV,EAAKyO,cAAe,EACpBzO,EAAKuW,YAAYtV,WAAWC,EAAM,UAAUuB,WAC1C,SAACmU,GACC5W,EAAKyO,cAAe,EAEO,WAAvBmI,EAAYjG,SACd3Q,EAAK3C,eAAe7N,MAAM,gBAE1BwQ,EAAKuZ,cAGLvZ,EAAK3C,eAAe7N,MAAM,UAAYonB,EAAYjG,YAGtD,SAAC7gB,GACCkQ,EAAK3C,eAAe7N,MAAM,sBAC1BwQ,EAAKyO,cAAe,mDAjIKjO,EAAAA,mBAA4BD,EAAAA,cAA6BtD,UAAkCwD,UAA4BpQ,EAAAA,iBAAmChB,KAS9J1G,EAAA,CAA5BwiB,EAAAA,UAAU,wDAVAmO,EAAc3wB,EAAA,CAL1BuG,EAAAA,UAAU,CACTC,SAAU,YACVC,SAAA,4yJAGWkqB,oBCMX,SAAAY,EAAoBC,EAA+B9c,EAAwCnP,GAAvE3F,KAAA4xB,SAAAA,EAA+B5xB,KAAA8U,eAAAA,EAAwC9U,KAAA2F,UAAAA,EAJpF3F,KAAA6xB,aAAe,EACtB7xB,KAAA2Y,KAAO,IAAIsV,GACXjuB,KAAAkmB,cAAwB,EAsC1B,OAlCEyL,EAAAzxB,UAAA2F,SAAA,aAOO8rB,EAAAzxB,UAAA4xB,OAAP,WAAA,IAAAra,EAAAzX,KAOEA,KAAK2Y,KAAKhH,YAAcC,EAAAA,KAAKmC,gBAAgBnC,EAAAA,KAAKC,WAClD7R,KAAK2Y,KAAK7G,YAAcF,EAAAA,KAAKmC,gBAAgBnC,EAAAA,KAAKC,WAClD7R,KAAK2Y,KAAK3G,WAAaJ,EAAAA,KAAKmC,gBAAgBnC,EAAAA,KAAKC,WAEjD7R,KAAKkmB,cAAe,EACpBlmB,KAAK4xB,SAASlZ,WAAW1Y,KAAK2Y,KAAK,OAAOuB,WAAU,SAACmU,GACnD5W,EAAKyO,cAAe,EAEO,WAAvBmI,EAAYjG,SACd3Q,EAAK3C,eAAe7N,MAAM,cAI1BwQ,EAAK9R,UAAUW,MAAM,YAErBmR,EAAK3C,eAAe7N,MAAM,UAAYonB,EAAYjG,sDA/B1BlQ,UAAqCpR,SAAmCP,EAAAA,gBAN3ForB,EAAavxB,EAAA,CALzBuG,EAAAA,UAAU,CACTC,SAAU,eACVC,SAAA,2kCAGW8qB,oBCLX,SAAAI,EAAoBH,EAA+B9c,EAAwCnP,EAAyEC,GAAhJ5F,KAAA4xB,SAAAA,EAA+B5xB,KAAA8U,eAAAA,EAAwC9U,KAAA2F,UAAAA,EAAyE3F,KAAA4F,KAAAA,EASpK5F,KAAA2Y,KAAO,IAAIsV,GAOXjuB,KAAAkmB,cAAwB,EAExBlmB,KAAAgyB,OAAS,IAAI/D,GA8Ef,OA9FE8D,EAAA7xB,UAAA2F,SAAA,WAIE7F,KAAK2Y,KAAO3Y,KAAK4F,MAcZmsB,EAAA7xB,UAAAqxB,OAAP,WACEvxB,KAAK2Y,KAAKpH,OAAS,KAGdwgB,EAAA7xB,UAAAmxB,KAAP,WACErxB,KAAK2Y,KAAKpH,OAAS,KAGdwgB,EAAA7xB,UAAAsxB,OAAP,WACExxB,KAAK2Y,KAAKlH,SAAW,KAGhBsgB,EAAA7xB,UAAAuxB,QAAP,WACEzxB,KAAK2Y,KAAKlH,SAAW,KAqBhBsgB,EAAA7xB,UAAA+xB,OAAP,WAAA,IAAAxa,EAAAzX,KAEEA,KAAKkmB,cAAe,EACpBlmB,KAAK4xB,SAASlZ,WAAW1Y,KAAK2Y,KAAK,QAAQuB,WACzC,SAACmU,GACC5W,EAAKyO,cAAe,EAEO,WAAvBmI,EAAYjG,SACd3Q,EAAK3C,eAAe7N,MAAM,gBAE1BwQ,EAAK9R,UAAUW,MAAM,YAErBmR,EAAK3C,eAAe7N,MAAM,UAAYonB,EAAYjG,YAGtD,SAAC7gB,GACCkQ,EAAK3C,eAAe7N,MAAM,sBAC1BwQ,EAAKyO,cAAe,MAKnB6L,EAAA7xB,UAAAgyB,WAAP,WAAA,IAAAza,EAAAzX,KAEEA,KAAKkmB,cAAe,EACpBlmB,KAAK4xB,SAASlZ,WAAW1Y,KAAK2Y,KAAM,UAAUuB,WAAU,SAACiY,GACvD1a,EAAKyO,cAAe,EAEpBzO,EAAK0a,OAASA,EACd1a,EAAK2a,WAAa3a,EAAK0a,OAAO/J,QACP,WAAnB3Q,EAAK2a,aACP3a,EAAK3C,eAAe7N,MAAMwQ,EAAKkB,KAAKvH,OAAS,YAC7CqG,EAAK9R,UAAUW,MAAM,yDAtFG4R,UAAqCpR,SAAmCP,EAAAA,6CAA+BC,EAAAA,OAAMC,KAAA,CAACC,EAAAA,sBAFjIqrB,EAAc3xB,EAAA,CAL1BuG,EAAAA,UAAU,CACTC,SAAU,gBACVC,SAAA,k9BAKqI3F,EAAA,EAAAsF,EAAAA,OAAOE,EAAAA,mBAFjIqrB,oBCGX,SAAAM,EAAoBvd,EAAwC8c,EAA+BU,EAA+B3sB,EAAyEC,GAA/K5F,KAAA8U,eAAAA,EAAwC9U,KAAA4xB,SAAAA,EAA+B5xB,KAAAsyB,SAAAA,EAA+BtyB,KAAA2F,UAAAA,EAAyE3F,KAAA4F,KAAAA,EAerM,OAbEysB,EAAAnyB,UAAA2F,SAAA,aAQAwsB,EAAAnyB,UAAAqyB,OAAA,sDAVoCzrB,SAAkCoR,UAA+BxD,UAAgCnO,EAAAA,6CAA+BC,EAAAA,OAAMC,KAAA,CAACC,EAAAA,sBAFhK2rB,EAAcjyB,EAAA,CAL1BuG,EAAAA,UAAU,CACTC,SAAU,eACVC,SAAA,4KAKoK3F,EAAA,EAAAsF,EAAAA,OAAOE,EAAAA,mBAFhK2rB,oBCGX,SAAAG,EAAoB1d,EAAwCkZ,EAAkCjR,EAAkCpX,EAAwEC,GAApL5F,KAAA8U,eAAAA,EAAwC9U,KAAAguB,YAAAA,EAAkChuB,KAAA+c,YAAAA,EAAkC/c,KAAA2F,UAAAA,EAAwE3F,KAAA4F,KAAAA,EAQxM5F,KAAAgX,KAAO,IAAIhB,GA4Bb,OAnCEwc,EAAAtyB,UAAA2F,SAAA,WACE7F,KAAKyyB,SAAWzyB,KAAK4F,MAQvB4sB,EAAAtyB,UAAAqyB,OAAA,WAAA,IAAA9a,EAAAzX,KAE4B,YAAtBA,KAAKgX,KAAKjM,UAAgD,IAAtB/K,KAAKgX,KAAKjM,UAMlD/K,KAAKkmB,cAAe,EACpBlmB,KAAKguB,YAAY7U,WAAWnZ,KAAKgX,KAAM,OAAOkD,WAAU,SAACmU,GACvD5W,EAAKyO,cAAe,EAEO,WAAvBmI,EAAYjG,SACd3Q,EAAK3C,eAAe7N,MAAM,cAC1BwQ,EAAK9R,UAAUW,MAAM,YAErBmR,EAAK3C,eAAe7N,MAAM,UAAYonB,EAAYjG,YAInD,SAAA7gB,GACDkQ,EAAK3C,eAAe7N,MAAM,qBAC1BwQ,EAAKyO,cAAe,MAnBpBlmB,KAAK8U,eAAe7N,MAAM,oEAbMH,SAAqCoR,UAAkCxD,UAAgCnO,EAAAA,6CAA8BC,EAAAA,OAAMC,KAAA,CAACC,EAAAA,sBAFrK8rB,EAAapyB,EAAA,CALzBuG,EAAAA,UAAU,CACTC,SAAU,cACVC,SAAA,ijDAKyK3F,EAAA,EAAAsF,EAAAA,OAAOE,EAAAA,mBAFrK8rB,oBCEX,SAAAE,EAAoB5d,EAAwC8c,EAA+BU,EAA+B3sB,EAAyEC,GAA/K5F,KAAA8U,eAAAA,EAAwC9U,KAAA4xB,SAAAA,EAA+B5xB,KAAAsyB,SAAAA,EAA+BtyB,KAAA2F,UAAAA,EAAyE3F,KAAA4F,KAAAA,EAOnM5F,KAAAgX,KAAO,IAAIhB,GACXhW,KAAA2yB,gBAA0B,EAuB5B,OA7BED,EAAAxyB,UAAA2F,SAAA,WACE7F,KAAKgX,KAAOhX,KAAK4F,KACjB5F,KAAK2yB,gBAAiB,GAQxBD,EAAAxyB,UAAAqyB,OAAA,WAAA,IAAA9a,EAAAzX,KAEEA,KAAKkmB,cAAe,EACpBlmB,KAAK4xB,SAASzY,WAAWnZ,KAAKgX,KAAM,QAAQkD,WAAU,SAACmU,GACrD5W,EAAKyO,cAAe,EAEO,WAAvBmI,EAAYjG,SACd3Q,EAAK3C,eAAe7N,MAAM,gBAC1BwQ,EAAK9R,UAAUW,MAAM,YAErBmR,EAAK3C,eAAe7N,MAAM,UAAYonB,EAAYjG,YAGnD,SAAA7gB,GACDkQ,EAAK3C,eAAe7N,MAAM,sBAC1BwQ,EAAKyO,cAAe,+CA3BYpf,SAAkCoR,UAA+BxD,UAAgCnO,EAAAA,6CAA+BC,EAAAA,OAAMC,KAAA,CAACC,EAAAA,sBAFhKgsB,EAActyB,EAAA,CAL1BuG,EAAAA,UAAU,CACTC,SAAU,eACVC,SAAA,6iEAKoK3F,EAAA,EAAAsF,EAAAA,OAAOE,EAAAA,mBAFhKgsB,oBCMX,SAAAE,EAAoB/d,EAAkCD,EAAwBmI,EAAkCiR,EAAiChnB,EAA2B8N,GAAxJ9U,KAAA6U,YAAAA,EAAkC7U,KAAA4U,OAAAA,EAAwB5U,KAAA+c,YAAAA,EAAkC/c,KAAAguB,YAAAA,EAAiChuB,KAAAgH,OAAAA,EAA2BhH,KAAA8U,eAAAA,EAQ5K9U,KAAAkmB,cAAe,EAMNlmB,KAAAye,UAAY,IAAIC,GA8G3B,OA1HEkU,EAAA1yB,UAAA2F,SAAA,WAEE7F,KAAKgwB,aAmBP4C,EAAA1yB,UAAA8vB,UAAA,WAAA,IAAAvY,EAAAzX,KACEA,KAAKguB,YAAY5U,QAAQ,MAAO,IAAIc,WAClC,SAACmU,GACC5W,EAAKkY,MAAQtB,EAAYM,MAE3B,SAACpnB,GACCkQ,EAAKyO,cAAe,EACpBzO,EAAK3C,eAAe7N,MAAMwQ,EAAK5C,YAAYpB,MAAMlM,QAKvDqrB,EAAA1yB,UAAA2yB,QAAA,WACE7yB,KAAKgwB,aAGP4C,EAAA1yB,UAAA4yB,QAAA,WAAA,IAAArb,EAAAzX,KACoBA,KAAKgH,OAAOG,KAAKqrB,GAAe,CAChDlrB,MAAO,SACP1B,KAAM5F,KAAKye,UAAUgU,WAGbhrB,cAAcyS,WAAU,SAAC/X,GACnB,WAAVA,GACFsV,EAAKuY,gBAKX4C,EAAA1yB,UAAA6yB,SAAA,SAAS/b,GAAT,IAAAS,EAAAzX,KACoBA,KAAKgH,OAAOG,KAAKkrB,GAAgB,CACjD/qB,MAAO,SACP1B,KAAMoR,IAGEvP,cAAcyS,WAAU,SAAC/X,GACnB,WAAVA,GACFsV,EAAKuY,gBAKX4C,EAAA1yB,UAAA8yB,SAAA,SAAShc,GAAT,IAAAS,EAAAzX,KACoBA,KAAKgH,OAAOG,KAAKurB,GAAgB,CACjDprB,MAAO,SACP1B,KAAMoR,IAGEvP,cAAcyS,WAAU,SAAC/X,GACnB,WAAVA,GACFsV,EAAKuY,gBAKX4C,EAAA1yB,UAAA6W,WAAA,SAAWC,GAAX,IAAAS,EAAAzX,KAEEA,KAAK8U,eAAetN,QAAQ,UAAUwP,EAAKjM,SAAQ,MAAMmP,WAAU,SAAC/X,GAEpD,OAAVA,GAEFsV,EAAKuW,YACJ7U,WAAWnC,EAAM,QACjBkD,WAAU,SAACmU,GACiB,WAAvBA,EAAYjG,SACd3Q,EAAK3C,eAAe7N,MAAM,gBAC1BwQ,EAAKuY,aAELvY,EAAK3C,eAAe7N,MAAM,UAAYonB,EAAYjG,gBAW5DwK,EAAA1yB,UAAA+yB,WAAA,SAAWjc,GAAX,IAAAS,EAAAzX,KAEEA,KAAK8U,eAAetN,QAAQ,UAAUwP,EAAKjM,SAAQ,MAAMmP,WAAU,SAAC/X,GAEpD,OAAVA,GAEFsV,EAAKuW,YACJ7U,WAAWnC,EAAM,UACjBkD,WAAU,SAACmU,GACiB,WAAvBA,EAAYjG,SACd3Q,EAAK3C,eAAe7N,MAAM,gBAC1BwQ,EAAKuY,aAELvY,EAAK3C,eAAe7N,MAAM,UAAYonB,EAAYjG,yDAnH3BnQ,EAAAA,mBAA6BD,EAAAA,cAA6BtD,UAAkCwD,UAA4BpQ,EAAAA,iBAAmChB,KAcnL1G,EAAA,CAARga,EAAAA,yCAfUwY,EAAcxyB,EAAA,CAL1BuG,EAAAA,UAAU,CACTC,SAAU,YACVC,SAAA,wmFAGW+rB,oBCXX,SAAAM,KAKF,OAHEA,EAAAhzB,UAAA2F,SAAA,aAJWqtB,EAAiB9yB,EAAA,CAL7BuG,EAAAA,UAAU,CACTC,SAAU,eACVC,SAAA,uCAGWqsB,oBCQX,SAAAC,EAAoBte,EAAkCC,EAAwCkZ,EAAkCjR,EAAgCnI,GAA5I5U,KAAA6U,YAAAA,EAAkC7U,KAAA8U,eAAAA,EAAwC9U,KAAAguB,YAAAA,EAAkChuB,KAAA+c,YAAAA,EAAgC/c,KAAA4U,OAAAA,EAOvJ5U,KAAAye,UAAY,IAAIC,GAEzB1e,KAAAkmB,cAAwB,EACxBlmB,KAAA2Y,KAAO,IAAIsV,GACXjuB,KAAAyZ,QAAU,IAAIoV,GAEd7uB,KAAAsZ,QAAU,IAAIwV,GAId9uB,KAAAozB,aAAuB,EAoDzB,OAnEED,EAAAjzB,UAAA2F,SAAA,aAkBFstB,EAAAjzB,UAAAC,OAAA,WAAA,IAAAsX,EAAAzX,KAE2B,IAAtBA,KAAK2Y,KAAKzG,UAKblS,KAAKsZ,QAAQX,KAAO3Y,KAAK2Y,KACzB3Y,KAAKsZ,QAAQG,QAAUzZ,KAAKyZ,QAE5BzZ,KAAKyZ,QAAQrI,OAASpR,KAAK2Y,KAAKvH,OAEhCpR,KAAKkmB,cAAe,EAClBlmB,KAAKguB,YAAY3U,cAAcrZ,KAAKsZ,QAAQ,OAAOY,WACjD,SAACmU,GACC5W,EAAKyO,cAAe,EAEO,WAAvBmI,EAAYjG,SACd3Q,EAAK3C,eAAe7N,MAAM,mBAEtBwQ,EAAK2b,YACP3b,EAAK2Z,YAAY3Z,EAAKkB,OAEtBlB,EAAKkB,KAAO,IAAIsV,GAChBxW,EAAKgC,QAAU,IAAIoV,GACnBpX,EAAKpF,gBAAkB,KAKzBoF,EAAK3C,eAAe7N,MAAM,UAAYonB,EAAYjG,YAGtD,SAAC7gB,GACCkQ,EAAKyO,cAAe,EACpBzO,EAAK3C,eAAe7N,MAAMwQ,EAAK5C,YAAYpB,MAAMlM,QAhCrDvH,KAAK8U,eAAe7N,MAAM,+BAqC9BksB,EAAAjzB,UAAAkxB,YAAA,SAAYzY,GAEV3Y,KAAKguB,YAAY3V,iBAAmBM,EAAKvH,OACzCpR,KAAK4U,OAAOyC,SAAS,CAAC,gEA/DWY,EAAAA,mBAAqCnR,SAAqCoR,UAAkCxD,UAA2BsD,EAAAA,UAO/J5X,EAAA,CAARga,EAAAA,yCATU+Y,EAAsB/yB,EAAA,CALlCuG,EAAAA,UAAU,CACTC,SAAU,qBACVC,SAAA,w0FAGWssB,oBCmDb,SAAAE,KAA6B,OAAhBA,EAAcjzB,EAAA,CAhD1Boa,EAAAA,SAAS,CACRC,aAAc,CACZsW,GACAY,GACAI,GACAa,GACAJ,GACAE,GACAL,GACAa,GACAC,GACAxC,GACAN,IAGFpD,gBAAiB,CACf0E,GACAI,GACAS,GACAE,GACAL,IAGF3X,QAAS,CACPI,EAAAA,oBAAoBoS,WAAW,CAAEC,6BAA8B,UAC/DvS,EAAAA,aACAC,EAAAA,YACAC,EAAAA,oBACAP,IAGFI,QAAS,CACPC,EAAAA,aACAC,EAAAA,YACAN,GACAwW,GACAY,GACAI,GACAa,GACAJ,GACAE,GACAL,GACAa,GACAC,GACAxC,GACAN,OAGSgD","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","\r\n\r\n\r\nimport { Core } from 'tin-core';\r\n\r\nexport enum LogLevel {\r\n All = 0,\r\n Debug = 1,\r\n Info = 2,\r\n Warn = 3,\r\n Error = 4,\r\n Fatal = 5,\r\n Off = 6,\r\n}\r\n\r\n\r\nexport class Tile{\r\n\r\n tileName: string;\r\n tileValue: string;\r\n tileColor: string;\r\n selected: string;\r\n visible?: boolean;\r\n info?: string;\r\n}\r\n\r\nexport class Step{\r\n name:string\r\n icon:string;\r\n}\r\n\r\nexport class TableConfig {\r\n\r\n enableFilter: boolean = false;\r\n create = new TableCreate();\r\n\r\n columns: TableColumn[];\r\n actions: TableAction[];\r\n\r\n greyout = new Condition();\r\n\r\n}\r\n\r\nexport class TableCreate{\r\n enabled: boolean\r\n display: string;\r\n}\r\n\r\nexport class TableColumn {\r\n\r\n constructor() {\r\n this.name = \"default\"\r\n this.display = \"default\"\r\n this.type = TableColumnType.String\r\n\r\n }\r\n\r\n public name: string;\r\n public display: string;\r\n public type?: TableColumnType;\r\n public icons?: Icon[];\r\n public color?: Color;\r\n}\r\n\r\nexport enum TableColumnType {\r\n String, Date, DateTime, Image, Icon, TextIcon, Chip\r\n}\r\n\r\n\r\n\r\nexport class Condition {\r\n constructor() {\r\n this.field = \"\";\r\n this.operator = Operator.Equal;\r\n this.value = \"\";\r\n }\r\n field: string;\r\n operator: Operator;\r\n value: string;\r\n}\r\n\r\nexport enum Operator{\r\nEqual, Less, Greater, NotEqual\r\n}\r\n\r\n\r\n\r\nexport class Color extends Condition {\r\n name: string;\r\n}\r\n\r\nexport class Icon extends Condition{\r\n name: string;\r\n hint?: string;\r\n color?: string;\r\n}\r\n\r\n\r\n\r\nexport class TableAction {\r\n\r\n name: string;\r\n show?: boolean;\r\n icon: string;\r\n color?: string;\r\n hint?: string;\r\n\r\n disappear?: Condition;\r\n disable?: Condition;\r\n\r\n}\r\n\r\n\r\n\r\nexport class ActionResponse {\r\n name: string;\r\n value;\r\n}\r\n\r\n\r\n\r\nexport class loginConfig{\r\n\r\n constructor(){\r\n this.appName = \"\";\r\n this.selfService = false;\r\n this.logo = \"\";\r\n this.logoSize = \"normal\";\r\n }\r\n\r\n appName: string;\r\n selfService: boolean;\r\n logo: string;\r\n logoSize: string;\r\n\r\n}\r\n\r\n\r\n export class AppConfig {\r\n constructor() {\r\n this.appName = \"App Name\";\r\n this.logo = \"\";\r\n this.ADAuth = true;\r\n this.localAuth = true;\r\n this.employees = false;\r\n this.approvals = false;\r\n }\r\n appName: string;\r\n logo: string;\r\n capItems: CapItem[];\r\n ADAuth: boolean;\r\n localAuth:boolean;\r\n employees: boolean;\r\n approvals: boolean;\r\n }\r\n\r\n export class CapItem {\r\n\r\n constructor(){\r\n this.name = \"\";\r\n this.display = \"New Cap Item\";\r\n this.enabled = false;\r\n this.type= \"\";\r\n this.newLine = false;\r\n this.showMenu =true;\r\n this.ignoreSubsDisplay = false;\r\n this.link = \"\";\r\n this.icon = \"navigate_next\";\r\n\r\n }\r\n\r\n name: string;\r\n display: string;\r\n enabled: boolean;\r\n showMenu: boolean;\r\n\r\n ignoreSubsDisplay: boolean;\r\n type: string;\r\n newLine: boolean;\r\n link: string;\r\n icon: string;\r\n capSubItems: CapItem[];\r\n\r\n\r\n\r\n }\r\n\r\n\r\n export class Role {\r\n\r\n constructor() {\r\n this.roleID = \"\" ;\r\n this.roleName = \"New Role\" ;\r\n this.cap1 = false ;\r\n this.cap2 = false ;\r\n this.cap3 = false ;\r\n this.cap4 = false ;\r\n this.cap5 = false ;\r\n this.cap6 = false ;\r\n this.cap7 = false ;\r\n this.cap8 = false ;\r\n this.cap9 = false ;\r\n this.cap10 = false ;\r\n this.cap11 = false ;\r\n this.cap12 = false ;\r\n this.cap13 = false ;\r\n this.cap14 = false ;\r\n this.cap15 = false ;\r\n this.cap16 = false ;\r\n this.cap17 = false ;\r\n this.cap18 = false ;\r\n this.cap19 = false ;\r\n this.cap20 = false ;\r\n this.cap21 = false ;\r\n this.cap22 = false ;\r\n this.cap23 = false ;\r\n this.cap24 = false ;\r\n this.cap25 = false ;\r\n this.cap26 = false ;\r\n this.cap27 = false ;\r\n this.cap28 = false ;\r\n this.cap29 = false ;\r\n this.cap30 = false ;\r\n this.cap31 = false ;\r\n this.cap32 = false ;\r\n this.cap33 = false ;\r\n this.cap34 = false ;\r\n this.cap35 = false ;\r\n this.cap36 = false ;\r\n this.cap37 = false ;\r\n this.cap38 = false ;\r\n this.cap39 = false ;\r\n this.cap40 = false ;\r\n this.cap41 = false ;\r\n this.cap42 = false ;\r\n this.cap43 = false ;\r\n this.cap44 = false ;\r\n this.cap45 = false ;\r\n this.cap46 = false ;\r\n this.cap47 = false ;\r\n this.cap48 = false ;\r\n this.cap49 = false ;\r\n this.cap50 = false ;\r\n this.cap51 = false ;\r\n this.cap52 = false ;\r\n this.cap53 = false ;\r\n this.cap54 = false ;\r\n this.cap55 = false ;\r\n this.cap56 = false ;\r\n this.cap57 = false ;\r\n this.cap58 = false ;\r\n this.cap59 = false ;\r\n this.cap60 = false ;\r\n this.cap61 = false ;\r\n this.cap62 = false ;\r\n this.cap63 = false ;\r\n this.cap64 = false ;\r\n this.cap65 = false ;\r\n this.cap66 = false ;\r\n this.cap67 = false ;\r\n this.cap68 = false ;\r\n this.cap69 = false ;\r\n this.cap70 = false ;\r\n this.cap71 = false ;\r\n this.cap72 = false ;\r\n this.cap73 = false ;\r\n this.cap74 = false ;\r\n this.cap75 = false ;\r\n this.cap76 = false ;\r\n this.cap77 = false ;\r\n this.cap78 = false ;\r\n this.cap79 = false ;\r\n this.cap80 = false ;\r\n this.cap81 = false ;\r\n this.cap82 = false ;\r\n this.cap83 = false ;\r\n this.cap84 = false ;\r\n this.cap85 = false ;\r\n this.cap86 = false ;\r\n this.cap87 = false ;\r\n this.cap88 = false ;\r\n this.cap89 = false ;\r\n this.cap90 = false ;\r\n this.cap91 = false ;\r\n this.cap92 = false ;\r\n this.cap93 = false ;\r\n this.cap94 = false ;\r\n this.cap95 = false ;\r\n this.cap96 = false ;\r\n this.cap97 = false ;\r\n this.cap98 = false ;\r\n this.cap99 = false ;\r\n this.cap100 = false ;\r\n }\r\n\r\n roleID: string;\r\n roleName: string;\r\n cap1: boolean;\r\n cap2: boolean;\r\n cap3: boolean;\r\n cap4: boolean;\r\n cap5: boolean;\r\n cap6: boolean;\r\n cap7: boolean;\r\n cap8: boolean;\r\n cap9: boolean;\r\n cap10: boolean;\r\n cap11: boolean;\r\n cap12: boolean;\r\n cap13: boolean;\r\n cap14: boolean;\r\n cap15: boolean;\r\n cap16: boolean;\r\n cap17: boolean;\r\n cap18: boolean;\r\n cap19: boolean;\r\n cap20: boolean;\r\n cap21: boolean;\r\n cap22: boolean;\r\n cap23: boolean;\r\n cap24: boolean;\r\n cap25: boolean;\r\n cap26: boolean;\r\n cap27: boolean;\r\n cap28: boolean;\r\n cap29: boolean;\r\n cap30: boolean;\r\n cap31: boolean;\r\n cap32: boolean;\r\n cap33: boolean;\r\n cap34: boolean;\r\n cap35: boolean;\r\n cap36: boolean;\r\n cap37: boolean;\r\n cap38: boolean;\r\n cap39: boolean;\r\n cap40: boolean;\r\n cap41: boolean;\r\n cap42: boolean;\r\n cap43: boolean;\r\n cap44: boolean;\r\n cap45: boolean;\r\n cap46: boolean;\r\n cap47: boolean;\r\n cap48: boolean;\r\n cap49: boolean;\r\n cap50: boolean;\r\n cap51: boolean;\r\n cap52: boolean;\r\n cap53: boolean;\r\n cap54: boolean;\r\n cap55: boolean;\r\n cap56: boolean;\r\n cap57: boolean;\r\n cap58: boolean;\r\n cap59: boolean;\r\n cap60: boolean;\r\n cap61: boolean;\r\n cap62: boolean;\r\n cap63: boolean;\r\n cap64: boolean;\r\n cap65: boolean;\r\n cap66: boolean;\r\n cap67: boolean;\r\n cap68: boolean;\r\n cap69: boolean;\r\n cap70: boolean;\r\n cap71: boolean;\r\n cap72: boolean;\r\n cap73: boolean;\r\n cap74: boolean;\r\n cap75: boolean;\r\n cap76: boolean;\r\n cap77: boolean;\r\n cap78: boolean;\r\n cap79: boolean;\r\n cap80: boolean;\r\n cap81: boolean;\r\n cap82: boolean;\r\n cap83: boolean;\r\n cap84: boolean;\r\n cap85: boolean;\r\n cap86: boolean;\r\n cap87: boolean;\r\n cap88: boolean;\r\n cap89: boolean;\r\n cap90: boolean;\r\n cap91: boolean;\r\n cap92: boolean;\r\n cap93: boolean;\r\n cap94: boolean;\r\n cap95: boolean;\r\n cap96: boolean;\r\n cap97: boolean;\r\n cap98: boolean;\r\n cap99: boolean;\r\n cap100: boolean;\r\n }\r\n\r\nexport class Account{\r\n user: User;\r\n profile: Profile;\r\n}\r\n\r\n\r\nexport class User {\r\n\r\n constructor(){\r\n\r\n this.userID = \"\";\r\n this.password = \"\";\r\n this.tries = \"0\";\r\n this.locked = \"0\";\r\n this.logged = \"0\";\r\n this.disabled = \"0\";\r\n this.changepassword = \"0\";\r\n this.dateCreated = Core.nowDate();\r\n this.dateUpdated = Core.nowDate();\r\n this.token = \"\";\r\n this.dateExpire = Core.nowDate();\r\n this.tokenExpire = Core.nowDate();\r\n this.authType = \"\";\r\n\r\n }\r\n\r\n userID: string;\r\n password: string;\r\n tries: string;\r\n locked: string;\r\n logged: string;\r\n disabled: string;\r\n changepassword: string;\r\n dateCreated: string;\r\n dateUpdated: string;\r\n dateExpire: string;\r\n token: string;\r\n tokenExpire: string;\r\n\r\n authType: string;\r\n}\r\n\r\nexport class ChangeUserPassword {\r\n\r\n constructor(){\r\n this.userID = \"\";\r\n this.currentPassword = \"\";\r\n this.newPassword = \"\";\r\n this.confirmPassword = \"\";\r\n }\r\n userID: string;\r\n currentPassword: string;\r\n newPassword: string;\r\n confirmPassword: string;\r\n}\r\n\r\nexport class Profile {\r\n\r\n constructor() {\r\n this.profileID = \"\" ;\r\n this.userID = \"\" ;\r\n this.roleID = \"1\" ;\r\n this.firstName = \"\" ;\r\n this.lastName = \"\" ;\r\n this.email = \"\" ;\r\n this.empID = \"\";\r\n this.arID = \"0\";\r\n this.authType = \"\";\r\n }\r\n\r\n profileID: string;\r\n userID: string;\r\n roleID: string;\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n empID: string;\r\n arID: string;\r\n authType: string;\r\n }\r\n\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TinSpaService {\r\n\r\n constructor() { }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StorageService {\r\n\r\n constructor() { }\r\n\r\n // Store the value\r\n async store(storageKey: string, value: any) {\r\n const encryptedValue = btoa(escape(JSON.stringify(value)));\r\n // const encryptedValue = JSON.stringify(value);\r\n await localStorage.setItem( storageKey, encryptedValue );\r\n }\r\n\r\n // Get the value\r\n async get(storageKey: string) {\r\n const ret = await localStorage.getItem( storageKey );\r\n return JSON.parse(unescape(atob(ret)));\r\n // return JSON.parse(ret);\r\n }\r\n\r\n // Remove\r\n async removeStorageItem(storageKey: string) {\r\n await localStorage.removeItem(storageKey);\r\n }\r\n\r\n // Clear storage\r\n async clear() {\r\n await localStorage.clear();\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatDialog, MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\n\r\n\r\n@Component({\r\n selector: 'lib-app-message',\r\n templateUrl: './messageDialog.component.html'\r\n})\r\n\r\nexport class messageDialog implements OnInit {\r\n\r\n constructor(private dialogRef: MatDialogRef<messageDialog>, @Inject(MAT_DIALOG_DATA) public data) { }\r\n\r\n\r\n ngOnInit() {\r\n\r\n this.messageType = this.data.type\r\n this._messageSubject = this.data.subject;\r\n this._messageDetails = this.data.details;\r\n\r\n }\r\n\r\n messageType;\r\n _messageSubject;\r\n _messageDetails;\r\n\r\n response(resp: string) {\r\n\r\n this.dialogRef.close(resp);\r\n\r\n }\r\n\r\n};\r\n\r\n\r\n\r\n","import { Injectable } from \"@angular/core\";\r\nimport { MatSnackBar } from \"@angular/material/snack-bar\";\r\nimport { MatDialog } from \"@angular/material/dialog\";\r\nimport { messageDialog } from \"../components/message/messageDialog.component\";\r\nimport { Observable, of } from 'rxjs';\r\nimport { mergeMap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class MessageService {\r\n constructor(private snackBar: MatSnackBar, public dialog: MatDialog) {}\r\n\r\n public toast(msg: string) {\r\n this.snackBar.open(msg, \"OK\", { duration: 5000 });\r\n }\r\n\r\n public info(subject: string, details: string) {\r\n\r\n let type = \"info\";\r\n\r\n const dialogRef = this.dialog.open(messageDialog, {\r\n width: \"600px\",\r\n data: {type, subject, details },\r\n });\r\n\r\n }\r\n\r\n public error( details: string) {\r\n\r\n let type = \"error\";\r\n let subject: \"\";\r\n\r\n const dialogRef = this.dialog.open(messageDialog, {\r\n width: \"600px\",\r\n data: {type, subject, details },\r\n });\r\n\r\n }\r\n\r\n public confirm(msg: string): Observable<any> {\r\n\r\n let type = \"confirm\";\r\n let subject = \"\";\r\n let details = msg\r\n\r\n const dialogRef = this.dialog.open(messageDialog, {\r\n width: \"400px\",\r\n data: {type, subject, details },\r\n });\r\n\r\n return dialogRef.afterClosed().pipe(mergeMap((result) => {\r\n\r\n return of(result);\r\n\r\n }\r\n\r\n ));\r\n\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as FileSaver from 'file-saver';\r\nimport * as XLSX from 'xlsx';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExportService {\r\n\r\n constructor() { }\r\n\r\n fileType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\r\n fileExtension = '.xlsx';\r\n\r\n public exportExcel(jsonData: any[], fileName: string): void {\r\n\r\n const ws: XLSX.WorkSheet = XLSX.utils.json_to_sheet(jsonData);\r\n const wb: XLSX.WorkBook = { Sheets: { 'data': ws }, SheetNames: ['data'] };\r\n const excelBuffer: any = XLSX.write(wb, { bookType: 'xlsx', type: 'array' });\r\n this.saveExcelFile(excelBuffer, fileName);\r\n }\r\n\r\n private saveExcelFile(buffer: any, fileName: string): void {\r\n const data: Blob = new Blob([buffer], {type: this.fileType});\r\n FileSaver.saveAs(data, fileName + this.fileExtension);\r\n }\r\n}\r\n","import { Core } from 'tin-core';\r\nimport { logging } from 'protractor';\r\nimport { Injectable } from \"@angular/core\";\r\nimport { LogLevel } from '../classes/Classes';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class LogService {\r\n constructor() {}\r\n\r\n level: LogLevel = LogLevel.All;\r\n\r\n logToConsole: boolean = true;\r\n\r\n logToApi: boolean = false;\r\n\r\n debug(msg: string, ...optionalParams: any[]) {\r\n this.writeToLog(msg, LogLevel.Debug, optionalParams);\r\n }\r\n\r\n info(msg: string, ...optionalParams: any[]) {\r\n this.writeToLog(msg, LogLevel.Info, optionalParams);\r\n }\r\n\r\n warn(msg: string, ...optionalParams: any[]) {\r\n this.writeToLog(msg, LogLevel.Warn, optionalParams);\r\n }\r\n\r\n error(msg: string, ...optionalParams: any[]) {\r\n this.writeToLog(msg, LogLevel.Error, optionalParams);\r\n }\r\n\r\n fatal(msg: string, ...optionalParams: any[]) {\r\n this.writeToLog(msg, LogLevel.Fatal, optionalParams);\r\n }\r\n\r\n log(msg: string, ...optionalParams: any[]) {\r\n this.writeToLog(msg, LogLevel.All, optionalParams);\r\n\r\n }\r\n\r\n private writeToLog(msg: string, level: LogLevel, params: any[]) {\r\n\r\n if (this.shouldLog(level)) {\r\n\r\n // Build log string\r\n let value: string = Core.getFormatedDate(Date(),false).replace(\"T\",\" \");\r\n // value += \" - Type: \" + LogLevel[this.level];\r\n value += \" - Message: \" + msg;\r\n\r\n\r\n if (params.length) {\r\n value += \" - Extra Info: \" + this.formatParams(params);\r\n }\r\n\r\n // Log the value\r\n if (this.logToConsole){\r\n console.log(value);\r\n }\r\n\r\n if (this.logToApi){\r\n //Call API post\r\n }\r\n\r\n }\r\n }\r\n\r\n private formatParams(params: any[]): string {\r\n\r\n let ret: string = params.join(\",\");\r\n // Is there at least one object in the array?\r\n if (params.some((p) => typeof p == \"object\")) {\r\n ret = \"\";\r\n // Build comma-delimited string\r\n for (let item of params) {\r\n ret += JSON.stringify(item) + \",\";\r\n }\r\n }\r\n return ret;\r\n }\r\n\r\n private shouldLog(level: LogLevel): boolean {\r\n\r\n let ret: boolean = false;\r\n\r\n if (\r\n (level >= this.level && level !== LogLevel.Off) ||\r\n this.level === LogLevel.All\r\n ) {\r\n ret = true;\r\n }\r\n\r\n return ret;\r\n }\r\n}\r\n\r\n\r\n\r\n","import { MessageService } from './message.service';\r\n//-----------------Change for Build and Reference purposes for SERVICES ONLY---------//\r\nimport { Constants, HttpService } from 'tin-core';\r\n// import { HttpService, Constants } from 'tin-core';\r\n//----------------------------------------------------------------------------------//\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { Router, CanActivate } from '@angular/router';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { StorageService } from './storage.service';\r\nimport { LogService } from './log.service';\r\nimport { Role } from '../classes/Classes';\r\n// import { Constants } from \"tin-core\";\r\n\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class AuthService implements CanActivate {\r\n constructor(private storage: StorageService, public router: Router, private httpService: HttpService, private messageService: MessageService, private logService: LogService) {}\r\n\r\n\r\n //Logged in\r\n private loggedin: boolean = false;\r\n private loggedinSource = new BehaviorSubject(this.loggedin);\r\n public loggedinObserv = this.loggedinSource.asObservable();\r\n updateloggedin(loggedin: boolean) {\r\n this.loggedinSource.next(loggedin);\r\n this.loggedin = loggedin;\r\n }\r\n\r\n //Token\r\n private token: string = \"\";\r\n public tokenSource = new BehaviorSubject(this.token);\r\n public tokenObserv = this.tokenSource.asObservable();\r\n updateToken(newToken: string) {\r\n this.tokenSource.next(newToken);\r\n\r\n }\r\n\r\n //TokenExpire\r\n private tokenExpire: string = \"\";\r\n public tokenExpireSource = new BehaviorSubject(this.tokenExpire);\r\n public tokenExpireObserv = this.tokenExpireSource.asObservable();\r\n updateTokenExpire(newTokenExpire: string) {\r\n this.tokenExpireSource.next(newTokenExpire);\r\n\r\n }\r\n\r\n //Current User\r\n public currentUser: string = \"tnyagato\";\r\n private currentUserSource = new BehaviorSubject(this.currentUser);\r\n public currentUserObserv = this.currentUserSource.asObservable();\r\n updateCurrentUser(newUser: string) {\r\n this.currentUserSource.next(newUser.toLocaleLowerCase());\r\n this.currentUser = newUser.toLocaleLowerCase();\r\n }\r\n\r\n //Line Manager\r\n private islineManager: boolean = false;\r\n private isLineManagerSource = new BehaviorSubject(this.islineManager);\r\n public isLineManagerObserv = this.isLineManagerSource.asObservable();\r\n updateIsLineManager(manager: boolean) {\r\n this.isLineManagerSource.next(manager);\r\n }\r\n\r\n //Roles\r\n private currentRole = new Role;\r\n public currentRoleSource = new BehaviorSubject(this.currentRole);\r\n public myRoleObserv = this.currentRoleSource.asObservable();\r\n updateRole(role) {\r\n this.currentRoleSource.next(role);\r\n }\r\n\r\n //Logged in FirstName\r\n private loggedUserSource = new BehaviorSubject(\"tnyagato\");\r\n public loggedUserFullName = this.loggedUserSource.asObservable();\r\n updateLoggedUserFullName(username: string) {\r\n this.loggedUserSource.next(username);\r\n }\r\n\r\n\r\n //Authorisation\r\n isAuthorised(capName: string): boolean{\r\n\r\n\r\n\r\n if (!this.currentRoleSource.value[capName]) {\r\n // this.logService.info(`authorise: ${this.currentRoleSource.value.roleName} not authorised for ${capName}`);\r\n this.router.navigate([\"home\"]);\r\n this.messageService.toast(`Unauthorised: ${capName}`);\r\n\r\n return false;\r\n }else{\r\n return true;\r\n }\r\n\r\n }\r\n\r\n isValidToken(){\r\n\r\n\r\n let tokenExpire: Date = new Date(this.tokenExpireSource.value);\r\n let nowDate: Date = new Date();\r\n\r\n\r\n let valid: boolean = tokenExpire > nowDate;\r\n\r\n if (!valid){\r\n\r\n this.router.navigate([\"login\"]);\r\n this.messageService.toast(`Expired Session`);\r\n }\r\n\r\n return valid\r\n\r\n }\r\n\r\n canActivate() {\r\n\r\n\r\n if (this.loggedin && this.isValidToken()) {\r\n // this.logService.info(\"authentication: logged in\");\r\n return true;\r\n }\r\n\r\n if (localStorage.getItem(Constants.AUTH_USER) === null) {\r\n // this.logService.info(\"authentication: not logged and no cache\");\r\n\r\n this.updateloggedin(false);\r\n this.router.navigate([\"login\"]);\r\n return false;\r\n\r\n } else {\r\n // this.logService.info(\"authentication: not logged but allowed login\");\r\n\r\n this.updateloggedin(true);\r\n\r\n this.storage.get(Constants.AUTH_USER).then((resp: any) => {\r\n this.updateCurrentUser(resp);\r\n // console.log(\"user: \" + resp);\r\n });\r\n\r\n this.storage.get(Constants.AUTH_NAME).then((resp: any) => {\r\n this.updateLoggedUserFullName(resp);\r\n // console.log(\"name: \" + resp);\r\n });\r\n\r\n this.storage.get(Constants.AUTH_ROLES).then((resp) => {\r\n let ret = JSON.parse(resp);\r\n\r\n this.updateRole(ret);\r\n // console.log(\"role: \" + ret.roleName);\r\n });\r\n\r\n this.storage.get(Constants.AUTH_TOKEN).then((resp: any) => {\r\n this.updateToken(resp);\r\n // console.log(\"token: \" + resp);\r\n });\r\n\r\n this.storage.get(Constants.AUTH_TOKEN_EXPIRE).then((resp: any) => {\r\n this.updateTokenExpire(resp);\r\n this.isValidToken();\r\n });\r\n\r\n\r\n return true;\r\n }\r\n }\r\n}\r\n","import { AppConfig, HttpService } from 'tin-core';\r\nimport { Injectable } from '@angular/core';\r\nimport { CapItem, User } from '../classes/Classes';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DataService {\r\n\r\n constructor(private httpService: HttpService) {\r\n // httpService.apiUrl = \"http://localhost:20503/\";\r\n // httpService.apiUrl = \"http://localhost/basic/\";\r\n\r\n this.capUsers.name = \"cap3\";\r\n this.capUsers.display = \"Users\";\r\n this.capUsers.link = \"home/admin/users\";\r\n }\r\n\r\n capUsers = new CapItem;\r\n\r\n // public appConfig = new AppConfig; ///test\r\n\r\n public tmpProfileUserID = \"\";\r\n\r\n //Users\r\n\r\n public GetUser(by: string, val: string) {\r\n return this.httpService.Get(\"Basic/GetUser?by=\" + by + \"&val=\" + val);\r\n }\r\n\r\n public UpdateUser(user, action: string) {\r\n return this.httpService.Post(\"Basic/UpdateUser?action=\" + action, user);\r\n }\r\n\r\n public login(u: User) {\r\n return this.httpService.Post(\"Basic/login\", u);\r\n }\r\n\r\n public changePassword(u) {\r\n return this.httpService.Post(\"Basic/ChangePassword\", u);\r\n }\r\n\r\n public changePasswordAdmin(u) {\r\n return this.httpService.Post(\"Basic/ChangePasswordAdmin\", u);\r\n }\r\n\r\n public SelfReset(u: User): Observable<any> {\r\n return this.httpService.Post(\"Basic/SelfReset\", u);\r\n\r\n }\r\n\r\n\r\n //Roles\r\n\r\n public UpdateRole(role, action: string) {\r\n return this.httpService.Post(\"Basic/UpdateRole?action=\" + action, role);\r\n }\r\n\r\n public GetRole(by: string, val: string) {\r\n return this.httpService.Get(\"Basic/GetRole?by=\" + by + \"&val=\" + val);\r\n }\r\n\r\n\r\n //Account\r\n public UpdateAccount(account, action: string) {\r\n return this.httpService.Post(\"Basic/UpdateAccount?action=\" + action, account);\r\n }\r\n\r\n //Profile\r\n\r\n public GetProfile(by: string, val: string) {\r\n return this.httpService.Get(\"Basic/GetProfile?by=\" + by + \"&val=\" + val);\r\n }\r\n\r\n public UpdateProfile(profile, action: string) {\r\n return this.httpService.Post(\"Basic/UpdateProfile?action=\" + action, profile);\r\n }\r\n\r\n //Logs\r\n public GetLog(by: string, val: string) {\r\n return this.httpService.Get(\"Basic/GetLog?by=\" + by + \"&val=\" + val);\r\n }\r\n\r\n //Settings\r\n public GetSetting(by: string, val: string) {\r\n return this.httpService.Get(\"Basic/GetSetting?by=\" + by + \"&val=\" + val);\r\n }\r\n\r\n public UpdateSetting(setting, action: string) {\r\n return this.httpService.Post(\"Basic/UpdateSetting?action=\" + action, setting);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LoaderService {\r\n\r\n public isLoading = new BehaviorSubject(false);\r\n constructor() { }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { LoaderService } from '../../services/loader.service';\r\n\r\n@Component({\r\n selector: 'spa-loader',\r\n templateUrl: './loader.component.html',\r\n styleUrls: ['./loader.component.css']\r\n})\r\nexport class LoaderComponent implements OnInit {\r\n\r\n constructor(private loaderService: LoaderService) {\r\n\r\n this.loaderService.isLoading.subscribe((v) => {\r\n // console.log(v);\r\n this.loading = v;\r\n });\r\n\r\n }\r\n ngOnInit() {\r\n }\r\n\r\n @Input() logo = \"\";\r\n loading: boolean;\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatBadgeModule } from '@angular/material/badge';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatNativeDateModule, MAT_DATE_LOCALE } from '@angular/material/core';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatDialogModule, MAT_DIALOG_DEFAULT_OPTIONS } from '@angular/material/dialog';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSliderModule } from '@angular/material/slider';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatStepperModule } from '@angular/material/stepper';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n\r\n\r\n ],\r\n exports: [\r\n CommonModule,FormsModule, ReactiveFormsModule,\r\n MatMenuModule, MatSliderModule, MatTableModule, MatPaginatorModule,\r\n MatCheckboxModule, MatBadgeModule, MatButtonModule, MatIconModule, MatDialogModule, MatSnackBarModule,\r\n MatTabsModule, MatFormFieldModule, MatInputModule, MatCardModule, MatChipsModule, MatSelectModule,\r\n MatNativeDateModule, MatProgressSpinnerModule, MatListModule, MatAutocompleteModule, MatTooltipModule, MatSortModule,\r\n MatDatepickerModule, MatStepperModule, MatRadioModule,\r\n ],\r\n providers:[\r\n { provide: MAT_DIALOG_DEFAULT_OPTIONS, useValue: { disableClose: true, hasBackdrop: true } },\r\n { provide: MAT_DATE_LOCALE, useValue: \"en-GB\" },\r\n ]\r\n})\r\nexport class SpaMatModule { }\r\n","import { Router } from '@angular/router';\r\nimport { AuthService } from './auth.service';\r\nimport { MessageService } from './message.service';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpResponse, HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpErrorResponse} from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { LoaderService } from './loader.service';\r\nimport { LogService } from './log.service';\r\n\r\n@Injectable()\r\nexport class LoaderInterceptor implements HttpInterceptor {\r\n private requests: HttpRequest<any>[] = [];\r\n\r\n constructor(private loaderService: LoaderService, private messageService: MessageService, private authService: AuthService, private router: Router, private logService: LogService) { }\r\n\r\n\r\n removeRequest(req: HttpRequest<any>) {\r\n const i = this.requests.indexOf(req);\r\n if (i >= 0) {\r\n this.requests.splice(i, 1);\r\n }\r\n this.loaderService.isLoading.next(this.requests.length > 0);\r\n }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n\r\n\r\n let requestClone = request.clone({\r\n setHeaders: {\r\n Authorization: \"Basic \" + btoa(this.authService.currentUser + \":\" + this.authService.tokenSource.value)\r\n // Authorization: \"Basic \" + btoa(this.authService.currentUser + \":\" + \"j5Toszfr@ys\")\r\n }\r\n });\r\n\r\n this.requests.push(requestClone);\r\n\r\n if (this.requests.length > 1){\r\n this.logService.info(\"Multiple connections detected > \" + this.requests.length)\r\n }\r\n\r\n // this.logService.info(\"Executed > \" + requestClone.url)\r\n\r\n\r\n this.loaderService.isLoading.next(true);\r\n\r\n return Observable.create(observer => {\r\n\r\n const subscription = next.handle(requestClone)\r\n .subscribe(\r\n event => {\r\n if (event instanceof HttpResponse) {\r\n this.removeRequest(requestClone);\r\n observer.next(event);\r\n }\r\n },\r\n (err: HttpErrorResponse) => {\r\n\r\n this.messageService.toast('error: ' + err.statusText)\r\n\r\n this.removeRequest(requestClone);\r\n observer.error(err);\r\n\r\n if (err.status === 401) {\r\n //request is unathorised\r\n this.router.navigate([\"login\"]);\r\n }\r\n\r\n },\r\n () => {\r\n this.removeRequest(requestClone);\r\n observer.complete();\r\n });\r\n\r\n\r\n // remove request from queue when cancelled\r\n return () => {\r\n this.removeRequest(requestClone);\r\n subscription.unsubscribe();\r\n };\r\n\r\n });\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-tin-spa',\r\n template: `\r\n <p>\r\n tin-spa works!\r\n </p>\r\n `,\r\n styles: []\r\n})\r\nexport class TinSpaComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import { DataService } from './../../services/data.service';\r\nimport { AppConfig } from './../../classes/Classes';\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-nav-menu',\r\n templateUrl: './nav-menu.component.html',\r\n styleUrls: ['./nav-menu.component.css']\r\n})\r\nexport class NavMenuComponent {\r\n\r\n constructor(public router: Router, public authService: AuthService) { }\r\n\r\n ngOnInit() {\r\n\r\n this.authService.loggedUserFullName.subscribe(user => this.loggedUserFullName = user)\r\n this.authService.myRoleObserv.subscribe(rol => this.myRole = rol);\r\n this.authService.loggedinObserv.subscribe(obj => this.loggedin = obj)\r\n\r\n }\r\n\r\n myRole;\r\n loggedUserFullName: string;\r\n loggedin: boolean;\r\n isExpanded = false;\r\n\r\n @Input() appConfig = new AppConfig();\r\n\r\n\r\n\r\n collapse() {\r\n this.isExpanded = false;\r\n }\r\n\r\n toggle() {\r\n this.isExpanded = !this.isExpanded;\r\n }\r\n\r\n // logoff() {\r\n // // this.authService.updateloggedin(false);\r\n // // this.authService.updateRole(new Role());\r\n // this.router.navigate([\"login\"]);\r\n // // this.storageService.clear();\r\n // }\r\n\r\n redirectTo(link: string){\r\n\r\n if (link!=\"\"){\r\n this.router.navigate([link]);\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n\r\n\r\n}\r\n","import { Router } from '@angular/router';\r\nimport { Component, OnInit } from '@angular/core';\r\n\r\nimport {Idle, DEFAULT_INTERRUPTSOURCES} from '@ng-idle/core';\r\nimport {Keepalive} from '@ng-idle/keepalive';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-timeout',\r\n templateUrl: './timeout.component.html',\r\n styleUrls: ['./timeout.component.css']\r\n})\r\nexport class TimeoutComponent implements OnInit {\r\n\r\n constructor(private idle: Idle, private keepalive: Keepalive, public authService: AuthService, private router: Router) {\r\n\r\n this.authService.loggedinObserv.subscribe(obj => {\r\n this.loggedin = obj;\r\n // if (this.loggedin){\r\n // this.startWatch();\r\n // }else{\r\n // this.stopWatch();\r\n // }\r\n\r\n })\r\n\r\n // sets an idle timeout of 5 seconds, for testing purposes.\r\n idle.setIdle(900);\r\n // sets a timeout period of 5 seconds. after 10 seconds of inactivity, the user will be considered timed out.\r\n idle.setTimeout(10);\r\n // sets the default interrupts, in this case, things like clicks, scrolls, touches to the document\r\n idle.setInterrupts(DEFAULT_INTERRUPTSOURCES);\r\n\r\n\r\n idle.onIdleStart.subscribe(() => {\r\n this.idleState = 'You\\'ve gone idle!';\r\n });\r\n\r\n idle.onIdleEnd.subscribe(() => {\r\n this.idleState = 'No longer idle.';\r\n this.isWarning = false;\r\n });\r\n\r\n idle.onTimeoutWarning.subscribe((countdown) => {\r\n this.idleState = 'You will be signed out in ' + countdown + ' seconds!';\r\n\r\n if (this.loggedin){\r\n this.isWarning = true;\r\n }\r\n\r\n });\r\n\r\n idle.onTimeout.subscribe(() => {\r\n this.idleState = 'Timed out!';\r\n this.timedOut = true;\r\n\r\n //action\r\n this.stopWatch();\r\n });\r\n\r\n\r\n\r\n\r\n\r\n // sets the ping interval to 15 seconds\r\n keepalive.interval(15);\r\n\r\n keepalive.onPing.subscribe(() => {\r\n this.lastPing = new Date();\r\n });\r\n\r\n this.startWatch();\r\n }\r\n\r\n loggedin = false;\r\n idleState = 'Not started.';\r\n timedOut = false;\r\n lastPing?: Date = null;\r\n isWarning = false;\r\n\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n startWatch() {\r\n this.idle.watch();\r\n this.idleState = 'Started.';\r\n this.timedOut = false;\r\n this.isWarning = false;\r\n }\r\n\r\n stopWatch(){\r\n this.idle.stop();\r\n this.isWarning = false;\r\n this.router.navigate(['login']);\r\n }\r\n\r\n using(){\r\n //remove message and continue\r\n this.isWarning = false;\r\n }\r\n\r\n\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { ActionResponse, Operator, TableColumnType, TableConfig } from '../../classes/Classes';\r\n\r\n@Component({\r\n selector: 'spa-table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.css']\r\n})\r\nexport class TableComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n\r\n // console.log(\"Init\")\r\n this.config.columns.forEach(element => {\r\n this.displayedColumns.push(element.name);\r\n });\r\n\r\n this.displayedColumns.push(\"Action\")\r\n\r\n this.styleString = `width: ${50 * this.config.actions.length}px`;\r\n\r\n }\r\n\r\n ngOnChanges(){\r\n // console.log(\"OnChange\")\r\n this.data = new MatTableDataSource(this.data);\r\n this.data.paginator = this.tablePaginator;\r\n this.applyFilter(this._filterText);\r\n }\r\n\r\n\r\n @Input() config: TableConfig;\r\n @Input() data: any;\r\n @Output() dataChange = new EventEmitter();\r\n @Output() buttonClick = new EventEmitter();\r\n @Output() loadClick = new EventEmitter();\r\n @Output() createClick = new EventEmitter();\r\n\r\n @ViewChild('tablePaginator') tablePaginator: MatPaginator;\r\n\r\n colType = TableColumnType\r\n op = Operator\r\n\r\n displayedColumns: string[] = [];\r\n\r\n styleString: string;\r\n\r\n _filterText = \"\";\r\n applyFilter(filterValue: string) {\r\n this.data.filter = filterValue.trim().toLowerCase();\r\n }\r\n\r\n do(name, item) {\r\n\r\n let resp = new ActionResponse();\r\n resp.name = name;\r\n resp.value = item;\r\n this.buttonClick.emit(resp);\r\n }\r\n\r\n\r\n create(){\r\n this.createClick.emit();\r\n }\r\n\r\n load(){\r\n this.loadClick.emit();\r\n }\r\n\r\n test(a:any, op: Operator, b: any){\r\n\r\n if (op == Operator.Equal){\r\n if (a == b){\r\n return true;\r\n }else{\r\n return false;\r\n }\r\n\r\n }\r\n\r\n if (op == Operator.Greater) {\r\n if (a > b) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n if (op == Operator.Less) {\r\n if (a < b) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n if (op == Operator.NotEqual) {\r\n if (a != b) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { Tile } from '../../classes/Classes';\r\n\r\n\r\n@Component({\r\n selector: 'spa-tiles',\r\n templateUrl: './tiles.component.html',\r\n styleUrls: ['./tiles.component.css']\r\n})\r\nexport class TilesComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() tiles: Tile[];\r\n\r\n @Input() clickable: boolean = false;\r\n @Output() tileClick = new EventEmitter();\r\n\r\n selected: string = \"\";\r\n\r\n clicked(v: Tile){\r\n\r\n if(!this.clickable) return;\r\n\r\n\r\n if(this.selected == v.tileName){\r\n this.tileClick.emit(\"\");\r\n this.selected = \"\";\r\n }else{\r\n this.tileClick.emit(v.tileName);\r\n this.selected = v.tileName;\r\n }\r\n\r\n\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit, Output } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { EventEmitter } from 'protractor';\r\nimport { Core } from \"tin-core\";\r\n\r\n@Component({\r\n selector: 'spa-date',\r\n templateUrl: './date.component.html',\r\n styleUrls: ['./date.component.css']\r\n})\r\nexport class DateComponent implements OnInit {\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() date = new FormControl(new Date());\r\n @Input() display = \"\";\r\n @Input() readonly = false;\r\n\r\n currentYear = new Date().getFullYear();\r\n @Input() min = new FormControl(new Date(this.currentYear - 50, 0, 1));\r\n @Input() max = new FormControl(new Date(this.currentYear + 50, 0, 1));\r\n\r\n // @Output() dateChange = new EventEmitter();\r\n\r\n\r\n // minDate: Date = new Date(this.currentYear, 2, 2);\r\n // maxDate: Date = new Date(this.currentYear, 2, 10);\r\n\r\n\r\n onChangeEvent(d){\r\n // this.dateChange.emit(d);\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { map, startWith } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'spa-text',\r\n templateUrl: './text.component.html',\r\n styleUrls: ['./text.component.css']\r\n})\r\nexport class TextComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n\r\n if(this.options.length > 0){\r\n this.initFilter();\r\n }\r\n\r\n if (this.placeholder == \"\") {\r\n this.placeholder = this.display;\r\n }\r\n\r\n }\r\n\r\n ngAfterViewInit(){\r\n\r\n if (this.readonly) {\r\n this.control.setValidators(null);\r\n this.control.updateValueAndValidity();\r\n }\r\n if (!this.required && !this.readonly){\r\n\r\n this.control.setValidators([Validators.minLength(this.min), Validators.maxLength(this.max), Validators.pattern(this.regex)]);\r\n this.control.updateValueAndValidity();\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n // options: FormGroup;\r\n hideRequiredControl = new FormControl(true);\r\n\r\n @Input() readonly = false;\r\n @Input() hint = \"\";\r\n @Input() display = \"\";\r\n @Input() placeholder = \"\";\r\n @Input() value = \"\";\r\n @Output() valueChange = new EventEmitter();\r\n @Input() format = \"text\";\r\n\r\n @Output() leave = new EventEmitter();\r\n @Output() enterPress = new EventEmitter();\r\n\r\n @Input() rows = \"\";\r\n @Input() width = \"100%\"\r\n\r\n\r\n //Autocomplete items\r\n @Input() options: any = [];\r\n @Input() optionValue = \"\";\r\n @Input() optionDisplay = \"\";\r\n\r\n myControl = new FormControl();\r\n filteredOptions: Observable<string[]>;\r\n\r\n private initFilter() {\r\n this.filteredOptions = this.myControl.valueChanges.pipe(\r\n startWith(\"\"),\r\n map((value) => this._filter(value))\r\n );\r\n }\r\n\r\n private _filter(value: string): string[] {\r\n const filterValue = value.toLowerCase();\r\n\r\n return this.options.filter((option) => option[`${this.optionDisplay}`].toLowerCase().includes(filterValue));\r\n }\r\n\r\n\r\n\r\n\r\n\r\n //validations\r\n @Input() required = true;\r\n @Input() min = 0;\r\n @Input() max = 9000000000000000; //Math.max\r\n @Input() regex = \"\" //\"[a-zA-Z ]*\" //\"/\\S+@\\S+\\.\\S+/\";\r\n\r\n changed(){\r\n // console.log(\"value: \" + this.value)\r\n // console.log(\"cont: \" + this.myControl.value)\r\n\r\n // if (this.options.length > 0) {\r\n // this.value = this.myControl.value;\r\n // }\r\n\r\n this.valueChange.emit(this.value);\r\n\r\n }\r\n\r\n changed2() {\r\n // console.log(\"value: \" + this.value)\r\n // console.log(\"cont: \" + this.myControl.value)\r\n\r\n // if (this.options.length > 0) {\r\n // this.value = this.myControl.value;\r\n // }\r\n\r\n this.valueChange.emit(this.myControl.value);\r\n\r\n }\r\n\r\n leaved(){\r\n this.leave.emit();\r\n }\r\n\r\n enterPressed() {\r\n this.enterPress.emit();\r\n }\r\n\r\n control = new FormControl( this.value, [Validators.required, Validators.minLength(this.min), Validators.maxLength(this.max), Validators.pattern(this.regex) ]);\r\n\r\n validate() : string{\r\n\r\n\r\n if ((this.required || this.min > 0) && this.control.hasError('required') ){\r\n return `Required`;\r\n }\r\n\r\n if (this.control.hasError('minlength') ){\r\n return `Minimun length is ${this.min}`;\r\n }\r\n\r\n if (this.control.hasError('maxlength')) {\r\n return `Maximum length is ${this.max}`;\r\n }\r\n\r\n if (this.control.hasError('pattern')) {\r\n return `Invalid Input`;\r\n }\r\n\r\n\r\n // if (this.regex != \"\"){\r\n\r\n // let r = new RegExp(this.regex, \"g\");\r\n\r\n // if (!r.test(this.value)){\r\n // this.valid = false;\r\n // this.errorMessage = \"Invalid input\";\r\n // return this.errorMessage;\r\n // }\r\n // }\r\n\r\n return \"\";\r\n }\r\n\r\n}\r\n","//-------------------------------------------EDIT\r\n\r\nimport { Component, OnInit, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { HttpService } from 'tin-core';\r\n\r\n@Component({\r\n selector: 'app-editRequest',\r\n templateUrl: './viewerDialog.component.html',\r\n styleUrls: ['./viewer.component.css']\r\n})\r\nexport class viewerDialog implements OnInit {\r\n\r\n constructor(private httpService: HttpService, @Inject(MAT_DIALOG_DATA) public data) { }\r\n\r\n ngOnInit() {\r\n\r\n this.fileNames = this.data.fileNames;\r\n this.path = this.data.path;\r\n this.fileName = this.data.fileName;\r\n this.currIndex = this.data.fileNames.indexOf(this.fileName);\r\n this.setURL();\r\n\r\n }\r\n\r\n isProcessing: boolean = false;\r\n\r\n path: string;\r\n fileNames = new Array();\r\n fileName: string;\r\n currIndex = 0;\r\n\r\n currentFileUrl = \"\";\r\n\r\n\r\n previous() {\r\n\r\n if (this.fileNames.length == 0) {\r\n return;\r\n }\r\n\r\n if (this.currIndex -1 >= 0)\r\n {\r\n this.currIndex = this.currIndex - 1;\r\n }\r\n else if (this.currIndex == 0)\r\n {\r\n this.currIndex = this.fileNames.length -1;\r\n }\r\n\r\n this.setURL();\r\n\r\n }\r\n\r\n next() {\r\n\r\n if (this.fileNames.length == 0){\r\n return;\r\n }\r\n\r\n if (this.currIndex +1 < this.fileNames.length)\r\n {\r\n this.currIndex = this.currIndex + 1;\r\n }\r\n else if (this.currIndex +1 > this.fileNames.length -1)\r\n {\r\n this.currIndex = 0;\r\n }\r\n\r\n this.setURL();\r\n\r\n }\r\n\r\n imageDoc = false;\r\n setURL() {\r\n // this.currentFileUrl = this.httpService.apiUrl.replace(\"/api/\", \"/files/\") + '' + \"/\" + this.files[this.currIndex];\r\n\r\n this.currentFileUrl = `${this.httpService.apiUrl.replace(\"/api/\", \"/\")}${this.path.replace(\"//\", \"/\")}/${this.fileNames[this.currIndex]}` ;\r\n\r\n if (this.currentFileUrl.toLocaleLowerCase().endsWith(\".pdf\") || this.currentFileUrl.toLocaleLowerCase().endsWith(\".jpg\") || this.currentFileUrl.toLocaleLowerCase().endsWith(\".jpeg\")){\r\n this.imageDoc = true;\r\n }else{\r\n this.imageDoc = false\r\n window.open(this.currentFileUrl, '_blank');\r\n\r\n }\r\n\r\n }\r\n\r\n change(fileName){\r\n\r\n this.currIndex = this.fileNames.indexOf(fileName);\r\n this.setURL();\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { viewerDialog } from './viewerDialog.component';\r\n\r\n@Component({\r\n selector: 'spa-viewer',\r\n templateUrl: './viewer.component.html',\r\n styleUrls: ['./viewer.component.css']\r\n})\r\nexport class ViewerComponent implements OnInit {\r\n\r\n constructor(public dialog: MatDialog) { }\r\n\r\n ngOnInit(): void {\r\n // console.log(`${this.dir}/${this.folderName}`)\r\n }\r\n\r\n\r\n @Input() dir = \"\";\r\n @Input() folderName=\"\";\r\n @Input() fileNames = new Array()\r\n @Input() removable = false;\r\n @Output() remove = new EventEmitter();\r\n @Input() display = \"Documents\";\r\n @Input() title = \"Documents\";\r\n\r\n // fileList: string[];\r\n\r\n\r\n viewDocs(fileName: string) {\r\n\r\n if (typeof fileName != 'string') {\r\n return;\r\n }\r\n\r\n\r\n // console.log(\"opening doc: \" + fileName)\r\n\r\n const dialogRef = this.dialog.open(viewerDialog, {\r\n minWidth: '1500px',\r\n maxWidth: '80vw',\r\n\r\n data: { fileNames: this.fileNames, fileName: fileName, path:`${this.dir}/${this.folderName}` }\r\n });\r\n\r\n }\r\n\r\n removed(i){\r\n this.remove.emit(i);\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'spa-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.css']\r\n})\r\nexport class SelectComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n // this.displayValue = this.options.filter((m) => m.optionValue == this.value)\r\n // console.log(this.displayValue)\r\n // this.displayValue = this.value\r\n }\r\n\r\n ngOnChanges() {\r\n\r\n if (this.readonlyMode != \"\" && this.options.length > 0){\r\n this.displayValue = this.options.filter((m) => m[`${this.optionValue}`] == this.value)[0][`${this.optionDisplay}`]\r\n }\r\n\r\n }\r\n\r\n displayValue;\r\n\r\n @Input() width = \"100%\"\r\n @Input() readonly = false;\r\n @Input() readonlyMode = \"\";\r\n @Input() hint = \"\";\r\n\r\n\r\n @Input() display = \"\";\r\n @Input() value = \"\";\r\n @Input() options: any;\r\n @Input() optionValue = \"\";\r\n @Input() optionDisplay = \"\";\r\n @Input() optionDisplayExtra = \"\";\r\n\r\n @Output() valueChange = new EventEmitter();\r\n\r\n\r\n\r\n changed(){\r\n this.valueChange.emit(this.value);\r\n\r\n }\r\n\r\n selectChanged(){\r\n\r\n }\r\n\r\n}\r\n\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n\r\n@Component({\r\n selector: 'spa-check',\r\n templateUrl: './check.component.html',\r\n styleUrls: ['./check.component.css']\r\n})\r\nexport class CheckComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() readonly = false;\r\n @Input() display = \"\";\r\n @Input() value = false;\r\n @Output() valueChange = new EventEmitter();\r\n @Output() click = new EventEmitter();\r\n @Output() check = new EventEmitter();\r\n @Output() uncheck = new EventEmitter();\r\n\r\n changed(){\r\n this.valueChange.emit(this.value);\r\n }\r\n\r\n clicked(){\r\n this.click.emit();\r\n\r\n if(!this.value){\r\n this.checked();\r\n }else{\r\n this.unchecked();\r\n }\r\n }\r\n\r\n checked(){\r\n this.check.emit();\r\n }\r\n unchecked(){\r\n this.uncheck.emit();\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n\r\n@Component({\r\n selector: 'spa-attach',\r\n templateUrl: './attach.component.html',\r\n styleUrls: ['./attach.component.scss']\r\n})\r\nexport class AttachComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() message = \"Drag and drop files here\"\r\n @Input() files: any[] = [];\r\n @Output() filesChange = new EventEmitter();\r\n @Output() upload = new EventEmitter();\r\n\r\n\r\n @Input() enableUpload = false;\r\n\r\n\r\n /**\r\n * on file drop handler\r\n */\r\n onFileDropped($event) {\r\n this.prepareFilesList($event);\r\n }\r\n\r\n /**\r\n * handle file from browsing\r\n */\r\n fileBrowseHandler(files) {\r\n this.prepareFilesList(files);\r\n }\r\n\r\n /**\r\n * Delete file from files list\r\n * @param index (File index)\r\n */\r\n deleteFile(index: number) {\r\n this.files.splice(index, 1);\r\n }\r\n\r\n /**\r\n * Simulate the upload process\r\n */\r\n // uploadFilesSimulator(index: number) {\r\n // setTimeout(() => {\r\n // if (index === this.files.length) {\r\n // return;\r\n // } else {\r\n // const progressInterval = setInterval(() => {\r\n // if (this.files[index].progress === 100) {\r\n // clearInterval(progressInterval);\r\n // this.uploadFilesSimulator(index + 1);\r\n // } else {\r\n // this.files[index].progress += 5;\r\n // }\r\n // }, 200);\r\n // }\r\n // }, 1000);\r\n // }\r\n\r\n /**\r\n * Convert Files list to normal array list\r\n * @param files (Files List)\r\n */\r\n prepareFilesList(files: Array<any>) {\r\n for (const item of files) {\r\n item.progress = 0;\r\n this.files.push(item);\r\n }\r\n // this.uploadFilesSimulator(0);\r\n }\r\n\r\n /**\r\n * format bytes\r\n * @param bytes (File size in bytes)\r\n * @param decimals (Decimals point)\r\n */\r\n formatBytes(bytes, decimals) {\r\n if (bytes === 0) {\r\n return '0 Bytes';\r\n }\r\n const k = 1024;\r\n const dm = decimals <= 0 ? 0 : decimals || 2;\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\r\n }\r\n\r\n uploaded(){\r\n this.upload.emit();\r\n }\r\n\r\n filesChanged(){\r\n this.filesChange.emit(this.files);\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'spa-datetime',\r\n templateUrl: './datetime.component.html',\r\n styleUrls: ['./datetime.component.css']\r\n})\r\nexport class DatetimeComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() display = \"\";\r\n @Input() value = \"\";\r\n @Output() valueChange = new EventEmitter();\r\n @Input() readonly = false;\r\n\r\n @Input() min = \"01 jan 1900\";\r\n\r\n @Input() max = \"31 dec 9999\";\r\n\r\n changed() {\r\n this.valueChange.emit(this.value);\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n// import { CurrencyPipe } from '@angular/common';\r\nimport { Core } from 'tin-core';\r\n\r\n@Component({\r\n selector: 'spa-money',\r\n templateUrl: './money.component.html',\r\n styleUrls: ['./money.component.css']\r\n})\r\nexport class MoneyComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n\r\n\r\n }\r\n\r\n ngOnChanges() {\r\n\r\n }\r\n\r\n @Input() readonly = false;\r\n @Input() display = \"\";\r\n @Input() value = \"\";\r\n @Output() valueChange = new EventEmitter();\r\n\r\n @Input() width = \"100%\"\r\n @Input() hint = \"\";\r\n @Input() currency = \"$\";\r\n\r\n\r\n\r\n\r\n\r\n changed(){\r\n\r\n this.valueChange.emit(this.value);\r\n\r\n }\r\n\r\n\r\n}\r\n","import {\r\n Directive,\r\n Output,\r\n Input,\r\n EventEmitter,\r\n HostBinding,\r\n HostListener\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appDnd]'\r\n})\r\nexport class DndDirective {\r\n @HostBinding('class.fileover') fileOver: boolean;\r\n @Output() fileDropped = new EventEmitter<any>();\r\n\r\n // Dragover listener\r\n @HostListener('dragover', ['$event']) onDragOver(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = true;\r\n }\r\n\r\n // Dragleave listener\r\n @HostListener('dragleave', ['$event']) public onDragLeave(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = false;\r\n }\r\n\r\n // Drop listener\r\n @HostListener('drop', ['$event']) public ondrop(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = false;\r\n let files = evt.dataTransfer.files;\r\n if (files.length > 0) {\r\n this.fileDropped.emit(files);\r\n }\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { MessageService } from '../../services/message.service';\r\n@Component({\r\n selector: 'spa-chips',\r\n templateUrl: './chips.component.html',\r\n styleUrls: ['./chips.component.css']\r\n})\r\nexport class ChipsComponent implements OnInit {\r\n\r\n constructor(private messageService: MessageService) { }\r\n\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n\r\n @Input() icon = \"\";\r\n @Input() removable = false;\r\n @Input() addable = false;\r\n\r\n\r\n\r\n @Input() chips: string[];\r\n // @Output() chipClick = new EventEmitter();\r\n\r\n @Output() click = new EventEmitter();\r\n\r\n @Output() remove = new EventEmitter();\r\n\r\n clicked(chip: string) {\r\n\r\n console.log(\"Clicked chip: \" + chip)\r\n\r\n if (typeof chip != 'string') {\r\n return;\r\n }\r\n\r\n if (chip) {\r\n this.click.emit(chip);\r\n }\r\n }\r\n\r\n\r\n removed(chip) {\r\n\r\n // const index = this.chips.indexOf(chip);\r\n\r\n // if (index >= 0) {\r\n // this.chips.splice(index, 1);\r\n // }\r\n\r\n this.messageService.confirm(`Remove ${chip} ?`).subscribe((result) => {\r\n if (result == \"yes\") {\r\n\r\n this.remove.emit(chip);\r\n\r\n };\r\n });\r\n\r\n }\r\n\r\n}\r\n\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'spa-activity',\r\n templateUrl: './activity.component.html',\r\n styleUrls: ['./activity.component.css']\r\n})\r\nexport class ActivityComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() notes = new Array();\r\n notesMessage: string = \"Empty\";\r\n @Input() title = \"Notes\"\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { AngularEditorConfig } from '@kolkov/angular-editor';\r\n\r\n@Component({\r\n selector: 'spa-html',\r\n templateUrl: './html.component.html',\r\n styleUrls: ['./html.component.css']\r\n})\r\nexport class HtmlComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() value = \"\";\r\n @Output() valueChange = new EventEmitter();\r\n @Input() readonly = false;\r\n\r\n changed() {\r\n this.valueChange.emit(this.value);\r\n }\r\n\r\n ngOnChanges() {\r\n // console.log(\"OnChange\")\r\n this.config.editable = !this.readonly;\r\n\r\n }\r\n\r\n @Input() config: AngularEditorConfig = {\r\n editable: true,\r\n spellcheck: true,\r\n height: 'auto',\r\n minHeight: '5rem',\r\n placeholder: 'Enter text here...',\r\n translate: 'no',\r\n defaultParagraphSeparator: '',\r\n defaultFontName: 'Arial',\r\n toolbarHiddenButtons: [\r\n [\r\n 'bold',\r\n 'italic',\r\n 'underline',\r\n 'strikeThrough',\r\n 'subscript',\r\n 'superscript',\r\n 'justifyLeft',\r\n 'justifyCenter',\r\n 'justifyRight',\r\n 'justifyFull',\r\n 'indent',\r\n 'outdent',\r\n 'insertUnorderedList',\r\n 'insertOrderedList',\r\n 'heading',\r\n 'fontName'\r\n ],\r\n [\r\n 'fontSize',\r\n 'textColor',\r\n 'backgroundColor',\r\n 'customClasses',\r\n 'link',\r\n 'unlink',\r\n 'insertImage',\r\n 'insertVideo',\r\n 'insertHorizontalRule',\r\n 'removeFormat',\r\n 'toggleEditorMode'\r\n ]\r\n ],\r\n customClasses: [\r\n {\r\n name: \"quote\",\r\n class: \"quote\",\r\n },\r\n {\r\n name: 'redText',\r\n class: 'redText'\r\n },\r\n {\r\n name: \"titleText\",\r\n class: \"titleText\",\r\n tag: \"h1\",\r\n },\r\n ]\r\n };\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'spa-option',\r\n templateUrl: './option.component.html',\r\n styleUrls: ['./option.component.css']\r\n})\r\nexport class OptionComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n\r\n\r\n @Input() options: any;\r\n @Input() optionValue = \"\";\r\n @Input() optionDisplay = \"\";\r\n @Input() readonly = false;\r\n\r\n @Input() value = \"\";\r\n @Input() display = \"\";\r\n @Input() show: boolean = false;\r\n\r\n\r\n @Output() valueChange = new EventEmitter();\r\n @Output() enterPress = new EventEmitter();\r\n\r\n changed() {\r\n this.valueChange.emit(this.value);\r\n }\r\n\r\n enterPressed(){\r\n this.valueChange.emit();\r\n }\r\n\r\n resetValue(){\r\n this.value = \"\";\r\n this.changed();\r\n\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'spa-label',\r\n templateUrl: './label.component.html',\r\n styleUrls: ['./label.component.css']\r\n})\r\nexport class LabelComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() display = \"\";\r\n @Input() value = \"\";\r\n @Input() format = \"text\";\r\n\r\n}\r\n","import { AfterViewInit, Component, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { MatStepper } from '@angular/material/stepper';\r\nimport { STEPPER_GLOBAL_OPTIONS } from '@angular/cdk/stepper';\r\nimport { Step } from '../../classes/Classes';\r\n\r\n@Component({\r\n selector: 'spa-steps',\r\n templateUrl: './steps.component.html',\r\n styleUrls: ['./steps.component.css'],\r\n providers: [{\r\n provide: STEPPER_GLOBAL_OPTIONS, useValue: { displayDefaultIndicatorType: false }\r\n }]\r\n})\r\nexport class StepsComponent implements OnInit, AfterViewInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n ngAfterViewInit() {\r\n\r\n }\r\n\r\n ngOnChanges() {\r\n // console.log(\"OnChange\")\r\n this.pushSteps();\r\n }\r\n\r\n @ViewChild('stepper') stepper: MatStepper;\r\n @Input() value = \"\";\r\n @Input() steps: Step[];\r\n\r\n setStepper() {\r\n\r\n if (this.value == \"\") return;\r\n\r\n // console.log(this.value)\r\n\r\n // this.stepper.disableRipple = true;\r\n this.stepper.selectedIndex = 0;\r\n\r\n switch (this.value) {\r\n\r\n\r\n\r\n case \"Draft\":\r\n this.stepper.selectedIndex = 0;\r\n break;\r\n\r\n case \"Head Approval\":\r\n this.pushStepper(1)\r\n break;\r\n\r\n case \"CE Approval\":\r\n this.pushStepper(2)\r\n break;\r\n\r\n case \"Booking\":\r\n this.pushStepper(3)\r\n break;\r\n\r\n case \"BTA Approval\":\r\n this.pushStepper(4)\r\n break;\r\n\r\n case \"Travel\":\r\n this.pushStepper(5)\r\n break;\r\n\r\n case \"BTR Approval\":\r\n this.pushStepper(6)\r\n break;\r\n\r\n case \"Travel Closure\":\r\n this.pushStepper(7)\r\n break;\r\n\r\n }\r\n\r\n }\r\n\r\n pushStepper(count: number) {\r\n\r\n for (let index = 0; index < count + 1; index++) {\r\n // const element = array[index];\r\n this.stepper.selectedIndex = index;\r\n // console.log(\"pushed\")\r\n\r\n }\r\n\r\n }\r\n\r\n pushSteps(){\r\n\r\n if(this.steps.length == 0) return;\r\n if (this.value == \"\") return;\r\n this.stepper.selectedIndex = 0;\r\n\r\n\r\n let i = 0;\r\n\r\n for (let step of this.steps) {\r\n\r\n if (step.name != this.value) {\r\n\r\n this.stepper.selectedIndex = i;\r\n i++;\r\n\r\n } else {\r\n\r\n this.stepper.selectedIndex = i;\r\n // console.log(\"Stopped\")\r\n break;\r\n\r\n }\r\n }\r\n\r\n }\r\n\r\n}\r\n","import { LoaderComponent } from './components/loader/loader.component';\r\nimport { SpaMatModule } from \"./modules/spa-mat.module\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { LoaderInterceptor } from './services/loader-interceptor.service';\r\nimport { NgIdleKeepaliveModule } from '@ng-idle/keepalive';\r\nimport { MomentModule } from 'angular2-moment';\r\nimport { NgxDocViewerModule } from 'ngx-doc-viewer';\r\n\r\nimport { TinSpaComponent } from \"./components/tin-spa.component\";\r\nimport { NavMenuComponent } from \"./components/nav-menu/nav-menu.component\";\r\nimport { messageDialog } from \"./components/message/messageDialog.component\";\r\nimport { TimeoutComponent } from './components/timeout/timeout.component';\r\nimport { HashLocationStrategy, LocationStrategy } from '@angular/common';\r\nimport { TableComponent } from './components/table/table.component';\r\nimport { TilesComponent } from './components/tiles/tiles.component';\r\nimport { DateComponent } from './components/date/date.component';\r\nimport { TextComponent } from './components/text/text.component';\r\nimport { ViewerComponent } from './components/viewer/viewer.component';\r\nimport { SelectComponent } from './components/select/select.component';\r\nimport { CheckComponent } from './components/check/check.component';\r\nimport { AttachComponent } from './components/attach/attach.component';\r\nimport { DatetimeComponent } from './components/datetime/datetime.component';\r\nimport { MoneyComponent } from './components/money/money.component';\r\nimport { DndDirective } from './dnd.directive';\r\nimport { ChipsComponent } from './components/chips/chips.component';\r\nimport { ActivityComponent } from './components/activity/activity.component';\r\nimport { viewerDialog } from './components/viewer/viewerDialog.component';\r\nimport { HtmlComponent } from './components/html/html.component';\r\nimport { AngularEditorModule } from '@kolkov/angular-editor';\r\nimport { OptionComponent } from './components/option/option.component';\r\nimport { LabelComponent } from './components/label/label.component';\r\nimport { StepsComponent } from './components/steps/steps.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [DndDirective,TinSpaComponent, messageDialog, NavMenuComponent, LoaderComponent,\r\n TimeoutComponent, TableComponent, TilesComponent, DateComponent, TextComponent,\r\n ViewerComponent, SelectComponent, CheckComponent, AttachComponent, DatetimeComponent,\r\n MoneyComponent,\r\n ChipsComponent,\r\n ActivityComponent, viewerDialog, HtmlComponent, OptionComponent, LabelComponent, StepsComponent ],\r\n\r\n entryComponents: [messageDialog],\r\n\r\n imports: [\r\n ReactiveFormsModule.withConfig({ warnOnNgModelWithFormControl: \"never\" }),\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SpaMatModule,\r\n MomentModule,\r\n NgxDocViewerModule,\r\n AngularEditorModule,\r\n\r\n NgIdleKeepaliveModule.forRoot()\r\n ],\r\n\r\n exports: [\r\n CommonModule,\r\n FormsModule,\r\n SpaMatModule,\r\n TinSpaComponent,\r\n messageDialog,\r\n NavMenuComponent,\r\n LoaderComponent,\r\n TimeoutComponent,\r\n TableComponent,\r\n TilesComponent,\r\n DateComponent,\r\n ViewerComponent,\r\n SelectComponent,\r\n TextComponent,\r\n DatetimeComponent,\r\n CheckComponent,\r\n AttachComponent,\r\n MoneyComponent,\r\n ChipsComponent,\r\n ActivityComponent,\r\n HtmlComponent,\r\n OptionComponent,\r\n LabelComponent,\r\n StepsComponent\r\n\r\n ],\r\n\r\n providers: [\r\n\r\n { provide: HTTP_INTERCEPTORS, useClass: LoaderInterceptor, multi: true },\r\n { provide: LocationStrategy, useClass: HashLocationStrategy}\r\n ],\r\n})\r\nexport class TinSpaModule {}\r\n","//-----------------Change for Build and Reference purposes for SERVICES ONLY---------//\r\nimport { HttpService, ApiResponse, Core, Constants } from \"tin-core\";\r\n// import { HttpService,ApiResponse, Core, Constants } from 'tin-core';\r\n//----------------------------------------------------------------------------------//\r\nimport { MessageService } from \"../../services/message.service\";\r\nimport { StorageService } from \"../../services/storage.service\";\r\nimport { AuthService } from \"../../services/auth.service\";\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { Router, ActivatedRoute } from \"@angular/router\";\r\nimport { MatSnackBar } from \"@angular/material/snack-bar\";\r\nimport { DataService } from \"../../services/data.service\";\r\nimport { LogService } from \"./../../services/log.service\";\r\n// import { AuthService } from \"../services/auth.service\";\r\n// import { ApiResponse, Core } from \"../classes/TinCore\";\r\nimport { User, loginConfig, AppConfig } from \"../../classes/Classes\";\r\nimport { CurrencyPipe } from \"@angular/common\";\r\n// import { StorageService } from \"../services/storage.service\";\r\n// import { Constants } from \"../../classes/TinSpa\";\r\nimport { HttpErrorResponse } from \"@angular/common/http\";\r\n\r\n@Component({\r\n selector: \"spa-login\",\r\n templateUrl: \"./login.component.html\",\r\n styleUrls: [\"./login.component.scss\"],\r\n})\r\nexport class LoginComponent implements OnInit {\r\n constructor(\r\n private httpService: HttpService,\r\n private storageService: StorageService,\r\n public router: Router,\r\n private messageService: MessageService,\r\n private dataService: DataService,\r\n public authService: AuthService,\r\n private logService: LogService\r\n ) {}\r\n\r\n public user = new User();\r\n hide = true;\r\n isProcessing: boolean = false;\r\n @Input() config: loginConfig;\r\n\r\n ngOnInit() {\r\n this.authService.updateloggedin(false);\r\n this.authService.updateRole(null);\r\n this.storageService.clear();\r\n }\r\n\r\n @Input() appConfig = new AppConfig();\r\n\r\n public signup() {\r\n this.router.navigate([\"signup\"]);\r\n }\r\n\r\n public recoverAccount() {\r\n this.router.navigate([\"recover-account\"]);\r\n }\r\n\r\n public login() {\r\n\r\n if (this.user.userID == \"\" || this.user.password == \"\") {\r\n this.messageService.toast(\"Please enter your credentials\");\r\n return;\r\n }\r\n\r\n\r\n this.logService.info(\"logging in\");\r\n\r\n this.isProcessing = true;\r\n\r\n this.dataService.login(this.user).subscribe(\r\n (apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.message == \"success\") {\r\n\r\n\r\n if (apiResponse.ds.dtUser[0][\"authType\"] == 'local' && !this.appConfig.localAuth){\r\n this.messageService.toast(\"Contact Admin: Authentication Type error\");\r\n return;\r\n }\r\n\r\n if (apiResponse.ds.dtUser[0][\"authType\"] == 'AD' && !this.appConfig.ADAuth) {\r\n this.messageService.toast(\"Contact Admin: Authentication Type error\");\r\n return;\r\n }\r\n\r\n\r\n this.authService.updateloggedin(true);\r\n\r\n this.authService.updateToken(apiResponse.ds.dtUser[0][\"token\"]);\r\n this.storageService.store(Constants.AUTH_TOKEN, apiResponse.ds.dtUser[0][\"token\"]);\r\n\r\n this.authService.updateTokenExpire(apiResponse.ds.dtUser[0][\"tokenExpire\"]);\r\n this.storageService.store(Constants.AUTH_TOKEN_EXPIRE, apiResponse.ds.dtUser[0][\"tokenExpire\"]);\r\n\r\n this.authService.updateCurrentUser(this.user.userID);\r\n this.storageService.store(Constants.AUTH_USER, this.user.userID);\r\n\r\n this.authService.updateLoggedUserFullName( apiResponse.ds.dtProfile[0][\"firstName\"] );\r\n this.storageService.store(Constants.AUTH_NAME, apiResponse.ds.dtProfile[0][\"firstName\"]\r\n );\r\n\r\n this.authService.updateRole(apiResponse.ds.dtRole[0]);\r\n this.storageService.store(Constants.AUTH_ROLES, JSON.stringify(apiResponse.ds.dtRole[0]));\r\n // this.setRole(apiResponse.dt[0][\"accessLevel\"]);\r\n\r\n // this.setRole(\"1\");\r\n\r\n if (apiResponse.ds.dtUser[0][\"changePassword\"] == \"0\") {\r\n this.router.navigate([\"home\"]);\r\n // this.messageService.toast(\"Welcome\");\r\n this.logService.info(\"logged in\");\r\n } else {\r\n this.router.navigate([\"home/user/change-password\"]);\r\n }\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n this.user.password = \"\";\r\n }\r\n },\r\n (error) => {\r\n this.isProcessing = false;\r\n\r\n this.messageService.toast(this.httpService.Error(error));\r\n }\r\n );\r\n }\r\n\r\n setRole(roleID: string) {\r\n this.dataService\r\n .GetRole(\"id\", roleID)\r\n .subscribe((apiResponse: ApiResponse) => {\r\n this.authService.updateRole(apiResponse.dt[0]);\r\n\r\n this.storageService.store(\r\n Constants.AUTH_ROLES,\r\n JSON.stringify(apiResponse.dt[0])\r\n );\r\n });\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { HttpService, ApiResponse } from 'tin-core';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { DataService } from '../../services/data.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { User, Profile, Account } from '../../classes/Classes';\r\n\r\n@Component({\r\n selector: 'spa-signup',\r\n templateUrl: './signup.component.html',\r\n styleUrls: ['./signup.component.css']\r\n})\r\nexport class SignupComponent implements OnInit {\r\n\r\n\r\n constructor(private httpService: HttpService, private messageService: MessageService, private dataService: DataService, private authService: AuthService,) { }\r\n\r\n ngOnInit() {\r\n\r\n this.account.user = this.user;\r\n this.account.profile = this.profile;\r\n }\r\n\r\n isProcessing: boolean = false;\r\n user = new User();\r\n profile = new Profile();\r\n\r\n account = new Account();\r\n\r\n confirmPassword: string;\r\n\r\n\r\ncreate(){\r\n\r\n this.profile.userID = this.user.userID;\r\n\r\n this.isProcessing = true;\r\n this.dataService.UpdateAccount(this.account,\"add\").subscribe(\r\n (apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"Account Created\");\r\n\r\n this.user = new User();\r\n this.profile = new Profile();\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n },\r\n (error) => {\r\n this.isProcessing = false;\r\n this.messageService.toast(this.httpService.Error(error));\r\n }\r\n );\r\n}\r\n\r\n\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataService } from '../../services/data.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { User } from '../../classes/Classes';\r\nimport { ApiResponse } from 'tin-core';\r\nimport { Location } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'spa-recover-account',\r\n templateUrl: './recover-account.component.html',\r\n styleUrls: ['./recover-account.component.css']\r\n})\r\nexport class RecoverAccountComponent implements OnInit {\r\n\r\n constructor(private location: Location, private dataService: DataService, public authService: AuthService, private messageService: MessageService) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n userID: string = \"\";\r\n\r\n recover(){\r\n\r\n\r\n if (this.userID == \"\") {\r\n\r\n this.messageService.toast(\"Please enter your userID\");\r\n return;\r\n } else {\r\n let u = new User();\r\n u.userID = this.userID;\r\n\r\n this.dataService.SelfReset(u).subscribe((apiResponse: ApiResponse) => {\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"The password has been sent to your email\");\r\n this.location.back();\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n}\r\n","import { SpaMatModule } from \"./spa-mat.module\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { LoginComponent } from \"../components/login/login.component\";\r\nimport { SignupComponent } from \"../components/signup/signup.component\";\r\nimport { RecoverAccountComponent } from \"../components/recover-account/recover-account.component\";\r\n\r\n@NgModule({\r\n declarations: [LoginComponent, SignupComponent, RecoverAccountComponent],\r\n\r\n entryComponents: [],\r\n\r\n imports: [\r\n ReactiveFormsModule.withConfig({ warnOnNgModelWithFormControl: \"never\" }),\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SpaMatModule,\r\n ],\r\n\r\n exports: [\r\n CommonModule,\r\n FormsModule,\r\n SpaMatModule,\r\n LoginComponent,\r\n SignupComponent,\r\n RecoverAccountComponent,\r\n ],\r\n})\r\nexport class SpaIndexModule {}\r\n","\r\nimport { ChangeUserPassword } from './../../classes/Classes';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { DataService } from '../../services/data.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { ApiResponse, HttpService } from 'tin-core';\r\nimport { Location } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'spa-change-password',\r\n templateUrl: './change-password.component.html',\r\n styleUrls: ['./change-password.component.css']\r\n})\r\nexport class ChangePasswordComponent implements OnInit {\r\n\r\n constructor(private location: Location, private httpService: HttpService,private messageService: MessageService, public dataService: DataService, private authService: AuthService) { }\r\n\r\n ngOnInit() {\r\n this.myRole = this.authService.currentRoleSource.value\r\n\r\n if (this.dataService.tmpProfileUserID==\"\"){\r\n this.changePassword.userID = this.authService.currentUser;\r\n\r\n }else{\r\n this.changePassword.userID = this.dataService.tmpProfileUserID;\r\n this.dataService.tmpProfileUserID = \"\";\r\n }\r\n\r\n // console.log(this.myRole)\r\n\r\n }\r\n\r\n myRole;\r\n\r\n\r\n\r\n\r\n\r\n isProcessing: boolean = false;\r\n\r\n changePassword = new ChangeUserPassword();\r\n\r\n public change() {\r\n\r\n\r\n if (!this.myRole[this.dataService.capUsers.name]){\r\n if (this.changePassword.currentPassword == \"\") {\r\n this.messageService.toast(\"Please enter current Password\");\r\n return;\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n if (this.changePassword.newPassword == \"\") {\r\n this.messageService.toast(\"Please enter new Password\");\r\n return;\r\n }\r\n\r\n if (this.changePassword.confirmPassword == \"\") {\r\n this.messageService.toast(\"Please confirm new Password\");\r\n return;\r\n }\r\n\r\n if (this.changePassword.confirmPassword != this.changePassword.newPassword ) {\r\n this.messageService.toast(\"Passwords do not match\");\r\n return;\r\n }\r\n\r\n this.isProcessing = true;\r\n\r\n if (this.myRole[this.dataService.capUsers.name]){\r\n\r\n this.dataService.changePasswordAdmin(this.changePassword).subscribe((apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"Password Changed\");\r\n\r\n this.location.back();\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n }\r\n );\r\n\r\n }else{\r\n\r\n this.dataService.changePassword(this.changePassword).subscribe((apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"Password Changed\");\r\n\r\n this.location.back();\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n }\r\n );\r\n\r\n }\r\n\r\n\r\n\r\n\r\n }\r\n\r\n\r\n}\r\n","import { AuthService } from './../../services/auth.service';\r\nimport { HttpService } from 'tin-core';\r\nimport { MessageService } from './../../services/message.service';\r\nimport { DataService } from './../../services/data.service';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { ApiResponse } from 'tin-core';\r\nimport { AppConfig, Profile } from '../../classes/Classes';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'spa-profile',\r\n templateUrl: './profile.component.html',\r\n styleUrls: ['./profile.component.css']\r\n})\r\nexport class ProfileComponent implements OnInit {\r\n isProcessing: boolean;\r\n\r\n constructor(public dataService: DataService, private messageService: MessageService, private httpService: HttpService, private router: Router, private authService: AuthService) { }\r\n\r\n ngOnInit() {\r\n\r\n this.myRole = this.authService.currentRoleSource.value\r\n\r\n // this.loadRoles();\r\n\r\n if (this.dataService.tmpProfileUserID==\"\"){\r\n this.loadProfile(this.authService.currentUser);\r\n\r\n }else{\r\n this.loadProfile(this.dataService.tmpProfileUserID);\r\n this.dataService.tmpProfileUserID = \"\";\r\n }\r\n\r\n\r\n // console.log(this.myRole);\r\n\r\n\r\n }\r\n\r\n myRole;\r\n @Input() appConfig = new AppConfig();\r\n\r\n\r\n selfProfile : boolean = false;\r\n\r\n profile = new Profile();\r\n roles;\r\n approvalRoles;\r\n employees;\r\n\r\n\r\n loadProfile(userID: string){\r\n\r\n let action = \"all\";\r\n\r\n if (this.appConfig.approvals && this.appConfig.employees){\r\n action = \"set\"\r\n }\r\n\r\n if (this.appConfig.approvals && !this.appConfig.employees){\r\n action = \"setapp\"\r\n }\r\n\r\n if (!this.appConfig.approvals && this.appConfig.employees){\r\n action = \"setemp\"\r\n }\r\n\r\n\r\n this.dataService.GetProfile(action, userID).subscribe(\r\n (apiResponse: ApiResponse) => {\r\n\r\n this.profile = apiResponse.ds.dtProfiles[0];\r\n\r\n if (this.profile.userID.toLocaleLowerCase() == this.authService.currentUser.toLocaleLowerCase()){\r\n this.selfProfile = true\r\n }\r\n\r\n //get more details\r\n this.roles = apiResponse.ds.dtRoles;\r\n this.approvalRoles = apiResponse.ds.dtApprovalRoles;\r\n this.employees = apiResponse.ds.dtEmployees;\r\n\r\n\r\n },\r\n (error) => {\r\n this.isProcessing = false;\r\n this.messageService.toast(this.httpService.Error(error));\r\n }\r\n );\r\n\r\n\r\n\r\n }\r\n\r\n loadRoles(){\r\n\r\n\r\n this.dataService.GetRole(\"all\", \"\").subscribe(\r\n (apiResponse: ApiResponse) => {\r\n\r\n this.roles = apiResponse.dt;\r\n },\r\n (error) => {\r\n this.isProcessing = false;\r\n this.messageService.toast(this.httpService.Error(error));\r\n }\r\n );\r\n\r\n\r\n\r\n }\r\n\r\n\r\n\r\n changePassword(){\r\n this.dataService.tmpProfileUserID = this.profile.userID;\r\n this.router.navigate([\"home/user/change-password\"]);\r\n }\r\n\r\n gotoUsers(){\r\n this.router.navigate([\"home/admin/users\"]);\r\n }\r\n\r\n update(){\r\n\r\n }\r\n\r\n updateProfile(){\r\n this.isProcessing = true;\r\n this.dataService.UpdateProfile(this.profile, \"edit\").subscribe(\r\n (apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"Profile Updated\");\r\n\r\n\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n },\r\n (error) => {\r\n this.messageService.toast(\"Connection failed \");\r\n this.isProcessing = false;\r\n }\r\n );\r\n }\r\n\r\n\r\n\r\n\r\n}\r\n","import { SpaMatModule } from \"./spa-mat.module\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { ChangePasswordComponent } from \"../components/change-password/change-password.component\";\r\nimport { ProfileComponent } from \"../components/profile/profile.component\";\r\n\r\n@NgModule({\r\n declarations: [ChangePasswordComponent, ProfileComponent],\r\n\r\n entryComponents: [],\r\n\r\n imports: [\r\n ReactiveFormsModule.withConfig({ warnOnNgModelWithFormControl: \"never\" }),\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SpaMatModule,\r\n ],\r\n\r\n exports: [\r\n CommonModule,\r\n FormsModule,\r\n SpaMatModule,\r\n ChangePasswordComponent,\r\n ProfileComponent,\r\n ],\r\n})\r\nexport class SpaUserModule {}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataService } from '../../services/data.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { ApiResponse } from 'tin-core';\r\n\r\n@Component({\r\n selector: 'spa-settings',\r\n templateUrl: './settings.component.html',\r\n styleUrls: ['./settings.component.css']\r\n})\r\nexport class SettingsComponent implements OnInit {\r\n\r\n constructor(private dataService: DataService, private messageService: MessageService) { }\r\n\r\n ngOnInit(): void {\r\n this.loadSettings();\r\n }\r\n\r\n _filterText = \"\";\r\n settings;\r\n isProcessing = false;\r\n\r\n applyFilter(filterValue: string) {\r\n this.settings.filter = filterValue.trim().toLowerCase();\r\n }\r\n\r\n loadSettings(){\r\n this.dataService.GetSetting(\"all\", \"\").subscribe(\r\n (apiResponse: ApiResponse) => {\r\n this.settings = apiResponse.dt;\r\n // this.applyFilter(this._filterText);\r\n }\r\n );\r\n\r\n }\r\n\r\n updateSetting(setting) {\r\n\r\n this.isProcessing = true;\r\n this.dataService.UpdateSetting(setting, \"edit\").subscribe((apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(`Setting ${setting.sName} Updated`);\r\n this.loadSettings();\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n\r\n });\r\n\r\n };\r\n\r\n addSetting() {\r\n\r\n // const dialogRef = this.dialog.open(addRoleDialog, {\r\n // width: \"1100px\",\r\n // data: \"\",\r\n // });\r\n\r\n // dialogRef.afterClosed().subscribe((result) => {\r\n // if (result == \"success\") {\r\n // this.loadRoles();\r\n // }\r\n // });\r\n this.messageService.toast(\"Feature not Available\");\r\n\r\n }\r\n\r\n}\r\n","import { ApiResponse } from 'tin-core';\r\nimport { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { DataService } from \"../../services/data.service\";\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-logs',\r\n templateUrl: './logs.component.html',\r\n styleUrls: ['./logs.component.css']\r\n})\r\nexport class LogsComponent implements OnInit {\r\n constructor( private authService: AuthService, private dataService: DataService,) {}\r\n\r\n ngOnInit() {\r\n this.loadLogs();\r\n }\r\n\r\n isProcessing: boolean = false;\r\n @ViewChild(\"logsPaginator\") logsPaginator: MatPaginator;\r\n\r\n _filterText = \"\";\r\n\r\n logs;\r\n\r\n displayedColumns: string[] = [ \"dateLogged\", \"userID\",\"fullName\",\"source\", \"details\"];\r\n\r\n public loadLogs() {\r\n this.dataService.GetLog(\"all\",\"\").subscribe(\r\n (apiResponse: ApiResponse) => {\r\n this.logs = new MatTableDataSource(apiResponse.dt);\r\n this.logs.paginator = this.logsPaginator;\r\n this.applyFilter(this._filterText);\r\n }\r\n );\r\n }\r\n\r\n applyFilter(filterValue: string) {\r\n this.logs.filter = filterValue.trim().toLowerCase();\r\n }\r\n\r\n\r\n}\r\n","import { Component, OnInit, Inject, ViewChild } from \"@angular/core\";\r\nimport { MatTableDataSource } from \"@angular/material/table\";\r\nimport { MatPaginator } from \"@angular/material/paginator\";\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from \"@angular/material/dialog\";\r\nimport { DataService } from \"../../services/data.service\";\r\nimport { ApiResponse, Core,HttpService } from \"tin-core\";\r\nimport { Router } from \"@angular/router\";\r\nimport { MessageService } from \"../../services/message.service\";\r\nimport { AuthService } from \"../../services/auth.service\";\r\nimport { AddUserDialog } from './addUserDialog.component';\r\nimport { EditUserDialog } from './editUserDialog.component';\r\nimport { User } from '../../classes/Classes';\r\n\r\n\r\n\r\n@Component({\r\n selector: \"spa-users\",\r\n templateUrl: \"./users.component.html\",\r\n styleUrls: [\"./users.component.css\"],\r\n})\r\nexport class UsersComponent implements OnInit {\r\n constructor(private httpService: HttpService, public router: Router, private authService: AuthService, private dataService: DataService, public dialog: MatDialog, private messageService: MessageService) {}\r\n\r\n ngOnInit() {\r\n\r\n this.UpdateData();\r\n\r\n }\r\n\r\n isProcessing: boolean = false;\r\n @ViewChild(\"usersPaginator\") usersPaginator: MatPaginator;\r\n\r\n _filterText = \"\";\r\n\r\n users;\r\n // public myResponse;\r\n displayedColumns: string[] = [\"userID\", \"fullName\", \"roleName\", \"locked\", \"dateCreated\", \"Action\"];\r\n\r\n public UpdateData() {\r\n this.dataService.GetUser(\"all\",\"\").subscribe(\r\n (apiResponse: ApiResponse) => {\r\n //this.myData = apiResponse;\r\n this.users = new MatTableDataSource(apiResponse.dt);\r\n this.users.paginator = this.usersPaginator;\r\n this.applyFilter(this._filterText);\r\n },\r\n (error) => {\r\n this.isProcessing = false;\r\n this.messageService.toast(this.httpService.Error(error));\r\n }\r\n );\r\n }\r\n\r\n applyFilter(filterValue: string) {\r\n this.users.filter = filterValue.trim().toLowerCase();\r\n }\r\n\r\n createAccount() {\r\n\r\n this.router.navigate([\"home/admin/create-account\"]);\r\n\r\n }\r\n\r\n viewProfile(user: User) {\r\n\r\n this.dataService.tmpProfileUserID = user.userID;\r\n this.router.navigate([\"home/user/profile\"]);\r\n\r\n }\r\n\r\n lock(u: User){\r\n u.locked = \"1\";\r\n this.updateUser(u);\r\n }\r\n\r\n unlock(u: User){\r\n u.locked = \"0\";\r\n u.tries = \"0\";\r\n this.updateUser(u);\r\n }\r\n\r\n enable(u: User){\r\n u.disabled = \"0\";\r\n this.updateUser(u);\r\n }\r\n\r\n disable(u: User){\r\n u.disabled = \"1\";\r\n this.updateUser(u);\r\n }\r\n\r\n recover(u: User){\r\n\r\n\r\n\r\n this.dataService.SelfReset(u).subscribe((apiResponse: ApiResponse) => {\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"The password has been sent on email\");\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n });\r\n\r\n}\r\n\r\n updateUser(user){\r\n this.isProcessing = true;\r\n this.dataService.UpdateUser(user, \"edit\").subscribe(\r\n (apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"User Updated\");\r\n\r\n this.UpdateData();\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n },\r\n (error) => {\r\n this.messageService.toast(\"Connection failed \");\r\n this.isProcessing = false;\r\n }\r\n );\r\n }\r\n\r\n deleteUser(user: User){\r\n\r\n\r\n this.messageService.confirm(`Delete ${user.userID} ?`).subscribe((result) => {\r\n\r\n if (result == \"yes\"){\r\n\r\n this.isProcessing = true;\r\n this.dataService.UpdateUser(user, \"delete\").subscribe(\r\n (apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"User Deleted\");\r\n\r\n this.UpdateData();\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n },\r\n (error) => {\r\n this.messageService.toast(\"Connection failed \");\r\n this.isProcessing = false;\r\n }\r\n );\r\n\r\n }\r\n })\r\n\r\n\r\n\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n","import { Component, OnInit, Inject, ViewChild } from \"@angular/core\";\r\nimport { MatTableDataSource } from \"@angular/material/table\";\r\nimport { MatPaginator } from \"@angular/material/paginator\";\r\nimport { SelectionModel } from \"@angular/cdk/collections\";\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from \"@angular/material/dialog\";\r\nimport { MatSnackBar } from \"@angular/material/snack-bar\";\r\nimport { DataService } from \"../../services/data.service\";\r\nimport { User } from \"../../classes/Classes\";\r\nimport { ApiResponse, Core,HttpService } from \"tin-core\";\r\n// import { AuthService } from \"../../services/auth.service\";\r\nimport { Router } from \"@angular/router\";\r\nimport { MessageService } from \"../../services/message.service\";\r\nimport { AuthService } from \"../../services/auth.service\";\r\n\r\n\r\n@Component({\r\n selector: \"spa-add-user\",\r\n templateUrl: \"./addUserDialog.component.html\",\r\n styleUrls: [\"./users.component.css\"],\r\n})\r\nexport class AddUserDialog implements OnInit {\r\n\r\n public currentCount = 0;\r\n user = new User();\r\n isProcessing: boolean = false;\r\n\r\n constructor(private dataserv: DataService, private messageService: MessageService, private dialogRef: MatDialogRef<AddUserDialog>) {}\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n\r\n\r\n\r\n public Signup() {\r\n\r\n // if (Core.emailIsValid(this.user.email)) {\r\n // this.messageService.toast(\"Invalid Email\");\r\n // return;\r\n // }\r\n\r\n this.user.dateCreated = Core.getFormatedDate(Core.nowDate());\r\n this.user.dateUpdated = Core.getFormatedDate(Core.nowDate());\r\n this.user.dateExpire = Core.getFormatedDate(Core.nowDate());\r\n\r\n this.isProcessing = true;\r\n this.dataserv.UpdateUser(this.user,\"add\").subscribe((apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"User Added\");\r\n\r\n\r\n\r\n this.dialogRef.close(\"success\");\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n });\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n\r\n","import { Component, OnInit, Inject, ViewChild } from \"@angular/core\";\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from \"@angular/material/dialog\";\r\nimport { DataService } from \"../../services/data.service\";\r\nimport { User } from \"../../classes/Classes\";\r\nimport { ApiResponse, Core,HttpService } from \"tin-core\";\r\nimport { MessageService } from \"../../services/message.service\";\r\n\r\n\r\n@Component({\r\n selector: \"spa-edit-user\",\r\n templateUrl: \"./editUserDialog.component.html\",\r\n styleUrls: [\"./users.component.css\"],\r\n})\r\nexport class EditUserDialog implements OnInit {\r\n\r\n constructor(private dataserv: DataService, private messageService: MessageService, private dialogRef: MatDialogRef<EditUserDialog>, @Inject(MAT_DIALOG_DATA) public data) {}\r\n\r\n ngOnInit() {\r\n // this.loadDepartments();\r\n // this.loadRoles();\r\n // this.loadLineManagers();\r\n this.user = this.data;\r\n }\r\n\r\n user = new User();\r\n\r\n public myData;\r\n public myResponse;\r\n departments;\r\n lineManagers;\r\n roles;\r\n isProcessing: boolean = false;\r\n\r\n myUser = new User();\r\n\r\n public unlock() {\r\n this.user.locked = \"0\";\r\n }\r\n\r\n public lock() {\r\n this.user.locked = \"1\";\r\n }\r\n\r\n public enable() {\r\n this.user.disabled = \"0\";\r\n }\r\n\r\n public disable() {\r\n this.user.disabled = \"1\";\r\n }\r\n\r\n // loadDepartments() {\r\n // this.dataserv.GetDepartment(\"all\", \"\").subscribe((myApiResponse) => {\r\n // this.departments = myApiResponse;\r\n // });\r\n // }\r\n\r\n // loadLineManagers() {\r\n // this.dataserv.GetLineManagers().subscribe((apiResponse: ApiResponse) => {\r\n // this.lineManagers = apiResponse.dt;\r\n // });\r\n // }\r\n\r\n // loadRoles() {\r\n // this.dataserv.GetRole(\"all\", \"\").subscribe((apiResponse: ApiResponse) => {\r\n // this.roles = apiResponse.dt;\r\n // });\r\n // }\r\n\r\n public Update() {\r\n\r\n this.isProcessing = true;\r\n this.dataserv.UpdateUser(this.user,\"edit\").subscribe(\r\n (apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"User Updated\");\r\n\r\n this.dialogRef.close(\"success\");\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n },\r\n (error) => {\r\n this.messageService.toast(\"Connection failed \");\r\n this.isProcessing = false;\r\n }\r\n );\r\n }\r\n\r\n public DeleteUser() {\r\n\r\n this.isProcessing = true;\r\n this.dataserv.UpdateUser(this.user, \"delete\").subscribe((myData) => {\r\n this.isProcessing = false;\r\n\r\n this.myData = myData;\r\n this.myResponse = this.myData.message;\r\n if (this.myResponse == \"success\") {\r\n this.messageService.toast(this.user.userID + \" Deleted\");\r\n this.dialogRef.close(\"success\");\r\n } else {\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n\r\n}\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatDialog, MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { DataService } from '../../services/data.service';\r\n//import { AuthService } from '../../services/auth.service';\r\nimport { ApiResponse, Core } from 'tin-core';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'app-viewRole',\r\n templateUrl: './viewRoleDialog.component.html',\r\n styleUrls: ['./roles.component.css']\r\n})\r\nexport class viewRoleDialog implements OnInit {\r\n\r\n constructor(private messageService: MessageService, private dataserv: DataService, private authserv: AuthService, private dialogRef: MatDialogRef<viewRoleDialog>, @Inject(MAT_DIALOG_DATA) public data) { }\r\n\r\n ngOnInit() {\r\n\r\n\r\n\r\n }\r\n\r\n\r\n\r\n submit() {\r\n\r\n\r\n\r\n };\r\n};\r\n\r\n\r\n\r\n","import { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatDialog, MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { DataService } from '../../services/data.service';\r\n// import { AuthService } from '../../services/auth.service';\r\nimport { ApiResponse, Core } from 'tin-core';\r\nimport { Role } from '../../classes/Classes';\r\n\r\n@Component({\r\n selector: 'app-addRole',\r\n templateUrl: './addRoleDialog.component.html',\r\n styleUrls: ['./roles.component.css']\r\n})\r\nexport class addRoleDialog implements OnInit {\r\n\r\n constructor(private messageService: MessageService, private dataService: DataService, private authService: AuthService, private dialogRef: MatDialogRef<addRoleDialog>, @Inject(MAT_DIALOG_DATA) public data) { }\r\n ngOnInit() {\r\n this.capItems = this.data;\r\n }\r\n\r\n capItems;\r\n\r\n isProcessing: boolean;\r\n role = new Role();\r\n\r\n submit() {\r\n\r\n if (this.role.roleName == \"New Role\" || this.role.roleName == \"\"){\r\n this.messageService.toast(\"Please enter Role Name\");\r\n return;\r\n }\r\n\r\n\r\n this.isProcessing = true;\r\n this.dataService.UpdateRole(this.role, \"add\").subscribe((apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"Role Added\");\r\n this.dialogRef.close(\"success\");\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n\r\n\r\n }, error => {\r\n this.messageService.toast(\"Connection failed\");\r\n this.isProcessing = false;\r\n });\r\n\r\n };\r\n};\r\n\r\n\r\n\r\n","import { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatDialog, MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { DataService } from '../../services/data.service';\r\n// import { AuthService } from '../../services/auth.service';\r\nimport { ApiResponse, Core } from 'tin-core';\r\nimport { Role } from '../../classes/Classes';\r\n\r\n@Component({\r\n selector: 'app-editRole',\r\n templateUrl: './editRoleDialog.component.html',\r\n styleUrls: ['./roles.component.css']\r\n})\r\nexport class editRoleDialog implements OnInit {\r\n\r\n constructor(private messageService: MessageService, private dataserv: DataService, private authserv: AuthService, private dialogRef: MatDialogRef<editRoleDialog>, @Inject(MAT_DIALOG_DATA) public data) { }\r\n\r\n ngOnInit() {\r\n this.role = this.data;\r\n this.isLoadComplete = true;\r\n }\r\n\r\n role = new Role;\r\n isLoadComplete: boolean = false;\r\n isProcessing: boolean;\r\n\r\n\r\n submit() {\r\n\r\n this.isProcessing = true;\r\n this.dataserv.UpdateRole(this.role, \"edit\").subscribe((apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"Role Updated\");\r\n this.dialogRef.close(\"success\");\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n\r\n }, error => {\r\n this.messageService.toast(\"Connection failed \");\r\n this.isProcessing = false;\r\n });\r\n\r\n };\r\n};\r\n\r\n\r\n\r\n","import { AppConfig } from './../../classes/Classes';\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { MatDialog } from \"@angular/material/dialog\";\r\nimport { DataService } from \"../../services/data.service\";\r\n// import { AuthService } from \"../../services/auth.service\";\r\nimport { ApiResponse, Core, HttpService } from \"tin-core\";\r\nimport { Role, CapItem } from \"../../classes/Classes\";\r\nimport { viewRoleDialog } from \"./viewRoleDialog.component\";\r\nimport { addRoleDialog } from \"./addRoleDialog.component\";\r\nimport { editRoleDialog } from \"./editRoleDialog.component\";\r\nimport { Router } from \"@angular/router\";\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n\r\n@Component({\r\n selector: \"spa-roles\",\r\n templateUrl: \"./roles.component.html\",\r\n styleUrls: [\"./roles.component.css\"],\r\n})\r\nexport class RolesComponent implements OnInit {\r\n constructor(private httpService: HttpService, private router: Router, private authService: AuthService, private dataService: DataService, public dialog: MatDialog, private messageService: MessageService) {}\r\n\r\n ngOnInit() {\r\n\r\n this.loadRoles();\r\n\r\n }\r\n\r\n isProcessing = false;\r\n // myRole: Rolev2;\r\n roles: Role[];\r\n\r\n\r\n\r\n @Input() appConfig = new AppConfig();\r\n\r\n\r\n // _filterText = \"\";\r\n // applyFilter(filterValue: string) {\r\n // this.roles.filter = filterValue.trim().toLowerCase();\r\n // }\r\n\r\n\r\n loadRoles() {\r\n this.dataService.GetRole(\"all\", \"\").subscribe(\r\n (apiResponse: ApiResponse) => {\r\n this.roles = apiResponse.dt;\r\n },\r\n (error) => {\r\n this.isProcessing = false;\r\n this.messageService.toast(this.httpService.Error(error));\r\n }\r\n );\r\n }\r\n\r\n refresh() {\r\n this.loadRoles();\r\n }\r\n\r\n addRole() {\r\n const dialogRef = this.dialog.open(addRoleDialog, {\r\n width: \"1100px\",\r\n data: this.appConfig.capItems,\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n if (result == \"success\") {\r\n this.loadRoles();\r\n }\r\n });\r\n }\r\n\r\n viewRole(role: Role) {\r\n const dialogRef = this.dialog.open(viewRoleDialog, {\r\n width: \"1100px\",\r\n data: role,\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n if (result == \"success\") {\r\n this.loadRoles();\r\n }\r\n });\r\n }\r\n\r\n editRole(role: Role) {\r\n const dialogRef = this.dialog.open(editRoleDialog, {\r\n width: \"1100px\",\r\n data: role,\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n if (result == \"success\") {\r\n this.loadRoles();\r\n }\r\n });\r\n }\r\n\r\n updateRole(role: Role) {\r\n\r\n this.messageService.confirm(`UPDATE ${role.roleName} ?`).subscribe((result) => {\r\n\r\n if (result == \"yes\"){\r\n\r\n this.dataService\r\n .UpdateRole(role, \"edit\")\r\n .subscribe((apiResponse: ApiResponse) => {\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"Role Updated\");\r\n this.loadRoles();\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n });\r\n\r\n }\r\n\r\n })\r\n\r\n\r\n };\r\n\r\n deleteRole(role: Role) {\r\n\r\n this.messageService.confirm(`DELETE ${role.roleName} ?`).subscribe((result) => {\r\n\r\n if (result == \"yes\"){\r\n\r\n this.dataService\r\n .UpdateRole(role, \"delete\")\r\n .subscribe((apiResponse: ApiResponse) => {\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"Role Deleted\");\r\n this.loadRoles();\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n });\r\n\r\n }\r\n\r\n })\r\n\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'spa-profiles',\r\n templateUrl: './profiles.component.html',\r\n styleUrls: ['./profiles.component.css']\r\n})\r\nexport class ProfilesComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import { DataService } from './../../services/data.service';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { ApiResponse, HttpService } from 'tin-core';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { User, Profile, Account, AppConfig } from '../../classes/Classes';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'spa-create-account',\r\n templateUrl: './create-account.component.html',\r\n styleUrls: ['./create-account.component.css']\r\n})\r\nexport class CreateAccountComponent implements OnInit {\r\n\r\n constructor(private httpService: HttpService, private messageService: MessageService, private dataService: DataService, private authService: AuthService,public router: Router) { }\r\n\r\n ngOnInit() {\r\n\r\n\r\n }\r\n\r\n @Input() appConfig = new AppConfig();\r\n\r\n isProcessing: boolean = false;\r\n user = new User();\r\n profile = new Profile();\r\n\r\n account = new Account();\r\n\r\n confirmPassword: string;\r\n\r\n openProfile: boolean = true;\r\n\r\n\r\ncreate(){\r\n\r\n if(this.user.authType == \"\"){\r\n this.messageService.toast(\"Choose Authentication Type\");\r\n return;\r\n }\r\n\r\n this.account.user = this.user;\r\n this.account.profile = this.profile;\r\n\r\n this.profile.userID = this.user.userID;\r\n\r\n this.isProcessing = true;\r\n this.dataService.UpdateAccount(this.account,\"add\").subscribe(\r\n (apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"Account Created\");\r\n\r\n if (this.openProfile){\r\n this.viewProfile(this.user);\r\n }else{\r\n this.user = new User();\r\n this.profile = new Profile();\r\n this.confirmPassword = \"\";\r\n }\r\n\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n },\r\n (error) => {\r\n this.isProcessing = false;\r\n this.messageService.toast(this.httpService.Error(error));\r\n }\r\n );\r\n}\r\n\r\nviewProfile(user: User) {\r\n\r\n this.dataService.tmpProfileUserID = user.userID;\r\n this.router.navigate([\"home/user/profile\"]);\r\n\r\n}\r\n\r\n\r\n\r\n}\r\n","import { SettingsComponent } from '../components/settings/settings.component';\r\nimport { LogsComponent } from '../components/logs/logs.component';\r\nimport { SpaMatModule } from \"./spa-mat.module\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { UsersComponent } from \"../components/users/users.component\";\r\nimport { AddUserDialog } from \"../components/users/addUserDialog.component\";\r\nimport { EditUserDialog } from \"../components/users/editUserDialog.component\";\r\nimport { RolesComponent } from \"../components/roles/roles.component\";\r\nimport { addRoleDialog } from \"../components/roles/addRoleDialog.component\";\r\nimport { editRoleDialog } from \"../components/roles/editRoleDialog.component\";\r\nimport { ProfilesComponent } from \"../components/profiles/profiles.component\";\r\nimport { CreateAccountComponent } from \"../components/create-account/create-account.component\";\r\nimport { viewRoleDialog } from \"../components/roles/viewRoleDialog.component\";\r\n\r\n@NgModule({\r\n declarations: [\r\n UsersComponent,\r\n AddUserDialog,\r\n EditUserDialog,\r\n RolesComponent,\r\n addRoleDialog,\r\n editRoleDialog,\r\n viewRoleDialog,\r\n ProfilesComponent,\r\n CreateAccountComponent,\r\n LogsComponent,\r\n SettingsComponent\r\n ],\r\n\r\n entryComponents: [\r\n AddUserDialog,\r\n EditUserDialog,\r\n addRoleDialog,\r\n editRoleDialog,\r\n viewRoleDialog,\r\n ],\r\n\r\n imports: [\r\n ReactiveFormsModule.withConfig({ warnOnNgModelWithFormControl: \"never\" }),\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SpaMatModule,\r\n ],\r\n\r\n exports: [\r\n CommonModule,\r\n FormsModule,\r\n SpaMatModule,\r\n UsersComponent,\r\n AddUserDialog,\r\n EditUserDialog,\r\n RolesComponent,\r\n addRoleDialog,\r\n editRoleDialog,\r\n viewRoleDialog,\r\n ProfilesComponent,\r\n CreateAccountComponent,\r\n LogsComponent,\r\n SettingsComponent\r\n ],\r\n})\r\nexport class SpaAdminModule {}\r\n"]}
1
+ {"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://tin-spa/lib/services/tin-spa.service.ts","ng://tin-spa/lib/services/storage.service.ts","ng://tin-spa/lib/components/message/messageDialog.component.html","ng://tin-spa/lib/classes/Classes.ts","ng://tin-spa/lib/components/message/messageDialog.component.ts","ng://tin-spa/lib/services/message.service.ts","ng://tin-spa/lib/services/export.service.ts","ng://tin-spa/lib/classes/TinCore.ts","ng://tin-spa/lib/services/http.service.ts","ng://tin-spa/lib/services/log.service.ts","ng://tin-spa/lib/services/auth.service.ts","ng://tin-spa/lib/services/data.service.ts","ng://tin-spa/lib/services/loader.service.ts","ng://tin-spa/lib/components/loader/loader.component.html","ng://tin-spa/lib/components/loader/loader.component.ts","ng://tin-spa/lib/modules/spa-mat.module.ts","ng://tin-spa/lib/services/loader-interceptor.service.ts","ng://tin-spa/lib/components/tin-spa.component.ts","ng://tin-spa/lib/components/nav-menu/nav-menu.component.html","ng://tin-spa/lib/components/nav-menu/nav-menu.component.ts","ng://tin-spa/lib/components/timeout/timeout.component.ts","ng://tin-spa/lib/components/timeout/timeout.component.html","ng://tin-spa/lib/components/table/table.component.html","ng://tin-spa/lib/components/table/table.component.ts","ng://tin-spa/lib/components/tiles/tiles.component.html","ng://tin-spa/lib/components/tiles/tiles.component.ts","ng://tin-spa/lib/components/date/date.component.ts","ng://tin-spa/lib/components/date/date.component.html","ng://tin-spa/lib/components/text/text.component.html","ng://tin-spa/lib/components/text/text.component.ts","ng://tin-spa/lib/components/chips/chips.component.html","ng://tin-spa/lib/components/chips/chips.component.ts","ng://tin-spa/lib/components/viewer/viewerDialog.component.html","ng://tin-spa/lib/components/viewer/viewerDialog.component.ts","ng://tin-spa/lib/components/viewer/viewer.component.html","ng://tin-spa/lib/components/viewer/viewer.component.ts","ng://tin-spa/lib/components/select/select.component.html","ng://tin-spa/lib/components/select/select.component.ts","ng://tin-spa/lib/components/check/check.component.ts","ng://tin-spa/lib/components/check/check.component.html","ng://tin-spa/lib/dnd.directive.ts","ng://tin-spa/lib/components/attach/attach.component.html","ng://tin-spa/lib/components/attach/attach.component.ts","ng://tin-spa/lib/components/datetime/datetime.component.ts","ng://tin-spa/lib/components/datetime/datetime.component.html","ng://tin-spa/lib/components/money/currency-input-mask.directive.ts","ng://tin-spa/lib/components/money/money.component.html","ng://tin-spa/lib/components/money/money.component.ts","ng://tin-spa/lib/components/activity/activity.component.html","ng://tin-spa/lib/components/activity/activity.component.ts","ng://tin-spa/lib/components/html/html.component.ts","ng://tin-spa/lib/components/html/html.component.html","ng://tin-spa/lib/components/option/option.component.html","ng://tin-spa/lib/components/option/option.component.ts","ng://tin-spa/lib/components/label/label.component.html","ng://tin-spa/lib/components/label/label.component.ts","ng://tin-spa/lib/components/steps/steps.component.html","ng://tin-spa/lib/components/steps/steps.component.ts","ng://tin-spa/lib/components/filter/filter.component.ts","ng://tin-spa/lib/components/filter/filter.component.html","ng://tin-spa/lib/components/money/currency-input-mask.module.ts","ng://tin-spa/lib/tin-spa.module.ts","ng://tin-spa/lib/components/login/login.component.html","ng://tin-spa/lib/components/login/login.component.ts","ng://tin-spa/lib/components/signup/signup.component.ts","ng://tin-spa/lib/components/signup/signup.component.html","ng://tin-spa/lib/components/recover-account/recover-account.component.ts","ng://tin-spa/lib/components/recover-account/recover-account.component.html","ng://tin-spa/lib/modules/spa-index.module.ts","ng://tin-spa/lib/components/change-password/change-password.component.html","ng://tin-spa/lib/components/change-password/change-password.component.ts","ng://tin-spa/lib/components/profile/profile.component.html","ng://tin-spa/lib/components/profile/profile.component.ts","ng://tin-spa/lib/modules/spa-user.module.ts","ng://tin-spa/lib/components/settings/settings.component.html","ng://tin-spa/lib/components/settings/settings.component.ts","ng://tin-spa/lib/components/logs/logs.component.html","ng://tin-spa/lib/components/logs/logs.component.ts","ng://tin-spa/lib/components/users/users.component.html","ng://tin-spa/lib/components/users/users.component.ts","ng://tin-spa/lib/components/roles/addRoleDialog.component.html","ng://tin-spa/lib/components/roles/addRoleDialog.component.ts","ng://tin-spa/lib/components/roles/roles.component.html","ng://tin-spa/lib/components/roles/roles.component.ts","ng://tin-spa/lib/components/create-account/create-account.component.html","ng://tin-spa/lib/components/create-account/create-account.component.ts","ng://tin-spa/lib/modules/spa-admin.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","TypeError","call","pop","length","push","__values","o","s","m","i","TinSpaService","factory","ɵfac","providedIn","StorageService","store","storageKey","encryptedValue","btoa","escape","JSON","stringify","localStorage","setItem","_a","get","getItem","ret","parse","unescape","atob","removeStorageItem","removeItem","clear","i0.ɵɵelementStart","i0.ɵɵtext","i0.ɵɵelementEnd","i0.ɵɵadvance","i0.ɵɵtextInterpolate","i0.ɵɵlistener","LogLevel","messageDialog","dialogRef","data","ngOnInit","messageType","type","_messageSubject","subject","_messageDetails","details","response","resp","close","core","ɵɵdirectiveInject","dialog","MatDialogRef","MAT_DIALOG_DATA","selectors","decls","vars","consts","template","rf","ctx","i0.ɵɵtemplate","i0.ɵɵproperty","MessageService","snackBar","toast","msg","open","duration","info","width","error","confirm","afterClosed","pipe","mergeMap","of","ɵɵinject","MatSnackBar","MatDialog","ExportService","fileType","fileExtension","exportExcel","jsonData","fileName","wb","Sheets","XLSX.utils","json_to_sheet","SheetNames","excelBuffer","XLSX.write","bookType","saveExcelFile","buffer","Blob","FileSaver.saveAs","Core","getClone","x","getNumber","replace","getFirstDayOfMonth","date","Date","getFullYear","getMonth","emailIsValid","email","test","isValidUNCPath","path","isValidDate","parsedDate","isNaN","isValidEmailList","list","includes","emails","split","emails_1","emails_1_1","isNumber","Number","toString","getDiff","startDate","endDate","eventStartTime","milliseconds","valueOf","numberEnding","number","toFixed","minutes","hours","days","weeks","months","years","nowDate","NoTime","getFormatedDate","dateString","setHours","getHours","toISOString","getBusinessDatesCount","count","_startDate","_endDate","curDate","dayOfWeek","getDay","setDate","getDate","nullDate","Constants","AUTH_USER","AUTH_NAME","AUTH_ROLES","AUTH_TOKEN","AUTH_TOKEN_EXPIRE","TableColumnType","enableFilter","TableCreate","greyout","Condition","name","display","String","Operator","field","operator","Equal","Color","_super","Icon","appName","selfService","logo","logoSize","ADAuth","localAuth","enabled","newLine","showMenu","ignoreSubsDisplay","link","icon","userName","password","tries","locked","logged","disabled","changepassword","dateCreated","dateUpdated","token","dateExpire","tokenExpire","authType","currentPassword","newPassword","confirmPassword","roleID","firstName","lastName","profileID","empID","arID","role","Role","roleName","cap1","cap2","cap3","cap4","cap5","cap6","cap7","cap8","cap9","cap10","cap11","cap12","cap13","cap14","cap15","cap16","cap17","cap18","cap19","cap20","cap21","cap22","cap23","cap24","cap25","cap26","cap27","cap28","cap29","cap30","cap31","cap32","cap33","cap34","cap35","cap36","cap37","cap38","cap39","cap40","cap41","cap42","cap43","cap44","cap45","cap46","cap47","cap48","cap49","cap50","cap51","cap52","cap53","cap54","cap55","cap56","cap57","cap58","cap59","cap60","cap61","cap62","cap63","cap64","cap65","cap66","cap67","cap68","cap69","cap70","cap71","cap72","cap73","cap74","cap75","cap76","cap77","cap78","cap79","cap80","cap81","cap82","cap83","cap84","cap85","cap86","cap87","cap88","cap89","cap90","cap91","cap92","cap93","cap94","cap95","cap96","cap97","cap98","cap99","cap100","HttpService","httpClient","router","apiUrl","httpOptions_Legacy","headers","HttpHeaders","Accept","Content-Type","Authorization","resposeType","httpOptions_Files","Post","service","post","Put","put","Post_Raw","url","Post_WithFile","file","formData","FormData","append","Post_FormData","Get","Get_Raw","Error","statusText","navigate","http","HttpClient","Router","LogService","level","All","logToConsole","logToApi","debug","optionalParams","_i","arguments","writeToLog","Debug","Info","warn","Warn","fatal","Fatal","log","params","shouldLog","formatParams","console","join","some","params_1","params_1_1","item","Off","AuthService","_route","storage","httpService","messageService","logService","loggedin","loggedinSource","BehaviorSubject","loggedinObserv","asObservable","tokenSource","tokenObserv","tokenExpireSource","tokenExpireObserv","currentUser","currentUserSource","currentUserObserv","islineManager","isLineManagerSource","isLineManagerObserv","currentRole","currentRoleSource","myRoleObserv","loggedUserSource","loggedUserFullName","Updateloggedin","UpdateToken","newToken","UpdateTokenExpire","newTokenExpire","UpdateCurrentUser","newUser","toLocaleLowerCase","UpdateIsLineManager","manager","UpdateRole","updateLoggedUserFullName","isAuthorised","capName","isValidToken","valid","canActivate","_this","URL","window","location","href","hash","relativeTo","queryParams","redirectTo","queryParamsHandling","skipLocationChange","ActivatedRoute","DataServiceLib","appConfig","AppConfig","appConfigSource","appConfigObserv","capHome","CapItem","capAdmin","capUsers","capRoles","capLogs","capSettings","tmpProfileuserName","capItems","capSubItems","UpdateAppConfig","config","GetUser","RegisterAccount","u","GetUserByID","val","UpdateUser","profile","UnlockUser","user","LockUser","DeleteUser","Login","ChangePassword","ChangePasswordAdmin","SelfReset","PostRole","action","PutRole","GetRole","by","GetLog","GetSetting","UpdateSetting","setting","LoaderService","isLoading","i0.ɵɵelement","LoaderComponent","loaderService","subscribe","loading","inputs","SpaMatModule","providers","provide","MAT_DIALOG_DEFAULT_OPTIONS","useValue","disableClose","hasBackdrop","MAT_DATE_LOCALE","imports","CommonModule","FormsModule","ReactiveFormsModule","MatMenuModule","MatSliderModule","MatTableModule","MatPaginatorModule","MatCheckboxModule","MatBadgeModule","MatButtonModule","MatIconModule","MatDialogModule","MatSnackBarModule","MatTabsModule","MatFormFieldModule","MatInputModule","MatCardModule","MatChipsModule","MatSelectModule","MatNativeDateModule","MatProgressSpinnerModule","MatListModule","MatAutocompleteModule","MatTooltipModule","MatSortModule","MatDatepickerModule","MatStepperModule","MatRadioModule","exports","LoaderInterceptor","authService","requests","removeRequest","req","indexOf","splice","intercept","request","requestClone","clone","setHeaders","Observable","observer","subscription","handle","event","HttpResponse","status","complete","unsubscribe","TinSpaComponent","i0.ɵɵtextInterpolate1","i0.ɵɵattribute","NavMenuComponent","isExpanded","rol","myRole","obj","collapse","toggle","TimeoutComponent","idle","keepalive","idleState","timedOut","lastPing","isWarning","setIdle","setTimeout","setInterrupts","DEFAULT_INTERRUPTSOURCES","onIdleStart","onIdleEnd","onTimeoutWarning","countdown","onTimeout","stopWatch","interval","onPing","startWatch","watch","stop","using","core$2","Idle","Keepalive","$event","ɵɵrestoreView","_r8","ɵɵnextContext","applyFilter","target","icon_r38","hint","i0.ɵɵelementContainerStart","i0.ɵɵelementContainerEnd","act_r46","color","i0.ɵɵstyleMap","TableComponent","dataChange","EventEmitter","buttonClick","loadClick","createClick","colType","displayedColumns","_filterText","columns","forEach","element","styleString","actions","ngOnChanges","MatTableDataSource","paginator","tablePaginator","filterValue","filter","trim","toLowerCase","do","ActionResponse","emit","load","a","Greater","Less","NotEqual","viewQuery","ɵɵpureFunction1","_c1$1","row_r1","tileName","ctx_r2","selected","TilesComponent","clickable","tileClick","clicked","tiles","outputs","DateComponent","FormControl","readonly","currentYear","min","max","dateChange","onChangeEvent","_r0","_r6","changed","leaved","enterPressed","_c0$3","ctx_r0","placeholder","control","required","_r12","ctx_r1","TextComponent","hideRequiredControl","valueChange","format","leave","enterPress","rows","options","optionValue","optionDisplay","myControl","regex","Validators","minLength","maxLength","pattern","initFilter","ngAfterViewInit","setValidators","updateValueAndValidity","filteredOptions","valueChanges","startWith","map","_filter","option","changed2","validate","hasError","_c0$4","removable","ChipsComponent","addable","click","remove","chip","removed","chips","viewerDialog","isProcessing","fileNames","currIndex","currentFileUrl","imageDoc","setURL","previous","endsWith","change","ViewerComponent","dir","folderName","title","viewDocs","minWidth","maxWidth","_r7","SelectComponent","readonlyMode","optionDisplayExtra","displayValue","features","ɵɵNgOnChangesFeature","CheckComponent","check","uncheck","unchecked","checked","DndDirective","fileDropped","onDragOver","evt","preventDefault","stopPropagation","fileOver","onDragLeave","ondrop","files","dataTransfer","hostVars","hostBindings","i0.ɵɵnamespaceSVG","AttachComponent","message","filesChange","upload","enableUpload","onFileDropped","prepareFilesList","fileBrowseHandler","deleteFile","index","files_1","files_1_1","progress","formatBytes","bytes","decimals","dm","Math","floor","parseFloat","pow","uploaded","filesChanged","DatetimeComponent","CURRENCY_INPUT_MASK_DIRECTIVE_VALUE_ACCESSOR","NG_VALUE_ACCESSOR","useExisting","forwardRef","CurrencyInputMaskDirective","multi","elementRef","decimalPipe","DECIMAL_MARK","el","nativeElement","handleFocus","strVal","getInputValue","unmaskedStr","getUnmaskedValue","updateInputValue","handleCut","inputUpdated","handleKeypress","newChar","fromCharCode","which","separatorIdx","isIdxBetweenSelection","positionAfterMark","setCursorPosition","handleInput","handlePaste","handleBlur","numVal","convertStrToDecimal","maskInput","onModelTouched","registerOnChange","callbackFunction","onModelChange","registerOnTouched","setDisabledState","writeValue","numValue","isNumeric","convertDecimalToStr","newVal","transformWithPipe","restrictDecimalValue","unmaskedVal","lastNumVal","dotIdx","substring","choppedVal","str","transform","savePosition","saveCursorPosition","isFinite","position","selectionStart","selectionEnd","idx","ElementRef","common","DecimalPipe","MoneyComponent","currency","initControl","_c0$6","ActivityComponent","notes","notesMessage","HtmlComponent","editable","spellcheck","height","minHeight","translate","defaultParagraphSeparator","defaultFontName","toolbarHiddenButtons","customClasses","class","tag","_r3","_r9","OptionComponent","show","OGValue","resetValue","LabelComponent","row_r2","StepsComponent","pushSteps","setStepper","stepper","selectedIndex","pushStepper","steps","_b","_c","STEPPER_GLOBAL_OPTIONS","displayDefaultIndicatorType","FilterComponent","refreshClick","refreshClicked","CurrencyInputModule","declarations","TinSpaModule","CurrencyPipe","HTTP_INTERCEPTORS","useClass","LocationStrategy","HashLocationStrategy","withConfig","warnOnNgModelWithFormControl","MomentModule","NgxDocViewerModule","AngularEditorModule","NgIdleKeepaliveModule","forRoot","forms","LoginComponent","storageService","dataService","route","User","hide","undefined","snapshot","redirectPath","signup","recoverAccount","login","apiResponse","success","expiration","changePassword","SignupComponent","Profile","account","Account","RecoverAccountComponent","recover","back","Location","SpaIndexModule","ChangePasswordComponent","ChangeUserPassword","ProfileComponent","selfProfile","loadProfile","loadRoles","roles","gotoUsers","update","updateProfile","SpaUserModule","i0.ɵɵtextInterpolate2","SettingsComponent","loadSettings","settings","updateSetting","sName","addSetting","LogsComponent","loadLogs","logs","logsPaginator","UsersComponent","UpdateData","users","usersPaginator","createAccount","viewProfile","lock","unlock","deleteUser","addRoleDialog","submit","RolesComponent","refresh","addRole","updateRole","deleteRole","CreateAccountComponent","register","Register","openProfile","authTypes","SpaAdminModule"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TinSpaService {\r\n\r\n constructor() { }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StorageService {\r\n\r\n constructor() { }\r\n\r\n // Store the value\r\n async store(storageKey: string, value: any) {\r\n const encryptedValue = btoa(escape(JSON.stringify(value)));\r\n // const encryptedValue = JSON.stringify(value);\r\n await localStorage.setItem(storageKey, encryptedValue);\r\n }\r\n\r\n // Get the value\r\n async get(storageKey: string) {\r\n const ret = await localStorage.getItem(storageKey);\r\n return JSON.parse(unescape(atob(ret)));\r\n // return JSON.parse(ret);\r\n }\r\n\r\n // Remove\r\n async removeStorageItem(storageKey: string) {\r\n await localStorage.removeItem(storageKey);\r\n }\r\n\r\n // Clear storage\r\n async clear() {\r\n await localStorage.clear();\r\n }\r\n\r\n}\r\n","\r\n <h2 mat-dialog-title>\r\n\r\n <mat-label *ngIf=\"messageType=='confirm'\">Confirm</mat-label>\r\n <mat-label *ngIf=\"messageType=='info'\">Information</mat-label>\r\n <mat-label *ngIf=\"messageType=='error'\">Error</mat-label>\r\n\r\n </h2>\r\n\r\n <mat-dialog-content class=\"mat-typography\">\r\n\r\n\r\n <!-- Confirm -->\r\n <p *ngIf=\"messageType=='confirm'\">{{_messageDetails}}</p>\r\n\r\n\r\n <!-- Information -->\r\n <div *ngIf=\"messageType=='info'\">\r\n\r\n <h3>{{_messageSubject}}</h3>\r\n <mat-label>{{_messageDetails}}</mat-label>\r\n\r\n </div>\r\n\r\n\r\n <!-- Error -->\r\n <div *ngIf=\"messageType=='error'\">\r\n\r\n <mat-label>{{_messageDetails}}</mat-label>\r\n\r\n </div>\r\n\r\n\r\n </mat-dialog-content>\r\n\r\n<mat-dialog-actions>\r\n\r\n <button id=\"btnYes\" mat-stroked-button *ngIf=\"messageType=='confirm'\" (click)=\"response('yes')\" cdkFocusInitial>Yes</button>\r\n\r\n <button id=\"btnNo\" mat-stroked-button *ngIf=\"messageType=='confirm'\" (click)=\"response('no')\" >No</button>\r\n\r\n <button id=\"btnOK\" mat-stroked-button *ngIf=\"messageType=='info' || messageType=='error'\" (click)=\"response('ok')\" cdkFocusInitial>OK</button>\r\n\r\n</mat-dialog-actions>\r\n\r\n\r\n\r\n","import { Core } from \"./TinCore\";\r\n\r\nexport enum LogLevel {\r\n All = 0,\r\n Debug = 1,\r\n Info = 2,\r\n Warn = 3,\r\n Error = 4,\r\n Fatal = 5,\r\n Off = 6,\r\n}\r\n\r\nexport class Tile {\r\n\r\n tileName: string;\r\n tileValue: string;\r\n tileColor: string;\r\n selected: string;\r\n visible?: boolean;\r\n info?: string;\r\n}\r\n\r\nexport class Step {\r\n name: string\r\n icon: string;\r\n}\r\n\r\nexport class TableConfig {\r\n\r\n enableFilter: boolean = false;\r\n create = new TableCreate();\r\n\r\n columns: TableColumn[];\r\n actions: TableAction[];\r\n\r\n greyout = new Condition();\r\n\r\n}\r\n\r\nexport class TableCreate {\r\n enabled: boolean\r\n display: string;\r\n}\r\n\r\nexport class TableColumn {\r\n\r\n constructor() {\r\n this.name = \"default\"\r\n this.display = \"default\"\r\n this.type = TableColumnType.String\r\n\r\n }\r\n\r\n public name: string;\r\n public display: string;\r\n public type?: TableColumnType;\r\n public icons?: Icon[];\r\n public color?: Color;\r\n}\r\n\r\nexport enum TableColumnType {\r\n String, Date, DateTime, Image, Icon, TextIcon, Chip\r\n}\r\n\r\n\r\nexport class Condition {\r\n constructor() {\r\n this.field = \"\";\r\n this.operator = Operator.Equal;\r\n this.value = \"\";\r\n }\r\n field: string;\r\n operator: Operator;\r\n value: string;\r\n}\r\n\r\nexport enum Operator {\r\n Equal, Less, Greater, NotEqual\r\n}\r\n\r\n\r\n\r\nexport class Color extends Condition {\r\n name: string;\r\n}\r\n\r\nexport class Icon extends Condition {\r\n name: string;\r\n hint?: string;\r\n color?: string;\r\n}\r\n\r\n\r\nexport class TableAction {\r\n\r\n name: string;\r\n show?: boolean;\r\n icon: string;\r\n color?: string;\r\n hint?: string;\r\n\r\n disappear?: Condition;\r\n disable?: Condition;\r\n\r\n}\r\n\r\n\r\nexport class ActionResponse {\r\n name: string;\r\n value;\r\n}\r\n\r\n\r\nexport class loginConfig {\r\n\r\n constructor() {\r\n this.appName = \"\";\r\n this.selfService = false;\r\n this.logo = \"\";\r\n this.logoSize = \"normal\";\r\n }\r\n\r\n appName: string;\r\n selfService: boolean;\r\n logo: string;\r\n logoSize: string;\r\n}\r\n\r\n\r\nexport class AppConfig {\r\n constructor() {\r\n this.appName = \"App Name\";\r\n this.logo = \"\";\r\n this.logoSize = \"normal\";\r\n this.ADAuth = true;\r\n this.localAuth = true;\r\n this.selfService = false;\r\n }\r\n appName: string;\r\n logo: string;\r\n logoSize: string;\r\n ADAuth: boolean;\r\n localAuth: boolean;\r\n selfService: boolean;\r\n capItems: CapItem[];\r\n\r\n\r\n}\r\n\r\nexport class CapItem {\r\n\r\n constructor() {\r\n this.name = \"\";\r\n this.display = \"New Cap Item\";\r\n this.enabled = false;\r\n this.type = \"\";\r\n this.newLine = false;\r\n this.showMenu = true;\r\n this.ignoreSubsDisplay = false;\r\n this.link = \"\";\r\n this.icon = \"navigate_next\";\r\n\r\n }\r\n\r\n name: string;\r\n display: string;\r\n enabled: boolean;\r\n showMenu: boolean;\r\n\r\n ignoreSubsDisplay: boolean;\r\n type: string;\r\n newLine: boolean;\r\n link: string;\r\n icon: string;\r\n capSubItems: CapItem[];\r\n\r\n}\r\n\r\n\r\nexport class Account {\r\n user: User;\r\n profile: Profile;\r\n}\r\n\r\nexport class User {\r\n\r\n constructor() {\r\n\r\n\r\n this.userName = \"\";\r\n this.password = \"\";\r\n this.tries = \"0\";\r\n this.locked = \"0\";\r\n this.logged = \"0\";\r\n this.disabled = \"0\";\r\n this.changepassword = \"0\";\r\n this.dateCreated = Core.nowDate();\r\n this.dateUpdated = Core.nowDate();\r\n this.token = \"\";\r\n this.dateExpire = Core.nowDate();\r\n this.tokenExpire = Core.nowDate();\r\n this.authType = \"\";\r\n }\r\n\r\n userName:string;\r\n password: string;\r\n tries: string;\r\n locked: string;\r\n logged: string;\r\n disabled: string;\r\n changepassword: string;\r\n dateCreated: string;\r\n dateUpdated: string;\r\n dateExpire: string;\r\n token: string;\r\n tokenExpire: string;\r\n\r\n authType: string;\r\n}\r\n\r\nexport class ChangeUserPassword {\r\n\r\n constructor() {\r\n this.userName = \"\";\r\n this.currentPassword = \"\";\r\n this.newPassword = \"\";\r\n this.confirmPassword = \"\";\r\n }\r\n userName: string;\r\n currentPassword: string;\r\n newPassword: string;\r\n confirmPassword: string;\r\n}\r\n\r\nexport class Register {\r\n\r\n constructor() {\r\n this.userName = \"\";\r\n this.roleID = 1;\r\n this.firstName = \"\";\r\n this.lastName = \"\";\r\n this.email = \"\";\r\n this.authType = \"\";\r\n this.password = \"\";\r\n }\r\n\r\n userName: string;\r\n roleID: number;\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n authType: string;\r\n password: string;\r\n}\r\n\r\nexport class Profile {\r\n\r\n constructor() {\r\n this.profileID = \"\";\r\n this.userName = \"\";\r\n this.roleID = 1;\r\n this.firstName = \"\";\r\n this.lastName = \"\";\r\n this.email = \"\";\r\n this.empID = \"\";\r\n this.arID = \"0\";\r\n this.authType = \"\";\r\n this.password = \"\";\r\n this.role = new Role();\r\n }\r\n\r\n profileID: string;\r\n userName: string;\r\n roleID: number;\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n empID: string;\r\n arID: string;\r\n authType: string;\r\n password: string;\r\n role: Role\r\n}\r\n\r\n\r\nexport class Role {\r\n\r\n constructor() {\r\n this.roleID = 0;\r\n this.roleName = \"New Role\";\r\n this.cap1 = false;\r\n this.cap2 = false;\r\n this.cap3 = false;\r\n this.cap4 = false;\r\n this.cap5 = false;\r\n this.cap6 = false;\r\n this.cap7 = false;\r\n this.cap8 = false;\r\n this.cap9 = false;\r\n this.cap10 = false;\r\n this.cap11 = false;\r\n this.cap12 = false;\r\n this.cap13 = false;\r\n this.cap14 = false;\r\n this.cap15 = false;\r\n this.cap16 = false;\r\n this.cap17 = false;\r\n this.cap18 = false;\r\n this.cap19 = false;\r\n this.cap20 = false;\r\n this.cap21 = false;\r\n this.cap22 = false;\r\n this.cap23 = false;\r\n this.cap24 = false;\r\n this.cap25 = false;\r\n this.cap26 = false;\r\n this.cap27 = false;\r\n this.cap28 = false;\r\n this.cap29 = false;\r\n this.cap30 = false;\r\n this.cap31 = false;\r\n this.cap32 = false;\r\n this.cap33 = false;\r\n this.cap34 = false;\r\n this.cap35 = false;\r\n this.cap36 = false;\r\n this.cap37 = false;\r\n this.cap38 = false;\r\n this.cap39 = false;\r\n this.cap40 = false;\r\n this.cap41 = false;\r\n this.cap42 = false;\r\n this.cap43 = false;\r\n this.cap44 = false;\r\n this.cap45 = false;\r\n this.cap46 = false;\r\n this.cap47 = false;\r\n this.cap48 = false;\r\n this.cap49 = false;\r\n this.cap50 = false;\r\n this.cap51 = false;\r\n this.cap52 = false;\r\n this.cap53 = false;\r\n this.cap54 = false;\r\n this.cap55 = false;\r\n this.cap56 = false;\r\n this.cap57 = false;\r\n this.cap58 = false;\r\n this.cap59 = false;\r\n this.cap60 = false;\r\n this.cap61 = false;\r\n this.cap62 = false;\r\n this.cap63 = false;\r\n this.cap64 = false;\r\n this.cap65 = false;\r\n this.cap66 = false;\r\n this.cap67 = false;\r\n this.cap68 = false;\r\n this.cap69 = false;\r\n this.cap70 = false;\r\n this.cap71 = false;\r\n this.cap72 = false;\r\n this.cap73 = false;\r\n this.cap74 = false;\r\n this.cap75 = false;\r\n this.cap76 = false;\r\n this.cap77 = false;\r\n this.cap78 = false;\r\n this.cap79 = false;\r\n this.cap80 = false;\r\n this.cap81 = false;\r\n this.cap82 = false;\r\n this.cap83 = false;\r\n this.cap84 = false;\r\n this.cap85 = false;\r\n this.cap86 = false;\r\n this.cap87 = false;\r\n this.cap88 = false;\r\n this.cap89 = false;\r\n this.cap90 = false;\r\n this.cap91 = false;\r\n this.cap92 = false;\r\n this.cap93 = false;\r\n this.cap94 = false;\r\n this.cap95 = false;\r\n this.cap96 = false;\r\n this.cap97 = false;\r\n this.cap98 = false;\r\n this.cap99 = false;\r\n this.cap100 = false;\r\n }\r\n\r\n roleID: number;\r\n roleName: string;\r\n cap1: boolean;\r\n cap2: boolean;\r\n cap3: boolean;\r\n cap4: boolean;\r\n cap5: boolean;\r\n cap6: boolean;\r\n cap7: boolean;\r\n cap8: boolean;\r\n cap9: boolean;\r\n cap10: boolean;\r\n cap11: boolean;\r\n cap12: boolean;\r\n cap13: boolean;\r\n cap14: boolean;\r\n cap15: boolean;\r\n cap16: boolean;\r\n cap17: boolean;\r\n cap18: boolean;\r\n cap19: boolean;\r\n cap20: boolean;\r\n cap21: boolean;\r\n cap22: boolean;\r\n cap23: boolean;\r\n cap24: boolean;\r\n cap25: boolean;\r\n cap26: boolean;\r\n cap27: boolean;\r\n cap28: boolean;\r\n cap29: boolean;\r\n cap30: boolean;\r\n cap31: boolean;\r\n cap32: boolean;\r\n cap33: boolean;\r\n cap34: boolean;\r\n cap35: boolean;\r\n cap36: boolean;\r\n cap37: boolean;\r\n cap38: boolean;\r\n cap39: boolean;\r\n cap40: boolean;\r\n cap41: boolean;\r\n cap42: boolean;\r\n cap43: boolean;\r\n cap44: boolean;\r\n cap45: boolean;\r\n cap46: boolean;\r\n cap47: boolean;\r\n cap48: boolean;\r\n cap49: boolean;\r\n cap50: boolean;\r\n cap51: boolean;\r\n cap52: boolean;\r\n cap53: boolean;\r\n cap54: boolean;\r\n cap55: boolean;\r\n cap56: boolean;\r\n cap57: boolean;\r\n cap58: boolean;\r\n cap59: boolean;\r\n cap60: boolean;\r\n cap61: boolean;\r\n cap62: boolean;\r\n cap63: boolean;\r\n cap64: boolean;\r\n cap65: boolean;\r\n cap66: boolean;\r\n cap67: boolean;\r\n cap68: boolean;\r\n cap69: boolean;\r\n cap70: boolean;\r\n cap71: boolean;\r\n cap72: boolean;\r\n cap73: boolean;\r\n cap74: boolean;\r\n cap75: boolean;\r\n cap76: boolean;\r\n cap77: boolean;\r\n cap78: boolean;\r\n cap79: boolean;\r\n cap80: boolean;\r\n cap81: boolean;\r\n cap82: boolean;\r\n cap83: boolean;\r\n cap84: boolean;\r\n cap85: boolean;\r\n cap86: boolean;\r\n cap87: boolean;\r\n cap88: boolean;\r\n cap89: boolean;\r\n cap90: boolean;\r\n cap91: boolean;\r\n cap92: boolean;\r\n cap93: boolean;\r\n cap94: boolean;\r\n cap95: boolean;\r\n cap96: boolean;\r\n cap97: boolean;\r\n cap98: boolean;\r\n cap99: boolean;\r\n cap100: boolean;\r\n}\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatDialog, MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\n\r\n\r\n@Component({\r\n selector: 'lib-app-message',\r\n templateUrl: './messageDialog.component.html'\r\n})\r\n\r\nexport class messageDialog implements OnInit {\r\n\r\n constructor(private dialogRef: MatDialogRef<messageDialog>, @Inject(MAT_DIALOG_DATA) public data) { }\r\n\r\n\r\n ngOnInit() {\r\n\r\n this.messageType = this.data.type\r\n this._messageSubject = this.data.subject;\r\n this._messageDetails = this.data.details;\r\n\r\n }\r\n\r\n messageType;\r\n _messageSubject;\r\n _messageDetails;\r\n\r\n response(resp: string) {\r\n\r\n this.dialogRef.close(resp);\r\n\r\n }\r\n\r\n};\r\n\r\n\r\n\r\n","import { Injectable } from \"@angular/core\";\r\nimport { MatSnackBar } from \"@angular/material/snack-bar\";\r\nimport { MatDialog } from \"@angular/material/dialog\";\r\nimport { messageDialog } from \"../components/message/messageDialog.component\";\r\nimport { Observable, of } from 'rxjs';\r\nimport { mergeMap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class MessageService {\r\n constructor(private snackBar: MatSnackBar, public dialog: MatDialog) { }\r\n\r\n public toast(msg: string) {\r\n this.snackBar.open(msg, \"OK\", { duration: 5000 });\r\n }\r\n\r\n public info(subject: string, details: string) {\r\n\r\n let type = \"info\";\r\n\r\n const dialogRef = this.dialog.open(messageDialog, {\r\n width: \"600px\",\r\n data: { type, subject, details },\r\n });\r\n\r\n }\r\n\r\n public error(details: string) {\r\n\r\n let type = \"error\";\r\n let subject: \"\";\r\n\r\n const dialogRef = this.dialog.open(messageDialog, {\r\n width: \"600px\",\r\n data: { type, subject, details },\r\n });\r\n\r\n }\r\n\r\n public confirm(msg: string): Observable<any> {\r\n\r\n let type = \"confirm\";\r\n let subject = \"\";\r\n let details = msg\r\n\r\n const dialogRef = this.dialog.open(messageDialog, {\r\n width: \"400px\",\r\n data: { type, subject, details },\r\n });\r\n\r\n return dialogRef.afterClosed().pipe(mergeMap((result) => {\r\n\r\n return of(result);\r\n\r\n }\r\n\r\n ));\r\n\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as FileSaver from 'file-saver';\r\nimport * as XLSX from 'xlsx';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExportService {\r\n\r\n constructor() { }\r\n\r\n fileType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\r\n fileExtension = '.xlsx';\r\n\r\n public exportExcel(jsonData: any[], fileName: string): void {\r\n\r\n const ws: XLSX.WorkSheet = XLSX.utils.json_to_sheet(jsonData);\r\n const wb: XLSX.WorkBook = { Sheets: { 'data': ws }, SheetNames: ['data'] };\r\n const excelBuffer: any = XLSX.write(wb, { bookType: 'xlsx', type: 'array' });\r\n this.saveExcelFile(excelBuffer, fileName);\r\n }\r\n\r\n private saveExcelFile(buffer: any, fileName: string): void {\r\n const data: Blob = new Blob([buffer], { type: this.fileType });\r\n FileSaver.saveAs(data, fileName + this.fileExtension);\r\n }\r\n}\r\n","export class Core {\r\n\r\n public static getClone(x) {\r\n return JSON.parse(JSON.stringify(x))\r\n }\r\n\r\n public static getNumber(value: string) {\r\n\r\n if (value == null || value == \"\") {\r\n return 0;\r\n }\r\n\r\n const onlyNumbers = value.replace(/[^\\d.-]/g, '');\r\n return onlyNumbers\r\n }\r\n\r\n public static getFirstDayOfMonth() {\r\n const date = new Date();\r\n return new Date(date.getFullYear(), date.getMonth(), 1);\r\n }\r\n\r\n public static emailIsValid(email) {\r\n return /\\S+@\\S+\\.\\S+/.test(email)\r\n }\r\n\r\n public static isValidUNCPath(path: string) {\r\n return /\\\\\\\\([a-zA-Z0-9_.$●-]+)\\\\([a-zA-Z0-9_.$●-]+).*/.test(path)\r\n }\r\n\r\n public static isValidDate(date) {\r\n\r\n var parsedDate = Date.parse(date);\r\n\r\n\r\n if (isNaN(date) && !isNaN(parsedDate)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n public static isValidEmailList(list: string) {\r\n\r\n if (list.includes(\";\")) {\r\n\r\n let emails = list.split(\";\")\r\n\r\n for (var email of emails) {\r\n if (this.emailIsValid(email) == false) {\r\n return false;\r\n }\r\n }\r\n\r\n\r\n } else {\r\n\r\n if (this.emailIsValid(list) == false) {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n return true;\r\n\r\n }\r\n\r\n public static nullDate = \"01 Jan 1969\"\r\n\r\n public static isNumber(value: string | number): boolean {\r\n return ((value != null) &&\r\n (value !== '') &&\r\n !isNaN(Number(value.toString())));\r\n }\r\n\r\n public static getDiff(startDate, endDate = Date()) {\r\n\r\n var eventStartTime = new Date(startDate);\r\n var eventEndTime = new Date(endDate);\r\n var milliseconds = eventEndTime.valueOf() - eventStartTime.valueOf();\r\n\r\n function numberEnding(number: number) {\r\n\r\n if (number.toFixed() == '1') {\r\n return ''\r\n } else {\r\n return 's';\r\n }\r\n\r\n }\r\n\r\n var minutes = (milliseconds / (1000 * 60));\r\n\r\n var hours: number = (milliseconds / (1000 * 60 * 60));\r\n\r\n var days = (milliseconds / (1000 * 60 * 60 * 24));\r\n\r\n var weeks: number = (milliseconds / (1000 * 60 * 60 * 24 * 7));\r\n\r\n var months = (milliseconds / (1000 * 60 * 60 * 24 * 7 * 4));\r\n\r\n var years = (milliseconds / (1000 * 60 * 60 * 24 * 365));\r\n\r\n\r\n if (years >= 1) {\r\n\r\n return years.toFixed() + ' year' + numberEnding(years);\r\n\r\n } else if (months >= 1) {\r\n\r\n return months.toFixed() + ' month' + numberEnding(months);\r\n\r\n } else if (weeks >= 1) {\r\n\r\n return weeks.toFixed() + ' week' + numberEnding(weeks);\r\n\r\n } else if (days >= 1) {\r\n\r\n return days.toFixed() + ' day' + numberEnding(days);\r\n\r\n } else if (hours >= 1) {\r\n\r\n return hours.toFixed() + ' hour' + numberEnding(hours);\r\n\r\n } else if (minutes >= 1) {\r\n\r\n return minutes.toFixed() + ' minute' + numberEnding(minutes);\r\n\r\n } else if (milliseconds >= (-1000 * 60)) {\r\n\r\n return 'a minute';\r\n\r\n } else {\r\n\r\n return 'N/A';\r\n }\r\n\r\n }\r\n\r\n\r\n public static nowDate(NoTime: boolean = false) {\r\n\r\n if (NoTime) {\r\n return this.getFormatedDate(Date(), true);\r\n } else {\r\n return this.getFormatedDate(Date());\r\n }\r\n }\r\n\r\n public static getFormatedDate(dateString: string, NoTime: boolean = false) {\r\n\r\n let d: Date = new Date(dateString);\r\n d.setHours(d.getHours() + 2);\r\n\r\n if (NoTime == true) {\r\n return d.toISOString().split('T')[0];\r\n } else {\r\n return d.toISOString().split('.')[0];\r\n }\r\n\r\n }\r\n\r\n public static getBusinessDatesCount(startDate: string, endDate: string) {\r\n var count = 0;\r\n var _startDate = new Date(startDate);\r\n var _endDate = new Date(endDate);\r\n\r\n var curDate = _startDate;\r\n\r\n while (curDate < _endDate) {\r\n var dayOfWeek = curDate.getDay();\r\n if (!(dayOfWeek == 6 || dayOfWeek == 0)) count++;\r\n curDate.setDate(curDate.getDate() + 1);\r\n }\r\n\r\n return count;\r\n }\r\n\r\n}\r\n\r\n\r\nexport class ApiResponse {\r\n success: boolean;\r\n message: string;\r\n data;\r\n}\r\n\r\nexport class Constants {\r\n public static readonly AUTH_USER = 'a';\r\n public static readonly AUTH_NAME = 'b';\r\n public static readonly AUTH_ROLES = 'c';\r\n public static readonly AUTH_TOKEN = 'd';\r\n public static readonly AUTH_TOKEN_EXPIRE = 'e';\r\n}\r\n\r\n","import { Injectable, Inject } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\nimport { HttpClient, HttpHeaders, HttpErrorResponse, } from \"@angular/common/http\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class HttpService {\r\n\r\n constructor(private httpClient: HttpClient, private router: Router) { }\r\n\r\n\r\n //----Set apiUrl from the data service of the project---//\r\n public apiUrl = \"https://api.solinc.co.zw/\"; //default\r\n\r\n\r\n\r\n //POST\r\n public Post(service: string, data: any): Observable<any> {\r\n return this.httpClient.post(this.apiUrl + service, data, this.httpOptions_Legacy);\r\n }\r\n\r\n //PUT\r\n public Put(service: string, data: any): Observable<any> {\r\n return this.httpClient.put(this.apiUrl + service, data, this.httpOptions_Legacy);\r\n }\r\n\r\n\r\n //POST RAW\r\n public Post_Raw(url: string, data: any): Observable<any> {\r\n\r\n return this.httpClient.post(url, data, this.httpOptions_Legacy);\r\n }\r\n\r\n //POST with file\r\n public Post_WithFile(service: string, data: any, file: File) {\r\n\r\n let formData: FormData = new FormData();\r\n\r\n if (file) {\r\n formData.append(\"uploadFile\", file, file.name);\r\n }\r\n\r\n formData.append(\"data\", JSON.stringify(data));\r\n\r\n return this.httpClient.post(this.apiUrl + service, formData, this.httpOptions_Files);\r\n }\r\n\r\n // //POST with files\r\n public Post_FormData(service: string, formData: FormData) {\r\n\r\n return this.httpClient.post(this.apiUrl + service, formData, this.httpOptions_Files);\r\n }\r\n\r\n //GET\r\n public Get(service: string): Observable<any> {\r\n return this.httpClient.get(this.apiUrl + service, this.httpOptions_Legacy);\r\n }\r\n\r\n //Get RAW\r\n public Get_Raw(url: string): Observable<any> {\r\n return this.httpClient.get(url, this.httpOptions_Legacy);\r\n }\r\n\r\n //ERROR\r\n public Error(error: HttpErrorResponse) {\r\n if (error.statusText == \"Unauthorized\") {\r\n this.router.navigate([\"login\"]);\r\n return \"Unauthorized\";\r\n } else {\r\n return \"Connection failed\";\r\n }\r\n }\r\n\r\n private httpOptions_Legacy = {\r\n headers: new HttpHeaders({\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n Authorization: \"Basic \" + btoa(\"emptyUser:emptyToken\"),\r\n }),\r\n resposeType: \"json\",\r\n };\r\n\r\n private httpOptions_Files = {\r\n headers: new HttpHeaders({\r\n Authorization: \"Basic \" + btoa(\"tnyagato:j5Toszfr@ys\"),\r\n }),\r\n resposeType: \"json\",\r\n };\r\n}\r\n","// import { Core } from 'tin-core';\r\nimport { logging } from 'protractor';\r\nimport { Injectable } from \"@angular/core\";\r\nimport { LogLevel } from '../classes/Classes';\r\nimport { Core } from '../classes/TinCore';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class LogService {\r\n constructor() { }\r\n\r\n level: LogLevel = LogLevel.All;\r\n\r\n logToConsole: boolean = true;\r\n\r\n logToApi: boolean = false;\r\n\r\n debug(msg: string, ...optionalParams: any[]) {\r\n this.writeToLog(msg, LogLevel.Debug, optionalParams);\r\n }\r\n\r\n info(msg: string, ...optionalParams: any[]) {\r\n this.writeToLog(msg, LogLevel.Info, optionalParams);\r\n }\r\n\r\n warn(msg: string, ...optionalParams: any[]) {\r\n this.writeToLog(msg, LogLevel.Warn, optionalParams);\r\n }\r\n\r\n error(msg: string, ...optionalParams: any[]) {\r\n this.writeToLog(msg, LogLevel.Error, optionalParams);\r\n }\r\n\r\n fatal(msg: string, ...optionalParams: any[]) {\r\n this.writeToLog(msg, LogLevel.Fatal, optionalParams);\r\n }\r\n\r\n log(msg: string, ...optionalParams: any[]) {\r\n this.writeToLog(msg, LogLevel.All, optionalParams);\r\n\r\n }\r\n\r\n private writeToLog(msg: string, level: LogLevel, params: any[]) {\r\n\r\n if (this.shouldLog(level)) {\r\n\r\n // Build log string\r\n let value: string = Core.getFormatedDate(Date(), false).replace(\"T\", \" \");\r\n // value += \" - Type: \" + LogLevel[this.level];\r\n value += \" - Message: \" + msg;\r\n\r\n\r\n if (params.length) {\r\n value += \" - Extra Info: \" + this.formatParams(params);\r\n }\r\n\r\n // Log the value\r\n if (this.logToConsole) {\r\n console.log(value);\r\n }\r\n\r\n if (this.logToApi) {\r\n //Call API post\r\n }\r\n\r\n }\r\n }\r\n\r\n private formatParams(params: any[]): string {\r\n\r\n let ret: string = params.join(\",\");\r\n // Is there at least one object in the array?\r\n if (params.some((p) => typeof p == \"object\")) {\r\n ret = \"\";\r\n // Build comma-delimited string\r\n for (let item of params) {\r\n ret += JSON.stringify(item) + \",\";\r\n }\r\n }\r\n return ret;\r\n }\r\n\r\n private shouldLog(level: LogLevel): boolean {\r\n\r\n let ret: boolean = false;\r\n\r\n if (\r\n (level >= this.level && level !== LogLevel.Off) ||\r\n this.level === LogLevel.All\r\n ) {\r\n ret = true;\r\n }\r\n\r\n return ret;\r\n }\r\n}\r\n\r\n\r\n\r\n","import { MessageService } from './message.service';\r\nimport { Injectable } from '@angular/core';\r\nimport { Router, CanActivate, ActivatedRoute } from '@angular/router';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { StorageService } from './storage.service';\r\nimport { LogService } from './log.service';\r\nimport { Role } from '../classes/Classes';\r\nimport { HttpService } from './http.service';\r\nimport { Constants } from '../classes/TinCore';\r\nimport { conditionallyCreateMapObjectLiteral } from '@angular/compiler/src/render3/view/util';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class AuthService implements CanActivate {\r\n\r\n constructor(private _route: ActivatedRoute, private storage: StorageService, public router: Router, private httpService: HttpService, private messageService: MessageService, private logService: LogService) { }\r\n\r\n //Logged in\r\n private loggedin: boolean = false;\r\n private loggedinSource = new BehaviorSubject(this.loggedin);\r\n public loggedinObserv = this.loggedinSource.asObservable();\r\n Updateloggedin(loggedin: boolean) {\r\n this.loggedinSource.next(loggedin);\r\n this.loggedin = loggedin;\r\n }\r\n\r\n //Token\r\n private token: string = \"\";\r\n public tokenSource = new BehaviorSubject(this.token);\r\n public tokenObserv = this.tokenSource.asObservable();\r\n UpdateToken(newToken: string) {\r\n this.tokenSource.next(newToken);\r\n\r\n }\r\n\r\n //TokenExpire\r\n private tokenExpire: string = \"\";\r\n public tokenExpireSource = new BehaviorSubject(this.tokenExpire);\r\n public tokenExpireObserv = this.tokenExpireSource.asObservable();\r\n UpdateTokenExpire(newTokenExpire: string) {\r\n this.tokenExpireSource.next(newTokenExpire);\r\n\r\n }\r\n\r\n //Current User\r\n public currentUser: string = \"tnyagato\";\r\n private currentUserSource = new BehaviorSubject(this.currentUser);\r\n public currentUserObserv = this.currentUserSource.asObservable();\r\n UpdateCurrentUser(newUser: string) {\r\n this.currentUserSource.next(newUser.toLocaleLowerCase());\r\n this.currentUser = newUser.toLocaleLowerCase();\r\n }\r\n\r\n //Line Manager\r\n private islineManager: boolean = false;\r\n private isLineManagerSource = new BehaviorSubject(this.islineManager);\r\n public isLineManagerObserv = this.isLineManagerSource.asObservable();\r\n UpdateIsLineManager(manager: boolean) {\r\n this.isLineManagerSource.next(manager);\r\n }\r\n\r\n //Roles\r\n private currentRole = new Role;\r\n public currentRoleSource = new BehaviorSubject(this.currentRole);\r\n public myRoleObserv = this.currentRoleSource.asObservable();\r\n UpdateRole(role) {\r\n this.currentRoleSource.next(role);\r\n }\r\n\r\n //Logged in FirstName\r\n private loggedUserSource = new BehaviorSubject(\"tnyagato\");\r\n public loggedUserFullName = this.loggedUserSource.asObservable();\r\n updateLoggedUserFullName(userName: string) {\r\n this.loggedUserSource.next(userName);\r\n }\r\n\r\n\r\n //Authorisation\r\n isAuthorised(capName: string): boolean {\r\n\r\n if (!this.currentRoleSource.value[capName]) {\r\n // this.logService.info(`authorise: ${this.currentRoleSource.value.roleName} not authorised for ${capName}`);\r\n this.router.navigate([\"home\"]);\r\n this.messageService.toast(`Unauthorised: ${capName}`);\r\n\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n\r\n }\r\n\r\n isValidToken() {\r\n\r\n let tokenExpire: Date = new Date(this.tokenExpireSource.value);\r\n let nowDate: Date = new Date();\r\n\r\n let valid: boolean = tokenExpire > nowDate;\r\n\r\n if (!valid) {\r\n\r\n this.router.navigate([\"login\"]);\r\n this.messageService.toast(`Expired Session`);\r\n }\r\n\r\n return valid\r\n }\r\n\r\n canActivate() {\r\n\r\n if (this.loggedin && this.isValidToken()) {\r\n // this.logService.info(\"authentication: logged in\");\r\n return true;\r\n }\r\n\r\n if (localStorage.getItem(Constants.AUTH_USER) === null) {\r\n // this.logService.info(\"authentication: not logged and no cache\");\r\n\r\n this.Updateloggedin(false);\r\n\r\n let url = new URL(window.location.href);\r\n let path = url.hash.replace(\"#/\",\"\");\r\n\r\n\r\n this.router.navigate([\"login\"], {\r\n relativeTo: this._route,\r\n queryParams: {redirectTo: path},\r\n queryParamsHandling: 'merge',\r\n skipLocationChange: false\r\n });\r\n\r\n return false;\r\n\r\n } else {\r\n // this.logService.info(\"authentication: not logged but allowed login\");\r\n\r\n this.Updateloggedin(true);\r\n\r\n this.storage.get(Constants.AUTH_USER).then((resp: any) => {\r\n this.UpdateCurrentUser(resp);\r\n });\r\n\r\n this.storage.get(Constants.AUTH_NAME).then((resp: any) => {\r\n this.updateLoggedUserFullName(resp);\r\n });\r\n\r\n this.storage.get(Constants.AUTH_ROLES).then((resp) => {\r\n let ret = JSON.parse(resp);\r\n\r\n this.UpdateRole(ret);\r\n });\r\n\r\n this.storage.get(Constants.AUTH_TOKEN).then((resp: any) => {\r\n this.UpdateToken(resp);\r\n });\r\n\r\n this.storage.get(Constants.AUTH_TOKEN_EXPIRE).then((resp: any) => {\r\n this.UpdateTokenExpire(resp);\r\n this.isValidToken();\r\n });\r\n\r\n return true;\r\n }\r\n }\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { AppConfig, CapItem, User } from '../classes/Classes';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { HttpService } from './http.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DataServiceLib {\r\n\r\n constructor(private httpService: HttpService) {\r\n\r\n this.appConfig.appName = \"App-Name\";\r\n this.appConfig.logo = \"./assets/logo.png\"\r\n this.appConfig.ADAuth = true;\r\n this.appConfig.capItems = [this.capAdmin, this.capHome];\r\n\r\n\r\n this.capHome.name = \"cap1\";\r\n this.capHome.display = \"Home\";\r\n this.capHome.link = \"home\";\r\n\r\n this.capAdmin.name = \"cap2\";\r\n this.capAdmin.display = \"Admin\";\r\n this.capAdmin.capSubItems = [this.capUsers, this.capRoles, this.capLogs, this.capSettings];\r\n\r\n this.capUsers.name = \"cap3\";\r\n this.capUsers.display = \"Users\";\r\n this.capUsers.link = \"home/admin/users\";\r\n\r\n this.capRoles.name = \"cap4\"\r\n this.capRoles.display = \"Roles\";\r\n this.capRoles.link = \"home/admin/roles\";\r\n\r\n this.capLogs.name = \"cap5\"\r\n this.capLogs.display = \"Logs\";\r\n this.capLogs.link = \"home/admin/logs\";\r\n\r\n this.capSettings.name = \"cap6\"\r\n this.capSettings.display = \"Settings\";\r\n this.capSettings.link = \"home/admin/settings\";\r\n }\r\n\r\n\r\n appConfig = new AppConfig();\r\n private appConfigSource = new BehaviorSubject(this.appConfig);\r\n public appConfigObserv = this.appConfigSource.asObservable();\r\n UpdateAppConfig(config: AppConfig) {\r\n this.appConfigSource.next(config);\r\n this.appConfig = config;\r\n }\r\n\r\n // caps: CapItem[];\r\n capHome = new CapItem;\r\n capAdmin = new CapItem;\r\n capUsers = new CapItem;\r\n capRoles = new CapItem;\r\n capLogs = new CapItem;\r\n capSettings = new CapItem;\r\n\r\n\r\n public tmpProfileuserName = \"\";\r\n\r\n\r\n //Users\r\n public GetUser() {\r\n return this.httpService.Get(\"User/all/x\");\r\n }\r\n\r\n public RegisterAccount(u) {\r\n return this.httpService.Post(\"User/register\", u);\r\n }\r\n\r\n public GetUserByID(val: string) {\r\n return this.httpService.Get(`User/id/${val}`);\r\n }\r\n\r\n public UpdateUser(profile) {\r\n return this.httpService.Post(\"User/edit\", profile);\r\n }\r\n\r\n public UnlockUser(user) {\r\n return this.httpService.Post(\"User/unlock\", user);\r\n }\r\n\r\n public LockUser(user) {\r\n return this.httpService.Post(\"User/lock\", user);\r\n }\r\n\r\n public DeleteUser(user) {\r\n return this.httpService.Post(\"User/delete\", user);\r\n }\r\n\r\n public Login(u: User) {\r\n return this.httpService.Post(\"User/login\", u);\r\n }\r\n\r\n public ChangePassword(u) {\r\n return this.httpService.Post(\"User/changepassword-self\", u);\r\n }\r\n\r\n public ChangePasswordAdmin(u) {\r\n return this.httpService.Post(\"User/changepassword-admin\", u);\r\n }\r\n\r\n public SelfReset(u: User): Observable<any> {\r\n return this.httpService.Post(\"Basic/SelfReset\", u);\r\n }\r\n\r\n\r\n //Roles\r\n\r\n public PostRole(role, action: string) {\r\n return this.httpService.Post(`Role?action=${action}`, role);\r\n }\r\n\r\n public PutRole(role) {\r\n return this.httpService.Put(\"Role\", role);\r\n }\r\n\r\n public GetRole(by: string, val: string) {\r\n return this.httpService.Get(\"Role/all/x\");\r\n }\r\n\r\n\r\n\r\n //Logs\r\n public GetLog(by: string, val: string) {\r\n return this.httpService.Get(\"Log/all/x\");\r\n }\r\n\r\n\r\n //Settings\r\n public GetSetting(by: string, val: string) {\r\n return this.httpService.Get(\"Setting/all/x\");\r\n }\r\n\r\n public UpdateSetting(setting, action: string) {\r\n return this.httpService.Post(`Setting?action=${action}`, setting);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LoaderService {\r\n\r\n public isLoading = new BehaviorSubject(false);\r\n constructor() { }\r\n}\r\n","<div class=\"progress-loader\" style=\"z-index: 9999;\" [hidden]=\"!loading\">\r\n <div class=\"loading-spinner\">\r\n\r\n <img *ngIf=\"logo==''\" style=\"width: 100px;\"\r\n src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTAgMjUwIj4KICAgIDxwYXRoIGZpbGw9IiNERDAwMzEiIGQ9Ik0xMjUgMzBMMzEuOSA2My4ybDE0LjIgMTIzLjFMMTI1IDIzMGw3OC45LTQzLjcgMTQuMi0xMjMuMXoiIC8+CiAgICA8cGF0aCBmaWxsPSIjQzMwMDJGIiBkPSJNMTI1IDMwdjIyLjItLjFWMjMwbDc4LjktNDMuNyAxNC4yLTEyMy4xTDEyNSAzMHoiIC8+CiAgICA8cGF0aCAgZmlsbD0iI0ZGRkZGRiIgZD0iTTEyNSA1Mi4xTDY2LjggMTgyLjZoMjEuN2wxMS43LTI5LjJoNDkuNGwxMS43IDI5LjJIMTgzTDEyNSA1Mi4xem0xNyA4My4zaC0zNGwxNy00MC45IDE3IDQwLjl6IiAvPgogIDwvc3ZnPg==\"\r\n\r\n >\r\n\r\n <img *ngIf=\"logo!=''\" [src]=\"logo\" style=\"width: 100px;\" />\r\n\r\n\r\n <span id=\"loadingMessage\" class=\"loading-message\">Please wait...</span>\r\n </div>\r\n</div>\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { LoaderService } from '../../services/loader.service';\r\n\r\n@Component({\r\n selector: 'spa-loader',\r\n templateUrl: './loader.component.html',\r\n styleUrls: ['./loader.component.css']\r\n})\r\nexport class LoaderComponent implements OnInit {\r\n\r\n constructor(private loaderService: LoaderService) {\r\n\r\n this.loaderService.isLoading.subscribe((v) => {\r\n this.loading = v;\r\n });\r\n\r\n }\r\n ngOnInit() {\r\n }\r\n\r\n @Input() logo = \"\";\r\n loading: boolean;\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatBadgeModule } from '@angular/material/badge';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatNativeDateModule, MAT_DATE_LOCALE } from '@angular/material/core';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatDialogModule, MAT_DIALOG_DEFAULT_OPTIONS } from '@angular/material/dialog';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSliderModule } from '@angular/material/slider';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatStepperModule } from '@angular/material/stepper';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n\r\n\r\n ],\r\n exports: [\r\n CommonModule,FormsModule, ReactiveFormsModule,\r\n MatMenuModule, MatSliderModule, MatTableModule, MatPaginatorModule,\r\n MatCheckboxModule, MatBadgeModule, MatButtonModule, MatIconModule, MatDialogModule, MatSnackBarModule,\r\n MatTabsModule, MatFormFieldModule, MatInputModule, MatCardModule, MatChipsModule, MatSelectModule,\r\n MatNativeDateModule, MatProgressSpinnerModule, MatListModule, MatAutocompleteModule, MatTooltipModule, MatSortModule,\r\n MatDatepickerModule, MatStepperModule, MatRadioModule,\r\n ],\r\n providers:[\r\n { provide: MAT_DIALOG_DEFAULT_OPTIONS, useValue: { disableClose: true, hasBackdrop: true } },\r\n { provide: MAT_DATE_LOCALE, useValue: \"en-GB\" },\r\n ]\r\n})\r\nexport class SpaMatModule { }\r\n","import { Router } from '@angular/router';\r\nimport { AuthService } from './auth.service';\r\nimport { MessageService } from './message.service';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpResponse, HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { LoaderService } from './loader.service';\r\nimport { LogService } from './log.service';\r\n\r\n@Injectable()\r\nexport class LoaderInterceptor implements HttpInterceptor {\r\n\r\n private requests: HttpRequest<any>[] = [];\r\n\r\n constructor(private loaderService: LoaderService, private messageService: MessageService, private authService: AuthService, private router: Router, private logService: LogService) { }\r\n\r\n\r\n removeRequest(req: HttpRequest<any>) {\r\n\r\n const i = this.requests.indexOf(req);\r\n\r\n if (i >= 0) {\r\n this.requests.splice(i, 1);\r\n }\r\n\r\n this.loaderService.isLoading.next(this.requests.length > 0);\r\n }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n\r\n\r\n let requestClone = request.clone({\r\n setHeaders: {\r\n Authorization: \"Bearer \" + this.authService.tokenSource.value\r\n }\r\n });\r\n\r\n this.requests.push(requestClone);\r\n\r\n if (this.requests.length > 1) {\r\n this.logService.info(\"Multiple connections detected > \" + this.requests.length)\r\n }\r\n\r\n this.loaderService.isLoading.next(true);\r\n\r\n return Observable.create(observer => {\r\n\r\n const subscription = next.handle(requestClone).subscribe(event => {\r\n\r\n if (event instanceof HttpResponse) {\r\n this.removeRequest(requestClone);\r\n observer.next(event);\r\n }\r\n\r\n\r\n\r\n },\r\n (error: HttpErrorResponse) => {\r\n\r\n\r\n\r\n this.removeRequest(requestClone);\r\n observer.error(error);\r\n\r\n if (error.status === 401) {\r\n this.router.navigate([\"login\"]);\r\n this.messageService.toast('Unauthorised: Please login again')\r\n }\r\n else if (error.status ===500){\r\n console.log(error.error)\r\n this.messageService.toast('System Error')\r\n }\r\n else if (error.statusText == 'Unknown Error'){\r\n this.messageService.toast('Connection Error')\r\n }\r\n else{\r\n this.messageService.toast('Error: ' + error.statusText)\r\n }\r\n\r\n },\r\n () => {\r\n this.removeRequest(requestClone);\r\n observer.complete();\r\n });\r\n\r\n\r\n // remove request from queue when cancelled\r\n return () => {\r\n this.removeRequest(requestClone);\r\n subscription.unsubscribe();\r\n };\r\n\r\n });\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-tin-spa',\r\n template: `\r\n <p>\r\n tin-spa works!\r\n </p>\r\n `,\r\n styles: []\r\n})\r\nexport class TinSpaComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","<header *ngIf=\"loggedin\">\r\n <nav class=\"toolbar navbar navbar-expand-sm navbar-toggleable-sm navbar-light border-bottom box-shadow mb-3 \" style=\"padding-right: 10px;\">\r\n <div class=\"container-fluid\" style=\"padding-right: 0px;\">\r\n <!--<a class=\"navbar-brand\" [routerLink]=\"['/']\">Orbit</a>-->\r\n\r\n <img *ngIf=\"appConfig.logo!=''\" [src]=\"appConfig.logo\" style=\"height: 50px; margin-right: 2em\" />\r\n\r\n\r\n <div style=\"font-size: 20px;\">\r\n {{appConfig.appName}}\r\n </div>\r\n\r\n\r\n <button class=\"navbar-toggler\"\r\n type=\"button\"\r\n data-toggle=\"collapse\"\r\n data-target=\".navbar-collapse\"\r\n aria-label=\"Toggle navigation\"\r\n [attr.aria-expanded]=\"isExpanded\"\r\n (click)=\"toggle()\">\r\n <span class=\"navbar-toggler-icon\"></span>\r\n </button>\r\n\r\n <div *ngIf=\"myRole\" class=\"navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse stack-top\" style=\"margin-right: 0px;\" [ngClass]=\"{ show: isExpanded }\" >\r\n\r\n <button mat-icon-button (click)=\"redirectTo('login')\"> <mat-icon>logout</mat-icon> </button>\r\n\r\n <button id=\"btnUser\" mat-button [matMenuTriggerFor]=\"profileMenu\" style=\"margin-left:2em\"><mat-icon>account_circle</mat-icon> &nbsp;{{loggedUserFullName}}</button>\r\n\r\n <mat-menu #profileMenu=\"matMenu\">\r\n <button id=\"btnProfile\" mat-menu-item (click)=\"redirectTo('home/user/profile')\" >Profile</button>\r\n <button id=\"btnLogOff\" mat-menu-item (click)=\"redirectTo('login')\">Log Off</button>\r\n </mat-menu>\r\n\r\n <div *ngFor=\"let item of appConfig.capItems\">\r\n\r\n <!-- Menu Item -->\r\n <button id=\"btnMenu\" *ngIf=\"myRole[item.name] && !item.capSubItems && item.showMenu\" mat-button (click)=\"redirectTo(item.link)\">{{item.display}}</button>\r\n\r\n <!-- Menu Item with Sub items ignored -->\r\n <button id=\"btnMenu\" *ngIf=\"myRole[item.name] && item.capSubItems && item.showMenu && item.ignoreSubsDisplay\" mat-button (click)=\"redirectTo(item.link)\">{{item.display}}</button>\r\n\r\n <!-- Menu Item with Sub items to display-->\r\n <button id=\"btnMenu\" *ngIf=\"myRole[item.name] && item.capSubItems && item.showMenu && !item.ignoreSubsDisplay\" mat-button [matMenuTriggerFor]=\"adminMenu\">{{item.display}}</button>\r\n\r\n\r\n <!-- Sub Menu Items -->\r\n <mat-menu #adminMenu=\"matMenu\">\r\n\r\n <div *ngFor=\"let subItem of item.capSubItems\">\r\n\r\n <button *ngIf=\"myRole[subItem.name] && subItem.showMenu\" mat-menu-item (click)=\"redirectTo(subItem.link)\">{{subItem.display}}</button>\r\n\r\n </div>\r\n\r\n </mat-menu>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n </nav>\r\n</header>\r\n","import { AppConfig } from './../../classes/Classes';\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-nav-menu',\r\n templateUrl: './nav-menu.component.html',\r\n styleUrls: ['./nav-menu.component.css']\r\n})\r\nexport class NavMenuComponent {\r\n\r\n constructor(public router: Router, public authService: AuthService) { }\r\n\r\n ngOnInit() {\r\n\r\n this.authService.loggedUserFullName.subscribe(user => this.loggedUserFullName = user)\r\n this.authService.myRoleObserv.subscribe(rol => this.myRole = rol);\r\n this.authService.loggedinObserv.subscribe(obj => this.loggedin = obj)\r\n\r\n }\r\n\r\n myRole;\r\n loggedUserFullName: string;\r\n loggedin: boolean;\r\n isExpanded = false;\r\n\r\n @Input() appConfig = new AppConfig();\r\n\r\n\r\n\r\n collapse() {\r\n this.isExpanded = false;\r\n }\r\n\r\n toggle() {\r\n this.isExpanded = !this.isExpanded;\r\n }\r\n\r\n // logoff() {\r\n // // this.authService.updateloggedin(false);\r\n // // this.authService.updateRole(new Role());\r\n // this.router.navigate([\"login\"]);\r\n // // this.storageService.clear();\r\n // }\r\n\r\n redirectTo(link: string){\r\n\r\n if (link!=\"\"){\r\n this.router.navigate([link]);\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n\r\n\r\n}\r\n","import { Router } from '@angular/router';\r\nimport { Component, OnInit } from '@angular/core';\r\n\r\nimport {Idle, DEFAULT_INTERRUPTSOURCES} from '@ng-idle/core';\r\nimport {Keepalive} from '@ng-idle/keepalive';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-timeout',\r\n templateUrl: './timeout.component.html',\r\n styleUrls: ['./timeout.component.css']\r\n})\r\nexport class TimeoutComponent implements OnInit {\r\n\r\n constructor(private idle: Idle, private keepalive: Keepalive, public authService: AuthService, private router: Router) {\r\n\r\n this.authService.loggedinObserv.subscribe(obj => {\r\n this.loggedin = obj;\r\n // if (this.loggedin){\r\n // this.startWatch();\r\n // }else{\r\n // this.stopWatch();\r\n // }\r\n\r\n })\r\n\r\n // sets an idle timeout of 5 seconds, for testing purposes.\r\n idle.setIdle(900);\r\n // sets a timeout period of 5 seconds. after 10 seconds of inactivity, the user will be considered timed out.\r\n idle.setTimeout(10);\r\n // sets the default interrupts, in this case, things like clicks, scrolls, touches to the document\r\n idle.setInterrupts(DEFAULT_INTERRUPTSOURCES);\r\n\r\n\r\n idle.onIdleStart.subscribe(() => {\r\n this.idleState = 'You\\'ve gone idle!';\r\n });\r\n\r\n idle.onIdleEnd.subscribe(() => {\r\n this.idleState = 'No longer idle.';\r\n this.isWarning = false;\r\n });\r\n\r\n idle.onTimeoutWarning.subscribe((countdown) => {\r\n this.idleState = 'You will be signed out in ' + countdown + ' seconds!';\r\n\r\n if (this.loggedin){\r\n this.isWarning = true;\r\n }\r\n\r\n });\r\n\r\n idle.onTimeout.subscribe(() => {\r\n this.idleState = 'Timed out!';\r\n this.timedOut = true;\r\n\r\n //action\r\n this.stopWatch();\r\n });\r\n\r\n\r\n\r\n\r\n\r\n // sets the ping interval to 15 seconds\r\n keepalive.interval(15);\r\n\r\n keepalive.onPing.subscribe(() => {\r\n this.lastPing = new Date();\r\n });\r\n\r\n this.startWatch();\r\n }\r\n\r\n loggedin = false;\r\n idleState = 'Not started.';\r\n timedOut = false;\r\n lastPing?: Date = null;\r\n isWarning = false;\r\n\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n startWatch() {\r\n this.idle.watch();\r\n this.idleState = 'Started.';\r\n this.timedOut = false;\r\n this.isWarning = false;\r\n }\r\n\r\n stopWatch(){\r\n this.idle.stop();\r\n this.isWarning = false;\r\n this.router.navigate(['login']);\r\n }\r\n\r\n using(){\r\n //remove message and continue\r\n this.isWarning = false;\r\n }\r\n\r\n\r\n\r\n}\r\n","\r\n<div class=\"loading-spinner\" [hidden]=\"!isWarning\" >\r\n\r\n <div style=\"width: 500px; text-align: center;\">\r\n\r\n\r\n\r\n <div class=\"row\">\r\n <div class=\"col\">\r\n <img style=\"width: 100px;\"\r\n src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTAgMjUwIj4KICAgIDxwYXRoIGZpbGw9IiNERDAwMzEiIGQ9Ik0xMjUgMzBMMzEuOSA2My4ybDE0LjIgMTIzLjFMMTI1IDIzMGw3OC45LTQzLjcgMTQuMi0xMjMuMXoiIC8+CiAgICA8cGF0aCBmaWxsPSIjQzMwMDJGIiBkPSJNMTI1IDMwdjIyLjItLjFWMjMwbDc4LjktNDMuNyAxNC4yLTEyMy4xTDEyNSAzMHoiIC8+CiAgICA8cGF0aCAgZmlsbD0iI0ZGRkZGRiIgZD0iTTEyNSA1Mi4xTDY2LjggMTgyLjZoMjEuN2wxMS43LTI5LjJoNDkuNGwxMS43IDI5LjJIMTgzTDEyNSA1Mi4xem0xNyA4My4zaC0zNGwxNy00MC45IDE3IDQwLjl6IiAvPgogIDwvc3ZnPg==\">\r\n </div>\r\n </div>\r\n\r\n <mat-card class=\"mat-elevation-z3\" >\r\n\r\n <mat-card-header>\r\n\r\n <h5>Are you still there ?</h5>\r\n\r\n </mat-card-header>\r\n\r\n <mat-card-content>\r\n\r\n <br>\r\n <span>{{idleState}}</span>\r\n\r\n <br>\r\n\r\n </mat-card-content>\r\n\r\n <mat-card-actions>\r\n\r\n <div class=\"row justify-content-around\">\r\n\r\n <div class=\"col-2\">\r\n <button style=\"width: 100px;\" mat-stroked-button color=\"primary\" (click)=\"using()\">Yes</button>\r\n </div>\r\n\r\n <div class=\"col-4\">\r\n <button style=\"width: 100px;\" mat-stroked-button color=\"primary\" (click)=\"stopWatch()\">No</button>\r\n </div>\r\n\r\n </div>\r\n\r\n </mat-card-actions>\r\n\r\n </mat-card>\r\n\r\n\r\n</div>\r\n\r\n</div>\r\n","<div >\r\n\r\n<div *ngIf=\"config.create.enabled || config.enableFilter\" class=\"row justify-content-between\" style=\"padding-bottom: 10px\">\r\n <div class=\"col\">\r\n<button *ngIf=\"config.create\" [disabled]=\"!config.create.enabled\" mat-raised-button color=\"primary\" (click)=\"create()\">{{config.create.display}}</button>\r\n</div>\r\n <div *ngIf=\"config.enableFilter\" class=\"col d-flex justify-content-end\">\r\n<mat-form-field style=\"font-size:12px;margin-right: 5px;\">\r\n<mat-label>Filter</mat-label>\r\n<input matInput [(ngModel)]=\"_filterText\" (keyup)=\"applyFilter($event.target.value)\" placeholder=\"Enter Filter text\" autocomplete=\"off\">\r\n</mat-form-field>\r\n<button mat-mini-fab color=\"primary\" (click)=\"load()\" style=\"margin-top:5px\" matTooltip=\"refresh data\" matTooltipPosition=\"right\"><mat-icon class=\"refreshIcon\">refresh</mat-icon></button>\r\n</div>\r\n</div>\r\n\r\n<div class=\"mat-elevation-z8\" *ngIf=\"data\">\r\n\r\n <table mat-table [dataSource]=\"data\">\r\n\r\n <ng-container *ngFor=\"let col of config.columns; let i = index\"\r\n\r\n [matColumnDef]=\"col.name\">\r\n <th mat-header-cell *matHeaderCellDef> {{col.display}} </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n\r\n <!-- String -->\r\n <div *ngIf=\"(col.type==colType.String || col.type == null) && col.color == null\"> {{row[col.name]}}</div>\r\n\r\n <div [ngStyle]=\"{'color':col.color.name}\"\r\n *ngIf=\"(col.type==colType.String || col.type == null) && col.color != null && test(row[col.color.field], col.color.operator, col.color.value )\" >\r\n {{row[col.name]}}\r\n </div>\r\n\r\n <div\r\n *ngIf=\"(col.type==colType.String || col.type == null) && col.color != null && !test(row[col.color.field], col.color.operator, col.color.value )\" >\r\n {{row[col.name]}}\r\n </div>\r\n\r\n <!-- <div [ngStyle]=\"{'color':col.color.name}\"\r\n *ngIf=\"(col.type==colType.String || col.type == null) && col.color != null &&\r\n col.color.operator==op.Equal && row[col.color.field]==col.color.value\" >\r\n {{row[col.name]}}\r\n </div>\r\n\r\n <div [ngStyle]=\"{'color':col.color.name}\"\r\n *ngIf=\"(col.type==colType.String || col.type == null) && col.color != null &&\r\n col.color.operator==op.Greater && row[col.color.field]>col.color.value\" >\r\n {{row[col.name]}}\r\n </div>\r\n\r\n <div [ngStyle]=\"{'color':col.color.name}\"\r\n *ngIf=\"(col.type==colType.String || col.type == null) && col.color != null &&\r\n col.color.operator==op.Less && row[col.color.field]<col.color.value\" >\r\n {{row[col.name]}}\r\n </div>\r\n\r\n <div [ngStyle]=\"{'color':col.color.name}\"\r\n *ngIf=\"(col.type==colType.String || col.type == null) && col.color != null &&\r\n col.color.operator==op.NotEqual && row[col.color.field]!=col.color.value\" >\r\n {{row[col.name]}}\r\n </div> -->\r\n\r\n\r\n <!-- Date -->\r\n <div *ngIf=\"col.type==colType.Date\"> {{row[col.name] | date:'dd/MM/yyyy'}}</div>\r\n\r\n\r\n <!-- DateTime -->\r\n <div *ngIf=\"col.type==colType.DateTime\"> {{row[col.name] | date:'dd/MM/yyyy HH:mm'}}</div>\r\n\r\n\r\n <ng-container *ngFor=\"let icon of col.icons;\">\r\n <!-- <mat-icon *ngIf=\"col.type==colType.Icon && icon.operator==op.Equal && row[icon.field]==icon.value\"\r\n [ngStyle]=\"{'color':icon.color}\"\r\n [matTooltip]=\"icon.hint\" matTooltipPosition=\"above\">\r\n {{icon.name}}\r\n </mat-icon>\r\n\r\n <mat-icon *ngIf=\"col.type==colType.Icon && icon.operator==op.Greater && row[icon.field]>icon.value\"\r\n [ngStyle]=\"{'color':icon.color}\"\r\n [matTooltip]=\"icon.hint\" matTooltipPosition=\"above\">\r\n {{icon.name}}\r\n </mat-icon>\r\n\r\n <mat-icon *ngIf=\"col.type==colType.Icon && icon.operator==op.Less && row[icon.field]<icon.value\"\r\n [ngStyle]=\"{'color':icon.color}\"\r\n [matTooltip]=\"icon.hint\" matTooltipPosition=\"above\">\r\n {{icon.name}}\r\n </mat-icon>\r\n <mat-icon *ngIf=\"col.type==colType.Icon && icon.operator==op.NotEqual && row[icon.field]!=icon.value\"\r\n [ngStyle]=\"{'color':icon.color}\"\r\n [matTooltip]=\"icon.hint\" matTooltipPosition=\"above\">\r\n {{icon.name}}\r\n </mat-icon> -->\r\n\r\n <mat-icon *ngIf=\"col.type==colType.Icon && test(row[icon.field],icon.operator,icon.value)\"\r\n [ngStyle]=\"{'color':icon.color}\"\r\n [matTooltip]=\"icon.hint\" matTooltipPosition=\"above\">\r\n {{icon.name}}\r\n </mat-icon>\r\n\r\n </ng-container>\r\n\r\n </td>\r\n\r\n </ng-container>\r\n\r\n\r\n\r\n\r\n <ng-container matColumnDef=\"Action\">\r\n\r\n <th mat-header-cell *matHeaderCellDef> Action </th>\r\n <td mat-cell *matCellDef=\"let row\" [style]=\"styleString+';padding-right: 0px;'\">\r\n\r\n <ng-container *ngFor=\"let act of config.actions\">\r\n\r\n <button *ngIf=\" (act.disappear && (row[act.disappear.field] != act.disappear.value)) || !act.disappear\" mat-mini-fab\r\n\r\n [disabled]=\"(act.disable && (row[act.disable.field] == act.disable.value))\"\r\n [color]=\"act.color==null? 'primary' : act.color\"\r\n [matTooltip]=\"act.hint\" matTooltipPosition=\"above\"\r\n (click)=\"do(act.name,row)\" style=\"margin-right:5px\">\r\n <mat-icon>{{act.icon}}</mat-icon>\r\n\r\n </button>\r\n\r\n </ng-container>\r\n\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\" [ngClass]=\"{'make-gray': row[config.greyout.field]==config.greyout.value}\"></tr>\r\n\r\n </table>\r\n</div>\r\n<mat-paginator #tablePaginator [pageSizeOptions]=\"[10, 50, 100]\" showFirstLastButtons></mat-paginator>\r\n</div>\r\n\r\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { ActionResponse, Operator, TableColumnType, TableConfig } from '../../classes/Classes';\r\n\r\n@Component({\r\n selector: 'spa-table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.css']\r\n})\r\nexport class TableComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n\r\n this.config.columns.forEach(element => {\r\n this.displayedColumns.push(element.name);\r\n });\r\n\r\n this.displayedColumns.push(\"Action\")\r\n\r\n this.styleString = `width: ${50 * this.config.actions.length}px`;\r\n\r\n }\r\n\r\n ngOnChanges(){\r\n this.data = new MatTableDataSource(this.data);\r\n this.data.paginator = this.tablePaginator;\r\n this.applyFilter(this._filterText);\r\n }\r\n\r\n\r\n @Input() config: TableConfig;\r\n @Input() data: any;\r\n @Output() dataChange = new EventEmitter();\r\n @Output() buttonClick = new EventEmitter();\r\n @Output() loadClick = new EventEmitter();\r\n @Output() createClick = new EventEmitter();\r\n\r\n @ViewChild('tablePaginator') tablePaginator: MatPaginator;\r\n\r\n colType = TableColumnType\r\n op = Operator\r\n\r\n displayedColumns: string[] = [];\r\n\r\n styleString: string;\r\n\r\n _filterText = \"\";\r\n applyFilter(filterValue: string) {\r\n this.data.filter = filterValue.trim().toLowerCase();\r\n }\r\n\r\n do(name, item) {\r\n\r\n let resp = new ActionResponse();\r\n resp.name = name;\r\n resp.value = item;\r\n this.buttonClick.emit(resp);\r\n }\r\n\r\n\r\n create(){\r\n this.createClick.emit();\r\n }\r\n\r\n load(){\r\n this.loadClick.emit();\r\n }\r\n\r\n test(a:any, op: Operator, b: any){\r\n\r\n if (op == Operator.Equal){\r\n if (a == b){\r\n return true;\r\n }else{\r\n return false;\r\n }\r\n\r\n }\r\n\r\n if (op == Operator.Greater) {\r\n if (a > b) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n if (op == Operator.Less) {\r\n if (a < b) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n if (op == Operator.NotEqual) {\r\n if (a != b) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n"," <div class=\"row align-items-center\">\r\n\r\n <!-- <div class=\"col\" *ngFor=\"let row of tiles\" >\r\n\r\n <mat-card *ngIf=\"row.visible\">\r\n <div class=\"row d-flex justify-content-center\">\r\n\r\n <mat-label style=\"font-size:30px;font-weight:bold\" [ngStyle]=\"{'color':row.tileColor}\">{{row.tileValue}}</mat-label>\r\n\r\n </div>\r\n\r\n <div class=\"row d-flex justify-content-center\">\r\n\r\n <mat-label [ngStyle]=\"{'color':row.selected == true ? 'darkorange' : 'black' }\" style=\"font-size:12px;padding-left:5px;padding-right:5px\">{{row.tileName}}</mat-label>\r\n <mat-icon style=\"font-size: 17px; color:steelblue;\">info</mat-icon>\r\n\r\n </div>\r\n </mat-card>\r\n\r\n </div> -->\r\n\r\n <ng-container *ngFor=\"let row of tiles\">\r\n\r\n <mat-card class=\"col\" style=\"margin-left: 10px;margin-right: 10px\" *ngIf=\"row.visible\" (click)=\"clicked(row)\">\r\n\r\n <div class=\"row d-flex justify-content-center\">\r\n\r\n <mat-label style=\"font-weight:bold\" [ngStyle]=\"{'color':row.tileColor,'font-size':row.tileName == selected ? '35px' : '30px' }\">{{row.tileValue}}</mat-label>\r\n\r\n </div>\r\n\r\n <div class=\"row d-flex justify-content-center row align-items-center\">\r\n\r\n <mat-label [ngStyle]=\"{'font-size':row.tileName == selected ? '18px' : '12px' }\" style=\"padding-left:5px;padding-right:5px\">{{row.tileName}}</mat-label>\r\n <mat-icon [matTooltip]=\"row.info\" matTooltipPosition=\"above\" [ngStyle]=\"{'font-size':row.tileName == selected ? '20px' : '17px' }\" style=\" color:steelblue;\">info</mat-icon>\r\n\r\n </div>\r\n\r\n </mat-card>\r\n\r\n\r\n </ng-container>\r\n\r\n </div>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { Tile } from '../../classes/Classes';\r\n\r\n\r\n@Component({\r\n selector: 'spa-tiles',\r\n templateUrl: './tiles.component.html',\r\n styleUrls: ['./tiles.component.css']\r\n})\r\nexport class TilesComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() tiles: Tile[];\r\n\r\n @Input() clickable: boolean = false;\r\n @Output() tileClick = new EventEmitter();\r\n\r\n selected: string = \"\";\r\n\r\n clicked(v: Tile){\r\n\r\n if(!this.clickable) return;\r\n\r\n\r\n if(this.selected == v.tileName){\r\n this.tileClick.emit(\"\");\r\n this.selected = \"\";\r\n }else{\r\n this.tileClick.emit(v.tileName);\r\n this.selected = v.tileName;\r\n }\r\n\r\n\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'spa-date',\r\n templateUrl: './date.component.html',\r\n styleUrls: ['./date.component.css']\r\n})\r\nexport class DateComponent implements OnInit {\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() date = new FormControl(new Date());\r\n @Input() display = \"\";\r\n @Input() readonly = false;\r\n\r\n currentYear = new Date().getFullYear();\r\n @Input() min = new FormControl(new Date(this.currentYear - 50, 0, 1));\r\n @Input() max = new FormControl(new Date(this.currentYear + 50, 0, 1));\r\n\r\n // @Output() dateChange = new EventEmitter();\r\n\r\n\r\n // minDate: Date = new Date(this.currentYear, 2, 2);\r\n // maxDate: Date = new Date(this.currentYear, 2, 10);\r\n\r\n\r\n // onChangeEvent(d){\r\n // // this.dateChange.emit(d);\r\n // }\r\n\r\n @Output() dateChange = new EventEmitter();\r\n\r\n onChangeEvent() {\r\n this.dateChange.emit();\r\n }\r\n\r\n}\r\n","\r\n<mat-form-field style=\"width:150px;margin-right:20px\">\r\n<input [formControl]=\"date\" [min]=\"min.value\" [max]=\"max.value\" matInput [matDatepicker]=\"picker_date\" [placeholder]=\"display\" (dateInput)=\"onChangeEvent()\" [readonly]=\"true\" [disabled]=\"readonly\">\r\n<mat-datepicker-toggle matSuffix [for]=\"picker_date\"></mat-datepicker-toggle>\r\n<mat-datepicker #picker_date></mat-datepicker>\r\n</mat-form-field>\r\n","<mat-form-field *ngIf=\"rows == '' && options.length==0\" hideRequiredMarker=\"true\" [hintLabel]=\"hint\" style=\"padding-right: 20px;\" [ngStyle]=\"{'width':width}\" >\r\n<mat-label *ngIf=\"format=='text'\">{{display}}</mat-label>\r\n<mat-label *ngIf=\"format=='date'\">{{display | date:'dd/MM/yyyy'}}</mat-label>\r\n<!-- <mat-label *ngIf=\"format=='datetime'\">{{display | date:'dd/MM/yyyy HH:mm'}}</mat-label> -->\r\n<input matInput autocomplete=\"off\" [(ngModel)]=\"value\" (change)=\"changed()\" (blur)=\"leaved()\" (keyup.enter)=\"enterPressed()\" [type]=\"type\" [placeholder]=\"placeholder\" [formControl]=\"control\" [required]=\"required\" [readonly]=\"readonly\"/>\r\n<mat-error *ngIf=\"control.invalid\">{{validate()}}</mat-error>\r\n</mat-form-field>\r\n\r\n\r\n<!-- TextArea copy - Only change input to textarea and change ngif to not -->\r\n\r\n<mat-form-field *ngIf=\"rows != '' && options.length==0\" hideRequiredMarker=\"true\" [hintLabel]=\"hint\" style=\"padding-right: 20px;\" [ngStyle]=\"{'width':width}\">\r\n<mat-label>{{display}}</mat-label>\r\n<textarea matInput autocomplete=\"off\" [rows]=\"rows\" [(ngModel)]=\"value\" (change)=\"changed()\" (keyup.enter)=\"enterPressed()\" [placeholder]=\"placeholder\" [formControl]=\"control\" [required]=\"required\" [readonly]=\"readonly\"></textarea>\r\n<mat-error *ngIf=\"control.invalid\">{{validate()}}</mat-error>\r\n</mat-form-field>\r\n\r\n\r\n\r\n<!-- Work in progress cant bind to value -->\r\n\r\n <!-- <mat-form-field *ngIf=\"options.length !=0\" hideRequiredMarker=\"true\" [hintLabel]=\"hint\" style=\"padding-right: 20px;\" [ngStyle]=\"{'width':width}\">\r\n <input type=\"text\" autocomplete=\"off\" [placeholder]=\"display\" (change)=\"changed2()\" matInput [formControl]=\"myControl\" [matAutocomplete]=\"auto\" [readonly]=\"readonly\">\r\n <mat-autocomplete #auto=\"matAutocomplete\">\r\n <mat-option *ngFor=\"let row of filteredOptions | async\" [value]=\"row[optionValue]\">\r\n {{row[optionDisplay]}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field> -->\r\n\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { map, startWith } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'spa-text',\r\n templateUrl: './text.component.html',\r\n styleUrls: ['./text.component.css']\r\n})\r\nexport class TextComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n\r\n if(this.options.length > 0){\r\n this.initFilter();\r\n }\r\n\r\n if (this.placeholder == \"\") {\r\n this.placeholder = \"Enter \" + this.display;\r\n }\r\n\r\n }\r\n\r\n ngAfterViewInit(){\r\n\r\n if (this.readonly) {\r\n this.control.setValidators(null);\r\n this.control.updateValueAndValidity();\r\n }\r\n if (!this.required && !this.readonly){\r\n\r\n this.control.setValidators([Validators.minLength(this.min), Validators.maxLength(this.max), Validators.pattern(this.regex)]);\r\n this.control.updateValueAndValidity();\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n // options: FormGroup;\r\n hideRequiredControl = new FormControl(true);\r\n\r\n @Input() readonly = false;\r\n @Input() hint = \"\";\r\n @Input() display = \"\";\r\n @Input() placeholder = \"\";\r\n @Input() value = \"\";\r\n @Output() valueChange = new EventEmitter();\r\n @Input() format = \"text\";\r\n @Input() type = \"\";\r\n\r\n @Output() leave = new EventEmitter();\r\n @Output() enterPress = new EventEmitter();\r\n\r\n @Input() rows = \"\";\r\n @Input() width = \"100%\"\r\n\r\n\r\n //Autocomplete items\r\n @Input() options: any = [];\r\n @Input() optionValue = \"\";\r\n @Input() optionDisplay = \"\";\r\n\r\n myControl = new FormControl();\r\n filteredOptions: Observable<string[]>;\r\n\r\n private initFilter() {\r\n this.filteredOptions = this.myControl.valueChanges.pipe(\r\n startWith(\"\"),\r\n map((value) => this._filter(value))\r\n );\r\n }\r\n\r\n private _filter(value: string): string[] {\r\n const filterValue = value.toLowerCase();\r\n\r\n return this.options.filter((option) => option[`${this.optionDisplay}`].toLowerCase().includes(filterValue));\r\n }\r\n\r\n\r\n\r\n\r\n\r\n //validations\r\n @Input() required = true;\r\n @Input() min = 0;\r\n @Input() max = 9000000000000000; //Math.max\r\n @Input() regex = \"\" //\"[a-zA-Z ]*\" //\"/\\S+@\\S+\\.\\S+/\";\r\n\r\n changed(){\r\n\r\n // if (this.options.length > 0) {\r\n // this.value = this.myControl.value;\r\n // }\r\n\r\n this.valueChange.emit(this.value);\r\n\r\n }\r\n\r\n changed2() {\r\n\r\n // if (this.options.length > 0) {\r\n // this.value = this.myControl.value;\r\n // }\r\n\r\n this.valueChange.emit(this.myControl.value);\r\n\r\n }\r\n\r\n leaved(){\r\n this.leave.emit();\r\n }\r\n\r\n enterPressed() {\r\n this.enterPress.emit();\r\n }\r\n\r\n control = new FormControl( this.value, [Validators.required, Validators.minLength(this.min), Validators.maxLength(this.max), Validators.pattern(this.regex) ]);\r\n\r\n validate() : string{\r\n\r\n\r\n if ((this.required || this.min > 0) && this.control.hasError('required') ){\r\n return `Required`;\r\n }\r\n\r\n if (this.control.hasError('minlength') ){\r\n return `Minimun length is ${this.min}`;\r\n }\r\n\r\n if (this.control.hasError('maxlength')) {\r\n return `Maximum length is ${this.max}`;\r\n }\r\n\r\n if (this.control.hasError('pattern')) {\r\n return `Invalid Input`;\r\n }\r\n\r\n\r\n // if (this.regex != \"\"){\r\n\r\n // let r = new RegExp(this.regex, \"g\");\r\n\r\n // if (!r.test(this.value)){\r\n // this.valid = false;\r\n // this.errorMessage = \"Invalid input\";\r\n // return this.errorMessage;\r\n // }\r\n // }\r\n\r\n return \"\";\r\n }\r\n\r\n}\r\n","\r\n\r\n\r\n<div class=\"row mt-1\" style=\"margin-left: 1em;\">\r\n <mat-chip-list #chipList >\r\n <mat-chip *ngFor=\"let chip of chips let i = index\" selectable [removable]=\"removable\" style=\"font-size: 12px;\" [ngStyle]=\"{'padding-right': removable ? '5px':'12px'}\" (click)=\"clicked(chip)\" >\r\n <mat-icon *ngIf=\"icon != ''\" color=\"primary\" style=\"font-size: 22px;\">{{icon}}</mat-icon>\r\n\r\n {{chip}}\r\n\r\n <mat-icon *ngIf=\"removable\" style=\"font-size: 20px; margin-left: 5px;margin-top: 3px;margin-right: 0px; color: grey;\" (click)=\"removed(chip)\">cancel</mat-icon>\r\n </mat-chip>\r\n </mat-chip-list>\r\n</div>\r\n\r\n\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { MessageService } from '../../services/message.service';\r\n@Component({\r\n selector: 'spa-chips',\r\n templateUrl: './chips.component.html',\r\n styleUrls: ['./chips.component.css']\r\n})\r\nexport class ChipsComponent implements OnInit {\r\n\r\n constructor(private messageService: MessageService) { }\r\n\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n\r\n @Input() icon = \"\";\r\n @Input() removable = false;\r\n @Input() addable = false;\r\n\r\n\r\n\r\n @Input() chips: string[];\r\n // @Output() chipClick = new EventEmitter();\r\n\r\n @Output() click = new EventEmitter();\r\n\r\n @Output() remove = new EventEmitter();\r\n\r\n clicked(chip: string) {\r\n\r\n if (typeof chip != 'string') {\r\n return;\r\n }\r\n\r\n if (chip) {\r\n this.click.emit(chip);\r\n }\r\n }\r\n\r\n\r\n removed(chip) {\r\n\r\n // const index = this.chips.indexOf(chip);\r\n\r\n // if (index >= 0) {\r\n // this.chips.splice(index, 1);\r\n // }\r\n\r\n this.messageService.confirm(`Remove ${chip} ?`).subscribe((result) => {\r\n if (result == \"yes\") {\r\n\r\n this.remove.emit(chip);\r\n\r\n };\r\n });\r\n\r\n }\r\n\r\n}\r\n\r\n","\r\n\r\n<mat-dialog-content class=\"mat-typography\">\r\n\r\n <div class=\"row\">\r\n\r\n <div class=\"col\">\r\n <ngx-doc-viewer *ngIf=\"imageDoc\"\r\n [url]=\"currentFileUrl\"\r\n viewer=\"url\"\r\n style=\"width:100%;height:60vh;\">\r\n </ngx-doc-viewer>\r\n\r\n <div *ngIf=\"!imageDoc\" class=\"d-flex justify-content-center row align-items-center\" style=\"height:60vh;\">\r\n\r\n This file type will be downloaded\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"col-3\">\r\n <spa-chips [chips]=\"fileNames\" display=\"Documents\" icon=\"description\" (click)=\"change($event)\"></spa-chips>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions>\r\n<button mat-button [disabled]=\"currIndex == 0\" (click)=\"previous()\" cdkFocusInitial>Previous</button>\r\n<button mat-button [disabled]=\"currIndex+1 == fileNames.length\" (click)=\"next()\" cdkFocusInitial>Next</button>\r\n<button mat-button mat-dialog-close>Cancel</button>\r\n</mat-dialog-actions>\r\n\r\n\r\n\r\n","//-------------------------------------------EDIT\r\n\r\nimport { Component, OnInit, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { HttpService } from '../../services/http.service';\r\n// import { HttpService } from 'tin-core';\r\n\r\n@Component({\r\n selector: 'app-editRequest',\r\n templateUrl: './viewerDialog.component.html',\r\n styleUrls: ['./viewer.component.css']\r\n})\r\nexport class viewerDialog implements OnInit {\r\n\r\n constructor(private httpService: HttpService, @Inject(MAT_DIALOG_DATA) public data) { }\r\n\r\n ngOnInit() {\r\n\r\n this.fileNames = this.data.fileNames;\r\n this.path = this.data.path;\r\n this.fileName = this.data.fileName;\r\n this.currIndex = this.data.fileNames.indexOf(this.fileName);\r\n this.setURL();\r\n\r\n }\r\n\r\n isProcessing: boolean = false;\r\n\r\n path: string;\r\n fileNames = new Array();\r\n fileName: string;\r\n currIndex = 0;\r\n\r\n currentFileUrl = \"\";\r\n\r\n\r\n previous() {\r\n\r\n if (this.fileNames.length == 0) {\r\n return;\r\n }\r\n\r\n if (this.currIndex -1 >= 0)\r\n {\r\n this.currIndex = this.currIndex - 1;\r\n }\r\n else if (this.currIndex == 0)\r\n {\r\n this.currIndex = this.fileNames.length -1;\r\n }\r\n\r\n this.setURL();\r\n\r\n }\r\n\r\n next() {\r\n\r\n if (this.fileNames.length == 0){\r\n return;\r\n }\r\n\r\n if (this.currIndex +1 < this.fileNames.length)\r\n {\r\n this.currIndex = this.currIndex + 1;\r\n }\r\n else if (this.currIndex +1 > this.fileNames.length -1)\r\n {\r\n this.currIndex = 0;\r\n }\r\n\r\n this.setURL();\r\n\r\n }\r\n\r\n imageDoc = false;\r\n setURL() {\r\n // this.currentFileUrl = this.httpService.apiUrl.replace(\"/api/\", \"/files/\") + '' + \"/\" + this.files[this.currIndex];\r\n\r\n this.currentFileUrl = `${this.httpService.apiUrl.replace(\"/api/\", \"/\")}${this.path.replace(\"//\", \"/\")}/${this.fileNames[this.currIndex]}` ;\r\n\r\n if (this.currentFileUrl.toLocaleLowerCase().endsWith(\".pdf\") || this.currentFileUrl.toLocaleLowerCase().endsWith(\".jpg\") || this.currentFileUrl.toLocaleLowerCase().endsWith(\".jpeg\")){\r\n this.imageDoc = true;\r\n }else{\r\n this.imageDoc = false\r\n window.open(this.currentFileUrl, '_blank');\r\n\r\n }\r\n\r\n }\r\n\r\n change(fileName){\r\n\r\n this.currIndex = this.fileNames.indexOf(fileName);\r\n this.setURL();\r\n }\r\n\r\n}\r\n","<div class=\"tin-input-row mt-3\" *ngIf=\"title != ''\">\r\n <mat-label style=\"font-size: 20px; font-weight: 300\" > {{title}}</mat-label >\r\n</div>\r\n\r\n<spa-chips [chips]=\"fileNames\" [title]=\"title\" [removable]=\"removable\" icon=\"description\" (click)=\"viewDocs($event)\" (remove)=\"removed($event)\"></spa-chips>\r\n\r\n\r\n\r\n<div *ngIf=\"!fileNames\" class=\"d-flex justify-content-center row align-items-center\" style=\"max-height:200px\">\r\n\r\n No {{title.toLowerCase()}}\r\n\r\n</div>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { viewerDialog } from './viewerDialog.component';\r\n\r\n@Component({\r\n selector: 'spa-viewer',\r\n templateUrl: './viewer.component.html',\r\n styleUrls: ['./viewer.component.css']\r\n})\r\nexport class ViewerComponent implements OnInit {\r\n\r\n constructor(public dialog: MatDialog) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n\r\n @Input() dir = \"\";\r\n @Input() folderName=\"\";\r\n @Input() fileNames = new Array()\r\n @Input() removable = false;\r\n @Output() remove = new EventEmitter();\r\n @Input() display = \"Documents\";\r\n @Input() title = \"Documents\";\r\n\r\n // fileList: string[];\r\n\r\n\r\n viewDocs(fileName: string) {\r\n\r\n if (typeof fileName != 'string') {\r\n return;\r\n }\r\n\r\n\r\n\r\n const dialogRef = this.dialog.open(viewerDialog, {\r\n minWidth: '1500px',\r\n maxWidth: '80vw',\r\n\r\n data: { fileNames: this.fileNames, fileName: fileName, path:`${this.dir}/${this.folderName}` }\r\n });\r\n\r\n }\r\n\r\n removed(i){\r\n this.remove.emit(i);\r\n }\r\n\r\n}\r\n","\r\n<mat-form-field *ngIf=\"readonlyMode==''\" style=\"padding-right: 20px;\" floatLabel=\"always\" [ngStyle]=\"{'width':width}\">\r\n <mat-label>{{display}}</mat-label>\r\n <mat-select [(value)]=\"value\" (selectionChange)=\"changed()\" [disabled]=\"readonly\" [placeholder]=\"placeholder\" >\r\n <mat-option *ngFor=\"let row of options\" [value]=\"row[optionValue]\">\r\n {{row[optionDisplay]}} <label *ngIf=\"optionDisplayExtra!='' && row[optionDisplayExtra] && row[optionDisplayExtra] != ''\">({{row[optionDisplayExtra]}})</label>\r\n </mat-option>\r\n </mat-select>\r\n <mat-hint *ngIf=\"hint!=''\">{{hint}}</mat-hint>\r\n</mat-form-field>\r\n\r\n<!-- ReadOnlyModes original, text, label -->\r\n<!-- <spa-text *ngIf=\"readonlyMode=='text' && readonly\" [display]=\"display\" [(value)]=\"displayValue\" [readonly]=\"true\" ></spa-text> -->\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'spa-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.css']\r\n})\r\nexport class SelectComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n // this.displayValue = this.options.filter((m) => m.optionValue == this.value)\r\n // this.displayValue = this.value\r\n if (this.placeholder == \"\") {\r\n this.placeholder = \"Select \" + this.display;\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n\r\n if (this.readonlyMode != \"\" && this.options.length > 0){\r\n this.displayValue = this.options.filter((m) => m[`${this.optionValue}`] == this.value)[0][`${this.optionDisplay}`]\r\n }\r\n\r\n }\r\n\r\n displayValue;\r\n\r\n @Input() width = \"100%\"\r\n @Input() readonly = false;\r\n @Input() readonlyMode = \"\";\r\n @Input() hint = \"\";\r\n @Input() placeholder = \"\";\r\n\r\n\r\n @Input() display = \"\";\r\n @Input() value = \"\";\r\n @Input() options: any;\r\n @Input() optionValue = \"\";\r\n @Input() optionDisplay = \"\";\r\n @Input() optionDisplayExtra = \"\";\r\n\r\n @Output() valueChange = new EventEmitter();\r\n\r\n\r\n\r\n changed(){\r\n this.valueChange.emit(this.value);\r\n }\r\n\r\n}\r\n\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n\r\n@Component({\r\n selector: 'spa-check',\r\n templateUrl: './check.component.html',\r\n styleUrls: ['./check.component.css']\r\n})\r\nexport class CheckComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() readonly = false;\r\n @Input() display = \"\";\r\n @Input() value = false;\r\n @Output() valueChange = new EventEmitter();\r\n @Output() click = new EventEmitter();\r\n @Output() check = new EventEmitter();\r\n @Output() uncheck = new EventEmitter();\r\n\r\n changed(){\r\n this.valueChange.emit(this.value);\r\n }\r\n\r\n clicked(){\r\n this.click.emit();\r\n\r\n if(!this.value){\r\n this.checked();\r\n }else{\r\n this.unchecked();\r\n }\r\n }\r\n\r\n checked(){\r\n this.check.emit();\r\n }\r\n unchecked(){\r\n this.uncheck.emit();\r\n }\r\n\r\n}\r\n"," <mat-checkbox color=\"primary\" style=\"margin-right:50px; font-size:14px\" [(ngModel)]=\"value\" (change)=\"changed()\" (click)=\"clicked()\" [disabled]=\"readonly\">{{display}}</mat-checkbox>\r\n","import {\r\n Directive,\r\n Output,\r\n Input,\r\n EventEmitter,\r\n HostBinding,\r\n HostListener\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appDnd]'\r\n})\r\nexport class DndDirective {\r\n @HostBinding('class.fileover') fileOver: boolean;\r\n @Output() fileDropped = new EventEmitter<any>();\r\n\r\n // Dragover listener\r\n @HostListener('dragover', ['$event']) onDragOver(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = true;\r\n }\r\n\r\n // Dragleave listener\r\n @HostListener('dragleave', ['$event']) public onDragLeave(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = false;\r\n }\r\n\r\n // Drop listener\r\n @HostListener('drop', ['$event']) public ondrop(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = false;\r\n let files = evt.dataTransfer.files;\r\n if (files.length > 0) {\r\n this.fileDropped.emit(files);\r\n }\r\n }\r\n}\r\n","<div class=\"tin-input-row\" style=\"width: 100%;\">\r\n\r\n <div class=\"col\">\r\n <div class=\"container\" appDnd (fileDropped)=\"onFileDropped($event)\">\r\n <input type=\"file\" #fileDropRef id=\"fileDropRef\" multiple (change)=\"fileBrowseHandler($event.target.files)\" />\r\n <h4>{{message}}</h4>\r\n <h4>or</h4>\r\n <label for=\"fileDropRef\">Click to Browse</label>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col\">\r\n <div class=\"files-list \">\r\n <div class=\"single-file \" style=\"width: 100%;\" *ngFor=\"let file of files; let i = index\">\r\n\r\n <div class=\"tin-input-row info\" >\r\n <h4 class=\"name\">\r\n {{ file?.name }}\r\n </h4>\r\n <p class=\"size\">\r\n {{ formatBytes(file?.size, 2) }}\r\n </p>\r\n </div>\r\n\r\n <div class=\"delete\" (click)=\"deleteFile(i)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"18\" viewBox=\"0 0 14 18\">\r\n <path fill=\"#B1B1B1\" fill-rule=\"nonzero\"\r\n d=\"M1 16c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2H3c-1.1 0-2 .9-2 2v10zm3.17-7.83a.996.996 0 0 1 1.41 0L7 9.59l1.42-1.42a.996.996 0 1 1 1.41 1.41L8.41 11l1.42 1.42a.996.996 0 1 1-1.41 1.41L7 12.41l-1.42 1.42a.996.996 0 1 1-1.41-1.41L5.59 11 4.17 9.58a.996.996 0 0 1 0-1.41zM10.5 1L9.79.29C9.61.11 9.35 0 9.09 0H4.91c-.26 0-.52.11-.7.29L3.5 1H1c-.55 0-1 .45-1 1s.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1h-2.5z\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"files.length > 0 && enableUpload\" class=\"tin-input-row d-flex justify-content-center\" style=\"width: 100%;\" >\r\n <button mat-button color=\"primary\" (click)=\"uploaded()\" matTooltip=\"Upload New Documents\" matTooltipPosition=\"above\" ><mat-icon>file_upload</mat-icon> Upload</button>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n\r\n@Component({\r\n selector: 'spa-attach',\r\n templateUrl: './attach.component.html',\r\n styleUrls: ['./attach.component.scss']\r\n})\r\nexport class AttachComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() message = \"Drag and drop files here\"\r\n @Input() files: any[] = [];\r\n @Output() filesChange = new EventEmitter();\r\n @Output() upload = new EventEmitter();\r\n\r\n\r\n @Input() enableUpload = false;\r\n\r\n\r\n /**\r\n * on file drop handler\r\n */\r\n onFileDropped($event) {\r\n this.prepareFilesList($event);\r\n }\r\n\r\n /**\r\n * handle file from browsing\r\n */\r\n fileBrowseHandler(files) {\r\n this.prepareFilesList(files);\r\n }\r\n\r\n /**\r\n * Delete file from files list\r\n * @param index (File index)\r\n */\r\n deleteFile(index: number) {\r\n this.files.splice(index, 1);\r\n }\r\n\r\n /**\r\n * Simulate the upload process\r\n */\r\n // uploadFilesSimulator(index: number) {\r\n // setTimeout(() => {\r\n // if (index === this.files.length) {\r\n // return;\r\n // } else {\r\n // const progressInterval = setInterval(() => {\r\n // if (this.files[index].progress === 100) {\r\n // clearInterval(progressInterval);\r\n // this.uploadFilesSimulator(index + 1);\r\n // } else {\r\n // this.files[index].progress += 5;\r\n // }\r\n // }, 200);\r\n // }\r\n // }, 1000);\r\n // }\r\n\r\n /**\r\n * Convert Files list to normal array list\r\n * @param files (Files List)\r\n */\r\n prepareFilesList(files: Array<any>) {\r\n for (const item of files) {\r\n item.progress = 0;\r\n this.files.push(item);\r\n }\r\n // this.uploadFilesSimulator(0);\r\n }\r\n\r\n /**\r\n * format bytes\r\n * @param bytes (File size in bytes)\r\n * @param decimals (Decimals point)\r\n */\r\n formatBytes(bytes, decimals) {\r\n if (bytes === 0) {\r\n return '0 Bytes';\r\n }\r\n const k = 1024;\r\n const dm = decimals <= 0 ? 0 : decimals || 2;\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\r\n }\r\n\r\n uploaded(){\r\n this.upload.emit();\r\n }\r\n\r\n filesChanged(){\r\n this.filesChange.emit(this.files);\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'spa-datetime',\r\n templateUrl: './datetime.component.html',\r\n styleUrls: ['./datetime.component.css']\r\n})\r\nexport class DatetimeComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() display = \"\";\r\n @Input() value = \"\";\r\n @Output() valueChange = new EventEmitter();\r\n @Input() readonly = false;\r\n\r\n @Input() min = \"01 jan 1900\";\r\n\r\n @Input() max = \"31 dec 9999\";\r\n\r\n changed() {\r\n this.valueChange.emit(this.value);\r\n }\r\n\r\n}\r\n","<mat-form-field style=\"width:150px;margin-right:20px\">\r\n<mat-label>{{display}}</mat-label>\r\n<input matInput autocomplete=\"off\" type=\"datetime-local\" [(ngModel)]=\"value\" [min]=\"min\" [max]=\"max\" (change)=\"changed()\" [placeholder]=\"display\" [readonly]=\"readonly\" />\r\n</mat-form-field>\r\n","import {\r\n OnInit,\r\n Directive,\r\n HostListener,\r\n ElementRef, forwardRef\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { DecimalPipe } from '@angular/common';\r\n\r\nexport const CURRENCY_INPUT_MASK_DIRECTIVE_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CurrencyInputMaskDirective),\r\n multi: true\r\n};\r\n\r\n@Directive({\r\n selector: '[appCurrencyInputMask]',\r\n providers: [\r\n CURRENCY_INPUT_MASK_DIRECTIVE_VALUE_ACCESSOR,\r\n DecimalPipe\r\n ]\r\n})\r\nexport class CurrencyInputMaskDirective implements ControlValueAccessor, OnInit {\r\n private el: HTMLInputElement;\r\n private onModelChange: Function;\r\n private onModelTouched: Function;\r\n private lastNumVal: number;\r\n private DECIMAL_MARK = '.';\r\n\r\n constructor(\r\n private elementRef: ElementRef,\r\n private decimalPipe: DecimalPipe\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.el = this.elementRef.nativeElement;\r\n }\r\n\r\n @HostListener('focus', ['$event'])\r\n handleFocus(event: any) {\r\n const strVal: string = this.getInputValue();\r\n const unmaskedStr: string = this.getUnmaskedValue(strVal);\r\n this.updateInputValue(unmaskedStr);\r\n }\r\n\r\n @HostListener('cut', ['$event'])\r\n handleCut(event: any) {\r\n setTimeout(() => {\r\n this.inputUpdated();\r\n }, 0);\r\n }\r\n\r\n @HostListener('keypress', ['$event'])\r\n handleKeypress(event: any) {\r\n // Restrict characters\r\n const newChar: string = String.fromCharCode(event.which);\r\n const allowedChars: RegExp = /^[\\d.]+$/;\r\n if (!allowedChars.test(newChar)) {\r\n event.preventDefault();\r\n return;\r\n }\r\n // Handle decimal mark input\r\n const currentValue: string = event.target.value;\r\n const separatorIdx: number = currentValue.indexOf(this.DECIMAL_MARK);\r\n const hasFractionalPart: boolean = (separatorIdx >= 0);\r\n if (!hasFractionalPart || newChar !== this.DECIMAL_MARK) {\r\n return;\r\n }\r\n const isOutsideSelection = !this.isIdxBetweenSelection(separatorIdx);\r\n if (isOutsideSelection) {\r\n const positionAfterMark = separatorIdx + 1;\r\n this.setCursorPosition(positionAfterMark);\r\n event.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n @HostListener('input', ['$event'])\r\n handleInput(event: any) {\r\n this.inputUpdated();\r\n }\r\n\r\n @HostListener('paste', ['$event'])\r\n handlePaste(event: any) {\r\n setTimeout(() => {\r\n this.inputUpdated();\r\n }, 1);\r\n }\r\n\r\n @HostListener('blur', ['$event'])\r\n handleBlur(event: any) {\r\n const strVal: string = this.getInputValue();\r\n const numVal: number = this.convertStrToDecimal(strVal);\r\n this.maskInput(numVal);\r\n this.onModelTouched.apply(event);\r\n }\r\n\r\n registerOnChange(callbackFunction: Function): void {\r\n this.onModelChange = callbackFunction;\r\n }\r\n\r\n registerOnTouched(callbackFunction: Function): void {\r\n this.onModelTouched = callbackFunction;\r\n }\r\n\r\n setDisabledState(value: boolean): void {\r\n this.el.disabled = value;\r\n }\r\n\r\n writeValue(numValue: number): void {\r\n this.maskInput(numValue);\r\n }\r\n\r\n private maskInput(numVal: number): void {\r\n if (!this.isNumeric(numVal)) {\r\n this.updateInputValue('');\r\n return;\r\n }\r\n const strVal: string = this.convertDecimalToStr(numVal);\r\n const newVal: string = this.transformWithPipe(strVal);\r\n this.updateInputValue(newVal);\r\n }\r\n\r\n private inputUpdated() {\r\n this.restrictDecimalValue();\r\n const strVal: string = this.getInputValue();\r\n const unmaskedVal: string = this.getUnmaskedValue(strVal);\r\n const numVal: number = this.convertStrToDecimal(unmaskedVal);\r\n if (numVal !== this.lastNumVal) {\r\n this.lastNumVal = numVal;\r\n this.onModelChange(numVal);\r\n }\r\n }\r\n\r\n private restrictDecimalValue(): void {\r\n const strVal: string = this.getInputValue();\r\n const dotIdx: number = strVal.indexOf(this.DECIMAL_MARK);\r\n const hasFractionalPart: boolean = (dotIdx >= 0);\r\n if (hasFractionalPart) {\r\n const fractionalPart: string = strVal.substring(dotIdx + 1);\r\n if (fractionalPart.length > 2) {\r\n const choppedVal: string = strVal.substring(0, dotIdx + 3);\r\n this.updateInputValue(choppedVal, true);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n\r\n private transformWithPipe(str: string): string {\r\n return this.decimalPipe.transform(str, '1.2-2');\r\n }\r\n\r\n private getUnmaskedValue(value: string): string {\r\n return value.replace(/[^-\\d\\\\.]/g, '');\r\n }\r\n\r\n private updateInputValue(value: string, savePosition = false) {\r\n if (savePosition) {\r\n this.saveCursorPosition();\r\n }\r\n this.el.value = value;\r\n }\r\n\r\n private getInputValue(): string {\r\n return this.el.value;\r\n }\r\n\r\n private convertStrToDecimal(str: string): number {\r\n return (this.isNumeric(str)) ? parseFloat(str) : null;\r\n }\r\n\r\n private convertDecimalToStr(n: number): string {\r\n return (this.isNumeric(n)) ? n + '' : '';\r\n }\r\n\r\n private isNumeric(n: any): boolean {\r\n return !isNaN(parseFloat(n)) && isFinite(n);\r\n }\r\n\r\n private saveCursorPosition() {\r\n const position: number = this.el.selectionStart;\r\n setTimeout(() => {\r\n this.setCursorPosition(position);\r\n }, 1);\r\n }\r\n\r\n private setCursorPosition(position: number) {\r\n this.el.selectionStart = position;\r\n this.el.selectionEnd = position;\r\n }\r\n\r\n private isIdxBetweenSelection(idx: number) {\r\n if (this.el.selectionStart === this.el.selectionEnd) {\r\n return false;\r\n }\r\n return (idx >= this.el.selectionStart && idx < this.el.selectionEnd);\r\n }\r\n\r\n}\r\n","\r\n\r\n<mat-form-field hideRequiredMarker=\"true\" [hintLabel]=\"hint\" [ngStyle]=\"{'width':width}\" hideRequiredMarker=\"true\" style=\"margin-right: 5px;\">\r\n <mat-label>{{display}}</mat-label>\r\n <input matInput appCurrencyInputMask autocomplete=\"off\" style=\"text-align: right;\"\r\n [min]=\"min\" [max]=\"max\"\r\n [ngModel]=\"value\" (ngModelChange)=\"changed($event)\" (keyup.enter)=\"enterPressed()\" (blur)=\"leaved()\" [placeholder]=\"placeholder\" [formControl]=\"control\" [readonly]=\"readonly\" />\r\n <span *ngIf=\"currency!=''\" matPrefix>{{currency}}&nbsp;</span>\r\n <mat-error *ngIf=\"control.invalid\">{{validate(control)}}</mat-error>\r\n</mat-form-field>\r\n\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormControl, Validators } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'spa-money',\r\n templateUrl: './money.component.html',\r\n styleUrls: ['./money.component.css']\r\n})\r\nexport class MoneyComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n if (this.placeholder == \"\") {\r\n this.placeholder = \"Enter \" + this.display;\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.initControl(this.control)\r\n }\r\n\r\n initControl(control: FormControl) {\r\n if (this.readonly) {\r\n control.setValidators(null);\r\n control.updateValueAndValidity();\r\n }\r\n if (!this.required && !this.readonly) {\r\n\r\n control.setValidators([Validators.min(this.min), Validators.max(this.max)]);\r\n this.control.updateValueAndValidity();\r\n }\r\n }\r\n\r\n @Input() readonly = false;\r\n @Input() hint = \"\";\r\n @Input() display = \"\";\r\n @Input() placeholder = \"\";\r\n @Input() value = \"\";\r\n @Input() width = \"100%\"\r\n @Input() currency = \"\";\r\n\r\n @Output() valueChange = new EventEmitter();\r\n @Output() leave = new EventEmitter();\r\n @Output() enterPress = new EventEmitter();\r\n\r\n\r\n\r\n //validation input\r\n @Input() required = true;\r\n @Input() min = 0;\r\n @Input() max = 9000000000000000; //Math.max 9000000000000000\r\n\r\n\r\n changed(x){\r\n this.valueChange.emit(x);\r\n }\r\n\r\n leaved() {\r\n this.leave.emit();\r\n }\r\n\r\n enterPressed() {\r\n this.enterPress.emit();\r\n }\r\n\r\n //validation\r\n control = new FormControl(this.value, [Validators.required, Validators.min(this.min), Validators.max(this.max)]);\r\n\r\n validate(control: FormControl): string {\r\n\r\n if (this.required && control.hasError('required')) {\r\n return `Required`;\r\n }\r\n\r\n if (parseFloat(this.value) < this.min){\r\n return `Minimun value is ${this.min}`;\r\n }\r\n\r\n if (parseFloat(this.value) > this.max) {\r\n return `Maximum value is ${this.max}`;\r\n }\r\n\r\n if (control.hasError('min')) {\r\n return `Minimun value is ${this.min}`;\r\n }\r\n\r\n if (control.hasError('max')) {\r\n return `Maximum value is ${this.max}`;\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n\r\n}\r\n","\r\n <div class=\"tin-input-row mt-3\" *ngIf=\"title != ''\">\r\n <mat-label style=\"font-size: 20px; font-weight: 300\" > {{title}}</mat-label >\r\n </div>\r\n\r\n <ul *ngIf=\"notes && notes.length>0\" class=\"list-group list-group-flush\" style=\"max-height:350px; margin-left:5px\">\r\n\r\n <li *ngFor=\"let note of notes\" class=\"list-group-item list-group-item-action flex-column align-items-start\">\r\n <div class=\"d-flex w-100 justify-content-between\">\r\n <div class=\"mb-0\">{{note.createdByName}}</div>\r\n <!-- <small class=\"text-muted\">{{note.expr1}} ago</small> -->\r\n </div>\r\n\r\n <small>{{note.details}} (<em>{{note.createdDate | date: 'dd MMM yyyy HH:mm'}}</em>) </small>\r\n </li>\r\n\r\n\r\n </ul>\r\n\r\n <div *ngIf=\"notes && notes.length==0\" class=\"d-flex justify-content-center row align-items-center\" style=\"max-height:200px\">\r\n\r\n No {{title.toLowerCase()}}\r\n\r\n </div>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'spa-activity',\r\n templateUrl: './activity.component.html',\r\n styleUrls: ['./activity.component.css']\r\n})\r\nexport class ActivityComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() notes = new Array();\r\n notesMessage: string = \"Empty\";\r\n @Input() title = \"Notes\"\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { AngularEditorConfig } from '@kolkov/angular-editor';\r\n\r\n@Component({\r\n selector: 'spa-html',\r\n templateUrl: './html.component.html',\r\n styleUrls: ['./html.component.css']\r\n})\r\nexport class HtmlComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() value = \"\";\r\n @Output() valueChange = new EventEmitter();\r\n @Input() readonly = false;\r\n\r\n changed() {\r\n this.valueChange.emit(this.value);\r\n }\r\n\r\n ngOnChanges() {\r\n this.config.editable = !this.readonly;\r\n }\r\n\r\n @Input() config: AngularEditorConfig = {\r\n editable: true,\r\n spellcheck: true,\r\n height: 'auto',\r\n minHeight: '5rem',\r\n placeholder: 'Enter text here...',\r\n translate: 'no',\r\n defaultParagraphSeparator: '',\r\n defaultFontName: 'Arial',\r\n toolbarHiddenButtons: [\r\n [\r\n 'bold',\r\n 'italic',\r\n 'underline',\r\n 'strikeThrough',\r\n 'subscript',\r\n 'superscript',\r\n 'justifyLeft',\r\n 'justifyCenter',\r\n 'justifyRight',\r\n 'justifyFull',\r\n 'indent',\r\n 'outdent',\r\n 'insertUnorderedList',\r\n 'insertOrderedList',\r\n 'heading',\r\n 'fontName'\r\n ],\r\n [\r\n 'fontSize',\r\n 'textColor',\r\n 'backgroundColor',\r\n 'customClasses',\r\n 'link',\r\n 'unlink',\r\n 'insertImage',\r\n 'insertVideo',\r\n 'insertHorizontalRule',\r\n 'removeFormat',\r\n 'toggleEditorMode'\r\n ]\r\n ],\r\n customClasses: [\r\n {\r\n name: \"quote\",\r\n class: \"quote\",\r\n },\r\n {\r\n name: 'redText',\r\n class: 'redText'\r\n },\r\n {\r\n name: \"titleText\",\r\n class: \"titleText\",\r\n tag: \"h1\",\r\n },\r\n ]\r\n };\r\n\r\n}\r\n","<angular-editor [(ngModel)]=\"value\" [config]=\"config\" (ngModelChange)=\"changed()\" ></angular-editor>\r\n","\r\n<mat-checkbox color=\"primary\" style=\"margin-right:5px\" [(ngModel)]=\"show\" (change)=\"resetValue()\" labelPosition=\"after\">{{display}}</mat-checkbox>\r\n\r\n\r\n<mat-form-field style=\"margin-right:10px;width: 0px;\" >\r\n<input matInput />\r\n</mat-form-field>\r\n\r\n\r\n<mat-form-field style=\"margin-right:30px\" *ngIf=\"show && !options\">\r\n<mat-label>{{display}}</mat-label>\r\n<input matInput [(ngModel)]=\"value\" width=\"100\" (change)=\"changed()\" (keyup.enter)=\"changed()\" [placeholder]=\"'Enter ' + display\" autocomplete=\"off\" />\r\n</mat-form-field>\r\n\r\n\r\n<mat-form-field style=\"margin-right: 20px;\" floatLabel=\"always\" width=\"100\" *ngIf=\"show && options\">\r\n <mat-label>{{display}}</mat-label>\r\n <mat-select [(value)]=\"value\" (selectionChange)=\"changed()\" [placeholder]=\"'Select ' + display\" [disabled]=\"readonly\" >\r\n <mat-option *ngFor=\"let row of options\" [value]=\"row[optionValue]\">\r\n {{row[optionDisplay]}}\r\n </mat-option>\r\n </mat-select>\r\n</mat-form-field>\r\n\r\n<!-- <spa-text *ngIf=\"show\" style=\"margin-right:30px\" [display]=\"'Enter ' + display\" (enterPress)=\"enterPressed()\" (valueChange)=\"changed($event.target.value)\" width=\"100\" [required]=\"false\" [(value)]=\"value\" ></spa-text> -->\r\n\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'spa-option',\r\n templateUrl: './option.component.html',\r\n styleUrls: ['./option.component.css']\r\n})\r\nexport class OptionComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.OGValue = this.value;\r\n }\r\n\r\n OGValue\r\n\r\n\r\n @Input() options: any;\r\n @Input() optionValue = \"\";\r\n @Input() optionDisplay = \"\";\r\n @Input() readonly = false;\r\n\r\n @Input() value = \"\";\r\n @Input() display = \"\";\r\n @Input() show: boolean = false;\r\n\r\n\r\n @Output() valueChange = new EventEmitter();\r\n @Output() enterPress = new EventEmitter();\r\n\r\n changed() {\r\n this.valueChange.emit(this.value);\r\n }\r\n\r\n enterPressed(){\r\n this.valueChange.emit();\r\n }\r\n\r\n resetValue(){\r\n this.value = this.OGValue;\r\n this.changed();\r\n\r\n }\r\n\r\n}\r\n","<div *ngIf=\"format=='text'\">\r\n <label style=\"font-weight: 500\" >{{display}}: </label> &nbsp; <label>{{value}} </label> &nbsp;\r\n</div>\r\n\r\n<div *ngIf=\"format=='date'\">\r\n <label style=\"font-weight: 500\" >{{display}}: </label> &nbsp; <label>{{value | date:'dd/MM/yyyy'}} </label> &nbsp;\r\n</div>\r\n\r\n<div *ngIf=\"format=='datetime'\">\r\n <label style=\"font-weight: 500\" >{{display}}: </label> &nbsp; <label>{{value | date:'dd/MM/yyyy HH:mm'}} </label> &nbsp;\r\n</div>\r\n\r\n<div *ngIf=\"format=='money'\">\r\n <label style=\"font-weight: 500\" >{{display}}: </label> &nbsp; <label>{{value | currency:'USD':''}} </label> &nbsp;\r\n</div>\r\n\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'spa-label',\r\n templateUrl: './label.component.html',\r\n styleUrls: ['./label.component.css']\r\n})\r\nexport class LabelComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() display = \"\";\r\n @Input() value = \"\";\r\n @Input() format = \"text\";\r\n\r\n}\r\n","\r\n\r\n\r\n<!-- <mat-horizontal-stepper class=\"test\" labelPosition=\"bottom\" #stepper>\r\n <mat-step [editable]=\"false\" label=\"Draft\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"Head Approval\" > </mat-step>\r\n <mat-step [editable]=\"false\" label=\"CE Approval\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"Booking\" state=\"booking\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"BTA Approval\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"Travel\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"BTR Approval\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"Closure\"> </mat-step>\r\n <ng-template matStepperIcon=\"booking\"> <mat-icon>forum</mat-icon> </ng-template>\r\n</mat-horizontal-stepper> -->\r\n\r\n<mat-horizontal-stepper class=\"transparent\" labelPosition=\"bottom\" #stepper>\r\n\r\n <mat-step *ngFor=\"let row of steps\"\r\n [editable]=\"false\" [label]=\"row.name\">\r\n </mat-step>\r\n\r\n <!-- <ng-template *ngFor=\"let row of steps\"\r\n [matStepperIcon]=\"row.name\"> <mat-icon>{{row.icon}}</mat-icon>\r\n </ng-template> -->\r\n\r\n <!-- <ng-template matStepperIcon=\"booking\">\r\n <mat-icon>call_end</mat-icon>\r\n </ng-template> -->\r\n\r\n <!-- <ng-template ngFor let-xb [ngForOf]=\"steps\" matStepperIcon=\"Booking\"> <mat-icon>forum</mat-icon>\r\n\r\n </ng-template> -->\r\n\r\n</mat-horizontal-stepper>\r\n","import { AfterViewInit, Component, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { MatStepper } from '@angular/material/stepper';\r\nimport { STEPPER_GLOBAL_OPTIONS } from '@angular/cdk/stepper';\r\nimport { Step } from '../../classes/Classes';\r\n\r\n@Component({\r\n selector: 'spa-steps',\r\n templateUrl: './steps.component.html',\r\n styleUrls: ['./steps.component.css'],\r\n providers: [{\r\n provide: STEPPER_GLOBAL_OPTIONS, useValue: { displayDefaultIndicatorType: false }\r\n }]\r\n})\r\nexport class StepsComponent implements OnInit, AfterViewInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n ngAfterViewInit() {\r\n\r\n }\r\n\r\n ngOnChanges() {\r\n this.pushSteps();\r\n }\r\n\r\n @ViewChild('stepper') stepper: MatStepper;\r\n @Input() value = \"\";\r\n @Input() steps: Step[];\r\n\r\n setStepper() {\r\n\r\n if (this.value == \"\") return;\r\n\r\n\r\n this.stepper.selectedIndex = 0;\r\n\r\n switch (this.value) {\r\n\r\n\r\n\r\n case \"Draft\":\r\n this.stepper.selectedIndex = 0;\r\n break;\r\n\r\n case \"Head Approval\":\r\n this.pushStepper(1)\r\n break;\r\n\r\n case \"CE Approval\":\r\n this.pushStepper(2)\r\n break;\r\n\r\n case \"Booking\":\r\n this.pushStepper(3)\r\n break;\r\n\r\n case \"BTA Approval\":\r\n this.pushStepper(4)\r\n break;\r\n\r\n case \"Travel\":\r\n this.pushStepper(5)\r\n break;\r\n\r\n case \"BTR Approval\":\r\n this.pushStepper(6)\r\n break;\r\n\r\n case \"Travel Closure\":\r\n this.pushStepper(7)\r\n break;\r\n\r\n }\r\n\r\n }\r\n\r\n pushStepper(count: number) {\r\n\r\n for (let index = 0; index < count + 1; index++) {\r\n // const element = array[index];\r\n this.stepper.selectedIndex = index;\r\n }\r\n\r\n }\r\n\r\n pushSteps(){\r\n\r\n if(this.steps.length == 0) return;\r\n if (this.value == \"\") return;\r\n this.stepper.selectedIndex = 0;\r\n\r\n\r\n let i = 0;\r\n\r\n for (let step of this.steps) {\r\n\r\n if (step.name != this.value) {\r\n\r\n this.stepper.selectedIndex = i;\r\n i++;\r\n\r\n } else {\r\n\r\n this.stepper.selectedIndex = i;\r\n break;\r\n\r\n }\r\n }\r\n\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\n\r\n@Component({\r\n selector: 'spa-filter',\r\n templateUrl: './filter.component.html',\r\n styleUrls: ['./filter.component.css']\r\n})\r\nexport class FilterComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngOnChanges() {\r\n // console.log(\"OnChange\")\r\n this.applyFilter(this._filterText);\r\n }\r\n\r\n @Input() data = new MatTableDataSource();;\r\n @Output() refreshClick = new EventEmitter();\r\n\r\n _filterText = \"\";\r\n\r\n applyFilter(filterValue: string) {\r\n if (this.data){\r\n this.data.filter = filterValue.trim().toLowerCase();\r\n }\r\n\r\n }\r\n\r\n refreshClicked(){\r\n this.refreshClick.emit();\r\n }\r\n\r\n}\r\n","<mat-form-field style=\"font-size:12px\">\r\n <mat-label>Filter</mat-label>\r\n <input id=\"txtFilter\" matInput [(ngModel)]=\"_filterText\" (keyup)=\"applyFilter($event.target.value)\" placeholder=\"Enter Filter text\" autocomplete=\"off\">\r\n</mat-form-field>\r\n\r\n<button id=\"btnFilter\" mat-mini-fab color=\"primary\" matTooltip=\"Refresh Data\" matTooltipPosition=\"above\" (click)=\"refreshClicked()\" style=\"margin-right:1em;margin-top:5px\"><mat-icon class=\"refreshIcon\">refresh</mat-icon></button>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { CurrencyInputMaskDirective } from './currency-input-mask.directive';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule\r\n ],\r\n declarations: [\r\n CurrencyInputMaskDirective\r\n ],\r\n exports: [\r\n CurrencyInputMaskDirective\r\n ]\r\n})\r\nexport class CurrencyInputModule {\r\n}\r\n","import { LoaderComponent } from './components/loader/loader.component';\r\nimport { SpaMatModule } from \"./modules/spa-mat.module\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { CommonModule, CurrencyPipe } from \"@angular/common\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { LoaderInterceptor } from './services/loader-interceptor.service';\r\nimport { NgIdleKeepaliveModule } from '@ng-idle/keepalive';\r\nimport { MomentModule } from 'angular2-moment';\r\nimport { NgxDocViewerModule } from 'ngx-doc-viewer';\r\n\r\nimport { TinSpaComponent } from \"./components/tin-spa.component\";\r\nimport { NavMenuComponent } from \"./components/nav-menu/nav-menu.component\";\r\nimport { messageDialog } from \"./components/message/messageDialog.component\";\r\nimport { TimeoutComponent } from './components/timeout/timeout.component';\r\nimport { HashLocationStrategy, LocationStrategy } from '@angular/common';\r\nimport { TableComponent } from './components/table/table.component';\r\nimport { TilesComponent } from './components/tiles/tiles.component';\r\nimport { DateComponent } from './components/date/date.component';\r\nimport { TextComponent } from './components/text/text.component';\r\nimport { ViewerComponent } from './components/viewer/viewer.component';\r\nimport { SelectComponent } from './components/select/select.component';\r\nimport { CheckComponent } from './components/check/check.component';\r\nimport { AttachComponent } from './components/attach/attach.component';\r\nimport { DatetimeComponent } from './components/datetime/datetime.component';\r\nimport { MoneyComponent } from './components/money/money.component';\r\nimport { DndDirective } from './dnd.directive';\r\nimport { ChipsComponent } from './components/chips/chips.component';\r\nimport { ActivityComponent } from './components/activity/activity.component';\r\nimport { viewerDialog } from './components/viewer/viewerDialog.component';\r\nimport { HtmlComponent } from './components/html/html.component';\r\nimport { AngularEditorModule } from '@kolkov/angular-editor';\r\nimport { OptionComponent } from './components/option/option.component';\r\nimport { LabelComponent } from './components/label/label.component';\r\nimport { StepsComponent } from './components/steps/steps.component';\r\nimport { FilterComponent } from './components/filter/filter.component';\r\nimport { CurrencyInputModule } from './components/money/currency-input-mask.module';\r\n// import { CurrencyInputDirective } from './components/money/currency-input.directive';\r\n\r\n\r\n@NgModule({\r\n declarations: [DndDirective,TinSpaComponent, messageDialog, NavMenuComponent, LoaderComponent,\r\n TimeoutComponent, TableComponent, TilesComponent, DateComponent, TextComponent,\r\n ViewerComponent, SelectComponent, CheckComponent, AttachComponent, DatetimeComponent,\r\n MoneyComponent,\r\n ChipsComponent,\r\n ActivityComponent, viewerDialog, HtmlComponent, OptionComponent, LabelComponent, StepsComponent, FilterComponent, ],\r\n\r\n entryComponents: [messageDialog],\r\n\r\n imports: [\r\n ReactiveFormsModule.withConfig({ warnOnNgModelWithFormControl: \"never\" }),\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SpaMatModule,\r\n MomentModule,\r\n NgxDocViewerModule,\r\n AngularEditorModule,\r\n CurrencyInputModule,\r\n\r\n\r\n NgIdleKeepaliveModule.forRoot()\r\n ],\r\n\r\n exports: [\r\n CommonModule,\r\n FormsModule,\r\n SpaMatModule,\r\n TinSpaComponent,\r\n messageDialog,\r\n NavMenuComponent,\r\n LoaderComponent,\r\n TimeoutComponent,\r\n TableComponent,\r\n TilesComponent,\r\n DateComponent,\r\n ViewerComponent,\r\n SelectComponent,\r\n TextComponent,\r\n DatetimeComponent,\r\n CheckComponent,\r\n AttachComponent,\r\n MoneyComponent,\r\n ChipsComponent,\r\n ActivityComponent,\r\n HtmlComponent,\r\n OptionComponent,\r\n LabelComponent,\r\n StepsComponent,\r\n FilterComponent\r\n\r\n\r\n ],\r\n\r\n providers: [\r\n CurrencyPipe,\r\n { provide: HTTP_INTERCEPTORS, useClass: LoaderInterceptor, multi: true },\r\n { provide: LocationStrategy, useClass: HashLocationStrategy}\r\n ],\r\n})\r\nexport class TinSpaModule {}\r\n","\r\n <div class=\"tin-bg-login login-page\">\r\n\r\n <div *ngIf=\"appConfig.logo!=''\" class=\"d-flex justify-content-center row align-items-center\" style=\"margin-top:3em;margin-bottom:1em\">\r\n\r\n <img *ngIf=\"appConfig.logoSize=='normal'\" [src]=\"appConfig.logo\" style=\"height:100px;margin-right:3em;margin-left:3em\" />\r\n <img *ngIf=\"appConfig.logoSize=='medium'\" [src]=\"appConfig.logo\" style=\"height:150px;margin-right:3em;margin-left:3em\" />\r\n <img *ngIf=\"appConfig.logoSize=='large'\" [src]=\"appConfig.logo\" style=\"height:250px;margin-right:3em;margin-left:3em\" />\r\n\r\n </div>\r\n\r\n\r\n <div *ngIf=\"appConfig.logo ==''\" style=\"margin-top:2em\">\r\n <!-- Add margin top when there is no logo -->\r\n </div>\r\n\r\n\r\n <div class=\"d-flex justify-content-center row align-items-center\" style=\"margin-top:3em\">\r\n\r\n <div class=\"d-none d-sm-block\">\r\n </div>\r\n\r\n <div style=\"margin-left:1em\">\r\n\r\n <mat-card class=\"mat-elevation-z3\" style=\"width:400px; \">\r\n\r\n <mat-card-header>\r\n <mat-card-title>{{appConfig.appName}}</mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content>\r\n\r\n <div class=\"tin-input mt-2\">\r\n\r\n <spa-text id=\"txtuserName\" display=\"Username\" [(value)]=\"user.userName\" ></spa-text>\r\n\r\n <mat-form-field >\r\n <mat-label>Password</mat-label>\r\n <input id=\"txtPassword\" matInput [type]=\"hide ? 'password' : 'text'\" (keyup.enter)=\"login()\" [(ngModel)]=\"user.password\" autocomplete=\"off\" >\r\n <button mat-icon-button matSuffix (click)=\"hide = !hide\" [attr.aria-label]=\"'Hide password'\" [attr.aria-pressed]=\"hide\">\r\n <mat-icon style=\"font-size: 18px;\">{{hide ? 'visibility_off' : 'visibility'}}</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n </mat-card-content>\r\n\r\n\r\n <mat-card-actions>\r\n\r\n <div class=\"row \">\r\n\r\n <div class=\"col d-flex justify-content-center\">\r\n <button id=\"btnLogin\" mat-raised-button [disabled]=\"isProcessing\" style=\"width: 100px;\" (click)=\"login()\" color=\"primary\">Login</button>\r\n </div>\r\n\r\n <div class=\"col d-flex justify-content-center\" *ngIf=\"appConfig.selfService\">\r\n <button id=\"btnSignup\" mat-stroked-button color=\"primary\" style=\"width: 100px;\" (click)=\"signup()\">Signup</button>\r\n </div>\r\n\r\n </div>\r\n\r\n </mat-card-actions>\r\n\r\n </mat-card>\r\n\r\n <div *ngIf=\"appConfig.selfService\">\r\n <br />\r\n <a mat-button id=\"lnkRecover\" style=\"margin-left: 1em\" (click)=\"recoverAccount()\">Forgot your password ?</a>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n","import { MessageService } from \"../../services/message.service\";\r\nimport { StorageService } from \"../../services/storage.service\";\r\nimport { AuthService } from \"../../services/auth.service\";\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { DataServiceLib } from \"../../services/data.service\";\r\nimport { LogService } from \"./../../services/log.service\";\r\nimport { User, AppConfig } from \"../../classes/Classes\";\r\nimport { HttpService } from \"../../services/http.service\";\r\nimport { ApiResponse, Constants } from \"../../classes/TinCore\";\r\n\r\n@Component({\r\n selector: \"spa-login\",\r\n templateUrl: \"./login.component.html\",\r\n styleUrls: [\"./login.component.scss\"],\r\n})\r\nexport class LoginComponent implements OnInit {\r\n\r\n constructor(private httpService: HttpService, private storageService: StorageService, public router: Router, private messageService: MessageService, public dataService: DataServiceLib,\r\n public authService: AuthService, private logService: LogService, private route: ActivatedRoute\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.authService.Updateloggedin(false);\r\n this.authService.UpdateRole(null);\r\n this.storageService.clear();\r\n\r\n this.dataService.appConfigObserv.subscribe(x => this.appConfig = x);\r\n\r\n if (this.route.snapshot.queryParams.redirectTo != undefined) {\r\n this.redirectPath = this.route.snapshot.queryParams.redirectTo\r\n }else{\r\n this.redirectPath = \"home\"\r\n }\r\n\r\n }\r\n\r\n redirectPath\r\n\r\n public user = new User();\r\n hide = true;\r\n isProcessing: boolean = false;\r\n\r\n appConfig = new AppConfig();\r\n\r\n public signup() {\r\n this.router.navigate([\"signup\"]);\r\n }\r\n\r\n public recoverAccount() {\r\n this.router.navigate([\"recover-account\"]);\r\n }\r\n\r\n public login() {\r\n\r\n if (this.user.userName == \"\" || this.user.password == \"\") {\r\n this.messageService.toast(\"Please enter your credentials\");\r\n return;\r\n }\r\n\r\n\r\n this.logService.info(\"logging in\");\r\n\r\n this.isProcessing = true;\r\n\r\n\r\n this.user.userName = this.user.userName\r\n this.dataService.Login(this.user).subscribe((apiResponse: ApiResponse) => {\r\n\r\n this.isProcessing = false;\r\n\r\n\r\n if (apiResponse.success) {\r\n\r\n if (apiResponse.data.authType == 'local' && !this.appConfig.localAuth) {\r\n this.messageService.toast(\"Contact Admin: Authentication Type error\");\r\n return;\r\n }\r\n\r\n if (apiResponse.data.authType == 'AD' && !this.appConfig.ADAuth) {\r\n this.messageService.toast(\"Contact Admin: Authentication Type error\");\r\n return;\r\n }\r\n\r\n\r\n this.authService.Updateloggedin(true);\r\n\r\n this.authService.UpdateToken(apiResponse.data.token);\r\n this.storageService.store(Constants.AUTH_TOKEN, apiResponse.data.token);\r\n\r\n this.authService.UpdateTokenExpire(apiResponse.data.expiration);\r\n this.storageService.store(Constants.AUTH_TOKEN_EXPIRE, apiResponse.data.expiration);\r\n\r\n this.authService.UpdateCurrentUser(this.user.userName);\r\n this.storageService.store(Constants.AUTH_USER, this.user.userName);\r\n\r\n this.authService.updateLoggedUserFullName(apiResponse.data.firstName);\r\n this.storageService.store(Constants.AUTH_NAME, apiResponse.data.firstName);\r\n\r\n this.authService.UpdateRole(apiResponse.data.role);\r\n this.storageService.store(Constants.AUTH_ROLES, JSON.stringify(apiResponse.data.role));\r\n\r\n\r\n this.logService.info(\"logged in\");\r\n\r\n\r\n if (apiResponse.data.changePassword == true && apiResponse.data.authType == 'local') {\r\n\r\n this.router.navigate([\"home/user/change-password\"], {\r\n queryParams: { redirectTo: this.redirectPath },\r\n queryParamsHandling: 'merge',\r\n skipLocationChange: false\r\n });\r\n return\r\n }\r\n\r\n this.router.navigate([this.redirectPath]);\r\n\r\n\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n this.user.password = \"\";\r\n }\r\n },\r\n (error) => {\r\n this.isProcessing = false;\r\n\r\n this.messageService.toast(this.httpService.Error(error));\r\n }\r\n );\r\n }\r\n\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n// import { HttpService, ApiResponse } from 'tin-core';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { DataServiceLib } from '../../services/data.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { User, Profile, Account } from '../../classes/Classes';\r\nimport { HttpService } from '../../services/http.service';\r\nimport { ApiResponse } from '../../classes/TinCore';\r\n\r\n@Component({\r\n selector: 'spa-signup',\r\n templateUrl: './signup.component.html',\r\n styleUrls: ['./signup.component.css']\r\n})\r\nexport class SignupComponent implements OnInit {\r\n\r\n\r\n constructor(private httpService: HttpService, private messageService: MessageService, private dataService: DataServiceLib, private authService: AuthService,) { }\r\n\r\n ngOnInit() {\r\n\r\n this.account.user = this.user;\r\n this.account.profile = this.profile;\r\n }\r\n\r\n isProcessing: boolean = false;\r\n user = new User();\r\n profile = new Profile();\r\n\r\n account = new Account();\r\n\r\n confirmPassword: string;\r\n\r\n\r\ncreate(){\r\n\r\n this.profile.userName = this.user.userName;\r\n\r\n this.isProcessing = true;\r\n this.dataService.RegisterAccount(this.account).subscribe(\r\n (apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"Account Created\");\r\n\r\n this.user = new User();\r\n this.profile = new Profile();\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n },\r\n (error) => {\r\n this.isProcessing = false;\r\n this.messageService.toast(this.httpService.Error(error));\r\n }\r\n );\r\n}\r\n\r\n\r\n\r\n}\r\n","\r\n<h4 style=\"margin-top: 1em;\">Signup</h4>\r\n\r\n<hr/>\r\nComplete the form below.\r\n\r\n<div class=\"d-flex justify-content-center row align-items-center\">\r\n\r\n <div class=\"tin-input\" style=\"font-size:14px; width: 50%;\">\r\n\r\n\r\n <div class=\"tin-input-row\">\r\n\r\n <div class=\"col\">\r\n\r\n <mat-form-field style=\"width:100%\">\r\n <mat-label>FirstName</mat-label>\r\n <input matInput autocomplete=\"off\" [(ngModel)]=\"account.profile.firstName\" placeholder=\"Enter FirstName\" />\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n <div class=\"col\">\r\n\r\n <mat-form-field style=\"width:100%\">\r\n <mat-label>LastName</mat-label>\r\n <input matInput autocomplete=\"off\" [(ngModel)]=\"profile.lastName\" placeholder=\"Enter LastName\" />\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div class=\"tin-input-row mt-3\">\r\n\r\n <div class=\"col-6\">\r\n\r\n <mat-form-field style=\"width:100%\">\r\n <mat-label>userName</mat-label>\r\n <input matInput autocomplete=\"off\" [(ngModel)]=\"user.userName\" placeholder=\"Enter userName\" />\r\n </mat-form-field>\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div class=\"tin-input-row\">\r\n\r\n <div class=\"col\">\r\n\r\n <mat-form-field style=\"width:100%\">\r\n <mat-label>Password</mat-label>\r\n <input matInput autocomplete=\"off\" type=\"password\" [(ngModel)]=\"user.password\" placeholder=\"Enter Password\" />\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n <div class=\"col\">\r\n\r\n <mat-form-field style=\"width:100%\">\r\n <mat-label>Confirm Password</mat-label>\r\n <input matInput autocomplete=\"off\" type=\"password\" [(ngModel)]=\"confirmPassword\" placeholder=\"Enter Confirm Password\" />\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n\r\n\r\n <div class=\"tin-input-row mt-3\">\r\n <button mat-raised-button color=\"primary\" (click)=\"create()\" cdkFocusInitial>Create</button>\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n\r\n\r\n\r\n</div>\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/data.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { User } from '../../classes/Classes';\r\n// import { ApiResponse } from 'tin-core';\r\nimport { Location } from '@angular/common';\r\nimport { ApiResponse } from '../../classes/TinCore';\r\n\r\n@Component({\r\n selector: 'spa-recover-account',\r\n templateUrl: './recover-account.component.html',\r\n styleUrls: ['./recover-account.component.css']\r\n})\r\nexport class RecoverAccountComponent implements OnInit {\r\n\r\n constructor(private location: Location, private dataService: DataServiceLib, public authService: AuthService, private messageService: MessageService) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n userName: string = \"\";\r\n\r\n recover(){\r\n\r\n\r\n if (this.userName == \"\") {\r\n\r\n this.messageService.toast(\"Please enter your userName\");\r\n return;\r\n } else {\r\n let u = new User();\r\n u.userName = this.userName;\r\n\r\n this.dataService.SelfReset(u).subscribe((apiResponse: ApiResponse) => {\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"The password has been sent to your email\");\r\n this.location.back();\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n}\r\n","<h4 style=\"margin-top: 1em;\">Recover Account</h4>\r\n\r\n<hr/>\r\nSubmit your userName and we will send you details to your registered email address.\r\n\r\n<div class=\"mt-3\" >\r\n\r\n <div class=\"tin-input \" style=\"font-size:14px;\">\r\n\r\n <div class=\"col\">\r\n <spa-text display=\"Username\" [(value)]=\"userName\" ></spa-text>\r\n </div>\r\n\r\n <div class=\"col mt-3\">\r\n <button mat-raised-button color=\"primary\" (click)=\"recover()\" cdkFocusInitial>Submit</button>\r\n </div>\r\n\r\n </div>\r\n\r\n</div>\r\n","import { SpaMatModule } from \"./spa-mat.module\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { LoginComponent } from \"../components/login/login.component\";\r\nimport { SignupComponent } from \"../components/signup/signup.component\";\r\nimport { RecoverAccountComponent } from \"../components/recover-account/recover-account.component\";\r\nimport { TinSpaModule } from \"../tin-spa.module\";\r\n\r\n@NgModule({\r\n declarations: [LoginComponent, SignupComponent, RecoverAccountComponent],\r\n\r\n entryComponents: [],\r\n\r\n imports: [\r\n ReactiveFormsModule.withConfig({ warnOnNgModelWithFormControl: \"never\" }),\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SpaMatModule,\r\n TinSpaModule\r\n ],\r\n\r\n exports: [\r\n CommonModule,\r\n FormsModule,\r\n SpaMatModule,\r\n LoginComponent,\r\n SignupComponent,\r\n RecoverAccountComponent,\r\n ],\r\n})\r\nexport class SpaIndexModule {}\r\n","<h4>Change Password</h4>\r\n<hr>\r\n\r\n<div class=\"container\">\r\n\r\n <div class=\"d-flex justify-content-center row align-items-center\" >\r\n\r\n <div class=\"col\">\r\n\r\n <div class=\"tin-input \" style=\"font-size:14px;\">\r\n\r\n <div class=\"col\" *ngIf=\"changePassword.userName!=''\">\r\n <spa-text id=\"txtuserName\" display=\"Username\" [(value)]=\"changePassword.userName\" width=\"300px\" readonly=\"true\"></spa-text>\r\n </div>\r\n\r\n <div class=\"col\" *ngIf=\"!myRole[dataService.capUsers.name]\">\r\n <spa-text id=\"txtPassword\" display=\"Current Password\" [(value)]=\"changePassword.currentPassword\" width=\"300px\" type=\"password\"></spa-text>\r\n </div>\r\n\r\n <div class=\"col\">\r\n <spa-text id=\"txtNewPassword\" display=\"New Password\" [(value)]=\"changePassword.newPassword\" width=\"300px\" type=\"password\"></spa-text>\r\n </div>\r\n\r\n <div class=\"col\">\r\n <spa-text id=\"txtConfirmPassword\" display=\"Confirm Password\" [(value)]=\"changePassword.confirmPassword\" width=\"300px\" type=\"password\"></spa-text>\r\n </div>\r\n\r\n <div class=\"col mt-3\">\r\n <button id=\"btnChange\" mat-raised-button color=\"primary\" (click)=\"change()\" cdkFocusInitial>Change</button>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"col\">\r\n\r\n <div class=\"alert alert-info\" style=\"font-size: 14px;\" role=\"alert\">\r\n <b>*Please consider these requirements for your new password.</b> <br><br>\r\n\r\n At least 8 characters<br>\r\n At least 1 uppercase letter (A-Z)<br>\r\n At least 2 lowercase letters (a-z)<br>\r\n At least 1 digit (0-9)<br>\r\n At least 1 special character (~`! …)<br>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n </div>\r\n</div>\r\n\r\n","\r\nimport { ChangeUserPassword } from './../../classes/Classes';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { DataServiceLib } from '../../services/data.service';\r\nimport { AuthService } from '../../services/auth.service';\r\n// import { ApiResponse, HttpService } from 'tin-core';\r\nimport { Location } from '@angular/common';\r\nimport { HttpService } from '../../services/http.service';\r\nimport { ApiResponse } from '../../classes/TinCore';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'spa-change-password',\r\n templateUrl: './change-password.component.html',\r\n styleUrls: ['./change-password.component.css']\r\n})\r\nexport class ChangePasswordComponent implements OnInit {\r\n\r\n constructor(public router: Router, private location: Location, private httpService: HttpService, private messageService: MessageService, public dataService: DataServiceLib, private authService: AuthService, private route: ActivatedRoute) { }\r\n\r\n ngOnInit() {\r\n this.myRole = this.authService.currentRoleSource.value\r\n\r\n if (this.dataService.tmpProfileuserName==\"\"){\r\n this.changePassword.userName = this.authService.currentUser;\r\n\r\n }else{\r\n this.changePassword.userName = this.dataService.tmpProfileuserName;\r\n this.dataService.tmpProfileuserName = \"\";\r\n }\r\n\r\n if (this.route.snapshot.queryParams.redirectTo != undefined) {\r\n this.redirectPath = this.route.snapshot.queryParams.redirectTo\r\n } else {\r\n this.redirectPath = \"home\"\r\n }\r\n\r\n }\r\n\r\n myRole;\r\n redirectPath\r\n isProcessing: boolean = false;\r\n changePassword = new ChangeUserPassword();\r\n\r\n public change() {\r\n\r\n if (!this.myRole[this.dataService.capUsers.name]){\r\n if (this.changePassword.currentPassword == \"\") {\r\n this.messageService.toast(\"Please enter current Password\");\r\n return;\r\n }\r\n }\r\n\r\n if (this.changePassword.newPassword == \"\") {\r\n this.messageService.toast(\"Please enter new Password\");\r\n return;\r\n }\r\n\r\n if (this.changePassword.confirmPassword == \"\") {\r\n this.messageService.toast(\"Please confirm new Password\");\r\n return;\r\n }\r\n\r\n if (this.changePassword.confirmPassword != this.changePassword.newPassword ) {\r\n this.messageService.toast(\"Passwords do not match\");\r\n return;\r\n }\r\n\r\n this.isProcessing = true;\r\n\r\n if (this.myRole[this.dataService.capUsers.name]){\r\n\r\n\r\n this.dataService.ChangePasswordAdmin(this.changePassword).subscribe((apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"Password Changed\");\r\n\r\n this.router.navigate([this.redirectPath]);\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n }\r\n );\r\n\r\n }else{\r\n\r\n this.dataService.ChangePassword(this.changePassword).subscribe((apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"Password Changed\");\r\n\r\n this.router.navigate([this.redirectPath]);\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n }\r\n );\r\n\r\n }\r\n }\r\n}\r\n","\r\n<div class=\"container\">\r\n\r\n <div class=\"row mt-3\" style=\"font-size:14px;\">\r\n\r\n <div class=\"col-2 mt-3 \">\r\n\r\n <div class=\"tin-input\">\r\n\r\n <div class=\"col\">\r\n <mat-icon style=\"font-size: 70px;\">account_circle</mat-icon>\r\n <!-- <img style=\"height: 40px\"> -->\r\n </div>\r\n\r\n <div class=\"col\">\r\n <mat-label id=\"lbluserName\" style=\"font-size: 14px;\">{{profile?.userName}}</mat-label>\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n\r\n <div class=\"col-8 mt-3\">\r\n\r\n <div class=\"tin-input\" style=\"width: 70%;\">\r\n\r\n <div class=\"tin-input-row\">\r\n\r\n\r\n <div class=\"col\">\r\n <spa-text id=\"txtFirstName\" display=\"First Name\" [(value)]=\"profile.firstName\" [readonly]=\"selfProfile\"></spa-text>\r\n </div>\r\n\r\n <div class=\"col\">\r\n <spa-text id=\"txtLastName\" display=\"Last Name\" [(value)]=\"profile.lastName\" [readonly]=\"selfProfile\"></spa-text>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"col\">\r\n <spa-text id=\"txtAuth\" display=\"Authentication\" [(value)]=\"profile.authType\" [readonly]=\"true\"></spa-text>\r\n </div>\r\n\r\n <div class=\"col\">\r\n <spa-text id=\"txtEmail\" display=\"Email\" [(value)]=\"profile.email\" [readonly]=\"selfProfile\"></spa-text>\r\n </div>\r\n\r\n <div class=\"col\">\r\n <spa-select id=\"cboRole\" display=\"Role\" [options]=\"roles\" optionDisplay=\"roleName\" optionValue=\"roleID\" [(value)]=\"profile.roleID\" [readonly]=\"selfProfile\"></spa-select>\r\n </div>\r\n\r\n\r\n <div class=\"tin-input-row mt-2\">\r\n <button id=\"btnUpdate\" mat-raised-button color=\"primary\" *ngIf=\"!selfProfile\" [disabled]=\"isProcessing\" (click)=\"updateProfile()\" >Update Profile</button>\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div class=\"col-2 mt-4\">\r\n\r\n <a mat-button id=\"lnkUserManager\" style=\"margin-left: 1em\" *ngIf=\"!selfProfile\" (click)=\"gotoUsers()\" >User Manager</a>\r\n <a mat-button id=\"lnkChangePassword\" style=\"margin-left: 1em\" *ngIf=\"(selfProfile || myRole[dataService.capUsers.name]) && profile.authType=='local'\" (click)=\"changePassword()\" >Change Password</a>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n</div>\r\n\r\n\r\n\r\n","import { AuthService } from './../../services/auth.service';\r\nimport { MessageService } from './../../services/message.service';\r\nimport { DataServiceLib } from './../../services/data.service';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { AppConfig, Profile } from '../../classes/Classes';\r\nimport { Router } from '@angular/router';\r\nimport { HttpService } from '../../services/http.service';\r\nimport { ApiResponse } from '../../classes/TinCore';\r\n\r\n@Component({\r\n selector: 'spa-profile',\r\n templateUrl: './profile.component.html',\r\n styleUrls: ['./profile.component.css']\r\n})\r\nexport class ProfileComponent implements OnInit {\r\n\r\n constructor(public dataService: DataServiceLib, private messageService: MessageService, private httpService: HttpService, private router: Router, private authService: AuthService) { }\r\n\r\n ngOnInit() {\r\n\r\n this.myRole = this.authService.currentRoleSource.value\r\n\r\n if (this.dataService.tmpProfileuserName==\"\"){\r\n this.loadProfile(this.authService.currentUser);\r\n\r\n }else{\r\n this.loadProfile(this.dataService.tmpProfileuserName);\r\n this.dataService.tmpProfileuserName = \"\";\r\n }\r\n\r\n }\r\n\r\n isProcessing: boolean;\r\n myRole;\r\n @Input() appConfig = new AppConfig();\r\n\r\n\r\n selfProfile : boolean = false;\r\n\r\n profile = new Profile();\r\n roles;\r\n approvalRoles;\r\n employees;\r\n\r\n\r\n loadProfile(userName: string){\r\n\r\n let action = \"all\";\r\n\r\n this.dataService.GetUserByID(userName).subscribe(\r\n (apiResponse: ApiResponse) => {\r\n\r\n this.profile = apiResponse[0];\r\n\r\n if (this.profile.userName.toLocaleLowerCase() == this.authService.currentUser.toLocaleLowerCase()){\r\n this.selfProfile = true\r\n }\r\n this.loadRoles()\r\n console.log(this.profile)\r\n },\r\n (error) => {\r\n this.isProcessing = false;\r\n this.messageService.toast(this.httpService.Error(error));\r\n }\r\n );\r\n }\r\n\r\n loadRoles(){\r\n\r\n this.dataService.GetRole(\"all\", \"\").subscribe(\r\n (apiResponse: ApiResponse) => {\r\n this.roles = apiResponse;\r\n console.log(this.roles)\r\n },\r\n (error) => {\r\n this.isProcessing = false;\r\n this.messageService.toast(this.httpService.Error(error));\r\n }\r\n );\r\n\r\n }\r\n\r\n changePassword(){\r\n this.dataService.tmpProfileuserName = this.profile.userName;\r\n this.router.navigate([\"home/user/change-password\"]);\r\n }\r\n\r\n gotoUsers(){\r\n this.router.navigate([\"home/admin/users\"]);\r\n }\r\n\r\n update(){\r\n\r\n }\r\n\r\n updateProfile(){\r\n this.isProcessing = true;\r\n\r\n // console.log(this.profile)\r\n // return\r\n this.dataService.UpdateUser(this.profile).subscribe(\r\n (apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"Profile Updated\");\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n },\r\n (error) => {\r\n this.messageService.toast(\"Connection failed \");\r\n this.isProcessing = false;\r\n }\r\n );\r\n }\r\n\r\n}\r\n","import { SpaMatModule } from \"./spa-mat.module\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { ChangePasswordComponent } from \"../components/change-password/change-password.component\";\r\nimport { ProfileComponent } from \"../components/profile/profile.component\";\r\nimport { TinSpaModule } from \"../tin-spa.module\";\r\n\r\n@NgModule({\r\n declarations: [ChangePasswordComponent, ProfileComponent],\r\n\r\n entryComponents: [],\r\n\r\n imports: [\r\n ReactiveFormsModule.withConfig({ warnOnNgModelWithFormControl: \"never\" }),\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SpaMatModule,\r\n TinSpaModule\r\n ],\r\n\r\n exports: [\r\n CommonModule,\r\n FormsModule,\r\n SpaMatModule,\r\n ChangePasswordComponent,\r\n ProfileComponent,\r\n ],\r\n})\r\nexport class SpaUserModule {}\r\n","<h4>Settings</h4>\r\n<hr>\r\n\r\n<div class=\"container\">\r\n\r\n <div class=\"row justify-content-between\" style=\"padding-bottom: 10px;padding-left:10px\">\r\n\r\n <div class=\"col-2\">\r\n <!-- <button mat-raised-button (click)=\"addSetting()\">New Setting</button> -->\r\n </div>\r\n <div class=\"col-2\">\r\n <button mat-raised-button (click)=\"loadSettings()\">Refresh</button>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"row mt-1 mb-1\" style=\"margin-left:10px\" *ngFor=\"let setting of settings\">\r\n\r\n <mat-form-field style=\"width: 500px; font-size: 14px;\">\r\n <mat-label>{{setting.sName}}</mat-label>\r\n <input matInput autocomplete=\"off\" [(ngModel)]=\"setting.sValue\" >\r\n </mat-form-field>\r\n\r\n <button mat-mini-fab color=\"primary\" (click)=\"updateSetting(setting)\" style=\"margin-right:150px;\"><mat-icon>done_all</mat-icon></button>\r\n\r\n <mat-label style=\"font-size: small;\">Last Updated by {{setting.updatedBy}} on {{setting.updatedDate | date: 'dd MMM yy HH:mm'}}</mat-label>\r\n\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/data.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { ApiResponse } from '../../classes/TinCore';\r\n// import { ApiResponse } from 'tin-core';\r\n\r\n@Component({\r\n selector: 'spa-settings',\r\n templateUrl: './settings.component.html',\r\n styleUrls: ['./settings.component.css']\r\n})\r\nexport class SettingsComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private messageService: MessageService) { }\r\n\r\n ngOnInit(): void {\r\n this.loadSettings();\r\n }\r\n\r\n _filterText = \"\";\r\n settings;\r\n isProcessing = false;\r\n\r\n applyFilter(filterValue: string) {\r\n this.settings.filter = filterValue.trim().toLowerCase();\r\n }\r\n\r\n loadSettings(){\r\n this.dataService.GetSetting(\"all\", \"\").subscribe((apiResponse) => {\r\n this.settings = apiResponse;\r\n }\r\n );\r\n\r\n }\r\n\r\n updateSetting(setting) {\r\n\r\n this.isProcessing = true;\r\n this.dataService.UpdateSetting(setting, \"edit\").subscribe((apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(`Setting ${setting.sName} Updated`);\r\n this.loadSettings();\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n\r\n });\r\n\r\n };\r\n\r\n addSetting() {\r\n\r\n // const dialogRef = this.dialog.open(addRoleDialog, {\r\n // width: \"1100px\",\r\n // data: \"\",\r\n // });\r\n\r\n // dialogRef.afterClosed().subscribe((result) => {\r\n // if (result == \"success\") {\r\n // this.loadRoles();\r\n // }\r\n // });\r\n this.messageService.toast(\"Feature not Available\");\r\n\r\n }\r\n\r\n}\r\n","<h4>Logs</h4>\r\n<hr />\r\n\r\n<div class=\"container-fluid\">\r\n\r\n <div class=\"row justify-content-between\" style=\"padding-bottom: 10px\">\r\n\r\n <div class=\"col-2\">\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end\">\r\n <spa-filter [data]=\"logs\" (refreshClick)=\"loadLogs()\"></spa-filter>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <p *ngIf=\"!logs\"><em>Loading...</em></p>\r\n\r\n\r\n <div class=\"mat-elevation-z8\" *ngIf=\"logs\">\r\n\r\n <table id=\"tblTable\" mat-table [dataSource]=\"logs\">\r\n\r\n\r\n <ng-container matColumnDef=\"userName\">\r\n <th mat-header-cell *matHeaderCellDef> User </th>\r\n <td mat-cell *matCellDef=\"let log\"> {{log.userName}} </td>\r\n </ng-container>\r\n\r\n\r\n <ng-container matColumnDef=\"dateLogged\">\r\n <th mat-header-cell *matHeaderCellDef class=\"datetime\"> Date Logged </th>\r\n <td mat-cell *matCellDef=\"let log\"> {{log.dateLogged | date: 'dd MMM yy HH:mm:ss'}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"source\">\r\n <th mat-header-cell *matHeaderCellDef> Source </th>\r\n <td mat-cell *matCellDef=\"let log\"> {{log.source}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"details\">\r\n <th mat-header-cell *matHeaderCellDef> Details </th>\r\n <td mat-cell *matCellDef=\"let log\"> {{log.details}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"fullName\">\r\n <th mat-header-cell *matHeaderCellDef> Name </th>\r\n <td mat-cell *matCellDef=\"let log\">{{log.user.firstName}} {{log.user.lastName}}</td>\r\n </ng-container>\r\n\r\n\r\n\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\r\n\r\n\r\n </table>\r\n\r\n </div>\r\n\r\n <mat-paginator #logsPaginator [pageSizeOptions]=\"[50, 100, 200]\" showFirstLastButtons></mat-paginator>\r\n</div>\r\n\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { DataServiceLib } from \"../../services/data.service\";\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-logs',\r\n templateUrl: './logs.component.html',\r\n styleUrls: ['./logs.component.css']\r\n})\r\nexport class LogsComponent implements OnInit {\r\n constructor(private authService: AuthService, private dataService: DataServiceLib,) { }\r\n\r\n ngOnInit() {\r\n this.authService.isAuthorised(this.dataService.capLogs.name);\r\n this.loadLogs();\r\n }\r\n\r\n isProcessing: boolean = false;\r\n @ViewChild(\"logsPaginator\") logsPaginator: MatPaginator;\r\n\r\n\r\n logs;\r\n\r\n displayedColumns: string[] = [\"dateLogged\", \"userName\", \"fullName\", \"source\", \"details\"];\r\n\r\n public loadLogs() {\r\n this.dataService.GetLog(\"all\", \"\").subscribe((apiResponse) => {\r\n\r\n this.logs = new MatTableDataSource(apiResponse);\r\n this.logs.paginator = this.logsPaginator;\r\n\r\n }\r\n );\r\n }\r\n\r\n}\r\n","\r\n<h4>Users</h4>\r\n<hr />\r\n\r\n<div class=\"container\">\r\n\r\n <div class=\"row justify-content-between\" style=\"padding-bottom: 10px\">\r\n <div class=\"col-2\">\r\n <button id=\"btnCreateAccount\" mat-raised-button color=\"primary\" (click)=\"createAccount()\">Create Account</button>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end\">\r\n <spa-filter [data]=\"users\" (refreshClick)=\"UpdateData()\"></spa-filter>\r\n </div>\r\n </div>\r\n\r\n\r\n <p *ngIf=\"!users\"><em>Loading...</em></p>\r\n\r\n\r\n <div class=\"mat-elevation-z8\" *ngIf=\"users\">\r\n\r\n <table id=\"tblTable\" mat-table [dataSource]=\"users\">\r\n\r\n <ng-container matColumnDef=\"userName\">\r\n <th mat-header-cell *matHeaderCellDef> userName </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.userName}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"locked\">\r\n <th mat-header-cell *matHeaderCellDef> Locked </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.locked}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"fullName\">\r\n <th mat-header-cell *matHeaderCellDef> Name </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.firstName}} {{user.lastName}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"roleName\">\r\n <th mat-header-cell *matHeaderCellDef> Role </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.role.roleName}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"disabled\">\r\n <th mat-header-cell *matHeaderCellDef> Disabled </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.disabled}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"dateCreated\">\r\n <th mat-header-cell *matHeaderCellDef> Created </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.createdDate | date: 'dd/MM/yyyy'}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"dateUpdated\">\r\n <th mat-header-cell *matHeaderCellDef> Updated </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.updatedDate | date: 'dd/MM/yyyy'}} </td>\r\n </ng-container>\r\n\r\n\r\n <ng-container matColumnDef=\"Action\">\r\n <th mat-header-cell *matHeaderCellDef> Action </th>\r\n <td mat-cell *matCellDef=\"let user\" style=\"width: 250px;\">\r\n\r\n <button mat-mini-fab color=\"primary\" (click)=\"viewProfile(user)\" style=\"margin-right:30px\" matTooltip=\"View Profile\" matTooltipPosition=\"above\"> <mat-icon>account_circle</mat-icon></button>\r\n\r\n <button *ngIf=\"user.locked=='0'\" mat-mini-fab color=\"warn\" (click)=\"lock(user)\" style=\"margin-right:10px\" matTooltip=\"Lock\" matTooltipPosition=\"above\"> <mat-icon>lock</mat-icon></button>\r\n <button *ngIf=\"user.locked=='1'\" mat-mini-fab (click)=\"unlock(user)\" style=\"margin-right:10px; background-color: green;\" matTooltip=\"Unlock\" matTooltipPosition=\"above\"> <mat-icon >lock_open</mat-icon></button>\r\n\r\n <!-- <button *ngIf=\"user.disabled=='0'\" mat-mini-fab color=\"warn\" (click)=\"disable(user)\" style=\"margin-right:10px\" matTooltip=\"Disable\" matTooltipPosition=\"above\"> <mat-icon>block</mat-icon></button>\r\n <button *ngIf=\"user.disabled=='1'\" mat-mini-fab (click)=\"enable(user)\" style=\"margin-right:10px; background-color: green\" matTooltip=\"Enable\" matTooltipPosition=\"above\"> <mat-icon>done</mat-icon></button> -->\r\n\r\n <button mat-mini-fab color=\"warn\" (click)=\"deleteUser(user)\" style=\"margin-right:10px\" matTooltip=\"Delete\" matTooltipPosition=\"above\"> <mat-icon>delete</mat-icon></button>\r\n <!-- <button mat-mini-fab color=\"primary\" (click)=\"recover(user)\" style=\"margin-right:10px\" matTooltip=\"Reset Password\" matTooltipPosition=\"above\"> <mat-icon>vpn_key</mat-icon></button> -->\r\n\r\n\r\n\r\n </td>\r\n </ng-container>\r\n\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\" [ngClass]=\"{'make-gray': row.disabled =='1'}\"></tr>\r\n\r\n </table>\r\n\r\n </div>\r\n\r\n <mat-paginator #usersPaginator [pageSizeOptions]=\"[10, 20, 50]\" showFirstLastButtons></mat-paginator>\r\n</div>\r\n","import { Component, OnInit, Inject, ViewChild } from \"@angular/core\";\r\nimport { MatTableDataSource } from \"@angular/material/table\";\r\nimport { MatPaginator } from \"@angular/material/paginator\";\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from \"@angular/material/dialog\";\r\nimport { DataServiceLib } from \"../../services/data.service\";\r\nimport { Router } from \"@angular/router\";\r\nimport { MessageService } from \"../../services/message.service\";\r\nimport { AuthService } from \"../../services/auth.service\";\r\nimport { User } from '../../classes/Classes';\r\nimport { HttpService } from \"../../services/http.service\";\r\nimport { ApiResponse } from \"../../classes/TinCore\";\r\n\r\n@Component({\r\n selector: \"spa-users\",\r\n templateUrl: \"./users.component.html\",\r\n styleUrls: [\"./users.component.css\"],\r\n})\r\nexport class UsersComponent implements OnInit {\r\n constructor(private httpService: HttpService, public router: Router, private authService: AuthService, private dataService: DataServiceLib, public dialog: MatDialog, private messageService: MessageService) { }\r\n\r\n ngOnInit() {\r\n this.authService.isAuthorised(this.dataService.capUsers.name);\r\n this.UpdateData();\r\n }\r\n\r\n isProcessing: boolean = false;\r\n @ViewChild(\"usersPaginator\") usersPaginator: MatPaginator;\r\n\r\n _filterText = \"\";\r\n\r\n users;\r\n displayedColumns: string[] = [\"userName\", \"fullName\", \"roleName\", \"locked\", \"dateCreated\", \"Action\"];\r\n\r\n public UpdateData() {\r\n this.dataService.GetUser().subscribe(\r\n (apiResponse) => {\r\n\r\n this.users = new MatTableDataSource(apiResponse);\r\n this.users.paginator = this.usersPaginator;\r\n this.applyFilter(this._filterText);\r\n\r\n },\r\n (error) => {\r\n this.isProcessing = false;\r\n this.messageService.toast(this.httpService.Error(error));\r\n }\r\n );\r\n }\r\n\r\n applyFilter(filterValue: string) {\r\n this.users.filter = filterValue.trim().toLowerCase();\r\n }\r\n\r\n createAccount() {\r\n this.router.navigate([\"home/admin/create-account\"]);\r\n }\r\n\r\n viewProfile(user: User) {\r\n\r\n this.dataService.tmpProfileuserName = user.userName;\r\n this.router.navigate([\"home/user/profile\"]);\r\n\r\n }\r\n\r\n lock(u) {\r\n let login = { userName: u.userName, password: \"Abcdef@123\" }\r\n\r\n this.dataService.LockUser(login).subscribe((apiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"User Locked\");\r\n this.UpdateData();\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse);\r\n }\r\n });\r\n }\r\n\r\n unlock(u) {\r\n let login = { userName: u.userName, password: \"Abcdef@123\" }\r\n\r\n this.dataService.UnlockUser(login).subscribe((apiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"User Unlocked\");\r\n this.UpdateData();\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse);\r\n }\r\n });\r\n }\r\n\r\n recover(u: User) {\r\n this.dataService.SelfReset(u).subscribe((apiResponse: ApiResponse) => {\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"The password has been sent on email\");\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n });\r\n\r\n }\r\n\r\n deleteUser(user: User) {\r\n\r\n this.messageService.confirm(`Delete ${user.userName} ?`).subscribe((result) => {\r\n\r\n if (result == \"yes\") {\r\n\r\n this.isProcessing = true;\r\n this.dataService.DeleteUser(user).subscribe(\r\n (apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"User Deleted\");\r\n\r\n this.UpdateData();\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n },\r\n (error) => {\r\n this.messageService.toast(\"Connection failed \");\r\n this.isProcessing = false;\r\n }\r\n );\r\n\r\n }\r\n })\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n","<mat-form-field>\r\n <mat-label>Role Name</mat-label>\r\n <input matInput autocomplete=\"off\" [(ngModel)]=\"role.roleName\" placeholder=\"Enter Role Name\" />\r\n</mat-form-field>\r\n\r\n<mat-dialog-content class=\"mat-typography\">\r\n\r\n <div class=\"row\" >\r\n\r\n <!-- <div class=\" col-4\">\r\n\r\n <div class=\"row\">\r\n <mat-checkbox color=\"primary\" style=\"margin-right:20px; font-size:14px\" [(ngModel)]=\"role.cap1\">Admin</mat-checkbox>\r\n </div>\r\n\r\n </div> -->\r\n\r\n <div class=\"row\" style=\"margin-left: 2em;margin-right: 2em;\">\r\n\r\n <div class=\"row\" style=\"margin-left: 2em;\" *ngFor=\"let capItem of capItems\">\r\n\r\n <mat-checkbox color=\"primary\" style=\"margin-right:20px; font-size:12px; width: 200px;\" [(ngModel)]=\"role[capItem.name]\">{{capItem.display}}</mat-checkbox>\r\n\r\n <div *ngFor=\"let capSubItem of capItem.capSubItems\">\r\n\r\n <mat-checkbox color=\"primary\" style=\"margin-right:20px; font-size:12px; width: 200px;\" [(ngModel)]=\"role[capSubItem.name]\">{{capSubItem.display}}</mat-checkbox>\r\n\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n\r\n </div>\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 mat-dialog-close=\"success\">Cancel</button>\r\n</mat-dialog-actions>\r\n","import { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatDialog, MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { DataServiceLib } from '../../services/data.service';\r\n// import { AuthService } from '../../services/auth.service';\r\n// import { ApiResponse, Core } from 'tin-core';\r\nimport { Role } from '../../classes/Classes';\r\nimport { ApiResponse } from '../../classes/TinCore';\r\n\r\n@Component({\r\n selector: 'app-addRole',\r\n templateUrl: './addRoleDialog.component.html',\r\n styleUrls: ['./roles.component.css']\r\n})\r\nexport class addRoleDialog implements OnInit {\r\n\r\n constructor(private messageService: MessageService, private dataService: DataServiceLib, private authService: AuthService, private dialogRef: MatDialogRef<addRoleDialog>, @Inject(MAT_DIALOG_DATA) public data) { }\r\n ngOnInit() {\r\n this.capItems = this.data;\r\n }\r\n\r\n capItems;\r\n\r\n isProcessing: boolean;\r\n role = new Role();\r\n\r\n submit() {\r\n\r\n if (this.role.roleName == \"New Role\" || this.role.roleName == \"\"){\r\n this.messageService.toast(\"Please enter Role Name\");\r\n return;\r\n }\r\n\r\n\r\n this.isProcessing = true;\r\n this.dataService.PostRole(this.role,\"add\").subscribe((apiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"Role Added\");\r\n this.dialogRef.close(\"success\");\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n\r\n\r\n }, error => {\r\n this.messageService.toast(\"Connection failed\");\r\n this.isProcessing = false;\r\n });\r\n\r\n };\r\n};\r\n\r\n\r\n\r\n","<h4> Roles </h4>\r\n<hr />\r\n\r\n<div class=\"container mb-5\">\r\n\r\n <div class=\"row justify-content-between\" style=\"padding-bottom: 10px;padding-left:10px\">\r\n <div class=\"col-2\">\r\n\r\n <button id=\"btnNewRole\" mat-raised-button color=\"primary\" (click)=\"addRole()\">New Role</button>\r\n </div>\r\n <div class=\"col-1\">\r\n\r\n <button id=\"btnRefresh\" mat-mini-fab color=\"primary\" (click)=\"refresh()\" style=\"margin-right:1em;margin-top:5px\" matTooltip=\"refresh data\" matTooltipPosition=\"right\"><mat-icon class=\"refreshIcon\">refresh</mat-icon></button>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"row mt-2 mb-1\" style=\"margin-left:10px\" *ngFor=\"let role of roles\">\r\n\r\n <mat-card class=\"mat-elevation-z8\" style=\"width:100%;padding-left:2em\">\r\n\r\n <h4>{{role.roleName}}</h4>\r\n <hr />\r\n\r\n <div class=\"row\" style=\"margin-left: 2em;\">\r\n\r\n\r\n <div class=\"row\" style=\"margin-right:20px;\" *ngFor=\"let capItem of appConfig.capItems\">\r\n\r\n <mat-checkbox color=\"primary\" style=\" font-size:12px; width: 200px;\" [(ngModel)]=\"role[capItem.name]\">{{capItem.display}}</mat-checkbox>\r\n\r\n <div class=\"row\" style=\"margin-right:20px;margin-left: 0px; \" *ngFor=\"let capSubItem of capItem.capSubItems\">\r\n\r\n <mat-checkbox color=\"primary\" style=\" font-size:12px; width: 200px;\" [(ngModel)]=\"role[capSubItem.name]\">{{capSubItem.display}}</mat-checkbox>\r\n\r\n <div class=\"row\" style=\"margin-right:20px;margin-left: 0px;\" *ngFor=\"let capSubSubItem of capSubItem.capSubItems\">\r\n\r\n <mat-checkbox color=\"primary\" style=\"font-size:12px; width: 200px;\" [(ngModel)]=\"role[capSubSubItem.name]\">{{capSubSubItem.display}}</mat-checkbox>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <mat-card-actions>\r\n\r\n <button mat-mini-fab color=\"primary\" (click)=\"updateRole(role)\" style=\"margin-right:10px;\">\r\n <mat-icon>done_all</mat-icon>\r\n </button>\r\n\r\n <!-- <button mat-mini-fab color=\"warn\" (click)=\"editRole(role)\" style=\"margin-right:10px\">\r\n <mat-icon>edit</mat-icon>\r\n </button> -->\r\n\r\n <button mat-mini-fab color=\"warn\" (click)=\"deleteRole(role)\" style=\"margin-right:10px\">\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n\r\n </mat-card-actions>\r\n\r\n </mat-card>\r\n\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n","import { AppConfig } from './../../classes/Classes';\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { MatDialog } from \"@angular/material/dialog\";\r\nimport { DataServiceLib } from \"../../services/data.service\";\r\nimport { Role, CapItem } from \"../../classes/Classes\";\r\nimport { addRoleDialog } from \"./addRoleDialog.component\";\r\nimport { Router } from \"@angular/router\";\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { HttpService } from '../../services/http.service';\r\n\r\n\r\n@Component({\r\n selector: \"spa-roles\",\r\n templateUrl: \"./roles.component.html\",\r\n styleUrls: [\"./roles.component.css\"],\r\n})\r\nexport class RolesComponent implements OnInit {\r\n constructor(private httpService: HttpService, private router: Router, private authService: AuthService, private dataService: DataServiceLib, public dialog: MatDialog, private messageService: MessageService) { }\r\n\r\n ngOnInit() {\r\n this.authService.isAuthorised(this.dataService.capRoles.name);\r\n this.loadRoles();\r\n this.dataService.appConfigObserv.subscribe(x => this.appConfig = x);\r\n }\r\n\r\n isProcessing = false;\r\n roles: Role[];\r\n\r\n appConfig = new AppConfig();\r\n\r\n loadRoles() {\r\n this.dataService.GetRole(\"all\", \"\").subscribe((apiResponse) => {\r\n this.roles = apiResponse;\r\n });\r\n }\r\n\r\n refresh() {\r\n this.loadRoles();\r\n }\r\n\r\n addRole() {\r\n const dialogRef = this.dialog.open(addRoleDialog, {\r\n width: \"1100px\",\r\n data: this.appConfig.capItems,\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n if (result == \"success\") {\r\n this.loadRoles();\r\n }\r\n });\r\n }\r\n\r\n updateRole(role: Role) {\r\n\r\n this.messageService.confirm(`UPDATE ${role.roleName} ?`).subscribe((result) => {\r\n\r\n if (result == \"yes\") {\r\n\r\n this.dataService.PostRole(role, \"edit\").subscribe((apiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"Role Updated\");\r\n this.loadRoles();\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse);\r\n }\r\n });\r\n\r\n }\r\n\r\n })\r\n\r\n\r\n };\r\n\r\n deleteRole(role: Role) {\r\n\r\n this.messageService.confirm(`DELETE ${role.roleName} ?`).subscribe((result) => {\r\n\r\n if (result == \"yes\") {\r\n\r\n this.dataService.PostRole(role, \"delete\").subscribe((apiResponse) => {\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"Role Deleted\");\r\n this.loadRoles();\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse);\r\n }\r\n });\r\n\r\n }\r\n\r\n })\r\n\r\n }\r\n}\r\n","<h4>Create Account</h4>\r\n\r\n<hr/>\r\n\r\n<div class=\"container\">\r\n\r\n <div class=\"tin-input\" style=\"font-size:14px; width: 70%;\">\r\n\r\n\r\n <div class=\"tin-input-row\">\r\n\r\n <div class=\"col\">\r\n <spa-text id=\"txtFirstName\" display=\"FirstName\" [(value)]=\"register.firstName\"></spa-text>\r\n </div>\r\n\r\n <div class=\"col\">\r\n <spa-text id=\"txtLastName\" display=\"LastName\" [(value)]=\"register.lastName\"></spa-text>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"tin-input-row mt-3\">\r\n\r\n <div class=\"col\">\r\n <spa-text id=\"txtUserName\" display=\"Username\" [(value)]=\"register.userName\"></spa-text>\r\n </div>\r\n\r\n <div class=\"col\">\r\n <spa-select id=\"cboAuth\" display=\"Authentication Type\" [options]=\"authTypes\" optionDisplay=\"name\" optionValue=\"value\" [(value)]=\"register.authType\" ></spa-select>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"tin-input-row\" *ngIf=\"register.authType=='local'\">\r\n\r\n <div class=\"col\">\r\n <spa-text id=\"txtPassword\" display=\"Password\" [(value)]=\"register.password\" type=\"password\"></spa-text>\r\n </div>\r\n\r\n <div class=\"col\">\r\n <spa-text id=\"txtConfirmPassword\" display=\"Confirm Password\" [(value)]=\"confirmPassword\" type=\"password\"></spa-text>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"tin-input-row mt-3\" style=\"margin-left: 1em;\">\r\n <mat-checkbox id=\"cbkOpenAfter\" color=\"primary\" style=\"margin-right:100px; font-size:12px\" [(ngModel)]=\"openProfile\">Open profile after creation</mat-checkbox>\r\n </div>\r\n\r\n <div class=\"tin-input-row mt-3\">\r\n <button id=\"btnCreate\" [disabled]=\"register.authType ==''\" mat-raised-button color=\"primary\" (click)=\"create()\" cdkFocusInitial>Create</button>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n\r\n","import { DataServiceLib } from './../../services/data.service';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { Profile, AppConfig, Register } from '../../classes/Classes';\r\nimport { Router } from '@angular/router';\r\nimport { HttpService } from '../../services/http.service';\r\nimport { ApiResponse } from '../../classes/TinCore';\r\n\r\n@Component({\r\n selector: 'spa-create-account',\r\n templateUrl: './create-account.component.html',\r\n styleUrls: ['./create-account.component.css']\r\n})\r\nexport class CreateAccountComponent implements OnInit {\r\n\r\n constructor(private httpService: HttpService, private messageService: MessageService, private dataService: DataServiceLib, private authService: AuthService, public router: Router) { }\r\n\r\n ngOnInit() {\r\n this.appConfig = this.dataService.appConfig;\r\n }\r\n\r\n\r\n\r\n @Input() appConfig = new AppConfig();\r\n\r\n isProcessing: boolean = false;\r\n register = new Register();\r\n confirmPassword: string;\r\n openProfile: boolean = true;\r\n\r\n authTypes = [\r\n { name: \"Local Authentication\", value: \"local\" },\r\n { name: \"AD Authentication\", value: \"AD\" }\r\n ]\r\n\r\n\r\n create() {\r\n\r\n if (this.register.authType == \"\") {\r\n this.messageService.toast(\"Choose Authentication Type\");\r\n return;\r\n }\r\n\r\n\r\n this.isProcessing = true;\r\n this.dataService.RegisterAccount(this.register).subscribe((apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"Account Created\");\r\n\r\n if (this.openProfile) {\r\n this.viewProfile(this.register.userName);\r\n } else {\r\n // this.user = new User();\r\n this.register = new Register();\r\n this.confirmPassword = \"\";\r\n }\r\n\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n },\r\n (error) => {\r\n this.isProcessing = false;\r\n this.messageService.toast(this.httpService.Error(error));\r\n }\r\n );\r\n }\r\n\r\n viewProfile(userName: string) {\r\n\r\n this.dataService.tmpProfileuserName = userName;\r\n this.router.navigate([\"home/user/profile\"]);\r\n\r\n }\r\n\r\n}\r\n","import { SettingsComponent } from '../components/settings/settings.component';\r\nimport { LogsComponent } from '../components/logs/logs.component';\r\nimport { SpaMatModule } from \"./spa-mat.module\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { UsersComponent } from \"../components/users/users.component\";\r\nimport { RolesComponent } from \"../components/roles/roles.component\";\r\nimport { addRoleDialog } from \"../components/roles/addRoleDialog.component\";\r\nimport { CreateAccountComponent } from \"../components/create-account/create-account.component\";\r\nimport { TinSpaModule } from '../tin-spa.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n UsersComponent,\r\n RolesComponent,\r\n addRoleDialog,\r\n CreateAccountComponent,\r\n LogsComponent,\r\n SettingsComponent\r\n ],\r\n\r\n entryComponents: [\r\n addRoleDialog,\r\n ],\r\n\r\n imports: [\r\n ReactiveFormsModule.withConfig({ warnOnNgModelWithFormControl: \"never\" }),\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SpaMatModule,\r\n TinSpaModule\r\n ],\r\n\r\n exports: [\r\n CommonModule,\r\n FormsModule,\r\n SpaMatModule,\r\n UsersComponent,\r\n RolesComponent,\r\n addRoleDialog,\r\n CreateAccountComponent,\r\n LogsComponent,\r\n SettingsComponent\r\n ],\r\n})\r\nexport class SpaAdminModule {}\r\n"]}