tin-spa 2.13.15 → 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 (375) hide show
  1. package/README.md +2 -2
  2. package/bundles/tin-spa.umd.js +6694 -0
  3. package/bundles/tin-spa.umd.js.map +1 -0
  4. package/bundles/tin-spa.umd.min.js +16 -0
  5. package/bundles/tin-spa.umd.min.js.map +1 -0
  6. package/esm2015/lib/classes/Classes.js +254 -0
  7. package/esm2015/lib/classes/TinCore.js +137 -0
  8. package/esm2015/lib/components/activity/activity.component.js +92 -0
  9. package/esm2015/lib/components/attach/attach.component.js +181 -0
  10. package/esm2015/lib/components/change-password/change-password.component.js +179 -0
  11. package/esm2015/lib/components/check/check.component.js +69 -0
  12. package/esm2015/lib/components/chips/chips.component.js +107 -0
  13. package/esm2015/lib/components/create-account/create-account.component.js +160 -0
  14. package/esm2015/lib/components/date/date.component.js +66 -0
  15. package/esm2015/lib/components/datetime/datetime.component.js +57 -0
  16. package/esm2015/lib/components/filter/filter.component.js +64 -0
  17. package/esm2015/lib/components/html/html.component.js +102 -0
  18. package/esm2015/lib/components/label/label.component.js +117 -0
  19. package/esm2015/lib/components/loader/loader.component.js +53 -0
  20. package/esm2015/lib/components/login/login.component.js +240 -0
  21. package/esm2015/lib/components/logs/logs.component.js +195 -0
  22. package/esm2015/lib/components/message/messageDialog.component.js +142 -0
  23. package/esm2015/lib/components/money/currency-input-mask.directive.js +187 -0
  24. package/esm2015/lib/components/money/currency-input-mask.module.js +30 -0
  25. package/esm2015/lib/components/money/money.component.js +152 -0
  26. package/esm2015/lib/components/nav-menu/nav-menu.component.js +204 -0
  27. package/esm2015/lib/components/option/option.component.js +129 -0
  28. package/esm2015/lib/components/profile/profile.component.js +198 -0
  29. package/esm2015/lib/components/recover-account/recover-account.component.js +74 -0
  30. package/esm2015/lib/components/roles/addRoleDialog.component.js +132 -0
  31. package/esm2015/lib/components/roles/roles.component.js +211 -0
  32. package/esm2015/lib/components/select/select.component.js +133 -0
  33. package/esm2015/lib/components/settings/settings.component.js +118 -0
  34. package/esm2015/lib/components/signup/signup.component.js +139 -0
  35. package/esm2015/lib/components/steps/steps.component.js +114 -0
  36. package/esm2015/lib/components/table/table.component.js +375 -0
  37. package/esm2015/lib/components/text/text.component.js +240 -0
  38. package/esm2015/lib/components/tiles/tiles.component.js +95 -0
  39. package/esm2015/lib/components/timeout/timeout.component.js +133 -0
  40. package/esm2015/lib/components/tin-spa.component.js +26 -0
  41. package/esm2015/lib/components/users/users.component.js +373 -0
  42. package/esm2015/lib/components/viewer/viewer.component.js +92 -0
  43. package/esm2015/lib/components/viewer/viewerDialog.component.js +131 -0
  44. package/esm2015/lib/dnd.directive.js +56 -0
  45. package/esm2015/lib/modules/spa-admin.module.js +81 -0
  46. package/esm2015/lib/modules/spa-index.module.js +58 -0
  47. package/esm2015/lib/modules/spa-mat.module.js +68 -0
  48. package/esm2015/lib/modules/spa-user.module.js +55 -0
  49. package/esm2015/lib/services/auth.service.js +142 -0
  50. package/esm2015/lib/services/data.service.js +111 -0
  51. package/esm2015/lib/services/export.service.js +29 -0
  52. package/esm2015/lib/services/http.service.js +79 -0
  53. package/esm2015/lib/services/loader-interceptor.service.js +77 -0
  54. package/esm2015/lib/services/loader.service.js +17 -0
  55. package/esm2015/lib/services/log.service.js +76 -0
  56. package/esm2015/lib/services/message.service.js +52 -0
  57. package/esm2015/lib/services/storage.service.js +43 -0
  58. package/esm2015/lib/services/tin-spa.service.js +14 -0
  59. package/esm2015/lib/tin-spa.module.js +156 -0
  60. package/esm2015/public-api.js +56 -0
  61. package/esm2015/tin-spa.js +5 -0
  62. package/esm5/lib/classes/Classes.js +313 -0
  63. package/esm5/lib/classes/TinCore.js +164 -0
  64. package/esm5/lib/components/activity/activity.component.js +94 -0
  65. package/esm5/lib/components/attach/attach.component.js +195 -0
  66. package/esm5/lib/components/change-password/change-password.component.js +182 -0
  67. package/esm5/lib/components/check/check.component.js +71 -0
  68. package/esm5/lib/components/chips/chips.component.js +110 -0
  69. package/esm5/lib/components/create-account/create-account.component.js +163 -0
  70. package/esm5/lib/components/date/date.component.js +68 -0
  71. package/esm5/lib/components/datetime/datetime.component.js +59 -0
  72. package/esm5/lib/components/filter/filter.component.js +66 -0
  73. package/esm5/lib/components/html/html.component.js +104 -0
  74. package/esm5/lib/components/label/label.component.js +119 -0
  75. package/esm5/lib/components/loader/loader.component.js +56 -0
  76. package/esm5/lib/components/login/login.component.js +244 -0
  77. package/esm5/lib/components/logs/logs.component.js +198 -0
  78. package/esm5/lib/components/message/messageDialog.component.js +144 -0
  79. package/esm5/lib/components/money/currency-input-mask.directive.js +193 -0
  80. package/esm5/lib/components/money/currency-input-mask.module.js +34 -0
  81. package/esm5/lib/components/money/money.component.js +154 -0
  82. package/esm5/lib/components/nav-menu/nav-menu.component.js +207 -0
  83. package/esm5/lib/components/option/option.component.js +131 -0
  84. package/esm5/lib/components/profile/profile.component.js +203 -0
  85. package/esm5/lib/components/recover-account/recover-account.component.js +77 -0
  86. package/esm5/lib/components/roles/addRoleDialog.component.js +135 -0
  87. package/esm5/lib/components/roles/roles.component.js +218 -0
  88. package/esm5/lib/components/select/select.component.js +136 -0
  89. package/esm5/lib/components/settings/settings.component.js +122 -0
  90. package/esm5/lib/components/signup/signup.component.js +142 -0
  91. package/esm5/lib/components/steps/steps.component.js +128 -0
  92. package/esm5/lib/components/table/table.component.js +378 -0
  93. package/esm5/lib/components/text/text.component.js +244 -0
  94. package/esm5/lib/components/tiles/tiles.component.js +97 -0
  95. package/esm5/lib/components/timeout/timeout.component.js +136 -0
  96. package/esm5/lib/components/tin-spa.component.js +25 -0
  97. package/esm5/lib/components/users/users.component.js +380 -0
  98. package/esm5/lib/components/viewer/viewer.component.js +94 -0
  99. package/esm5/lib/components/viewer/viewerDialog.component.js +133 -0
  100. package/esm5/lib/dnd.directive.js +58 -0
  101. package/esm5/lib/modules/spa-admin.module.js +85 -0
  102. package/esm5/lib/modules/spa-index.module.js +62 -0
  103. package/esm5/lib/modules/spa-mat.module.js +72 -0
  104. package/esm5/lib/modules/spa-user.module.js +59 -0
  105. package/esm5/lib/services/auth.service.js +145 -0
  106. package/esm5/lib/services/data.service.js +113 -0
  107. package/esm5/lib/services/export.service.js +31 -0
  108. package/esm5/lib/services/http.service.js +81 -0
  109. package/esm5/lib/services/loader-interceptor.service.js +80 -0
  110. package/esm5/lib/services/loader.service.js +19 -0
  111. package/esm5/lib/services/log.service.js +114 -0
  112. package/esm5/lib/services/message.service.js +54 -0
  113. package/esm5/lib/services/storage.service.js +76 -0
  114. package/esm5/lib/services/tin-spa.service.js +17 -0
  115. package/esm5/lib/tin-spa.module.js +160 -0
  116. package/esm5/public-api.js +56 -0
  117. package/esm5/tin-spa.js +5 -0
  118. package/fesm2015/tin-spa.js +6204 -0
  119. package/fesm2015/tin-spa.js.map +1 -0
  120. package/fesm5/tin-spa.js +6453 -0
  121. package/fesm5/tin-spa.js.map +1 -0
  122. package/lib/classes/Classes.d.ts +228 -375
  123. package/lib/classes/TinCore.d.ts +11 -43
  124. package/lib/components/activity/activity.component.d.ts +2 -2
  125. package/lib/components/attach/attach.component.d.ts +27 -15
  126. package/lib/{pages → components}/change-password/change-password.component.d.ts +4 -4
  127. package/lib/components/check/check.component.d.ts +3 -8
  128. package/lib/components/chips/chips.component.d.ts +2 -2
  129. package/lib/{pages → components}/create-account/create-account.component.d.ts +4 -8
  130. package/lib/components/date/date.component.d.ts +12 -24
  131. package/lib/components/datetime/datetime.component.d.ts +2 -6
  132. package/lib/components/filter/filter.component.d.ts +2 -7
  133. package/lib/components/html/html.component.d.ts +10 -11
  134. package/lib/components/label/label.component.d.ts +2 -4
  135. package/lib/components/loader/loader.component.d.ts +2 -2
  136. package/lib/components/login/login.component.d.ts +32 -0
  137. package/lib/components/logs/logs.component.d.ts +18 -0
  138. package/lib/components/message/messageDialog.component.d.ts +2 -2
  139. package/lib/components/money/currency-input-mask.directive.d.ts +2 -2
  140. package/lib/components/money/currency-input-mask.module.d.ts +2 -3
  141. package/lib/components/money/money.component.d.ts +3 -13
  142. package/lib/components/nav-menu/nav-menu.component.d.ts +4 -22
  143. package/lib/components/option/option.component.d.ts +3 -14
  144. package/lib/{pages → components}/profile/profile.component.d.ts +4 -6
  145. package/lib/{pages → components}/recover-account/recover-account.component.d.ts +3 -3
  146. package/lib/components/roles/addRoleDialog.component.d.ts +22 -0
  147. package/lib/components/roles/roles.component.d.ts +30 -0
  148. package/lib/components/select/select.component.d.ts +20 -20
  149. package/lib/{pages → components}/settings/settings.component.d.ts +3 -3
  150. package/lib/{pages → components}/signup/signup.component.d.ts +4 -4
  151. package/lib/components/steps/steps.component.d.ts +10 -19
  152. package/lib/components/table/table.component.d.ts +21 -84
  153. package/lib/components/text/text.component.d.ts +14 -36
  154. package/lib/components/tiles/tiles.component.d.ts +7 -21
  155. package/lib/components/timeout/timeout.component.d.ts +24 -0
  156. package/lib/components/tin-spa.component.d.ts +6 -3
  157. package/lib/{pages → components}/users/users.component.d.ts +18 -11
  158. package/lib/components/viewer/viewer.component.d.ts +5 -11
  159. package/lib/components/viewer/viewerDialog.component.d.ts +4 -6
  160. package/lib/dnd.directive.d.ts +11 -0
  161. package/lib/modules/spa-admin.module.d.ts +10 -10
  162. package/lib/modules/spa-index.module.d.ts +7 -8
  163. package/lib/modules/spa-mat.module.d.ts +2 -8
  164. package/lib/modules/spa-user.module.d.ts +6 -6
  165. package/lib/services/auth.service.d.ts +4 -16
  166. package/lib/services/data.service.d.ts +38 -0
  167. package/lib/services/export.service.d.ts +6 -2
  168. package/lib/services/http.service.d.ts +2 -2
  169. package/lib/services/loader-interceptor.service.d.ts +3 -4
  170. package/lib/services/loader.service.d.ts +2 -2
  171. package/lib/services/log.service.d.ts +3 -3
  172. package/lib/services/message.service.d.ts +3 -4
  173. package/lib/services/storage.service.d.ts +2 -2
  174. package/lib/services/tin-spa.service.d.ts +2 -2
  175. package/lib/tin-spa.module.d.ts +34 -83
  176. package/package.json +16 -24
  177. package/public-api.d.ts +16 -47
  178. package/esm2020/lib/classes/Classes.mjs +0 -112
  179. package/esm2020/lib/classes/LibClasses.mjs +0 -180
  180. package/esm2020/lib/classes/TinCore.mjs +0 -568
  181. package/esm2020/lib/components/activity/activity.component.mjs +0 -24
  182. package/esm2020/lib/components/alert/alert.component.mjs +0 -43
  183. package/esm2020/lib/components/attach/attach.component.mjs +0 -102
  184. package/esm2020/lib/components/capsules/capsules.component.mjs +0 -63
  185. package/esm2020/lib/components/cards/cards.component.mjs +0 -103
  186. package/esm2020/lib/components/check/check.component.mjs +0 -67
  187. package/esm2020/lib/components/chips/chips.component.mjs +0 -58
  188. package/esm2020/lib/components/date/date.component.mjs +0 -103
  189. package/esm2020/lib/components/datetime/datetime.component.mjs +0 -55
  190. package/esm2020/lib/components/email/email.component.mjs +0 -133
  191. package/esm2020/lib/components/filter/filter.component.mjs +0 -58
  192. package/esm2020/lib/components/form/form.component.mjs +0 -296
  193. package/esm2020/lib/components/html/html.component.mjs +0 -34
  194. package/esm2020/lib/components/label/label.component.mjs +0 -31
  195. package/esm2020/lib/components/list-dialog/list-dialog.component.mjs +0 -68
  196. package/esm2020/lib/components/loader/loader.component.mjs +0 -25
  197. package/esm2020/lib/components/message/messageDialog.component.mjs +0 -33
  198. package/esm2020/lib/components/money/currency-input-mask.directive.mjs +0 -185
  199. package/esm2020/lib/components/money/currency-input-mask.module.mjs +0 -28
  200. package/esm2020/lib/components/money/money.component.mjs +0 -137
  201. package/esm2020/lib/components/multi-select/multi-select.component.mjs +0 -165
  202. package/esm2020/lib/components/multi-text/multi-text.component.mjs +0 -208
  203. package/esm2020/lib/components/nav-menu/nav-menu.component.mjs +0 -88
  204. package/esm2020/lib/components/notes/notes.component.mjs +0 -62
  205. package/esm2020/lib/components/number/number.component.mjs +0 -131
  206. package/esm2020/lib/components/option/option.component.mjs +0 -92
  207. package/esm2020/lib/components/page/page.component.mjs +0 -101
  208. package/esm2020/lib/components/search/search.component.mjs +0 -36
  209. package/esm2020/lib/components/select/select.component.mjs +0 -75
  210. package/esm2020/lib/components/select-bitwise/select-bitwise.component.mjs +0 -87
  211. package/esm2020/lib/components/select-common/select-common.component.mjs +0 -206
  212. package/esm2020/lib/components/select-internal/select-internal.component.mjs +0 -75
  213. package/esm2020/lib/components/select-lite/select-lite.component.mjs +0 -18
  214. package/esm2020/lib/components/statuses/statuses.component.mjs +0 -44
  215. package/esm2020/lib/components/steps/steps.component.mjs +0 -112
  216. package/esm2020/lib/components/suffix/suffix.component.mjs +0 -70
  217. package/esm2020/lib/components/table/detailsDialog.component.mjs +0 -406
  218. package/esm2020/lib/components/table/table.component.mjs +0 -440
  219. package/esm2020/lib/components/table-action/table-action.component.mjs +0 -80
  220. package/esm2020/lib/components/table-header/table-header.component.mjs +0 -148
  221. package/esm2020/lib/components/table-internal/detailsDialog-internal.component.mjs +0 -406
  222. package/esm2020/lib/components/table-internal/table-internal.component.mjs +0 -441
  223. package/esm2020/lib/components/table-lite/detailsDialog-lite.component.mjs +0 -404
  224. package/esm2020/lib/components/table-lite/table-lite.component.mjs +0 -441
  225. package/esm2020/lib/components/table-row/table-row.component.mjs +0 -93
  226. package/esm2020/lib/components/tabs/tabs.component.mjs +0 -74
  227. package/esm2020/lib/components/text/text.component.mjs +0 -255
  228. package/esm2020/lib/components/tiles/tiles.component.mjs +0 -99
  229. package/esm2020/lib/components/tin-spa.component.mjs +0 -19
  230. package/esm2020/lib/components/viewer/viewer.component.mjs +0 -83
  231. package/esm2020/lib/components/viewer/viewerDialog.component.mjs +0 -95
  232. package/esm2020/lib/modules/admin/admin-routing.module.mjs +0 -71
  233. package/esm2020/lib/modules/admin/admin.module.mjs +0 -26
  234. package/esm2020/lib/modules/index/index-routing.module.mjs +0 -27
  235. package/esm2020/lib/modules/index/index.module.mjs +0 -26
  236. package/esm2020/lib/modules/spa-admin.module.mjs +0 -71
  237. package/esm2020/lib/modules/spa-index.module.mjs +0 -54
  238. package/esm2020/lib/modules/spa-mat.module.mjs +0 -84
  239. package/esm2020/lib/modules/spa-user.module.mjs +0 -47
  240. package/esm2020/lib/modules/user/user-routing.module.mjs +0 -23
  241. package/esm2020/lib/modules/user/user.module.mjs +0 -26
  242. package/esm2020/lib/pages/accounts/accountDialog.component.mjs +0 -56
  243. package/esm2020/lib/pages/accounts/accounts.component.mjs +0 -70
  244. package/esm2020/lib/pages/app-models/app-models.component.mjs +0 -56
  245. package/esm2020/lib/pages/approvals/approvals.component.mjs +0 -19
  246. package/esm2020/lib/pages/approvals-config/approvals-config.component.mjs +0 -165
  247. package/esm2020/lib/pages/bug/bug.component.mjs +0 -14
  248. package/esm2020/lib/pages/change-password/change-password.component.mjs +0 -92
  249. package/esm2020/lib/pages/create-account/create-account.component.mjs +0 -110
  250. package/esm2020/lib/pages/customers/customers.component.mjs +0 -21
  251. package/esm2020/lib/pages/departments/departments.component.mjs +0 -22
  252. package/esm2020/lib/pages/employees/employees.component.mjs +0 -20
  253. package/esm2020/lib/pages/grades/grades.component.mjs +0 -14
  254. package/esm2020/lib/pages/inventory/inventory.component.mjs +0 -99
  255. package/esm2020/lib/pages/inventory/quantityDialog.component.mjs +0 -53
  256. package/esm2020/lib/pages/invitations-table/invitations-table.component.mjs +0 -71
  257. package/esm2020/lib/pages/login/login.component.mjs +0 -166
  258. package/esm2020/lib/pages/logs/logs.component.mjs +0 -42
  259. package/esm2020/lib/pages/membership/membership.component.mjs +0 -44
  260. package/esm2020/lib/pages/notifications/notifications.component.mjs +0 -90
  261. package/esm2020/lib/pages/notifications-config/notifications-config.component.mjs +0 -113
  262. package/esm2020/lib/pages/plans/plans.component.mjs +0 -44
  263. package/esm2020/lib/pages/positions/positions.component.mjs +0 -21
  264. package/esm2020/lib/pages/profile/profile.component.mjs +0 -94
  265. package/esm2020/lib/pages/recover-account/recover-account.component.mjs +0 -46
  266. package/esm2020/lib/pages/roles/addRoleDialog.component.mjs +0 -60
  267. package/esm2020/lib/pages/roles/roles.component.mjs +0 -151
  268. package/esm2020/lib/pages/settings/settings.component.mjs +0 -54
  269. package/esm2020/lib/pages/signup/signup.component.mjs +0 -50
  270. package/esm2020/lib/pages/suppliers/suppliers.component.mjs +0 -22
  271. package/esm2020/lib/pages/tasks/tasks.component.mjs +0 -86
  272. package/esm2020/lib/pages/tenant-settings/tenant-settings.component.mjs +0 -228
  273. package/esm2020/lib/pages/tenants/tenants.component.mjs +0 -47
  274. package/esm2020/lib/pages/transactions/transactDialog.component.mjs +0 -80
  275. package/esm2020/lib/pages/transactions/transactions.component.mjs +0 -101
  276. package/esm2020/lib/pages/users/users.component.mjs +0 -167
  277. package/esm2020/lib/pages/welcome/welcome.component.mjs +0 -86
  278. package/esm2020/lib/pipes/camelToWords.pipe.mjs +0 -17
  279. package/esm2020/lib/select-context.directive.mjs +0 -23
  280. package/esm2020/lib/services/auth.service.mjs +0 -175
  281. package/esm2020/lib/services/button.service.mjs +0 -162
  282. package/esm2020/lib/services/condition.service.mjs +0 -32
  283. package/esm2020/lib/services/csv.service.mjs +0 -49
  284. package/esm2020/lib/services/datalib.service.mjs +0 -860
  285. package/esm2020/lib/services/dialog.service.mjs +0 -125
  286. package/esm2020/lib/services/export.service.mjs +0 -16
  287. package/esm2020/lib/services/http.service.mjs +0 -79
  288. package/esm2020/lib/services/loader-interceptor.service.mjs +0 -86
  289. package/esm2020/lib/services/loader.service.mjs +0 -17
  290. package/esm2020/lib/services/log.service.mjs +0 -77
  291. package/esm2020/lib/services/message.service.mjs +0 -59
  292. package/esm2020/lib/services/notifications.service.mjs +0 -33
  293. package/esm2020/lib/services/storage.service.mjs +0 -34
  294. package/esm2020/lib/services/table-config.service.mjs +0 -78
  295. package/esm2020/lib/services/tin-spa.service.mjs +0 -14
  296. package/esm2020/lib/tin-spa.module.mjs +0 -225
  297. package/esm2020/public-api.mjs +0 -90
  298. package/esm2020/tin-spa.mjs +0 -5
  299. package/fesm2015/tin-spa.mjs +0 -11736
  300. package/fesm2015/tin-spa.mjs.map +0 -1
  301. package/fesm2020/tin-spa.mjs +0 -11738
  302. package/fesm2020/tin-spa.mjs.map +0 -1
  303. package/lib/classes/LibClasses.d.ts +0 -173
  304. package/lib/components/alert/alert.component.d.ts +0 -15
  305. package/lib/components/capsules/capsules.component.d.ts +0 -26
  306. package/lib/components/cards/cards.component.d.ts +0 -39
  307. package/lib/components/email/email.component.d.ts +0 -40
  308. package/lib/components/form/form.component.d.ts +0 -47
  309. package/lib/components/list-dialog/list-dialog.component.d.ts +0 -23
  310. package/lib/components/multi-select/multi-select.component.d.ts +0 -47
  311. package/lib/components/multi-text/multi-text.component.d.ts +0 -56
  312. package/lib/components/notes/notes.component.d.ts +0 -19
  313. package/lib/components/number/number.component.d.ts +0 -41
  314. package/lib/components/page/page.component.d.ts +0 -38
  315. package/lib/components/search/search.component.d.ts +0 -15
  316. package/lib/components/select-bitwise/select-bitwise.component.d.ts +0 -31
  317. package/lib/components/select-common/select-common.component.d.ts +0 -53
  318. package/lib/components/select-internal/select-internal.component.d.ts +0 -23
  319. package/lib/components/select-lite/select-lite.component.d.ts +0 -8
  320. package/lib/components/statuses/statuses.component.d.ts +0 -12
  321. package/lib/components/suffix/suffix.component.d.ts +0 -23
  322. package/lib/components/table/detailsDialog.component.d.ts +0 -86
  323. package/lib/components/table-action/table-action.component.d.ts +0 -25
  324. package/lib/components/table-header/table-header.component.d.ts +0 -46
  325. package/lib/components/table-internal/detailsDialog-internal.component.d.ts +0 -86
  326. package/lib/components/table-internal/table-internal.component.d.ts +0 -91
  327. package/lib/components/table-lite/detailsDialog-lite.component.d.ts +0 -86
  328. package/lib/components/table-lite/table-lite.component.d.ts +0 -91
  329. package/lib/components/table-row/table-row.component.d.ts +0 -31
  330. package/lib/components/tabs/tabs.component.d.ts +0 -32
  331. package/lib/modules/admin/admin-routing.module.d.ts +0 -7
  332. package/lib/modules/admin/admin.module.d.ts +0 -9
  333. package/lib/modules/index/index-routing.module.d.ts +0 -7
  334. package/lib/modules/index/index.module.d.ts +0 -9
  335. package/lib/modules/user/user-routing.module.d.ts +0 -7
  336. package/lib/modules/user/user.module.d.ts +0 -9
  337. package/lib/pages/accounts/accountDialog.component.d.ts +0 -27
  338. package/lib/pages/accounts/accounts.component.d.ts +0 -25
  339. package/lib/pages/app-models/app-models.component.d.ts +0 -15
  340. package/lib/pages/approvals/approvals.component.d.ts +0 -10
  341. package/lib/pages/approvals-config/approvals-config.component.d.ts +0 -24
  342. package/lib/pages/bug/bug.component.d.ts +0 -8
  343. package/lib/pages/customers/customers.component.d.ts +0 -12
  344. package/lib/pages/departments/departments.component.d.ts +0 -14
  345. package/lib/pages/employees/employees.component.d.ts +0 -12
  346. package/lib/pages/grades/grades.component.d.ts +0 -8
  347. package/lib/pages/inventory/inventory.component.d.ts +0 -25
  348. package/lib/pages/inventory/quantityDialog.component.d.ts +0 -23
  349. package/lib/pages/invitations-table/invitations-table.component.d.ts +0 -19
  350. package/lib/pages/login/login.component.d.ts +0 -46
  351. package/lib/pages/logs/logs.component.d.ts +0 -14
  352. package/lib/pages/membership/membership.component.d.ts +0 -13
  353. package/lib/pages/notifications/notifications.component.d.ts +0 -16
  354. package/lib/pages/notifications-config/notifications-config.component.d.ts +0 -17
  355. package/lib/pages/plans/plans.component.d.ts +0 -13
  356. package/lib/pages/positions/positions.component.d.ts +0 -12
  357. package/lib/pages/roles/addRoleDialog.component.d.ts +0 -24
  358. package/lib/pages/roles/roles.component.d.ts +0 -42
  359. package/lib/pages/suppliers/suppliers.component.d.ts +0 -14
  360. package/lib/pages/tasks/tasks.component.d.ts +0 -27
  361. package/lib/pages/tenant-settings/tenant-settings.component.d.ts +0 -47
  362. package/lib/pages/tenants/tenants.component.d.ts +0 -17
  363. package/lib/pages/transactions/transactDialog.component.d.ts +0 -26
  364. package/lib/pages/transactions/transactions.component.d.ts +0 -31
  365. package/lib/pages/welcome/welcome.component.d.ts +0 -25
  366. package/lib/pipes/camelToWords.pipe.d.ts +0 -7
  367. package/lib/select-context.directive.d.ts +0 -10
  368. package/lib/services/button.service.d.ts +0 -30
  369. package/lib/services/condition.service.d.ts +0 -10
  370. package/lib/services/csv.service.d.ts +0 -10
  371. package/lib/services/datalib.service.d.ts +0 -125
  372. package/lib/services/dialog.service.d.ts +0 -20
  373. package/lib/services/notifications.service.d.ts +0 -12
  374. package/lib/services/table-config.service.d.ts +0 -17
  375. /package/{index.d.ts → tin-spa.d.ts} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"tin-spa.mjs","sources":["../../../projects/tin-spa/src/lib/services/tin-spa.service.ts","../../../projects/tin-spa/src/lib/services/storage.service.ts","../../../projects/tin-spa/src/lib/components/message/messageDialog.component.ts","../../../projects/tin-spa/src/lib/components/message/messageDialog.component.html","../../../projects/tin-spa/src/lib/services/message.service.ts","../../../projects/tin-spa/src/lib/services/export.service.ts","../../../projects/tin-spa/src/lib/classes/Classes.ts","../../../projects/tin-spa/src/lib/classes/TinCore.ts","../../../projects/tin-spa/src/lib/classes/LibClasses.ts","../../../projects/tin-spa/src/lib/services/http.service.ts","../../../projects/tin-spa/src/lib/services/log.service.ts","../../../projects/tin-spa/src/lib/services/auth.service.ts","../../../projects/tin-spa/src/lib/services/datalib.service.ts","../../../projects/tin-spa/src/lib/services/loader.service.ts","../../../projects/tin-spa/src/lib/services/dialog.service.ts","../../../projects/tin-spa/src/lib/components/tin-spa.component.ts","../../../projects/tin-spa/src/lib/modules/spa-mat.module.ts","../../../projects/tin-spa/src/lib/components/suffix/suffix.component.ts","../../../projects/tin-spa/src/lib/components/suffix/suffix.component.html","../../../projects/tin-spa/src/lib/components/text/text.component.ts","../../../projects/tin-spa/src/lib/components/text/text.component.html","../../../projects/tin-spa/src/lib/components/check/check.component.ts","../../../projects/tin-spa/src/lib/components/check/check.component.html","../../../projects/tin-spa/src/lib/components/date/date.component.ts","../../../projects/tin-spa/src/lib/components/date/date.component.html","../../../projects/tin-spa/src/lib/components/datetime/datetime.component.ts","../../../projects/tin-spa/src/lib/components/datetime/datetime.component.html","../../../projects/tin-spa/src/lib/components/label/label.component.ts","../../../projects/tin-spa/src/lib/components/label/label.component.html","../../../projects/tin-spa/src/lib/components/select-common/select-common.component.ts","../../../projects/tin-spa/src/lib/components/select-common/select-common.component.html","../../../projects/tin-spa/src/lib/services/button.service.ts","../../../projects/tin-spa/src/lib/services/table-config.service.ts","../../../projects/tin-spa/src/lib/components/steps/steps.component.ts","../../../projects/tin-spa/src/lib/components/steps/steps.component.html","../../../projects/tin-spa/src/lib/components/money/currency-input-mask.directive.ts","../../../projects/tin-spa/src/lib/components/money/money.component.ts","../../../projects/tin-spa/src/lib/components/money/money.component.html","../../../projects/tin-spa/src/lib/components/attach/attach.component.ts","../../../projects/tin-spa/src/lib/components/attach/attach.component.html","../../../projects/tin-spa/src/lib/components/number/number.component.ts","../../../projects/tin-spa/src/lib/components/number/number.component.html","../../../projects/tin-spa/src/lib/components/chips/chips.component.ts","../../../projects/tin-spa/src/lib/components/chips/chips.component.html","../../../projects/tin-spa/src/lib/components/viewer/viewerDialog.component.ts","../../../projects/tin-spa/src/lib/components/viewer/viewerDialog.component.html","../../../projects/tin-spa/src/lib/components/viewer/viewer.component.ts","../../../projects/tin-spa/src/lib/components/viewer/viewer.component.html","../../../projects/tin-spa/src/lib/components/email/email.component.ts","../../../projects/tin-spa/src/lib/components/email/email.component.html","../../../projects/tin-spa/src/lib/components/multi-text/multi-text.component.ts","../../../projects/tin-spa/src/lib/components/multi-text/multi-text.component.html","../../../projects/tin-spa/src/lib/components/multi-select/multi-select.component.ts","../../../projects/tin-spa/src/lib/components/multi-select/multi-select.component.html","../../../projects/tin-spa/src/lib/components/html/html.component.ts","../../../projects/tin-spa/src/lib/components/html/html.component.html","../../../projects/tin-spa/src/lib/components/notes/notes.component.ts","../../../projects/tin-spa/src/lib/components/notes/notes.component.html","../../../projects/tin-spa/src/lib/pipes/camelToWords.pipe.ts","../../../projects/tin-spa/src/lib/components/form/form.component.ts","../../../projects/tin-spa/src/lib/components/form/form.component.html","../../../projects/tin-spa/src/lib/components/alert/alert.component.ts","../../../projects/tin-spa/src/lib/components/alert/alert.component.html","../../../projects/tin-spa/src/lib/components/select-lite/select-lite.component.ts","../../../projects/tin-spa/src/lib/components/select-lite/select-lite.component.html","../../../projects/tin-spa/src/lib/components/statuses/statuses.component.ts","../../../projects/tin-spa/src/lib/components/statuses/statuses.component.html","../../../projects/tin-spa/src/lib/components/table-lite/detailsDialog-lite.component.ts","../../../projects/tin-spa/src/lib/components/table-lite/detailsDialog-lite.component.html","../../../projects/tin-spa/src/lib/components/select-internal/select-internal.component.ts","../../../projects/tin-spa/src/lib/components/select-internal/select-internal.component.html","../../../projects/tin-spa/src/lib/services/condition.service.ts","../../../projects/tin-spa/src/lib/components/filter/filter.component.ts","../../../projects/tin-spa/src/lib/components/filter/filter.component.html","../../../projects/tin-spa/src/lib/components/option/option.component.ts","../../../projects/tin-spa/src/lib/components/option/option.component.html","../../../projects/tin-spa/src/lib/components/search/search.component.ts","../../../projects/tin-spa/src/lib/components/search/search.component.html","../../../projects/tin-spa/src/lib/services/csv.service.ts","../../../projects/tin-spa/src/lib/components/tiles/tiles.component.ts","../../../projects/tin-spa/src/lib/components/tiles/tiles.component.html","../../../projects/tin-spa/src/lib/components/table-header/table-header.component.ts","../../../projects/tin-spa/src/lib/components/table-header/table-header.component.html","../../../projects/tin-spa/src/lib/components/table-row/table-row.component.ts","../../../projects/tin-spa/src/lib/components/table-row/table-row.component.html","../../../projects/tin-spa/src/lib/components/table-action/table-action.component.ts","../../../projects/tin-spa/src/lib/components/table-action/table-action.component.html","../../../projects/tin-spa/src/lib/components/capsules/capsules.component.ts","../../../projects/tin-spa/src/lib/components/capsules/capsules.component.html","../../../projects/tin-spa/src/lib/components/cards/cards.component.ts","../../../projects/tin-spa/src/lib/components/cards/cards.component.html","../../../projects/tin-spa/src/lib/components/table-lite/table-lite.component.ts","../../../projects/tin-spa/src/lib/components/table-lite/table-lite.component.html","../../../projects/tin-spa/src/lib/components/table-internal/detailsDialog-internal.component.ts","../../../projects/tin-spa/src/lib/components/table-internal/detailsDialog-internal.component.html","../../../projects/tin-spa/src/lib/components/select/select.component.ts","../../../projects/tin-spa/src/lib/components/select/select.component.html","../../../projects/tin-spa/src/lib/components/activity/activity.component.ts","../../../projects/tin-spa/src/lib/components/activity/activity.component.html","../../../projects/tin-spa/src/lib/components/loader/loader.component.ts","../../../projects/tin-spa/src/lib/components/loader/loader.component.html","../../../projects/tin-spa/src/lib/services/notifications.service.ts","../../../projects/tin-spa/src/lib/components/nav-menu/nav-menu.component.ts","../../../projects/tin-spa/src/lib/components/nav-menu/nav-menu.component.html","../../../projects/tin-spa/src/lib/services/loader-interceptor.service.ts","../../../projects/tin-spa/src/lib/components/money/currency-input-mask.module.ts","../../../projects/tin-spa/src/lib/components/table-internal/table-internal.component.ts","../../../projects/tin-spa/src/lib/components/table-internal/table-internal.component.html","../../../projects/tin-spa/src/lib/components/table/detailsDialog.component.ts","../../../projects/tin-spa/src/lib/components/table/detailsDialog.component.html","../../../projects/tin-spa/src/lib/components/table/table.component.ts","../../../projects/tin-spa/src/lib/components/table/table.component.html","../../../projects/tin-spa/src/lib/pages/invitations-table/invitations-table.component.ts","../../../projects/tin-spa/src/lib/pages/invitations-table/invitations-table.component.html","../../../projects/tin-spa/src/lib/pages/tenant-settings/tenant-settings.component.ts","../../../projects/tin-spa/src/lib/pages/tenant-settings/tenant-settings.component.html","../../../projects/tin-spa/src/lib/pages/tenants/tenants.component.ts","../../../projects/tin-spa/src/lib/pages/tenants/tenants.component.html","../../../projects/tin-spa/src/lib/pages/bug/bug.component.ts","../../../projects/tin-spa/src/lib/pages/bug/bug.component.html","../../../projects/tin-spa/src/lib/pages/membership/membership.component.ts","../../../projects/tin-spa/src/lib/pages/membership/membership.component.html","../../../projects/tin-spa/src/lib/pages/plans/plans.component.ts","../../../projects/tin-spa/src/lib/pages/plans/plans.component.html","../../../projects/tin-spa/src/lib/pages/customers/customers.component.ts","../../../projects/tin-spa/src/lib/pages/customers/customers.component.html","../../../projects/tin-spa/src/lib/pages/inventory/quantityDialog.component.ts","../../../projects/tin-spa/src/lib/pages/inventory/quantityDialog.component.html","../../../projects/tin-spa/src/lib/components/list-dialog/list-dialog.component.ts","../../../projects/tin-spa/src/lib/components/list-dialog/list-dialog.component.html","../../../projects/tin-spa/src/lib/pages/inventory/inventory.component.ts","../../../projects/tin-spa/src/lib/pages/inventory/inventory.component.html","../../../projects/tin-spa/src/lib/pages/accounts/accountDialog.component.ts","../../../projects/tin-spa/src/lib/pages/accounts/accountDialog.component.html","../../../projects/tin-spa/src/lib/pages/accounts/accounts.component.ts","../../../projects/tin-spa/src/lib/pages/accounts/accounts.component.html","../../../projects/tin-spa/src/lib/pages/suppliers/suppliers.component.ts","../../../projects/tin-spa/src/lib/pages/suppliers/suppliers.component.html","../../../projects/tin-spa/src/lib/pages/transactions/transactDialog.component.ts","../../../projects/tin-spa/src/lib/pages/transactions/transactDialog.component.html","../../../projects/tin-spa/src/lib/pages/transactions/transactions.component.ts","../../../projects/tin-spa/src/lib/pages/transactions/transactions.component.html","../../../projects/tin-spa/src/lib/pages/tasks/tasks.component.ts","../../../projects/tin-spa/src/lib/pages/tasks/tasks.component.html","../../../projects/tin-spa/src/lib/pages/departments/departments.component.ts","../../../projects/tin-spa/src/lib/pages/departments/departments.component.html","../../../projects/tin-spa/src/lib/pages/employees/employees.component.ts","../../../projects/tin-spa/src/lib/pages/employees/employees.component.html","../../../projects/tin-spa/src/lib/pages/positions/positions.component.ts","../../../projects/tin-spa/src/lib/pages/positions/positions.component.html","../../../projects/tin-spa/src/lib/pages/grades/grades.component.ts","../../../projects/tin-spa/src/lib/pages/grades/grades.component.html","../../../projects/tin-spa/src/lib/pages/welcome/welcome.component.ts","../../../projects/tin-spa/src/lib/pages/welcome/welcome.component.html","../../../projects/tin-spa/src/lib/pages/notifications/notifications.component.ts","../../../projects/tin-spa/src/lib/pages/notifications/notifications.component.html","../../../projects/tin-spa/src/lib/components/page/page.component.ts","../../../projects/tin-spa/src/lib/components/page/page.component.html","../../../projects/tin-spa/src/lib/select-context.directive.ts","../../../projects/tin-spa/src/lib/pages/approvals/approvals.component.ts","../../../projects/tin-spa/src/lib/pages/approvals/approvals.component.html","../../../projects/tin-spa/src/lib/pages/approvals-config/approvals-config.component.ts","../../../projects/tin-spa/src/lib/pages/approvals-config/approvals-config.component.html","../../../projects/tin-spa/src/lib/components/select-bitwise/select-bitwise.component.ts","../../../projects/tin-spa/src/lib/components/select-bitwise/select-bitwise.component.html","../../../projects/tin-spa/src/lib/pages/app-models/app-models.component.ts","../../../projects/tin-spa/src/lib/pages/app-models/app-models.component.html","../../../projects/tin-spa/src/lib/pages/notifications-config/notifications-config.component.ts","../../../projects/tin-spa/src/lib/pages/notifications-config/notifications-config.component.html","../../../projects/tin-spa/src/lib/components/tabs/tabs.component.ts","../../../projects/tin-spa/src/lib/components/tabs/tabs.component.html","../../../projects/tin-spa/src/lib/tin-spa.module.ts","../../../projects/tin-spa/src/lib/pages/login/login.component.ts","../../../projects/tin-spa/src/lib/pages/login/login.component.html","../../../projects/tin-spa/src/lib/pages/signup/signup.component.ts","../../../projects/tin-spa/src/lib/pages/signup/signup.component.html","../../../projects/tin-spa/src/lib/pages/recover-account/recover-account.component.ts","../../../projects/tin-spa/src/lib/pages/recover-account/recover-account.component.html","../../../projects/tin-spa/src/lib/modules/spa-index.module.ts","../../../projects/tin-spa/src/lib/pages/change-password/change-password.component.ts","../../../projects/tin-spa/src/lib/pages/change-password/change-password.component.html","../../../projects/tin-spa/src/lib/pages/profile/profile.component.ts","../../../projects/tin-spa/src/lib/pages/profile/profile.component.html","../../../projects/tin-spa/src/lib/modules/spa-user.module.ts","../../../projects/tin-spa/src/lib/pages/settings/settings.component.ts","../../../projects/tin-spa/src/lib/pages/settings/settings.component.html","../../../projects/tin-spa/src/lib/pages/logs/logs.component.ts","../../../projects/tin-spa/src/lib/pages/logs/logs.component.html","../../../projects/tin-spa/src/lib/pages/users/users.component.ts","../../../projects/tin-spa/src/lib/pages/users/users.component.html","../../../projects/tin-spa/src/lib/pages/roles/addRoleDialog.component.ts","../../../projects/tin-spa/src/lib/pages/roles/addRoleDialog.component.html","../../../projects/tin-spa/src/lib/pages/roles/roles.component.ts","../../../projects/tin-spa/src/lib/pages/roles/roles.component.html","../../../projects/tin-spa/src/lib/pages/create-account/create-account.component.ts","../../../projects/tin-spa/src/lib/pages/create-account/create-account.component.html","../../../projects/tin-spa/src/lib/modules/spa-admin.module.ts","../../../projects/tin-spa/src/lib/modules/index/index-routing.module.ts","../../../projects/tin-spa/src/lib/modules/index/index.module.ts","../../../projects/tin-spa/src/lib/modules/admin/admin-routing.module.ts","../../../projects/tin-spa/src/lib/modules/admin/admin.module.ts","../../../projects/tin-spa/src/lib/modules/user/user-routing.module.ts","../../../projects/tin-spa/src/lib/modules/user/user.module.ts","../../../projects/tin-spa/src/public-api.ts","../../../projects/tin-spa/src/tin-spa.ts"],"sourcesContent":["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"," <h2 mat-dialog-title>\r\n\r\n <div class=\"tin-between\">\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 <mat-icon *ngIf=\"messageType=='confirm'\" >question_mark</mat-icon>\r\n <mat-icon *ngIf=\"messageType=='info'\" style=\"color: steelblue;\">info</mat-icon>\r\n </div>\r\n\r\n\r\n </h2>\r\n\r\n <mat-dialog-content >\r\n\r\n <!-- Confirm -->\r\n <div *ngIf=\"messageType=='confirm'\" class=\"alert alert-secondary\" role=\"alert\">\r\n {{_messageDetails}}\r\n </div>\r\n\r\n <!-- Information -->\r\n <div *ngIf=\"messageType=='info'\" class=\"alert alert-secondary\" role=\"alert\">\r\n\r\n <h3 *ngIf=\"_messageSubject && _messageSubject != ''\">{{_messageSubject}}</h3>\r\n {{_messageDetails}}\r\n\r\n </div>\r\n\r\n <!-- Error -->\r\n <div *ngIf=\"messageType=='error'\">\r\n\r\n {{_messageDetails}}\r\n\r\n </div>\r\n\r\n </mat-dialog-content>\r\n\r\n<mat-dialog-actions>\r\n\r\n <button id=\"btnYes\" mat-stroked-button style=\"color: green;\" *ngIf=\"messageType=='confirm'\" (click)=\"response('yes')\" cdkFocusInitial>Yes</button>\r\n\r\n <button id=\"btnNo\" mat-stroked-button style=\"color: red;\" *ngIf=\"messageType=='confirm'\" (click)=\"response('no')\" >No</button>\r\n\r\n <button id=\"btnOK\" mat-stroked-button *ngIf=\"messageType=='info' || messageType=='error'\" color=\"primary\" (click)=\"response('ok')\" cdkFocusInitial>OK</button>\r\n\r\n</mat-dialog-actions>\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(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, details },\r\n });\r\n\r\n }\r\n\r\n public infoWithSubject(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\n// import * as FileSaver from 'file-saver';\r\n// import * 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 { BehaviorSubject } from \"rxjs\";\r\n\r\nexport interface BitwiseOption {\r\n name?: string;\r\n value: number;\r\n selected: boolean;\r\n icon?: Icon;\r\n}\r\n\r\nexport enum RoleAccess {\r\n None = 0,\r\n View = 1,\r\n Edit = 2,\r\n Create = 3,\r\n Full = 4\r\n}\r\n\r\nexport enum DetailsSource {Row, Url}\r\n\r\nexport class dialogOptions {\r\n width?: string;\r\n height?: string;\r\n}\r\n\r\nexport interface CloseOptions {\r\n position?: 'top' | 'bottom'; // Default: 'bottom'\r\n text?: string; // Default: 'Cancel' - only applies when position is 'bottom'\r\n}\r\n\r\nexport class DetailsDialogConfig {\r\n\r\n stepConfig? : StepConfig;\r\n statusConfig? : StatusConfig;\r\n formConfig: FormConfig;\r\n tableConfig?: TableConfig;\r\n tableConfigs?: TableConfig[];\r\n buttons?: Button[];\r\n details? : any\r\n heroField? : any\r\n heroValue?: any\r\n mode?: 'create' | 'edit' | 'view'\r\n // width?: string\r\n detailsSource?: DetailsSource\r\n options?: dialogOptions\r\n autoRefreshConfig?: AutoRefreshConfig;\r\n refreshOnClose?: boolean;\r\n causeTableRefresh?: boolean;\r\n closeOptions?: CloseOptions;\r\n}\r\n\r\n\r\n\r\nexport class Action{\r\n method?: 'get' | 'post'\r\n url: string;\r\n params? : any[]\r\n successMessage?: string\r\n isFormData?: boolean\r\n skipCache?: boolean\r\n cacheDurationMinutes?: number;\r\n}\r\n\r\n\r\nexport interface SearchField extends Field {\r\n show?: boolean\r\n}\r\n\r\nexport class SearchConfig {\r\n fields: SearchField[]\r\n searchAction?: Action\r\n emailResults?: boolean\r\n tileConfig?: TileConfig\r\n}\r\n\r\n\r\n\r\nexport class SecurityConfig {\r\n allow?: CapItem[];\r\n deny?: CapItem[];\r\n}\r\n\r\nexport interface ChildField {\r\n childField?: string\r\n childValueField?: string\r\n}\r\n\r\nexport interface AutoRefreshConfig {\r\n // Time between refreshes in milliseconds (default: 5000ms = 5 seconds)\r\n interval?: number;\r\n stopCondition?: (data: any) => boolean;\r\n defaultOn?: boolean;\r\n}\r\n\r\n\r\nexport interface Field {\r\n securityConfig?: SecurityConfig;\r\n name: string;\r\n type: 'text' | 'multi-text' | 'password' | 'date' | 'datetime' | 'datetimesec' | 'checkbox' | 'select' | 'multi-select' | 'money' | 'number' | 'section' | 'blank' | 'chip' | 'file' | 'file-view' | 'icon' | 'spinner' | 'button' | 'label' | 'email' | 'composite' | 'string' | 'html';\r\n alias?: string;\r\n options?: any[];\r\n optionDisplay?: string\r\n optionValue?: string\r\n masterOptionValue?: string\r\n defaultValue?: any\r\n defaultFirstValue?: boolean\r\n required?: boolean\r\n requiredCondition?: (value: any) => boolean;\r\n min?: any\r\n max?: any\r\n rows?: number\r\n span?: boolean\r\n width?: string\r\n size?: string\r\n readonly?: boolean\r\n hidden?: boolean\r\n strict?: boolean\r\n path?: string\r\n keyField?: string\r\n hint?: string\r\n masterField?: string\r\n // child?: ChildField\r\n children?: ChildField[]\r\n masterOptions?: any[]\r\n nullable?: boolean\r\n copyContent?: boolean\r\n clearContent?: boolean\r\n format?: 'text' | 'money' | 'date' | 'datetime' | 'number'\r\n hideOnCreate?: boolean\r\n hideOnExists?: boolean\r\n hiddenCondition?: (value: any) => boolean;\r\n readonlyCondition?: (value: any) => boolean;\r\n detailsConfig?: DetailsDialogConfig;\r\n loadAction?: Action\r\n loadIDField?: string;\r\n infoMessage?: string;\r\n suffix?: string;\r\n subfields?: Field[];\r\n optionsSubject?: BehaviorSubject<any[]>;\r\n section?: string;\r\n fileOptions?: {\r\n allowedExtensions?: string[];\r\n maxSizeMB?: number;\r\n compressImages?: boolean;\r\n };\r\n collapsed?: boolean;\r\n collapsedCondition?: (value: any) => boolean;\r\n maxHeight?: string;\r\n valueCalculation?: (value: any) => any;\r\n regex?: {\r\n\r\n pattern: string;\r\n message: string;\r\n };\r\n onSelectChange?: (value: any, data: any) => void;\r\n}\r\n\r\nexport interface StatusState {\r\n condition: (data: any) => boolean;\r\n icon: string; \r\n color: string; \r\n}\r\n\r\nexport interface StatusItem {\r\n name: string;\r\n hiddenCondition?: (data: any) => boolean;\r\n states: StatusState[];\r\n}\r\n\r\nexport interface StatusConfig {\r\n items: StatusItem[];\r\n sticky?: boolean;\r\n hiddenCondition?: (data: any) => boolean;\r\n}\r\n\r\n\r\nexport class AlertMessage {\r\n type?: 'success' | 'info' | 'warn' | 'critical'\r\n content?: string \r\n contentField?: string\r\n hiddenCondition?: (value: any) => boolean;\r\n showCondition?: (value: any) => boolean;\r\n}\r\n\r\nexport class AlertConfig {\r\n subject?: string\r\n compact? : boolean\r\n sticky?: boolean \r\n messages: AlertMessage[]\r\n}\r\n\r\nexport class NotesConfig {\r\n title?: string;\r\n loadAction?: Action;\r\n loadIDField?: string;\r\n notes?: any[];\r\n nameField?: string;\r\n dateField?: string;\r\n commentField?: string;\r\n}\r\n\r\nexport class FormConfig {\r\n title?: string\r\n fixedTitle?: boolean\r\n alertConfig?: AlertConfig\r\n fields: Field[]\r\n mode?: 'create' | 'edit' | 'view'\r\n button? : Button\r\n multiColumn?: boolean\r\n reset?: boolean\r\n loadAction?: Action\r\n heroField?: any\r\n heroValue?: any\r\n security?: SecurityConfig;\r\n includeAudit?: boolean\r\n notesConfig?: NotesConfig;\r\n}\r\n\r\nexport interface Confirm {\r\n message?: string\r\n func?: (data: any) => string; \r\n}\r\n\r\nexport interface Button{\r\n name: string\r\n visible?: (value: any) => boolean;\r\n display?: string;\r\n icon?: Icon;\r\n disabled?: (value: any) => boolean;\r\n color?: string;\r\n tip?: string\r\n dialog?: boolean\r\n action?: Action\r\n confirm?: Confirm\r\n inDialog?: boolean\r\n inHeader?: boolean\r\n detailsConfig?: DetailsDialogConfig\r\n setHeroField?: boolean;\r\n ignorePendingApproval?: boolean;\r\n keepOpen?: boolean;\r\n onSuccess?: (response: ApiResponse, details: any) => void;\r\n onClick?: (details: any) => void;\r\n editOnSuccess?: boolean\r\n onSuccessButton?: Button\r\n skipValidation?: boolean\r\n}\r\n\r\n\r\nexport interface CapsuleConfig {\r\n displayField: string;\r\n leftIcons?: Icon[];\r\n rightIcons?: Icon[];\r\n // buttons?: Button[];\r\n loadAction?: Action;\r\n}\r\n\r\nexport interface CardConfig {\r\n imageField?: string;\r\n titleField: string;\r\n subtitleField?: string;\r\n contentFields: string[];\r\n columns?: number;\r\n elevation?: 'low' | 'medium' | 'high';\r\n}\r\n\r\nexport interface Tile {\r\n\r\n name: string;\r\n alias?: string;\r\n value?: string;\r\n color?: string;\r\n selectedTile?: string;\r\n hidden?: boolean;\r\n info?: string;\r\n prefix?: string;\r\n suffix?: string;\r\n action?: Action;\r\n hiddenCondition?: (value: any) => boolean;\r\n}\r\nexport class TileConfig {\r\n tiles: Tile[]\r\n loadAction?: Action\r\n loadInit?: boolean\r\n clickable?: boolean\r\n headerPosition?: | 'top' | 'middle';\r\n}\r\n\r\nexport class Step {\r\n name: string\r\n value?: any\r\n icon?: string;\r\n hiddenCondition?: (value: any) => boolean;\r\n}\r\nexport class StepConfig {\r\n steps: Step[]\r\n valueField?: string\r\n loadAction?: Action;\r\n loadIDField?: string;\r\n sticky?: boolean \r\n}\r\n\r\nexport interface Icon {\r\n name: string\r\n color?: string\r\n tip?: string\r\n tipField?: string\r\n bannerField?: string\r\n condition?: (value: any) => boolean;\r\n}\r\n\r\nexport interface Color {\r\n name: string\r\n condition?: (value: any) => boolean;\r\n}\r\n\r\nexport interface Column {\r\n name: string;\r\n type?: 'text' | 'date' | 'datetime' | 'datetimesec' | 'checkbox' | 'select' | 'money' | 'number' | 'chip' | 'icon' | 'spinner' | 'button';\r\n alias?: string;\r\n maxLength?: number;\r\n icon?: Icon;\r\n color?: Color;\r\n colors?: Color[];\r\n icons?: Icon[];\r\n options?: any[];\r\n optionDisplay?: string\r\n optionValue?: string\r\n detailsConfig?: DetailsDialogConfig\r\n hiddenCondition?: (parentData: any) => boolean;\r\n}\r\n\r\n\r\nexport type TableViewType = 'table' | 'capsule' | 'card';\r\nexport class TableConfig{\r\n viewType?: TableViewType \r\n capsuleConfig?: CapsuleConfig\r\n cardConfig?: CardConfig\r\n tabTitle?: string\r\n noDataMessage ?: string\r\n columns? : Column[]\r\n minColumns?: string[]\r\n showFilter?: boolean\r\n showFilterButton?: boolean\r\n holdFilterSpace?: boolean\r\n holdHeaderButtonSpace?: boolean\r\n elevation?: 'none' | 'low' | 'medium' | 'high'\r\n formConfig?: FormConfig\r\n searchConfig?: SearchConfig\r\n tileConfig?: TileConfig\r\n stepConfig?: StepConfig\r\n buttons?: Button[]\r\n minButtons?: string[]\r\n loadAction?: Action\r\n countAction?: Action\r\n loadIDField ?: string\r\n loadCriteria?: string\r\n lazyLoad?: boolean\r\n causeFormRefresh?: boolean\r\n logResponse?: boolean\r\n flatButtons?: boolean\r\n greyOut?: (value: any) => boolean;\r\n heroField?: any\r\n heroValue?: any\r\n collapseButtons?: boolean\r\n parentData ? : any\r\n pageSizes?: number[]\r\n maxButtonsCount?: number\r\n hideTabCondition?: (value: any) => boolean;\r\n\r\n download?: { columns: string[], fileName?: string, hiddenCondition?: (value: any) => boolean; }\r\n upload?: { action: Action, messages?: AlertMessage[], hiddenCondition?: (value: any) => boolean; }\r\n}\r\n\r\nexport class PageConfig {\r\n title?: string;\r\n tableConfig?: TableConfig;\r\n searchTableConfig?: TableConfig;\r\n}\r\n\r\n\r\n\r\n\r\n//---Base---\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 public static readonly AUTH_TENANT_NAME = 'f';\r\n}\r\n\r\nexport class ListDialogConfig {\r\n name: string;\r\n title: string;\r\n listName: string;\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 this.color = \"black\";\r\n this.isBool = false;\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 color: string;\r\n isBool : boolean;\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.googleAuth = false;\r\n this.microsoftAuth = false;\r\n this.microsoftAuthMessage = \"Sign in with Microsoft\";\r\n this.selfService = false;\r\n this.multitenant = false;\r\n this.navigation = 'top';\r\n this.progressLine = false;\r\n this.loginStyle = 'default';\r\n this.termsUrl = \"https://yoursite.com/terms\";\r\n this.privacyUrl = \"https://yoursite.com/privacy\";\r\n this.siteUrl = \"https://yoursite.com\";\r\n this.navWidth = '200px';\r\n\r\n }\r\n\r\n appName: string;\r\n logo: string;\r\n logoSize: string;\r\n ADAuth: boolean;\r\n localAuth: boolean;\r\n googleAuth: boolean;\r\n microsoftAuth: boolean;\r\n microsoftAuthMessage: string;\r\n selfService: boolean;\r\n capItems: CapItem[];\r\n multitenant : boolean;\r\n navigation : 'top' | 'side'\r\n progressLine: boolean;\r\n docsBaseUrl : string;\r\n loginStyle : string;\r\n loginTitle : string;\r\n loginMessage : string;\r\n termsUrl: string;\r\n privacyUrl: string;\r\n siteUrl: string;\r\n navWidth: string;\r\n\r\n}\r\n\r\n\r\n\r\n\r\n//-----------Move out------\r\nexport class Transaction {\r\n\r\n constructor() {\r\n this.transactionID = 0;\r\n this.narration = \"\";\r\n this.amount = '0';\r\n this.type = 0;\r\n this.date = \"\";\r\n this.accountID = 0;\r\n this.destinationID = 0;\r\n this.categoryID = 0;\r\n }\r\n\r\n transactionID : number;\r\n narration : string;\r\n amount : string;\r\n type: number;\r\n date : string;\r\n accountID : number;\r\n destinationID : number;\r\n categoryID : number;\r\n\r\n}\r\n\r\nexport class FinAccount {\r\n\r\n constructor(){\r\n this.accountID = 0;\r\n this.name = \"\";\r\n this.description = \"\";\r\n this.currency = \"\";\r\n\r\n }\r\n\r\n\r\n accountID: number\r\n name: string;\r\n description: string;\r\n currency: string;\r\n\r\n}\r\n\r\n","import { Action, DetailsDialogConfig, DetailsSource, Field, FormConfig, RoleAccess, SecurityConfig } from \"./Classes\";\r\n\r\nexport class Core {\r\n\r\n\r\n public static deepClone(obj) {\r\n if (obj === null || typeof obj !== 'object') {\r\n return obj;\r\n }\r\n\r\n if (Array.isArray(obj)) {\r\n const arrCopy = [];\r\n obj.forEach((item, index) => {\r\n arrCopy[index] = this.deepClone(item);\r\n });\r\n return arrCopy;\r\n }\r\n\r\n const objCopy = {};\r\n Object.keys(obj).forEach(key => {\r\n objCopy[key] = this.deepClone(obj[key]);\r\n });\r\n return objCopy;\r\n }\r\n\r\n public static deepClone2(obj: any): any {\r\n // Create new WeakMap for each clone operation\r\n const cloneVisited = new WeakMap();\r\n\r\n // Inner function that has access to the cloneVisited map\r\n const clone = (value: any): any => {\r\n // Handle null, undefined and primitives\r\n if (value === null || typeof value !== 'object') {\r\n return value;\r\n }\r\n\r\n // Check if object was already cloned\r\n if (cloneVisited.has(value)) {\r\n return cloneVisited.get(value);\r\n }\r\n\r\n // Handle arrays\r\n if (Array.isArray(value)) {\r\n const arrCopy = [];\r\n cloneVisited.set(value, arrCopy);\r\n value.forEach((item, index) => {\r\n arrCopy[index] = clone(item);\r\n });\r\n return arrCopy;\r\n }\r\n\r\n // Handle dates\r\n if (value instanceof Date) {\r\n return new Date(value);\r\n }\r\n\r\n // Handle regular objects\r\n const objCopy = Object.create(Object.getPrototypeOf(value));\r\n cloneVisited.set(value, objCopy);\r\n\r\n Object.entries(value).forEach(([key, val]) => {\r\n if (Object.prototype.hasOwnProperty.call(value, key)) {\r\n objCopy[key] = clone(val);\r\n }\r\n });\r\n\r\n return objCopy;\r\n };\r\n\r\n // Start the clone operation with a fresh WeakMap\r\n return clone(obj);\r\n }\r\n\r\n\r\n\r\n public static camelToWords(value: string): string {\r\n if (!value) return value;\r\n\r\n if (typeof value !== 'string') return value;\r\n\r\n if (value.length == 0) return value;\r\n\r\n let v = value.charAt(0).toUpperCase() + value.substring(1)\r\n return v.replace(/([A-Z]+)*([A-Z][a-z])/g, \"$1 $2\");\r\n }\r\n\r\n public static generateObject(fields: Field[]) {\r\n\r\n let data = {};\r\n fields.forEach(field => {\r\n\r\n if (field.type != 'section' && field.type != 'blank' ){\r\n data[field.name] = this.getInitialValue(field);\r\n }\r\n\r\n });\r\n\r\n // console.log(data)\r\n\r\n return data;\r\n }\r\n\r\n public static resetObject(fields: Field[], data) {\r\n\r\n fields.forEach(field => {\r\n if (field.type != 'section' && field.type != 'blank') {\r\n data[field.name] = this.getInitialValue(field);\r\n }\r\n });\r\n\r\n }\r\n\r\n public static checkSecurity(security: SecurityConfig, currentRole: any): boolean {\r\n if (!security) {\r\n return true;\r\n }\r\n\r\n if (security.deny?.some(role => currentRole[role.name])) {\r\n return false;\r\n }\r\n\r\n if (!security.allow || security.allow.length === 0) {\r\n return true;\r\n }\r\n\r\n return security.allow.some(role => currentRole[role.name]);\r\n }\r\n\r\n public static hasFormAccess(formConfig: FormConfig, currentRole: any): boolean {\r\n return this.getFormAccess(formConfig, currentRole) > RoleAccess.None;\r\n }\r\n\r\n public static getFormAccess(formConfig: FormConfig, currentRole: any): RoleAccess {\r\n if (!formConfig?.security?.allow) {\r\n return RoleAccess.Full; // Full access if no restrictions\r\n }\r\n\r\n // Check deny first\r\n if (formConfig.security.deny?.some(role => this.getRoleAccess(currentRole, role.name) > RoleAccess.None)) {\r\n return RoleAccess.None;\r\n }\r\n\r\n // Get highest level of access from allowed capabilities\r\n let maxAccess = RoleAccess.None;\r\n formConfig.security.allow.forEach(role => {\r\n const access = this.getRoleAccess(currentRole, role.name);\r\n if (access > maxAccess) {\r\n maxAccess = access;\r\n }\r\n });\r\n\r\n return maxAccess;\r\n }\r\n\r\n private static getRoleAccess(role: any, capName: string): RoleAccess {\r\n if (!role || !capName) return RoleAccess.None;\r\n return role[capName] ?? RoleAccess.None;\r\n }\r\n\r\n public static testVisible(config: FormConfig, data, field: Field, currentRole: any): boolean {\r\n\r\n if ((field.type == 'section' || field.type == 'blank') && field.hidden) return false;\r\n\r\n // First check form level security if exists\r\n if (config.security && !this.hasFormAccess(config, currentRole)) {\r\n return false;\r\n }\r\n\r\n if (field.section) {\r\n const sectionField = config.fields.find(f => f.type === 'section' && f.name === field.section);\r\n if (sectionField) {\r\n // Inherit section's conditions\r\n if (!this.checkSecurity(sectionField.securityConfig, currentRole)) {\r\n return false;\r\n }\r\n // if (sectionField.hidden) return false;\r\n if (sectionField.hideOnCreate && config.mode == 'create') return false;\r\n if (sectionField.hideOnExists && config.mode != 'create') return false;\r\n if (sectionField.hiddenCondition && sectionField.hiddenCondition(data)) return false;\r\n }\r\n }\r\n\r\n // Then check field level security if exists\r\n if (!this.checkSecurity(field.securityConfig, currentRole)) {\r\n return false;\r\n }\r\n\r\n if (field.hidden) return false;\r\n\r\n if (config.mode == 'create' && field.hideOnCreate) {\r\n return false;\r\n }\r\n\r\n\r\n if (config.mode != 'create' && field.hideOnExists) {\r\n return false;\r\n }\r\n\r\n\r\n\r\n if (field.hiddenCondition) {\r\n return !field.hiddenCondition(data);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public static testReadOnly(config: FormConfig, data, field: Field): boolean {\r\n // Default readonly conditions\r\n if (config.mode == 'create') {\r\n return false;\r\n }\r\n\r\n if (field.readonly) {\r\n return true;\r\n }\r\n\r\n if (config.mode == 'view') {\r\n return true;\r\n }\r\n\r\n // Check section readonly condition first\r\n if (field.section) {\r\n const sectionField = config.fields.find(f => f.type === 'section' && f.name === field.section);\r\n if (sectionField?.readonlyCondition && sectionField.readonlyCondition(data)) {\r\n return true;\r\n }\r\n }\r\n\r\n // Check field level readonly condition last\r\n if (field.readonlyCondition) {\r\n return field.readonlyCondition(data);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public static testVisibleHeaderButton(data, btn): boolean {\r\n\r\n if (btn.hiddenCondition) {\r\n return !btn.hiddenCondition(data);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public static getVisibleSubfields(config: FormConfig, data, field: Field, currentRole: any ): Field[] {\r\n return field.subfields?.filter(subfield => Core.testVisible(config, data, subfield,currentRole )) || [];\r\n }\r\n\r\n public static validateObject(fields: Field[], data): string {\r\n\r\n console.log(\"Validations\")\r\n\r\n for (let field of fields) {\r\n\r\n if (field.type == 'file' || field.type == 'file-view' || field.type == 'blank' || field.type == 'section' ) continue\r\n\r\n\r\n\r\n let name = field.alias ?? this.camelToWords(field.name);\r\n let d = data[field.name];\r\n\r\n let isRequired = field.required;\r\n\r\n if (!isRequired && field.requiredCondition) {\r\n isRequired = field.requiredCondition(data);\r\n }\r\n\r\n\r\n console.log(name + ' ' + d)\r\n\r\n if (isRequired){\r\n\r\n if (d == undefined || d == null) return `${name} is required`;\r\n\r\n if (field.type == 'text'){\r\n\r\n if (d == '') return `Please enter ${name}`;\r\n\r\n if (field.min && d.length < field.min) return `Minimum ${name} length is ${field.min}`\r\n\r\n if (field.max && d.length > field.max) return `Maximum ${name} length is ${field.max}`\r\n\r\n }\r\n else if (field.type == 'number' || field.type == 'money' || field.type == 'date'){\r\n\r\n if (field.min && d < field.min) return `Minimum ${name} is ${field.min}`\r\n\r\n if (field.max && d > field.max) return `Maximum ${name} is ${field.max}`\r\n\r\n }\r\n else if (field.type == 'select') {\r\n\r\n if (typeof(d) == 'string' && d == '') return `Please select ${name}`;\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n if (field.type == 'text' && field.regex && d && d.toString().trim() !== '') {\r\n const regexPattern = new RegExp(field.regex.pattern);\r\n if (!regexPattern.test(d)) {\r\n return field.regex.message;\r\n }\r\n }\r\n\r\n };\r\n\r\n return '';\r\n }\r\n\r\n public static testRequired(config: FormConfig, data, field: Field): boolean {\r\n if (field.required) {\r\n return true;\r\n }\r\n \r\n if (field.requiredCondition) {\r\n return field.requiredCondition(data);\r\n }\r\n \r\n return false;\r\n }\r\n\r\n public static getInitialValue(field: Field) {\r\n\r\n if (field.defaultValue){\r\n\r\n if ((field.type == 'date' || field.type == 'datetime') && field.defaultValue == 'now') return this.nowDate(true);\r\n\r\n return field.defaultValue;\r\n }\r\n\r\n if (field.type == 'select' && (field.hidden || field.hideOnCreate)) return 0;\r\n\r\n switch (field.type) {\r\n case 'text':\r\n return '';\r\n case 'money':\r\n return 0;\r\n case 'number':\r\n return 0;\r\n case 'date':\r\n return this.nowDate(true);\r\n case 'checkbox':\r\n return false;\r\n case 'select':\r\n return null;\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n\r\n\r\n public static getClone(x) {\r\n return this.deepClone2(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 return false;\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 return false;\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 getFormatedDate2(d : Date, NoTime: boolean = false) {\r\n\r\n\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 DetailsDialogProcessor {\r\n\r\n public static processDetailsConfig(detailsConfig: DetailsDialogConfig, row: any): DetailsDialogConfig {\r\n\r\n const updatedDetailsConfig: DetailsDialogConfig = Core.getClone(detailsConfig); //{...detailsConfig}\r\n updatedDetailsConfig.details = row;\r\n\r\n\r\n //Form Config\r\n updatedDetailsConfig.formConfig.mode = updatedDetailsConfig.mode ?? \"view\";\r\n\r\n\r\n\r\n if (updatedDetailsConfig.heroField && row) {\r\n updatedDetailsConfig.heroValue = row[updatedDetailsConfig.heroField];\r\n }\r\n\r\n\r\n //Table configs\r\n if (updatedDetailsConfig.tableConfig) {\r\n updateTableConfig(updatedDetailsConfig.tableConfig);\r\n }\r\n\r\n if (updatedDetailsConfig.tableConfigs) {\r\n updatedDetailsConfig.tableConfigs.forEach(updateTableConfig);\r\n }\r\n\r\n function updateTableConfig(tableConfig) {\r\n tableConfig.heroField = updatedDetailsConfig?.heroField;\r\n tableConfig.heroValue = updatedDetailsConfig?.heroValue;\r\n // tableConfig.setHero = updatedDetailsConfig.setHero;\r\n tableConfig.searchConfig = null;\r\n tableConfig.tileConfig = null;\r\n tableConfig.parentData = updatedDetailsConfig.details;\r\n tableConfig.elevation = 'none';\r\n }\r\n\r\n\r\n\r\n //URL\r\n if (updatedDetailsConfig.tableConfig) {\r\n transformLoadUrl(updatedDetailsConfig.tableConfig);\r\n }\r\n\r\n if (updatedDetailsConfig.tableConfigs) {\r\n updatedDetailsConfig.tableConfigs.forEach(transformLoadUrl);\r\n }\r\n\r\n if (updatedDetailsConfig.stepConfig?.loadAction) {\r\n transformStepUrl(updatedDetailsConfig.stepConfig);\r\n }\r\n\r\n function transformLoadUrl(tableConfig) {\r\n if (tableConfig.loadAction && tableConfig.loadCriteria && tableConfig.loadIDField) {\r\n tableConfig.loadAction.url = `${tableConfig.loadAction.url.split('/')[0]}/${tableConfig.loadCriteria}/${updatedDetailsConfig.details[tableConfig.loadIDField]}`;\r\n\r\n console.log(\"Transformed\", tableConfig.loadAction.url);\r\n } else {\r\n console.log(\"NOT Transformed\");\r\n }\r\n }\r\n\r\n function transformStepUrl(stepConfig) {\r\n if (stepConfig.loadAction && stepConfig.loadIDField ) {\r\n // let heroId = updatedDetailsConfig.details[updatedDetailsConfig.heroField];\r\n stepConfig.loadAction.url = `${stepConfig.loadAction.url.replace('{id}', updatedDetailsConfig.details[stepConfig.loadIDField])}`;\r\n // console.log(\"Transformed step URL\", stepConfig.loadAction.url);\r\n }\r\n }\r\n\r\n\r\n\r\n return updatedDetailsConfig;\r\n }\r\n\r\n\r\n static initializeConfigs(detailsConfig: DetailsDialogConfig) {\r\n const tableConfig = detailsConfig.tableConfig;\r\n const tableConfigs = detailsConfig.tableConfigs;\r\n const formConfig = detailsConfig.formConfig;\r\n const stepConfig = detailsConfig.stepConfig;\r\n const statusConfig = detailsConfig.statusConfig; \r\n const buttons = detailsConfig.buttons;\r\n formConfig.mode = formConfig.mode ?? \"view\";\r\n return { tableConfig, tableConfigs, formConfig, stepConfig, statusConfig, buttons };\r\n }\r\n\r\n static setHeroValue(detailsConfig: DetailsDialogConfig, details: any) {\r\n\r\n\r\n if ((detailsConfig.formConfig.mode == \"create\" ) && detailsConfig.heroField && detailsConfig.heroValue) {\r\n details[detailsConfig.heroField] = detailsConfig.heroValue;\r\n\r\n // Ensure hero values are set in form config\r\n detailsConfig.formConfig.heroField = detailsConfig.heroField;\r\n detailsConfig.formConfig.heroValue = detailsConfig.heroValue;\r\n\r\n return;\r\n }\r\n\r\n\r\n }\r\n\r\n static handleFormMode(detailsConfig: DetailsDialogConfig, formConfig: FormConfig,) {\r\n let details;\r\n let action;\r\n let loadByAction = false;\r\n\r\n if (formConfig.mode === \"create\") {\r\n\r\n details = Core.generateObject(formConfig.fields);\r\n\r\n } else {\r\n let resp = this.loadDetailsData(detailsConfig, formConfig);\r\n details = resp.details;\r\n\r\n action = resp.action;\r\n loadByAction = resp.loadByAction;\r\n }\r\n\r\n return { details, loadByAction, action };\r\n }\r\n\r\n private static loadDetailsData(detailsConfig: DetailsDialogConfig, formConfig: FormConfig) {\r\n\r\n let details;\r\n let action;\r\n let loadByAction = false;\r\n\r\n\r\n //Choose source\r\n if (detailsConfig.detailsSource == DetailsSource.Row) {\r\n\r\n console.log(\"Data from Details - Row option\")\r\n details = detailsConfig.details;\r\n\r\n } else if (detailsConfig.detailsSource == DetailsSource.Url) {\r\n console.log(\"Data from Url option\")\r\n action = this.loadDetailsFromUrl(detailsConfig, formConfig);\r\n loadByAction = true;\r\n\r\n } else {\r\n\r\n //new logic\r\n if (formConfig.loadAction){\r\n console.log(\"Data from Url - Guessed\");\r\n action = this.loadDetailsFromUrl(detailsConfig, formConfig);\r\n loadByAction = true;\r\n\r\n }else{\r\n console.log(\"Data from Details - Guessed\");\r\n details = detailsConfig.details;\r\n }\r\n\r\n }\r\n\r\n return { details, loadByAction, action };\r\n }\r\n\r\n private static loadDetailsFromUrl(detailsConfig: DetailsDialogConfig, formConfig: FormConfig) {\r\n let action : Action;\r\n\r\n if (formConfig.loadAction) {\r\n\r\n if (detailsConfig.heroField && detailsConfig.details) {\r\n\r\n console.log(\"DetailsConfig Hero ID Field \" + detailsConfig.heroField);\r\n action = { url: `${formConfig.loadAction.url}/${detailsConfig.details[detailsConfig.heroField]}` };\r\n\r\n } else if (formConfig.heroField && detailsConfig.details) {\r\n\r\n console.log(\"FormConfig Hero ID Field \" + formConfig.heroField);\r\n action = { url: `${formConfig.loadAction.url}/${detailsConfig.details[formConfig.heroField]}` };\r\n\r\n } else if (detailsConfig.heroValue) {\r\n\r\n console.log(\"Defined Hero Value \" + detailsConfig.heroValue);\r\n action = { url: `${formConfig.loadAction.url}/${detailsConfig.heroValue}` };\r\n\r\n }\r\n else{\r\n console.log(\"url source failed : setup hero field or hero value\");\r\n }\r\n\r\n action.cacheDurationMinutes = formConfig.loadAction.cacheDurationMinutes ?? 0;\r\n action.skipCache = formConfig.loadAction.skipCache ?? false;\r\n action.successMessage = formConfig.loadAction.successMessage ?? null;\r\n\r\n }else{\r\n console.log(\"No load action set\");\r\n }\r\n\r\n return action;\r\n }\r\n\r\n static setFileField(formConfig: FormConfig) {\r\n return formConfig.fields.find(x => x.type === 'file');\r\n }\r\n\r\n\r\n static setupButtons(buttons: any) {\r\n let extraButtons, createButton, editButton, deleteButton;\r\n\r\n if (buttons) {\r\n extraButtons = buttons.filter(x => x.name !== \"create\" && x.name !== \"edit\" && x.name !== \"delete\" && x.name !== \"view\" && x.inDialog);\r\n createButton = buttons.find(x => x.name === \"create\");\r\n editButton = buttons.find(x => x.name === \"edit\");\r\n deleteButton = buttons.find(x => x.name === \"delete\");\r\n }\r\n return { extraButtons, createButton, editButton, deleteButton };\r\n }\r\n\r\n\r\n\r\n\r\n}\r\n\r\n\r\n","import { Core } from \"./TinCore\";\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 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\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 = \"local\";\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 this.code = \"\";\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 code : string;\r\n}\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\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","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 { Injectable } from \"@angular/core\";\r\nimport { Core } from '../classes/TinCore';\r\nimport { LogLevel } from \"../classes/LibClasses\";\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 { Constants } from '../classes/Classes';\r\nimport { HttpService } from './http.service';\r\nimport { SocialAuthService } from '@abacritt/angularx-social-login';\r\nimport { Role } from '../classes/LibClasses';\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 socialService: SocialAuthService, private storage: StorageService, public router: Router, private httpService: HttpService, private messageService: MessageService, private logService: LogService) { }\r\n\r\n clearSession(){\r\n\r\n this.Updateloggedin(false);\r\n this.UpdateAutoLogin(false);\r\n this.UpdateRole(new Role());\r\n this.storage.clear();\r\n this.socialService.signOut();\r\n\r\n }\r\n\r\n sessionExpired(){\r\n\r\n this.clearSession()\r\n\r\n let url = new URL(window.location.href);\r\n let path = url.hash.replace(\"#/\", \"\");\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 }\r\n\r\n logoff() {\r\n this.clearSession()\r\n\r\n this.router.navigate([\"login\"]);\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 //autoLogin\r\n private autoLogin: boolean = false;\r\n private autoLoginSource = new BehaviorSubject(this.autoLogin);\r\n public autoLoginObserv = this.autoLoginSource.asObservable();\r\n UpdateAutoLogin(autoLogin: boolean) {\r\n this.autoLoginSource.next(autoLogin);\r\n this.autoLogin = autoLogin;\r\n }\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 //TenantName\r\n private tenantNameSource = new BehaviorSubject(\"Tenant Name\");\r\n public tenantNameObserv = this.tenantNameSource.asObservable();\r\n updateTenantName(tenantName: string) {\r\n this.tenantNameSource.next(tenantName);\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.sessionExpired()\r\n this.messageService.toast(`Expired Session`);\r\n\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.sessionExpired();\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 this.storage.get(Constants.AUTH_TENANT_NAME).then((resp: any) => {\r\n this.updateTenantName(resp);\r\n });\r\n\r\n return true;\r\n }\r\n }\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { Action, ApiResponse, AppConfig, Button, CapItem, DetailsDialogConfig, FormConfig, TableConfig } from '../classes/Classes';\r\nimport { BehaviorSubject, finalize, Observable, of, share, tap, timeout } from 'rxjs';\r\nimport { HttpService } from './http.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { User } from '../classes/LibClasses';\r\nimport { AuthService } from './auth.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DataServiceLib {\r\n\r\n constructor(private httpService: HttpService, public router: Router, private route: ActivatedRoute, private authService: AuthService) {\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\r\n this.appConfig.capItems = [this.capMultitenant, 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 this.capHome.icon =\"home\";\r\n\r\n\r\n this.capAdmin.name = \"cap2\";\r\n this.capAdmin.display = \"Admin\";\r\n this.capAdmin.icon = \"security\"\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 this.capUsers.icon = \"group\";\r\n\r\n this.capRoles.name = \"cap4\"\r\n this.capRoles.display = \"Roles\";\r\n this.capRoles.link = \"home/admin/roles\";\r\n this.capRoles.icon = \"work\";\r\n\r\n this.capLogs.name = \"cap5\"\r\n this.capLogs.display = \"Logs\";\r\n this.capLogs.link = \"home/admin/logs\";\r\n this.capLogs.icon = \"text_snippet\";\r\n\r\n this.capSettings.name = \"cap6\"\r\n this.capSettings.display = \"Settings\";\r\n this.capSettings.link = \"home/admin/settings\";\r\n this.capSettings.icon =\"settings\";\r\n\r\n\r\n this.capMultitenant.name = \"cap7\"\r\n this.capMultitenant.display = \"Multitenant\";\r\n this.capMultitenant.icon = \"apartment\"\r\n this.capMultitenant.capSubItems = [this.capTenants, this.capMembership, this.capPlans ];\r\n\r\n this.capTenants.name = \"cap8\"\r\n this.capTenants.display = \"Tenants\";\r\n this.capTenants.link = \"home/admin/tenants\";\r\n\r\n this.capMembership.name = \"cap9\"\r\n this.capMembership.display = \"Membership\";\r\n this.capMembership.link = \"home/admin/membership\";\r\n\r\n this.capPlans.name = \"cap10\"\r\n this.capPlans.display = \"Plans\";\r\n this.capPlans.link = \"home/admin/plans\";\r\n\r\n\r\n this.capGeneral.name = \"cap11\"\r\n this.capGeneral.display = \"General\";\r\n this.capGeneral.capSubItems = [this.capNotifications,this.capApprovals,this.capCustomers, this.capInventory, this.capAccounts, this.capSuppliers, this.capTasks];\r\n\r\n\r\n\r\n this.capCustomers.name = \"cap12\"\r\n this.capCustomers.display = \"Customers\";\r\n this.capCustomers.link = \"home/admin/customers\";\r\n this.capCustomers.icon = \"group\"\r\n\r\n this.capInventory.name = \"cap13\"\r\n this.capInventory.display = \"Inventory\";\r\n this.capInventory.link = \"home/admin/inventory\";\r\n this.capInventory.icon = \"storefront\"\r\n\r\n this.capAccounts.name = \"cap14\"\r\n this.capAccounts.display = \"Accounts\";\r\n this.capAccounts.link = \"home/admin/accounts\";\r\n this.capAccounts.icon = \"account_balance_wallet\"\r\n\r\n this.capSuppliers.name = \"cap15\"\r\n this.capSuppliers.display = \"Suppliers\";\r\n this.capSuppliers.link = \"home/admin/suppliers\";\r\n this.capSuppliers.icon = \"groups\"\r\n\r\n this.capTasks.name = \"cap16\"\r\n this.capTasks.display = \"Tasks\";\r\n this.capTasks.link = \"home/admin/tasks\";\r\n this.capTasks.icon = \"check_box\"\r\n\r\n\r\n this.capHR.name = \"cap17\"\r\n this.capHR.display = \"HR\";\r\n this.capHR.link = \"home/admin/hr\";\r\n this.capHR.icon = \"diversity_3\"\r\n this.capHR.capSubItems = [this.capDepartments, this.capPositions, this.capEmployees,]\r\n\r\n this.capEmployees.name = \"cap18\"\r\n this.capEmployees.display = \"Employees\";\r\n this.capEmployees.link = \"home/admin/employees\";\r\n this.capEmployees.icon = \"group\"\r\n\r\n this.capDepartments.name = \"cap19\"\r\n this.capDepartments.display = \"Departments\";\r\n this.capDepartments.link = \"home/admin/departments\";\r\n this.capDepartments.icon = \"business_center\"\r\n\r\n this.capPositions.name = \"cap20\"\r\n this.capPositions.display = \"Positions\";\r\n this.capPositions.link = \"home/admin/positions\";\r\n this.capPositions.icon = \"picture_in_picture_medium\"\r\n\r\n this.capApprovals.name = \"cap21\"\r\n this.capApprovals.display = \"Approvals\";\r\n this.capApprovals.link = \"home/admin/approvals\";\r\n this.capApprovals.icon = \"rule\"\r\n\r\n this.capApprovalsConfig.name = \"cap22\"\r\n this.capApprovalsConfig.display = \"Approvals Config\";\r\n this.capApprovalsConfig.link = \"home/admin/approvals-config\";\r\n this.capApprovalsConfig.icon = \"published_with_changes\"\r\n this.capApprovalsConfig.capSubItems = [this.capSelfApproval]\r\n\r\n this.capSelfApproval.name = \"cap23\"\r\n this.capSelfApproval.display = \"Self Approvals\";\r\n this.capSelfApproval.isBool = true;\r\n\r\n this.capNotifications.name = \"cap24\"\r\n this.capNotifications.display = \"Notifications\";\r\n this.capNotifications.link = \"home/admin/notifications\";\r\n this.capNotifications.icon = \"notifications\"\r\n\r\n this.capAppModels.name = \"cap25\"\r\n this.capAppModels.display = \"App Models\";\r\n this.capAppModels.link = \"home/admin/appmodels\";\r\n // this.capAppModels.icon = \"notifications\"\r\n\r\n this.capNotificationsConfig.name = \"cap26\"\r\n this.capNotificationsConfig.display = \"Notif Config\";\r\n this.capNotificationsConfig.link = \"home/admin/notifications-config\";\r\n\r\n\r\n this.authService.myRoleObserv.subscribe((role: any) => {\r\n this.myRole = role;\r\n });\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 myRole;\r\n\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 capMultitenant = new CapItem;\r\n capTenants = new CapItem;\r\n capMembership = new CapItem;\r\n capPlans = new CapItem;\r\n\r\n capGeneral = new CapItem;\r\n capCustomers = new CapItem;\r\n capInventory = new CapItem;\r\n capAccounts = new CapItem;\r\n capSuppliers = new CapItem;\r\n capTasks = new CapItem;\r\n\r\n capHR = new CapItem;\r\n capEmployees = new CapItem;\r\n capDepartments = new CapItem;\r\n capPositions = new CapItem;\r\n capGrades = new CapItem;\r\n\r\n capApprovals = new CapItem;\r\n capApprovalsConfig = new CapItem;\r\n capNotifications = new CapItem;\r\n capSelfApproval = new CapItem;\r\n capAppModels = new CapItem;\r\n capNotificationsConfig = new CapItem;\r\n\r\n public tmpProfileuserName = \"\";\r\n\r\n\r\n isProcessing = false;\r\n\r\n\r\n //--------------------------Departmemts Form-------------------------\r\n departmentFormConfig: FormConfig = {\r\n security: { allow: [this.capDepartments] },\r\n title : 'Department',\r\n fields: [\r\n { name: 'name', type: 'text', required: true },\r\n ],\r\n loadAction: { url: 'departments/id' },\r\n heroField: 'departmentID',\r\n includeAudit: true,\r\n }\r\n\r\n editDepartmentButton: Button = { name: 'edit', dialog: true, action: { url: 'departments?action=edit', method: 'post', successMessage: 'Edited Successfully' } }\r\n\r\n departmentDetailsConfig: DetailsDialogConfig = {\r\n formConfig: this.departmentFormConfig,\r\n heroField: 'departmentID',\r\n buttons: [this.editDepartmentButton],\r\n }\r\n\r\n\r\n //--------------------------Positions Form-------------------------\r\n positionFormConfig: FormConfig = {\r\n security: { allow: [this.capPositions] },\r\n title: 'Position',\r\n fields: [\r\n { name: 'name', type: 'text', required: true },\r\n { name: 'description', type: 'text', },\r\n { name: 'departmentID', alias: 'Department', type: 'select', loadAction: { url: 'departments/list/x' }, detailsConfig: this.departmentDetailsConfig },\r\n\r\n ],\r\n loadAction: { url: 'positions/id' },\r\n heroField: 'positionID',\r\n includeAudit: true,\r\n }\r\n\r\n editPositionButton: Button = { name: 'edit', dialog: true, action: { url: 'positions?action=edit', method: 'post', successMessage: 'Edited Successfully' } }\r\n\r\n positionDetailsConfig : DetailsDialogConfig = {\r\n formConfig : this.positionFormConfig,\r\n heroField : 'positionID',\r\n buttons: [this.editPositionButton],\r\n }\r\n\r\n\r\n\r\n //--------------------------Employees-------------------------\r\n\r\n genders = [\r\n { name: 'Male', value: 1 },\r\n { name: 'Female', value: 2 }\r\n ]\r\n\r\n employeeFormConfig: FormConfig = {\r\n security : {allow : [this.capEmployees]},\r\n fields: [\r\n { name: 'nationalID', type: 'text', alias: 'National ID', required: true },\r\n { name: 'gender', alias: 'Gender', type: 'select', options: this.genders, required: true },\r\n { name: 'firstName', type: 'text', required: true },\r\n { name: 'lastName', type: 'text', required: true },\r\n { name: 'dateOfBirth', type: 'date', alias: 'Date of Birth', required: true },\r\n { name: 'employmentDate', type: 'date', alias: 'Employment Date', required: true },\r\n { name: 'departmentID', alias: 'Department', type: 'select', loadAction : { url : 'departments/list/x'}, detailsConfig: this.departmentDetailsConfig },\r\n { name: 'positionID', alias: 'Position', type: 'select', loadAction: { url: 'positions/list/x' }, masterField: 'departmentID', detailsConfig: this.positionDetailsConfig },\r\n { name: 'employmentStatus', alias: 'Employment Status', type: 'select', loadAction: { url: 'employees/list/employment-status' } },\r\n { name: 'activeStatus', alias: 'Active Status', type: 'select', loadAction: { url: 'employees/list/active-status' } },\r\n { name: 'passportNumber', type: 'text', alias: 'Passport Number' },\r\n { name: 'userName', type: 'select', alias: 'User', loadAction: { url: 'user/list/x' }, optionDisplay: 'name', optionValue: 'value', nullable : true, infoMessage : 'Related user account' },\r\n { name: 'address', type: 'text', rows: 2, span: true },\r\n { name: 'phone', type: 'text' },\r\n { name: 'email', type: 'text' },\r\n { name: 'note', type: 'text', rows: 2, span: true },\r\n ],\r\n loadAction: { url: 'employees/id' },\r\n heroField: 'employeeID',\r\n includeAudit : true,\r\n }\r\n\r\n employeesTableConfig: TableConfig = {\r\n showFilter: true,\r\n minColumns: ['name', 'departmentName', 'positionName'],\r\n flatButtons: true,\r\n logResponse : true,\r\n columns: [\r\n { name: 'name', type: 'text' },\r\n { name: 'genderName', type: 'text', alias: 'Gender' },\r\n { name: 'departmentName', type: 'text', alias: 'Department' },\r\n { name: 'positionName', type: 'text', alias: 'Position' },\r\n { name: 'employmentStatusName', type: 'text', alias: 'Employment Status' },\r\n { name: 'activeStatusName', type: 'text', alias: 'Active Status' },\r\n { name: 'isLinked', type: 'checkbox', alias: 'Linked' },\r\n ],\r\n buttons: [\r\n { name: 'create', display: 'Create', dialog: true, action: { url: 'employees?action=create', method: 'post' } },\r\n { name: 'view', dialog: true },\r\n { name: 'edit', dialog: true, action: { url: 'employees?action=edit', method: 'post' } },\r\n { name: 'delete', dialog: true, action: { url: 'employees?action=delete', method: 'post' } },\r\n ],\r\n loadAction: { url: 'employees/all/x' },\r\n formConfig: this.employeeFormConfig\r\n }\r\n\r\n\r\n //--------------------------Positions-------------------------\r\n positionsTableConfig: TableConfig = {\r\n showFilter: true,\r\n flatButtons: true,\r\n columns: [\r\n { name: 'name', type: 'text' },\r\n { name: 'description', type: 'text' },\r\n { name: 'departmentName', type: 'chip', detailsConfig: this.departmentDetailsConfig, alias: 'Department' },\r\n ],\r\n buttons: [\r\n { name: 'create', display: 'Create', dialog: true, action: { url: 'positions?action=create', method: 'post' } },\r\n {\r\n name: 'view',\r\n dialog: true,\r\n detailsConfig: {\r\n formConfig: this.positionFormConfig ,\r\n heroField: 'positionID',\r\n buttons: [this.editPositionButton],\r\n tableConfigs: [\r\n {\r\n ...this.employeesTableConfig,\r\n loadAction: { url: 'employees/x/x' }, loadCriteria: 'position', loadIDField: 'positionID',\r\n columns: this.employeesTableConfig.columns.filter(x => ['departmentName', 'positionName'].includes(x.name) == false),\r\n tabTitle: 'Employees',\r\n elevation: 'none',\r\n }\r\n ],\r\n }\r\n },\r\n this.editPositionButton,\r\n { name: 'delete', dialog: true, action: { url: 'positions?action=delete', method: 'post' } },\r\n ],\r\n loadAction: { url: 'positions/all/x' },\r\n formConfig: this.positionFormConfig\r\n }\r\n\r\n\r\n //--------------------------Departments-------------------------\r\n\r\n departmentTableConfig: TableConfig = {\r\n showFilter: true,\r\n minColumns: ['name'],\r\n flatButtons: true,\r\n columns: [\r\n // { name: 'departmentID', type: 'number', alias: 'ID' },\r\n { name: 'name', type: 'text' },\r\n ],\r\n buttons: [\r\n { name: 'create', display: 'Create', dialog: true, action: { url: 'departments?action=create', method: 'post' } },\r\n {\r\n name: 'view',\r\n dialog: true,\r\n detailsConfig: {\r\n formConfig: this.departmentFormConfig,\r\n heroField: 'departmentID',\r\n buttons: [this.editDepartmentButton],\r\n tableConfigs: [\r\n {\r\n ...this.employeesTableConfig,\r\n loadAction: { url: 'employees/x/x' }, loadCriteria: 'department', loadIDField: 'departmentID',\r\n columns: this.employeesTableConfig.columns.filter(x => ['departmentName', 'positionName'].includes(x.name) == false),\r\n tabTitle: 'Employees',\r\n elevation: 'none',\r\n },\r\n {\r\n ...this.positionsTableConfig,\r\n loadAction: { url: 'positions/x/x' }, loadCriteria: 'department', loadIDField: 'departmentID',\r\n tabTitle: 'Positions',\r\n elevation: 'none',\r\n\r\n }\r\n ],\r\n }\r\n },\r\n this.editDepartmentButton,\r\n { name: 'delete', dialog: true, action: { url: 'departments?action=delete', method: 'post' } },\r\n ],\r\n loadAction: { url: 'departments/all/x' },\r\n formConfig: this.departmentFormConfig\r\n }\r\n\r\n\r\n //--------------------------Contact Persons-------------------------\r\n contactPersonFormConfig: FormConfig = {\r\n title: 'Contact Person',\r\n includeAudit: true,\r\n fields: [\r\n { name: 'name', type: 'text', span : true },\r\n { name: 'mobile', type: 'text' },\r\n { name: 'email', type: 'text' },\r\n { name: 'contactMethods', type: 'composite', span: true, subfields :[\r\n { name: 'canCall', type: 'checkbox', alias: 'Call' },\r\n { name: 'canSMS', type: 'checkbox', alias: 'SMS' },\r\n { name: 'canWhatsApp', type: 'checkbox', alias: 'WhatsApp' }\r\n ] },\r\n\r\n ],\r\n reset: true\r\n };\r\n\r\n contactPersonTableConfig: TableConfig = {\r\n tabTitle: 'Contacts',\r\n showFilter: true,\r\n minColumns: ['name', 'contactMethods'],\r\n elevation: 'none',\r\n flatButtons: true,\r\n columns: [\r\n { name: 'name', type: 'text', },\r\n { name: 'mobile', type: 'text' },\r\n { name: 'email', type: 'text' },\r\n {\r\n name: 'contactMethods',\r\n type: 'icon',\r\n icons: [\r\n { name: 'call', color: 'green', condition: x => x.canCall, tip: 'Available for Calls' },\r\n { name: 'sms', color: 'green', condition: x => x.canSMS, tip: 'Available for SMS' },\r\n { name: 'forum', color: 'green', condition: x => x.canWhatsApp, tip: 'Available on WhatsApp' }\r\n ]\r\n }\r\n ],\r\n buttons: [\r\n { name: 'create', display: 'Add', dialog: true, action: { url: 'contactpersons?action=create', method: 'post' }, confirm: { message: 'Add contact person?' } },\r\n { name: 'edit', dialog: true, action: { url: 'contactpersons?action=edit', method: 'post' } },\r\n { name: 'delete', dialog: true, action: { url: 'contactpersons?action=delete', method: 'post' } }\r\n ],\r\n formConfig: this.contactPersonFormConfig\r\n };\r\n\r\n\r\n //--------------------------Customers-------------------------\r\n customerFormConfig: FormConfig = {\r\n security: { allow: [this.capCustomers] },\r\n includeAudit: true,\r\n title : 'Customer',\r\n fields: [\r\n { name: 'name', type: 'text', required: true },\r\n { name: 'phone', type: 'text' },\r\n { name: 'contactPerson', type: 'text' },\r\n { name: 'email', type: 'text' },\r\n { name: 'address', type: 'text', rows: 2, span: true },\r\n { name: 'customerTenantID', alias: 'Customer Tenant', type: 'text', loadAction: { url: 'tenants/list/x' } , nullable: true },\r\n ],\r\n loadAction: { url: 'customers/id' },\r\n heroField: 'customerID',\r\n\r\n reset: true,\r\n }\r\n\r\n customerCreateButton : Button = { name: 'create', display: 'Create', dialog: true, action: { url: 'customers?action=create', method: 'post' } }\r\n customerEditButton: Button = { name: 'edit', dialog: true, action: { url: 'customers?action=edit', method: 'post' } }\r\n\r\n customerDetailsConfig: DetailsDialogConfig = {\r\n formConfig : this.customerFormConfig,\r\n heroField : 'customerID',\r\n tableConfigs: [\r\n {\r\n ...this.contactPersonTableConfig,\r\n loadAction: { url: 'contactpersons/customer/x' },\r\n loadCriteria: 'customer',\r\n loadIDField: 'customerID'\r\n }\r\n ],\r\n buttons: [\r\n this.customerCreateButton,\r\n this.customerEditButton\r\n ]\r\n };\r\n\r\n customersTableConfig: TableConfig = {\r\n showFilter: true,\r\n minColumns: ['name'],\r\n flatButtons: true,\r\n logResponse: true,\r\n maxButtonsCount: 3,\r\n collapseButtons : true,\r\n\r\n columns: [\r\n\r\n { name: 'name', type: 'text' },\r\n { name: 'phone', type: 'text' },\r\n { name: 'contactPerson', type: 'text' },\r\n { name: 'isLinked', type: 'checkbox', alias: 'Linked' },\r\n\r\n ],\r\n\r\n buttons: [\r\n this.customerCreateButton,\r\n { name: 'view', dialog: true, detailsConfig: this.customerDetailsConfig },\r\n { name: 'edit', dialog: true, detailsConfig: this.customerDetailsConfig },\r\n { name: 'delete', dialog: true, action: { url: 'customers?action=delete', method: 'post' } },\r\n ],\r\n\r\n loadAction: { url: 'customers/all/x' },\r\n formConfig: this.customerFormConfig\r\n }\r\n\r\n\r\n //--------------------------Suppliers-------------------------\r\n supplierFormConfig: FormConfig = {\r\n security: { allow: [this.capSuppliers] },\r\n includeAudit: true,\r\n title: 'Supplier',\r\n fields: [\r\n { name: 'name', type: 'text', required: true },\r\n { name: 'phone', type: 'text' },\r\n { name: 'contactPerson', type: 'text' },\r\n { name: 'email', type: 'text' },\r\n { name: 'address', type: 'text', rows: 2, span: true },\r\n ],\r\n\r\n loadAction: { url: 'suppliers/id' },\r\n heroField: 'supplierID',\r\n }\r\n\r\n supplierCreateButton : Button = { name: 'create', display: 'Create', dialog: true, action: { url: 'suppliers?action=create', method: 'post' } }\r\n supplierEditButton : Button = { name: 'edit', dialog: true, action: { url: 'suppliers?action=edit', method: 'post' } }\r\n\r\n supplierDetailsConfig: DetailsDialogConfig = {\r\n formConfig : this.supplierFormConfig,\r\n heroField : 'supplierID',\r\n tableConfigs: [\r\n {\r\n ...this.contactPersonTableConfig,\r\n loadAction: { url: 'contactpersons/supplier/x' },\r\n loadCriteria: 'supplier',\r\n loadIDField: 'supplierID'\r\n }\r\n ],\r\n buttons : [\r\n this.supplierCreateButton,\r\n this.supplierEditButton,\r\n ]\r\n };\r\n\r\n suppliersTableConfig: TableConfig = {\r\n showFilter: true,\r\n minColumns: ['name'],\r\n flatButtons: true,\r\n columns: [\r\n { name: 'name', type: 'text' },\r\n { name: 'phone', type: 'text' },\r\n { name: 'contactPerson', type: 'text' },\r\n ],\r\n\r\n buttons: [\r\n this.supplierCreateButton,\r\n { name: 'view', dialog: true, detailsConfig: this.supplierDetailsConfig },\r\n { name: 'edit', dialog: true, detailsConfig: this.supplierDetailsConfig },\r\n { name: 'delete', dialog: true, action: { url: 'suppliers?action=delete', method: 'post' } },\r\n ],\r\n\r\n loadAction: { url: 'suppliers/all/x' },\r\n formConfig: this.supplierFormConfig\r\n }\r\n\r\n\r\n //--------------------------Notifications-------------------------\r\n\r\n notificationOptions = [\r\n { name: 'UI Only', value: 1 },\r\n { name: 'UI + Email', value: 3 },\r\n // { name: 'UI + Email + SMS', value: 7 },\r\n { name: 'UI + WhatsApp', value: 9 },\r\n { name: 'UI + Telegram', value: 17 },\r\n { name: 'UI + Telegram + WhatsApp', value: 25 },\r\n { name: 'All Channels', value: 31 }\r\n ]\r\n\r\n\r\n\r\n //--------------------------Approvals-------------------------\r\n\r\n\r\n approvalHistoryFormConfig : FormConfig = {\r\n title: 'Approval History',\r\n fields: [\r\n { name: 'levelName', type: 'text', readonly: true, alias: 'Level' },\r\n { name: 'statusName', type: 'text', readonly: true, alias: 'Status' },\r\n { name: 'comments', type: 'text', readonly: true, span: true, rows: 3, copyContent: true },\r\n ],\r\n includeAudit: true\r\n }\r\n\r\n //Approval History\r\n approvalHistoryTableConfig: TableConfig = {\r\n tabTitle: 'Trail',\r\n elevation: 'none',\r\n minColumns: ['createdDate', 'levelName', 'statusName'],\r\n flatButtons: true,\r\n showFilter : true,\r\n columns: [\r\n { name: 'createdDate', type: 'datetime', alias : 'Date' },\r\n { name: 'levelName', type: 'text', alias: 'Level' },\r\n {\r\n name: 'statusName', type: 'text', alias: 'Status',\r\n colors: [\r\n { name: '#90A4AE', condition: x => x.status === 0 },\r\n { name: '#66BB6A', condition: x => x.status === 1 },\r\n { name: '#F44336', condition: x => x.status === 2 }\r\n ]\r\n },\r\n { name: 'comments', type: 'text', },\r\n { name: 'createdByName', type: 'text', alias: 'By' },\r\n\r\n ],\r\n buttons: [\r\n { name: 'view', dialog: true }\r\n ],\r\n\r\n formConfig : this.approvalHistoryFormConfig,\r\n\r\n loadAction: { url: 'approvalhistory/approval/x' },\r\n loadCriteria: 'approval',\r\n loadIDField: 'approvalID'\r\n };\r\n\r\n\r\n\r\n //approvals form\r\n approvalFormConfig: FormConfig = {\r\n title: 'Approval',\r\n fields: [\r\n { name: 'blank', type: 'blank', span: true },\r\n { name: 'statusName', type: 'label', alias: 'Status', span: true },\r\n { name: 'message', type: 'text', required: true, span: true, rows: 3 },\r\n\r\n ],\r\n loadAction: { url: 'approvals/id' },\r\n heroField: 'approvalID'\r\n };\r\n\r\n\r\n\r\n\r\n // approval action dialog\r\n approvalActionFormConfig: FormConfig = {\r\n title: 'Approval Action',\r\n fixedTitle: true,\r\n fields: [\r\n {\r\n name: 'comments', type: 'text', required: false, span: true, rows: 3,\r\n infoMessage: 'Enter your comments about this approval action. This will be visible in the approval history.'\r\n }\r\n ]\r\n };\r\n\r\n approveActionDetailsConfig: DetailsDialogConfig = {\r\n formConfig: {\r\n ...this.approvalActionFormConfig,\r\n fields: [\r\n {\r\n name: 'comments', type: 'text', required: false, span: true, rows: 3,\r\n infoMessage: 'Enter your comments about this approval action. This will be visible in the approval history.'\r\n }\r\n ],\r\n },\r\n mode: 'edit',\r\n buttons: [\r\n { name: 'edit', display: 'Approve', color: 'green', action: { url: 'approve', method: 'post' } } //url preconfigured to be dynamic\r\n ]\r\n };\r\n\r\n declineActionDetailsConfig: DetailsDialogConfig = {\r\n formConfig: {...this.approvalActionFormConfig,\r\n fields: [\r\n {\r\n name: 'comments', type: 'text', required: true, span: true, rows: 3,\r\n infoMessage: 'Enter your comments about this approval action. This will be visible in the approval history.',\r\n hint : 'Decline comment is required !'\r\n }\r\n ],\r\n },\r\n mode: 'edit',\r\n buttons: [\r\n { name: 'edit', display: 'Decline', color: 'red', action: { url: 'decline', method: 'post' } } //url preconfigured to be dynamic\r\n ]\r\n }\r\n\r\n\r\n\r\n approveButton: Button = {\r\n name: 'approve', tip: 'Approve Request', dialog: true, inDialog: true, icon: { name: 'done' }, color: 'green', detailsConfig: this.approveActionDetailsConfig, ignorePendingApproval: true,\r\n visible: x => x && x.canAction && (!x.isMyApprovalRequest || this.myRole[this.capSelfApproval.name]),\r\n }\r\n\r\n declineButton: Button = {\r\n name: 'decline', tip: 'Decline Request', dialog: true, inDialog: true, icon: { name: 'close' }, color: 'red', detailsConfig: this.declineActionDetailsConfig, ignorePendingApproval: true,\r\n visible: x => x && x.canAction && (!x.isMyApprovalRequest || this.myRole[this.capSelfApproval.name]),\r\n }\r\n\r\n cancelButton: Button = {\r\n name: 'cancel', tip: 'Cancel Approval', inDialog: true, icon: { name: 'cancel' }, color: 'red', action: { url: 'cancel', method: 'post', }, ignorePendingApproval: true, //url preconfigured to be dynamic\r\n confirm: { message: 'Cancel approval request? This will revert changes and stop the approval process.' },\r\n visible: x => x && x.canCancel\r\n }\r\n\r\n approvalDetailsConfig: DetailsDialogConfig = {\r\n formConfig: this.approvalFormConfig,\r\n heroField: 'approvalID',\r\n tableConfigs: [this.approvalHistoryTableConfig],\r\n\r\n stepConfig: {\r\n steps: [],\r\n loadAction: { url: `approvals/steps/{id}` },\r\n loadIDField: 'approvalID',\r\n valueField: 'currentLevel'\r\n },\r\n\r\n buttons : [\r\n this.approveButton,\r\n this.declineButton,\r\n this.cancelButton\r\n ]\r\n\r\n };\r\n\r\n\r\n viewApprovalButton: Button = {\r\n name: 'info', tip: 'Approval Information', dialog: true, icon: { name: 'info', }, detailsConfig: this.approvalDetailsConfig, ignorePendingApproval: true,\r\n visible: x => x.canAction || x.canCancel\r\n }\r\n\r\n\r\n //received approvals\r\n receivedApprovalsTableConfig: TableConfig = {\r\n showFilter: true,\r\n minColumns: ['message', 'statusName'],\r\n minButtons: ['view', 'approve', 'decline'],\r\n flatButtons: true,\r\n greyOut: (x) => x.isGreyedOut,\r\n // logResponse: true,\r\n collapseButtons: true,\r\n columns: [\r\n { name: 'createdDate', type: 'datetime', alias: 'Date' },\r\n { name: 'createdByName', alias: 'Request By', type: 'text' },\r\n { name: 'message', type: 'text' },\r\n {\r\n name: 'typeName', alias: 'Type', type: 'chip',\r\n colors: [\r\n { name: '#66BB6A', condition: x => x.type === 0 },\r\n { name: 'orange', condition: x => x.type === 1 },\r\n { name: '#F44336', condition: x => x.type === 2 }\r\n ]\r\n },\r\n {\r\n name: 'statusName', alias: 'Status', type: 'chip', detailsConfig: this.approvalDetailsConfig,\r\n colors: [\r\n { name: '#90A4AE', condition: x => x.status === 0 },\r\n { name: '#66BB6A', condition: x => x.status === 1 },\r\n { name: '#F44336', condition: x => x.status === 2 }\r\n ]\r\n },\r\n {\r\n name: 'currentLevelName', type: 'text', alias: 'Current Level',\r\n icons: [\r\n { name: 'done', color: '#66BB6A', condition: x => x.status === 'Approved', tip: 'Approved' },\r\n { name: 'close', color: '#F44336', condition: x => x.status === 'Declined', tip: 'Declined' },\r\n { name: 'schedule', color: '#FFC107', condition: x => x.status === 'Pending', tip: 'Pending' }\r\n ]\r\n },\r\n { name: 'updatedByName', alias: 'Actioned By', type: 'text' },\r\n { name: 'updatedDateDisplay', type: 'datetime', alias: 'Actioned Date' },\r\n ],\r\n\r\n buttons: [\r\n this.viewApprovalButton,\r\n this.approveButton,\r\n this.declineButton,\r\n this.cancelButton,\r\n ],\r\n\r\n loadAction: { url: 'approvals/all/x' }\r\n };\r\n\r\n\r\n //send approvals\r\n sentApprovalsTableConfig: TableConfig = {\r\n ...this.receivedApprovalsTableConfig,\r\n buttons: [\r\n this.viewApprovalButton,\r\n this.cancelButton,\r\n ],\r\n loadAction: { url: 'approvals/sent/x' }\r\n };\r\n\r\n\r\n //---------------------------Other code\r\n\r\n private listCache: { [key: string]: any } = {};\r\n private cacheTimestamps: { [key: string]: number } = {};\r\n private ongoingRequests: { [key: string]: Observable<ApiResponse> } = {};\r\n\r\n public CallApi(action: Action, data: any = '' ) {\r\n\r\n\r\n if (!action?.url) {\r\n console.warn('Invalid action or missing URL');\r\n return of({ success: false, message: 'Invalid action configuration' });\r\n }\r\n\r\n console.log(\"calling\", action);\r\n\r\n\r\n if (!action.method || action.method === 'get') {\r\n return this.handleCachedCall(action);\r\n } else if (action.method === 'post') {\r\n if (action.isFormData) {\r\n return this.httpService.Post_FormData(action.url, data);\r\n } else if (action.url === 'approve' || action.url === 'decline' || action.url === 'cancel') {\r\n return this.httpService.Post(`${data.endpoint}/approve?action=${action.url}`, data);\r\n } else {\r\n return this.httpService.Post(action.url, data);\r\n }\r\n } else {\r\n return this.httpService.Post(action.url, data);\r\n }\r\n\r\n }\r\n\r\n private handleCachedCall(action: Action): Observable<ApiResponse> {\r\n const cacheKey = this.generateCacheKey(action.url);\r\n const currentTime = Date.now();\r\n \r\n // Check if we should use cache\r\n if (!action.skipCache && this.isCacheValid(cacheKey, action)) {\r\n console.log('Using cache:', cacheKey);\r\n return of({\r\n success: true,\r\n message: 'success',\r\n data: this.listCache[cacheKey]\r\n });\r\n }\r\n\r\n // Check if there's an ongoing request for the same URL\r\n if (this.ongoingRequests[cacheKey]) {\r\n console.log('Using ongoing request for:', cacheKey);\r\n return this.ongoingRequests[cacheKey];\r\n }\r\n\r\n // Determine cache duration\r\n const cacheDuration = this.getCacheDuration(action);\r\n \r\n // Only cache if duration is specified or it's a list endpoint\r\n if (cacheDuration > 0) {\r\n // Create and store the ongoing request\r\n this.ongoingRequests[cacheKey] = this.httpService.Get(action.url).pipe(\r\n timeout(60000), // 1 minute timeout for waiting requests\r\n tap((response: ApiResponse) => {\r\n if (response.success && response?.data) {\r\n this.listCache[cacheKey] = response.data;\r\n this.cacheTimestamps[cacheKey] = currentTime;\r\n }\r\n }),\r\n finalize(() => {\r\n delete this.ongoingRequests[cacheKey];\r\n }),\r\n share() \r\n );\r\n\r\n return this.ongoingRequests[cacheKey];\r\n } else {\r\n // No caching, just make the request\r\n console.log('No caching for:', cacheKey);\r\n return this.httpService.Get(action.url);\r\n }\r\n }\r\n\r\n private generateCacheKey(url: string): string {\r\n return url; // URL already includes query params\r\n }\r\n\r\n private isCacheValid(cacheKey: string, action: Action): boolean {\r\n if (!this.listCache[cacheKey] || !this.cacheTimestamps[cacheKey]) {\r\n return false;\r\n }\r\n\r\n const cacheDuration = this.getCacheDuration(action);\r\n const currentTime = Date.now();\r\n const cacheAge = currentTime - this.cacheTimestamps[cacheKey];\r\n \r\n return cacheAge < (cacheDuration * 60 * 1000); \r\n }\r\n\r\n private getCacheDuration(action: Action): number {\r\n // If explicitly specified in action, use that\r\n if (action.cacheDurationMinutes !== undefined) {\r\n return action.cacheDurationMinutes;\r\n }\r\n \r\n // Default to 1 minute for list endpoints\r\n if (action.url.includes('/list/')) {\r\n return 1;\r\n }\r\n \r\n // No caching by default\r\n return 0;\r\n }\r\n\r\n public ClearCache(): void {\r\n this.listCache = {};\r\n this.cacheTimestamps = {};\r\n\r\n\r\n Object.keys(this.ongoingRequests).forEach(key => {\r\n delete this.ongoingRequests[key];\r\n });\r\n }\r\n\r\n public invalidateListCache(entityUrl: string): void {\r\n Object.keys(this.listCache).forEach(key => {\r\n if (key.includes(entityUrl)) {\r\n delete this.listCache[key];\r\n delete this.cacheTimestamps[key];\r\n delete this.ongoingRequests[key];\r\n }\r\n });\r\n }\r\n\r\n\r\n public CheckWelcomed(path: string = 'home/admin/welcome') {\r\n this.CallApi({ url: 'tenant/welcome/x' }).subscribe((x) => {\r\n if (!x.data) {\r\n this.Navigate(path)\r\n }\r\n })\r\n }\r\n\r\n\r\n\r\n public Navigate(path: string) {\r\n this.router.navigate([path]);\r\n }\r\n\r\n public NavigateWithValue(path: string, value : string){\r\n this.router.navigate([path], {\r\n queryParams: { v: value },\r\n queryParamsHandling: 'merge',\r\n skipLocationChange: false\r\n });\r\n }\r\n\r\n public GetNavigationValue(){\r\n if (this.route.snapshot.queryParams[\"v\"] != undefined) {\r\n return this.route.snapshot.queryParams[\"v\"]\r\n }else{\r\n return \"\";\r\n }\r\n }\r\n\r\n public tmpAccountID;\r\n\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","import { Injectable } from '@angular/core';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { Observable } from 'rxjs';\r\nimport { AlertMessage, AlertConfig, Button, Column, DetailsDialogConfig, TableConfig } from '../classes/Classes';\r\n// import { DetailsDialog } from '../components/table/detailsDialog.component';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { DetailsDialogProcessor } from '../classes/TinCore';\r\n// import { Button } from 'tin-spa';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DialogService {\r\n private smallScreen = false;\r\n\r\n constructor(\r\n private dialog: MatDialog,\r\n private breakpointObserver: BreakpointObserver\r\n ) {\r\n // Detect screen size changes\r\n this.breakpointObserver.observe([\"(max-width: 600px)\"]).subscribe((result: BreakpointState) => {\r\n this.smallScreen = result.matches;\r\n });\r\n }\r\n\r\n openDetailsDialog<T>( config: DetailsDialogConfig, dialogComponent: new (...args: any[]) => T ): {\r\n afterClosed: Observable<any>,\r\n inputChange: Observable<any>,\r\n dialogRef: MatDialogRef<T>\r\n } {\r\n const hasTables = config.tableConfigs?.length > 0;\r\n\r\n const dialogOptions = {\r\n width: config.options?.width ? config.options?.width : (this.smallScreen ? '900px' : (hasTables ? '90%' : '900px')),\r\n height: config.options?.height ? config.options?.height : (hasTables ? '90%' : 'auto'),\r\n data: config\r\n };\r\n\r\n const dialogRef = this.dialog.open(dialogComponent, dialogOptions);\r\n\r\n return {\r\n afterClosed: dialogRef.afterClosed(),\r\n inputChange: (dialogRef.componentInstance as any).inputChange,\r\n dialogRef: dialogRef\r\n };\r\n }\r\n\r\n openConfiguredDetailsDialog<T>( button: Button, row: any, dialogComponent: new (...args: any[]) => T ): Observable<any> {\r\n\r\n // const button = column ? { name: column.name, dialog: true, detailsConfig: column.detailsConfig } : config.buttons?.find(b => b.name === buttonName);\r\n\r\n // console.log('button', button);\r\n\r\n if (!button || !button.dialog) {\r\n return new Observable(observer => {\r\n observer.next({ action: 'doAction', name: button.name, row: row });\r\n observer.complete();\r\n });\r\n }\r\n\r\n let config = button.detailsConfig;\r\n\r\n //approval message\r\n if (row?.pendingApproval && !['Approval', 'Approval Action'].includes(config?.formConfig.title)) { //if pending and not the actual view approval dialog //&& config?.formConfig.title != 'Approval'\r\n let approvalAlerts: AlertConfig = { messages: [{ type: 'info', content: 'Waiting for approval', hiddenCondition: x => !x.pendingApproval }] }\r\n if (!config.formConfig.alertConfig){\r\n config.formConfig.alertConfig = approvalAlerts;\r\n }\r\n else if (config.formConfig.alertConfig.messages.filter(x => x.content === approvalAlerts.messages[0].content).length === 0) {\r\n config.formConfig.alertConfig.messages.push(approvalAlerts.messages[0]);\r\n }\r\n }\r\n\r\n\r\n\r\n let dialogConfig: DetailsDialogConfig = {\r\n formConfig: config.formConfig,\r\n buttons: config.buttons,\r\n details: row,\r\n stepConfig : config.stepConfig\r\n // heroField : config.heroField,\r\n\r\n };\r\n\r\n\r\n\r\n\r\n if (button.detailsConfig) {\r\n dialogConfig = button.name === 'create' ? {...button.detailsConfig, tableConfigs : undefined, stepConfig : undefined} : DetailsDialogProcessor.processDetailsConfig({ ...button.detailsConfig }, row);\r\n }else{\r\n dialogConfig = DetailsDialogProcessor.processDetailsConfig({...dialogConfig}, row);\r\n }\r\n\r\n\r\n\r\n if (button.detailsConfig && button.detailsConfig.mode) {\r\n dialogConfig.formConfig.mode = button.detailsConfig.mode;\r\n } else {\r\n dialogConfig.formConfig.mode = button.name === 'create' ? 'create' : (button.name === 'edit' ? 'edit' : 'view');\r\n }\r\n\r\n\r\n\r\n if (button.name === 'create') {\r\n dialogConfig.heroField = config.heroField;\r\n dialogConfig.heroValue = config.heroValue;\r\n }\r\n\r\n\r\n\r\n if (row?.updatedByDetails && dialogConfig.formConfig.includeAudit === true && !dialogConfig.formConfig.fields.some(f => f.name === 'updatedByDetails')) {\r\n dialogConfig.formConfig.fields.push(\r\n { name: 'updatedByDetails', type: 'string', span: true, readonly: true, size: '12px',}\r\n );\r\n }\r\n\r\n const dialogResult = this.openDetailsDialog(dialogConfig, dialogComponent);\r\n\r\n return new Observable(observer => {\r\n dialogResult.afterClosed.subscribe(result => {\r\n observer.next(result);\r\n observer.complete();\r\n });\r\n\r\n dialogResult.inputChange.subscribe(change => {\r\n observer.next({ action: 'inputChange', change: change });\r\n });\r\n });\r\n }\r\n\r\n openPrintDialog(htmlContent: any) {\r\n // Create hidden iframe for silent printing\r\n const iframe = document.createElement('iframe');\r\n iframe.style.position = 'absolute';\r\n iframe.style.width = '0';\r\n iframe.style.height = '0';\r\n iframe.style.border = 'none';\r\n iframe.style.visibility = 'hidden';\r\n \r\n document.body.appendChild(iframe);\r\n \r\n if (iframe.contentWindow) {\r\n iframe.contentWindow.document.open();\r\n iframe.contentWindow.document.write(htmlContent);\r\n iframe.contentWindow.document.close();\r\n \r\n // Wait for content to load, then print silently\r\n iframe.onload = () => {\r\n setTimeout(() => {\r\n if (iframe.contentWindow) {\r\n iframe.contentWindow.print();\r\n // Remove iframe after printing\r\n setTimeout(() => {\r\n document.body.removeChild(iframe);\r\n }, 1000);\r\n }\r\n }, 250);\r\n };\r\n }\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'spa-tin-spa',\r\n template: `\r\n <p>\r\n tin-spa works!\r\n </p>\r\n `,\r\n styles: [\r\n ]\r\n})\r\nexport class TinSpaComponent {\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 { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\n\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { RouterModule } from '@angular/router';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\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, MatProgressBarModule,\r\n\r\n MatSidenavModule,\r\n MatToolbarModule,\r\n RouterModule,\r\n MatExpansionModule,\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 { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { MessageService } from '../../services/message.service';\r\n\r\n@Component({\r\n selector: 'spa-suffix',\r\n templateUrl: './suffix.component.html',\r\n styleUrls: ['./suffix.component.css']\r\n})\r\nexport class SuffixComponent implements OnInit {\r\n\r\n constructor(private messageService: MessageService) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() label: string;\r\n @Input() infoMessage: string;\r\n @Input() copyContent: boolean = false;\r\n\r\n @Input() isHovered: boolean = false;\r\n @Input() clearContent: boolean = false;\r\n @Input() value;\r\n\r\n @Output() infoClick = new EventEmitter<void>();\r\n @Output() copyClick = new EventEmitter<string>();\r\n @Output() clearClick = new EventEmitter<void>();\r\n @Output() valueChange = new EventEmitter();\r\n\r\n onInfoClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n if (this.infoMessage) {\r\n this.messageService.info(this.infoMessage);\r\n }\r\n this.infoClick.emit();\r\n }\r\n\r\n onCopyClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n if (this.value) {\r\n navigator.clipboard.writeText(this.value).then(() => {\r\n this.messageService.toast('Copied');\r\n });\r\n }\r\n this.copyClick.emit(this.value);\r\n }\r\n\r\n onClearClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.value = '';\r\n this.valueChange.emit(this.value);\r\n this.clearClick.emit();\r\n }\r\n}\r\n","<label *ngIf=\"label\">&nbsp; {{label}}</label>\r\n<button mat-icon-button *ngIf=\"copyContent && isHovered\" (click)=\"onCopyClick($event)\" matTooltip=\"Copy Content\" matTooltipPosition=\"above\" style=\"opacity: 1;\">\r\n <mat-icon class=\"smallIcon\">content_copy</mat-icon>\r\n</button>\r\n<button mat-icon-button *ngIf=\"clearContent && isHovered\" (click)=\"onClearClick($event)\" matTooltip=\"Clear Content\" matTooltipPosition=\"above\" style=\"opacity: 1;\">\r\n <mat-icon class=\"smallIcon\">close</mat-icon>\r\n</button>\r\n<button mat-icon-button *ngIf=\"infoMessage\" (click)=\"onInfoClick($event)\" [matTooltip]=\"infoMessage\" matTooltipPosition=\"above\" style=\"opacity: 1;\">\r\n <mat-icon class=\"smallIcon\" style=\"color: steelblue;\">info</mat-icon>\r\n</button>\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\nimport { Core } from '../../classes/TinCore';\r\nimport { Action, ApiResponse } from '../../classes/Classes';\r\nimport { DataServiceLib } from '../../services/datalib.service';\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(private dataService: DataServiceLib) { }\r\n\r\n ngOnInit(): void {\r\n\r\n if (!this.options){\r\n this.options = []\r\n }\r\n\r\n if (this.loadAction){\r\n this.getData(this.loadAction);\r\n }else{\r\n if (this.options.length > 0) {\r\n this.initFilter();\r\n }\r\n }\r\n\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 this.initControl(this.control)\r\n\r\n this.initControl(this.myControl)\r\n\r\n }\r\n\r\n\r\n filteredOptions: Observable<string[]>;\r\n multiDimension = false;\r\n\r\n // options: FormGroup;\r\n hideRequiredControl = new FormControl(true);\r\n hide = true; //for password only\r\n\r\n @Input() appearance: 'legacy' | 'standard' | 'fill' | 'outline' = 'standard';\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 = 1;\r\n @Input() width = \"100%\"\r\n @Input() copyContent = false;\r\n @Input() clearContent = false;\r\n\r\n\r\n //Autocomplete items\r\n @Input() options: any = [];\r\n @Input() optionDisplay = \"name\"; // Default to name if not provided\r\n @Input() optionValue = \"value\"; // Default to value if not provided\r\n @Input() loadAction: Action;\r\n\r\n //validation input\r\n @Input() required = true;\r\n @Input() min = 0;\r\n @Input() max = 9000000000000000; //Math.max\r\n @Input() regex?: { pattern: string; message: string };\r\n\r\n\r\n @Input() suffix: string;\r\n @Input() infoMessage: string;\r\n\r\n isHovered = false;\r\n onMouseEnter(): void {\r\n this.isHovered = true;\r\n }\r\n\r\n onMouseLeave(): void {\r\n this.isHovered = false;\r\n }\r\n\r\n private initFilter() {\r\n\r\n const objKeyList = Object.keys(this.options[0]);\r\n const firstKey = objKeyList[0];\r\n this.multiDimension = !Core.isNumber(firstKey);\r\n\r\n this.filteredOptions = this.myControl.valueChanges.pipe(\r\n startWith(\"\"),\r\n map((value) => this._filter(value))\r\n );\r\n\r\n this.myControl.setValue(this.getDisplayValue(this.value));\r\n }\r\n\r\n private _filter(value): string[] {\r\n if (!value) return this.options;\r\n\r\n const filterValue = value.toLowerCase();\r\n if (this.multiDimension) {\r\n return this.options.filter(option =>\r\n option[this.optionDisplay].toLowerCase().includes(filterValue)\r\n );\r\n }\r\n return this.options.filter(option =>\r\n option.toLowerCase().includes(filterValue)\r\n );\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\r\n const regexPattern = this.regex ? this.regex.pattern : '';\r\n control.setValidators([Validators.minLength(this.min), Validators.maxLength(this.max), Validators.pattern(regexPattern)]);\r\n this.control.updateValueAndValidity();\r\n }\r\n }\r\n\r\n getDisplayValue(value: any): string {\r\n if (!value || !this.options.length) return '';\r\n\r\n if (this.multiDimension) {\r\n const option = this.options.find(opt => opt[this.optionValue] === value);\r\n return option ? option[this.optionDisplay] : '';\r\n }\r\n return value;\r\n }\r\n\r\n\r\n //Events\r\n changed() {\r\n // Changed to handle both autocomplete and regular modes\r\n if (this.options.length > 0) {\r\n // For autocomplete, find the full option object to get proper value\r\n const selectedOption = this.multiDimension ?\r\n this.options.find(opt => opt[this.optionDisplay] === this.myControl.value) :\r\n this.options.find(opt => opt === this.myControl.value);\r\n\r\n // Emit the optionValue if available, otherwise emit the direct value\r\n const valueToEmit = selectedOption ?\r\n (this.multiDimension ? selectedOption[this.optionValue] : selectedOption) :\r\n this.myControl.value;\r\n\r\n this.value = valueToEmit;\r\n this.valueChange.emit(valueToEmit);\r\n } else {\r\n this.valueChange.emit(this.value);\r\n }\r\n }\r\n\r\n leaved(){\r\n this.leave.emit();\r\n \r\n\r\n\r\n if (this.regex && this.value) {\r\n const regexPattern = new RegExp(this.regex.pattern);\r\n if (!regexPattern.test(this.value)) {\r\n this.control.setErrors({ 'pattern': true });\r\n this.myControl.setErrors({ 'pattern': true });\r\n }\r\n }\r\n }\r\n\r\n clear(){\r\n this.value = \"\";\r\n this.valueChange.emit(this.value);\r\n }\r\n\r\n enterPressed() {\r\n this.enterPress.emit();\r\n }\r\n\r\n refresh(event: MouseEvent): void {\r\n event.stopPropagation();\r\n if (!this.loadAction) {\r\n return;\r\n }\r\n\r\n const refreshAction = {\r\n ...this.loadAction,\r\n forceRefresh: true\r\n };\r\n\r\n this.getData(refreshAction);\r\n }\r\n\r\n getData(action: Action) {\r\n if (!action) return;\r\n this.dataService.CallApi(action).subscribe((apiResponse: ApiResponse) => {\r\n if (apiResponse.success) {\r\n this.options = apiResponse.data;\r\n this.initFilter();\r\n }\r\n });\r\n }\r\n\r\n\r\n //validation\r\n\r\n\r\n myControl = new FormControl('', this.getValidators());\r\n control = new FormControl(this.value, this.getValidators());\r\n\r\n private getValidators() {\r\n const validators = [];\r\n \r\n if (this.required) {\r\n validators.push(Validators.required);\r\n }\r\n \r\n validators.push(Validators.minLength(this.min));\r\n validators.push(Validators.maxLength(this.max));\r\n \r\n if (this.regex) {\r\n validators.push(Validators.pattern(this.regex.pattern));\r\n }\r\n \r\n return validators;\r\n }\r\n\r\n validate(control: FormControl) : string{\r\n\r\n if ((this.required || this.min > 0) && control.hasError('required') ){\r\n return `Required`;\r\n }\r\n\r\n if (control.hasError('minlength') ){\r\n return `Minimun length is ${this.min}`;\r\n }\r\n\r\n if (control.hasError('maxlength')) {\r\n return `Maximum length is ${this.max}`;\r\n }\r\n\r\n\r\n\r\n if (control.hasError('pattern')) {\r\n return this.regex?.message || 'Invalid Input';\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n}\r\n","\r\n<!-- General Text -->\r\n<mat-form-field *ngIf=\"(!rows || rows == 1) && (format=='text' || format =='date') && options.length == 0\" [hideRequiredMarker]=\"!required\" [hintLabel]=\"hint\" [appearance]=\"appearance ?? 'legacy'\" [ngStyle]=\"{'width':width ?? '100%'}\" style=\"margin-right: 5px;\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\" >\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<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(control)}}</mat-error>\r\n <div matSuffix class=\"suffix-icons\">\r\n <spa-suffix [label]=\"suffix\" [infoMessage]=\"infoMessage\" [copyContent]=\"copyContent\" [clearContent]=\"clearContent\" (clearClick)=\"clear()\" [isHovered]=\"isHovered\" [(value)]=\"value\" ></spa-suffix>\r\n </div>\r\n</mat-form-field>\r\n\r\n\r\n<!-- password -->\r\n<mat-form-field class=\"spa-text\" *ngIf=\"format=='password'\" [hideRequiredMarker]=\"!required\" [hintLabel]=\"hint\" [ngStyle]=\"{'width':width ?? '100%'}\" style=\"margin-right: 5px\" [appearance]=\"appearance ?? 'legacy'\">\r\n <mat-label>{{display}}</mat-label>\r\n <input matInput [type]=\"hide ? 'password' : 'text'\" (keyup.enter)=\"enterPressed()\" (change)=\"changed()\" (blur)=\"leaved()\" [(ngModel)]=\"value\" autocomplete=\"off\" [placeholder]=\"placeholder\" [formControl]=\"control\" [required]=\"required\">\r\n <mat-error *ngIf=\"control.invalid\">{{validate(control)}}</mat-error>\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\r\n<!-- TextArea copy - Only change input to textarea and change ngif to not -->\r\n\r\n<mat-form-field *ngIf=\"rows > 1 && options.length == 0\" [hideRequiredMarker]=\"!required\" [hintLabel]=\"hint\" [ngStyle]=\"{'width':width ?? '100%'}\" style=\"margin-right: 5px;\" [appearance]=\"appearance ?? 'legacy'\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\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(control)}}</mat-error>\r\n <div matSuffix class=\"suffix-icons\">\r\n <spa-suffix [label]=\"suffix\" [infoMessage]=\"infoMessage\" [copyContent]=\"copyContent\" [clearContent]=\"clearContent\" (clearClick)=\"clear()\" [isHovered]=\"isHovered\" [(value)]=\"value\"></spa-suffix>\r\n </div>\r\n</mat-form-field>\r\n\r\n\r\n\r\n<!-- Auto Complete-->\r\n\r\n<mat-form-field *ngIf=\"(!rows || rows == 1) && format=='text' && options.length > 0\" [hideRequiredMarker]=\"!required\" [hintLabel]=\"hint\" [appearance]=\"appearance ?? 'legacy'\" [ngStyle]=\"{'width':width ?? '100%'}\" style=\"margin-right: 5px;\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\r\n <mat-label>{{display}}</mat-label>\r\n <input [type]=\"type\" [placeholder]=\"placeholder\" [formControl]=\"myControl\" matInput [matAutocomplete]=\"auto\" [required]=\"required\" [readonly]=\"readonly\">\r\n <mat-error *ngIf=\"control.invalid\">{{validate(myControl)}}</mat-error>\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"changed()\">\r\n <mat-option *ngFor=\"let option of filteredOptions | async\" [value]=\"multiDimension ? option[optionDisplay] : option\">\r\n {{multiDimension ? option[optionDisplay] : option}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <div matSuffix class=\"suffix-icons\">\r\n <button mat-icon-button *ngIf=\"loadAction && isHovered\" (click)=\"refresh($event)\" matTooltip=\"Refresh\" matTooltipPosition=\"above\">\r\n <mat-icon color=\"primary\">cached</mat-icon>\r\n </button>\r\n <spa-suffix [label]=\"suffix\" [infoMessage]=\"infoMessage\" [copyContent]=\"copyContent\" [clearContent]=\"clearContent\" (clearClick)=\"clear()\" [isHovered]=\"isHovered\" [(value)]=\"value\"></spa-suffix>\r\n </div>\r\n</mat-form-field>\r\n\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { MessageService } from '../../services/message.service';\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(private messageService: MessageService,) { }\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 @Input() infoMessage: string;\r\n @Output() infoClick = new EventEmitter<void>();\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 onInfoClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.infoClick.emit();\r\n\r\n }\r\n\r\n}\r\n","\r\n\r\n<mat-checkbox color=\"primary\" [(ngModel)]=\"value\" (change)=\"changed()\" (click)=\"clicked()\" [disabled]=\"readonly\">{{display}}</mat-checkbox>\r\n\r\n<!-- <div class=\"suffix-icons\">\r\n\r\n <mat-checkbox color=\"primary\" [(ngModel)]=\"value\" (change)=\"changed()\" (click)=\"clicked()\" [disabled]=\"readonly\">{{display}}</mat-checkbox>\r\n\r\n <mat-icon *ngIf=\"infoMessage\" (click)=\"onInfoClick($event)\" matTooltip=\"Info\" matTooltipPosition=\"above\" style=\"color: steelblue;font-size: 15px;margin-left: 5px;margin-top: 8px;\">info</mat-icon>\r\n\r\n</div> -->\r\n\r\n","import { Component, EventEmitter, Input, OnInit, Output, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { FormControl, Validators } from '@angular/forms';\r\nimport { Core } from '../../classes/TinCore';\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, OnChanges {\r\n @Input() required = true;\r\n @Input() min = \"1900-01-01\";\r\n @Input() max = \"9999-01-01\";\r\n @Input() readonly = false;\r\n @Input() hint = \"\";\r\n @Input() value: string | null = Core.nowDate(true);\r\n\r\n @Input() display = \"\";\r\n @Input() placeholder = \"\";\r\n @Input() width = \"100%\";\r\n\r\n @Output() valueChange = new EventEmitter<string | null>();\r\n\r\n\r\n @Input() infoMessage: string;\r\n @Output() infoClick = new EventEmitter<void>();\r\n\r\n onInfoClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.infoClick.emit();\r\n }\r\n\r\n minDate: FormControl;\r\n maxDate: FormControl;\r\n control: FormControl;\r\n\r\n ngOnInit(): void {\r\n this.initializeDateControls();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['readonly']) {\r\n this.updateControlState();\r\n }\r\n if (changes['value']) {\r\n\r\n\r\n this.control?.setValue(this.value ? new Date(this.value) : null);\r\n }\r\n }\r\n\r\n private initializeDateControls(): void {\r\n this.minDate = new FormControl(new Date(this.min));\r\n this.maxDate = new FormControl(new Date(this.max));\r\n \r\n\r\n\r\n const initialValue = this.value ? new Date(this.value) : null;\r\n this.control = new FormControl({ value: initialValue, disabled: this.readonly });\r\n\r\n this.updateControlState();\r\n setTimeout(() => this.onChangeEvent(), 5);\r\n }\r\n\r\n private updateControlState(): void {\r\n if (this.readonly) {\r\n this.control?.disable();\r\n } else {\r\n this.control?.enable();\r\n }\r\n }\r\n\r\n onChangeEvent(): void {\r\n\r\n\r\n const controlValue = this.control.value;\r\n const formattedDate = controlValue ? Core.getFormatedDate2(controlValue, true) : null;\r\n this.valueChange.emit(formattedDate);\r\n }\r\n\r\n validate(control: FormControl): string {\r\n if (control.hasError('matDatepickerMin')) {\r\n return `Minimum date is ${this.min}`;\r\n }\r\n if (control.hasError('matDatepickerMax')) {\r\n return `Maximum date is ${this.max}`;\r\n }\r\n return \"\";\r\n }\r\n}\r\n","\r\n<mat-form-field [ngStyle]=\"{'width':width ?? '100%'}\">\r\n <input [formControl]=\"control\" [min]=\"minDate.value\" [max]=\"maxDate.value\" matInput [matDatepicker]=\"picker_date\" (dateInput)=\"onChangeEvent()\" [placeholder]=\"display\" [readonly]=\"true\">\r\n <mat-datepicker-toggle matSuffix [for]=\"picker_date\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker_date></mat-datepicker>\r\n <mat-error *ngIf=\"control.invalid\">{{validate(control)}}</mat-error>\r\n <div matSuffix class=\"suffix-icons\">\r\n <button mat-icon-button *ngIf=\"infoMessage\" (click)=\"onInfoClick($event)\" matTooltip=\"Info\" matTooltipPosition=\"above\" >\r\n <mat-icon style=\"color: steelblue;\">info</mat-icon>\r\n </button>\r\n </div>\r\n</mat-form-field>\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 @Input() width = \"100%\";\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 @Input() infoMessage: string;\r\n @Output() infoClick = new EventEmitter<void>();\r\n\r\n onInfoClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.infoClick.emit();\r\n }\r\n\r\n}\r\n","<mat-form-field [ngStyle]=\"{'width':width ?? '100%'}\" >\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 <div matSuffix class=\"suffix-icons\">\r\n <button mat-icon-button *ngIf=\"infoMessage\" (click)=\"onInfoClick($event)\" matTooltip=\"Info\" matTooltipPosition=\"above\">\r\n <mat-icon style=\"color: steelblue;\">info</mat-icon>\r\n </button>\r\n </div>\r\n</mat-form-field>\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 @Input() suffix = \"\";\r\n @Input() size = \"\";\r\n}\r\n","<div *ngIf=\"format=='text'\">\r\n <label style=\"font-weight: 500\">{{display}} :</label> &nbsp; \r\n <label [ngStyle]=\"{'font-size': size || '20px', 'font-weight': '300'}\">{{value}} {{suffix ?? ''}}</label> &nbsp;\r\n</div>\r\n\r\n<div *ngIf=\"format=='date'\">\r\n <label style=\"font-weight: 500\">{{display}} :</label> &nbsp; \r\n <label [ngStyle]=\"{'font-size': size || '20px', 'font-weight': '300'}\">{{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; \r\n <label [ngStyle]=\"{'font-size': size || '20px', 'font-weight': '300'}\">{{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; \r\n <label [ngStyle]=\"{'font-size': size || '20px', 'font-weight': '300'}\">{{value | currency:'USD':''}} {{suffix ?? ''}}</label> &nbsp;\r\n</div>\r\n\r\n<div *ngIf=\"format=='number'\">\r\n <label style=\"font-weight: 500\">{{display}} :</label> &nbsp; \r\n <label [ngStyle]=\"{'font-size': size || '20px', 'font-weight': '300'}\">{{value | currency:'USD':''}} {{suffix ?? ''}}</label> &nbsp;\r\n</div>","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { Action, ApiResponse, Field } from '../../classes/Classes';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'spa-select-common',\r\n templateUrl: './select-common.component.html',\r\n styleUrls: ['./select-common.component.css']\r\n})\r\nexport class SelectCommonComponent implements OnInit, OnDestroy {\r\n\r\n constructor(protected messageService: MessageService, protected dataService: DataServiceLib,) { }\r\n\r\n ngOnInit(): void {\r\n\r\n if (this.placeholder == \"\") {\r\n this.placeholder = \"Select \" + this.display;\r\n }\r\n\r\n this.setDefaultValue();\r\n\r\n if (this.field?.optionsSubject) {\r\n this.subscription = this.field.optionsSubject.subscribe(newOptions => {\r\n if (newOptions) {\r\n this.options = newOptions;\r\n this.updateSelectedOptionHint();\r\n }\r\n });\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 //add a null option\r\n if (this.nullable && this.options && this.options.length > 0 && this.options[0][this.optionValue] != null) {\r\n this.options.unshift({ [this.optionValue]: null, [this.optionDisplay]: \"None\" })\r\n }\r\n\r\n this.updateSelectedOptionHint();\r\n }\r\n\r\n displayValue;\r\n isHovered = false;\r\n selectedOptionHint = \"\";\r\n\r\n private subscription: Subscription;\r\n\r\n @Input() width = \"100%\"\r\n @Input() readonly = false;\r\n @Input() required = true;\r\n @Input() defaultFirstValue = false;\r\n @Input() readonlyMode = \"\";\r\n @Input() hint = \"\";\r\n @Input() placeholder = \"\";\r\n @Input() multiple: boolean = false;\r\n\r\n @Input() display = \"\";\r\n @Input() value;\r\n @Input() options: any;\r\n @Input() masterOptions: any;\r\n @Input() masterField: string;\r\n @Input() optionValue = \"\";\r\n @Input() optionDisplay = \"\";\r\n @Input() optionDisplayExtra = \"\";\r\n @Input() nullable = false;\r\n\r\n @Input() infoMessage: string;\r\n @Input() copyContent = false;\r\n @Input() loadAction: Action;\r\n @Input() loadIDField: string;\r\n @Input() field: Field;\r\n @Input() data: any;\r\n\r\n @Output() valueChange = new EventEmitter();\r\n @Output() hoverChange = new EventEmitter<boolean>();\r\n\r\n setDefaultValue(){\r\n if (\r\n this.defaultFirstValue && this.options && this.options.length > 0 &&\r\n (this.value == null || this.value == undefined || (typeof (this.value) == 'string' && this.value == '') || (typeof (this.value) == 'number' && this.value == 0))\r\n ) {\r\n\r\n this.value = this.options[0][this.optionValue]\r\n this.changed();\r\n }\r\n }\r\n\r\n changed() {\r\n this.valueChange.emit(this.value);\r\n this.updateSelectedOptionHint();\r\n }\r\n\r\n private updateSelectedOptionHint(): void {\r\n if (!this.options || this.options.length === 0 || this.value == null || this.value == undefined) {\r\n this.selectedOptionHint = this.hint; // Fall back to component hint\r\n return;\r\n }\r\n\r\n const selectedOption = this.options.find(option => \r\n option[this.optionValue] === this.value\r\n );\r\n\r\n if (selectedOption && selectedOption.hint) {\r\n this.selectedOptionHint = selectedOption.hint; // Use option hint\r\n } else {\r\n this.selectedOptionHint = this.hint; // Fall back to component hint\r\n }\r\n }\r\n\r\n get computedHint(): string {\r\n return this.selectedOptionHint || this.hint;\r\n }\r\n\r\n onMouseEnter(): void {\r\n this.isHovered = true;\r\n this.hoverChange.emit(true);\r\n }\r\n\r\n onMouseLeave(): void {\r\n this.isHovered = false;\r\n this.hoverChange.emit(false);\r\n }\r\n\r\n refresh(event: MouseEvent): void {\r\n console.log(\"refresh clicked\")\r\n event.stopPropagation();\r\n if (!this.loadAction) {\r\n return;\r\n }\r\n\r\n const refreshAction : Action = {\r\n ...this.loadAction,\r\n skipCache: true\r\n };\r\n\r\n this.getData(refreshAction);\r\n }\r\n\r\n private transformLoadUrl(action: Action): Action {\r\n if (!action?.url || !this.loadIDField || !this.data) return action;\r\n\r\n const idValue = this.data[this.loadIDField];\r\n if (!idValue) return action;\r\n\r\n const urlParts = action.url.split('/');\r\n return {\r\n ...action,\r\n url: `${urlParts[0]}/${urlParts[1]}/${idValue}`\r\n };\r\n }\r\n\r\n getData(loadAction: Action) {\r\n\r\n if (!loadAction) return;\r\n if (this.masterField) return;\r\n\r\n const transformedAction = this.transformLoadUrl(loadAction);\r\n\r\n this.dataService.CallApi(transformedAction, \"\").subscribe((apiResponse: ApiResponse) => {\r\n if (apiResponse.success) {\r\n this.options = apiResponse.data;\r\n\r\n console.log(this.options)\r\n\r\n if (this.field) {\r\n this.field.options = apiResponse.data;\r\n\r\n this.setDefaultValue();\r\n\r\n if (!this.field.optionsSubject) {\r\n this.field.optionsSubject = new BehaviorSubject(apiResponse.data);\r\n } else {\r\n this.field.optionsSubject.next(apiResponse.data);\r\n }\r\n }\r\n \r\n this.updateSelectedOptionHint();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n}","<mat-form-field *ngIf=\"readonlyMode==''\" floatLabel=\"always\" [hintLabel]=\"computedHint\" [ngStyle]=\"{'width':width ?? '100%'}\" [hideRequiredMarker]=\"false\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\r\n\r\n <mat-label>{{display}}</mat-label>\r\n <mat-select [(value)]=\"value\" (selectionChange)=\"changed()\" [multiple]=\"multiple\" [disabled]=\"readonly\" [placeholder]=\"placeholder\" [required]=\"required\">\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\r\n <div matSuffix class=\"suffix-icons\">\r\n <ng-content select=\"[additionalButtons]\"></ng-content>\r\n <button mat-icon-button *ngIf=\"loadAction && isHovered && !masterField\" (click)=\"refresh($event)\" matTooltip=\"Refresh\" matTooltipPosition=\"above\">\r\n <mat-icon color=\"primary\">cached</mat-icon>\r\n </button>\r\n <spa-suffix [infoMessage]=\"infoMessage\" [copyContent]=\"copyContent\" [isHovered]=\"isHovered\" [(value)]=\"value\"></spa-suffix>\r\n </div>\r\n\r\n</mat-form-field>\r\n","import { Injectable } from '@angular/core';\r\nimport { Button, RoleAccess, TableConfig } from '../classes/Classes';\r\nimport { AuthService } from './auth.service';\r\nimport { Core } from '../classes/TinCore';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ButtonService {\r\n\r\n constructor(private authService: AuthService) { }\r\n\r\n getButton(buttons: Button[], name: string): Button | null {\r\n return buttons?.find(x => x.name === name) || null;\r\n }\r\n\r\n getConfirmMessage(button: Button, row: any): string {\r\n if (!button?.confirm) {\r\n return '';\r\n }\r\n \r\n // Return dynamic message if func is provided\r\n if (button.confirm.func) {\r\n return button.confirm.func(row);\r\n }\r\n \r\n // Return static message\r\n return button.confirm.message;\r\n }\r\n\r\n getButtonProperties(button: Button, row: any, config: TableConfig): {\r\n color: string,\r\n icon: string,\r\n disabled: boolean,\r\n visible: boolean,\r\n tip: string\r\n } {\r\n return {\r\n color: this.getButtonColor(button, row),\r\n icon: this.getIcon(button, config),\r\n disabled: this.testDisabled(button, row),\r\n visible: this.testVisible(button, row, config),\r\n tip: button.tip || button.name\r\n };\r\n }\r\n\r\n getButtonColor(button: Button, row: any): string {\r\n if (this.testDisabled(button, row)) return 'lightgray';\r\n\r\n if (button?.color) return button.color;\r\n if (button.icon?.color) return button.icon.color;\r\n\r\n const colorMap = {\r\n 'delete': '#F44336',\r\n 'create': 'green'\r\n };\r\n\r\n return colorMap[button.name] || '#4050B5';\r\n }\r\n\r\n\r\n\r\n // isButtonVisible(button: Button, row: any, isLoadComplete: boolean): boolean {\r\n // if (!isLoadComplete) return false;\r\n // return this.testVisible(button,row);\r\n // }\r\n\r\n getTitleAction(mode: string, buttons: Button[]): string {\r\n const modeMap = {\r\n 'view': 'View',\r\n 'edit': buttons?.find(b => b.name === 'edit')?.display || 'Edit',\r\n 'create': buttons?.find(b => b.name === 'create')?.display || 'Create'\r\n };\r\n return modeMap[mode] || '';\r\n }\r\n\r\n isTabVisible(tableConfig: TableConfig, details: any): boolean {\r\n return tableConfig.hideTabCondition ? !tableConfig.hideTabCondition(details) : true;\r\n }\r\n\r\n getIcon(button: Button, config: TableConfig | null): string {\r\n if (button.icon) {\r\n return button.icon.name;\r\n }\r\n return config ? this.getDefaultIcon(button.name, config.flatButtons) : this.getDefaultIcon(button.name, true);\r\n }\r\n\r\n testDisabled(button: Button, row: any, config?: TableConfig): boolean {\r\n\r\n // Check standard locking/approval rules\r\n if ((button.name === 'edit' || button.name === 'delete') && row?.locked) return true;\r\n if (row?.pendingApproval && !button.ignorePendingApproval && button.name != 'view') return true;\r\n\r\n // Check form access if detailsConfig exists\r\n if (button.detailsConfig?.formConfig) {\r\n const access = Core.getFormAccess(button.detailsConfig.formConfig, this.authService.currentRoleSource.value);\r\n if (!this.hasRequiredAccess(access, button.name)) return true;\r\n }\r\n\r\n // Check form access levels from table config\r\n if (['create', 'edit', 'view', 'delete'].includes(button.name) && config?.formConfig) {\r\n const access = Core.getFormAccess(config.formConfig, this.authService.currentRoleSource.value);\r\n if (!this.hasRequiredAccess(access, button.name)) return true;\r\n }\r\n\r\n // Check button-specific disabled rules\r\n return button.disabled ? button.disabled(row) : false;\r\n }\r\n\r\n getVisibleButtons(buttons: Button[], row: any, tableConfig?: TableConfig): Button[] {\r\n return buttons.filter(button => this.testVisible(button, row, tableConfig));\r\n }\r\n\r\n testVisible(button: Button, row: any, tableConfig?: TableConfig): boolean {\r\n\r\n\r\n if (button.visible && !button.visible(row)) {\r\n return false;\r\n }\r\n\r\n const currentRole = this.authService.currentRoleSource.value;\r\n\r\n // Check if button has detailsConfig with form restrictions\r\n if (button.detailsConfig?.formConfig?.security) {\r\n const access = Core.getFormAccess(button.detailsConfig.formConfig, currentRole);\r\n if (!this.hasRequiredAccess(access, button.name)) {\r\n return false;\r\n }\r\n }\r\n\r\n // For create/edit/view buttons, check table's formConfig\r\n if (['create', 'edit', 'view', 'delete'].includes(button.name) && tableConfig?.formConfig?.security) {\r\n const access = Core.getFormAccess(tableConfig.formConfig, currentRole);\r\n if (!this.hasRequiredAccess(access, button.name)) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private hasRequiredAccess(access: RoleAccess, buttonName: string): boolean {\r\n switch (buttonName) {\r\n case 'view':\r\n return access >= RoleAccess.View;\r\n case 'edit':\r\n return access >= RoleAccess.Edit;\r\n case 'create':\r\n return access >= RoleAccess.Create;\r\n case 'delete':\r\n return access >= RoleAccess.Full;\r\n default:\r\n return true; // Custom buttons don't require specific access\r\n }\r\n }\r\n\r\n private getDefaultColor(buttonName: string): string {\r\n switch (buttonName) {\r\n case 'delete': return '#F44336';\r\n case 'create': return 'green';\r\n default: return '#4050B5';\r\n }\r\n }\r\n\r\n private getDefaultIcon(buttonName: string, flatButtons: boolean): string {\r\n switch (buttonName) {\r\n case 'view':\r\n return flatButtons ? 'open_in_new' : 'pageview';\r\n case 'edit': return 'edit';\r\n case 'delete': return 'delete';\r\n case 'create': return 'add';\r\n default: return 'more_horiz';\r\n }\r\n }\r\n\r\n getCreateButton(buttons: Button[]): Button | undefined {\r\n return buttons?.find(button => button?.name === 'create');\r\n }\r\n\r\n isFormButton(button: Button): boolean {\r\n\r\n if (button?.action?.url?.includes('/form') || button?.action?.isFormData) {\r\n button.action.isFormData = true;\r\n return true;\r\n }\r\n\r\n return false;\r\n\r\n }\r\n\r\n\r\n\r\n}\r\n","// table-config.service.ts\r\nimport { Injectable } from '@angular/core';\r\nimport { Button, Column, TableConfig } from '../classes/Classes';\r\nimport { DataServiceLib } from './datalib.service';\r\nimport { Core } from '../classes/TinCore';\r\nimport { AuthService } from './auth.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TableConfigService {\r\n\r\n constructor(private dataService: DataServiceLib, private authService: AuthService) { }\r\n\r\n setColumns(config: TableConfig, smallScreen: boolean): string[] {\r\n\r\n if (!config?.columns) {\r\n return [];\r\n }\r\n\r\n let visibleColumns = this.getVisibleColumns(config);\r\n\r\n\r\n let columnNames;\r\n\r\n if (smallScreen && config.minColumns) {\r\n columnNames = config.minColumns.filter(col => visibleColumns.some(x => x.name === col) );\r\n }\r\n else{\r\n columnNames = visibleColumns.map(({ name }) => name);\r\n }\r\n\r\n // Add action column only if there are visible buttons\r\n const hasVisibleButtons = this.getDisplayedButtons(config.buttons, smallScreen, config)?.length > 0;\r\n\r\n if (hasVisibleButtons) {\r\n columnNames.push('action');\r\n }\r\n\r\n return columnNames;\r\n }\r\n\r\n getVisibleColumns(config: TableConfig): Column[] {\r\n return config.columns.filter(column =>\r\n !column.hiddenCondition || !column.hiddenCondition(config.parentData)\r\n );\r\n }\r\n\r\n getActionsWidth(buttons: Button[], smallScreen: boolean, config: TableConfig): string {\r\n\r\n let size = buttons?.filter(x => x.name != 'create' && !x.inHeader).length;\r\n\r\n if (smallScreen) {\r\n size = config?.minButtons?.length ?? 1;\r\n }\r\n else{\r\n let maxButtons = config?.maxButtonsCount ?? 3;\r\n\r\n if (maxButtons < buttons?.length) {\r\n size = maxButtons;\r\n }\r\n\r\n }\r\n\r\n return `${(size + 1) * 40 + 20}px`; //add 1 to cater for more button\r\n }\r\n\r\n getDisplayedButtons(buttons: Button[], isSmallScreen: boolean, config: TableConfig): Button[] {\r\n\r\n let hasCRUD = buttons?.some(x => x.name === 'create' || x.name === 'edit' || x.name === 'delete');\r\n\r\n if (buttons && hasCRUD && !buttons?.includes(this.dataService.approveButton)) {\r\n // Add approval buttons to beginning of array\r\n buttons?.unshift(this.dataService.cancelButton);\r\n buttons?.unshift(this.dataService.declineButton);\r\n buttons?.unshift(this.dataService.approveButton);\r\n buttons?.unshift(this.dataService.viewApprovalButton);\r\n }\r\n\r\n return buttons?.filter(x => x.name !== 'create' && !x.inHeader);\r\n\r\n }\r\n\r\n hasTableAccess(config: TableConfig): boolean {\r\n if (!config?.formConfig) {\r\n return true;\r\n }\r\n return Core.hasFormAccess(config.formConfig, this.authService.currentRoleSource.value);\r\n }\r\n\r\n getVisibleTableConfigs(tableConfigs: TableConfig[]): TableConfig[] {\r\n if (!tableConfigs) return [];\r\n return tableConfigs.filter(config => this.hasTableAccess(config));\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 { ApiResponse, Step, StepConfig } from '../../classes/Classes';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { DataServiceLib } from '../../services/datalib.service';\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 {\r\n\r\n constructor(private breakpointObserver: BreakpointObserver, private dataService: DataServiceLib ) { }\r\n\r\n ngOnInit(): void {\r\n this.loadSteps();\r\n\r\n this.observeScreenSize();\r\n }\r\n\r\n\r\n ngOnChanges() {\r\n // this.pushSteps();\r\n this.updateSelectedStep();\r\n }\r\n\r\n private observeScreenSize() {\r\n this.breakpointObserver.observe([\"(max-width: 600px)\"]).subscribe((result: BreakpointState) => {\r\n this.smallScreen = result.matches;\r\n });\r\n }\r\n\r\n @ViewChild('stepper') stepper: MatStepper;\r\n @Input() value = \"\";\r\n @Input() config: StepConfig;\r\n @Input() data;\r\n\r\n\r\n selectedIndex = 0;\r\n smallScreen = false;\r\n steps: Step[] = [];\r\n\r\n private loadSteps() {\r\n // If loadAction is provided, fetch steps from backend\r\n if (this.config?.loadAction) {\r\n this.dataService.CallApi(this.config.loadAction).subscribe((response: ApiResponse) => {\r\n if (response.success) {\r\n this.steps = response.data;\r\n this.updateSelectedStep();\r\n }\r\n });\r\n } else {\r\n // Use static steps if provided\r\n this.steps = this.config?.steps ?? [];\r\n this.updateSelectedStep();\r\n }\r\n }\r\n\r\n private updateSelectedStep() {\r\n if (!this.steps?.length) return;\r\n\r\n // Get visible steps only\r\n const visibleSteps = this.getVisibleSteps();\r\n if (!visibleSteps.length) return;\r\n\r\n // Get value from data object if valueField is specified\r\n const currentValue = this.config?.valueField ?\r\n this.data[this.config.valueField] : this.value;\r\n\r\n // Find matching step index among visible steps\r\n const index = visibleSteps.findIndex(step => step.value === currentValue);\r\n this.selectedIndex = index >= 0 ? index : 0;\r\n\r\n // Update stepper if already initialized\r\n // if (this.stepper) {\r\n // this.stepper.selectedIndex = this.selectedIndex;\r\n\r\n // }\r\n\r\n // Update stepper if already initialized\r\n if (this.stepper) {\r\n // Loop through all previous steps to select them\r\n let currentStep = 0;\r\n const selectStepsInterval = setInterval(() => {\r\n if (currentStep <= this.selectedIndex) {\r\n this.stepper.selectedIndex = currentStep;\r\n currentStep++;\r\n } else {\r\n clearInterval(selectStepsInterval);\r\n }\r\n }, 100); // 300ms delay between each step selection\r\n }\r\n }\r\n\r\n get shouldShowLabels(): boolean {\r\n const visibleSteps = this.getVisibleSteps();\r\n return !(visibleSteps.length > 5 && this.smallScreen);\r\n }\r\n\r\n // New method to filter hidden steps\r\n getVisibleSteps(): Step[] {\r\n if (!this.steps?.length) return [];\r\n return this.steps.filter(step => {\r\n if (!step.hiddenCondition) return true;\r\n return !step.hiddenCondition(this.data || {});\r\n });\r\n }\r\n\r\n\r\n}\r\n","\r\n<mat-horizontal-stepper class=\"transparent\" [labelPosition]=\"shouldShowLabels ? 'bottom' : 'end'\" #stepper [selectedIndex]=\"selectedIndex\">\r\n\r\n <mat-step *ngFor=\"let step of getVisibleSteps()\"\r\n [editable]=\"false\" [label]=\"shouldShowLabels ? step.name : ''\" [state]=\"step.icon ?? 'number'\">\r\n </mat-step>\r\n\r\n</mat-horizontal-stepper>\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","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 @Input() infoMessage: string;\r\n @Output() infoClick = new EventEmitter<void>();\r\n @Input() copyContent = false;\r\n @Input() clearContent = false;\r\n @Input() suffix: string;\r\n isHovered = false;\r\n onMouseEnter(): void {\r\n this.isHovered = true;\r\n }\r\n\r\n onMouseLeave(): void {\r\n this.isHovered = false;\r\n }\r\n\r\n onInfoClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.infoClick.emit();\r\n }\r\n\r\n clear() {\r\n this.value = \"\";\r\n this.valueChange.emit(this.value);\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\r\n<mat-form-field hideRequiredMarker=\"true\" [hintLabel]=\"hint\" [hideRequiredMarker]=\"!required\" [ngStyle]=\"{'width':width ?? '100%'}\" 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 <div matSuffix class=\"suffix-icons\">\r\n <spa-suffix [label]=\"suffix\" [infoMessage]=\"infoMessage\" [copyContent]=\"copyContent\" [clearContent]=\"clearContent\" (clearClick)=\"clear()\" [isHovered]=\"isHovered\" [(value)]=\"value\"></spa-suffix>\r\n </div>\r\n\r\n</mat-form-field>\r\n\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { MessageService } from '../../services/message.service';\r\nimport imageCompression from 'browser-image-compression';\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(private messageService : MessageService) { }\r\n\r\n ngOnInit(): void {\r\n // this.fileOptions = {allowedExtensions: ['.jpg', '.jpeg', '.png', '.gif'], maxSizeMB: 1, compressImages: true};\r\n }\r\n\r\n @Input() fileOptions: {\r\n allowedExtensions?: string[];\r\n maxSizeMB?: number;\r\n compressImages?: boolean;\r\n };\r\n private readonly imageExtensions = ['.jpg', '.jpeg', '.png', '.gif'];\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 onFileDropped($event) {\r\n this.prepareFilesList($event);\r\n }\r\n\r\n fileBrowseHandler(event) {\r\n let files = event.target.files;\r\n this.prepareFilesList(files);\r\n }\r\n\r\n\r\n deleteFile(index: number) {\r\n this.files.splice(index, 1);\r\n }\r\n\r\n\r\n async prepareFilesList(files: Array<any>) {\r\n for (const file of files) {\r\n const ext = this.getFileExtension(file.name);\r\n if (this.fileOptions?.allowedExtensions && !this.fileOptions.allowedExtensions.includes(ext.toLowerCase())) {\r\n this.messageService.toast(`File type ${ext} not allowed`);\r\n continue;\r\n }\r\n\r\n let processedFile = file;\r\n if (this.fileOptions?.compressImages && this.isImage(file.name)) {\r\n try {\r\n const options = {\r\n maxSizeMB: this.fileOptions.maxSizeMB || 1,\r\n maxWidthOrHeight: 1920,\r\n useWebWorker: true\r\n };\r\n processedFile = await imageCompression(file, options);\r\n } catch (error) {\r\n this.messageService.toast(`Error compressing image: ${file.name}`);\r\n continue;\r\n }\r\n }\r\n\r\n processedFile.progress = 0;\r\n this.files.push(processedFile);\r\n }\r\n this.filesChange.emit(this.files);\r\n }\r\n\r\n // Add new helper methods\r\n private getFileExtension(filename: string): string {\r\n return filename.substring(filename.lastIndexOf('.')).toLowerCase();\r\n }\r\n\r\n private isImage(filename: string): boolean {\r\n const ext = this.getFileExtension(filename);\r\n return this.imageExtensions.includes(ext.toLowerCase());\r\n }\r\n\r\n\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","<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)\" />\r\n <h4>{{message}}</h4>\r\n\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\nimport { FormControl, Validators } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'spa-number',\r\n templateUrl: './number.component.html',\r\n styleUrls: ['./number.component.css']\r\n})\r\nexport class NumberComponent 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 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.minLength(this.min), Validators.maxLength(this.max)]);\r\n this.control.updateValueAndValidity();\r\n }\r\n }\r\n\r\n // options: FormGroup;\r\n hideRequiredControl = new FormControl(true);\r\n hide = true; //for password only\r\n\r\n @Input() readonly = false;\r\n @Input() hint = \"\";\r\n @Input() display = \"\";\r\n @Input() placeholder = \"\";\r\n @Input() value = 0;\r\n @Input() width = \"100%\"\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\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\r\n @Input() step = 1;\r\n\r\n @Input() suffix: string;\r\n @Input() infoMessage: string;\r\n @Output() infoClick = new EventEmitter<void>();\r\n @Input() copyContent = false;\r\n @Input() clearContent = false;\r\n isHovered = false;\r\n onMouseEnter(): void {\r\n this.isHovered = true;\r\n }\r\n\r\n onMouseLeave(): void {\r\n this.isHovered = false;\r\n }\r\n\r\n clear() {\r\n this.value = 0;\r\n this.valueChange.emit(this.value);\r\n }\r\n\r\n onInfoClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.infoClick.emit();\r\n }\r\n\r\n\r\n changed() {\r\n this.valueChange.emit(this.value);\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 (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<mat-form-field hideRequiredMarker=\"true\" [hintLabel]=\"hint\" [hideRequiredMarker]=\"!required\" [ngStyle]=\"{'width':width ?? '100%'}\" style=\"margin-right: 5px;\">\r\n <mat-label>{{display}}</mat-label>\r\n <input matInput autocomplete=\"off\" type=\"number\" [min]=\"min\" [max]=\"max\" [step]=\"step\" [(ngModel)]=\"value\" (change)=\"changed()\" (blur)=\"leaved()\" (keyup.enter)=\"enterPressed()\" [placeholder]=\"placeholder\" [formControl]=\"control\" [required]=\"required\" [readonly]=\"readonly\" />\r\n <mat-error *ngIf=\"control.invalid\">{{validate(control)}}</mat-error>\r\n\r\n <div matSuffix class=\"suffix-icons\">\r\n <spa-suffix [label]=\"suffix\" [infoMessage]=\"infoMessage\" [copyContent]=\"copyContent\" [clearContent]=\"clearContent\" (clearClick)=\"clear()\" [isHovered]=\"isHovered\" [(value)]=\"value\"></spa-suffix>\r\n </div>\r\n</mat-form-field>\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\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\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\nimport { DataServiceLib } from '../../services/datalib.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, private dataServiceLib : DataServiceLib, @Inject(MAT_DIALOG_DATA) public data) { }\r\n\r\n ngOnInit() {\r\n\r\n this.fileNames = this.data.fileNames;\r\n this.fullPath = 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 fullPath: 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\r\n setURL() {\r\n\r\n if (this.dataServiceLib.appConfig?.docsBaseUrl){\r\n this.currentFileUrl = `${this.dataServiceLib.appConfig.docsBaseUrl}/${this.fullPath}/${this.fileNames[this.currIndex]}`;\r\n }\r\n else{\r\n if (this.httpService.apiUrl.includes('localhost')) {\r\n this.currentFileUrl = `./assets/${this.fullPath}/${this.fileNames[this.currIndex]}`;\r\n }\r\n else {\r\n this.currentFileUrl = `${this.httpService.apiUrl.replace(\"/api\", \"\").replace(\"/api\", \"\")}${this.fullPath}/${this.fileNames[this.currIndex]}`;\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n // this.currentFileUrl = this.currentFileUrl.replace(\"//\",\"/\");\r\n\r\n console.log(this.currentFileUrl)\r\n // this.currentFileUrl = \"./assets/TinasheOxygen.pdf\"\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\r\n if (typeof fileName != 'string') {\r\n return;\r\n }\r\n\r\n this.currIndex = this.fileNames.indexOf(fileName);\r\n\r\n\r\n this.setURL();\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","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { viewerDialog } from './viewerDialog.component';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { Action, ApiResponse } from '../../classes/Classes';\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(private dataService: DataServiceLib,public dialog: MatDialog) { }\r\n\r\n ngOnInit(): void {\r\n\r\n if (this.fileAction){\r\n this.loadData();\r\n }else{\r\n this.convert();\r\n }\r\n }\r\n\r\n\r\n\r\n @Input() fileAction : Action;\r\n @Input() path = \"\";\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 loadData() {\r\n\r\n console.log(\"Calling files\")\r\n let url = this.fileAction.url.replace(\"/x\", '/'+this.folderName)\r\n this.dataService.CallApi({url: url}, \"\").subscribe((apiResponse: ApiResponse) => {\r\n this.fileNames = apiResponse.data;\r\n // console.log(this.fileNames)\r\n this.convert();\r\n });\r\n }\r\n\r\n convert(){\r\n if (typeof this.fileNames == 'string') {\r\n if (this.fileNames == \"\") {\r\n this.fileNames = []\r\n return\r\n }\r\n this.fileNames = this.fileNames.split(\"|\")\r\n\r\n }\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: '95%',\r\n maxWidth: '80vw',\r\n\r\n data: { fileNames: this.fileNames, fileName: fileName, path: `${this.path ?? ''}/${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","<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 || fileNames.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, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { FormControl, Validators } from '@angular/forms';\r\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\r\nimport { MatChipInputEvent, MatChipList } from '@angular/material/chips';\r\nimport { Observable } from 'rxjs';\r\nimport { map, startWith } from 'rxjs/operators';\r\nimport { MessageService } from '../../services/message.service';\r\n\r\n@Component({\r\n selector: 'spa-email',\r\n templateUrl: './email.component.html',\r\n styleUrls: ['./email.component.css']\r\n})\r\nexport class EmailComponent implements OnInit {\r\n\r\n constructor(private messageService : MessageService) { }\r\n\r\n @Input() display = \"\";\r\n @Input() value = \"\";\r\n @Output() valueChange = new EventEmitter<string>();\r\n @Input() readonly = false;\r\n @Input() required = true;\r\n @Input() hint = \"\";\r\n @Input() suffix: string;\r\n @Input() infoMessage: string;\r\n @Input() copyContent = false;\r\n @Input() clearContent = false;\r\n\r\n // New inputs for autocomplete\r\n @Input() options: any[] = [];\r\n @Input() optionValue = \"\";\r\n\r\n emails: string[] = [];\r\n emailControl: FormControl;\r\n filteredOptions: Observable<string[]>;\r\n\r\n\r\n ngOnInit() {\r\n this.emailControl = new FormControl('', [\r\n Validators.required,\r\n Validators.pattern('^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,}$')\r\n ]);\r\n this.emails = this.value.split(';').filter(email => email.trim() !== '');\r\n\r\n // Set up autocomplete filtering\r\n this.filteredOptions = this.emailControl.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 return this.options\r\n .map(option => this.optionValue ? option[this.optionValue] : option)\r\n .filter(option => option.toLowerCase().includes(filterValue));\r\n }\r\n\r\n addEmail(event: MatChipInputEvent): void {\r\n const value = (event.value || '').trim();\r\n if (value) {\r\n this.addMultipleEmails(value);\r\n }\r\n event.chipInput!.clear(); // Clear the input\r\n }\r\n\r\n addMultipleEmails(value: string): void {\r\n const emailsToAdd = this.extractEmails(value);\r\n\r\n for (const email of emailsToAdd) {\r\n if (this.isValidEmail(email) && !this.emails.includes(email)) {\r\n this.emails.push(email);\r\n }\r\n }\r\n\r\n this.emailControl.setValue(''); // Reset the form control\r\n this.updateValue();\r\n // this.scrollToBottom();\r\n }\r\n\r\n isValidEmail(email: string): boolean {\r\n return this.emailControl.validator(new FormControl(email)) === null;\r\n }\r\n\r\n handlePaste(event: ClipboardEvent): void {\r\n event.preventDefault();\r\n const pastedText = event.clipboardData.getData('text');\r\n const extractedEmails = this.extractEmails(pastedText);\r\n this.addMultipleEmails(extractedEmails.join(';'));\r\n }\r\n\r\n extractEmails(text: string): string[] {\r\n const emailRegex = /([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\\.[a-zA-Z0-9._-]+)/gi;\r\n const matches = text.match(emailRegex);\r\n return matches ? matches : [];\r\n }\r\n\r\n removeEmail(email: string): void {\r\n const index = this.emails.indexOf(email);\r\n if (index >= 0) {\r\n this.emails.splice(index, 1);\r\n this.updateValue();\r\n }\r\n }\r\n\r\n clearEmails(): void {\r\n this.emails = [];\r\n this.updateValue();\r\n }\r\n\r\n updateValue(): void {\r\n this.value = this.emails.join(';');\r\n this.valueChange.emit(this.value);\r\n }\r\n\r\n\r\n\r\n optionSelected(event: MatAutocompleteSelectedEvent): void {\r\n this.addMultipleEmails(event.option.viewValue);\r\n this.emailControl.setValue('');\r\n }\r\n\r\n copyEmails(): void {\r\n const emailString = this.emails.join(';');\r\n navigator.clipboard.writeText(emailString).then(() => {\r\n this.messageService.toast('Copied');\r\n });\r\n }\r\n\r\n\r\n}\r\n","<mat-form-field style=\"width: 100%;\">\r\n <mat-label>{{display}}</mat-label>\r\n <mat-chip-list #chipList>\r\n <mat-chip *ngFor=\"let email of emails\" [removable]=\"!readonly\" (removed)=\"removeEmail(email)\">\r\n {{email}}\r\n <mat-icon matChipRemove *ngIf=\"!readonly\">cancel</mat-icon>\r\n </mat-chip>\r\n <input autocomplete=\"off\" #emailInput [placeholder]=\"readonly ? '' : 'Enter email addresses'\" [matChipInputFor]=\"chipList\" [matChipInputSeparatorKeyCodes]=\"[13, 186]\" [matChipInputAddOnBlur]=\"true\" (matChipInputTokenEnd)=\"addEmail($event)\" [formControl]=\"emailControl\" (paste)=\"handlePaste($event)\" [readonly]=\"readonly\" [matAutocomplete]=\"auto\">\r\n </mat-chip-list>\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"optionSelected($event)\">\r\n <mat-option *ngFor=\"let option of filteredOptions | async\" [value]=\"optionValue ? option[optionValue] : option\">\r\n {{optionValue ? option[optionValue] : option}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-error *ngIf=\"emailControl.invalid && emailControl.touched\">Invalid email format</mat-error>\r\n <mat-hint *ngIf=\"hint\">{{hint}}</mat-hint>\r\n <div matSuffix class=\"suffix-icons\">\r\n <spa-suffix [label]=\"suffix\" [infoMessage]=\"infoMessage\" [copyContent]=\"copyContent\" [clearContent]=\"clearContent\" (clearClick)=\"clearEmails()\" [isHovered]=\"true\" [(value)]=\"value\"></spa-suffix>\r\n </div>\r\n</mat-form-field>\r\n","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\r\nimport { MatChipInputEvent } from '@angular/material/chips';\r\nimport { Observable } from 'rxjs';\r\nimport { map, startWith } from 'rxjs/operators';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { Action, ApiResponse } from '../../classes/Classes';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\n\r\n@Component({\r\n selector: 'spa-multi-text',\r\n templateUrl: './multi-text.component.html'\r\n})\r\nexport class MultiTextComponent implements OnInit {\r\n constructor(private messageService: MessageService, private dataService: DataServiceLib) { }\r\n\r\n @ViewChild('textInput') textInput: ElementRef<HTMLInputElement>;\r\n\r\n @Input() display = \"\";\r\n @Input() value = \"\";\r\n @Output() valueChange = new EventEmitter<string>();\r\n @Input() readonly = false;\r\n @Input() required = true;\r\n @Input() hint = \"\";\r\n @Input() strict = false;\r\n @Input() suffix: string;\r\n @Input() infoMessage: string;\r\n @Input() copyContent = false;\r\n @Input() clearContent = false;\r\n @Input() options: any[] = [];\r\n @Input() optionDisplay = \"name\"; // Default to name if not provided\r\n @Input() optionValue = \"value\"; // Default to value if not provided\r\n\r\n @Input() loadAction: Action;\r\n\r\n values: string[] = [];\r\n control = new FormControl('');\r\n filteredOptions: Observable<any[]>;\r\n errorState = false;\r\n private selectedFromAutocomplete = false;\r\n\r\n ngOnInit() {\r\n this.values = this.value ? this.value.split(';').filter(val => val.trim() !== '') : [];\r\n this.setupAutoComplete();\r\n this.getData(this.loadAction);\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.options) {\r\n this.setupAutoComplete();\r\n }\r\n }\r\n\r\n private setupAutoComplete() {\r\n this.filteredOptions = this.control.valueChanges.pipe(\r\n startWith(''),\r\n map(value => this.filterOptions(value))\r\n );\r\n }\r\n\r\n private filterOptions(value: string): any[] {\r\n if (!value || !this.options) return this.options || [];\r\n\r\n const searchValue = value.toString().toLowerCase();\r\n return this.options.filter(option => {\r\n const displayValue = option[this.optionDisplay]?.toString().toLowerCase();\r\n return displayValue?.includes(searchValue);\r\n });\r\n }\r\n\r\n add(event: MatChipInputEvent): void {\r\n // Skip validation if option was selected from autocomplete\r\n if (this.selectedFromAutocomplete) {\r\n this.selectedFromAutocomplete = false;\r\n return;\r\n }\r\n\r\n const input = (event.value || '').trim();\r\n if (!input) return;\r\n\r\n if (this.strict) {\r\n const found = this.options.find(opt => {\r\n const optionDisplayValue = opt[this.optionDisplay]?.toString().toLowerCase();\r\n const optionValue = opt[this.optionValue]?.toString().toLowerCase();\r\n const inputLower = input.toLowerCase();\r\n return optionDisplayValue === inputLower || optionValue === inputLower;\r\n });\r\n\r\n // if (!found) {\r\n // this.errorState = true;\r\n // this.hint = 'Value must be selected from the list';\r\n // return;\r\n // }\r\n\r\n this.addValue(found[this.optionValue]?.toString());\r\n } else {\r\n this.addValue(input);\r\n }\r\n\r\n this.resetInput();\r\n }\r\n\r\n private addValue(value: string): void {\r\n if (!this.values.includes(value)) {\r\n this.values.push(value);\r\n this.errorState = false;\r\n this.updateValue();\r\n }\r\n }\r\n\r\n remove(value: string): void {\r\n const index = this.values.indexOf(value);\r\n if (index >= 0) {\r\n this.values.splice(index, 1);\r\n this.updateValue();\r\n }\r\n }\r\n\r\n optionSelected(event: MatAutocompleteSelectedEvent): void {\r\n const selectedOption = event.option.value;\r\n if (selectedOption) {\r\n this.selectedFromAutocomplete = true;\r\n this.addValue(selectedOption[this.optionValue]?.toString());\r\n this.resetInput();\r\n }\r\n }\r\n\r\n\r\n private resetInput(): void {\r\n // Reset form control\r\n this.control.setValue('');\r\n\r\n // Reset input element if available\r\n if (this.textInput?.nativeElement) {\r\n this.textInput.nativeElement.value = '';\r\n }\r\n }\r\n\r\n updateValue(): void {\r\n this.value = this.values.join(';');\r\n this.valueChange.emit(this.value);\r\n }\r\n\r\n clear(): void {\r\n this.values = [];\r\n this.updateValue();\r\n }\r\n\r\n getDisplayValue(value: string): string {\r\n const option = this.options?.find(opt =>\r\n opt[this.optionValue]?.toString() === value\r\n );\r\n return option ? option[this.optionDisplay]?.toString() : value;\r\n }\r\n\r\n copyValues(): void {\r\n navigator.clipboard.writeText(this.value).then(() => {\r\n this.messageService.toast('Copied');\r\n });\r\n }\r\n\r\n isHovered = false;\r\n @Output() hoverChange = new EventEmitter<boolean>();\r\n onMouseEnter(): void {\r\n this.isHovered = true;\r\n this.hoverChange.emit(true);\r\n }\r\n\r\n onMouseLeave(): void {\r\n this.isHovered = false;\r\n this.hoverChange.emit(false);\r\n }\r\n\r\n refresh(event: MouseEvent): void {\r\n event.stopPropagation();\r\n if (!this.loadAction) {\r\n return;\r\n }\r\n\r\n const refreshAction = {\r\n ...this.loadAction,\r\n forceRefresh: true\r\n };\r\n\r\n this.getData(refreshAction);\r\n }\r\n\r\n getData(action: Action) {\r\n if (!action) return;\r\n this.dataService.CallApi(action).subscribe((apiResponse: ApiResponse) => {\r\n if (apiResponse.success) {\r\n this.options = apiResponse.data;\r\n this.setupAutoComplete();\r\n }\r\n });\r\n }\r\n}\r\n","<mat-form-field style=\"width: 100%;\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\r\n <mat-label>{{display}}</mat-label>\r\n <mat-chip-list #chipList>\r\n <mat-chip *ngFor=\"let value of values\" [removable]=\"!readonly\" (removed)=\"remove(value)\">\r\n {{getDisplayValue(value)}}\r\n <mat-icon matChipRemove *ngIf=\"!readonly\">cancel</mat-icon>\r\n </mat-chip>\r\n <input #textInput autocomplete=\"off\" [placeholder]=\"readonly ? '' : display\" [matChipInputFor]=\"chipList\" [matChipInputSeparatorKeyCodes]=\"[13, 186]\" [matChipInputAddOnBlur]=\"true\" (matChipInputTokenEnd)=\"add($event)\" [formControl]=\"control\" [readonly]=\"readonly\" [matAutocomplete]=\"auto\">\r\n </mat-chip-list>\r\n\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"optionSelected($event)\">\r\n <mat-option *ngFor=\"let option of filteredOptions | async\" [value]=\"option\">\r\n {{option[optionDisplay]}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n\r\n <mat-error *ngIf=\"errorState\">{{hint}}</mat-error>\r\n <mat-hint *ngIf=\"hint && !errorState\">{{hint}}</mat-hint>\r\n\r\n <div matSuffix class=\"suffix-icons\">\r\n <button mat-icon-button *ngIf=\"loadAction && isHovered\" (click)=\"refresh($event)\" matTooltip=\"Refresh\" matTooltipPosition=\"above\">\r\n <mat-icon color=\"primary\">cached</mat-icon>\r\n </button>\r\n <spa-suffix [label]=\"suffix\" [infoMessage]=\"infoMessage\" [copyContent]=\"copyContent\" [clearContent]=\"clearContent\" (clearClick)=\"clear()\" [isHovered]=\"true\" [(value)]=\"value\"></spa-suffix>\r\n </div>\r\n</mat-form-field>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { Action, ApiResponse } from '../../classes/Classes';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\n\r\n@Component({\r\n selector: 'spa-multi-select',\r\n templateUrl: './multi-select.component.html'\r\n})\r\nexport class MultiSelectComponent implements OnInit {\r\n constructor(private messageService: MessageService, private dataService: DataServiceLib) { }\r\n\r\n @Input() display = \"\";\r\n @Input() value = \"\";\r\n @Output() valueChange = new EventEmitter<string>();\r\n @Input() readonly = false;\r\n @Input() required = true;\r\n @Input() hint = \"\";\r\n @Input() options: any[] = [];\r\n @Input() optionDisplay = \"name\";\r\n @Input() optionValue = \"value\";\r\n @Input() infoMessage: string;\r\n @Input() copyContent = false;\r\n @Input() clearContent = false;\r\n @Input() nullable = false;\r\n @Input() placeholder = \"\";\r\n @Input() width = \"100%\";\r\n @Input() suffix: string;\r\n\r\n @Input() loadAction: Action;\r\n\r\n control = new FormControl([]);\r\n selectedValues: any[] = [];\r\n\r\n ngOnInit() {\r\n if (!this.placeholder) {\r\n this.placeholder = `Select ${this.display}`;\r\n }\r\n if (this.loadAction){\r\n this.getData(this.loadAction);\r\n }else{\r\n this.initializeValues();\r\n }\r\n\r\n }\r\n\r\n ngOnChanges() {\r\n this.initializeValues();\r\n }\r\n\r\n private initializeValues() {\r\n if (this.value) {\r\n const values = this.value.split(';')\r\n .filter(v => v.trim())\r\n .map(v => this.options.find(opt => opt[this.optionValue]?.toString() === v)\r\n ? v : null)\r\n .filter(v => v !== null);\r\n\r\n this.selectedValues = values;\r\n this.control.setValue(values);\r\n } else {\r\n this.selectedValues = [];\r\n this.control.setValue([]);\r\n }\r\n }\r\n\r\n selectionChange(event: any): void {\r\n this.selectedValues = event.value || [];\r\n this.updateValue();\r\n }\r\n\r\n private updateValue(): void {\r\n this.value = this.selectedValues.join(';');\r\n this.valueChange.emit(this.value);\r\n }\r\n\r\n getOptionDisplay(value: any): string {\r\n const option = this.options?.find(opt =>\r\n opt[this.optionValue]?.toString() === value?.toString()\r\n );\r\n return option ? option[this.optionDisplay] : value;\r\n }\r\n\r\n compareWith(v1: any, v2: any): boolean {\r\n return v1?.toString() === v2?.toString();\r\n }\r\n\r\n clear(): void {\r\n this.selectedValues = [];\r\n this.control.setValue([]);\r\n this.value = '';\r\n this.valueChange.emit(this.value);\r\n }\r\n\r\n copyValues(): void {\r\n navigator.clipboard.writeText(this.value).then(() => {\r\n this.messageService.toast('Copied');\r\n });\r\n }\r\n\r\n\r\n isHovered = false;\r\n @Output() hoverChange = new EventEmitter<boolean>();\r\n onMouseEnter(): void {\r\n this.isHovered = true;\r\n this.hoverChange.emit(true);\r\n }\r\n\r\n onMouseLeave(): void {\r\n this.isHovered = false;\r\n this.hoverChange.emit(false);\r\n }\r\n\r\n refresh(event: MouseEvent): void {\r\n event.stopPropagation();\r\n if (!this.loadAction) {\r\n return;\r\n }\r\n\r\n const refreshAction = {\r\n ...this.loadAction,\r\n forceRefresh: true\r\n };\r\n\r\n this.getData(refreshAction);\r\n }\r\n\r\n getData(action: Action) {\r\n if (!action) return;\r\n this.dataService.CallApi(action).subscribe((apiResponse: ApiResponse) => {\r\n if (apiResponse.success) {\r\n this.options = apiResponse.data;\r\n this.initializeValues();\r\n }\r\n });\r\n }\r\n}\r\n","<mat-form-field [ngStyle]=\"{'width':width ?? '100%'}\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\r\n <mat-label>{{display}}</mat-label>\r\n <mat-select [formControl]=\"control\" [required]=\"required\" [disabled]=\"readonly\" multiple [placeholder]=\"placeholder\" [compareWith]=\"compareWith\" (selectionChange)=\"selectionChange($event)\">\r\n <mat-option *ngIf=\"nullable\" [value]=\"null\">None</mat-option>\r\n <mat-option *ngFor=\"let option of options\" [value]=\"option[optionValue]\">\r\n {{option[optionDisplay]}}\r\n </mat-option>\r\n </mat-select>\r\n <mat-hint *ngIf=\"hint\">{{hint}}</mat-hint>\r\n <div matSuffix class=\"suffix-icons\">\r\n <button mat-icon-button *ngIf=\"loadAction && isHovered\" (click)=\"refresh($event)\" matTooltip=\"Refresh\" matTooltipPosition=\"above\">\r\n <mat-icon color=\"primary\">cached</mat-icon>\r\n </button>\r\n <spa-suffix [label]=\"suffix\" [infoMessage]=\"infoMessage\" [copyContent]=\"copyContent\" [clearContent]=\"clearContent\" (clearClick)=\"clear()\" [isHovered]=\"true\" [(value)]=\"value\">\r\n </spa-suffix>\r\n </div>\r\n</mat-form-field>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\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 constructor(private sanitizer: DomSanitizer) { }\r\n\r\n ngOnInit(): void {\r\n this.sanitizeHtml();\r\n }\r\n\r\n ngOnChanges(): void {\r\n this.sanitizeHtml();\r\n }\r\n\r\n @Input() value = '';\r\n @Input() maxHeight = '500px'; // Default maximum height\r\n @Input() display = ''; // For consistency with other components\r\n\r\n sanitizedHtml: SafeHtml;\r\n\r\n private sanitizeHtml(): void {\r\n this.sanitizedHtml = this.sanitizer.bypassSecurityTrustHtml(this.value);\r\n }\r\n}","<div *ngIf=\"display\" class=\"html-label\">{{display}}</div>\r\n<div class=\"html-container\" [ngStyle]=\"{'max-height': maxHeight}\">\r\n <div class=\"html-content\" [innerHTML]=\"sanitizedHtml\"></div>\r\n</div>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { ApiResponse } from '../../classes/Classes';\r\n\r\n@Component({\r\n selector: 'spa-notes',\r\n templateUrl: './notes.component.html',\r\n styleUrls: ['./notes.component.css']\r\n})\r\nexport class NotesComponent implements OnInit {\r\n constructor(private dataService: DataServiceLib) { }\r\n\r\n ngOnInit(): void {\r\n this.loadNotes();\r\n }\r\n\r\n // Input properties\r\n @Input() title = \"Notes\";\r\n @Input() notes: any[] = []; // Data array if provided directly\r\n @Input() loadAction: any; // URL config if notes need to be loaded \r\n @Input() loadIDField: string; // Field to use for ID when loading notes\r\n @Input() data: any; // Parent data object for ID reference\r\n\r\n // Field mapping inputs (defaults match the existing activity component)\r\n @Input() nameField = \"createdByName\";\r\n @Input() dateField = \"createdDate\";\r\n @Input() commentField = \"details\";\r\n\r\n private loadNotes(): void {\r\n\r\n // If notes are already provided as an object, use them directly\r\n if (this.notes && this.notes.length > 0) {\r\n return;\r\n }\r\n\r\n // Otherwise, load from the URL if configured\r\n if (this.loadAction && this.data && this.loadIDField) {\r\n const idValue = this.data[this.loadIDField];\r\n \r\n if (!idValue) {\r\n return;\r\n }\r\n \r\n let url = this.loadAction.url.replace('{x}', idValue);\r\n\r\n this.dataService.CallApi({ ...this.loadAction, url }).subscribe((apiResponse: ApiResponse) => {\r\n if (apiResponse.success && apiResponse.data) {\r\n this.notes = apiResponse.data;\r\n }\r\n });\r\n }\r\n }\r\n}"," <div class=\"notes-container\" *ngIf=\"notes && notes.length > 0\">\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 class=\"list-group list-group-flush\" style=\"max-height:350px; margin-left:5px\">\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[nameField] || note.createdByName}}</div>\r\n </div>\r\n <small>{{note[commentField] || note.details}} (<em>{{note[dateField] || note.createdDate | date: 'dd MMM yyyy HH:mm'}}</em>)</small>\r\n </li>\r\n </ul>\r\n </div>\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 No {{title.toLowerCase()}}\r\n </div>","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Core } from '../classes/TinCore';\r\n\r\n@Pipe({\r\n name: 'camelToWords'\r\n})\r\nexport class CamelToWordsPipe implements PipeTransform {\r\n\r\n transform(value: string): string {\r\n return Core.camelToWords(value);\r\n }\r\n}\r\n","import { Component, ContentChild, EventEmitter, Input, OnInit, Output, TemplateRef } from '@angular/core';\r\nimport { FormConfig, Field, Button, ApiResponse } from '../../classes/Classes';\r\nimport { Core } from '../../classes/TinCore';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n\r\n@Component({\r\n selector: 'spa-form',\r\n templateUrl: './form.component.html',\r\n styleUrls: ['./form.component.css']\r\n})\r\nexport class FormComponent implements OnInit {\r\n\r\n constructor(private messageService: MessageService, private dataService: DataServiceLib, private authService: AuthService) { }\r\n\r\n ngOnInit() {\r\n\r\n this.hasAccess = Core.hasFormAccess(this.config, this.authService.currentRoleSource.value);\r\n\r\n if (!this.hasAccess) {\r\n // this.messageService.toast('Access denied'); // Optional - notify user\r\n return;\r\n }\r\n\r\n if (!this.config.fields){\r\n this.messageService.toast(\"Please Configure Form Fields\")\r\n return;\r\n }\r\n\r\n if (!this.data) {\r\n this.messageService.toast(\"Please Configure Form Data\")\r\n return;\r\n }\r\n\r\n this.fields = this.config.fields;\r\n\r\n // Initialize BehaviorSubjects for fields with loadActions\r\n this.fields?.forEach(field => {\r\n if (field.loadAction && !field.optionsSubject && !field.masterField) {\r\n field.optionsSubject = new BehaviorSubject<any[]>([]);\r\n\r\n // Subscribe to options changes\r\n field.optionsSubject.subscribe(newOptions => {\r\n field.options = newOptions;\r\n\r\n // Update child fields that depend on this field\r\n if (this.childFields?.some(x => x.masterField === field.name)) {\r\n this.updateChildOptions(field.name);\r\n }\r\n });\r\n }\r\n });\r\n\r\n\r\n if (this.config.multiColumn){\r\n this.multiColumn = this.config.multiColumn\r\n }else{\r\n this.multiColumn = this.fields.length > 2\r\n }\r\n\r\n if (this.config?.button?.display){\r\n this.buttonDisplay = this.config.button.display;\r\n }\r\n\r\n this.fileField = this.fields.find(x => x.type == 'file')\r\n\r\n if (this.config?.button?.action && this.fileField || this.config?.button?.action.url.includes(\"/form\")) {\r\n this.config.button.action.isFormData = true;\r\n\r\n }\r\n\r\n this.childFields = this.fields.filter(x => x.masterField)\r\n\r\n\r\n this.childFields.forEach(child => {\r\n let master = this.fields.find(x => x.name == child.masterField)\r\n if (child.loadAction) {\r\n this.loadChildMasterOptions(child);\r\n }else{\r\n this.updateChildOptions(master.name);\r\n }\r\n\r\n });\r\n\r\n this.fields.forEach(field => {\r\n if (field.loadAction) {\r\n this.loadChildMasterOptions(field);\r\n }\r\n });\r\n\r\n this.initializeCompositeFields();\r\n\r\n\r\n this.applyValueCalculations();\r\n }\r\n\r\n @ContentChild('dynamicSelect') dynamicSelectTemplate: TemplateRef<any>;\r\n\r\n hasAccess = false;\r\n fileNames\r\n fileField: Field;\r\n fileViewField: Field;\r\n @Input() files: any[] = [];\r\n fields: Field[];\r\n buttonDisplay = \"Submit\";\r\n isProcessing: boolean = false;\r\n multiColumn: boolean = false;\r\n\r\n childFields: Field[];\r\n\r\n @Input() data: any;\r\n @Input() config: FormConfig;\r\n @Output() buttonClick = new EventEmitter();\r\n @Output() inputChange = new EventEmitter();\r\n\r\n initializeCompositeFields() {\r\n this.fields.forEach(field => {\r\n if (field.type === 'composite' && field.subfields) {\r\n field.subfields.forEach(subfield => {\r\n if (this.data[subfield.name] === undefined) {\r\n this.data[subfield.name] = Core.getInitialValue(subfield);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n private applyValueCalculations() {\r\n if (!this.data || !this.fields) return;\r\n \r\n // Get visible fields that have valueCalculation functions\r\n const calculatedFields = this.getVisibleFields()\r\n .filter(field => typeof field.valueCalculation === 'function');\r\n \r\n if (calculatedFields.length === 0) return;\r\n \r\n // Apply calculations to each field\r\n calculatedFields.forEach(field => {\r\n try {\r\n const calculatedValue = field.valueCalculation(this.data);\r\n if (calculatedValue !== undefined) {\r\n this.data[field.name] = calculatedValue;\r\n }\r\n } catch (error) {\r\n console.error(`Error calculating value for field ${field.name}:`, error);\r\n }\r\n });\r\n }\r\n\r\n getVisibleSubfields(field : Field){\r\n return Core.getVisibleSubfields(this.config, this.data, field, this.authService.currentRoleSource.value);\r\n\r\n\r\n }\r\n\r\n\r\n getVisibleFields() {\r\n let visibleFields = this.fields?.filter(x => Core.testVisible(this.config, this.data, x, this.authService.currentRoleSource.value)) ?? [];\r\n\r\n // Filter out fields under collapsed sections\r\n return visibleFields.filter(field => {\r\n if (field.type === 'section') return true;\r\n if (field.section) {\r\n const sectionField = this.fields.find(f => f.type === 'section' && f.name === field.section);\r\n return !sectionField?.collapsed;\r\n }\r\n return true;\r\n });\r\n }\r\n\r\n testReadOnly(field: Field): boolean {\r\n return Core.testReadOnly(this.config, this.data, field);\r\n }\r\n\r\n testRequired(field: Field): boolean {\r\n return Core.testRequired(this.config, this.data, field);\r\n }\r\n\r\n toggleSection(field: Field) {\r\n if (field.type === 'section') {\r\n field.collapsed = !field.collapsed;\r\n }\r\n }\r\n\r\n hasSectionFields(sectionName: string): boolean {\r\n return this.fields?.some(field =>\r\n field.section === sectionName &&\r\n Core.testVisible(this.config, this.data, field, this.authService.currentRoleSource.value)\r\n ) ?? false;\r\n }\r\n\r\n shouldSectionCollapse(field: Field): boolean {\r\n if (field.collapsedCondition) {\r\n return field.collapsedCondition(this.data);\r\n }\r\n return field.collapsed ?? false;\r\n }\r\n\r\n\r\n onInfoClick(event: MouseEvent, infoMessage: string): void {\r\n event.stopPropagation();\r\n this.messageService.info(infoMessage);\r\n }\r\n\r\n\r\n selectChanged(field: Field){\r\n this.inputChanged(field, this.data[field.name] )\r\n \r\n if (field.onSelectChange) {\r\n field.onSelectChange(this.data[field.name], this.data);\r\n }\r\n }\r\n\r\n\r\n\r\n inputChanged(field : Field, value){\r\n\r\n this.inputChange.emit({ field: field, value: value})\r\n\r\n this.updateChildOptions(field.name)\r\n\r\n\r\n if (this.config.mode == 'create' && field.children){\r\n field.children.forEach(childConfig => {\r\n let child = this.fields.find(x => x.name == childConfig.childField)\r\n this.data[child.name] = field.options.find(x => x[field.optionValue ?? 'value'] == value)[childConfig.childValueField]\r\n });\r\n }\r\n\r\n this.applyValueCalculations();\r\n\r\n }\r\n\r\n updateChildOptions(masterFieldName: string){\r\n\r\n let child = this.childFields.find(x => x.masterField == masterFieldName)\r\n if (child != null) {\r\n\r\n //current is master\r\n\r\n\r\n if (child.masterOptions){\r\n child.options = child.masterOptions.filter(x => x[child.masterOptionValue ?? 'masterValue'] == this.data[masterFieldName])\r\n }else{\r\n console.log(\"Master Options not found\")\r\n }\r\n\r\n }\r\n }\r\n\r\n private loadChildMasterOptions(child: Field) {\r\n if (!child.loadAction) return;\r\n\r\n this.dataService.CallApi(child.loadAction).subscribe((apiResponse: ApiResponse) => {\r\n if (apiResponse.success) {\r\n\r\n child.masterOptions = apiResponse.data;\r\n this.updateChildOptions(child.masterField);\r\n }\r\n });\r\n }\r\n\r\n\r\n buttonClicked(){\r\n\r\n this.buttonClick.emit(this.data);\r\n\r\n let button = this.config.button;\r\n\r\n if (!button) {\r\n return;\r\n }\r\n\r\n //validation\r\n let resp = Core.validateObject(this.getVisibleFields(),this.data);\r\n if (resp != ''){\r\n this.messageService.toast(resp)\r\n return;\r\n }\r\n\r\n\r\n\r\n if (this.files.length < 1 && this.fileField?.required && this.config.mode =='create') {\r\n this.messageService.toast(\"Please attach file(s)\");\r\n return;\r\n }\r\n\r\n\r\n if (button.confirm){\r\n\r\n this.messageService.confirm(`${button.confirm.message}`).subscribe((result) => {\r\n if (result == \"yes\") {\r\n this.processCall(button)\r\n }\r\n });\r\n\r\n }else{\r\n this.processCall(button)\r\n }\r\n\r\n\r\n\r\n\r\n }\r\n\r\n processCall(button: Button){\r\n\r\n if (!button.action) return\r\n\r\n let dataOut;\r\n\r\n if (button.action.isFormData){\r\n\r\n let formData: FormData = new FormData();\r\n for (let i = 0; i < this.files.length; i++) {\r\n formData.append(`uploadFile${i}`, this.files[i], this.files[i].name);\r\n }\r\n\r\n formData.append(\"data\", JSON.stringify(this.data));\r\n\r\n\r\n dataOut = formData\r\n }else{\r\n\r\n dataOut = this.data\r\n }\r\n\r\n\r\n\r\n\r\n this.isProcessing = true\r\n this.dataService.CallApi(button.action, dataOut).subscribe((apiResponse) => {\r\n this.isProcessing = false\r\n\r\n if (apiResponse.success) {\r\n\r\n if (button.action.successMessage) {\r\n this.messageService.toast(button.action.successMessage);\r\n } else {\r\n this.messageService.toast(\"Submitted\");\r\n }\r\n\r\n if (this.config.reset) {\r\n Core.resetObject(this.fields, this.data)\r\n this.files = [];\r\n this.applyValueCalculations();\r\n }\r\n\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n });\r\n }\r\n\r\n processForm(){\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<div class=\"tin-form-container\" >\r\n <div [ngClass]=\"[multiColumn ? 'tin-grid' : 'tin-col', config.notesConfig ? 'width-75' : 'width-100']\" class=\"form-main-content\">\r\n\r\n <div *ngIf=\"!hasAccess\" class=\"tin-center\">\r\n <p><em>Access Restricted</em></p>\r\n </div>\r\n \r\n <div [ngClass]=\"field.span || field.type =='section' || field.type =='file' || field.type =='file-view' ? 'span-col' : ''\" *ngFor=\"let field of getVisibleFields()\">\r\n \r\n <ng-container>\r\n \r\n <ng-container [ngSwitch]=\"field.type\" class=\"highlight\">\r\n \r\n <div *ngSwitchCase=\"'section'\" class=\"title d-flex align-items-center\" (click)=\"toggleSection(field)\" style=\"cursor: pointer;\">\r\n <label style=\"font-size: larger;margin-right: 10px;\">{{field.alias ?? field.name | camelToWords}}</label>\r\n <mat-icon *ngIf=\"field.infoMessage\" (click)=\"onInfoClick($event, field.infoMessage)\" style=\"color: steelblue; font-size: 14px;\">info</mat-icon>\r\n <!-- <button mat-icon-button class=\"info-icon-button\" matTooltip=\"Info\" matTooltipPosition=\"above\">\r\n \r\n </button> -->\r\n <mat-icon *ngIf=\"hasSectionFields(field.name)\">{{shouldSectionCollapse(field) ? 'expand_more' : 'expand_less'}}</mat-icon>\r\n </div>\r\n \r\n <ng-container *ngSwitchCase=\"'file'\">\r\n <div class=\"mt-1 mb-2\" *ngIf=\"config.mode !='view'\">\r\n <spa-attach [message]=\"field.alias ?? 'Drag and Drop files here'\" [(files)]=\"files\" [fileOptions]=\"field.fileOptions\"></spa-attach>\r\n </div>\r\n </ng-container>\r\n \r\n <ng-container *ngSwitchCase=\"'file-view'\">\r\n <div class=\"mt-1 mb-2\" *ngIf=\"config.mode && config.mode !='create'\">\r\n <spa-viewer [fileAction]=\"field.loadAction\" [path]=\"field.path\" [folderName]=\"data[field.keyField]\" ></spa-viewer>\r\n </div>\r\n </ng-container>\r\n \r\n <spa-html *ngSwitchCase=\"'html'\" [display]=\"field.alias | camelToWords\" [value]=\"data[field.name]\" [maxHeight]=\"field.maxHeight\"></spa-html>\r\n \r\n <label *ngSwitchCase=\"'blank'\"></label>\r\n \r\n <label *ngSwitchCase=\"'string'\" [ngStyle]=\"{'font-size':field.size ?? '14px'}\" >{{data[field.name] ?? field.alias ?? field.name}} {{field.suffix ?? ''}}</label>\r\n \r\n <spa-label *ngSwitchCase=\"'label'\" [display]=\"field.alias ?? field.name | camelToWords\" [value]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [format]=\"field.format ?? 'text'\" [suffix]=\"field.suffix\" [size]=\"field.size\"></spa-label>\r\n \r\n <spa-number *ngSwitchCase=\"'number'\" [display]=\"field.alias ?? field.name | camelToWords\" [width]=\"field.width\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [required]=\"testRequired(field)\" [min]=\"field.min\" [max]=\"field.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" [suffix]=\"field.suffix\" [copyContent]=\"field.copyContent\" [clearContent]=\"field.clearContent\"></spa-number>\r\n \r\n <spa-money *ngSwitchCase=\"'money'\" [display]=\"field.alias ?? field.name | camelToWords\" [width]=\"field.width\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [required]=\"testRequired(field)\" [min]=\"field.min\" [max]=\"field.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" [suffix]=\"field.suffix\" [copyContent]=\"field.copyContent\" [clearContent]=\"field.clearContent\"></spa-money>\r\n \r\n <spa-check *ngSwitchCase=\"'checkbox'\" [display]=\"field.alias ?? field.name | camelToWords\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [readonly]=\"testReadOnly(field)\" [infoMessage]=\"field.infoMessage\" ></spa-check>\r\n \r\n <spa-date *ngSwitchCase=\"'date'\" [display]=\"field.alias ?? field.name | camelToWords\" [width]=\"field.width\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [min]=\"field?.min\" [max]=\"field?.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" ></spa-date>\r\n \r\n <spa-datetime *ngSwitchCase=\"'datetime'\" [display]=\"field.alias ?? field.name | camelToWords\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [readonly]=\"testReadOnly(field)\" [min]=\"field.min\" [max]=\"field.max\" [infoMessage]=\"field.infoMessage\" ></spa-datetime>\r\n \r\n <spa-email *ngSwitchCase=\"'email'\" [display]=\"field.alias ?? field.name | camelToWords\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field,data[field.name])\" [required]=\"testRequired(field)\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" [suffix]=\"field.suffix\" [copyContent]=\"field.copyContent\" [clearContent]=\"field.clearContent\"></spa-email>\r\n \r\n <spa-text *ngSwitchCase=\"'password'\" [format]=\"'password'\" [display]=\"field.alias ?? field.name | camelToWords\" [width]=\"field.width\" [options]=\"field.options\" [optionValue]=\"field.optionValue ?? 'value'\" [rows]=\"field.rows\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field,data[field.name])\" [required]=\"testRequired(field)\" [min]=\"field.min\" [max]=\"field.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" [suffix]=\"field.suffix\" [copyContent]=\"field.copyContent\" [clearContent]=\"field.clearContent\"></spa-text>\r\n \r\n \r\n <ng-container *ngSwitchCase=\"'select'\">\r\n <ng-container *ngTemplateOutlet=\"dynamicSelectTemplate; context: {\r\n $implicit: field,\r\n field: field,\r\n data: data,\r\n testReadOnly: testReadOnly.bind(this),\r\n testRequired: testRequired.bind(this),\r\n selectChanged: selectChanged.bind(this)\r\n }\">\r\n </ng-container>\r\n </ng-container>\r\n \r\n \r\n <spa-multi-select *ngSwitchCase=\"'multi-select'\" [display]=\"field.alias ?? field.name | camelToWords\" [width]=\"field.width\" [options]=\"field.options\" [optionDisplay]=\"field.optionDisplay ?? 'name'\" [optionValue]=\"field.optionValue ?? 'value'\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [required]=\"testRequired(field)\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" [suffix]=\"field.suffix\" [copyContent]=\"field.copyContent\" [clearContent]=\"field.clearContent\" [loadAction]=\"field.loadAction\">\r\n </spa-multi-select>\r\n \r\n <spa-multi-text *ngSwitchCase=\"'multi-text'\" [strict]=\"field.strict\" [display]=\"field.alias ?? field.name | camelToWords\" [options]=\"field.options\" [optionDisplay]=\"field.optionDisplay ?? 'name'\" [optionValue]=\"field.optionValue ?? 'value'\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field,data[field.name])\" [required]=\"testRequired(field)\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" [suffix]=\"field.suffix\" [copyContent]=\"field.copyContent\" [clearContent]=\"field.clearContent\" [loadAction]=\"field.loadAction\"></spa-multi-text>\r\n \r\n \r\n \r\n <ng-container *ngSwitchCase=\"'composite'\">\r\n <div class=\"composite-field-container\">\r\n <div class=\"composite-field-group\">\r\n <ng-container *ngFor=\"let subfield of getVisibleSubfields(field)\">\r\n <ng-container [ngSwitch]=\"subfield.type\">\r\n \r\n <label *ngSwitchCase=\"'string'\" [ngStyle]=\"{'font-size':field.size ?? '14px'}\" >{{data[field.name] ?? field.alias ?? field.name}} {{field.suffix ?? ''}}</label>\r\n \r\n <spa-number *ngSwitchCase=\"'number'\" [display]=\"subfield.alias ?? subfield.name | camelToWords\" [width]=\"subfield.width\" [(value)]=\"data[subfield.name]\" (valueChange)=\"inputChanged(subfield, $event)\" [required]=\"testRequired(subfield)\" [min]=\"subfield.min\" [max]=\"subfield.max\" [readonly]=\"testReadOnly(field) || testReadOnly(subfield)\" [hint]=\"subfield.hint\" [infoMessage]=\"subfield.infoMessage\" [suffix]=\"subfield.suffix\" [copyContent]=\"subfield.copyContent\" [clearContent]=\"subfield.clearContent\"></spa-number>\r\n \r\n <spa-money *ngSwitchCase=\"'money'\" [display]=\"subfield.alias ?? subfield.name | camelToWords\" [width]=\"subfield.width\" [(value)]=\"data[subfield.name]\" (valueChange)=\"inputChanged(subfield, $event)\" [required]=\"testRequired(subfield)\" [min]=\"subfield.min\" [max]=\"subfield.max\" [readonly]=\"testReadOnly(field) || testReadOnly(subfield)\" [hint]=\"subfield.hint\" [infoMessage]=\"subfield.infoMessage\" [suffix]=\"subfield.suffix\" [copyContent]=\"field.copyContent\" [clearContent]=\"field.clearContent\"></spa-money>\r\n \r\n <spa-check *ngSwitchCase=\"'checkbox'\" [display]=\"subfield.alias ?? subfield.name | camelToWords\" [(value)]=\"data[subfield.name]\" (valueChange)=\"inputChanged(subfield, $event)\" [readonly]=\"testReadOnly(field) || testReadOnly(subfield)\" [infoMessage]=\"subfield.infoMessage\" ></spa-check>\r\n \r\n <spa-date *ngSwitchCase=\"'date'\" [display]=\"subfield.alias ?? subfield.name | camelToWords\" [width]=\"subfield.width\" [(value)]=\"data[subfield.name]\" (valueChange)=\"inputChanged(subfield, $event)\" [min]=\"subfield.min\" [max]=\"subfield.max\" [readonly]=\"testReadOnly(field) || testReadOnly(subfield)\" [hint]=\"subfield.hint\" [infoMessage]=\"subfield.infoMessage\" ></spa-date>\r\n \r\n <spa-datetime *ngSwitchCase=\"'datetime'\" [display]=\"subfield.alias ?? subfield.name | camelToWords\" [(value)]=\"data[subfield.name]\" (valueChange)=\"inputChanged(subfield, $event)\" [readonly]=\"testReadOnly(field) || testReadOnly(subfield)\" [min]=\"subfield.min\" [max]=\"subfield.max\" [infoMessage]=\"subfield.infoMessage\" ></spa-datetime>\r\n \r\n <ng-container *ngSwitchCase=\"'select'\">\r\n <ng-container *ngTemplateOutlet=\"dynamicSelectTemplate; context: {\r\n $implicit: field,\r\n field: field,\r\n data: data,\r\n testReadOnly: testReadOnly.bind(this),\r\n selectChanged: selectChanged.bind(this)\r\n }\">\r\n </ng-container>\r\n </ng-container>\r\n \r\n <spa-text *ngSwitchDefault [display]=\"subfield.alias ?? subfield.name | camelToWords\" [width]=\"subfield.width\" [options]=\"subfield.options\" [optionDisplay]=\"subfield.optionDisplay ?? 'name'\" [optionValue]=\"subfield.optionValue ?? 'value'\" [rows]=\"subfield.rows\" [(value)]=\"data[subfield.name]\" (valueChange)=\"inputChanged(subfield, $event)\" [required]=\"testRequired(subfield)\" [min]=\"subfield.min\" [max]=\"subfield.max\" [readonly]=\"testReadOnly(field) || testReadOnly(subfield)\" [hint]=\"subfield.hint\" [infoMessage]=\"subfield.infoMessage\" [suffix]=\"subfield.suffix\" [copyContent]=\"subfield.copyContent\" [clearContent]=\"subfield.clearContent\" [loadAction]=\"subfield.loadAction\" [regex]=\"subfield.regex\"></spa-text>\r\n \r\n \r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n \r\n \r\n <spa-text *ngSwitchDefault [display]=\"field.alias ?? field.name | camelToWords\" [width]=\"field.width\" [options]=\"field.options\" [optionDisplay]=\"field.optionDisplay ?? 'name'\" [optionValue]=\"field.optionValue ?? 'value'\" [rows]=\"field.rows\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field,data[field.name])\" [required]=\"testRequired(field)\" [min]=\"field.min\" [max]=\"field.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" [suffix]=\"field.suffix\" [copyContent]=\"field.copyContent\" [clearContent]=\"field.clearContent\" [loadAction]=\"field.loadAction\" [regex]=\"field.regex\"></spa-text>\r\n \r\n </ng-container>\r\n \r\n </ng-container>\r\n \r\n </div>\r\n \r\n \r\n <div class=\"span-col-center\" *ngIf=\"config.button\">\r\n <button mat-raised-button color=\"primary\" (click)=\"buttonClicked()\" cdkFocusInitial>{{buttonDisplay}}</button>\r\n </div>\r\n \r\n \r\n </div>\r\n <div class=\"notes-section\" *ngIf=\"config.notesConfig\">\r\n <spa-notes\r\n [title]=\"config.notesConfig.title || 'Notes'\"\r\n [notes]=\"config.notesConfig.notes || []\"\r\n [loadAction]=\"config.notesConfig.loadAction\"\r\n [loadIDField]=\"config.notesConfig.loadIDField\"\r\n [data]=\"data\"\r\n [nameField]=\"config.notesConfig.nameField || 'createdByName'\"\r\n [dateField]=\"config.notesConfig.dateField || 'createdDate'\"\r\n [commentField]=\"config.notesConfig.commentField || 'details'\">\r\n </spa-notes>\r\n </div>\r\n</div>\r\n\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { AlertMessage, AlertConfig } from '../../classes/Classes';\r\n\r\n@Component({\r\n selector: 'spa-alert',\r\n templateUrl: './alert.component.html',\r\n styleUrls: ['./alert.component.css']\r\n})\r\nexport class AlertComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n\r\n @Input() config: AlertConfig;\r\n @Input() data;\r\n\r\n\r\n getAlertMessages(type = undefined): AlertMessage[] {\r\n return this.config?.messages\r\n .filter(x => this.testVisible(x))\r\n .filter(x => x.type === type) || [];\r\n }\r\n\r\n hasAlertMessages(type = undefined): boolean {\r\n return this.config?.messages\r\n .filter(x => this.testVisible(x))\r\n .some(x => x.type === type) || false;\r\n }\r\n\r\n testVisible(msg: AlertMessage): boolean {\r\n\r\n if (msg.showCondition) {\r\n return msg.showCondition(this.data);\r\n }\r\n \r\n return msg.hiddenCondition ? !msg.hiddenCondition(this.data) : true;\r\n\r\n }\r\n\r\n getMessageContent(msg: AlertMessage): string {\r\n // If contentField is specified and data exists, use dynamic content\r\n if (msg.contentField && this.data && this.data[msg.contentField]) {\r\n return this.data[msg.contentField];\r\n }\r\n \r\n // Fall back to static content\r\n return msg.content || '';\r\n }\r\n\r\n}\r\n","<div *ngIf=\"hasAlertMessages()\" class=\"alert alert-secondary\" [ngClass]=\"{'alert-compact': config.compact}\" style=\"font-size: 14px;margin-bottom: 5px;\" role=\"alert\">\r\n <p *ngIf=\"config.subject\">{{config.subject}}</p>\r\n <ng-container *ngFor=\"let msg of getAlertMessages(); let last = last\">\r\n <label *ngIf=\"testVisible(msg)\">{{getMessageContent(msg)}}</label>\r\n <br *ngIf=\"!last\">\r\n </ng-container>\r\n</div>\r\n\r\n<div *ngIf=\"hasAlertMessages('success')\" class=\"alert alert-success\" [ngClass]=\"{'alert-compact': config.compact}\" style=\"font-size: 14px;margin-bottom: 5px;\" role=\"alert\">\r\n <p *ngIf=\"config.subject\">{{config.subject}}</p>\r\n <ng-container *ngFor=\"let msg of getAlertMessages('success'); let last = last\">\r\n <label *ngIf=\"testVisible(msg)\">{{getMessageContent(msg)}}</label>\r\n <br *ngIf=\"!last\">\r\n </ng-container>\r\n</div>\r\n\r\n<div *ngIf=\"hasAlertMessages('info')\" class=\"alert alert-info\" [ngClass]=\"{'alert-compact': config.compact}\" style=\"font-size: 14px;margin-bottom: 5px;\" role=\"alert\">\r\n <p *ngIf=\"config.subject\">{{config.subject}}</p>\r\n <ng-container *ngFor=\"let msg of getAlertMessages('info'); let last = last\">\r\n <label *ngIf=\"testVisible(msg)\">{{getMessageContent(msg)}}</label>\r\n <br *ngIf=\"!last\">\r\n </ng-container>\r\n\r\n</div>\r\n\r\n<div *ngIf=\"hasAlertMessages('warn')\" class=\"alert alert-warning\" [ngClass]=\"{'alert-compact': config.compact}\" style=\"font-size: 14px;margin-bottom: 5px;\" role=\"alert\">\r\n <p *ngIf=\"config.subject\">{{config.subject}}</p>\r\n <ng-container *ngFor=\"let msg of getAlertMessages('warn'); let last = last\">\r\n <label *ngIf=\"testVisible(msg)\">{{getMessageContent(msg)}}</label>\r\n <br *ngIf=\"!last\">\r\n </ng-container>\r\n</div>\r\n\r\n<div *ngIf=\"hasAlertMessages('critical')\" class=\"alert alert-danger\" [ngClass]=\"{'alert-compact': config.compact}\" style=\"font-size: 14px;margin-bottom: 5px;\" role=\"alert\">\r\n <p *ngIf=\"config.subject\">{{config.subject}}</p>\r\n <ng-container *ngFor=\"let msg of getAlertMessages('critical'); let last = last\">\r\n <label *ngIf=\"testVisible(msg)\">{{getMessageContent(msg)}}</label>\r\n <br *ngIf=\"!last\">\r\n </ng-container>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { SelectCommonComponent } from '../select-common/select-common.component';\r\n\r\n@Component({\r\n selector: 'spa-select-lite',\r\n templateUrl: './select-lite.component.html',\r\n styleUrls: ['./select-lite.component.css']\r\n})\r\nexport class SelectLiteComponent extends SelectCommonComponent implements OnInit {\r\n\r\n override ngOnInit(): void {\r\n\r\n if (this.options == null || this.options == undefined || this.options.length == 0) {\r\n this.getData(this.loadAction);\r\n }\r\n\r\n }\r\n\r\n}\r\n","<spa-select-common [width]=\"width\" [readonly]=\"readonly\" [required]=\"required\" [defaultFirstValue]=\"defaultFirstValue\"\r\n [readonlyMode]=\"readonlyMode\" [hint]=\"hint\" [placeholder]=\"placeholder\" [multiple]=\"multiple\"\r\n [display]=\"display\" [(value)]=\"value\" [options]=\"options\" [masterOptions]=\"masterOptions\" [masterField]=\"masterField\"\r\n [optionValue]=\"optionValue\" [optionDisplay]=\"optionDisplay\" [optionDisplayExtra]=\"optionDisplayExtra\"\r\n [nullable]=\"nullable\" [infoMessage]=\"infoMessage\" [copyContent]=\"copyContent\" [loadAction]=\"loadAction\" [loadIDField]=\"loadIDField\" [field]=\"field\" [data]=\"data\"\r\n (valueChange)=\"valueChange.emit($event)\">\r\n</spa-select-common>\r\n","import { Component, Input } from '@angular/core';\r\nimport { StatusConfig, StatusItem } from '../../classes/Classes';\r\n\r\n\r\n\r\n@Component({\r\n selector: 'spa-statuses',\r\n templateUrl: './statuses.component.html',\r\n styleUrls: ['./statuses.component.css']\r\n})\r\nexport class StatusesComponent {\r\n\r\n @Input() config: StatusConfig;\r\n @Input() data: any;\r\n\r\n // Check if the entire component should be visible\r\n isComponentVisible(): boolean {\r\n if (!this.config || !this.data) return false;\r\n return this.config.hiddenCondition ? !this.config.hiddenCondition(this.data) : true;\r\n }\r\n\r\n // Check if individual status item should be visible\r\n isItemVisible(item: StatusItem): boolean {\r\n if (!this.data) return false;\r\n return item.hiddenCondition ? !item.hiddenCondition(this.data) : true;\r\n }\r\n\r\n // Get the icon based on status value and state conditions\r\n getIcon(item: StatusItem): string {\r\n if (!this.data || !item.states) return '';\r\n \r\n const matchingState = item.states.find(state => state.condition(this.data));\r\n \r\n return matchingState ? matchingState.icon : '';\r\n }\r\n\r\n // Get the icon color based on status value and state conditions\r\n getIconColor(item: StatusItem): string {\r\n if (!this.data || !item.states) return '';\r\n \r\n const matchingState = item.states.find(state => state.condition(this.data));\r\n \r\n return matchingState ? matchingState.color : '';\r\n }\r\n}","<div *ngIf=\"isComponentVisible()\" class=\"statuses-container\">\r\n <ng-container *ngFor=\"let item of config.items\">\r\n <button \r\n *ngIf=\"isItemVisible(item)\"\r\n mat-stroked-button \r\n class=\"status-button\">\r\n {{item.name}} \r\n <mat-icon [ngStyle]=\"{'color': getIconColor(item)}\">{{getIcon(item)}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n</div>","\r\nimport { Component, OnInit, Inject, Output, EventEmitter, OnDestroy } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { FormConfig, Field, TableConfig, Button, DetailsDialogConfig, Action, ApiResponse, StepConfig, StatusConfig, CloseOptions } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { LoaderService } from '../../services/loader.service';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { Core, DetailsDialogProcessor } from '../../classes/TinCore';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { ButtonService } from '../../services/button.service';\r\nimport { interval, Subject, Subscription } from 'rxjs';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { TableConfigService } from '../../services/table-config.service';\r\nimport { MatTabChangeEvent } from '@angular/material/tabs';\r\n\r\n@Component({\r\n selector: 'spa-detailsDialog-lite', //uniq to lite\r\n templateUrl: './detailsDialog-lite.component.html',\r\n styleUrls: ['./table-lite.component.css']\r\n})\r\nexport class DetailsDialogLite implements OnInit, OnDestroy {\r\n\r\n constructor(private breakpointObserver: BreakpointObserver,private loaderService: LoaderService,public dataService: DataServiceLib,private messageService: MessageService,\r\n private dialogRef: MatDialogRef<DetailsDialogLite>, @Inject(MAT_DIALOG_DATA) public detailsConfig: DetailsDialogConfig, private buttonService: ButtonService,\r\n private dialogService: DialogService, private authService: AuthService, public tableConfigService: TableConfigService)\r\n {\r\n // detect screen size changes\r\n this.breakpointObserver.observe([\"(max-width: 600px)\"]).subscribe((result: BreakpointState) => {\r\n\r\n if (result.matches) {\r\n this.smallScreen = true\r\n }else {\r\n this.smallScreen = false\r\n }\r\n\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n\r\n const { tableConfig, tableConfigs, formConfig, stepConfig, statusConfig, buttons } = DetailsDialogProcessor.initializeConfigs(this.detailsConfig);\r\n this.tableConfig = tableConfig;\r\n this.tableConfigs = tableConfigs;\r\n this.formConfig = formConfig;\r\n this.stepConfig = stepConfig;\r\n this.statusConfig = statusConfig;\r\n this.buttons = buttons;\r\n\r\n let resp = DetailsDialogProcessor.handleFormMode(this.detailsConfig, this.formConfig,);\r\n\r\n if (resp.loadByAction) {\r\n this.loadByAction = true;\r\n formConfig.loadAction = resp.action;\r\n this.loadData(resp.action, false);\r\n } else {\r\n this.details = resp.details;\r\n DetailsDialogProcessor.setHeroValue(this.detailsConfig, this.details);\r\n this.loadByAction = false;\r\n this.isLoadComplete = true;\r\n }\r\n\r\n this.fileField = DetailsDialogProcessor.setFileField(this.formConfig);\r\n\r\n this.loaderService.isLoading.subscribe(x => this.isProcessing = x);\r\n\r\n const { extraButtons, createButton, editButton, deleteButton } = DetailsDialogProcessor.setupButtons(this.buttons);\r\n this.extraButtons = extraButtons;\r\n this.createButton = createButton;\r\n this.editButton = editButton;\r\n this.deleteButton = deleteButton;\r\n\r\n this.setTitleAction()\r\n this.initAutoRefresh();\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n // Cleanup subscription on component destroy\r\n this.stopAutoRefresh();\r\n }\r\n\r\n private refreshSubscription: Subscription;\r\n autoRefreshEnabled: boolean = false;\r\n\r\n titleAction = \"View\";\r\n loadByAction = false;\r\n\r\n extraButtons: Button[];\r\n buttons: Button[];\r\n createButton: Button;\r\n editButton: Button;\r\n deleteButton: Button;\r\n\r\n // modeButton : Button\r\n fileField: Field;\r\n files: any[] = [];\r\n\r\n tableReload: Subject<boolean> = new Subject();\r\n\r\n tableConfig: TableConfig\r\n tableConfigs : TableConfig[]\r\n details: any\r\n formConfig: FormConfig;\r\n stepConfig: StepConfig;\r\n statusConfig : StatusConfig;\r\n smallScreen = false;\r\n\r\n isLoadComplete: boolean = false;\r\n isProcessing: boolean = false;\r\n\r\n @Output() inputChange = new EventEmitter();\r\n\r\n selectedTabIndex = 0;\r\n onTabChange(event: MatTabChangeEvent) {\r\n this.selectedTabIndex = event.index;\r\n }\r\n\r\n private initAutoRefresh() {\r\n const config = this.detailsConfig.autoRefreshConfig;\r\n if (!config) return;\r\n\r\n // Set initial state based on defaultOn configuration\r\n this.autoRefreshEnabled = config.defaultOn || false;\r\n\r\n // Start auto-refresh if enabled by default\r\n if (this.autoRefreshEnabled) {\r\n this.startAutoRefresh();\r\n }\r\n }\r\n\r\n private startAutoRefresh() {\r\n\r\n if (!this.detailsConfig.autoRefreshConfig) return;\r\n \r\n const refreshInterval = this.detailsConfig.autoRefreshConfig.interval || 5000; // Default to 5 seconds\r\n \r\n // Clear any existing subscription\r\n this.stopAutoRefresh();\r\n \r\n // Create new subscription\r\n this.refreshSubscription = interval(refreshInterval).subscribe(() => {\r\n if (this.isLoadComplete && !this.isProcessing) {\r\n this.refreshData();\r\n }\r\n });\r\n }\r\n\r\n private stopAutoRefresh() {\r\n if (this.refreshSubscription) {\r\n this.refreshSubscription.unsubscribe();\r\n this.refreshSubscription = null;\r\n }\r\n }\r\n\r\n toggleAutoRefresh() {\r\n // this.autoRefreshEnabled = !this.autoRefreshEnabled;\r\n \r\n if (this.autoRefreshEnabled) {\r\n this.startAutoRefresh();\r\n } else {\r\n this.stopAutoRefresh();\r\n }\r\n }\r\n\r\n loadData(action: Action, causeTablesReload) {\r\n\r\n if (action && this.loadByAction) {\r\n\r\n this.dataService.CallApi(action).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.details = apiResponse.data\r\n this.isLoadComplete = true;\r\n // DetailsDialogProcessor.setHeroValue(this.detailsConfig, this.details);\r\n if(causeTablesReload) this.tableReload.next(true);\r\n\r\n const config = this.detailsConfig.autoRefreshConfig;\r\n if (this.autoRefreshEnabled && config?.stopCondition && config.stopCondition(this.details)) {\r\n this.autoRefreshEnabled = false;\r\n this.stopAutoRefresh();\r\n }\r\n }\r\n else{\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n\r\n if (this.autoRefreshEnabled) {\r\n this.autoRefreshEnabled = false;\r\n this.stopAutoRefresh();\r\n }\r\n }\r\n\r\n });\r\n }\r\n\r\n }\r\n\r\n inputChanged(event) {\r\n this.inputChange.emit({ field: event.field, value: event.value })\r\n }\r\n\r\n\r\n setMode(newMode) {\r\n this.formConfig.mode = newMode\r\n this.setTitleAction()\r\n }\r\n\r\n setTitleAction() {\r\n if (this.formConfig.fixedTitle) {\r\n this.titleAction = \"\";\r\n return;\r\n }\r\n\r\n this.titleAction = this.buttonService.getTitleAction(this.formConfig.mode, this.buttons);\r\n }\r\n\r\n getButton(name: string) {\r\n return this.buttonService.getButton(this.buttons, name);\r\n }\r\n\r\n testDisabled(row, buttonName: string): boolean {\r\n const button = this.getButton(buttonName);\r\n\r\n if (!button) return false;\r\n\r\n // Create a copy of the button with component's detailsConfig\r\n const buttonWithConfig = {\r\n ...button,\r\n detailsConfig: button.detailsConfig ? { ...button.detailsConfig } : this.detailsConfig\r\n };\r\n\r\n return this.buttonService.testDisabled(buttonWithConfig, row);\r\n }\r\n\r\n\r\n testVisible(row, buttonName: string): boolean {\r\n const button = this.getButton(buttonName);\r\n if (!button) return false;\r\n\r\n // Create a copy of the button with component's detailsConfig\r\n const buttonWithConfig = {\r\n ...button,\r\n detailsConfig: button.detailsConfig ? { ...button.detailsConfig } : this.detailsConfig\r\n };\r\n\r\n return this.buttonService.testVisible(buttonWithConfig, row)\r\n }\r\n\r\n testVisibleTab(tblConfig: TableConfig): boolean {\r\n\r\n if (!this.tableConfigService.hasTableAccess(tblConfig)) {\r\n return false;\r\n }\r\n\r\n return this.buttonService.isTabVisible(tblConfig, this.details);\r\n }\r\n\r\n getButtonColor(button: Button, row) {\r\n return this.buttonService.getButtonColor(button, row);\r\n }\r\n\r\n getVisibleFields() {\r\n return this.formConfig.fields?.filter(x => Core.testVisible(this.formConfig, this.details, x, this.authService.currentRoleSource.value))\r\n }\r\n\r\n\r\n create() {\r\n this.handleButtonAction('create');\r\n }\r\n\r\n edit() {\r\n this.handleButtonAction('edit');\r\n }\r\n\r\n delete() {\r\n const button = this.buttonService.getButton(this.buttons, 'delete');\r\n if (!button) return;\r\n\r\n let confirmMessage = this.buttonService.getConfirmMessage(button, this.details);\r\n if (!confirmMessage) {\r\n confirmMessage = `Are you sure you want to delete ?`;\r\n }\r\n\r\n this.messageService.confirm(confirmMessage).subscribe((result) => {\r\n if (result == \"yes\") {\r\n this.handleButtonAction('delete');\r\n }\r\n });\r\n }\r\n\r\n\r\n custom(button: Button) {\r\n if (button.dialog && button.detailsConfig) {\r\n this.openNestedDetailsDialog(button);\r\n } else {\r\n this.handleButtonAction(button.name);\r\n }\r\n }\r\n\r\n private openNestedDetailsDialog(button: Button): void {\r\n\r\n this.dialogService.openConfiguredDetailsDialog(button, this.details, DetailsDialogLite).subscribe(result => {\r\n\r\n if (result.action === 'inputChange') {\r\n this.inputChanged(result.change);\r\n } else if (result && result.message === 'success') {\r\n this.refreshData();\r\n }\r\n\r\n });\r\n }\r\n\r\n private refreshData(): void {\r\n if (this.formConfig.loadAction) {\r\n this.loadData(this.formConfig.loadAction, true);\r\n }\r\n }\r\n\r\n handleButtonAction(buttonName: string) {\r\n \r\n const button = this.getButton(buttonName);\r\n if (!button) return;\r\n \r\n\r\n if (button.onClick) {\r\n button.onClick(this.details);\r\n }\r\n\r\n this.processButtonAction(button);\r\n }\r\n\r\n processButtonAction(button : Button) {\r\n if (!button.action) {\r\n if (!button.keepOpen) {\r\n this.dialogRef.close({ message: 'emit', data: this.details });\r\n }\r\n return;\r\n }\r\n\r\n if (button.skipValidation || this.validateForm()) {\r\n this.executeAction(button, this.details);\r\n }\r\n }\r\n\r\n private validateForm(): boolean {\r\n let validationResult = Core.validateObject(this.getVisibleFields(), this.details);\r\n if (validationResult !== '') {\r\n this.messageService.toast(validationResult);\r\n return false;\r\n }\r\n\r\n if (this.files.length < 1 && this.fileField?.required && this.formConfig.mode === 'create') {\r\n this.messageService.toast(\"Please attach file(s)\");\r\n return false;\r\n }\r\n\r\n // Validate composite fields\r\n for (const field of this.getVisibleFields()) {\r\n if (field.type === 'composite') {\r\n validationResult = Core.validateObject(Core.getVisibleSubfields(this.formConfig, this.details, field, this.authService.currentRoleSource.value), this.details, );\r\n if (validationResult !== '') {\r\n this.messageService.toast(validationResult);\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private prepareActionData(button: Button, data: any): any {\r\n if (this.buttonService.isFormButton(button)) {\r\n const formData = new FormData();\r\n for (let i = 0; i < this.files.length; i++) {\r\n formData.append(`uploadFile${i}`, this.files[i], this.files[i].name);\r\n }\r\n formData.append(\"data\", JSON.stringify(data));\r\n return formData;\r\n }\r\n return data;\r\n }\r\n\r\n private executeAction(button: Button, data: any) {\r\n const actionData = this.prepareActionData(button, data);\r\n\r\n if (button.confirm) {\r\n let confirmMessage = this.buttonService.getConfirmMessage(button, this.details);\r\n\r\n if (!confirmMessage && button.name == 'delete') {\r\n confirmMessage = `Are you sure you want to delete ?`;\r\n }\r\n\r\n this.messageService.confirm(confirmMessage).subscribe((result) => {\r\n if (result == \"yes\") {\r\n this.performApiCall(button, actionData);\r\n }\r\n });\r\n\r\n } else {\r\n this.performApiCall(button, actionData);\r\n }\r\n\r\n }\r\n\r\n private performApiCall(button: Button, data: any) {\r\n this.dataService.CallApi(button.action, data).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (apiResponse.data){\r\n this.details = apiResponse.data;\r\n }\r\n\r\n if (apiResponse.success) {\r\n\r\n if (apiResponse.message.includes(\"approval\") || apiResponse.message.includes(\"approve\") || apiResponse.message.includes(\"decline\")) {\r\n this.messageService.toast(apiResponse.message);\r\n } else if (button.action.successMessage) {\r\n this.messageService.toast(button.action.successMessage);\r\n } else if (apiResponse.message != \"success\" && apiResponse.message != \"\") {\r\n this.messageService.toast(apiResponse.message);\r\n } else {\r\n this.messageService.toast(\"Updated\");\r\n }\r\n\r\n if (button.onSuccess) {\r\n button.onSuccess(apiResponse.data, this.details);\r\n }\r\n\r\n if (button.keepOpen) {\r\n if (button.name === 'create' && apiResponse.data) {\r\n this.details = apiResponse.data;\r\n \r\n if (this.detailsConfig.heroField && apiResponse.data[this.detailsConfig.heroField]) {\r\n this.detailsConfig.heroValue = apiResponse.data[this.detailsConfig.heroField];\r\n this.formConfig.heroField = this.detailsConfig.heroField;\r\n this.formConfig.heroValue = this.detailsConfig.heroValue;\r\n }\r\n \r\n this.formConfig.mode = 'edit';\r\n this.setTitleAction();\r\n this.isLoadComplete = true;\r\n \r\n } else {\r\n this.refreshData();\r\n }\r\n }else{\r\n this.dialogRef.close({ message: 'success', data: { ...apiResponse, data: button.name == 'create' ? apiResponse.data : this.details } });\r\n }\r\n \r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n });\r\n }\r\n\r\n getClosePosition(): 'top' | 'bottom' {\r\n return this.detailsConfig.closeOptions?.position || 'bottom';\r\n }\r\n\r\n getCloseText(): string {\r\n return this.detailsConfig.closeOptions?.text || 'Cancel';\r\n }\r\n\r\n shouldShowTopClose(): boolean {\r\n return this.getClosePosition() === 'top';\r\n }\r\n\r\n shouldShowBottomClose(): boolean {\r\n return this.getClosePosition() === 'bottom';\r\n }\r\n\r\n close(){\r\n if (this.detailsConfig.refreshOnClose){\r\n this.dialogRef.close({ message: 'success', data: this.details });\r\n }else{\r\n this.dialogRef.close({ message: 'emit', data: this.details });\r\n }\r\n }\r\n\r\n};\r\n\r\n\r\n\r\n","<div class=\"dialog-container\">\r\n\r\n <div class=\"dialog-content\">\r\n\r\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isProcessing && dataService.appConfig.progressLine\"></mat-progress-bar>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center mt-2\">\r\n\r\n <div>\r\n <label style=\"font-size: 20px; font-weight:500;margin-bottom: 10px;\">{{titleAction | titlecase}} {{formConfig?.title}}</label>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n\r\n <spa-check *ngIf=\"detailsConfig.autoRefreshConfig\" display=\"Auto Refresh\" [(value)]=\"autoRefreshEnabled\" (valueChange)=\"toggleAutoRefresh()\"></spa-check>\r\n\r\n <div *ngIf=\"formConfig.mode=='view' && editButton && testVisible(details,editButton.name)\">\r\n <button mat-icon-button matTooltipPosition=\"above\" matTooltip=\"Edit\" color=\"primary\" (click)=\"setMode('edit')\" [disabled]=\"testDisabled(details,editButton.name)\"><mat-icon>edit</mat-icon></button>\r\n </div>\r\n\r\n <button [disabled]=\"isProcessing\" *ngIf=\"loadByAction\" mat-icon-button matTooltipPosition=\"above\" matTooltip=\"Refresh\" color=\"primary\" (click)=\"loadData(formConfig.loadAction, detailsConfig.causeTableRefresh)\"><mat-icon class=\"refreshIcon\">cached</mat-icon></button>\r\n \r\n <!-- Added: Top close button when position is 'top' -->\r\n <button *ngIf=\"shouldShowTopClose()\" [disabled]=\"isProcessing\" mat-icon-button matTooltipPosition=\"above\" matTooltip=\"Close\" (click)=\"close()\"><mat-icon>close</mat-icon></button>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <div>\r\n <spa-steps *ngIf=\"stepConfig && details && stepConfig.sticky\" [config]=\"stepConfig\" [data]=\"details\"></spa-steps>\r\n <spa-statuses *ngIf=\"statusConfig && details && statusConfig?.sticky\" [config]=\"statusConfig\" [data]=\"details\"></spa-statuses>\r\n <spa-alert *ngIf=\"formConfig.alertConfig && formConfig.alertConfig?.sticky\" [config]=\"formConfig.alertConfig\" [data]=\"details\"></spa-alert>\r\n </div>\r\n\r\n <mat-dialog-content class=\"mat-typography dialog-scroll-content\">\r\n\r\n <spa-steps *ngIf=\"stepConfig && details && !stepConfig.sticky\" [config]=\"stepConfig\" [data]=\"details\"></spa-steps>\r\n <spa-statuses *ngIf=\"statusConfig && details && !statusConfig?.sticky\" [config]=\"statusConfig\" [data]=\"details\"></spa-statuses>\r\n <spa-alert *ngIf=\"formConfig.alertConfig && !formConfig.alertConfig?.sticky\" [config]=\"formConfig.alertConfig\" [data]=\"details\"></spa-alert>\r\n\r\n <div class=\"tin-input\" style=\"font-size:14px\">\r\n\r\n <p *ngIf=\"formConfig && !details\"><em>Loading...</em></p>\r\n\r\n <spa-form *ngIf=\"formConfig && details\" [files]=\"files\" [data]=\"details\" [config]=\"formConfig\" (inputChange)=\"inputChanged($event)\">\r\n <ng-template #dynamicSelect let-field=\"field\" let-data=\"data\" let-testReadOnly=\"testReadOnly\" let-testRequired=\"testRequired\" let-selectChanged=\"selectChanged\">\r\n <spa-select-lite\r\n [display]=\"field.alias ?? field.name | camelToWords\"\r\n [width]=\"field.width\"\r\n [nullable]=\"field.nullable\"\r\n [options]=\"field.options\"\r\n [masterOptions]=\"field.masterOptions\"\r\n [masterField]=\"field.masterField\"\r\n [optionDisplay]=\"field.optionDisplay ?? 'name'\"\r\n [optionValue]=\"field.optionValue ?? 'value'\"\r\n [(value)]=\"data[field.name]\"\r\n [defaultFirstValue]=\"field.defaultFirstValue\"\r\n [required]=\"testRequired(field)\"\r\n [readonly]=\"testReadOnly(field)\"\r\n [hint]=\"field.hint\"\r\n [loadAction]=\"field.loadAction\"\r\n [loadIDField]=\"field.loadIDField\"\r\n [field]=\"field\"\r\n [data]=\"data\"\r\n [infoMessage]=\"field.infoMessage\"\r\n [copyContent]=\"field.copyContent\"\r\n (valueChange)=\"selectChanged(field)\"\r\n ></spa-select-lite>\r\n </ng-template>\r\n </spa-form>\r\n\r\n\r\n <!-- <mat-tab-group *ngIf=\"tableConfigs\">\r\n\r\n <ng-container *ngFor=\"let tbl of tableConfigService.getVisibleTableConfigs(tableConfigs)\">\r\n <mat-tab *ngIf=\"testVisibleTab(tbl)\">\r\n\r\n <ng-template matTabLabel>\r\n <span>{{tbl.tabTitle ?? 'Untitled'}}</span>\r\n </ng-template>\r\n\r\n <spa-table-internal [config]=\"tbl\" [reload]=\"tableReload\" (dataLoad)=\"loadData(formConfig.loadAction, false)\"></spa-table-internal>\r\n\r\n </mat-tab>\r\n </ng-container>\r\n\r\n </mat-tab-group> -->\r\n\r\n </div>\r\n\r\n </mat-dialog-content>\r\n\r\n\r\n </div>\r\n\r\n <mat-dialog-actions>\r\n\r\n <div>\r\n\r\n <button mat-raised-button [disabled]=\"isProcessing\" *ngIf=\"formConfig.mode=='create' && createButton\" color=\"primary\" (click)=\"create()\" cdkFocusInitial>{{createButton.display ?? 'Submit'}}\r\n </button>\r\n\r\n <button mat-raised-button [disabled]=\"isProcessing\" *ngIf=\"formConfig.mode=='edit' && editButton\" color=\"primary\" (click)=\"edit()\" cdkFocusInitial>{{editButton.display ?? 'Submit'}}\r\n </button>\r\n\r\n <ng-container *ngFor=\"let btn of extraButtons\">\r\n <button *ngIf=\"formConfig.mode !== 'create' && testVisible(details,btn.name)\" mat-stroked-button [disabled]=\"isProcessing || testDisabled(details,btn.name)\" [ngStyle]=\"{'color': getButtonColor(btn, details)}\" (click)=\"custom(btn)\" cdkFocusInitial>\r\n <mat-icon *ngIf=\"btn.icon\" [ngStyle]=\"{'color': getButtonColor(btn, details)}\">{{btn.icon.name}}</mat-icon>\r\n {{btn.display ?? btn.name | titlecase}}\r\n </button>\r\n </ng-container>\r\n\r\n <!-- Changed: Bottom close button now uses conditional display and custom text -->\r\n <button *ngIf=\"shouldShowBottomClose()\" mat-stroked-button color=\"primary\" (click)=\"close()\">{{getCloseText()}}</button>\r\n\r\n </div>\r\n\r\n <div class=\"col d-flex justify-content-end\" *ngIf=\"smallScreen\">\r\n <button mat-icon-button matTooltipPosition=\"above\" matTooltip=\"Delete\" [disabled]=\"isProcessing\" style=\"color: red;\" (click)=\"delete()\" *ngIf=\"formConfig.mode!='create' && deleteButton\"><mat-icon>delete</mat-icon></button>\r\n </div>\r\n\r\n\r\n </mat-dialog-actions>\r\n\r\n\r\n</div>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { Action, ApiResponse, Button, DetailsDialogConfig, TableConfig } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { SelectCommonComponent } from '../select-common/select-common.component';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { DetailsDialogLite } from '../table-lite/detailsDialog-lite.component';\r\nimport { ButtonService } from '../../services/button.service';\r\n\r\n@Component({\r\n selector: 'spa-select-internal',\r\n templateUrl: './select-internal.component.html',\r\n styleUrls: ['./select-internal.component.css']\r\n})\r\nexport class SelectInternalComponent extends SelectCommonComponent implements OnInit {\r\n constructor(\r\n protected override messageService: MessageService, protected override dataService: DataServiceLib,\r\n private dialogService: DialogService, private buttonService: ButtonService,\r\n\r\n ) {\r\n super(messageService, dataService);\r\n }\r\n\r\n override ngOnInit(): void {\r\n\r\n if (this.options == null || this.options == undefined || this.options.length == 0) {\r\n this.getData(this.loadAction);\r\n }\r\n\r\n }\r\n\r\n @Input() detailsConfig: DetailsDialogConfig;\r\n\r\n\r\n onHoverChange(isHovered: boolean): void {\r\n this.isHovered = isHovered;\r\n }\r\n\r\n canCreate(): boolean {\r\n if (!this.detailsConfig?.buttons) return false;\r\n const createButton: Button = this.detailsConfig.buttons.find(b => b.name === 'create');\r\n const tmpTableConfig: TableConfig = { formConfig: this.detailsConfig.formConfig };\r\n return createButton && (!createButton.disabled || !createButton.disabled(this.value)) && this.buttonService.testVisible(createButton, null, tmpTableConfig);\r\n }\r\n\r\n canView(): boolean {\r\n if (!this.detailsConfig?.buttons) return false;\r\n let viewButton: Button = this.detailsConfig.buttons.find(b => b.name === 'view');\r\n if (!viewButton) {\r\n // Add default view button if not exists\r\n viewButton = { name: 'view', dialog: true };\r\n this.detailsConfig.buttons.push(viewButton);\r\n }\r\n const tmpTableConfig: TableConfig = { formConfig: this.detailsConfig.formConfig };\r\n return this.value && viewButton && this.buttonService.testVisible(viewButton, null, tmpTableConfig);\r\n }\r\n\r\n onPeekClick(event: MouseEvent, mode: 'create' | 'view'): void {\r\n event.stopPropagation();\r\n\r\n if (this.detailsConfig) {\r\n const dynamicData = mode === 'create' ? {} : { [this.detailsConfig.heroField]: this.value };\r\n\r\n let button = this.detailsConfig.buttons.find(b => b.name === mode);\r\n button.detailsConfig = this.detailsConfig;\r\n\r\n this.dialogService.openConfiguredDetailsDialog( button, dynamicData, DetailsDialogLite ).subscribe(result => {\r\n console.log(result);\r\n\r\n if (result.message === 'success') {\r\n this.refresh(event);\r\n }\r\n\r\n });\r\n\r\n } else {\r\n this.messageService.toast(\"Peek configuration error\");\r\n }\r\n }\r\n}\r\n","<spa-select-common [width]=\"width\" [readonly]=\"readonly\" [required]=\"required\" [defaultFirstValue]=\"defaultFirstValue\"\r\n [readonlyMode]=\"readonlyMode\" [hint]=\"hint\" [placeholder]=\"placeholder\" [multiple]=\"multiple\"\r\n [display]=\"display\" [(value)]=\"value\" [options]=\"options\" [masterOptions]=\"masterOptions\" [masterField]=\"masterField\"\r\n [optionValue]=\"optionValue\" [optionDisplay]=\"optionDisplay\" [optionDisplayExtra]=\"optionDisplayExtra\"\r\n [nullable]=\"nullable\" [infoMessage]=\"infoMessage\" [copyContent]=\"copyContent\" [loadAction]=\"loadAction\" [loadIDField]=\"loadIDField\" [field]=\"field\" [data]=\"data\"\r\n (valueChange)=\"valueChange.emit($event)\"\r\n (hoverChange)=\"onHoverChange($event)\">\r\n <ng-container additionalButtons>\r\n <button mat-icon-button *ngIf=\"detailsConfig && canCreate() && isHovered\" (click)=\"onPeekClick($event, 'create')\" matTooltip=\"Add\" matTooltipPosition=\"above\">\r\n <mat-icon style=\"color: green;\">add</mat-icon>\r\n </button>\r\n <button mat-icon-button *ngIf=\"detailsConfig && canView() && isHovered && value\" (click)=\"onPeekClick($event, 'view')\" matTooltip=\"View\" matTooltipPosition=\"above\">\r\n <mat-icon color=\"primary\">launch</mat-icon>\r\n </button>\r\n\r\n </ng-container>\r\n</spa-select-common>\r\n","import { Injectable } from '@angular/core';\r\nimport { Icon, Color } from '../classes/Classes';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConditionService {\r\n\r\n\r\n testIconCondition(icon: Icon, row: any): boolean {\r\n if (!icon) return false;\r\n return icon.condition ? icon.condition(row) : true;\r\n }\r\n\r\n\r\n testColorCondition(color: Color, row: any): boolean {\r\n if (!color) return false;\r\n return color.condition ? color.condition(row) : true;\r\n }\r\n\r\n\r\n getColor(value: any, options: any[]): string {\r\n if (!options) return 'lightgrey';\r\n const option = options.find(opt => opt.value === value);\r\n return option ? option.color : 'lightgrey';\r\n }\r\n\r\n\r\n testCondition(condition: (value: any) => boolean, value: any): boolean {\r\n return condition ? condition(value) : true;\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 this.applyFilter(this._filterText);\r\n }\r\n\r\n @Input() flatButtons = false;\r\n @Input() showText = true;\r\n @Input() showButton = true;\r\n @Input() data = new MatTableDataSource();\r\n @Output() refreshClick = new EventEmitter();\r\n\r\n _filterText = \"\";\r\n\r\n\r\n keyUp(event: KeyboardEvent) {\r\n let text = event.target['value'];\r\n this.applyFilter(text);\r\n }\r\n\r\n\r\n applyFilter(filterValue: string) {\r\n\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 clear(){\r\n this._filterText = \"\";\r\n this.applyFilter(this._filterText);\r\n }\r\n\r\n}\r\n","<mat-form-field *ngIf=\"showText\" >\r\n <mat-label>Filter</mat-label>\r\n <input id=\"txtFilter\" matInput [(ngModel)]=\"_filterText\" (keyup)=\"keyUp($event)\" placeholder=\"Enter Filter text\" autocomplete=\"off\">\r\n <div matSuffix class=\"suffix-icons\">\r\n <button mat-icon-button *ngIf=\"_filterText\" (click)=\"clear()\" matTooltip=\"Clear\" matTooltipPosition=\"above\">\r\n <mat-icon style=\"color: black;\">close</mat-icon>\r\n </button>\r\n\r\n </div>\r\n</mat-form-field>\r\n\r\n<button *ngIf=\"showButton && !flatButtons\" id=\"btnFilter\" mat-mini-fab color=\"primary\" matTooltip=\"Refresh Data\" matTooltipPosition=\"above\" (click)=\"refreshClicked()\" style=\"margin-right:1em;margin-top:5px\">\r\n <mat-icon class=\"refreshIcon\">cached</mat-icon>\r\n</button>\r\n\r\n<button *ngIf=\"showButton && flatButtons\" id=\"btnFilter\" mat-icon-button color=\"primary\" matTooltip=\"Refresh Data\" matTooltipPosition=\"above\" (click)=\"refreshClicked()\" style=\"margin-right:1em;margin-top:5px\">\r\n <mat-icon class=\"refreshIcon\">cached</mat-icon>\r\n</button>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { Action } from '../../classes/Classes';\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(private messageService: MessageService,) { }\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\r\n @Input() options: any;\r\n @Input() optionValue = \"\";\r\n @Input() optionDisplay = \"\";\r\n @Input() readonly = false;\r\n\r\n @Input() type = \"text\";\r\n @Input() value = \"\";\r\n @Input() display = \"\";\r\n @Input() show: boolean = false;\r\n @Input() required: boolean = false;\r\n @Input() infoMessage: string;\r\n @Input() copyContent = false;\r\n @Input() suffix: string;\r\n\r\n @Input() loadAction: Action;\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 dateChanged(x){\r\n this.value = x\r\n this.changed()\r\n }\r\n\r\n enterPressed(){\r\n this.enterPress.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 onInfoClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n\r\n if (this.infoMessage) {\r\n this.messageService.info(this.infoMessage);\r\n }\r\n }\r\n\r\n\r\n\r\n}\r\n","\r\n<div class=\"tin-row gap-0\">\r\n\r\n <mat-checkbox color=\"primary\" style=\"margin-right:0px\" [(ngModel)]=\"show\" (change)=\"resetValue()\" labelPosition=\"after\" [disabled]=\"required\" >{{display}}</mat-checkbox>\r\n\r\n <mat-form-field style=\"margin-right:1px;width: 0px;\" >\r\n <input matInput />\r\n </mat-form-field>\r\n\r\n <ng-container *ngIf=\"show\" [ngSwitch]=\"type\" style=\"margin-left: 5px;\">\r\n\r\n <spa-date class=\"opt\" *ngSwitchCase=\"'date'\" [display]=\"display\" width=\"120px\" [(value)]=\"value\" [display]=\"display\" (valueChange)=\"dateChanged($event)\"\r\n ></spa-date>\r\n\r\n <spa-multi-select class=\"opt\" *ngSwitchCase=\"'multi-select'\" [display]=\"display\" [options]=\"options\" [optionDisplay]=\"optionDisplay\" [optionValue]=\"optionValue\" [(value)]=\"value\" (valueChange)=\"changed()\"\r\n [copyContent]=\"copyContent\" [loadAction]=\"loadAction\"\r\n ></spa-multi-select>\r\n\r\n <spa-multi-text class=\"opt\" *ngSwitchCase=\"'multi-text'\" [display]=\"display\" [options]=\"options\" [optionDisplay]=\"optionDisplay\" [optionValue]=\"optionValue\" [(value)]=\"value\" (valueChange)=\"changed()\"\r\n [copyContent]=\"copyContent\" [loadAction]=\"loadAction\"\r\n ></spa-multi-text>\r\n\r\n <spa-select-lite class=\"opt\" *ngSwitchCase=\"'select'\" [display]=\"display\" [options]=\"options\" [optionDisplay]=\"optionDisplay\" [optionValue]=\"optionValue\" [(value)]=\"value\" (valueChange)=\"changed()\"\r\n [copyContent]=\"copyContent\" [loadAction]=\"loadAction\"\r\n ></spa-select-lite>\r\n\r\n <spa-text class=\"opt\" *ngSwitchDefault [display]=\"display\" (keyup.enter)=\"enterPressed()\" [options]=\"options\" [optionDisplay]=\"optionDisplay\" [optionValue]=\"optionValue\" [(value)]=\"value\" (valueChange)=\"changed()\"\r\n [suffix]=\"suffix\" [copyContent]=\"copyContent\" [loadAction]=\"loadAction\"\r\n ></spa-text>\r\n\r\n </ng-container>\r\n\r\n <button mat-icon-button *ngIf=\"infoMessage\" (click)=\"onInfoClick($event)\" matTooltip=\"Info\" matTooltipPosition=\"above\" style=\"opacity: 1;margin: 0px;padding: 0px;\">\r\n <mat-icon style=\"color: steelblue;font-size: 18px;\">info</mat-icon>\r\n </button>\r\n\r\n</div>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { SearchConfig } from '../../classes/Classes';\r\nimport { Core } from '../../classes/TinCore';\r\n\r\n@Component({\r\n selector: 'spa-search',\r\n templateUrl: './search.component.html',\r\n styleUrls: ['./search.component.css']\r\n})\r\nexport class SearchComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.data = Core.generateObject(this.config.fields)\r\n }\r\n\r\n data;\r\n @Input() config: SearchConfig;\r\n @Output() searchClick = new EventEmitter();\r\n\r\n @Input() smallScreen: boolean;\r\n @Input() tableDataSource: any;\r\n\r\n search(){\r\n this.searchClick.emit(this.data);\r\n }\r\n\r\n}\r\n","\r\n<div class=\"tin-between\">\r\n\r\n <div class=\"col tin-row\">\r\n\r\n <div *ngFor=\"let field of config.fields\">\r\n\r\n <spa-option [type]=\"field.type\" [required]=\"field.required\" [show]=\"field.show\" [display]=\"field.alias ?? field.name | camelToWords\"\r\n [options]=\"field.options\" [optionDisplay]=\"field.optionDisplay ?? 'name'\" [optionValue]=\"field.optionValue ?? 'value'\" [(value)]=\"data[field.name]\" (enterPress)=\"search()\"\r\n [infoMessage]=\"field.infoMessage\" [suffix]=\"field.suffix\" [copyContent]=\"field.copyContent\" [loadAction]=\"field.loadAction\"\r\n ></spa-option>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"col-2 tin-end\">\r\n <spa-filter [showText]=\"!smallScreen || (smallScreen && tableDataSource?.length > 10)\" [showButton]=\"false\" [data]=\"tableDataSource\" ></spa-filter>\r\n <button mat-fab color=\"primary\" (click)=\"search()\" matTooltip=\"Search\" matTooltipPosition=\"right\">\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n </div>\r\n\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { TableConfig } from '../classes/Classes';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CsvService {\r\n generateCsv(data: any[], columns: string[], filename: string = 'export.csv', config: TableConfig): void {\r\n const csvContent = this.convertToCsv(data, columns, config);\r\n const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });\r\n const link = document.createElement('a');\r\n if (link.download !== undefined) {\r\n const url = URL.createObjectURL(blob);\r\n link.setAttribute('href', url);\r\n link.setAttribute('download', filename);\r\n link.style.visibility = 'hidden';\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n }\r\n\r\n private convertToCsv(data: any[], columns: string[], config: TableConfig): string {\r\n const columnMap = this.createColumnMap(columns, config);\r\n const header = columns.map(col => columnMap[col] || col).join(',');\r\n const rows = data.map(row =>\r\n columns.map(col => this.escapeCommas(row[col])).join(',')\r\n );\r\n return [header, ...rows].join('\\n');\r\n }\r\n\r\n private createColumnMap(columns: string[], config: TableConfig): { [key: string]: string } {\r\n const columnMap = {};\r\n config.columns.forEach(col => {\r\n if (columns.includes(col.name) && col.alias) {\r\n columnMap[col.name] = col.alias;\r\n }\r\n });\r\n return columnMap;\r\n }\r\n\r\n private escapeCommas(value: any): string {\r\n const stringValue = String(value);\r\n if (stringValue.includes(',') || stringValue.includes('\"') || stringValue.includes('\\n')) {\r\n return `\"${stringValue.replace(/\"/g, '\"\"')}\"`;\r\n }\r\n return stringValue;\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { Action, Tile, TileConfig, ApiResponse } from '../../classes/Classes';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { Subject } from 'rxjs';\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(private dataService: DataServiceLib, private messageService: MessageService,) { }\r\n\r\n ngOnInit(): void {\r\n\r\n if (this.config){\r\n this.tiles = this.config.tiles;\r\n\r\n if (this.config?.loadAction && this.config.loadInit) {\r\n this.loadData(this.config?.loadAction, \"\");\r\n }\r\n }\r\n\r\n this.reload.subscribe(v => {\r\n\r\n if (v == true){\r\n if (this.config?.loadAction) {\r\n this.loadData(this.config?.loadAction, \"\");\r\n }\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n ngOnChanges() {\r\n\r\n }\r\n\r\n tiles: Tile[];\r\n @Input() config: TileConfig;\r\n @Output() tileActionSelected = new EventEmitter<Action>();\r\n\r\n @Input() lastSearch;\r\n @Input() data;\r\n // @Input() clickable: boolean = false;\r\n @Input() reload: Subject<boolean>;\r\n\r\n @Output() tileClick = new EventEmitter();\r\n @Output() tileUnClick = new EventEmitter();\r\n\r\n selectedTile: string = \"\";\r\n\r\n\r\n loadData(action: Action, data: any) {\r\n\r\n if (action) {\r\n\r\n if (action.method == 'post') {\r\n data = this.lastSearch;\r\n }\r\n\r\n this.dataService.CallApi(action, data).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.data = apiResponse.data\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\r\n clicked(clickedTile: Tile){\r\n\r\n\r\n\r\n if(!this.config.clickable || clickedTile.action == undefined ) return;\r\n\r\n\r\n if(this.selectedTile == clickedTile.name){\r\n this.tileUnClick.emit({ name: clickedTile.name, data: clickedTile });\r\n this.selectedTile = \"\";\r\n }else{\r\n this.tileClick.emit({name :clickedTile.name, data : clickedTile});\r\n this.selectedTile = clickedTile.name;\r\n }\r\n\r\n\r\n }\r\n\r\n pop(x){\r\n\r\n if (x){\r\n this.messageService.info(x);\r\n }\r\n\r\n }\r\n\r\n isHidden(tile: Tile): boolean {\r\n if (tile.hidden) {\r\n return true;\r\n }\r\n if (tile.hiddenCondition) {\r\n return tile.hiddenCondition(this.data);\r\n }\r\n return false;\r\n }\r\n\r\n\r\n\r\n\r\n}\r\n","<div class=\"d-flex row align-items-center justify-content-between\">\r\n <ng-container *ngFor=\"let tile of tiles\">\r\n <mat-card *ngIf=\"!isHidden(tile)\" class=\"col\" [class.selected-tile]=\"tile.name === selectedTile\" style=\"margin-left: 5px;margin-right: 5px; padding: 10px 16px ; min-width: 150px; margin-top: 5px;\" (click)=\"clicked(tile)\">\r\n\r\n <!-- Number -->\r\n <div class=\"row d-flex justify-content-center align-items-center\">\r\n <div style=\"text-align: center;font-size: 30px;\">\r\n <mat-label style=\"font-weight:bold;\" *ngIf=\"tile.prefix\" >{{tile.prefix}}</mat-label> &nbsp;\r\n <mat-label style=\"font-weight:bold; text-align: center;\" [ngStyle]=\"{'color':tile.color }\">{{data[tile.name] ?? 0}}</mat-label>&nbsp;\r\n <mat-label style=\"font-weight:bold;\" *ngIf=\"tile.suffix\">{{tile.suffix}}</mat-label>\r\n </div>\r\n </div>\r\n\r\n <!-- Info -->\r\n <div class=\"row d-flex justify-content-center align-items-center\">\r\n <div class=\"d-flex justify-content-center align-items-center\" style=\"text-align: center;\">\r\n <mat-label style=\"padding-left:5px;padding-right:5px; text-align: center;font-size: 14px;\">{{tile.alias ?? tile.name | camelToWords}}</mat-label>\r\n <mat-icon [matTooltip]=\"tile.info\" matTooltipPosition=\"above\" style=\"font-size: 20px; color:steelblue;\">info</mat-icon>\r\n </div>\r\n </div>\r\n\r\n </mat-card>\r\n </ng-container>\r\n</div>\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { TableConfig, Button, TileConfig, DetailsDialogConfig, Action, ApiResponse } from '../../classes/Classes';\r\nimport { Subject } from 'rxjs';\r\nimport { ButtonService } from '../../services/button.service';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { CsvService } from '../../services/csv.service';\r\nimport { Core } from '../../classes/TinCore';\r\nimport { DetailsDialogLite } from '../table-lite/detailsDialog-lite.component';\r\n\r\n@Component({\r\n selector: 'app-table-header',\r\n templateUrl: './table-header.component.html',\r\n styleUrls: ['./table-header.component.css']\r\n})\r\nexport class TableHeaderComponent {\r\n\r\n constructor(private buttonService: ButtonService, private dialogService: DialogService, private messageService: MessageService, private csvService: CsvService) { }\r\n\r\n ngOnInit() {\r\n this.createButton = this.buttonService.getCreateButton(this.config?.buttons);\r\n\r\n if (this.config.upload){\r\n\r\n let uploadAction : Action = { ...this.config.upload.action, method : 'post', isFormData: true }\r\n\r\n this.uploadDetailsDialog.buttons.find(b => b.name == \"create\").action = uploadAction;\r\n this.uploadDetailsDialog.formConfig.alertConfig.messages = this.config.upload.messages;\r\n }\r\n }\r\n\r\n createButton: Button;\r\n\r\n @Input() lastSearch;\r\n @Input() config: TableConfig;\r\n @Input() hideTitle: boolean;\r\n @Input() tableDataSource: any;\r\n @Input() tileConfig: TileConfig;\r\n @Input() smallScreen: boolean;\r\n @Input() tileReload: Subject<boolean>;\r\n @Input() showFilterButton: boolean;\r\n @Input() data: any = [];\r\n @Input() tileData: any = [];\r\n\r\n @Output() createClick = new EventEmitter<void>();\r\n @Output() customClick = new EventEmitter();\r\n @Output() refreshClick = new EventEmitter<void>();\r\n @Output() tileClick = new EventEmitter<string>();\r\n @Output() tileUnClick = new EventEmitter<string>();\r\n\r\n\r\n uploadDetailsDialog : DetailsDialogConfig = {\r\n\r\n formConfig : {\r\n title: \"Upload\",\r\n fixedTitle : true,\r\n alertConfig: {\r\n messages: [],\r\n },\r\n\r\n mode: 'create',\r\n fields: [\r\n { name: \"file\", type: \"file\", required: true, span : true }\r\n ]\r\n },\r\n\r\n\r\n buttons: [\r\n { name: \"create\", color: \"primary\", dialog: true, inDialog : true },\r\n ]\r\n\r\n }\r\n\r\n onButtonClick(button: Button) {\r\n if (button.name === 'create') {\r\n this.createClick.emit();\r\n } else {\r\n this.customClick.emit(button.name);\r\n }\r\n }\r\n\r\n onDownloadClick() {\r\n\r\n if (!this.config.download) return;\r\n\r\n this.messageService.confirm(\"Are you sure you want to download this data?\").subscribe(result => {\r\n if (result == 'yes') {\r\n this.customClick.emit(\"download\");\r\n\r\n this.csvService.generateCsv(this.data, this.config.download.columns, this.config.download.fileName, this.config);\r\n }\r\n });\r\n\r\n\r\n }\r\n\r\n onUploadClick() {\r\n this.customClick.emit(\"upload\");\r\n\r\n this.dialogService.openDetailsDialog(this.uploadDetailsDialog, DetailsDialogLite ).afterClosed.subscribe(result=> {\r\n\r\n // console.log(result)\r\n if (result.message == 'success'){\r\n this.refreshClick.emit();\r\n this.messageService.toast(\"Upload successful\");\r\n }\r\n\r\n });\r\n }\r\n\r\n onRefreshClick() {\r\n this.refreshClick.emit();\r\n }\r\n\r\n onTileClick(tile) {\r\n this.tileClick.emit(tile);\r\n }\r\n\r\n onTileUnClick(tile) {\r\n this.tileUnClick.emit(tile);\r\n }\r\n\r\n getHeaderButtons(): Button[] {\r\n\r\n if (this.config?.buttons == undefined) {\r\n return [];\r\n }\r\n if (!this.config?.buttons) {\r\n return [];\r\n }\r\n return this.config.buttons.filter(b => b.name == 'create' || b.inHeader);\r\n }\r\n\r\n testVisibleHeaderButton(btn): boolean {\r\n return Core.testVisibleHeaderButton(this.config.parentData,btn);\r\n }\r\n testVisible(button: Button): boolean {\r\n return this.buttonService.testVisible(button, this.config.parentData, this.config);\r\n }\r\n\r\n testDisabled(button: Button): boolean {\r\n return this.buttonService.testDisabled(button, this.config.parentData);\r\n }\r\n\r\n getButtonColor(button: Button, row: any): string {\r\n return this.buttonService.getButtonColor(button, row);\r\n }\r\n\r\n\r\n}\r\n","<!--Tiles Top Position -->\r\n<ng-container *ngIf=\"config.tileConfig && !smallScreen && config.tileConfig.headerPosition == 'top'\">\r\n <spa-tiles [config]=\"config.tileConfig\" [reload]=\"tileReload\" [data]=\"tileData\" [lastSearch]=\"lastSearch\" (tileClick)=\"onTileClick($event)\" (tileUnClick)=\"onTileUnClick($event)\"></spa-tiles>\r\n</ng-container>\r\n\r\n<div class=\"top\">\r\n\r\n <!-- buttons -->\r\n <div class=\"tin-row\" style=\"margin-right: 10px;\" *ngIf=\"getHeaderButtons().length > 0\" >\r\n\r\n <ng-container *ngFor=\"let button of getHeaderButtons()\">\r\n <ng-container *ngIf=\"testVisible(button)\" >\r\n <button *ngIf=\"!config.flatButtons\" mat-raised-button color=\"primary\" [disabled]=\"testDisabled(button)\" (click)=\"onButtonClick(button)\" >\r\n {{button.display}}\r\n </button>\r\n <button *ngIf=\"config.flatButtons\" mat-stroked-button [disabled]=\"testDisabled(button)\" (click)=\"onButtonClick(button)\" [ngStyle]=\"{'color': getButtonColor(button, config.parentData)}\">\r\n {{button.display}}\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n\r\n </div>\r\n <div *ngIf=\"getHeaderButtons().length == 0 && config.holdHeaderButtonSpace || getHeaderButtons().length == 0 && !config.tileConfig\"></div>\r\n\r\n <!-- tiles -->\r\n <div *ngIf=\"config.tileConfig && !smallScreen && (!config.tileConfig.headerPosition || config.tileConfig.headerPosition == 'middle')\" style=\"min-width: 75%;\">\r\n <spa-tiles [config]=\"config.tileConfig\" [reload]=\"tileReload\" [data]=\"tileData\" [lastSearch]=\"lastSearch\" (tileClick)=\"onTileClick($event)\" (tileUnClick)=\"onTileUnClick($event)\"></spa-tiles>\r\n </div>\r\n\r\n <!-- filter -->\r\n <div class=\"tin-row d-flex justify-content-end\" >\r\n\r\n <button *ngIf=\"config.download && testVisibleHeaderButton(config.download)\" mat-icon-button matTooltip=\"Download\" matTooltipPosition=\"above\" color=\"primary\" (click)=\"onDownloadClick()\">\r\n <mat-icon>download</mat-icon>\r\n </button>\r\n\r\n <button *ngIf=\"config.upload && testVisibleHeaderButton(config.upload)\" mat-icon-button matTooltip=\"Upload\" matTooltipPosition=\"above\" color=\"primary\" (click)=\"onUploadClick()\">\r\n <mat-icon>upload</mat-icon>\r\n </button>\r\n\r\n <div *ngIf=\"config.showFilter\" >\r\n <spa-filter [showText]=\"!smallScreen || (smallScreen && tableDataSource?.length > 10)\" [showButton]=\"showFilterButton\" [data]=\"tableDataSource\" [flatButtons]=\"config.flatButtons\" (refreshClick)=\"onRefreshClick()\"></spa-filter>\r\n </div>\r\n <div *ngIf=\"!config.showFilter && config.holdFilterSpace\"></div>\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n<div *ngIf=\"config.tileConfig && smallScreen\" style=\"width: 100%;\">\r\n <spa-tiles [config]=\"config.tileConfig\" [reload]=\"tileReload\" [data]=\"tileData\"[lastSearch]=\"lastSearch\" (tileClick)=\"onTileClick($event)\" (tileUnClick)=\"onTileUnClick($event)\"></spa-tiles>\r\n</div>\r\n\r\n<!-- <div *ngIf=\"config.title && !hideTitle\" class=\"title\">\r\n {{config.title | camelToWords}}\r\n</div> -->\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { Column, Button, TableConfig, Icon } from '../../classes/Classes';\r\nimport { ButtonService } from '../../services/button.service';\r\n\r\n@Component({\r\n selector: 'app-table-row',\r\n templateUrl: './table-row.component.html',\r\n styleUrls: ['./table-row.component.css']\r\n})\r\nexport class TableRowComponent {\r\n @Input() column: Column;\r\n @Input() row: any;\r\n @Input() config: TableConfig;\r\n @Input() smallScreen: boolean = false;\r\n\r\n @Output() actionClick = new EventEmitter<{ name: string, row: any }>();\r\n @Output() columnClick = new EventEmitter<{ column: Column, row: any }>();\r\n @Output() showBannerEvent = new EventEmitter<string>();\r\n\r\n\r\n\r\n constructor(private buttonService: ButtonService) { }\r\n\r\n testIconCondition(row: any, icon: Icon): boolean {\r\n return icon.condition ? icon.condition(row) : true;\r\n }\r\n\r\n getColorOnCondition(row: any, column: Column) {\r\n\r\n if (column.options) {\r\n const color = this.getColor(row[column.name], column.options);\r\n return column.type === 'chip' ? color : (color === 'lightgrey' ? '' : color);\r\n }\r\n\r\n\r\n if (column.colors){\r\n for (const color of column.colors) {\r\n if (color.condition(row)) {\r\n return color.name;\r\n }\r\n\r\n }\r\n }\r\n else{\r\n\r\n if (column.color && column.color.condition) {\r\n return column.color.condition(row) ? column.color.name : '';\r\n }\r\n\r\n }\r\n\r\n\r\n return '';\r\n\r\n\r\n }\r\n\r\n getColor(value: any, options: any[]): string {\r\n if (!options) return 'lightgrey';\r\n const option = options.find(opt => opt.value === value);\r\n return option ? option.color : 'lightgrey';\r\n }\r\n\r\n onActionClick(name: string, row: any) {\r\n this.actionClick.emit({ name, row });\r\n }\r\n\r\n onColumnClick(column: Column, row: any) {\r\n this.columnClick.emit({ column, row });\r\n }\r\n\r\n showBanner(message: string) {\r\n this.showBannerEvent.emit(message);\r\n }\r\n\r\n textDisplayed(row: any, column: Column){\r\n\r\n let txt = row[column.name]\r\n let max = !this.smallScreen ? column?.maxLength : column?.maxLength/2;\r\n\r\n if (max && txt.length > max){\r\n return txt.substring(0, max);\r\n }\r\n\r\n return txt;\r\n\r\n }\r\n textTruncated(row: any, column: Column) {\r\n\r\n let txt = row[column.name]\r\n\r\n let max = !this.smallScreen ? column?.maxLength : column?.maxLength / 2;\r\n\r\n if (max && txt.length > max) {\r\n return true\r\n }\r\n\r\n return false;\r\n\r\n }\r\n}\r\n","<ng-container [ngSwitch]=\"column.type\">\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <spa-check [value]=\"row[column.name]\" [readonly]=\"true\"></spa-check>\r\n <mat-icon class=\"col-icon\" *ngIf=\"column.icon && testIconCondition(row, column.icon)\" [matTooltip]=\"row[column.icon.tipField] ?? column.icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[column.icon.tipField])\" [ngStyle]=\"{'color':column.icon?.color}\">{{column.icon.name }}</mat-icon>\r\n <ng-container *ngFor=\"let icon of column.icons\">\r\n <mat-icon class=\"col-icon\" *ngIf=\"testIconCondition(row, icon)\" [matTooltip]=\"row[icon.tipField] ?? icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[icon.tipField])\" [ngStyle]=\"{'color':icon?.color}\">{{icon.name }}</mat-icon>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'select'\">\r\n <spa-select-lite [options]=\"column.options\" [optionDisplay]=\"column.optionDisplay\" [optionValue]=\"column.optionValue\" [(value)]=\"row[column.name]\" width=\"90%\"></spa-select-lite>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'chip'\">\r\n <mat-chip-list>\r\n <mat-chip (click)=\"onColumnClick(column, row)\" [ngStyle]=\"{'background-color': getColorOnCondition(row, column)}\" style=\"font-size: 12px;\"> {{row[column.name]}} </mat-chip>\r\n <mat-icon class=\"col-icon\" *ngIf=\"column.icon && testIconCondition(row, column.icon)\" [matTooltip]=\"row[column.icon.tipField] ?? column.icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[column.icon.tipField])\" [ngStyle]=\"{'color':column.icon?.color}\">{{column.icon.name }}</mat-icon>\r\n <ng-container *ngFor=\"let icon of column.icons\">\r\n <mat-icon class=\"col-icon\" *ngIf=\"testIconCondition(row, icon)\" [matTooltip]=\"row[icon.tipField] ?? icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[icon.tipField])\" [ngStyle]=\"{'color':icon?.color}\">{{icon.name }}</mat-icon>\r\n </ng-container>\r\n </mat-chip-list>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'icon'\">\r\n <mat-icon class=\"col-icon\" *ngIf=\"column.icon && testIconCondition(row, column.icon)\" [matTooltip]=\"row[column.icon.tipField] ?? column.icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[column.icon.tipField])\" [ngStyle]=\"{'color':column.icon?.color}\">{{column.icon.name }}</mat-icon>\r\n <ng-container *ngFor=\"let icon of column.icons\">\r\n <mat-icon class=\"col-icon\" *ngIf=\"testIconCondition(row, icon)\" [matTooltip]=\"row[icon.tipField] ?? icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[icon.tipField])\" [ngStyle]=\"{'color':icon?.color}\">{{icon.name }}</mat-icon>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n {{row[column.name] | date : 'dd/MM/yyyy'}}\r\n <mat-icon class=\"col-icon\" *ngIf=\"column.icon && testIconCondition(row, column.icon)\" [matTooltip]=\"row[column.icon.tipField] ?? column.icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[column.icon.tipField])\" [ngStyle]=\"{'color':column.icon?.color}\">{{column.icon.name }}</mat-icon>\r\n <ng-container *ngFor=\"let icon of column.icons\">\r\n <mat-icon class=\"col-icon\" *ngIf=\"testIconCondition(row, icon)\" [matTooltip]=\"row[icon.tipField] ?? icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[icon.tipField])\" [ngStyle]=\"{'color':icon?.color}\">{{icon.name }}</mat-icon>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'datetime'\">\r\n {{row[column.name] | date : 'dd/MM/yyyy HH:mm'}}\r\n <mat-icon class=\"col-icon\" *ngIf=\"column.icon && testIconCondition(row, column.icon)\" [matTooltip]=\"row[column.icon.tipField] ?? column.icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[column.icon.tipField])\" [ngStyle]=\"{'color':column.icon?.color}\">{{column.icon.name }}</mat-icon>\r\n <ng-container *ngFor=\"let icon of column.icons\">\r\n <mat-icon class=\"col-icon\" *ngIf=\"testIconCondition(row, icon)\" [matTooltip]=\"row[icon.tipField] ?? icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[icon.tipField])\" [ngStyle]=\"{'color':icon?.color}\">{{icon.name }}</mat-icon>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'datetimesec'\">\r\n {{row[column.name] | date : 'dd/MM/yyyy HH:mm:ss'}}\r\n <mat-icon class=\"col-icon\" *ngIf=\"column.icon && testIconCondition(row, column.icon)\" [matTooltip]=\"row[column.icon.tipField] ?? column.icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[column.icon.tipField])\" [ngStyle]=\"{'color':column.icon?.color}\">{{column.icon.name }}</mat-icon>\r\n <ng-container *ngFor=\"let icon of column.icons\">\r\n <mat-icon class=\"col-icon\" *ngIf=\"testIconCondition(row, icon)\" [matTooltip]=\"row[icon.tipField] ?? icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[icon.tipField])\" [ngStyle]=\"{'color':icon?.color}\">{{icon.name }}</mat-icon>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'money'\">\r\n <label [ngStyle]=\"{'color': getColorOnCondition(row, column) }\">{{row[column.name] | currency:'':''}}</label>\r\n <mat-icon class=\"col-icon\" *ngIf=\"column.icon && testIconCondition(row, column.icon)\" [matTooltip]=\"row[column.icon.tipField] ?? column.icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[column.icon.tipField])\" [ngStyle]=\"{'color':column.icon?.color}\">{{column.icon.name }}</mat-icon>\r\n <ng-container *ngFor=\"let icon of column.icons\">\r\n <mat-icon class=\"col-icon\" *ngIf=\"testIconCondition(row, icon)\" [matTooltip]=\"row[icon.tipField] ?? icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[icon.tipField])\" [ngStyle]=\"{'color':icon?.color}\">{{icon.name }}</mat-icon>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'button'\">\r\n <button mat-stroked-button (click)=\"onColumnClick(column, row)\" [ngStyle]=\"{'color': getColorOnCondition(row, column)}\" >{{row[column.name]}}</button>\r\n <mat-icon class=\"col-icon\" *ngIf=\"column.icon && testIconCondition(row, column.icon)\" [matTooltip]=\"row[column.icon.tipField] ?? column.icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[column.icon.tipField])\" [ngStyle]=\"{'color':column.icon?.color}\">{{column.icon.name }}</mat-icon>\r\n <ng-container *ngFor=\"let icon of column.icons\">\r\n <mat-icon class=\"col-icon\" *ngIf=\"testIconCondition(row, icon)\" [matTooltip]=\"row[icon.tipField] ?? icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[icon.tipField])\" [ngStyle]=\"{'color':icon?.color}\">{{icon.name }}</mat-icon>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchDefault>\r\n <label [ngStyle]=\"{'color': getColorOnCondition(row, column) }\">\r\n <ng-container *ngIf=\"column.type === 'number'\">\r\n {{row[column.name] | number:'1.0-2'}}\r\n </ng-container>\r\n <ng-container *ngIf=\"column.type !== 'number'\">\r\n {{textDisplayed(row, column)}}\r\n </ng-container>\r\n </label>\r\n <mat-icon class=\"col-icon\" *ngIf=\"textTruncated(row, column)\" matTooltip='Show more' matTooltipPosition=\"above\" (click)=\"showBanner(row[column.name])\">more_horiz</mat-icon>\r\n <mat-icon class=\"col-icon\" *ngIf=\"column.icon && testIconCondition(row, column.icon)\" [matTooltip]=\"row[column.icon.tipField] ?? column.icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[column.icon.tipField])\" [ngStyle]=\"{'color':column.icon?.color}\">{{column.icon.name }}</mat-icon>\r\n <ng-container *ngFor=\"let icon of column.icons\">\r\n <mat-icon class=\"col-icon\" *ngIf=\"testIconCondition(row, icon)\" [matTooltip]=\"row[icon.tipField] ?? icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[icon.tipField])\" [ngStyle]=\"{'color':icon?.color}\">{{icon.name }}</mat-icon>\r\n </ng-container>\r\n </ng-container>\r\n</ng-container>\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { Button, TableConfig } from '../../classes/Classes';\r\nimport { ButtonService } from '../../services/button.service';\r\n\r\n@Component({\r\n selector: 'app-table-action',\r\n templateUrl: './table-action.component.html',\r\n styleUrls: ['./table-action.component.css']\r\n})\r\nexport class TableActionComponent {\r\n\r\n constructor(private buttonService: ButtonService) {\r\n }\r\n\r\n @Input() displayedButtons: Button[];\r\n @Input() config: TableConfig;\r\n @Input() row: any;\r\n @Input() smallScreen = false;\r\n\r\n @Output() actionClick = new EventEmitter<{ name: string, row: any }>();\r\n\r\n testVisible(row: any, buttonName: string): boolean {\r\n const button = this.displayedButtons.find(b => b.name === buttonName);\r\n return button ? this.buttonService.testVisible(button, row, this.config) : false;\r\n }\r\n\r\n testDisabled(row: any, buttonName: string): boolean {\r\n const button = this.displayedButtons.find(b => b.name === buttonName);\r\n return button ? this.buttonService.testDisabled(button, row, this.config) : true;\r\n }\r\n\r\n getButtonColor(button: Button, row: any): string {\r\n return this.buttonService.getButtonColor(button, row);\r\n }\r\n\r\n getIcon(buttonName: string): string {\r\n const button = this.displayedButtons.find(b => b.name === buttonName);\r\n return button ? this.buttonService.getIcon(button, this.config) : '';\r\n }\r\n\r\n onActionClick(buttonName: string, row: any) {\r\n this.actionClick.emit({ name: buttonName, row });\r\n }\r\n\r\n get visibleButtons() {\r\n\r\n // Get visible buttons first, then take first 3\r\n const visibleButtons = this.buttonService.getVisibleButtons(this.displayedButtons, this.row, this.config);\r\n\r\n if (this.smallScreen) {\r\n if (this.config?.minButtons) {\r\n // Show only buttons defined in minButtons\r\n return visibleButtons.filter(button => this.config.minButtons.includes(button.name));\r\n } else {\r\n // Show only first visible button if no minButtons defined\r\n return visibleButtons.slice(0, 1);\r\n }\r\n }\r\n\r\n return visibleButtons.slice(0, this.config.maxButtonsCount ?? 3);\r\n }\r\n\r\n get overflowButtons() {\r\n\r\n // Get visible buttons first, then take remainder after first 3\r\n const visibleButtons = this.displayedButtons?.filter(button => this.testVisible(this.row, button.name) ) ?? [];\r\n\r\n if (this.smallScreen) {\r\n if (this.config?.minButtons) {\r\n // Show remaining buttons not in minButtons\r\n return visibleButtons.filter(button => !this.config.minButtons.includes(button.name));\r\n } else {\r\n // Show remaining buttons after first button\r\n return visibleButtons.slice(1);\r\n }\r\n }\r\n\r\n return visibleButtons.slice(this.config.maxButtonsCount ?? 3);\r\n }\r\n}\r\n","<ng-container *ngFor=\"let button of visibleButtons\">\r\n\r\n <ng-container *ngIf=\"button.name != 'create' && testVisible(row, button.name)\">\r\n <button *ngIf=\"!config.flatButtons\" mat-mini-fab [matTooltip]=\"button.tip ?? button.name | titlecase\" matTooltipPosition=\"above\" style=\"margin-right:5px\" [ngStyle]=\"{'background-color': getButtonColor(button, row)}\" [disabled]=\"testDisabled(row, button.name)\" (click)=\"onActionClick(button.name, row)\">\r\n <mat-icon>{{getIcon(button.name)}}</mat-icon>\r\n </button>\r\n\r\n <button *ngIf=\"config.flatButtons\" mat-icon-button [matTooltip]=\"button.tip ?? button.name | titlecase\" matTooltipPosition=\"above\" style=\"margin-right:5px\" [disabled]=\"testDisabled(row, button.name)\" (click)=\"onActionClick(button.name, row)\">\r\n <mat-icon [ngStyle]=\"{'color': getButtonColor(button, row)}\">{{getIcon(button.name)}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"button.name != 'create' && !testVisible(row, button.name) && config?.collapseButtons === false\">\r\n <label style=\"margin-right: 35px;\"></label>\r\n </ng-container>\r\n\r\n</ng-container>\r\n\r\n<button *ngIf=\"overflowButtons.length > 0\" mat-icon-button [matMenuTriggerFor]=\"menu\" [matTooltip]=\"'More actions'\" matTooltipPosition=\"above\">\r\n <mat-icon>more_vert</mat-icon>\r\n</button>\r\n\r\n<mat-menu #menu=\"matMenu\">\r\n <ng-container *ngFor=\"let button of overflowButtons\">\r\n <button *ngIf=\"testVisible(row, button.name)\" mat-menu-item [disabled]=\"testDisabled(row, button.name)\" (click)=\"onActionClick(button.name, row)\">\r\n <mat-icon [ngStyle]=\"{'color': getButtonColor(button, row)}\">\r\n {{getIcon(button.name)}}\r\n </mat-icon>\r\n <span>{{button.tip ?? button.name | titlecase}}</span>\r\n </button>\r\n </ng-container>\r\n</mat-menu>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { Button, TableConfig } from '../../classes/Classes';\r\nimport { ButtonService } from '../../services/button.service';\r\nimport { ConditionService } from '../../services/condition.service';\r\n\r\n@Component({\r\n selector: 'spa-capsules',\r\n templateUrl: './capsules.component.html',\r\n styleUrls: ['./capsules.component.css']\r\n})\r\nexport class CapsulesComponent {\r\n constructor(\r\n public buttonService: ButtonService,\r\n private conditionService: ConditionService\r\n ) {}\r\n\r\n @Input() config: TableConfig;\r\n @Input() dataSource: any[];\r\n @Input() displayedButtons: Button[] = [];\r\n\r\n @Output() actionClick = new EventEmitter<{name: string, row: any}>();\r\n\r\n // Extract display value based on config\r\n getDisplayValue(row: any): string {\r\n if (!this.config?.capsuleConfig?.displayField) {\r\n return '';\r\n }\r\n return row[this.config.capsuleConfig.displayField];\r\n }\r\n\r\n // Check icon visibility condition\r\n testIconCondition(row: any, icon: any): boolean {\r\n return this.conditionService.testIconCondition(icon, row);\r\n }\r\n\r\n // Handle button click from menu\r\n onActionClick(buttonName: string, row: any): void {\r\n this.actionClick.emit({ name: buttonName, row });\r\n }\r\n\r\n // Get button color using service\r\n getButtonColor(button: Button, row: any): string {\r\n return this.buttonService.getButtonColor(button, row);\r\n }\r\n\r\n // Get icon for button using service\r\n getIcon(buttonName: string): string {\r\n return this.buttonService.getIcon(this.getButton(buttonName), this.config);\r\n }\r\n\r\n // Test if button should be disabled\r\n testDisabled(row: any, buttonName: string): boolean {\r\n const button = this.getButton(buttonName);\r\n return this.buttonService.testDisabled(button, row, this.config);\r\n }\r\n\r\n // Get button by name\r\n private getButton(name: string): Button | null {\r\n return this.displayedButtons?.find(x => x.name === name) || null;\r\n }\r\n}","<mat-chip-list>\r\n <mat-chip *ngFor=\"let row of dataSource\" [matMenuTriggerFor]=\"itemMenu\" [matMenuTriggerData]=\"{item: row}\">\r\n <!-- Left icons -->\r\n <ng-container *ngFor=\"let icon of config.capsuleConfig?.leftIcons\">\r\n <mat-icon *ngIf=\"testIconCondition(row, icon)\" \r\n [ngStyle]=\"{'color': icon?.color}\" \r\n style=\"font-size: 18px; padding-top: 3px; margin-right: 5px;\">\r\n {{icon.name}}\r\n </mat-icon>\r\n </ng-container>\r\n \r\n <!-- Display text -->\r\n <label style=\"margin-right: 5px;\">{{getDisplayValue(row)}}</label>\r\n \r\n <!-- Right icons -->\r\n <ng-container *ngFor=\"let icon of config.capsuleConfig?.rightIcons\">\r\n <mat-icon *ngIf=\"testIconCondition(row, icon)\" \r\n [ngStyle]=\"{'color': icon?.color}\" \r\n style=\"font-size: 18px; padding-top: 3px; margin-left: 5px;\">\r\n {{icon.name}}\r\n </mat-icon>\r\n </ng-container>\r\n </mat-chip>\r\n</mat-chip-list>\r\n \r\n <!-- Context menu -->\r\n<mat-menu #itemMenu=\"matMenu\">\r\n <ng-template matMenuContent let-item=\"item\">\r\n <button mat-menu-item *ngFor=\"let button of buttonService.getVisibleButtons(displayedButtons, item, config)\" \r\n [disabled]=\"testDisabled(item, button.name)\"\r\n (click)=\"onActionClick(button.name, item)\">\r\n <mat-icon [ngStyle]=\"{'color': getButtonColor(button, item)}\">\r\n {{getIcon(button.name)}}\r\n </mat-icon>\r\n <span>{{button.display || (button.name | titlecase)}}</span>\r\n </button>\r\n </ng-template>\r\n</mat-menu>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { Button, TableConfig } from '../../classes/Classes';\r\nimport { ButtonService } from '../../services/button.service';\r\nimport { ConditionService } from '../../services/condition.service';\r\n\r\n@Component({\r\n selector: 'spa-cards',\r\n templateUrl: './cards.component.html',\r\n styleUrls: ['./cards.component.css']\r\n})\r\nexport class CardsComponent {\r\n constructor(\r\n public buttonService: ButtonService,\r\n private conditionService: ConditionService\r\n ) {}\r\n\r\n @Input() config: TableConfig;\r\n @Input() dataSource: any[];\r\n @Input() displayedButtons: Button[] = [];\r\n @Input() smallScreen = false;\r\n\r\n @Output() actionClick = new EventEmitter<{name: string, row: any}>();\r\n @Output() columnClick = new EventEmitter<{column: any, row: any}>();\r\n @Output() showBannerEvent = new EventEmitter<string>();\r\n\r\n // Get title value for a card\r\n getTitleValue(row: any): string {\r\n const titleField = this.config?.cardConfig?.titleField;\r\n return titleField ? row[titleField] : '';\r\n }\r\n\r\n // Get subtitle value for a card\r\n getSubtitleValue(row: any): string {\r\n const subtitleField = this.config?.cardConfig?.subtitleField;\r\n return subtitleField ? row[subtitleField] : '';\r\n }\r\n\r\n // Get content values for a card\r\n getContentValues(row: any): {label: string, value: any}[] {\r\n const contentFields = this.config?.cardConfig?.contentFields || [];\r\n return contentFields.map(field => {\r\n const column = this.config.columns.find(col => col.name === field);\r\n return {\r\n label: column?.alias || field,\r\n value: row[field]\r\n };\r\n });\r\n }\r\n\r\n // Handle button click from menu\r\n onActionClick(buttonName: string, row: any): void {\r\n this.actionClick.emit({ name: buttonName, row });\r\n }\r\n\r\n // Get color for button\r\n getButtonColor(button: Button, row: any): string {\r\n return this.buttonService.getButtonColor(button, row);\r\n }\r\n\r\n // Get icon for button\r\n getIcon(buttonName: string): string {\r\n return this.buttonService.getIcon(this.getButton(buttonName), this.config);\r\n }\r\n\r\n // Test if button should be disabled\r\n testDisabled(row: any, buttonName: string): boolean {\r\n const button = this.getButton(buttonName);\r\n return this.buttonService.testDisabled(button, row, this.config);\r\n }\r\n\r\n // Test if button should be visible\r\n testVisible(row: any, buttonName: string): boolean {\r\n const button = this.getButton(buttonName);\r\n return this.buttonService.testVisible(button, row, this.config);\r\n }\r\n\r\n // Get elevation class based on config\r\n getElevationClass(): string {\r\n const elevation = this.config?.cardConfig?.elevation || 'medium';\r\n switch(elevation) {\r\n case 'low': return 'mat-elevation-z1';\r\n case 'high': return 'mat-elevation-z8';\r\n default: return 'mat-elevation-z4';\r\n }\r\n }\r\n\r\n // Get number of columns for grid\r\n getColumnCount(): number {\r\n if (this.smallScreen) return 1;\r\n return this.config?.cardConfig?.columns || 3;\r\n }\r\n\r\n // Get button by name\r\n private getButton(name: string): Button | null {\r\n return this.displayedButtons?.find(x => x.name === name) || null;\r\n }\r\n}","<div class=\"cards-container\" [style.grid-template-columns]=\"'repeat(' + getColumnCount() + ', 1fr)'\">\r\n <mat-card *ngFor=\"let row of dataSource\" [class]=\"getElevationClass()\" class=\"card-item\">\r\n <mat-card-header>\r\n <mat-card-title>{{getTitleValue(row)}}</mat-card-title>\r\n <mat-card-subtitle *ngIf=\"getSubtitleValue(row)\">{{getSubtitleValue(row)}}</mat-card-subtitle>\r\n </mat-card-header>\r\n \r\n <mat-card-content>\r\n <div class=\"content-item\" *ngFor=\"let content of getContentValues(row)\">\r\n <span class=\"label\">{{content.label}}:</span>\r\n <span class=\"value\">{{content.value}}</span>\r\n </div>\r\n </mat-card-content>\r\n \r\n <mat-card-actions align=\"end\">\r\n <ng-container *ngFor=\"let button of displayedButtons\">\r\n <button *ngIf=\"!config.flatButtons && testVisible(row, button.name)\" \r\n mat-mini-fab\r\n [matTooltip]=\"button.tip ?? button.name | titlecase\"\r\n matTooltipPosition=\"above\"\r\n [ngStyle]=\"{'background-color': getButtonColor(button, row)}\"\r\n [disabled]=\"testDisabled(row, button.name)\"\r\n (click)=\"onActionClick(button.name, row)\">\r\n <mat-icon>{{getIcon(button.name)}}</mat-icon>\r\n </button>\r\n \r\n <button *ngIf=\"config.flatButtons && testVisible(row, button.name)\"\r\n mat-icon-button \r\n [matTooltip]=\"button.tip ?? button.name | titlecase\"\r\n matTooltipPosition=\"above\"\r\n [disabled]=\"testDisabled(row, button.name)\"\r\n (click)=\"onActionClick(button.name, row)\">\r\n <mat-icon [ngStyle]=\"{'color': getButtonColor(button, row)}\">{{getIcon(button.name)}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n </mat-card-actions>\r\n </mat-card>\r\n </div>","import { Component, EventEmitter, Input, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { Action, Button, Color, Column, DetailsDialogConfig, FormConfig, Icon, TableConfig, ApiResponse } from '../../classes/Classes';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { Core, DetailsDialogProcessor } from '../../classes/TinCore';\r\nimport { Subject } from 'rxjs';\r\nimport { ButtonService } from '../../services/button.service';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { TableConfigService } from '../../services/table-config.service';\r\nimport { ConditionService } from '../../services/condition.service';\r\nimport { DetailsDialogLite } from './detailsDialog-lite.component';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-table-lite',\r\n templateUrl: './table-lite.component.html',\r\n styleUrls: ['./table-lite.component.css']\r\n})\r\nexport class TableLiteComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private messageService: MessageService, private breakpointObserver: BreakpointObserver, public dialog: MatDialog,\r\n private buttonService: ButtonService, private dialogService: DialogService, private tableConfigService: TableConfigService, private conditionService: ConditionService, private authService: AuthService) \r\n {\r\n // detect screen size changes\r\n this.breakpointObserver.observe([\"(max-width: 600px)\"]).subscribe((result: BreakpointState) => {\r\n this.smallScreen = result.matches;\r\n this.updateTableConfiguration();\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n\r\n if (this.config?.formConfig) {\r\n this.hasFormAccess = Core.hasFormAccess(this.config.formConfig, this.authService.currentRoleSource.value);\r\n }\r\n\r\n if (this.hasFormAccess) {\r\n this.initializeComponent();\r\n }\r\n\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n\r\n if (!this.config.loadAction && !this.config.searchConfig) {\r\n this.dataSource = this.data;\r\n this.tableDataSource = new MatTableDataSource<any>(this.dataSource);\r\n\r\n }\r\n\r\n if (this.inTab && changes['activeTab']) {\r\n if (!this.hasBeenActivated && this.activeTab && this.config?.lazyLoad && this.config.loadAction) {\r\n this.loadData(this.config.loadAction, \"\");\r\n this.hasBeenActivated = true;\r\n }\r\n }\r\n\r\n setTimeout(() => { this.tableDataSource.paginator = this.tablePaginator; }, 1000)\r\n }\r\n\r\n\r\n\r\n elevation = \"mat-elevation-z5\";\r\n actionsWidth = \"50px\";\r\n showFilterButton = true;\r\n tileReload: Subject<boolean> = new Subject();\r\n hasBeenActivated = false; \r\n\r\n smallScreen = false\r\n hasFormAccess = true;\r\n\r\n //Table\r\n tableDataSource;\r\n dataSource: any[];\r\n displayedColumns = []\r\n displayedButtons = []\r\n originalTableLoadAction: Action\r\n\r\n @ViewChild('tablePaginator') tablePaginator: MatPaginator;\r\n\r\n @Input() data: any = [];\r\n @Input() tileData: any = [];\r\n @Input() config: TableConfig;\r\n @Input() reload: Subject<boolean>;\r\n @Input() activeTab = false;\r\n @Input() inTab = false;\r\n @Output() dataLoad = new EventEmitter();\r\n @Output() actionSuccess = new EventEmitter();\r\n @Output() refreshClick = new EventEmitter();\r\n @Output() searchClick = new EventEmitter();\r\n @Output() createClick = new EventEmitter();\r\n @Output() actionClick = new EventEmitter();\r\n @Output() inputChange = new EventEmitter();\r\n @Output() actionResponse = new EventEmitter();\r\n\r\n private initializeComponent() {\r\n this.updateTableConfiguration();\r\n this.setupDataLoading();\r\n this.formDefaults();\r\n this.originalTableLoadAction = { ...this.config.loadAction } //Core.getClone(this.config.loadAction);\r\n this.dataSource = this.data;\r\n this.tableDataSource = new MatTableDataSource<any>(this.dataSource);\r\n }\r\n\r\n private updateTableConfiguration() {\r\n this.elevation = this.getElevationClass(this.config?.elevation);\r\n this.displayedColumns = this.tableConfigService.setColumns(this.config, this.smallScreen);\r\n this.displayedButtons = this.tableConfigService.getDisplayedButtons(this.config?.buttons, this.smallScreen, this.config);\r\n this.actionsWidth = this.tableConfigService.getActionsWidth(this.displayedButtons, this.smallScreen, this.config);\r\n\r\n if (this.config?.searchConfig) {\r\n this.showFilterButton = false;\r\n }\r\n\r\n if (this.config?.showFilterButton === false) {\r\n this.showFilterButton = false;\r\n }\r\n\r\n }\r\n\r\n private setupDataLoading() {\r\n\r\n if (this.config.lazyLoad && this.inTab) return;\r\n\r\n if (this.config.loadAction) {\r\n this.loadData(this.config.loadAction, \"\");\r\n }\r\n\r\n if (this.reload) {\r\n this.reload.subscribe(v => {\r\n if (v && this.config?.loadAction) {\r\n this.loadData(this.config.loadAction, \"\");\r\n }\r\n });\r\n }\r\n }\r\n\r\n loadData(action: Action, data: any) {\r\n\r\n //if searchConfig is set, use last search\r\n\r\n\r\n if (action.method == 'post') {\r\n if (this.config.searchConfig) {\r\n if (!this.lastSearch) return;\r\n data = this.lastSearch;\r\n }\r\n }\r\n\r\n\r\n if (action) {\r\n\r\n this.dataService.CallApi(action, data).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (this.config.logResponse) {\r\n console.log(apiResponse)\r\n }\r\n\r\n if (apiResponse.success) {\r\n this.dataSource = apiResponse.data\r\n this.tableDataSource = new MatTableDataSource(apiResponse.data);\r\n this.tableDataSource.paginator = this.tablePaginator;\r\n\r\n this.dataLoaded(apiResponse.data);\r\n\r\n if (apiResponse.message != \"success\" && apiResponse.message != \"\") {\r\n this.messageService.toast(apiResponse.message);\r\n }\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 inputChanged(event) {\r\n this.inputChange.emit({ field: event.field, value: event.value })\r\n }\r\n\r\n formDefaults() {\r\n\r\n if (!this.config.formConfig) {\r\n let config = new FormConfig\r\n\r\n config.fields = []\r\n\r\n this.config.columns.forEach(column => {\r\n\r\n let field = { name: column.name, type: column.type }\r\n config.fields.push(field)\r\n\r\n });\r\n\r\n this.config.formConfig = config;\r\n }\r\n }\r\n\r\n setButtons() {\r\n if (!this.config.buttons) return\r\n if (!this.smallScreen) {\r\n this.displayedButtons = this.config.buttons;\r\n } else {\r\n this.displayedButtons = this.config.buttons;\r\n }\r\n }\r\n\r\n getButton(name: string) {\r\n return this.buttonService.getButton(this.config.buttons, name);\r\n }\r\n\r\n getIcon(buttonName: string) {\r\n const button = this.getButton(buttonName);\r\n return this.buttonService.getIcon(button, this.config);\r\n }\r\n\r\n getButtonColor(button: Button, row) {\r\n return this.buttonService.getButtonColor(button, row);\r\n }\r\n\r\n getOptions(column) {\r\n let x = this.config.columns.find(opt => opt.name === column);\r\n return x\r\n }\r\n\r\n getColor(value: any, options: any[]): string {\r\n return this.conditionService.getColor(value, options);\r\n }\r\n\r\n testIconCondition(row: any, icon: Icon): boolean {\r\n return this.conditionService.testIconCondition(icon, row);\r\n }\r\n\r\n testColorCondition(row: any, color: Color): boolean {\r\n return this.conditionService.testColorCondition(color, row);\r\n }\r\n\r\n showBanner(message: string) {\r\n if (message && message !== '') {\r\n this.messageService.info(message);\r\n }\r\n }\r\n\r\n testDisabled(row, buttonName: string): boolean {\r\n const button = this.getButton(buttonName);\r\n return this.buttonService.testDisabled(button, row);\r\n }\r\n\r\n // testVisible(row, buttonName: string): boolean {\r\n // const button = this.getButton(buttonName);\r\n // return this.buttonService.testVisible(button, row);\r\n // }\r\n\r\n\r\n\r\n //Events\r\n lastSearch\r\n searchClicked(x) {\r\n this.searchClick.emit(x);\r\n this.lastSearch = x;\r\n\r\n if (this.config.searchConfig.searchAction) {\r\n this.config.loadAction = { ...this.config.searchConfig.searchAction }//Core.getClone(this.config.searchConfig.searchAction);\r\n this.originalTableLoadAction = { ...this.config.searchConfig.searchAction } // Core.getClone(this.config.searchConfig.searchAction);\r\n this.loadData(this.config.loadAction, x);\r\n }\r\n }\r\n\r\n tileClicked(tile) {\r\n this.config.loadAction = { ...tile.data.action }//Core.getClone(tile.data.action);\r\n this.refreshClicked();\r\n }\r\n\r\n tileUnClicked(tile) {\r\n this.config.loadAction = { ...this.originalTableLoadAction }//Core.getClone(this.originalTableLoadAction);\r\n this.refreshClicked();\r\n }\r\n\r\n refreshClicked() {\r\n this.refreshClick.emit();\r\n\r\n if (this.config.loadAction) {\r\n\r\n this.loadData(this.config.loadAction, \"\");\r\n } else {\r\n this.dataLoad.emit();\r\n }\r\n }\r\n\r\n dataLoaded(x) {\r\n this.dataLoad.emit(x)\r\n\r\n if (this.config.tileConfig?.loadAction) {\r\n this.tileReload.next(true);\r\n }\r\n\r\n }\r\n\r\n actionClicked(name: string, row: any) {\r\n\r\n const button = this.getButton(name);\r\n \r\n if (button?.onClick) {\r\n button.onClick(row);\r\n }\r\n\r\n if (name === 'view') {\r\n this.viewModel(row);\r\n } else if (name === 'edit') {\r\n this.editModel(row);\r\n } else if (name === 'delete') {\r\n this.deleteModel(row);\r\n } else {\r\n this.customModel(name, row);\r\n }\r\n }\r\n\r\n\r\n //Dialog events\r\n columnClicked(column: Column, row) {\r\n if (column.detailsConfig) {\r\n const button: Button = { name: column.name, dialog: true, detailsConfig: column.detailsConfig }\r\n this.open(button, row,);\r\n } else {\r\n this.actionClickedEmit(column.name, row);\r\n }\r\n }\r\n\r\n customModel(name, row) {\r\n const button = this.getButton(name);\r\n this.open(button, row);\r\n }\r\n\r\n\r\n actionClickedEmit(name, row) {\r\n this.actionClick.emit({ name: name, data: row });\r\n }\r\n\r\n viewModel(row) {\r\n const button = this.getButton('view');\r\n this.open(button, row);\r\n }\r\n\r\n newModel() {\r\n const button = this.getButton('create');\r\n this.open(button, null);\r\n }\r\n\r\n editModel(row) {\r\n const button = this.getButton('edit');\r\n this.open(button, row);\r\n }\r\n\r\n private open(button: Button, row: any | null): void {\r\n\r\n const buttonName = button.name\r\n\r\n let btn: Button = {\r\n ...button,\r\n detailsConfig: button.detailsConfig ?? {\r\n ...button.detailsConfig,\r\n formConfig: this.config.formConfig,\r\n stepConfig: this.config.stepConfig,\r\n buttons: this.config.buttons,\r\n heroField: this.config.heroField,\r\n heroValue: this.config.heroValue,\r\n }\r\n }\r\n\r\n this.dialogService.openConfiguredDetailsDialog(btn, row, DetailsDialogLite,).subscribe(result => {\r\n if (result.action === 'doAction') {\r\n this.doAction(result.name, result.row);\r\n this.actionClickedEmit(result.name, result.row);\r\n } else if (result.action === 'inputChange') {\r\n this.inputChanged(result.change);\r\n } else if (result.message === 'success') {\r\n this.actionClickedEmit(buttonName, result.data);\r\n this.actionResponse.emit({ name: buttonName, data: result.data });\r\n this.refreshClicked();\r\n this.actionSuccess.emit();\r\n\r\n if (buttonName == 'create' && btn.editOnSuccess) {\r\n this.editModel(result.data.data);\r\n }\r\n\r\n if (btn.onSuccessButton){\r\n this.open(btn.onSuccessButton, result.data.data);\r\n }\r\n \r\n } else if (result.message === 'emit') {\r\n this.actionClickedEmit(buttonName, result.data);\r\n }\r\n });\r\n }\r\n\r\n deleteModel(row) {\r\n\r\n let button = this.getButton('delete');\r\n if (!button) return;\r\n\r\n let confirmMessage = this.buttonService.getConfirmMessage(button, row);\r\n if (!confirmMessage) {\r\n confirmMessage = `Are you sure you want to delete ?`;\r\n }\r\n \r\n this.messageService.confirm(confirmMessage).subscribe((result) => {\r\n if (result == \"yes\") {\r\n this.actionClickedEmit('delete', row)\r\n this.doAction(button.name,row);\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n //Actions\r\n doAction(buttonName: string, row) {\r\n\r\n let b = this.getButton(buttonName)\r\n\r\n if (!b) return;\r\n if (!b.action) return;\r\n\r\n if (b.setHeroField && this.config.heroValue) {\r\n row[this.config.heroField] = this.config.heroValue;\r\n }\r\n\r\n if (b.confirm && b.name != \"delete\") {\r\n const confirmMessage = this.buttonService.getConfirmMessage(b, row);\r\n this.messageService.confirm(confirmMessage).subscribe((result) => {\r\n if (result == \"yes\") {\r\n this.execAction(b,row)\r\n }\r\n });\r\n } else {\r\n this.execAction(b, row)\r\n }\r\n\r\n }\r\n\r\n execAction(button: Button, row) {\r\n this.dataService.CallApi(button.action, row).subscribe((apiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n\r\n if (apiResponse.message.includes(\"approval\") || apiResponse.message.includes(\"approve\") || apiResponse.message.includes(\"decline\")) {\r\n this.messageService.toast(apiResponse.message);\r\n } else if (button.action.successMessage) {\r\n this.messageService.toast(button.action.successMessage);\r\n } else if (apiResponse.message != \"success\" && apiResponse.message != \"\") {\r\n this.messageService.toast(apiResponse.message);\r\n } else {\r\n this.messageService.toast(\"Updated\");\r\n }\r\n\r\n this.refreshClicked();\r\n this.actionSuccess.emit();\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n\r\n this.actionResponse.emit({ name: button.name, data: apiResponse });\r\n },\r\n (error) => {\r\n this.messageService.toast(\"Error: \" + error);\r\n }\r\n );\r\n }\r\n\r\n\r\n //Misc\r\n private getElevationClass(elevation: string): string {\r\n\r\n if (elevation == \"none\") {\r\n return \"\"\r\n }\r\n else if (elevation == \"low\") {\r\n return \"mat-elevation-z1\"\r\n }\r\n else if (elevation == \"medium\") {\r\n return \"mat-elevation-z5\"\r\n }\r\n else if (elevation == \"high\") {\r\n return \"mat-elevation-z9\"\r\n }\r\n else {\r\n return \"mat-elevation-z5\"\r\n }\r\n\r\n }\r\n\r\n}\r\n","\r\n<ng-container *ngIf=\"hasFormAccess\">\r\n\r\n <!-- Search -->\r\n <spa-search\r\n *ngIf=\"config.searchConfig\" [config]=\"config.searchConfig\" [smallScreen]=\"smallScreen\" [tableDataSource]=\"tableDataSource\" style=\"margin-bottom: 20px;\" (searchClick)=\"searchClicked($event)\">\r\n </spa-search>\r\n\r\n <!-- Header -->\r\n <app-table-header\r\n [config]=\"config\" [data]=\"dataSource\" [tableDataSource]=\"tableDataSource\" [tileConfig]=\"config.tileConfig\" [tileData]=\"tileData\" [tileReload]=\"tileReload\" [lastSearch]=\"lastSearch\" [smallScreen]=\"smallScreen\"\r\n [showFilterButton]=\"showFilterButton\" (createClick)=\"newModel()\" (customClick)=\"customModel($event,null)\"\r\n (refreshClick)=\"refreshClicked()\" (tileClick)=\"tileClicked($event)\" (tileUnClick)=\"tileUnClicked($event)\">\r\n </app-table-header>\r\n\r\n\r\n <!-- Table -->\r\n <div *ngIf=\"!config.viewType || config?.viewType === 'table'\">\r\n\r\n <p *ngIf=\"!config\"><em>Configure Table</em></p>\r\n <p *ngIf=\"!dataSource\"><em>Loading...</em></p>\r\n\r\n <div *ngIf=\"dataSource && (!smallScreen || (smallScreen && dataSource?.length > 0))\">\r\n\r\n <table mat-table [dataSource]=\"tableDataSource\" [ngClass]=\"elevation\">\r\n\r\n <ng-container *ngFor=\"let column of config.columns\" [matColumnDef]=\"column.name\">\r\n <th mat-header-cell *matHeaderCellDef >{{ column.alias ?? column.name | camelToWords }}</th>\r\n <td mat-cell *matCellDef=\"let row;\" class=\"right-padding\" >\r\n\r\n <!-- Rows -->\r\n <app-table-row [column]=\"column\" [row]=\"row\" [config]=\"config\" [smallScreen]=\"smallScreen\"\r\n (actionClick)=\"actionClicked(column.name, row)\" (columnClick)=\"columnClicked(column, row)\" (showBannerEvent)=\"showBanner($event)\">\r\n </app-table-row>\r\n\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"action\">\r\n <th mat-header-cell *matHeaderCellDef> Action </th>\r\n <td mat-cell *matCellDef=\"let row\" [ngStyle]=\"{width:false ? '50px' : actionsWidth}\">\r\n <div class=\"action-buttons-container\">\r\n\r\n <!-- Actions -->\r\n <app-table-action\r\n [displayedButtons]=\"displayedButtons\" [config]=\"config\" [smallScreen]=\"smallScreen\" [row]=\"row\" (actionClick)=\"actionClicked($event.name, $event.row)\">\r\n </app-table-action>\r\n\r\n </div>\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': (config.greyOut && config.greyOut(row)) || row.pendingApproval}\"></tr>\r\n </table>\r\n\r\n </div>\r\n\r\n <mat-paginator *ngIf=\"dataSource && (!smallScreen || (smallScreen && dataSource?.length > 0))\" #tablePaginator [pageSizeOptions]=\"config.pageSizes ?? [10, 20, 50]\" showFirstLastButtons></mat-paginator>\r\n\r\n </div>\r\n \r\n <!-- Capsules -->\r\n <spa-capsules *ngIf=\"config?.viewType === 'capsule'\"\r\n [config]=\"config\"\r\n [dataSource]=\"dataSource\"\r\n [displayedButtons]=\"displayedButtons\"\r\n (actionClick)=\"actionClicked($event.name, $event.row)\">\r\n </spa-capsules>\r\n\r\n <!-- Cards -->\r\n <spa-cards *ngIf=\"config?.viewType === 'card'\"\r\n [config]=\"config\"\r\n [dataSource]=\"dataSource\"\r\n [displayedButtons]=\"displayedButtons\"\r\n [smallScreen]=\"smallScreen\"\r\n (actionClick)=\"actionClicked($event.name, $event.row)\"\r\n (columnClick)=\"columnClicked($event.column, $event.row)\"\r\n (showBannerEvent)=\"showBanner($event)\">\r\n </spa-cards>\r\n\r\n <div class=\"tin-center\">\r\n <p *ngIf=\"dataSource?.length == 0\"><em>{{config.noDataMessage ?? 'No Data'}}</em></p>\r\n </div>\r\n\r\n</ng-container>\r\n\r\n\r\n<ng-container *ngIf=\"!hasFormAccess\">\r\n <div class=\"tin-center\">\r\n <p><em>Access Restricted</em></p>\r\n </div>\r\n</ng-container>\r\n\r\n","\r\nimport { Component, OnInit, Inject, Output, EventEmitter, OnDestroy } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { FormConfig, Field, TableConfig, Button, DetailsDialogConfig, Action, ApiResponse, StepConfig, StatusConfig, CloseOptions } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { LoaderService } from '../../services/loader.service';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { Core, DetailsDialogProcessor } from '../../classes/TinCore';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { ButtonService } from '../../services/button.service';\r\nimport { interval, Subject, Subscription } from 'rxjs';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { TableConfigService } from '../../services/table-config.service';\r\nimport { MatTabChangeEvent } from '@angular/material/tabs';\r\n\r\n@Component({\r\n selector: 'spa-detailsDialog-internal', //uniq to internal\r\n templateUrl: './detailsDialog-internal.component.html',\r\n styleUrls: ['./table-internal.component.css']\r\n})\r\nexport class DetailsDialogInternal implements OnInit, OnDestroy {\r\n\r\n constructor(private breakpointObserver: BreakpointObserver,private loaderService: LoaderService,public dataService: DataServiceLib,private messageService: MessageService,\r\n private dialogRef: MatDialogRef<DetailsDialogInternal>, @Inject(MAT_DIALOG_DATA) public detailsConfig: DetailsDialogConfig, private buttonService: ButtonService,\r\n private dialogService: DialogService, private authService: AuthService, public tableConfigService: TableConfigService)\r\n {\r\n // detect screen size changes\r\n this.breakpointObserver.observe([\"(max-width: 600px)\"]).subscribe((result: BreakpointState) => {\r\n\r\n if (result.matches) {\r\n this.smallScreen = true\r\n }else {\r\n this.smallScreen = false\r\n }\r\n\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n\r\n const { tableConfig, tableConfigs, formConfig, stepConfig, statusConfig, buttons } = DetailsDialogProcessor.initializeConfigs(this.detailsConfig);\r\n this.tableConfig = tableConfig;\r\n this.tableConfigs = tableConfigs;\r\n this.formConfig = formConfig;\r\n this.stepConfig = stepConfig;\r\n this.statusConfig = statusConfig;\r\n this.buttons = buttons;\r\n\r\n let resp = DetailsDialogProcessor.handleFormMode(this.detailsConfig, this.formConfig,);\r\n\r\n if (resp.loadByAction) {\r\n this.loadByAction = true;\r\n formConfig.loadAction = resp.action;\r\n this.loadData(resp.action, false);\r\n } else {\r\n this.details = resp.details;\r\n DetailsDialogProcessor.setHeroValue(this.detailsConfig, this.details);\r\n this.loadByAction = false;\r\n this.isLoadComplete = true;\r\n }\r\n\r\n this.fileField = DetailsDialogProcessor.setFileField(this.formConfig);\r\n\r\n this.loaderService.isLoading.subscribe(x => this.isProcessing = x);\r\n\r\n const { extraButtons, createButton, editButton, deleteButton } = DetailsDialogProcessor.setupButtons(this.buttons);\r\n this.extraButtons = extraButtons;\r\n this.createButton = createButton;\r\n this.editButton = editButton;\r\n this.deleteButton = deleteButton;\r\n\r\n this.setTitleAction()\r\n this.initAutoRefresh();\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n // Cleanup subscription on component destroy\r\n this.stopAutoRefresh();\r\n }\r\n\r\n private refreshSubscription: Subscription;\r\n autoRefreshEnabled: boolean = false;\r\n\r\n titleAction = \"View\";\r\n loadByAction = false;\r\n\r\n extraButtons: Button[];\r\n buttons: Button[];\r\n createButton: Button;\r\n editButton: Button;\r\n deleteButton: Button;\r\n\r\n // modeButton : Button\r\n fileField: Field;\r\n files: any[] = [];\r\n\r\n tableReload: Subject<boolean> = new Subject();\r\n\r\n tableConfig: TableConfig\r\n tableConfigs : TableConfig[]\r\n details: any\r\n formConfig: FormConfig;\r\n stepConfig: StepConfig;\r\n statusConfig : StatusConfig;\r\n smallScreen = false;\r\n\r\n isLoadComplete: boolean = false;\r\n isProcessing: boolean = false;\r\n\r\n @Output() inputChange = new EventEmitter();\r\n\r\n selectedTabIndex = 0;\r\n onTabChange(event: MatTabChangeEvent) {\r\n this.selectedTabIndex = event.index;\r\n }\r\n\r\n private initAutoRefresh() {\r\n const config = this.detailsConfig.autoRefreshConfig;\r\n if (!config) return;\r\n\r\n // Set initial state based on defaultOn configuration\r\n this.autoRefreshEnabled = config.defaultOn || false;\r\n\r\n // Start auto-refresh if enabled by default\r\n if (this.autoRefreshEnabled) {\r\n this.startAutoRefresh();\r\n }\r\n }\r\n\r\n private startAutoRefresh() {\r\n\r\n if (!this.detailsConfig.autoRefreshConfig) return;\r\n \r\n const refreshInterval = this.detailsConfig.autoRefreshConfig.interval || 5000; // Default to 5 seconds\r\n \r\n // Clear any existing subscription\r\n this.stopAutoRefresh();\r\n \r\n // Create new subscription\r\n this.refreshSubscription = interval(refreshInterval).subscribe(() => {\r\n if (this.isLoadComplete && !this.isProcessing) {\r\n this.refreshData();\r\n }\r\n });\r\n }\r\n\r\n private stopAutoRefresh() {\r\n if (this.refreshSubscription) {\r\n this.refreshSubscription.unsubscribe();\r\n this.refreshSubscription = null;\r\n }\r\n }\r\n\r\n toggleAutoRefresh() {\r\n // this.autoRefreshEnabled = !this.autoRefreshEnabled;\r\n \r\n if (this.autoRefreshEnabled) {\r\n this.startAutoRefresh();\r\n } else {\r\n this.stopAutoRefresh();\r\n }\r\n }\r\n\r\n loadData(action: Action, causeTablesReload) {\r\n\r\n if (action && this.loadByAction) {\r\n\r\n this.dataService.CallApi(action).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.details = apiResponse.data\r\n this.isLoadComplete = true;\r\n // DetailsDialogProcessor.setHeroValue(this.detailsConfig, this.details);\r\n if(causeTablesReload) this.tableReload.next(true);\r\n\r\n const config = this.detailsConfig.autoRefreshConfig;\r\n if (this.autoRefreshEnabled && config?.stopCondition && config.stopCondition(this.details)) {\r\n this.autoRefreshEnabled = false;\r\n this.stopAutoRefresh();\r\n }\r\n }\r\n else{\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n\r\n if (this.autoRefreshEnabled) {\r\n this.autoRefreshEnabled = false;\r\n this.stopAutoRefresh();\r\n }\r\n }\r\n\r\n });\r\n }\r\n\r\n }\r\n\r\n inputChanged(event) {\r\n this.inputChange.emit({ field: event.field, value: event.value })\r\n }\r\n\r\n\r\n setMode(newMode) {\r\n this.formConfig.mode = newMode\r\n this.setTitleAction()\r\n }\r\n\r\n setTitleAction() {\r\n if (this.formConfig.fixedTitle) {\r\n this.titleAction = \"\";\r\n return;\r\n }\r\n\r\n this.titleAction = this.buttonService.getTitleAction(this.formConfig.mode, this.buttons);\r\n }\r\n\r\n getButton(name: string) {\r\n return this.buttonService.getButton(this.buttons, name);\r\n }\r\n\r\n testDisabled(row, buttonName: string): boolean {\r\n const button = this.getButton(buttonName);\r\n\r\n if (!button) return false;\r\n\r\n // Create a copy of the button with component's detailsConfig\r\n const buttonWithConfig = {\r\n ...button,\r\n detailsConfig: button.detailsConfig ? { ...button.detailsConfig } : this.detailsConfig\r\n };\r\n\r\n return this.buttonService.testDisabled(buttonWithConfig, row);\r\n }\r\n\r\n\r\n testVisible(row, buttonName: string): boolean {\r\n const button = this.getButton(buttonName);\r\n if (!button) return false;\r\n\r\n // Create a copy of the button with component's detailsConfig\r\n const buttonWithConfig = {\r\n ...button,\r\n detailsConfig: button.detailsConfig ? { ...button.detailsConfig } : this.detailsConfig\r\n };\r\n\r\n return this.buttonService.testVisible(buttonWithConfig, row)\r\n }\r\n\r\n testVisibleTab(tblConfig: TableConfig): boolean {\r\n\r\n if (!this.tableConfigService.hasTableAccess(tblConfig)) {\r\n return false;\r\n }\r\n\r\n return this.buttonService.isTabVisible(tblConfig, this.details);\r\n }\r\n\r\n getButtonColor(button: Button, row) {\r\n return this.buttonService.getButtonColor(button, row);\r\n }\r\n\r\n getVisibleFields() {\r\n return this.formConfig.fields?.filter(x => Core.testVisible(this.formConfig, this.details, x, this.authService.currentRoleSource.value))\r\n }\r\n\r\n\r\n create() {\r\n this.handleButtonAction('create');\r\n }\r\n\r\n edit() {\r\n this.handleButtonAction('edit');\r\n }\r\n\r\n delete() {\r\n const button = this.buttonService.getButton(this.buttons, 'delete');\r\n if (!button) return;\r\n\r\n let confirmMessage = this.buttonService.getConfirmMessage(button, this.details);\r\n if (!confirmMessage) {\r\n confirmMessage = `Are you sure you want to delete ?`;\r\n }\r\n\r\n this.messageService.confirm(confirmMessage).subscribe((result) => {\r\n if (result == \"yes\") {\r\n this.handleButtonAction('delete');\r\n }\r\n });\r\n }\r\n\r\n\r\n custom(button: Button) {\r\n if (button.dialog && button.detailsConfig) {\r\n this.openNestedDetailsDialog(button);\r\n } else {\r\n this.handleButtonAction(button.name);\r\n }\r\n }\r\n\r\n private openNestedDetailsDialog(button: Button): void {\r\n\r\n this.dialogService.openConfiguredDetailsDialog(button, this.details, DetailsDialogInternal).subscribe(result => {\r\n\r\n if (result.action === 'inputChange') {\r\n this.inputChanged(result.change);\r\n } else if (result && result.message === 'success') {\r\n this.refreshData();\r\n }\r\n\r\n });\r\n }\r\n\r\n private refreshData(): void {\r\n if (this.formConfig.loadAction) {\r\n this.loadData(this.formConfig.loadAction, true);\r\n }\r\n }\r\n\r\n handleButtonAction(buttonName: string) {\r\n \r\n const button = this.getButton(buttonName);\r\n if (!button) return;\r\n \r\n\r\n if (button.onClick) {\r\n button.onClick(this.details);\r\n }\r\n\r\n this.processButtonAction(button);\r\n }\r\n\r\n processButtonAction(button : Button) {\r\n if (!button.action) {\r\n if (!button.keepOpen) {\r\n this.dialogRef.close({ message: 'emit', data: this.details });\r\n }\r\n return;\r\n }\r\n\r\n if (button.skipValidation || this.validateForm()) {\r\n this.executeAction(button, this.details);\r\n }\r\n }\r\n\r\n private validateForm(): boolean {\r\n let validationResult = Core.validateObject(this.getVisibleFields(), this.details);\r\n if (validationResult !== '') {\r\n this.messageService.toast(validationResult);\r\n return false;\r\n }\r\n\r\n if (this.files.length < 1 && this.fileField?.required && this.formConfig.mode === 'create') {\r\n this.messageService.toast(\"Please attach file(s)\");\r\n return false;\r\n }\r\n\r\n // Validate composite fields\r\n for (const field of this.getVisibleFields()) {\r\n if (field.type === 'composite') {\r\n validationResult = Core.validateObject(Core.getVisibleSubfields(this.formConfig, this.details, field, this.authService.currentRoleSource.value), this.details, );\r\n if (validationResult !== '') {\r\n this.messageService.toast(validationResult);\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private prepareActionData(button: Button, data: any): any {\r\n if (this.buttonService.isFormButton(button)) {\r\n const formData = new FormData();\r\n for (let i = 0; i < this.files.length; i++) {\r\n formData.append(`uploadFile${i}`, this.files[i], this.files[i].name);\r\n }\r\n formData.append(\"data\", JSON.stringify(data));\r\n return formData;\r\n }\r\n return data;\r\n }\r\n\r\n private executeAction(button: Button, data: any) {\r\n const actionData = this.prepareActionData(button, data);\r\n\r\n if (button.confirm) {\r\n let confirmMessage = this.buttonService.getConfirmMessage(button, this.details);\r\n\r\n if (!confirmMessage && button.name == 'delete') {\r\n confirmMessage = `Are you sure you want to delete ?`;\r\n }\r\n\r\n this.messageService.confirm(confirmMessage).subscribe((result) => {\r\n if (result == \"yes\") {\r\n this.performApiCall(button, actionData);\r\n }\r\n });\r\n\r\n } else {\r\n this.performApiCall(button, actionData);\r\n }\r\n\r\n }\r\n\r\n private performApiCall(button: Button, data: any) {\r\n this.dataService.CallApi(button.action, data).subscribe((apiResponse: ApiResponse) => {\r\n \r\n if (apiResponse.data){\r\n this.details = apiResponse.data;\r\n }\r\n\r\n if (apiResponse.success) {\r\n\r\n if (apiResponse.message.includes(\"approval\") || apiResponse.message.includes(\"approve\") || apiResponse.message.includes(\"decline\")) {\r\n this.messageService.toast(apiResponse.message);\r\n } else if (button.action.successMessage) {\r\n this.messageService.toast(button.action.successMessage);\r\n } else if (apiResponse.message != \"success\" && apiResponse.message != \"\") {\r\n this.messageService.toast(apiResponse.message);\r\n } else {\r\n this.messageService.toast(\"Updated\");\r\n }\r\n\r\n if (button.onSuccess) {\r\n button.onSuccess(apiResponse.data, this.details);\r\n }\r\n\r\n if (button.keepOpen) {\r\n if (button.name === 'create' && apiResponse.data) {\r\n this.details = apiResponse.data;\r\n \r\n if (this.detailsConfig.heroField && apiResponse.data[this.detailsConfig.heroField]) {\r\n this.detailsConfig.heroValue = apiResponse.data[this.detailsConfig.heroField];\r\n this.formConfig.heroField = this.detailsConfig.heroField;\r\n this.formConfig.heroValue = this.detailsConfig.heroValue;\r\n }\r\n \r\n this.formConfig.mode = 'edit';\r\n this.setTitleAction();\r\n this.isLoadComplete = true;\r\n \r\n } else {\r\n this.refreshData();\r\n }\r\n }else{\r\n this.dialogRef.close({ message: 'success', data: { ...apiResponse, data: button.name == 'create' ? apiResponse.data : this.details } });\r\n }\r\n \r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n });\r\n }\r\n\r\n getClosePosition(): 'top' | 'bottom' {\r\n return this.detailsConfig.closeOptions?.position || 'bottom';\r\n }\r\n\r\n getCloseText(): string {\r\n return this.detailsConfig.closeOptions?.text || 'Cancel';\r\n }\r\n\r\n shouldShowTopClose(): boolean {\r\n return this.getClosePosition() === 'top';\r\n }\r\n\r\n shouldShowBottomClose(): boolean {\r\n return this.getClosePosition() === 'bottom';\r\n }\r\n\r\n close(){\r\n if (this.detailsConfig.refreshOnClose){\r\n this.dialogRef.close({ message: 'success', data: this.details });\r\n }else{\r\n this.dialogRef.close({ message: 'emit', data: this.details });\r\n }\r\n }\r\n};\r\n\r\n\r\n\r\n","<div class=\"dialog-container\">\r\n\r\n <div class=\"dialog-content\">\r\n\r\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isProcessing && dataService.appConfig.progressLine\"></mat-progress-bar>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center mt-2\">\r\n\r\n <div>\r\n <label style=\"font-size: 20px; font-weight:500;margin-bottom: 10px;\">{{titleAction | titlecase}} {{formConfig?.title}}</label>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n\r\n <spa-check *ngIf=\"detailsConfig.autoRefreshConfig\" display=\"Auto Refresh\" [(value)]=\"autoRefreshEnabled\" (valueChange)=\"toggleAutoRefresh()\"></spa-check>\r\n\r\n <div *ngIf=\"formConfig.mode=='view' && editButton && testVisible(details,editButton.name)\">\r\n <button mat-icon-button matTooltipPosition=\"above\" matTooltip=\"Edit\" color=\"primary\" (click)=\"setMode('edit')\" [disabled]=\"testDisabled(details,editButton.name)\"><mat-icon>edit</mat-icon></button>\r\n </div>\r\n\r\n <button [disabled]=\"isProcessing\" *ngIf=\"loadByAction\" mat-icon-button matTooltipPosition=\"above\" matTooltip=\"Refresh\" color=\"primary\" (click)=\"loadData(formConfig.loadAction, detailsConfig.causeTableRefresh)\"><mat-icon class=\"refreshIcon\">cached</mat-icon></button>\r\n \r\n <!-- Added: Top close button when position is 'top' -->\r\n <button *ngIf=\"shouldShowTopClose()\" [disabled]=\"isProcessing\" mat-icon-button matTooltipPosition=\"above\" matTooltip=\"Close\" (click)=\"close()\"><mat-icon>close</mat-icon></button>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <div>\r\n <spa-steps *ngIf=\"stepConfig && details && stepConfig.sticky\" [config]=\"stepConfig\" [data]=\"details\"></spa-steps>\r\n <spa-statuses *ngIf=\"statusConfig && details && statusConfig?.sticky\" [config]=\"statusConfig\" [data]=\"details\"></spa-statuses>\r\n <spa-alert *ngIf=\"formConfig.alertConfig && formConfig.alertConfig?.sticky\" [config]=\"formConfig.alertConfig\" [data]=\"details\"></spa-alert>\r\n </div>\r\n\r\n <mat-dialog-content class=\"mat-typography dialog-scroll-content\">\r\n\r\n <spa-steps *ngIf=\"stepConfig && details && !stepConfig.sticky\" [config]=\"stepConfig\" [data]=\"details\"></spa-steps>\r\n <spa-statuses *ngIf=\"statusConfig && details && !statusConfig?.sticky\" [config]=\"statusConfig\" [data]=\"details\"></spa-statuses>\r\n <spa-alert *ngIf=\"formConfig.alertConfig && !formConfig.alertConfig?.sticky\" [config]=\"formConfig.alertConfig\" [data]=\"details\"></spa-alert>\r\n\r\n <div class=\"tin-input\" style=\"font-size:14px\">\r\n\r\n <p *ngIf=\"formConfig && !details\"><em>Loading...</em></p>\r\n\r\n <spa-form *ngIf=\"formConfig && details\" [files]=\"files\" [data]=\"details\" [config]=\"formConfig\" (inputChange)=\"inputChanged($event)\">\r\n <ng-template #dynamicSelect let-field=\"field\" let-data=\"data\" let-testReadOnly=\"testReadOnly\" let-testRequired=\"testRequired\" let-selectChanged=\"selectChanged\">\r\n <spa-select-internal\r\n [display]=\"field.alias ?? field.name | camelToWords\"\r\n [width]=\"field.width\"\r\n [nullable]=\"field.nullable\"\r\n [options]=\"field.options\"\r\n [masterOptions]=\"field.masterOptions\"\r\n [masterField]=\"field.masterField\"\r\n [optionDisplay]=\"field.optionDisplay ?? 'name'\"\r\n [optionValue]=\"field.optionValue ?? 'value'\"\r\n [(value)]=\"data[field.name]\"\r\n [defaultFirstValue]=\"field.defaultFirstValue\"\r\n [required]=\"testRequired(field)\"\r\n [readonly]=\"testReadOnly(field)\"\r\n [hint]=\"field.hint\"\r\n [detailsConfig]=\"field.detailsConfig\"\r\n [loadAction]=\"field.loadAction\"\r\n [loadIDField]=\"field.loadIDField\"\r\n [field]=\"field\"\r\n [data]=\"data\"\r\n [infoMessage]=\"field.infoMessage\"\r\n [copyContent]=\"field.copyContent\"\r\n (valueChange)=\"selectChanged(field)\"\r\n ></spa-select-internal>\r\n </ng-template>\r\n </spa-form>\r\n\r\n\r\n <mat-tab-group *ngIf=\"tableConfigs\" (selectedTabChange)=\"onTabChange($event)\">\r\n\r\n <ng-container *ngFor=\"let tbl of tableConfigService.getVisibleTableConfigs(tableConfigs) ; let i = index\">\r\n <mat-tab *ngIf=\"testVisibleTab(tbl)\">\r\n\r\n <ng-template matTabLabel>\r\n <span>{{tbl.tabTitle ?? 'Untitled'}}</span>\r\n </ng-template>\r\n\r\n <spa-table-lite \r\n [config]=\"tbl\" \r\n [reload]=\"tableReload\" \r\n [inTab]=\"true\"\r\n [activeTab]=\"selectedTabIndex === i\"\r\n (actionSuccess)=\"tbl.causeFormRefresh ? loadData(formConfig.loadAction, false) : null\">\r\n </spa-table-lite>\r\n\r\n </mat-tab>\r\n </ng-container>\r\n\r\n </mat-tab-group>\r\n\r\n\r\n\r\n </div>\r\n\r\n </mat-dialog-content>\r\n\r\n\r\n </div>\r\n\r\n <mat-dialog-actions>\r\n\r\n <div>\r\n\r\n <button mat-raised-button [disabled]=\"isProcessing\" *ngIf=\"formConfig.mode=='create' && createButton\" color=\"primary\" (click)=\"create()\" cdkFocusInitial>{{createButton.display ?? 'Submit'}}\r\n </button>\r\n\r\n <button mat-raised-button [disabled]=\"isProcessing\" *ngIf=\"formConfig.mode=='edit' && editButton\" color=\"primary\" (click)=\"edit()\" cdkFocusInitial>{{editButton.display ?? 'Submit'}}\r\n </button>\r\n\r\n <ng-container *ngFor=\"let btn of extraButtons\">\r\n <button *ngIf=\"formConfig.mode !== 'create' && testVisible(details,btn.name)\" mat-stroked-button [disabled]=\"isProcessing || testDisabled(details,btn.name)\" [ngStyle]=\"{'color': getButtonColor(btn, details)}\" (click)=\"custom(btn)\" cdkFocusInitial>\r\n <mat-icon *ngIf=\"btn.icon\" [ngStyle]=\"{'color': getButtonColor(btn, details)}\">{{btn.icon.name}}</mat-icon>\r\n {{btn.display ?? btn.name | titlecase}}\r\n </button>\r\n </ng-container>\r\n\r\n <!-- Changed: Bottom close button now uses conditional display and custom text -->\r\n <button *ngIf=\"shouldShowBottomClose()\" mat-stroked-button color=\"primary\" (click)=\"close()\">{{getCloseText()}}</button>\r\n\r\n </div>\r\n\r\n <div class=\"col d-flex justify-content-end\" *ngIf=\"smallScreen\">\r\n <button mat-icon-button matTooltipPosition=\"above\" matTooltip=\"Delete\" [disabled]=\"isProcessing\" style=\"color: red;\" (click)=\"delete()\" *ngIf=\"formConfig.mode!='create' && deleteButton\"><mat-icon>delete</mat-icon></button>\r\n </div>\r\n\r\n\r\n </mat-dialog-actions>\r\n\r\n\r\n</div>\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 { Action, ApiResponse, Button, DetailsDialogConfig, TableConfig } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { SelectCommonComponent } from '../select-common/select-common.component';\r\nimport { DetailsDialogInternal } from '../table-internal/detailsDialog-internal.component';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { ButtonService } from '../../services/button.service';\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 extends SelectCommonComponent implements OnInit {\r\n\r\n constructor(\r\n protected override messageService: MessageService, protected override dataService: DataServiceLib,\r\n private dialogService: DialogService, private buttonService: ButtonService ,\r\n\r\n ) {\r\n super(messageService,dataService);\r\n }\r\n\r\n override ngOnInit(): void {\r\n\r\n if (this.options == null || this.options == undefined || this.options.length == 0) {\r\n this.getData(this.loadAction);\r\n }\r\n\r\n }\r\n\r\n @Input() detailsConfig: DetailsDialogConfig;\r\n\r\n\r\n onHoverChange(isHovered: boolean): void {\r\n this.isHovered = isHovered;\r\n }\r\n\r\n canCreate(): boolean {\r\n if (!this.detailsConfig?.buttons) return false;\r\n const createButton : Button = this.detailsConfig.buttons.find(b => b.name === 'create');\r\n const tmpTableConfig : TableConfig = {formConfig: this.detailsConfig.formConfig};\r\n return createButton && (!createButton.disabled || !createButton.disabled(this.value)) && this.buttonService.testVisible(createButton, null, tmpTableConfig) ;\r\n }\r\n\r\n canView(): boolean {\r\n if (!this.detailsConfig?.buttons) return false;\r\n let viewButton : Button = this.detailsConfig.buttons.find(b => b.name === 'view');\r\n if (!viewButton) {\r\n // Add default view button if not exists\r\n viewButton = { name: 'view', dialog: true };\r\n this.detailsConfig.buttons.push(viewButton);\r\n }\r\n const tmpTableConfig: TableConfig = { formConfig: this.detailsConfig.formConfig };\r\n return this.value && viewButton && this.buttonService.testVisible(viewButton, null, tmpTableConfig);\r\n }\r\n\r\n onPeekClick(event: MouseEvent, mode: 'create' | 'view'): void {\r\n event.stopPropagation();\r\n\r\n if (this.detailsConfig) {\r\n const dynamicData = mode === 'create' ? {} : { [this.detailsConfig.heroField]: this.value };\r\n\r\n let button = this.detailsConfig.buttons.find(b => b.name === mode);\r\n button.detailsConfig = this.detailsConfig;\r\n\r\n this.dialogService.openConfiguredDetailsDialog( button, dynamicData, DetailsDialogInternal ).subscribe(result => {\r\n // console.log(result);\r\n\r\n if (result.message === 'success'){\r\n this.refresh(event);\r\n }\r\n\r\n });\r\n\r\n } else {\r\n this.messageService.toast(\"Peek configuration error\");\r\n }\r\n }\r\n\r\n\r\n\r\n}\r\n\r\n","<spa-select-common [width]=\"width\" [readonly]=\"readonly\" [required]=\"required\" [defaultFirstValue]=\"defaultFirstValue\"\r\n [readonlyMode]=\"readonlyMode\" [hint]=\"hint\" [placeholder]=\"placeholder\" [multiple]=\"multiple\"\r\n [display]=\"display\" [(value)]=\"value\" [options]=\"options\" [masterOptions]=\"masterOptions\" [masterField]=\"masterField\"\r\n [optionValue]=\"optionValue\" [optionDisplay]=\"optionDisplay\" [optionDisplayExtra]=\"optionDisplayExtra\"\r\n [nullable]=\"nullable\" [infoMessage]=\"infoMessage\" [copyContent]=\"copyContent\" [loadAction]=\"loadAction\" [loadIDField]=\"loadIDField\" [field]=\"field\" [data]=\"data\"\r\n (valueChange)=\"valueChange.emit($event)\"\r\n (hoverChange)=\"onHoverChange($event)\">\r\n <ng-container additionalButtons>\r\n <button mat-icon-button *ngIf=\"detailsConfig && canCreate() && isHovered\" (click)=\"onPeekClick($event, 'create')\" matTooltip=\"Add\" matTooltipPosition=\"above\">\r\n <mat-icon style=\"color: green;\">add</mat-icon>\r\n </button>\r\n <button mat-icon-button *ngIf=\"detailsConfig && canView() && isHovered && value\" (click)=\"onPeekClick($event, 'view')\" matTooltip=\"View\" matTooltipPosition=\"above\">\r\n <mat-icon color=\"primary\">launch</mat-icon>\r\n </button>\r\n\r\n </ng-container>\r\n</spa-select-common>\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","\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, 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 = false;\r\n\r\n}\r\n","<div class=\"progress-loader\" [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 { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { DataServiceLib } from './datalib.service';\r\nimport { ApiResponse } from '../classes/Classes';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NotificationsService {\r\n\r\n private notificationCount = new BehaviorSubject<number>(0);\r\n notificationCount$ = this.notificationCount.asObservable();\r\n\r\n constructor(private dataService: DataServiceLib) {\r\n // this.loadNotifications();\r\n }\r\n\r\n loadNotifications() {\r\n // Using the dedicated count endpoint for better performance\r\n this.dataService.CallApi({ url: 'notifications/count/x' }).subscribe((apiResponse: ApiResponse) => {\r\n // console.log(apiResponse)\r\n if (apiResponse.success) {\r\n this.notificationCount.next(apiResponse.data);\r\n }\r\n });\r\n\r\n }\r\n\r\n refreshCount() {\r\n this.loadNotifications();\r\n }\r\n}\r\n","import { AppConfig, CapItem, } 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\nimport { StorageService } from '../../services/storage.service';\r\nimport { SocialAuthService } from '@abacritt/angularx-social-login';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { NotificationsService } from '../../services/notifications.service';\r\n\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, private storageService: StorageService, private notificationsService: NotificationsService,\r\n private socialService: SocialAuthService, private breakpointObserver: BreakpointObserver, public dataService: DataServiceLib,) {\r\n // detect screen size changes\r\n this.breakpointObserver.observe([\"(max-width: 600px)\"]).subscribe((result: BreakpointState) => {\r\n\r\n if (result.matches) {\r\n this.smallScreen = true\r\n } else {\r\n this.smallScreen = false\r\n }\r\n\r\n });\r\n }\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 this.authService.tenantNameObserv.subscribe(obj => this.tenantName = obj)\r\n\r\n if (!this.smallScreen) {\r\n this.isExpanded = true;\r\n }\r\n\r\n }\r\n\r\n notificationCount$ = this.notificationsService.notificationCount$;\r\n smallScreen\r\n myRole;\r\n loggedUserFullName: string;\r\n tenantName : string;\r\n loggedin: boolean;\r\n isExpanded = false;\r\n\r\n nowDate = new Date()\r\n\r\n\r\n @Input() appConfig = new AppConfig();\r\n @Input() footer: string = 'alsquaretech.net';\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 closeSide() {\r\n this.isExpanded = false;\r\n }\r\n\r\n logoff() {\r\n this.authService.logoff();\r\n }\r\n\r\n redirectTo(link: string){\r\n\r\n this.collapse();\r\n\r\n if (link!=\"\"){\r\n this.router.navigate([link]);\r\n }\r\n\r\n }\r\n\r\n\r\n getSubItems(capItem : CapItem) : CapItem[] {\r\n return capItem.capSubItems.filter(x => x.showMenu && !x.isBool );\r\n }\r\n\r\n\r\n\r\n}\r\n","<header *ngIf=\"loggedin && dataService.appConfig.navigation == 'top'\">\r\n\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\r\n\r\n <div class=\"container-fluid\" style=\"padding-right: 0px;\">\r\n\r\n <img *ngIf=\"appConfig.logo!=''\" [src]=\"appConfig.logo\" style=\"height: 50px; margin-right: 2em\" />\r\n\r\n <div>\r\n <!-- <div style=\"font-size: 20px;\">\r\n {{appConfig.appName}}\r\n </div>\r\n\r\n <div *ngIf=\"dataService.appConfig.multitenant && tenantName\" style=\"font-size: 12px;\">\r\n {{tenantName}}\r\n </div> -->\r\n\r\n <div *ngIf=\"!dataService.appConfig.multitenant\" style=\"font-size: 22px;\">\r\n {{appConfig.appName}}\r\n </div>\r\n\r\n <div *ngIf=\"dataService.appConfig.multitenant\" style=\"font-size: 20px; ; font-weight: 400;\" [ngStyle]=\"{'margin-top': dataService.appConfig.multitenant ? '12px' : ''}\">\r\n {{appConfig.appName}}\r\n </div>\r\n\r\n <div *ngIf=\"dataService.appConfig.multitenant && tenantName\" style=\"font-size: 12px; margin-bottom: 5px;\">\r\n {{tenantName}}\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n\r\n <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\".navbar-collapse\" aria-label=\"Toggle navigation\" [attr.aria-expanded]=\"isExpanded\" (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, navitems: isExpanded }\" >\r\n\r\n <button mat-icon-button (click)=\"logoff()\" > <mat-icon>logout</mat-icon> </button>\r\n\r\n <div *ngIf=\"dataService.appConfig.multitenant\">\r\n\r\n <button mat-icon-button (click)=\"redirectTo('home/admin/tenant-settings')\" > <mat-icon fontSet=\"material-icons-round\">apartment</mat-icon> </button>\r\n\r\n <button mat-icon-button (click)=\"redirectTo('home/admin/bug')\"> <mat-icon >support_agent</mat-icon> </button>\r\n\r\n <!-- <button mat-icon-button (click)=\"redirectTo('home/admin/notifications')\"> <mat-icon fontSet=\"material-icons-round\">apartment</mat-icon> </button> -->\r\n </div>\r\n\r\n\r\n <button id=\"btnUser\" mat-button [matMenuTriggerFor]=\"profileMenu\" ><mat-icon style=\"font-size: 24px;\">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)=\"logoff()\">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\r\n</header>\r\n\r\n<div class=\"container-fluid tin-bg-image\" *ngIf=\"dataService.appConfig.navigation == 'top'\">\r\n <router-outlet></router-outlet>\r\n <spa-loader [logo]=\"this.dataService.appConfig.logo\"></spa-loader>\r\n</div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n<!-- SIDE -->\r\n<mat-toolbar class=\"tin-bg-image-toolbar\" *ngIf=\"loggedin && dataService.appConfig.navigation == 'side'\" style=\"padding: 0px 8px;\">\r\n\r\n <button mat-icon-button (click)=\"toggle()\" matTooltip=\"Menu\">\r\n <mat-icon>menu</mat-icon>\r\n </button>\r\n\r\n <img [src]=\"dataService.appConfig.logo\" style=\"height: 50px;\" />\r\n\r\n <div style=\"padding-left: 10px; \">\r\n\r\n <div style=\"font-size: 22px; font-weight: 400;\">\r\n {{appConfig.appName}}\r\n </div>\r\n\r\n <!-- <div style=\"font-size: 20px; height: 25px; font-weight: 400;\" [ngStyle]=\"{'margin-top': dataService.appConfig.multitenant ? '12px' : ''}\">\r\n {{appConfig.appName}}\r\n </div> -->\r\n\r\n <!-- <div *ngIf=\"dataService.appConfig.multitenant && tenantName\" style=\"font-size: 12px; margin-bottom: 5px;\">\r\n {{tenantName}}\r\n </div> -->\r\n\r\n </div>\r\n\r\n\r\n\r\n <span class=\"toolbar-item-spacer\"></span>\r\n\r\n <!-- buttons -->\r\n\r\n <div *ngIf=\"dataService.appConfig.multitenant\">\r\n\r\n <!-- <label style=\"font-size: 14px;\">Hi, {{loggedUserFullName}}</label> -->\r\n\r\n <button mat-icon-button (click)=\"redirectTo('home/admin/tenant-settings')\" matTooltip=\"Organisation Settings\">\r\n <mat-icon fontSet=\"material-icons-round\">apartment</mat-icon>\r\n </button>\r\n <label style=\"font-size: 14px;margin-right: 20px;\">{{tenantName}}</label>\r\n\r\n <button *ngIf=\"!smallScreen\" mat-icon-button (click)=\"redirectTo('home/admin/bug')\" matTooltip=\"Support\">\r\n <mat-icon >help</mat-icon>\r\n </button>\r\n\r\n <button *ngIf=\"!smallScreen\" mat-icon-button (click)=\"redirectTo('home/admin/notifications')\" matTooltip=\"Notifications\">\r\n <mat-icon [matBadge]=\"notificationCount$ | async\" [matBadgeHidden]=\"(notificationCount$ | async) === 0\" matBadgeColor=\"warn\" matBadgeSize=\"small\">notifications</mat-icon>\r\n </button>\r\n\r\n </div>\r\n\r\n\r\n\r\n <button mat-icon-button matTooltip=\"My Account\" [matMenuTriggerFor]=\"userAccountMenu\"><mat-icon>account_circle</mat-icon></button>\r\n <label style=\"font-size: 14px;\">{{loggedUserFullName}}</label>\r\n\r\n <button *ngIf=\"!smallScreen\" mat-icon-button (click)=\"logoff()\" matTooltip=\"Signout\">\r\n <mat-icon>logout</mat-icon>\r\n </button>\r\n\r\n\r\n <!-- my account menu -->\r\n <mat-menu #userAccountMenu [overlapTrigger]=\"false\" yPosition=\"below\">\r\n\r\n\r\n <button mat-menu-item routerLink=\"home/user/profile\">\r\n <mat-icon>person</mat-icon><span>Profile</span>\r\n </button>\r\n\r\n <button mat-menu-item routerLink=\"home/admin/bug\" *ngIf=\"dataService.appConfig.multitenant && smallScreen\">\r\n <mat-icon>help</mat-icon> <span>Help</span>\r\n </button>\r\n\r\n <mat-divider></mat-divider>\r\n\r\n <button mat-menu-item (click)=\"logoff()\">\r\n <mat-icon>logout</mat-icon>Logout\r\n </button>\r\n\r\n </mat-menu>\r\n\r\n</mat-toolbar>\r\n\r\n\r\n\r\n\r\n<mat-sidenav-container class=\"app-container\" [hasBackdrop]=\"smallScreen\" *ngIf=\"loggedin && dataService.appConfig.navigation == 'side'\">\r\n\r\n <mat-sidenav #sidenav [mode]=\"smallScreen ? 'over' : 'side'\" [class.mat-elevation-z4]=\"true\" [opened]=\"isExpanded\" class=\"app-sidenav side-color\" style=\"height: 100%;\"\r\n [ngStyle]=\"{'width': dataService.appConfig.navWidth}\">\r\n <mat-nav-list >\r\n\r\n <ng-container *ngFor=\"let cap of dataService.appConfig.capItems\" >\r\n\r\n <!-- Menu item -->\r\n <mat-list-item [routerLink]=\"cap.link\" *ngIf=\"myRole[cap.name] && cap.showMenu && (!cap.capSubItems || cap.capSubItems && cap.ignoreSubsDisplay)\" style=\"height: 40px;font-size: 15px;\"\r\n (click)=\"smallScreen ? toggle() : null\">\r\n <mat-icon [ngStyle]=\"{'color': cap.color}\" style=\"margin-right: 5px;\">{{cap.icon}}</mat-icon>{{cap.display}}\r\n </mat-list-item>\r\n\r\n <!-- Menu With Sub items -->\r\n <mat-expansion-panel class=\"side-color\" [class.mat-elevation-z0]=\"true\" *ngIf=\"myRole[cap.name] && cap.showMenu && cap.capSubItems && !cap.ignoreSubsDisplay\">\r\n\r\n <mat-expansion-panel-header style=\"height: 40px;padding-left: 15px;\">\r\n <mat-icon [ngStyle]=\"{'color': cap.color}\" style=\"margin-right: 5px;\">{{cap.icon != 'navigate_next' ? cap.icon : 'fiber_manual_record' }}</mat-icon>{{cap.display}}\r\n </mat-expansion-panel-header>\r\n\r\n <!-- Sub items -->\r\n <mat-nav-list *ngFor=\"let capSub of getSubItems(cap)\">\r\n\r\n <mat-list-item [routerLink]=\"capSub.link\" style=\"height: 30px; font-size: 15px;\" (click)=\"smallScreen ? toggle() : null\" *ngIf=\"myRole[capSub.name] && capSub.showMenu\">\r\n <mat-icon [ngStyle]=\"{'color': capSub.color}\" style=\"margin-right: 5px;\">{{capSub.icon}}</mat-icon>{{capSub.display}}\r\n </mat-list-item>\r\n\r\n </mat-nav-list>\r\n\r\n </mat-expansion-panel>\r\n\r\n </ng-container>\r\n\r\n </mat-nav-list>\r\n </mat-sidenav>\r\n\r\n\r\n\r\n <mat-sidenav-content class=\"tin-bg-image\" style=\"padding: 0px 12px;\" *ngIf=\"loggedin && dataService.appConfig.navigation == 'side'\">\r\n <hr style=\"margin-top: 0px;\">\r\n <router-outlet></router-outlet>\r\n <spa-loader [logo]=\"this.dataService.appConfig.logo\"></spa-loader>\r\n </mat-sidenav-content>\r\n\r\n</mat-sidenav-container>\r\n\r\n\r\n<!-- footer -->\r\n<div class=\"tin-center\" *ngIf=\"loggedin && dataService.appConfig.navigation == 'side'\">\r\n <label style=\"text-align: center; font-size: 12px;\">&copy; {{nowDate | date : 'yyyy'}} <a color=\"primary\" class=\"terms-link\" [href]=\"appConfig.siteUrl\" target=\"_blank\">{{footer}}</a> | <a color=\"primary\" class=\"terms-link\" [href]=\"appConfig.privacyUrl\" target=\"_blank\">Privacy Policy</a>.</label>\r\n</div>\r\n\r\n\r\n<div class=\"tin-bg-image\" *ngIf=\"!loggedin && dataService.appConfig.navigation == 'side'\">\r\n <router-outlet></router-outlet>\r\n <spa-loader [logo]=\"this.dataService.appConfig.logo\"></spa-loader>\r\n</div>\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 showError(userMessage : string, error : HttpErrorResponse){\r\n\r\n console.log(error)\r\n\r\n let url = new URL(window.location.href);\r\n\r\n if (url.host.includes('localhost')) {\r\n this.messageService.error(error.error.Message)\r\n } else {\r\n this.messageService.toast(userMessage)\r\n }\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\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 this.removeRequest(requestClone);\r\n observer.error(error);\r\n\r\n if (error.status === 401) {\r\n this.authService.sessionExpired()\r\n this.messageService.toast('Unauthorised: Please login again')\r\n }\r\n else if (error.status ===500){\r\n this.showError(\"System Error\", error)\r\n }\r\n else if (error.statusText == 'Unknown Error'){\r\n this.showError(\"Connection Error\", error)\r\n }\r\n else{\r\n this.showError(\"Error\", error)\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 { 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 { Component, EventEmitter, Input, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { Action, Button, Color, Column, DetailsDialogConfig, FormConfig, Icon, TableConfig, ApiResponse } from '../../classes/Classes';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { Core, DetailsDialogProcessor } from '../../classes/TinCore';\r\nimport { Subject } from 'rxjs';\r\nimport { ButtonService } from '../../services/button.service';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { TableConfigService } from '../../services/table-config.service';\r\nimport { ConditionService } from '../../services/condition.service';\r\nimport { DetailsDialogInternal } from './detailsDialog-internal.component';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-table-internal',\r\n templateUrl: './table-internal.component.html',\r\n styleUrls: ['./table-internal.component.css']\r\n})\r\nexport class TableInternalComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private messageService: MessageService, private breakpointObserver: BreakpointObserver, public dialog: MatDialog,\r\n private buttonService: ButtonService, private dialogService: DialogService, private tableConfigService: TableConfigService, private conditionService: ConditionService, private authService: AuthService) \r\n {\r\n // detect screen size changes\r\n this.breakpointObserver.observe([\"(max-width: 600px)\"]).subscribe((result: BreakpointState) => {\r\n this.smallScreen = result.matches;\r\n this.updateTableConfiguration();\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n\r\n if (this.config?.formConfig) {\r\n this.hasFormAccess = Core.hasFormAccess(this.config.formConfig, this.authService.currentRoleSource.value);\r\n }\r\n\r\n if (this.hasFormAccess) {\r\n this.initializeComponent();\r\n }\r\n\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n\r\n if (!this.config.loadAction && !this.config.searchConfig) {\r\n this.dataSource = this.data;\r\n this.tableDataSource = new MatTableDataSource<any>(this.dataSource);\r\n\r\n }\r\n\r\n if (this.inTab && changes['activeTab']) {\r\n if (!this.hasBeenActivated && this.activeTab && this.config?.lazyLoad && this.config.loadAction) {\r\n this.loadData(this.config.loadAction, \"\");\r\n this.hasBeenActivated = true;\r\n }\r\n }\r\n\r\n setTimeout(() => { this.tableDataSource.paginator = this.tablePaginator; }, 1000)\r\n }\r\n\r\n\r\n\r\n elevation = \"mat-elevation-z5\";\r\n actionsWidth = \"50px\";\r\n showFilterButton = true;\r\n tileReload: Subject<boolean> = new Subject();\r\n hasBeenActivated = false; \r\n\r\n smallScreen = false\r\n hasFormAccess = true;\r\n\r\n //Table\r\n tableDataSource;\r\n dataSource: any[];\r\n displayedColumns = []\r\n displayedButtons = []\r\n originalTableLoadAction: Action\r\n\r\n @ViewChild('tablePaginator') tablePaginator: MatPaginator;\r\n\r\n @Input() data: any = [];\r\n @Input() tileData: any = [];\r\n @Input() config: TableConfig;\r\n @Input() reload: Subject<boolean>;\r\n @Input() activeTab = false;\r\n @Input() inTab = false;\r\n @Output() dataLoad = new EventEmitter();\r\n @Output() actionSuccess = new EventEmitter();\r\n @Output() refreshClick = new EventEmitter();\r\n @Output() searchClick = new EventEmitter();\r\n @Output() createClick = new EventEmitter();\r\n @Output() actionClick = new EventEmitter();\r\n @Output() inputChange = new EventEmitter();\r\n @Output() actionResponse = new EventEmitter();\r\n\r\n private initializeComponent() {\r\n this.updateTableConfiguration();\r\n this.setupDataLoading();\r\n this.formDefaults();\r\n this.originalTableLoadAction = { ...this.config.loadAction } //Core.getClone(this.config.loadAction);\r\n this.dataSource = this.data;\r\n this.tableDataSource = new MatTableDataSource<any>(this.dataSource);\r\n }\r\n\r\n private updateTableConfiguration() {\r\n this.elevation = this.getElevationClass(this.config?.elevation);\r\n this.displayedColumns = this.tableConfigService.setColumns(this.config, this.smallScreen);\r\n this.displayedButtons = this.tableConfigService.getDisplayedButtons(this.config?.buttons, this.smallScreen, this.config);\r\n this.actionsWidth = this.tableConfigService.getActionsWidth(this.displayedButtons, this.smallScreen, this.config);\r\n\r\n if (this.config?.searchConfig) {\r\n this.showFilterButton = false;\r\n }\r\n\r\n if (this.config?.showFilterButton === false) {\r\n this.showFilterButton = false;\r\n }\r\n\r\n }\r\n\r\n private setupDataLoading() {\r\n\r\n if (this.config.lazyLoad && this.inTab) return;\r\n\r\n if (this.config.loadAction) {\r\n this.loadData(this.config.loadAction, \"\");\r\n }\r\n\r\n if (this.reload) {\r\n this.reload.subscribe(v => {\r\n if (v && this.config?.loadAction) {\r\n this.loadData(this.config.loadAction, \"\");\r\n }\r\n });\r\n }\r\n }\r\n\r\n loadData(action: Action, data: any) {\r\n\r\n //if searchConfig is set, use last search\r\n\r\n\r\n if (action.method == 'post') {\r\n if (this.config.searchConfig) {\r\n if (!this.lastSearch) return;\r\n data = this.lastSearch;\r\n }\r\n }\r\n\r\n\r\n if (action) {\r\n\r\n this.dataService.CallApi(action, data).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (this.config.logResponse) {\r\n console.log(apiResponse)\r\n }\r\n\r\n if (apiResponse.success) {\r\n this.dataSource = apiResponse.data\r\n this.tableDataSource = new MatTableDataSource(apiResponse.data);\r\n this.tableDataSource.paginator = this.tablePaginator;\r\n\r\n this.dataLoaded(apiResponse.data);\r\n\r\n if (apiResponse.message != \"success\" && apiResponse.message != \"\") {\r\n this.messageService.toast(apiResponse.message);\r\n }\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 inputChanged(event) {\r\n this.inputChange.emit({ field: event.field, value: event.value })\r\n }\r\n\r\n formDefaults() {\r\n\r\n if (!this.config.formConfig) {\r\n let config = new FormConfig\r\n\r\n config.fields = []\r\n\r\n this.config.columns.forEach(column => {\r\n\r\n let field = { name: column.name, type: column.type }\r\n config.fields.push(field)\r\n\r\n });\r\n\r\n this.config.formConfig = config;\r\n }\r\n }\r\n\r\n setButtons() {\r\n if (!this.config.buttons) return\r\n if (!this.smallScreen) {\r\n this.displayedButtons = this.config.buttons;\r\n } else {\r\n this.displayedButtons = this.config.buttons;\r\n }\r\n }\r\n\r\n getButton(name: string) {\r\n return this.buttonService.getButton(this.config.buttons, name);\r\n }\r\n\r\n getIcon(buttonName: string) {\r\n const button = this.getButton(buttonName);\r\n return this.buttonService.getIcon(button, this.config);\r\n }\r\n\r\n getButtonColor(button: Button, row) {\r\n return this.buttonService.getButtonColor(button, row);\r\n }\r\n\r\n getOptions(column) {\r\n let x = this.config.columns.find(opt => opt.name === column);\r\n return x\r\n }\r\n\r\n getColor(value: any, options: any[]): string {\r\n return this.conditionService.getColor(value, options);\r\n }\r\n\r\n testIconCondition(row: any, icon: Icon): boolean {\r\n return this.conditionService.testIconCondition(icon, row);\r\n }\r\n\r\n testColorCondition(row: any, color: Color): boolean {\r\n return this.conditionService.testColorCondition(color, row);\r\n }\r\n\r\n showBanner(message: string) {\r\n if (message && message !== '') {\r\n this.messageService.info(message);\r\n }\r\n }\r\n\r\n testDisabled(row, buttonName: string): boolean {\r\n const button = this.getButton(buttonName);\r\n return this.buttonService.testDisabled(button, row);\r\n }\r\n\r\n // testVisible(row, buttonName: string): boolean {\r\n // const button = this.getButton(buttonName);\r\n // return this.buttonService.testVisible(button, row);\r\n // }\r\n\r\n\r\n\r\n //Events\r\n lastSearch\r\n searchClicked(x) {\r\n this.searchClick.emit(x);\r\n this.lastSearch = x;\r\n\r\n if (this.config.searchConfig.searchAction) {\r\n this.config.loadAction = { ...this.config.searchConfig.searchAction }//Core.getClone(this.config.searchConfig.searchAction);\r\n this.originalTableLoadAction = { ...this.config.searchConfig.searchAction } // Core.getClone(this.config.searchConfig.searchAction);\r\n this.loadData(this.config.loadAction, x);\r\n }\r\n }\r\n\r\n tileClicked(tile) {\r\n this.config.loadAction = { ...tile.data.action } //Core.getClone(tile.data.action);\r\n this.refreshClicked();\r\n }\r\n\r\n tileUnClicked(tile) {\r\n this.config.loadAction = { ...this.originalTableLoadAction }//Core.getClone(this.originalTableLoadAction);\r\n this.refreshClicked();\r\n }\r\n\r\n refreshClicked() {\r\n this.refreshClick.emit();\r\n\r\n if (this.config.loadAction) {\r\n\r\n this.loadData(this.config.loadAction, \"\");\r\n } else {\r\n this.dataLoad.emit();\r\n }\r\n }\r\n\r\n dataLoaded(x) {\r\n this.dataLoad.emit(x)\r\n\r\n if (this.config.tileConfig?.loadAction) {\r\n this.tileReload.next(true);\r\n }\r\n\r\n }\r\n\r\n actionClicked(name: string, row: any) {\r\n\r\n const button = this.getButton(name);\r\n \r\n if (button?.onClick) {\r\n button.onClick(row);\r\n }\r\n \r\n if (name === 'view') {\r\n this.viewModel(row);\r\n } else if (name === 'edit') {\r\n this.editModel(row);\r\n } else if (name === 'delete') {\r\n this.deleteModel(row);\r\n } else {\r\n this.customModel(name, row);\r\n }\r\n }\r\n\r\n\r\n //Dialog events\r\n columnClicked(column: Column, row) {\r\n if (column.detailsConfig) {\r\n const button: Button = { name: column.name, dialog: true, detailsConfig: column.detailsConfig }\r\n this.open(button, row,);\r\n } else {\r\n this.actionClickedEmit(column.name, row);\r\n }\r\n }\r\n\r\n customModel(name, row) {\r\n const button = this.getButton(name);\r\n this.open(button, row);\r\n }\r\n\r\n\r\n actionClickedEmit(name, row) {\r\n this.actionClick.emit({ name: name, data: row });\r\n }\r\n\r\n viewModel(row) {\r\n const button = this.getButton('view');\r\n this.open(button, row);\r\n }\r\n\r\n newModel() {\r\n const button = this.getButton('create');\r\n this.open(button, null);\r\n }\r\n\r\n editModel(row) {\r\n const button = this.getButton('edit');\r\n this.open(button, row);\r\n }\r\n\r\n private open(button: Button, row: any | null): void {\r\n\r\n const buttonName = button.name\r\n\r\n let btn: Button = {\r\n ...button,\r\n detailsConfig: button.detailsConfig ?? {\r\n ...button.detailsConfig,\r\n formConfig: this.config.formConfig,\r\n stepConfig: this.config.stepConfig,\r\n buttons: this.config.buttons,\r\n heroField: this.config.heroField,\r\n heroValue: this.config.heroValue,\r\n }\r\n }\r\n\r\n this.dialogService.openConfiguredDetailsDialog(btn, row, DetailsDialogInternal,).subscribe(result => {\r\n if (result.action === 'doAction') {\r\n this.doAction(result.name, result.row);\r\n this.actionClickedEmit(result.name, result.row);\r\n } else if (result.action === 'inputChange') {\r\n this.inputChanged(result.change);\r\n } else if (result.message === 'success') {\r\n this.actionClickedEmit(buttonName, result.data);\r\n this.actionResponse.emit({ name: buttonName, data: result.data });\r\n this.refreshClicked();\r\n this.actionSuccess.emit();\r\n\r\n if (buttonName == 'create' && btn.editOnSuccess) {\r\n this.editModel(result.data.data);\r\n }\r\n\r\n if (btn.onSuccessButton){\r\n this.open(btn.onSuccessButton, result.data.data);\r\n }\r\n \r\n } else if (result.message === 'emit') {\r\n this.actionClickedEmit(buttonName, result.data);\r\n }\r\n });\r\n }\r\n\r\n deleteModel(row) {\r\n\r\n let button = this.getButton('delete');\r\n if (!button) return;\r\n\r\n let confirmMessage = this.buttonService.getConfirmMessage(button, row);\r\n if (!confirmMessage) {\r\n confirmMessage = `Are you sure you want to delete ?`;\r\n }\r\n \r\n this.messageService.confirm(confirmMessage).subscribe((result) => {\r\n if (result == \"yes\") {\r\n this.actionClickedEmit('delete', row)\r\n this.doAction(button.name,row);\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n //Actions\r\n doAction(buttonName: string, row) {\r\n\r\n let b = this.getButton(buttonName)\r\n\r\n if (!b) return;\r\n if (!b.action) return;\r\n\r\n if (b.setHeroField && this.config.heroValue) {\r\n row[this.config.heroField] = this.config.heroValue;\r\n }\r\n\r\n if (b.confirm && b.name != \"delete\") {\r\n const confirmMessage = this.buttonService.getConfirmMessage(b, row);\r\n this.messageService.confirm(confirmMessage).subscribe((result) => {\r\n if (result == \"yes\") {\r\n this.execAction(b,row)\r\n }\r\n });\r\n } else {\r\n this.execAction(b, row)\r\n }\r\n\r\n }\r\n\r\n execAction(button: Button, row) {\r\n this.dataService.CallApi(button.action, row).subscribe((apiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n\r\n if (apiResponse.message.includes(\"approval\") || apiResponse.message.includes(\"approve\") || apiResponse.message.includes(\"decline\")) {\r\n this.messageService.toast(apiResponse.message);\r\n } else if (button.action.successMessage) {\r\n this.messageService.toast(button.action.successMessage);\r\n } else if (apiResponse.message != \"success\" && apiResponse.message != \"\") {\r\n this.messageService.toast(apiResponse.message);\r\n } else {\r\n this.messageService.toast(\"Updated\");\r\n }\r\n\r\n this.refreshClicked();\r\n this.actionSuccess.emit();\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n\r\n this.actionResponse.emit({ name: button.name, data: apiResponse });\r\n },\r\n (error) => {\r\n this.messageService.toast(\"Error: \" + error);\r\n }\r\n );\r\n }\r\n\r\n\r\n //Misc\r\n private getElevationClass(elevation: string): string {\r\n\r\n if (elevation == \"none\") {\r\n return \"\"\r\n }\r\n else if (elevation == \"low\") {\r\n return \"mat-elevation-z1\"\r\n }\r\n else if (elevation == \"medium\") {\r\n return \"mat-elevation-z5\"\r\n }\r\n else if (elevation == \"high\") {\r\n return \"mat-elevation-z9\"\r\n }\r\n else {\r\n return \"mat-elevation-z5\"\r\n }\r\n\r\n }\r\n\r\n}\r\n","\r\n<ng-container *ngIf=\"hasFormAccess\">\r\n\r\n <!-- Search -->\r\n <spa-search\r\n *ngIf=\"config.searchConfig\" [config]=\"config.searchConfig\" [smallScreen]=\"smallScreen\" [tableDataSource]=\"tableDataSource\" style=\"margin-bottom: 20px;\" (searchClick)=\"searchClicked($event)\">\r\n </spa-search>\r\n\r\n <!-- Header -->\r\n <app-table-header\r\n [config]=\"config\" [data]=\"dataSource\" [tableDataSource]=\"tableDataSource\" [tileConfig]=\"config.tileConfig\" [tileData]=\"tileData\" [tileReload]=\"tileReload\" [lastSearch]=\"lastSearch\" [smallScreen]=\"smallScreen\"\r\n [showFilterButton]=\"showFilterButton\" (createClick)=\"newModel()\" (customClick)=\"customModel($event,null)\"\r\n (refreshClick)=\"refreshClicked()\" (tileClick)=\"tileClicked($event)\" (tileUnClick)=\"tileUnClicked($event)\">\r\n </app-table-header>\r\n\r\n\r\n <!-- Table -->\r\n <div *ngIf=\"!config.viewType || config?.viewType === 'table'\">\r\n\r\n <p *ngIf=\"!config\"><em>Configure Table</em></p>\r\n <p *ngIf=\"!dataSource\"><em>Loading...</em></p>\r\n\r\n <div *ngIf=\"dataSource && (!smallScreen || (smallScreen && dataSource?.length > 0))\">\r\n\r\n <table mat-table [dataSource]=\"tableDataSource\" [ngClass]=\"elevation\">\r\n\r\n <ng-container *ngFor=\"let column of config.columns\" [matColumnDef]=\"column.name\">\r\n <th mat-header-cell *matHeaderCellDef >{{ column.alias ?? column.name | camelToWords }}</th>\r\n <td mat-cell *matCellDef=\"let row;\" class=\"right-padding\" >\r\n\r\n <!-- Rows -->\r\n <app-table-row [column]=\"column\" [row]=\"row\" [config]=\"config\" [smallScreen]=\"smallScreen\"\r\n (actionClick)=\"actionClicked(column.name, row)\" (columnClick)=\"columnClicked(column, row)\" (showBannerEvent)=\"showBanner($event)\">\r\n </app-table-row>\r\n\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"action\">\r\n <th mat-header-cell *matHeaderCellDef> Action </th>\r\n <td mat-cell *matCellDef=\"let row\" [ngStyle]=\"{width:false ? '50px' : actionsWidth}\">\r\n <div class=\"action-buttons-container\">\r\n\r\n <!-- Actions -->\r\n <app-table-action\r\n [displayedButtons]=\"displayedButtons\" [config]=\"config\" [smallScreen]=\"smallScreen\" [row]=\"row\" (actionClick)=\"actionClicked($event.name, $event.row)\">\r\n </app-table-action>\r\n\r\n </div>\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': (config.greyOut && config.greyOut(row)) || row.pendingApproval}\"></tr>\r\n </table>\r\n\r\n </div>\r\n\r\n <mat-paginator *ngIf=\"dataSource && (!smallScreen || (smallScreen && dataSource?.length > 0))\" #tablePaginator [pageSizeOptions]=\"config.pageSizes ?? [10, 20, 50]\" showFirstLastButtons></mat-paginator>\r\n\r\n </div>\r\n \r\n <!-- Capsules -->\r\n <spa-capsules *ngIf=\"config?.viewType === 'capsule'\"\r\n [config]=\"config\"\r\n [dataSource]=\"dataSource\"\r\n [displayedButtons]=\"displayedButtons\"\r\n (actionClick)=\"actionClicked($event.name, $event.row)\">\r\n </spa-capsules>\r\n\r\n <!-- Cards -->\r\n <spa-cards *ngIf=\"config?.viewType === 'card'\"\r\n [config]=\"config\"\r\n [dataSource]=\"dataSource\"\r\n [displayedButtons]=\"displayedButtons\"\r\n [smallScreen]=\"smallScreen\"\r\n (actionClick)=\"actionClicked($event.name, $event.row)\"\r\n (columnClick)=\"columnClicked($event.column, $event.row)\"\r\n (showBannerEvent)=\"showBanner($event)\">\r\n </spa-cards>\r\n\r\n <div class=\"tin-center\">\r\n <p *ngIf=\"dataSource?.length == 0\"><em>{{config.noDataMessage ?? 'No Data'}}</em></p>\r\n </div>\r\n\r\n</ng-container>\r\n\r\n\r\n<ng-container *ngIf=\"!hasFormAccess\">\r\n <div class=\"tin-center\">\r\n <p><em>Access Restricted</em></p>\r\n </div>\r\n</ng-container>\r\n\r\n","\r\nimport { Component, OnInit, Inject, Output, EventEmitter, OnDestroy } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { FormConfig, Field, TableConfig, Button, DetailsDialogConfig, Action, ApiResponse, StepConfig, StatusConfig, CloseOptions } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { Core, DetailsDialogProcessor } from '../../classes/TinCore';\r\nimport { LoaderService } from '../../services/loader.service';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { Subject, Subscription, config, interval } from 'rxjs';\r\nimport { ButtonService } from '../../services/button.service';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { TableConfigService } from '../../services/table-config.service';\r\nimport { MatTabChangeEvent } from '@angular/material/tabs';\r\n\r\n@Component({\r\n selector: 'spa-detailsDialog',\r\n templateUrl: './detailsDialog.component.html',\r\n styleUrls: ['./table.component.css']\r\n})\r\nexport class DetailsDialog implements OnInit, OnDestroy {\r\n\r\n constructor(private breakpointObserver: BreakpointObserver,private loaderService: LoaderService,public dataService: DataServiceLib,private messageService: MessageService,\r\n private dialogRef: MatDialogRef<DetailsDialog>, @Inject(MAT_DIALOG_DATA) public detailsConfig: DetailsDialogConfig, private buttonService: ButtonService,\r\n private dialogService: DialogService, private authService: AuthService, public tableConfigService: TableConfigService)\r\n {\r\n // detect screen size changes\r\n this.breakpointObserver.observe([\"(max-width: 600px)\"]).subscribe((result: BreakpointState) => {\r\n\r\n if (result.matches) {\r\n this.smallScreen = true\r\n }else {\r\n this.smallScreen = false\r\n }\r\n\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n\r\n const { tableConfig, tableConfigs, formConfig, stepConfig, statusConfig, buttons } = DetailsDialogProcessor.initializeConfigs(this.detailsConfig);\r\n this.tableConfig = tableConfig;\r\n this.tableConfigs = tableConfigs;\r\n this.formConfig = formConfig;\r\n this.stepConfig = stepConfig;\r\n this.statusConfig = statusConfig;\r\n this.buttons = buttons;\r\n\r\n let resp = DetailsDialogProcessor.handleFormMode(this.detailsConfig, this.formConfig,);\r\n\r\n if (resp.loadByAction){\r\n this.loadByAction = true;\r\n formConfig.loadAction = resp.action;\r\n this.loadData(resp.action, false);\r\n }else{\r\n this.details = resp.details;\r\n DetailsDialogProcessor.setHeroValue(this.detailsConfig, this.details);\r\n this.loadByAction = false;\r\n this.isLoadComplete = true;\r\n }\r\n\r\n this.fileField = DetailsDialogProcessor.setFileField(this.formConfig);\r\n\r\n this.loaderService.isLoading.subscribe(x => this.isProcessing = x);\r\n\r\n const { extraButtons, createButton, editButton, deleteButton } = DetailsDialogProcessor.setupButtons(this.buttons);\r\n this.extraButtons = extraButtons;\r\n this.createButton = createButton;\r\n this.editButton = editButton;\r\n this.deleteButton = deleteButton;\r\n\r\n this.setTitleAction();\r\n this.initAutoRefresh();\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n // Cleanup subscription on component destroy\r\n this.stopAutoRefresh();\r\n }\r\n\r\n private refreshSubscription: Subscription;\r\n autoRefreshEnabled: boolean = false;\r\n \r\n titleAction = \"View\";\r\n loadByAction = false;\r\n\r\n extraButtons: Button[];\r\n buttons: Button[];\r\n createButton: Button;\r\n editButton: Button;\r\n deleteButton: Button;\r\n\r\n // modeButton : Button\r\n fileField: Field;\r\n files: any[] = [];\r\n\r\n tableReload: Subject<boolean> = new Subject();\r\n\r\n tableConfig: TableConfig\r\n tableConfigs : TableConfig[]\r\n details: any\r\n formConfig: FormConfig;\r\n stepConfig : StepConfig;\r\n statusConfig : StatusConfig;\r\n smallScreen = false;\r\n\r\n isLoadComplete: boolean = false;\r\n isProcessing: boolean = false;\r\n\r\n @Output() inputChange = new EventEmitter();\r\n\r\n selectedTabIndex = 0;\r\n onTabChange(event: MatTabChangeEvent) {\r\n this.selectedTabIndex = event.index;\r\n }\r\n\r\n private initAutoRefresh() {\r\n const config = this.detailsConfig.autoRefreshConfig;\r\n if (!config) return;\r\n\r\n // Set initial state based on defaultOn configuration\r\n this.autoRefreshEnabled = config.defaultOn || false;\r\n\r\n // Start auto-refresh if enabled by default\r\n if (this.autoRefreshEnabled) {\r\n this.startAutoRefresh();\r\n }\r\n }\r\n\r\n private startAutoRefresh() {\r\n\r\n if (!this.detailsConfig.autoRefreshConfig) return;\r\n \r\n const refreshInterval = this.detailsConfig.autoRefreshConfig.interval || 5000; // Default to 5 seconds\r\n \r\n // Clear any existing subscription\r\n this.stopAutoRefresh();\r\n \r\n // Create new subscription\r\n this.refreshSubscription = interval(refreshInterval).subscribe(() => {\r\n if (this.isLoadComplete && !this.isProcessing) {\r\n this.refreshData();\r\n }\r\n });\r\n }\r\n\r\n private stopAutoRefresh() {\r\n if (this.refreshSubscription) {\r\n this.refreshSubscription.unsubscribe();\r\n this.refreshSubscription = null;\r\n }\r\n }\r\n\r\n toggleAutoRefresh() {\r\n // this.autoRefreshEnabled = !this.autoRefreshEnabled;\r\n \r\n if (this.autoRefreshEnabled) {\r\n this.startAutoRefresh();\r\n } else {\r\n this.stopAutoRefresh();\r\n }\r\n }\r\n\r\n loadData(action: Action, causeTablesReload) {\r\n\r\n if (action && this.loadByAction) {\r\n\r\n this.dataService.CallApi(action).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.details = apiResponse.data\r\n this.isLoadComplete = true;\r\n // DetailsDialogProcessor.setHeroValue(this.detailsConfig, this.details);\r\n if(causeTablesReload) this.tableReload.next(true);\r\n\r\n const config = this.detailsConfig.autoRefreshConfig;\r\n if (this.autoRefreshEnabled && config?.stopCondition && config.stopCondition(this.details)) {\r\n this.autoRefreshEnabled = false;\r\n this.stopAutoRefresh();\r\n }\r\n }\r\n else{\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n\r\n if (this.autoRefreshEnabled) {\r\n this.autoRefreshEnabled = false;\r\n this.stopAutoRefresh();\r\n }\r\n }\r\n\r\n });\r\n }\r\n\r\n }\r\n\r\n inputChanged(event) {\r\n this.inputChange.emit({ field: event.field, value: event.value })\r\n }\r\n\r\n\r\n setMode(newMode){\r\n this.formConfig.mode = newMode\r\n this.setTitleAction()\r\n }\r\n\r\n setTitleAction(){\r\n if (this.formConfig.fixedTitle) {\r\n this.titleAction = \"\";\r\n return;\r\n }\r\n\r\n this.titleAction = this.buttonService.getTitleAction(this.formConfig.mode, this.buttons);\r\n }\r\n\r\n getButton(name: string) {\r\n return this.buttonService.getButton(this.buttons, name);\r\n }\r\n\r\n testDisabled(row, buttonName: string): boolean {\r\n const button = this.getButton(buttonName);\r\n\r\n if (!button) return false;\r\n\r\n // Create a copy of the button with component's detailsConfig\r\n const buttonWithConfig = {\r\n ...button,\r\n detailsConfig: button.detailsConfig ? { ...button.detailsConfig } : this.detailsConfig\r\n };\r\n\r\n return this.buttonService.testDisabled(buttonWithConfig, row);\r\n }\r\n\r\n\r\n testVisible(row, buttonName: string): boolean {\r\n const button = this.getButton(buttonName);\r\n if (!button) return false;\r\n\r\n // Create a copy of the button with component's detailsConfig\r\n const buttonWithConfig = {\r\n ...button,\r\n detailsConfig: button.detailsConfig ? { ...button.detailsConfig } : this.detailsConfig\r\n };\r\n\r\n return this.buttonService.testVisible(buttonWithConfig, row)\r\n }\r\n\r\n testVisibleTab(tblConfig: TableConfig): boolean {\r\n\r\n if (!this.tableConfigService.hasTableAccess(tblConfig)) {\r\n return false;\r\n }\r\n\r\n return this.buttonService.isTabVisible(tblConfig, this.details);\r\n }\r\n\r\n getButtonColor(button: Button, row) {\r\n return this.buttonService.getButtonColor(button, row);\r\n }\r\n\r\n getVisibleFields() {\r\n return this.formConfig.fields?.filter(x => Core.testVisible(this.formConfig, this.details, x, this.authService.currentRoleSource.value))\r\n }\r\n\r\n\r\n create() {\r\n this.handleButtonAction('create');\r\n }\r\n\r\n edit() {\r\n this.handleButtonAction('edit');\r\n }\r\n\r\n delete() {\r\n const button = this.buttonService.getButton(this.buttons, 'delete');\r\n if (!button) return;\r\n\r\n let confirmMessage = this.buttonService.getConfirmMessage(button, this.details);\r\n if (!confirmMessage) {\r\n confirmMessage = `Are you sure you want to delete ?`;\r\n }\r\n\r\n this.messageService.confirm(confirmMessage).subscribe((result) => {\r\n if (result == \"yes\") {\r\n this.handleButtonAction('delete');\r\n }\r\n });\r\n }\r\n\r\n\r\n custom(button: Button ) {\r\n if (button.dialog && button.detailsConfig) {\r\n this.openNestedDetailsDialog(button);\r\n } else {\r\n this.handleButtonAction(button.name);\r\n }\r\n }\r\n\r\n private openNestedDetailsDialog(button: Button): void {\r\n\r\n this.dialogService.openConfiguredDetailsDialog( button, this.details, DetailsDialog ).subscribe(result => {\r\n\r\n if (result.action === 'inputChange') {\r\n this.inputChanged(result.change);\r\n } else if (result && result.message === 'success') {\r\n this.refreshData();\r\n }\r\n\r\n });\r\n }\r\n\r\n private refreshData(): void {\r\n if (this.formConfig.loadAction) {\r\n this.loadData(this.formConfig.loadAction, true);\r\n }\r\n }\r\n\r\n handleButtonAction(buttonName: string) {\r\n \r\n const button = this.getButton(buttonName);\r\n if (!button) return;\r\n \r\n\r\n if (button.onClick) {\r\n button.onClick(this.details);\r\n }\r\n\r\n this.processButtonAction(button);\r\n }\r\n\r\n processButtonAction(button : Button) {\r\n if (!button.action) {\r\n if (!button.keepOpen) {\r\n this.dialogRef.close({ message: 'emit', data: this.details });\r\n }\r\n return;\r\n }\r\n\r\n if (button.skipValidation || this.validateForm()) {\r\n this.executeAction(button, this.details);\r\n }\r\n }\r\n\r\n private validateForm(): boolean {\r\n let validationResult = Core.validateObject(this.getVisibleFields(), this.details);\r\n if (validationResult !== '') {\r\n this.messageService.toast(validationResult);\r\n return false;\r\n }\r\n\r\n if (this.files.length < 1 && this.fileField?.required && this.formConfig.mode === 'create') {\r\n this.messageService.toast(\"Please attach file(s)\");\r\n return false;\r\n }\r\n\r\n // Validate composite fields\r\n for (const field of this.getVisibleFields()) {\r\n if (field.type === 'composite') {\r\n validationResult = Core.validateObject(Core.getVisibleSubfields(this.formConfig, this.details, field, this.authService.currentRoleSource.value), this.details, );\r\n if (validationResult !== '') {\r\n this.messageService.toast(validationResult);\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private prepareActionData(button: Button, data: any): any {\r\n if (this.buttonService.isFormButton(button)) {\r\n const formData = new FormData();\r\n for (let i = 0; i < this.files.length; i++) {\r\n formData.append(`uploadFile${i}`, this.files[i], this.files[i].name);\r\n }\r\n formData.append(\"data\", JSON.stringify(data));\r\n return formData;\r\n }\r\n return data;\r\n }\r\n\r\n private executeAction(button: Button, data: any) {\r\n const actionData = this.prepareActionData(button, data);\r\n\r\n if (button.confirm) {\r\n let confirmMessage = this.buttonService.getConfirmMessage(button, this.details);\r\n\r\n if (!confirmMessage && button.name == 'delete') {\r\n confirmMessage = `Are you sure you want to delete ?`;\r\n }\r\n\r\n this.messageService.confirm(confirmMessage).subscribe((result) => {\r\n if (result == \"yes\") {\r\n this.performApiCall(button, actionData);\r\n }\r\n });\r\n\r\n } else {\r\n this.performApiCall(button, actionData);\r\n }\r\n\r\n }\r\n\r\n private performApiCall(button: Button, data: any) {\r\n this.dataService.CallApi(button.action, data).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (apiResponse.data){\r\n this.details = apiResponse.data;\r\n }\r\n\r\n if (apiResponse.success) {\r\n\r\n if (apiResponse.message.includes(\"approval\") || apiResponse.message.includes(\"approve\") || apiResponse.message.includes(\"decline\")) {\r\n this.messageService.toast(apiResponse.message);\r\n } else if (button.action.successMessage) {\r\n this.messageService.toast(button.action.successMessage);\r\n } else if (apiResponse.message != \"success\" && apiResponse.message != \"\") {\r\n this.messageService.toast(apiResponse.message);\r\n } else {\r\n this.messageService.toast(\"Updated\");\r\n }\r\n\r\n if (button.onSuccess) {\r\n button.onSuccess(apiResponse.data, this.details);\r\n }\r\n\r\n if (button.keepOpen) {\r\n if (button.name === 'create' && apiResponse.data) {\r\n this.details = apiResponse.data;\r\n \r\n if (this.detailsConfig.heroField && apiResponse.data[this.detailsConfig.heroField]) {\r\n this.detailsConfig.heroValue = apiResponse.data[this.detailsConfig.heroField];\r\n this.formConfig.heroField = this.detailsConfig.heroField;\r\n this.formConfig.heroValue = this.detailsConfig.heroValue;\r\n }\r\n \r\n this.formConfig.mode = 'edit';\r\n this.setTitleAction();\r\n this.isLoadComplete = true;\r\n \r\n } else {\r\n this.refreshData();\r\n }\r\n }else{\r\n this.dialogRef.close({ message: 'success', data: { ...apiResponse, data: button.name == 'create' ? apiResponse.data : this.details } });\r\n }\r\n \r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n });\r\n }\r\n\r\n getClosePosition(): 'top' | 'bottom' {\r\n return this.detailsConfig.closeOptions?.position || 'bottom';\r\n }\r\n\r\n getCloseText(): string {\r\n return this.detailsConfig.closeOptions?.text || 'Cancel';\r\n }\r\n\r\n shouldShowTopClose(): boolean {\r\n return this.getClosePosition() === 'top';\r\n }\r\n\r\n shouldShowBottomClose(): boolean {\r\n return this.getClosePosition() === 'bottom';\r\n }\r\n\r\n close(){\r\n if (this.detailsConfig.refreshOnClose){\r\n this.dialogRef.close({ message: 'success', data: this.details });\r\n }else{\r\n this.dialogRef.close({ message: 'emit', data: this.details });\r\n }\r\n }\r\n\r\n};\r\n","<div class=\"dialog-container\">\r\n\r\n <div class=\"dialog-content\">\r\n\r\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isProcessing && dataService.appConfig.progressLine\"></mat-progress-bar>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center mt-2\">\r\n\r\n <div>\r\n <label style=\"font-size: 20px; font-weight:500;margin-bottom: 10px;\" >{{titleAction | titlecase}} {{formConfig?.title}}</label>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n\r\n <spa-check *ngIf=\"detailsConfig.autoRefreshConfig\" display=\"Auto Refresh\" [(value)]=\"autoRefreshEnabled\" (valueChange)=\"toggleAutoRefresh()\"></spa-check>\r\n\r\n <div *ngIf=\"formConfig.mode=='view' && editButton && testVisible(details,editButton.name)\">\r\n <button mat-icon-button matTooltipPosition=\"above\" matTooltip=\"Edit\" color=\"primary\" (click)=\"setMode('edit')\" [disabled]=\"testDisabled(details,editButton.name)\"><mat-icon>edit</mat-icon></button>\r\n </div>\r\n\r\n <button [disabled]=\"isProcessing\" *ngIf=\"loadByAction\" mat-icon-button matTooltipPosition=\"above\" matTooltip=\"Refresh\" color=\"primary\" (click)=\"loadData(formConfig.loadAction, detailsConfig.causeTableRefresh)\"><mat-icon class=\"refreshIcon\">cached</mat-icon></button>\r\n \r\n <!-- Added: Top close button when position is 'top' -->\r\n <button *ngIf=\"shouldShowTopClose()\" [disabled]=\"isProcessing\" mat-icon-button matTooltipPosition=\"above\" matTooltip=\"Close\" (click)=\"close()\"><mat-icon>close</mat-icon></button>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <div>\r\n <spa-steps *ngIf=\"stepConfig && details && stepConfig.sticky\" [config]=\"stepConfig\" [data]=\"details\"></spa-steps>\r\n <spa-statuses *ngIf=\"statusConfig && details && statusConfig?.sticky\" [config]=\"statusConfig\" [data]=\"details\"></spa-statuses>\r\n <spa-alert *ngIf=\"formConfig.alertConfig && formConfig.alertConfig?.sticky\" [config]=\"formConfig.alertConfig\" [data]=\"details\"></spa-alert>\r\n </div>\r\n\r\n\r\n <mat-dialog-content class=\"mat-typography dialog-scroll-content\">\r\n\r\n <spa-steps *ngIf=\"stepConfig && details && !stepConfig.sticky\" [config]=\"stepConfig\" [data]=\"details\"></spa-steps>\r\n <spa-statuses *ngIf=\"statusConfig && details && !statusConfig?.sticky\" [config]=\"statusConfig\" [data]=\"details\"></spa-statuses>\r\n <spa-alert *ngIf=\"formConfig.alertConfig && !formConfig.alertConfig?.sticky\" [config]=\"formConfig.alertConfig\" [data]=\"details\"></spa-alert>\r\n\r\n <div class=\"tin-input\" style=\"font-size:14px\">\r\n\r\n <p *ngIf=\"formConfig && !details\"><em>Loading...</em></p>\r\n\r\n <spa-form *ngIf=\"formConfig && details\" [files]=\"files\" [data]=\"details\" [config]=\"formConfig\" (inputChange)=\"inputChanged($event)\">\r\n <ng-template #dynamicSelect let-field=\"field\" let-data=\"data\" let-testReadOnly=\"testReadOnly\" let-testRequired=\"testRequired\" let-selectChanged=\"selectChanged\">\r\n <spa-select\r\n [display]=\"field.alias ?? field.name | camelToWords\"\r\n [width]=\"field.width\"\r\n [nullable]=\"field.nullable\"\r\n [options]=\"field.options\"\r\n [masterOptions]=\"field.masterOptions\"\r\n [masterField]=\"field.masterField\"\r\n [optionDisplay]=\"field.optionDisplay ?? 'name'\"\r\n [optionValue]=\"field.optionValue ?? 'value'\"\r\n [(value)]=\"data[field.name]\"\r\n [defaultFirstValue]=\"field.defaultFirstValue\"\r\n [required]=\"testRequired(field)\"\r\n [readonly]=\"testReadOnly(field)\"\r\n [hint]=\"field.hint\"\r\n [detailsConfig]=\"field.detailsConfig\"\r\n [loadAction]=\"field.loadAction\"\r\n [loadIDField]=\"field.loadIDField\"\r\n [field]=\"field\"\r\n [data]=\"data\"\r\n [infoMessage]=\"field.infoMessage\"\r\n [copyContent]=\"field.copyContent\"\r\n (valueChange)=\"selectChanged(field)\"\r\n ></spa-select>\r\n </ng-template>\r\n </spa-form>\r\n\r\n\r\n <mat-tab-group *ngIf=\"tableConfigs\" (selectedTabChange)=\"onTabChange($event)\">\r\n\r\n <ng-container *ngFor=\"let tbl of tableConfigService.getVisibleTableConfigs(tableConfigs) ; let i = index\">\r\n <mat-tab *ngIf=\"testVisibleTab(tbl)\">\r\n\r\n <ng-template matTabLabel>\r\n <span>{{tbl.tabTitle ?? 'Untitled'}}</span>\r\n </ng-template>\r\n\r\n <spa-table-internal \r\n [config]=\"tbl\" \r\n [reload]=\"tableReload\" \r\n [inTab]=\"true\"\r\n [activeTab]=\"selectedTabIndex === i\"\r\n (actionSuccess)=\"tbl.causeFormRefresh ? loadData(formConfig.loadAction, false) : null\">\r\n </spa-table-internal>\r\n\r\n </mat-tab>\r\n </ng-container>\r\n\r\n </mat-tab-group>\r\n\r\n\r\n\r\n </div>\r\n\r\n </mat-dialog-content>\r\n\r\n\r\n </div>\r\n\r\n <mat-dialog-actions >\r\n\r\n <div>\r\n\r\n <button mat-raised-button [disabled]=\"isProcessing\" *ngIf=\"formConfig.mode=='create' && createButton\" color=\"primary\"\r\n (click)=\"create()\" cdkFocusInitial>{{createButton.display ?? 'Submit'}}\r\n </button>\r\n\r\n <button mat-raised-button [disabled]=\"isProcessing\" *ngIf=\"formConfig.mode=='edit' && editButton\" color=\"primary\"\r\n (click)=\"edit()\" cdkFocusInitial>{{editButton.display ?? 'Submit'}}\r\n </button>\r\n\r\n <ng-container *ngFor=\"let btn of extraButtons\">\r\n <button *ngIf=\"formConfig.mode !== 'create' && testVisible(details,btn.name)\" mat-stroked-button [disabled]=\"isProcessing || testDisabled(details,btn.name)\" [ngStyle]=\"{'color': getButtonColor(btn, details)}\" (click)=\"custom(btn)\" cdkFocusInitial>\r\n <mat-icon *ngIf=\"btn.icon\" [ngStyle]=\"{'color': getButtonColor(btn, details)}\">{{btn.icon.name}}</mat-icon>\r\n {{btn.display ?? btn.name | titlecase}}\r\n </button>\r\n </ng-container>\r\n\r\n <!-- Changed: Bottom close button now uses conditional display and custom text -->\r\n <button *ngIf=\"shouldShowBottomClose()\" mat-stroked-button color=\"primary\" (click)=\"close()\">{{getCloseText()}}</button>\r\n\r\n </div>\r\n\r\n <div class=\"col d-flex justify-content-end\" *ngIf=\"smallScreen\">\r\n <button mat-icon-button matTooltipPosition=\"above\" matTooltip=\"Delete\" [disabled]=\"isProcessing\" style=\"color: red;\" (click)=\"delete()\" *ngIf=\"formConfig.mode!='create' && deleteButton\"><mat-icon>delete</mat-icon></button>\r\n </div>\r\n\r\n\r\n </mat-dialog-actions>\r\n\r\n\r\n</div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import { Component, EventEmitter, Input, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { Action, Button, Color, Column, DetailsDialogConfig, FormConfig, Icon, TableConfig, ApiResponse } from '../../classes/Classes';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { DetailsDialog } from './detailsDialog.component';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { Core, DetailsDialogProcessor } from '../../classes/TinCore';\r\nimport { Subject } from 'rxjs';\r\nimport { ButtonService } from '../../services/button.service';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { TableConfigService } from '../../services/table-config.service';\r\nimport { ConditionService } from '../../services/condition.service';\r\nimport { AuthService } from '../../services/auth.service';\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(private dataService: DataServiceLib, private messageService: MessageService, private breakpointObserver: BreakpointObserver, public dialog: MatDialog,\r\n private buttonService: ButtonService, private dialogService: DialogService, private tableConfigService: TableConfigService, private conditionService: ConditionService, private authService: AuthService )\r\n {\r\n // detect screen size changes\r\n this.breakpointObserver.observe([\"(max-width: 600px)\"]).subscribe((result: BreakpointState) => {\r\n this.smallScreen = result.matches;\r\n this.updateTableConfiguration();\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n\r\n if (this.config?.formConfig) {\r\n this.hasFormAccess = Core.hasFormAccess( this.config.formConfig, this.authService.currentRoleSource.value );\r\n }\r\n\r\n if (this.hasFormAccess){\r\n this.initializeComponent();\r\n }\r\n\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n\r\n if (!this.config.loadAction && !this.config.searchConfig) {\r\n this.dataSource = this.data;\r\n this.tableDataSource = new MatTableDataSource<any>(this.dataSource);\r\n\r\n }\r\n\r\n if (this.inTab && changes['activeTab']) {\r\n if (!this.hasBeenActivated && this.activeTab && this.config?.lazyLoad && this.config.loadAction) {\r\n this.loadData(this.config.loadAction, \"\");\r\n this.hasBeenActivated = true;\r\n }\r\n }\r\n\r\n setTimeout(() => { this.tableDataSource.paginator = this.tablePaginator; }, 1000)\r\n }\r\n\r\n\r\n\r\n elevation = \"mat-elevation-z5\";\r\n actionsWidth = \"50px\";\r\n showFilterButton = true;\r\n tileReload: Subject<boolean> = new Subject();\r\n hasBeenActivated = false; \r\n\r\n smallScreen = false\r\n hasFormAccess = true;\r\n\r\n //Table\r\n tableDataSource;\r\n dataSource: any[];\r\n displayedColumns = []\r\n displayedButtons = []\r\n originalTableLoadAction: Action\r\n\r\n @ViewChild('tablePaginator') tablePaginator: MatPaginator;\r\n\r\n @Input() data: any = [];\r\n @Input() tileData: any = [];\r\n @Input() config: TableConfig;\r\n @Input() reload: Subject<boolean>;\r\n @Input() activeTab = false;\r\n @Input() inTab = false;\r\n @Output() dataLoad = new EventEmitter();\r\n @Output() actionSuccess = new EventEmitter();\r\n @Output() refreshClick = new EventEmitter();\r\n @Output() searchClick = new EventEmitter();\r\n @Output() createClick = new EventEmitter();\r\n @Output() actionClick = new EventEmitter();\r\n @Output() inputChange = new EventEmitter();\r\n @Output() actionResponse = new EventEmitter();\r\n\r\n private initializeComponent() {\r\n this.updateTableConfiguration();\r\n this.setupDataLoading();\r\n this.formDefaults();\r\n this.originalTableLoadAction = { ...this.config.loadAction } //Core.getClone(this.config.loadAction);\r\n this.dataSource = this.data;\r\n this.tableDataSource = new MatTableDataSource<any>(this.dataSource);\r\n }\r\n\r\n private updateTableConfiguration() {\r\n this.elevation = this.getElevationClass(this.config?.elevation);\r\n this.displayedColumns = this.tableConfigService.setColumns(this.config, this.smallScreen);\r\n this.displayedButtons = this.tableConfigService.getDisplayedButtons(this.config?.buttons, this.smallScreen, this.config);\r\n this.actionsWidth = this.tableConfigService.getActionsWidth(this.displayedButtons, this.smallScreen, this.config);\r\n\r\n if (this.config?.searchConfig) {\r\n this.showFilterButton = false;\r\n }\r\n\r\n if (this.config?.showFilterButton === false) {\r\n this.showFilterButton = false;\r\n }\r\n\r\n }\r\n\r\n private setupDataLoading() {\r\n\r\n if (this.config.lazyLoad && this.inTab) return;\r\n\r\n if (this.config.loadAction) {\r\n this.loadData(this.config.loadAction, \"\");\r\n }\r\n\r\n if (this.reload) {\r\n this.reload.subscribe(v => {\r\n if (v && this.config?.loadAction) {\r\n this.loadData(this.config.loadAction, \"\");\r\n }\r\n });\r\n }\r\n }\r\n\r\n loadData(action: Action, data: any) {\r\n\r\n //if searchConfig is set, use last search\r\n\r\n\r\n if (action.method == 'post') {\r\n if (this.config.searchConfig) {\r\n if (!this.lastSearch) return;\r\n data = this.lastSearch;\r\n }\r\n }\r\n\r\n\r\n if (action) {\r\n\r\n this.dataService.CallApi(action, data).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (this.config.logResponse) {\r\n console.log(apiResponse)\r\n }\r\n\r\n if (apiResponse.success) {\r\n this.dataSource = apiResponse.data\r\n this.tableDataSource = new MatTableDataSource(apiResponse.data);\r\n this.tableDataSource.paginator = this.tablePaginator;\r\n\r\n this.dataLoaded(apiResponse.data);\r\n\r\n if (apiResponse.message != \"success\" && apiResponse.message != \"\"){\r\n this.messageService.toast(apiResponse.message);\r\n }\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 inputChanged(event) {\r\n this.inputChange.emit({ field: event.field, value: event.value })\r\n }\r\n\r\n formDefaults() {\r\n\r\n if (!this.config.formConfig) {\r\n let config = new FormConfig\r\n\r\n config.fields = []\r\n\r\n this.config.columns.forEach(column => {\r\n\r\n let field = { name: column.name, type: column.type }\r\n config.fields.push(field)\r\n\r\n });\r\n\r\n this.config.formConfig = config;\r\n }\r\n }\r\n\r\n setButtons(){\r\n if (!this.config.buttons) return\r\n if (!this.smallScreen){\r\n this.displayedButtons = this.config.buttons;\r\n }else{\r\n this.displayedButtons = this.config.buttons;\r\n }\r\n }\r\n\r\n getButton(name: string) {\r\n return this.buttonService.getButton(this.config.buttons, name);\r\n }\r\n\r\n getIcon(buttonName: string) {\r\n const button = this.getButton(buttonName);\r\n return this.buttonService.getIcon(button, this.config);\r\n }\r\n\r\n getButtonColor(button: Button, row) {\r\n return this.buttonService.getButtonColor(button, row);\r\n }\r\n\r\n getOptions(column){\r\n let x = this.config.columns.find(opt => opt.name === column);\r\n return x\r\n }\r\n\r\n getColor(value: any, options: any[]): string {\r\n return this.conditionService.getColor(value, options);\r\n }\r\n\r\n testIconCondition(row: any, icon: Icon): boolean {\r\n return this.conditionService.testIconCondition(icon, row);\r\n }\r\n\r\n testColorCondition(row: any, color: Color): boolean {\r\n return this.conditionService.testColorCondition(color, row);\r\n }\r\n\r\n showBanner(message: string) {\r\n if (message && message !== '') {\r\n this.messageService.info(message);\r\n }\r\n }\r\n\r\n testDisabled(row, buttonName: string): boolean {\r\n const button = this.getButton(buttonName);\r\n return this.buttonService.testDisabled(button, row);\r\n }\r\n\r\n // testVisible(row, buttonName: string): boolean {\r\n // const button = this.getButton(buttonName);\r\n // return this.buttonService.testVisible(button, row, this.config);\r\n // }\r\n\r\n\r\n\r\n //Events\r\n lastSearch\r\n searchClicked(x){\r\n this.searchClick.emit(x);\r\n this.lastSearch = x;\r\n\r\n if (this.config.searchConfig.searchAction){\r\n this.config.loadAction = { ...this.config.searchConfig.searchAction } //Core.getClone(this.config.searchConfig.searchAction);\r\n this.originalTableLoadAction = { ...this.config.searchConfig.searchAction } //Core.getClone(this.config.searchConfig.searchAction);\r\n this.loadData(this.config.loadAction, x);\r\n }\r\n }\r\n\r\n tileClicked(tile){\r\n this.config.loadAction = { ...tile.data.action } //Core.getClone(tile.data.action);\r\n this.refreshClicked();\r\n }\r\n\r\n tileUnClicked(tile) {\r\n this.config.loadAction = { ...this.originalTableLoadAction } //Core.getClone(this.originalTableLoadAction);\r\n this.refreshClicked();\r\n }\r\n\r\n refreshClicked() {\r\n this.refreshClick.emit();\r\n\r\n if (this.config.loadAction) {\r\n\r\n this.loadData(this.config.loadAction,\"\");\r\n }else{\r\n this.dataLoad.emit();\r\n }\r\n }\r\n\r\n dataLoaded(x) {\r\n this.dataLoad.emit(x)\r\n\r\n if (this.config.tileConfig?.loadAction) {\r\n this.tileReload.next(true);\r\n }\r\n\r\n }\r\n\r\n actionClicked(name: string, row: any) {\r\n\r\n const button = this.getButton(name);\r\n \r\n if (button?.onClick) {\r\n button.onClick(row);\r\n }\r\n\r\n if (name === 'view') {\r\n this.viewModel(row);\r\n } else if (name === 'edit') {\r\n this.editModel(row);\r\n } else if (name === 'delete') {\r\n this.deleteModel(row);\r\n } else {\r\n this.customModel(name, row);\r\n }\r\n }\r\n\r\n\r\n //Dialog events\r\n columnClicked(column : Column, row){\r\n if (column.detailsConfig) {\r\n const button : Button = { name: column.name, dialog: true, detailsConfig: column.detailsConfig }\r\n this.open(button, row, );\r\n } else {\r\n this.actionClickedEmit(column.name, row);\r\n }\r\n }\r\n\r\n customModel(name, row) {\r\n const button = this.getButton(name);\r\n this.open(button, row);\r\n }\r\n\r\n\r\n actionClickedEmit(name, row) {\r\n this.actionClick.emit({name:name,data : row});\r\n }\r\n\r\n viewModel(row) {\r\n const button = this.getButton('view');\r\n this.open(button, row);\r\n }\r\n\r\n newModel() {\r\n const button = this.getButton('create');\r\n this.open(button, null);\r\n }\r\n\r\n editModel(row) {\r\n let button = this.getButton('edit');\r\n this.open(button, row);\r\n }\r\n\r\n private open(button: Button, row: any | null ): void {\r\n\r\n const buttonName = button.name\r\n\r\n let btn : Button = { ...button,\r\n detailsConfig: button.detailsConfig ?? {\r\n ...button.detailsConfig,\r\n formConfig: this.config.formConfig,\r\n stepConfig: this.config.stepConfig,\r\n buttons: this.config.buttons,\r\n heroField: this.config.heroField,\r\n heroValue: this.config.heroValue,\r\n }\r\n }\r\n\r\n\r\n this.dialogService.openConfiguredDetailsDialog(btn, row, DetailsDialog, ).subscribe(result => {\r\n if (result.action === 'doAction') {\r\n this.doAction(result.name, result.row);\r\n this.actionClickedEmit(result.name, result.row);\r\n } else if (result.action === 'inputChange') {\r\n this.inputChanged(result.change);\r\n } else if (result.message === 'success') {\r\n this.actionClickedEmit(buttonName, result.data);\r\n this.actionResponse.emit({ name: buttonName, data: result.data });\r\n this.refreshClicked();\r\n this.actionSuccess.emit();\r\n\r\n if (buttonName == 'create' && btn.editOnSuccess) {\r\n this.editModel(result.data.data);\r\n }\r\n\r\n if (btn.onSuccessButton){\r\n this.open(btn.onSuccessButton, result.data.data);\r\n }\r\n\r\n } else if (result.message === 'emit') {\r\n this.actionClickedEmit(buttonName, result.data);\r\n }\r\n });\r\n }\r\n\r\n deleteModel(row) {\r\n\r\n let button = this.getButton('delete');\r\n if (!button) return;\r\n\r\n let confirmMessage = this.buttonService.getConfirmMessage(button, row);\r\n if (!confirmMessage) {\r\n confirmMessage = `Are you sure you want to delete ?`;\r\n }\r\n\r\n this.messageService.confirm(confirmMessage).subscribe((result) => {\r\n if (result == \"yes\") {\r\n this.actionClickedEmit('delete', row)\r\n this.doAction(button.name,row);\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n //Actions\r\n doAction(buttonName: string, row) {\r\n\r\n let b = this.getButton(buttonName)\r\n\r\n if (!b) return;\r\n if (!b.action) return;\r\n\r\n if (b.setHeroField && this.config.heroValue) {\r\n row[this.config.heroField] = this.config.heroValue;\r\n }\r\n\r\n if (b.confirm && b.name != \"delete\") {\r\n const confirmMessage = this.buttonService.getConfirmMessage(b, row);\r\n this.messageService.confirm(confirmMessage).subscribe((result) => {\r\n if (result == \"yes\") {\r\n this.execAction(b,row)\r\n }\r\n });\r\n }else{\r\n this.execAction(b, row)\r\n }\r\n\r\n }\r\n\r\n execAction(button: Button, row){\r\n this.dataService.CallApi(button.action, row).subscribe((apiResponse : ApiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n\r\n if (apiResponse.message.includes(\"approval\") || apiResponse.message.includes(\"approve\") || apiResponse.message.includes(\"decline\")) {\r\n this.messageService.toast(apiResponse.message);\r\n }else if (button.action.successMessage) {\r\n this.messageService.toast(button.action.successMessage);\r\n } else if (apiResponse.message != \"success\" && apiResponse.message != \"\") {\r\n this.messageService.toast(apiResponse.message);\r\n } else {\r\n this.messageService.toast(\"Updated\");\r\n }\r\n\r\n this.refreshClicked();\r\n this.actionSuccess.emit();\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n\r\n this.actionResponse.emit({name:button.name, data:apiResponse});\r\n },\r\n (error) => {\r\n this.messageService.toast(\"Error: \" + error);\r\n }\r\n );\r\n }\r\n\r\n\r\n //Misc\r\n private getElevationClass(elevation: string): string {\r\n\r\n if (elevation == \"none\"){\r\n return \"\"\r\n }\r\n else if (elevation == \"low\"){\r\n return \"mat-elevation-z1\"\r\n }\r\n else if (elevation == \"medium\"){\r\n return \"mat-elevation-z5\"\r\n }\r\n else if (elevation == \"high\"){\r\n return \"mat-elevation-z9\"\r\n }\r\n else{\r\n return \"mat-elevation-z5\"\r\n }\r\n\r\n }\r\n\r\n}\r\n","\r\n<ng-container *ngIf=\"hasFormAccess\">\r\n\r\n <!-- Search -->\r\n <spa-search\r\n *ngIf=\"config.searchConfig\" [config]=\"config.searchConfig\" [smallScreen]=\"smallScreen\" [tableDataSource]=\"tableDataSource\" style=\"margin-bottom: 20px;\" (searchClick)=\"searchClicked($event)\">\r\n </spa-search>\r\n\r\n <!-- Header -->\r\n <app-table-header\r\n [config]=\"config\" [data]=\"dataSource\" [tableDataSource]=\"tableDataSource\" [tileConfig]=\"config.tileConfig\" [tileData]=\"tileData\" [tileReload]=\"tileReload\" [lastSearch]=\"lastSearch\" [smallScreen]=\"smallScreen\"\r\n [showFilterButton]=\"showFilterButton\" (createClick)=\"newModel()\" (customClick)=\"customModel($event,null)\"\r\n (refreshClick)=\"refreshClicked()\" (tileClick)=\"tileClicked($event)\" (tileUnClick)=\"tileUnClicked($event)\">\r\n </app-table-header>\r\n\r\n\r\n <!-- Table -->\r\n <div *ngIf=\"!config.viewType || config?.viewType === 'table'\">\r\n\r\n <p *ngIf=\"!config\"><em>Configure Table</em></p>\r\n <p *ngIf=\"!dataSource\"><em>Loading...</em></p>\r\n\r\n <div *ngIf=\"dataSource && (!smallScreen || (smallScreen && dataSource?.length > 0))\">\r\n\r\n <table mat-table [dataSource]=\"tableDataSource\" [ngClass]=\"elevation\">\r\n\r\n <ng-container *ngFor=\"let column of config.columns\" [matColumnDef]=\"column.name\">\r\n <th mat-header-cell *matHeaderCellDef >{{ column.alias ?? column.name | camelToWords }}</th>\r\n <td mat-cell *matCellDef=\"let row;\" class=\"right-padding\" >\r\n\r\n <!-- Rows -->\r\n <app-table-row [column]=\"column\" [row]=\"row\" [config]=\"config\" [smallScreen]=\"smallScreen\"\r\n (actionClick)=\"actionClicked(column.name, row)\" (columnClick)=\"columnClicked(column, row)\" (showBannerEvent)=\"showBanner($event)\">\r\n </app-table-row>\r\n\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"action\">\r\n <th mat-header-cell *matHeaderCellDef> Action </th>\r\n <td mat-cell *matCellDef=\"let row\" [ngStyle]=\"{width:false ? '50px' : actionsWidth}\">\r\n <div class=\"action-buttons-container\">\r\n\r\n <!-- Actions -->\r\n <app-table-action\r\n [displayedButtons]=\"displayedButtons\" [config]=\"config\" [smallScreen]=\"smallScreen\" [row]=\"row\" (actionClick)=\"actionClicked($event.name, $event.row)\">\r\n </app-table-action>\r\n\r\n </div>\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': (config.greyOut && config.greyOut(row)) || row.pendingApproval}\"></tr>\r\n </table>\r\n\r\n </div>\r\n\r\n <mat-paginator *ngIf=\"dataSource && (!smallScreen || (smallScreen && dataSource?.length > 0))\" #tablePaginator [pageSizeOptions]=\"config.pageSizes ?? [10, 20, 50]\" showFirstLastButtons></mat-paginator>\r\n\r\n </div>\r\n \r\n <!-- Capsules -->\r\n <spa-capsules *ngIf=\"config?.viewType === 'capsule'\"\r\n [config]=\"config\"\r\n [dataSource]=\"dataSource\"\r\n [displayedButtons]=\"displayedButtons\"\r\n (actionClick)=\"actionClicked($event.name, $event.row)\">\r\n </spa-capsules>\r\n\r\n\r\n <!-- Cards -->\r\n <spa-cards *ngIf=\"config?.viewType === 'card'\"\r\n [config]=\"config\"\r\n [dataSource]=\"dataSource\"\r\n [displayedButtons]=\"displayedButtons\"\r\n [smallScreen]=\"smallScreen\"\r\n (actionClick)=\"actionClicked($event.name, $event.row)\"\r\n (columnClick)=\"columnClicked($event.column, $event.row)\"\r\n (showBannerEvent)=\"showBanner($event)\">\r\n </spa-cards>\r\n\r\n\r\n <div class=\"tin-center\">\r\n <p *ngIf=\"dataSource?.length == 0\"><em>{{config.noDataMessage ?? 'No Data'}}</em></p>\r\n </div>\r\n\r\n</ng-container>\r\n\r\n\r\n<ng-container *ngIf=\"!hasFormAccess\">\r\n <div class=\"tin-center\">\r\n <p><em>Access Restricted</em></p>\r\n </div>\r\n</ng-container>\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ApiResponse, TableConfig } from '../../classes/Classes';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'spa-invitations-table',\r\n templateUrl: './invitations-table.component.html',\r\n styleUrls: ['./invitations-table.component.css']\r\n})\r\nexport class InvitationsTableComponent implements OnInit {\r\n\r\n constructor(public dataService: DataServiceLib, private messageService: MessageService, public authService: AuthService) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n invActionClicked(x) {\r\n\r\n let message = \"Accept\"\r\n let action = \"accept\"\r\n if (x.name == \"decline\") {\r\n action = \"remove\";\r\n message = \"Decline\"\r\n }\r\n\r\n\r\n\r\n //accept / decline\r\n this.messageService.confirm(`${message} membership to organisation (${x.data.tenantName}) ?`).subscribe((result) => {\r\n\r\n if (result == \"yes\") {\r\n this.dataService.CallApi({ url: 'members/dto?action=' + action, method: 'post', }, x.data).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.tableReload.next(true)\r\n this.messageService.toast(\"Updated Successfully\");\r\n\r\n // switch\r\n this.messageService.confirm(`Switch to organisation (${x.data.tenantName}) now ?`).subscribe((result) => {\r\n if (result == \"yes\") {\r\n\r\n let tenant = {tenantID : x.data.tenantID}\r\n\r\n this.dataService.CallApi({ url: 'tenants/dto?action=switch', method: 'post' }, tenant).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"Switched Successfully, please login again\");\r\n this.authService.logoff();\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 tableReload: Subject<boolean> = new Subject();\r\n invitationsTableConfig: TableConfig = {\r\n\r\n greyOut: (value) => value.accepted == false,\r\n elevation: 'low',\r\n minColumns: ['tenantName'],\r\n minButtons: ['accept', 'decline'],\r\n flatButtons : true,\r\n\r\n columns: [\r\n { name: 'tenantName', alias: 'Organisation', type: 'text' },\r\n { name: 'ownerName', type: 'text', },\r\n ],\r\n\r\n buttons: [\r\n { name: 'accept', icon: { 'name': 'done', }, color: 'green', confirm: { message: 'Accept ?' }, disabled: (x) => x.accepted },\r\n { name: 'decline', icon: { 'name': 'close', }, color: 'red', confirm: { message: 'Decline ?' }, disabled: (x) => x.accepted },\r\n ],\r\n\r\n loadAction: { url: 'tenants/invitations/x' },\r\n\r\n }\r\n}\r\n","<spa-table [config]=\"invitationsTableConfig\" (actionClick)=\"invActionClicked($event)\" [reload]=\"tableReload\"></spa-table>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormConfig, TableConfig, ApiResponse, DetailsDialogConfig, Field } from '../../classes/Classes';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'spa-tenant-settings',\r\n templateUrl: './tenant-settings.component.html',\r\n styleUrls: ['./tenant-settings.component.css']\r\n})\r\nexport class TenantSettingsComponent implements OnInit {\r\n\r\n constructor(public dataService: DataServiceLib, private messageService: MessageService, public authService: AuthService, public dialog: MatDialog ) { }\r\n\r\n ngOnInit(): void {\r\n this.authService.myRoleObserv.subscribe(rol => this.myRole = rol);\r\n this.loadData();\r\n this.loadTenants()\r\n }\r\n\r\n newName;\r\n\r\n myRole\r\n tenants;\r\n currTenant;\r\n currentTenantID;\r\n plan;\r\n ownTenant;\r\n roles = [\r\n { roleName: 'Default', roleID: 1 },\r\n ]\r\n\r\n loadData(){\r\n this.dataService.CallApi({ url: 'tenants/meta/x' }, \"\").subscribe((apiResponse: ApiResponse) => {\r\n this.currTenant = apiResponse.data.tenant;\r\n this.currentTenantID = apiResponse.data.currentTenantID;\r\n this.plan = apiResponse.data.plan;\r\n this.ownTenant = apiResponse.data.ownTenant\r\n this.membersFormConfig.fields.find(x => x.name == 'roleID').options = apiResponse.data.roles;\r\n });\r\n }\r\n\r\n loadTenants() {\r\n this.dataService.CallApi({ url: 'tenants/meta_tenants/x' }, \"\").subscribe((apiResponse: ApiResponse) => {\r\n this.tenants = apiResponse.data.tenants;\r\n });\r\n }\r\n\r\n\r\n updateTenant(x){\r\n\r\n if (x.name == \"edit\" && x.data.success ) {\r\n if (x.data.data.tenantID == this.currentTenantID){\r\n this.authService.updateTenantName(x.data.data.name)\r\n }\r\n this.refreshOrgsLists();\r\n }\r\n\r\n if (x.name == \"login\" && x.data.success) {\r\n this.forceLogin();\r\n }\r\n\r\n if (x.name == \"leave\" && x.data.success) {\r\n this.refreshOrgsLists();\r\n }\r\n }\r\n\r\n refreshOrgsLists(){\r\n this.loadTenants();\r\n }\r\n\r\n switchTenant() {\r\n\r\n this.messageService.confirm(`Switch Organisation ?`).subscribe((result) => {\r\n if (result == \"yes\") {\r\n\r\n this.currTenant.tenantID = this.currentTenantID;\r\n\r\n this.dataService.CallApi({ url: 'tenants/dto?action=switch', method: 'post' }, this.currTenant).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.forceLogin()\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n forceLogin(){\r\n this.messageService.toast(\"Switched Successfully, please login again\");\r\n this.authService.logoff();\r\n }\r\n\r\n\r\n\r\n\r\n //Members\r\n\r\n roleField: Field = { name: 'roleID', type: 'select', required: true, span : true, options: this.roles, optionDisplay: 'roleName', optionValue: 'roleID', defaultFirstValue: true }\r\n\r\n inviteDialogConfig: DetailsDialogConfig = {\r\n formConfig: {\r\n title: 'Add Member',\r\n fixedTitle: true,\r\n fields: [\r\n { name: 'email', type: 'text', required: true, span: true },\r\n { name: 'firstName', type: 'text', required: true, min: 2, },\r\n { name: 'lastName', type: 'text', required: true, min: 2, },\r\n this.roleField,\r\n ]\r\n },\r\n mode: 'create',\r\n buttons: [\r\n { name: 'create', action: { url: 'members/dto?action=invite', method: 'post', successMessage: 'Updated successfully' } }\r\n ]\r\n };\r\n\r\n membersFormConfig: FormConfig = {\r\n\r\n title : 'Member Access',\r\n alertConfig : {messages :[ {type : 'warn', content : 'You can amend the member\\'s role here'}] },\r\n fields: [\r\n { name: 'email', type: 'text',readonly: true, span: true },\r\n { name: 'firstName', type: 'text', readonly: true },\r\n { name: 'lastName', type: 'text', readonly: true },\r\n this.roleField,\r\n ],\r\n\r\n }\r\n\r\n tableReload: Subject<boolean> = new Subject();\r\n membersTableConfig: TableConfig = {\r\n\r\n greyOut : (value) => value.accepted == false,\r\n elevation: 'low',\r\n logResponse : true,\r\n minColumns: ['memberName'],\r\n minButtons: ['edit','remove'],\r\n flatButtons: true,\r\n\r\n columns: [\r\n { name: 'memberName', type: 'text', icons : [\r\n { name: 'schedule', tip : 'Waiting for user to accept invitation', condition: x => !x.accepted }\r\n ] },\r\n { name: 'email', type: 'text' },\r\n { name: 'roleName', alias : 'Role', type: 'text'},\r\n ],\r\n\r\n buttons: [\r\n { name: 'create', display: 'Add Member', dialog : true, detailsConfig: this.inviteDialogConfig },\r\n { name: 'edit', icon: { name: 'security' }, tip : 'Edit Access', dialog: true, action: { url: 'members/dto?action=role', method: 'post' }, },\r\n { name: 'remove', icon: { name: 'close', color : 'red' }, tip : 'Remove Member', confirm: { message: 'Remove Member from this Organisation ?' }, action: { url: 'members/dto?action=remove', method: 'post' }, disabled : x => x.own },\r\n ],\r\n\r\n loadAction: { url: 'members/all/x' },\r\n\r\n formConfig: this.membersFormConfig,\r\n }\r\n\r\n\r\n\r\n //Organsations\r\n\r\n orgFormConfig: FormConfig = {\r\n fixedTitle: true,\r\n fields: [\r\n { name: 'name', type: 'text', required: true, min: 2 },\r\n ]\r\n }\r\n createOrgDialogConfig: DetailsDialogConfig = {\r\n formConfig: {...this.orgFormConfig, title: 'New Organisation'},\r\n mode: 'create',\r\n buttons: [\r\n { name: 'create', action: { url: 'tenants/dto?action=create', method: 'post', successMessage: 'Created successfully' } }\r\n ]\r\n };\r\n\r\n renameOrgDialogConfig: DetailsDialogConfig = {\r\n formConfig: {\r\n ...this.orgFormConfig,\r\n title: 'Organisation Details',\r\n fields: [\r\n ...this.orgFormConfig.fields,\r\n { name: 'companyDetails', type: 'section', },\r\n { name: 'companyName', type: 'text', required: true, span: true, alias: 'Company Name' },\r\n { name: 'address', type: 'text', required: true, rows : 3, span: true },\r\n { name: 'phone', type: 'text', required: true },\r\n { name: 'email', type: 'text', required: true }\r\n ]\r\n\r\n },\r\n mode: 'edit',\r\n buttons: [\r\n { name: 'edit', action: { url: 'tenants?action=edit', method: 'post', successMessage: 'Renamed successfully' } }\r\n ]\r\n }\r\n\r\n orgsReload: Subject<boolean> = new Subject();\r\n orgsTableConfig: TableConfig = {\r\n\r\n greyOut: (value) => value.accepted == false,\r\n elevation: 'low',\r\n minColumns: ['name'],\r\n minButtons: ['login','edit','leave'],\r\n flatButtons: true,\r\n collapseButtons : true,\r\n\r\n columns: [\r\n { name: 'name', alias : 'Organisation', type: 'text', icons: [{ name: 'radio_button_checked', tip : 'Current Organisation', color: 'green', condition: x => x.tenantID == this.currentTenantID }] },\r\n { name: 'ownerName', type: 'text', alias: 'Owner' },\r\n ],\r\n\r\n buttons: [\r\n { name: 'create', display: 'New Organisation', dialog: true, detailsConfig: this.createOrgDialogConfig },\r\n {\r\n name: 'login', display: 'Switch to this Organisation', confirm: { message: 'Switch to this Organisation ?' }, action: { url: 'tenants/dto?action=switch', method: 'post' }, icon: { name: 'login', },\r\n visible: x => x.tenantID != this.currentTenantID\r\n },\r\n {\r\n name: 'edit', display: 'Rename Organisation', dialog: true, detailsConfig: this.renameOrgDialogConfig ,\r\n visible: x => x.own\r\n },\r\n {\r\n name: 'leave', tip: 'Leave', icon: { name: 'directions_run', color : 'red'}, confirm: { message: 'Leave this Organisation ?' }, action: { url: 'members/dto?action=remove', method: 'post' } ,\r\n disabled : x => x.own\r\n },\r\n ],\r\n\r\n loadAction: { url: 'tenants/my_tenants/x' },\r\n\r\n }\r\n\r\n\r\n\r\n //Email\r\n mailerFormConfig: FormConfig = {\r\n fields: [\r\n { name: 'smtp', type: 'text', required: true, alias: 'SMTP Server' },\r\n { name: 'port', type: 'number', required: true, defaultValue: 587 },\r\n { name: 'address', type: 'text', required: true, alias: 'Email Address' },\r\n { name: 'display', type: 'text', required: true, alias: 'Display Name' },\r\n { name: 'password', type: 'password', required: true, span: true },\r\n\r\n { name: 'enableSsl', type: 'checkbox', alias: 'Enable SSL' },\r\n { name: 'isBodyHtml', type: 'checkbox', alias: 'HTML Body' },\r\n\r\n\r\n ]\r\n }\r\n\r\n mailerTableConfig: TableConfig = {\r\n showFilter: true,\r\n elevation: 'low',\r\n minColumns: ['smtp', 'address'],\r\n flatButtons: true,\r\n\r\n columns: [\r\n { name: 'smtp', type: 'text', alias: 'SMTP Server' },\r\n { name: 'port', type: 'number' },\r\n { name: 'address', type: 'text', alias: 'Email Address' },\r\n { name: 'display', type: 'text', alias: 'Display Name' },\r\n { name: 'enableSsl', type: 'checkbox', alias: 'SSL Enabled' },\r\n { name: 'isBodyHtml', type: 'checkbox', alias: 'HTML Body' },\r\n ],\r\n\r\n buttons: [\r\n { name: 'create', display: 'Configure Email', dialog: true, action: { url: 'mailerconfigs?action=create', method: 'post' } },\r\n { name: 'edit', dialog: true, action: { url: 'mailerconfigs?action=edit', method: 'post' } },\r\n { name: 'delete', dialog: true, action: { url: 'mailerconfigs?action=delete', method: 'post' } },\r\n ],\r\n\r\n loadAction: { url: 'mailerconfigs/all/x' },\r\n formConfig: this.mailerFormConfig\r\n }\r\n}\r\n","<div class=\"container\">\r\n\r\n <div>\r\n\r\n <label class=\"title\" >Organisation Details</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n\r\n <div *ngIf=\"currTenant && plan\" class=\"mb-2 mt-3 tin-grid\" style=\" font-size: 14px;\">\r\n\r\n <div class=\"tin-col mb-3\" style=\"max-width: 500px;\">\r\n <spa-select display=\"Current Organisation\" [options]=\"tenants\" optionDisplay=\"name\" optionValue=\"tenantID\" [(value)]=\"currentTenantID\"\r\n hint=\"You are required to login again after switching organisations.\" style=\"min-width: 300px;margin-bottom: 10px;\"></spa-select>\r\n <button mat-stroked-button color=\"primary\" [disabled]=\"currentTenantID == currTenant.tenantID\" (click)=\"switchTenant()\">Switch</button>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <ng-container *ngIf=\"ownTenant\" >\r\n <!-- Members -->\r\n <div class=\"mt-3\" >\r\n\r\n <label class=\"title\" >Members</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Invite other users to join your organisation as partners or employees to form a partnership or company.</label>\r\n\r\n <spa-table [config]=\"membersTableConfig\" [reload]=\"tableReload\" ></spa-table>\r\n\r\n </div>\r\n\r\n\r\n<!-- My Organisations -->\r\n <div class=\"mt-3\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\" >My Organisations</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Organisations that you are a member of.</label>\r\n\r\n <spa-table [config]=\"orgsTableConfig\" [reload]=\"orgsReload\" (actionResponse)=\"updateTenant($event)\"></spa-table>\r\n\r\n </div>\r\n\r\n\r\n <!-- My Invitations -->\r\n <div class=\"mt-3\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\">My Invitations</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Requests for you to join other organisations.</label>\r\n\r\n\r\n <spa-invitations-table></spa-invitations-table>\r\n\r\n </div>\r\n\r\n <!-- Billing -->\r\n <div class=\"mt-3\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\" >Billing and Subscription</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n\r\n <div *ngIf=\"currTenant && plan\" class=\"mb-1 mt-3\" style=\"max-width: 300px; font-size: 14px;\">\r\n <spa-label display=\"Plan\" [value]=\"plan.name\"></spa-label>\r\n <spa-label display=\"Next Payment\" format=\"money\" [value]=\"plan.price\"></spa-label>\r\n <spa-label display=\"Due Date\" format=\"date\" value=\"2024-01-01\"></spa-label>\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- Email -->\r\n <div class=\"mt-3 mb-5\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\">Email Configuration</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Configure email settings for sending notifications.</label>\r\n\r\n <spa-table [config]=\"mailerTableConfig\"></spa-table>\r\n\r\n </div>\r\n\r\n\r\n </ng-container>\r\n\r\n\r\n\r\n</div>\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { FormConfig, TableConfig, ApiResponse } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-tenants',\r\n templateUrl: './tenants.component.html',\r\n styleUrls: ['./tenants.component.css']\r\n})\r\nexport class TenantsComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private messageService: MessageService, public authService: AuthService) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n\r\n\r\n tenantFormConfig: FormConfig = {\r\n\r\n fields: [\r\n { name: 'name', type: 'text', required: true, min: 2 },\r\n { name: 'planID', alias :'Plan', type: 'number', required: true },\r\n ],\r\n\r\n reset: true,\r\n\r\n }\r\n\r\n tenantsTableConfig: TableConfig = {\r\n showFilter: true,\r\n minColumns: ['name'],\r\n flatButtons: true,\r\n\r\n columns: [\r\n { name: 'tenantID', type: 'number', alias: 'ID' },\r\n { name: 'name', type: 'text' },\r\n { name: 'planName', alias : 'Plan', type: 'text' },\r\n\r\n ],\r\n\r\n buttons: [\r\n { name: 'create', display: 'Create', dialog: true, action: { url: 'tenants?action=create', method: 'post' }},\r\n { name: 'view', dialog: true },\r\n { name: 'edit', dialog: true, action: { url: 'tenants?action=edit', method: 'post' } },\r\n { name: 'delete', dialog: true, action: { url: 'tenants?action=delete', method: 'post' } },\r\n ],\r\n\r\n loadAction: { url: 'tenants/all_tenants/x' },\r\n\r\n formConfig: this.tenantFormConfig\r\n\r\n }\r\n}\r\n","<h4>Tenants</h4>\r\n<hr>\r\n\r\n\r\n<div class=\" mt-3\" style=\" font-size: 14px;\">\r\n <spa-table [config]=\"tenantsTableConfig\" ></spa-table>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'spa-bug',\r\n templateUrl: './bug.component.html',\r\n styleUrls: ['./bug.component.css']\r\n})\r\nexport class BugComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<p>Report a fault</p>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormConfig, TableConfig } from '../../classes/Classes';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-membership',\r\n templateUrl: './membership.component.html',\r\n styleUrls: ['./membership.component.css']\r\n})\r\nexport class MembershipComponent implements OnInit {\r\n\r\n constructor( public authService: AuthService) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n formConfig: FormConfig = {\r\n\r\n fields: [\r\n { name: 'tenantName', type: 'text', required: true, readonly: true },\r\n { name: 'memberName', type: 'text', required: true, min: 2, readonly: true },\r\n\r\n ],\r\n\r\n reset: true,\r\n }\r\n\r\n membersTableConfig: TableConfig = {\r\n showFilter: true,\r\n minColumns: ['memberName','tenantName', 'roleName'],\r\n flatButtons: true,\r\n\r\n columns: [\r\n { name: 'tenantName', type: 'text' },\r\n { name: 'memberName', type: 'text' },\r\n { name: 'roleName', type: 'text' },\r\n { name: 'status', type: 'text' },\r\n ],\r\n\r\n buttons: [\r\n // { name: 'create', display: 'Create', dialog: true, action: { url: 'members?action=create', method: 'post' } },\r\n { name: 'view', dialog: true },\r\n { name: 'edit', dialog: true, action: { url: 'members?action=edit', method: 'post' } },\r\n { name: 'delete', dialog: true, action: { url: 'members?action=delete', method: 'post' } },\r\n ],\r\n\r\n loadAction: { url: 'members/every/x' },\r\n\r\n formConfig: this.formConfig\r\n }\r\n}\r\n","<h4>Membership</h4>\r\n<hr>\r\n\r\n\r\n<div class=\"mt-3\" style=\" font-size: 14px;\">\r\n <spa-table [config]=\"membersTableConfig\"></spa-table>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormConfig, TableConfig } from '../../classes/Classes';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-plans',\r\n templateUrl: './plans.component.html',\r\n styleUrls: ['./plans.component.css']\r\n})\r\nexport class PlansComponent implements OnInit {\r\n\r\n constructor(public authService: AuthService) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n formConfig: FormConfig = {\r\n\r\n fields: [\r\n { name: 'name', type: 'text', required: true, min: 2, span : true },\r\n { name: 'description', type: 'text', required: true, min: 2, span: true },\r\n { name: 'price', type: 'money', required: true, span: true },\r\n ],\r\n\r\n reset: true,\r\n }\r\n\r\n plansTableConfig: TableConfig = {\r\n showFilter: true,\r\n minColumns: ['name'],\r\n flatButtons: true,\r\n\r\n columns: [\r\n { name: 'planID', type: 'text' },\r\n { name: 'name', type: 'text' },\r\n { name: 'price', type: 'money' },\r\n\r\n ],\r\n\r\n buttons: [\r\n { name: 'create', display: 'Create', dialog: true, action: { url: 'plans?action=create', method: 'post' } },\r\n { name: 'view', dialog: true },\r\n { name: 'edit', dialog: true, action: { url: 'plans?action=edit', method: 'post' } },\r\n { name: 'delete', dialog: true, action: { url: 'plans?action=delete', method: 'post' } },\r\n ],\r\n\r\n loadAction: { url: 'plans/all/x' },\r\n\r\n formConfig: this.formConfig\r\n\r\n }\r\n\r\n}\r\n","<h4>Plans</h4>\r\n<hr>\r\n\r\n\r\n<div class=\"mt-3\" style=\" font-size: 14px;\">\r\n <spa-table [config]=\"plansTableConfig\"></spa-table>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { ApiResponse, FormConfig, TableConfig } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-customers',\r\n templateUrl: './customers.component.html',\r\n styleUrls: ['./customers.component.css']\r\n})\r\nexport class CustomersComponent implements OnInit {\r\n\r\n constructor(public dataService: DataServiceLib, public authService: AuthService) { }\r\n\r\n ngOnInit(): void {\r\n // this.loadTenants();\r\n }\r\n\r\n // loadTenants() {\r\n // this.dataService.CallApi({ url: 'tenant/available_tenants/x' }).subscribe((apiResponse: ApiResponse) => {\r\n // if (apiResponse.success) {\r\n // this.customerFormConfig.fields.find(x => x.name == 'customerTenantID').options = apiResponse.data;\r\n // }\r\n // });\r\n // }\r\n\r\n\r\n\r\n}\r\n","<h4>Customers</h4>\r\n<hr>\r\n\r\n\r\n<div class=\"mt-3\" style=\" font-size: 14px;\">\r\n <spa-table [config]=\"dataService.customersTableConfig\"></spa-table>\r\n</div>\r\n","//-------------------------------------------VIEW\r\n\r\nimport { Component, OnInit, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { LoaderService } from '../../services/loader.service';\r\nimport { ApiResponse } from '../../classes/Classes';\r\n\r\n// import { ApiResponse, DataServiceLib, MessageService } from 'projects/tin-spa/src/public-api';\r\n\r\n@Component({\r\n selector: 'app-quanityDiag',\r\n templateUrl: './quantityDialog.component.html',\r\n styleUrls: ['./inventory.component.css']\r\n})\r\nexport class quantityDialog implements OnInit {\r\n\r\n constructor(private loaderService: LoaderService,private messageService: MessageService, private dataService : DataServiceLib, private dialogRef: MatDialogRef<quantityDialog>, @Inject(MAT_DIALOG_DATA) public data) { }\r\n\r\n ngOnInit() {\r\n\r\n this.action = this.data.name;\r\n this.inv = this.data.data\r\n this.isLoadComplete = true;\r\n this.loaderService.isLoading.subscribe(x => this.isProcessing = x);\r\n\r\n }\r\n\r\n quantity = 0\r\n action;\r\n inv\r\n isLoadComplete: boolean = false;\r\n isProcessing: boolean = false;\r\n\r\n submit() {\r\n this.inv.quantity = this.quantity\r\n this.dataService.CallApi({ url: `general/inventory?action=${this.action}`, method: 'post' }, this.inv).subscribe((x : ApiResponse) => {\r\n\r\n if (x.success){\r\n this.dialogRef.close('success');\r\n } else {\r\n this.messageService.toast(x.message)\r\n }\r\n\r\n })\r\n }\r\n};\r\n\r\n\r\n\r\n","\r\n<h2 mat-dialog-title>{{data.name | titlecase}} {{inv.name}}</h2>\r\n<mat-dialog-content class=\"mat-typography\">\r\n\r\n<div class=\"tin-grid\" style=\"font-size:14px\">\r\n\r\n <spa-text display=\"Name\" [value]=\"inv.name\" [readonly]=\"true\"></spa-text>\r\n <spa-text display=\"Description\" [value]=\"inv.description\" [readonly]=\"true\"></spa-text>\r\n <spa-number display=\"Quantity\" [(value)]=\"quantity\" [hint]=\"'Quantity to ' + data.name\" ></spa-number>\r\n\r\n</div>\r\n\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions>\r\n<button mat-button [disabled]=\"isProcessing\" (click)=\"submit()\" cdkFocusInitial>Submit</button>\r\n<button mat-button cdkFocusInitial mat-dialog-close>Cancel</button>\r\n</mat-dialog-actions>\r\n\r\n\r\n\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { FormConfig, ListDialogConfig, TableConfig } from '../../classes/Classes';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'spa-list-dialog',\r\n templateUrl: './list-dialog.component.html',\r\n styleUrls: ['./list-dialog.component.css']\r\n})\r\nexport class ListDialogComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private dialogRef: MatDialogRef<ListDialogComponent>, @Inject(MAT_DIALOG_DATA) public data : ListDialogConfig) { }\r\n\r\n ngOnInit(): void {\r\n\r\n this.listConfig = this.data;\r\n this.formConfig.fields.find(x => x.name == 'listName').defaultValue = this.listConfig.listName;\r\n this.config.loadAction = { url: 'general/lists/' + this.listConfig.listName }\r\n // this.config.buttons.find(x => x.name == 'create').display = \"New \" + this.listConfig.name\r\n\r\n\r\n }\r\n\r\n clicked = false;\r\n\r\n actionClicked(){\r\n this.clicked = true;\r\n }\r\n\r\n close(){\r\n if (this.clicked){\r\n this.dialogRef.close(\"success\")\r\n }else{\r\n this.dialogRef.close(\"\")\r\n }\r\n }\r\n\r\n item: string = \"\";\r\n tableReload: Subject<boolean> = new Subject();\r\n\r\n\r\n listConfig: ListDialogConfig\r\n\r\n formConfig: FormConfig = {\r\n\r\n fields: [\r\n { name: 'name', type: 'text' },\r\n { name: 'listName', type: 'text', hidden : true },\r\n ],\r\n\r\n reset: true,\r\n }\r\n\r\n\r\n config: TableConfig = {\r\n\r\n showFilter : true,\r\n minColumns: ['name',],\r\n minButtons: ['edit'],\r\n elevation: 'none',\r\n\r\n columns: [\r\n { name: 'name', type: 'text' },\r\n ],\r\n\r\n buttons: [\r\n { name: 'create' , display : 'New', dialog: true, action: { url: 'general/lists?action=create', method: 'post' } },\r\n { name: 'edit', dialog: true, action: { url: 'general/lists?action=edit', method: 'post' } },\r\n { name: 'delete', dialog: true, action: { url: 'general/lists?action=delete', method: 'post' } },\r\n ],\r\n\r\n formConfig : this.formConfig\r\n\r\n }\r\n\r\n}\r\n","<div>\r\n\r\n <label style=\"font-size: 24px;\">{{listConfig?.title ?? 'List'}}</label>\r\n\r\n</div>\r\n\r\n<mat-dialog-content class=\"mat-typography\">\r\n\r\n <div style=\" font-size: 14px;\">\r\n <spa-table [config]=\"config\" [reload]=\"tableReload\" (actionClick)=\"actionClicked()\"></spa-table>\r\n </div>\r\n\r\n\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions>\r\n <button mat-button (click)=\"close()\" >Ok</button>\r\n</mat-dialog-actions>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { FormConfig, ListDialogConfig, TableConfig, ApiResponse } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { quantityDialog } from './quantityDialog.component';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Subject } from 'rxjs';\r\nimport { ListDialogComponent } from '../../components/list-dialog/list-dialog.component';\r\n\r\n\r\n@Component({\r\n selector: 'spa-inventory',\r\n templateUrl: './inventory.component.html',\r\n styleUrls: ['./inventory.component.css']\r\n})\r\nexport class InventoryComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private messageService: MessageService, public authService: AuthService, public dialog: MatDialog) { }\r\n\r\n ngOnInit(): void {\r\n this.loadData();\r\n }\r\n\r\n loadData(){\r\n this.dataService.CallApi({url :'general/lists/InventoryCategories'}).subscribe((apiResponse : ApiResponse) => {\r\n this.formConfig.fields.find(x => x.name == 'categoryID').options = apiResponse.data;\r\n })\r\n }\r\n\r\n reload: Subject<boolean> = new Subject();\r\n\r\n clicked(x){\r\n\r\n if (x.name == \"increase\" || x.name == \"decrease\"){\r\n this.comment(x)\r\n }\r\n }\r\n\r\n comment(x) {\r\n\r\n const dialogRef = this.dialog.open(quantityDialog, {\r\n width: \"900px\",\r\n data: x,\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n\r\n if (result == 'success') {\r\n this.reload.next(true);\r\n this.messageService.toast(\"Updated\")\r\n }\r\n });\r\n }\r\n\r\n cats() {\r\n\r\n let conf: ListDialogConfig = { title: \"Inventory Categories\", name : 'Category', listName : 'InventoryCategories'}\r\n\r\n const dialogRef = this.dialog.open(ListDialogComponent, {\r\n width: \"900px\",\r\n data: conf ,\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n\r\n if (result == 'success') {\r\n this.loadData()\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n formConfig: FormConfig = {\r\n\r\n fields: [\r\n { name: 'name', type: 'text' },\r\n { name: 'description', type: 'text' },\r\n { name: 'serial', type: 'text', hidden : true },\r\n { name: 'price', type: 'money', },\r\n { name: 'minQuantity', alias : 'Minimum Quantity', type: 'number' },\r\n { name: 'categoryID', alias : 'Category', type: 'select', optionDisplay : 'name', optionValue : 'listItemID', defaultFirstValue : true },\r\n\r\n ],\r\n\r\n reset: true,\r\n }\r\n\r\n config: TableConfig = {\r\n showFilter: true,\r\n minColumns: ['name', 'quantity'],\r\n minButtons: ['increase', 'decrease', 'edit'],\r\n flatButtons: true,\r\n\r\n columns: [\r\n { name: 'name', type: 'text' },\r\n { name: 'description', type: 'text' },\r\n { name: 'categoryName', alias : 'Category', type: 'text' },\r\n { name: 'quantity', type: 'number', icon :{name : 'warning', color : 'red', tip : 'Stock up', condition : x => x.quantity <= x.minQuantity} },\r\n { name: 'price', alias : 'Unit Price', type: 'money', },\r\n ],\r\n\r\n buttons: [\r\n { name: 'increase', icon: { name: 'add' }, color: 'green', },\r\n { name: 'decrease', icon: { name: 'remove' }, color: 'red', },\r\n { name: 'create', display: 'Create', dialog: true, action: { url: 'general/inventory?action=create', method: 'post' } },\r\n\r\n { name: 'edit', dialog: true, action: { url: 'general/inventory?action=edit', method: 'post' } },\r\n { name: 'delete', dialog: true, action: { url: 'general/inventory?action=delete', method: 'post' } },\r\n ],\r\n\r\n loadAction: { url: 'general/inventory/x' },\r\n\r\n formConfig: this.formConfig\r\n\r\n }\r\n\r\n\r\n}\r\n","<div class=\"d-flex align-items-center justify-content-between mt-0\" style=\"margin-left: 10px\">\r\n\r\n <label style=\"font-size: 16px;\">Inventory</label>\r\n\r\n <div >\r\n <button mat-mini-fab color=\"primary\" style=\"margin-right:1em;\" (click)=\"cats()\" matTooltip=\"Categories\" matTooltipPosition=\"above\"><mat-icon >category</mat-icon></button>\r\n </div>\r\n\r\n</div>\r\n<hr>\r\n\r\n\r\n<div class=\"mt-3\" style=\" font-size: 14px;\">\r\n <spa-table [config]=\"config\" (actionClick)=\"clicked($event)\" [reload]=\"reload\"></spa-table>\r\n</div>\r\n","//-------------------------------------------VIEW\r\n\r\nimport { Component, OnInit, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { FinAccount, ApiResponse } from '../../classes/Classes';\r\nimport { LoaderService } from '../../services/loader.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-quanityDiag',\r\n templateUrl: './accountDialog.component.html',\r\n styleUrls: ['./accounts.component.css']\r\n})\r\nexport class accountDialog implements OnInit {\r\n\r\n constructor(private loaderService: LoaderService, private messageService: MessageService, private dataService: DataServiceLib, private dialogRef: MatDialogRef<accountDialog>, @Inject(MAT_DIALOG_DATA) public data) { }\r\n\r\n ngOnInit() {\r\n this.action = this.data == null ? 'create' : 'edit'\r\n\r\n this.account = this.data ?? new FinAccount();\r\n this.isLoadComplete = true;\r\n\r\n this.loaderService.isLoading.subscribe(x => this.isProcessing = x );\r\n\r\n }\r\n\r\n action;\r\n account : FinAccount\r\n isLoadComplete: boolean = false;\r\n isProcessing: boolean = false;\r\n currencies = [\r\n { name: 'USD', value: 'USD' },\r\n { name: 'ZAR', value: 'ZAR' },\r\n { name: 'ZWL', value: 'ZWL' },\r\n ]\r\n\r\n submit() {\r\n\r\n this.dataService.CallApi({ url: `general/accounts?action=${this.action}`, method: 'post' }, this.account).subscribe((x : ApiResponse) => {\r\n\r\n if (x.success){\r\n this.dialogRef.close('success');\r\n } else {\r\n this.messageService.toast(x.message)\r\n }\r\n\r\n })\r\n }\r\n};\r\n\r\n\r\n\r\n","\r\n<h2 mat-dialog-title>{{action | titlecase}}</h2>\r\n<mat-dialog-content class=\"mat-typography\">\r\n\r\n<div class=\"tin-col\" style=\"font-size:14px\">\r\n\r\n <spa-text display=\"Name\" [(value)]=\"account.name\" ></spa-text>\r\n <spa-text display=\"Description\" [(value)]=\"account.description\" ></spa-text>\r\n <spa-select display=\"Currency\" [(value)]=\"account.currency\" [options]=\"currencies\" optionDisplay=\"name\" optionValue=\"value\"></spa-select>\r\n\r\n</div>\r\n\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions>\r\n<button mat-stroked-button color=\"primary\" [disabled]=\"isProcessing\" (click)=\"submit()\" cdkFocusInitial>Submit</button>\r\n<button mat-button cdkFocusInitial mat-dialog-close>Cancel</button>\r\n</mat-dialog-actions>\r\n\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { FormConfig, TableConfig, ApiResponse } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\n// import { quantityDialog } from './quantityDialog.component';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Subject } from 'rxjs';\r\nimport { Router } from '@angular/router';\r\nimport { accountDialog } from './accountDialog.component';\r\n\r\n@Component({\r\n selector: 'spa-accounts',\r\n templateUrl: './accounts.component.html',\r\n styleUrls: ['./accounts.component.css']\r\n})\r\nexport class AccountsComponent implements OnInit {\r\n\r\n constructor(public router: Router,private dataService: DataServiceLib, private messageService: MessageService, public authService: AuthService, public dialog: MatDialog) { }\r\n\r\n ngOnInit(): void {\r\n this.loadData();\r\n }\r\n\r\n reload: Subject<boolean> = new Subject();\r\n accounts;\r\n\r\n loadData(){\r\n\r\n this.dataService.CallApi({ url: 'general/accounts/x' },'').subscribe((apiResponse : ApiResponse) => {\r\n this.accounts = apiResponse.data;\r\n })\r\n\r\n }\r\n\r\n\r\n\r\n view(x){\r\n this.dataService.NavigateWithValue(\"home/admin/transactions\", x.accountID)\r\n }\r\n\r\n open(x) {\r\n\r\n const dialogRef = this.dialog.open(accountDialog, {\r\n width: \"900px\",\r\n data: x,\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n\r\n if (result == 'success') {\r\n this.loadData()\r\n this.messageService.toast(\"Updated\")\r\n }\r\n });\r\n }\r\n\r\n\r\n delete(row){\r\n this.messageService.confirm(`DELETE ${row.name} ?`).subscribe((result) => {\r\n\r\n if (result == \"yes\") {\r\n\r\n\r\n this.dataService.CallApi({ url: `general/accounts?action=delete`, method: 'post' }, row).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"Account Deleted\");\r\n this.loadData();\r\n } else {\r\n this.messageService.toast(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","<h4>Accounts</h4>\r\n<hr>\r\n\r\n<div class=\"tin-row d-flex justify-content-between\" style=\"font-size: 14px;margin-left: 5px;\">\r\n <button mat-raised-button color=\"primary\" (click)=\"open(null)\">Create</button>\r\n <spa-filter [showText]=\"false\" (refreshClick)=\"loadData()\"></spa-filter>\r\n</div>\r\n\r\n<div class=\"row \" style=\"margin-left: 0px;\">\r\n\r\n <mat-card class=\"mat-elevation-z8\" *ngFor=\"let account of accounts\" style=\"max-width: 350px;margin: 5px;\">\r\n\r\n <div class=\"tin-row d-flex justify-content-between\">\r\n <label style=\"font-size: 24px; font-weight: 300;\">{{account.name}}</label>\r\n <button mat-mini-fab color=\"primary\" (click)=\"open(account)\"><mat-icon>edit</mat-icon></button>\r\n </div>\r\n\r\n <hr style=\"margin-top: 5px;margin-bottom: 10px;\"/>\r\n\r\n <label *ngIf=\"account.description != ''\" style=\"font-size: small;margin-bottom: 5px;\">{{account.description}}</label>\r\n\r\n <div *ngIf=\"account\" class=\"tin-row\">\r\n <label style=\"margin-right: 5px;font-size: 14px;\">{{account?.currency}}</label>\r\n <label style=\"font-size: 34px;margin-right: 20px;\">{{account?.balance | currency : '' : ''}}</label>\r\n </div>\r\n\r\n <mat-card-actions class=\"d-flex justify-content-between\" >\r\n <button mat-stroked-button color=\"primary\" style=\"margin-right:10px;\" (click)=\"view(account)\">View</button>\r\n <button mat-mini-fab *ngIf=\"account.count == 0\" color=\"warn\" style=\"margin-right:10px\" (click)=\"delete(account)\"><mat-icon>delete</mat-icon></button>\r\n </mat-card-actions>\r\n\r\n </mat-card>\r\n\r\n</div>\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { FormConfig, TableConfig } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-suppliers',\r\n templateUrl: './suppliers.component.html',\r\n styleUrls: ['./suppliers.component.css']\r\n})\r\nexport class SuppliersComponent implements OnInit {\r\n\r\n constructor(public dataService: DataServiceLib, private messageService: MessageService, public authService: AuthService) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n\r\n\r\n}\r\n","<h4>Suppliers</h4>\r\n<hr>\r\n\r\n\r\n<div class=\"mt-3\" style=\" font-size: 14px;\">\r\n <spa-table [config]=\"dataService.suppliersTableConfig\"></spa-table>\r\n</div>\r\n\r\n","//-------------------------------------------VIEW\r\n\r\nimport { Component, OnInit, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { FormConfig, Transaction, ApiResponse } from '../../classes/Classes';\r\nimport { LoaderService } from '../../services/loader.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-quanityDiag',\r\n templateUrl: './transactDialog.component.html',\r\n styleUrls: ['./transactions.component.css']\r\n})\r\nexport class transactDialog implements OnInit {\r\n\r\n constructor(private loaderService: LoaderService,private messageService: MessageService, private dataService: DataServiceLib, private dialogRef: MatDialogRef<transactDialog>, @Inject(MAT_DIALOG_DATA) public data) { }\r\n\r\n ngOnInit() {\r\n\r\n this.action = this.data.action;\r\n this.account = this.data.account;\r\n this.accounts = this.data.accounts;\r\n this.categories = this.data.categories;\r\n this.isLoadComplete = true;\r\n\r\n if(this.action == \"edit\"){\r\n this.txn = this.data.data\r\n }\r\n\r\n this.loaderService.isLoading.subscribe(x => this.isProcessing = x);\r\n\r\n }\r\n\r\n\r\n txn = new Transaction;\r\n action\r\n account\r\n accounts\r\n categories\r\n\r\n isLoadComplete: boolean = false;\r\n isProcessing: boolean = false;\r\n\r\n\r\n submit() {\r\n\r\n if (parseFloat(this.txn.amount) == 0){\r\n this.messageService.toast(\"Enter Amount\")\r\n return\r\n }\r\n\r\n if (this.action == \"income\"){\r\n this.txn.type = 1\r\n }else{\r\n this.txn.type = 0\r\n }\r\n\r\n\r\n this.txn.accountID = this.account.accountID\r\n\r\n let act;\r\n if (this.action == \"edit\"){\r\n act = 'edit'\r\n }\r\n else if(this.action == \"transfer\") {\r\n act = 'transfer'\r\n }\r\n else{\r\n act = 'create'\r\n }\r\n\r\n this.dataService.CallApi({ url: `general/transactions?action=${act}`, method: 'post' }, this.txn).subscribe((x : ApiResponse) => {\r\n if (x.success){\r\n this.dialogRef.close('success');\r\n } else {\r\n this.messageService.toast(x.message)\r\n }\r\n\r\n })\r\n }\r\n};\r\n\r\n\r\n\r\n","\r\n<h2 mat-dialog-title>{{action | titlecase}}</h2>\r\n\r\n\r\n<mat-dialog-content class=\"mat-typography\">\r\n\r\n <div class=\"tin-input\" style=\"font-size:14px\">\r\n\r\n <spa-select *ngIf=\"action == 'transfer'\" [(value)]=\"txn.destinationID\" display=\"Transfer to\" [options]=\"accounts\" optionDisplay=\"name\" optionValue=\"accountID\"></spa-select>\r\n\r\n <spa-date display=\"Date\" [(value)]=\"txn.date\"></spa-date>\r\n <spa-money display=\"Amount\" [(value)]=\"txn.amount\"></spa-money>\r\n <spa-text display=\"Narration\" [(value)]=\"txn.narration\"></spa-text>\r\n <spa-select display=\"Category\" [(value)]=\"txn.categoryID\" [options]=\"categories\" optionDisplay=\"name\" optionValue=\"listItemID\" [defaultFirstValue]=\"true\"></spa-select>\r\n\r\n\r\n\r\n </div>\r\n\r\n</mat-dialog-content>\r\n\r\n\r\n<mat-dialog-actions>\r\n<button mat-button [disabled]=\"isProcessing\" (click)=\"submit()\" cdkFocusInitial>Submit</button>\r\n<button mat-button [disabled]=\"isProcessing\" cdkFocusInitial mat-dialog-close>Cancel</button>\r\n</mat-dialog-actions>\r\n\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { FormConfig, ListDialogConfig, TableConfig, ApiResponse } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { Subject } from 'rxjs';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { transactDialog } from './transactDialog.component';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ListDialogComponent } from '../../components/list-dialog/list-dialog.component';\r\n\r\n@Component({\r\n selector: 'spa-transactions',\r\n templateUrl: './transactions.component.html',\r\n styleUrls: ['./transactions.component.css']\r\n})\r\nexport class TransactionsComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private messageService: MessageService, private breakpointObserver: BreakpointObserver, public dialog: MatDialog) {\r\n\r\n // detect screen size changes\r\n this.breakpointObserver.observe([\"(max-width: 600px)\"]).subscribe((result: BreakpointState) => {\r\n\r\n if (result.matches) {\r\n this.smallScreen = true\r\n } else {\r\n this.smallScreen = false\r\n }\r\n\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.accountID = this.dataService.GetNavigationValue()\r\n this.loadData();\r\n }\r\n\r\n cats() {\r\n\r\n let conf: ListDialogConfig = { title: \"Transaction Categories\", name: 'Category', listName: 'TransactionCategories' }\r\n\r\n const dialogRef = this.dialog.open(ListDialogComponent, {\r\n width: \"900px\",\r\n data: conf,\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n\r\n if (result == 'success') {\r\n this.loadData()\r\n }\r\n });\r\n\r\n }\r\n\r\n actionClicked(x){\r\n\r\n if (x.name == \"edit\"){\r\n this.transact('edit', x.data)\r\n }\r\n\r\n }\r\n\r\n loadData(){\r\n this.dataService.CallApi({ url: 'general/transactions/' + this.accountID },'').subscribe((apiResponse : ApiResponse) => {\r\n\r\n this.account = apiResponse.data.account;\r\n this.accounts = apiResponse.data.accounts;\r\n this.transactions = apiResponse.data.transactions;\r\n this.categories = apiResponse.data.categories;\r\n })\r\n }\r\n\r\n\r\n\r\n transact(x, data) {\r\n\r\n const dialogRef = this.dialog.open(transactDialog, {\r\n width: \"500px\",\r\n data: { action: x, account: this.account, data: data, accounts: this.accounts, categories: this.categories },\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n\r\n if (result == 'success') {\r\n this.loadData()\r\n this.messageService.toast(\"Updated\")\r\n }\r\n });\r\n }\r\n\r\n transfer() {\r\n\r\n }\r\n\r\n smallScreen\r\n account;\r\n accounts = [];\r\n transactions = [];\r\n accountID;\r\n categories = [];\r\n reload: Subject<boolean> = new Subject();\r\n\r\n\r\n config: TableConfig = {\r\n\r\n minColumns: ['date','narration','amount'],\r\n minButtons: ['edit', 'delete'],\r\n flatButtons: true,\r\n\r\n columns: [\r\n { name: 'date', type: 'date' },\r\n { name: 'narration', type: 'text'},\r\n { name: 'amount', type: 'money', color: { name: 'red', condition: x => x.type == 0 }, icons: [{ name: 'arrow_right_alt', condition: x => x.link != '' && x.type == 0 }, { name: 'keyboard_backspace', condition: x => x.link != '' && x.type == 1 }] },\r\n { name: 'categoryName',alias : 'Category', type: 'text' },\r\n ],\r\n\r\n buttons: [\r\n\r\n { name: 'edit', disabled: x => x.link != '' && x.type == 1 },\r\n { name: 'delete', dialog: true, action: { url: 'general/transactions?action=delete', method: 'post' }, disabled : x => x.link != '' && x.type == 1},\r\n ],\r\n\r\n }\r\n\r\n}\r\n","<!-- <h4>Transactions ({{account?.name}})</h4>\r\n<hr> -->\r\n\r\n<div class=\"d-flex align-items-center justify-content-between mt-0\" style=\"margin-left: 10px\">\r\n\r\n <label style=\"font-size: 16px;\">Transactions ({{account?.name}})</label>\r\n\r\n <div>\r\n <button mat-mini-fab color=\"primary\" style=\"margin-right:1em;padding-left: 0;\" (click)=\"cats()\" matTooltip=\"Categories\" matTooltipPosition=\"above\"><mat-icon>category</mat-icon></button>\r\n </div>\r\n\r\n</div>\r\n<hr>\r\n\r\n<div class=\"d-flex justify-content-between\" style=\" font-size: 14px;\" >\r\n\r\n <div *ngIf=\"account\" class=\"tin-row actionbuttons\">\r\n <label style=\"margin-right: 5px;\">{{account?.currency}}</label>\r\n <label style=\"font-size: 34px;margin-right: 20px;\">{{account?.balance | currency : '' : ''}}</label>\r\n <div *ngIf=\"!smallScreen; then buttons\" ></div>\r\n </div>\r\n\r\n <div *ngIf=\"!smallScreen\">\r\n <spa-filter (refreshClick)=\"loadData()\"></spa-filter>\r\n </div>\r\n\r\n</div>\r\n\r\n<div *ngIf=\"smallScreen\" style=\"margin-bottom: 10px;\"></div>\r\n\r\n<div *ngIf=\"smallScreen; then buttons\" ></div>\r\n\r\n<ng-template #buttons >\r\n <div class=\"tin-row actionbuttons\">\r\n <button mat-stroked-button style=\"color: green;\" (click)=\"transact('income','')\"><mat-icon class=\"sign\">add</mat-icon>Income</button> <mat-icon class=\"info\">info</mat-icon>\r\n <button mat-stroked-button style=\"color: red;\" (click)=\"transact('expense','')\"><mat-icon class=\"sign\">remove</mat-icon>Expense</button> <mat-icon class=\"info\">info</mat-icon>\r\n <button mat-stroked-button style=\"color: orange;\" (click)=\"transact('transfer','')\" ><mat-icon class=\"sign\">sync_alt</mat-icon>Transfer</button> <mat-icon class=\"info\">info</mat-icon>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n\r\n<div style=\" font-size: 14px;\">\r\n <spa-table [config]=\"config\" [data]=\"transactions\" [reload]=\"reload\" (dataLoad)=\"loadData()\" (actionClick)=\"actionClicked($event)\"></spa-table>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { FormConfig, ListDialogConfig, TableConfig, ApiResponse } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { ListDialogComponent } from '../../components/list-dialog/list-dialog.component';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'spa-tasks',\r\n templateUrl: './tasks.component.html',\r\n styleUrls: ['./tasks.component.css']\r\n})\r\nexport class TasksComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private messageService: MessageService, public authService: AuthService, public dialog: MatDialog) { }\r\n\r\n ngOnInit(): void {\r\n this.loadData();\r\n }\r\n\r\n loadData(){\r\n this.dataService.CallApi({ url:'tasks/meta/x'}).subscribe((api : ApiResponse) => {\r\n this.formConfig.fields.find(x => x.name == 'assignee').options = api.data.members;\r\n this.formConfig.fields.find(x => x.name == 'assignee').defaultValue = this.authService.currentUser;\r\n this.formConfig.fields.find(x => x.name == 'categoryID').options = api.data.categories;\r\n })\r\n }\r\n\r\n cats() {\r\n\r\n let conf: ListDialogConfig = { title: \"Task Categories\", name: 'Category', listName: 'TaskCategories' }\r\n\r\n const dialogRef = this.dialog.open(ListDialogComponent, {\r\n width: \"900px\",\r\n data: conf,\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n\r\n if (result == 'success') {\r\n this.reload.next(true);\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n reload: Subject<boolean> = new Subject();\r\n\r\n statuses = [\r\n { name: 'Not Started', value: 0 },\r\n { name: 'In-Progress', value: 1 },\r\n { name: 'Completed', value: 2 },\r\n ]\r\n\r\n formConfig: FormConfig = {\r\n\r\n fields: [\r\n { name: 'name', type: 'text', span : true, required : true },\r\n { name: 'status', type: 'select', options : this.statuses, defaultFirstValue : true, required : true },\r\n { name: 'dueDate', type: 'date' },\r\n { name: 'assignee', type: 'select', optionDisplay : 'name', optionValue : 'userName' },\r\n { name: 'categoryID', alias: 'Category', type: 'select', optionDisplay: 'name', optionValue: 'listItemID', defaultFirstValue: true, required: true },\r\n ],\r\n\r\n reset: true,\r\n }\r\n\r\n tasksTableConfig: TableConfig = {\r\n showFilter: true,\r\n minColumns: ['name', 'assigneeName'],\r\n flatButtons: true,\r\n\r\n columns: [\r\n\r\n { name: 'name', type: 'text'},\r\n { name: 'statusName', type: 'text' },\r\n { name: 'dueDate', type: 'date' },\r\n { name: 'assigneeName', alias:'assignee', type: 'text'},\r\n { name: 'categoryName', alias: 'Category', type: 'text' },\r\n { name: 'createdDate', alias : 'Created', type: 'date' },\r\n ],\r\n\r\n buttons: [\r\n { name: 'create', display: 'Create', dialog: true, action: { url: 'tasks?action=create', method: 'post' } },\r\n { name: 'view', dialog: true },\r\n { name: 'edit', dialog: true, action: { url: 'tasks?action=edit', method: 'post' } },\r\n { name: 'delete', dialog: true, action: { url: 'tasks?action=delete', method: 'post' } },\r\n ],\r\n\r\n loadAction: { url: 'tasks/all/x' },\r\n\r\n formConfig: this.formConfig\r\n\r\n }\r\n}\r\n","<div class=\"d-flex align-items-center justify-content-between mt-0\" style=\"margin-left: 10px\">\r\n\r\n <label style=\"font-size: 16px;\">Tasks</label>\r\n\r\n <div>\r\n <button mat-mini-fab color=\"primary\" style=\"margin-right:1em;\" (click)=\"cats()\" matTooltip=\"Categories\" matTooltipPosition=\"above\"><mat-icon>category</mat-icon></button>\r\n </div>\r\n\r\n</div>\r\n<hr>\r\n\r\n<div class=\"mt-3\" style=\" font-size: 14px;\">\r\n <spa-table [config]=\"tasksTableConfig\" [reload]=\"reload\"></spa-table>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { FormConfig, TableConfig } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-departments',\r\n templateUrl: './departments.component.html',\r\n styleUrls: ['./departments.component.css']\r\n})\r\nexport class DepartmentsComponent implements OnInit {\r\n\r\n constructor(public dataService: DataServiceLib, private messageService: MessageService, public authService: AuthService) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n\r\n}\r\n","<h4>Departments</h4>\r\n<hr>\r\n\r\n<div class=\"mt-3\" style=\" font-size: 14px;\">\r\n <spa-table [config]=\"dataService.departmentTableConfig\"></spa-table>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { FormConfig, TableConfig, ApiResponse } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-employees',\r\n templateUrl: './employees.component.html',\r\n styleUrls: ['./employees.component.css']\r\n})\r\nexport class EmployeesComponent implements OnInit {\r\n\r\n constructor(public dataService: DataServiceLib, public authService: AuthService) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<h4>Employees</h4>\r\n<hr>\r\n\r\n<div class=\"mt-3\" style=\" font-size: 14px;\">\r\n <spa-table [config]=\"dataService.employeesTableConfig\"></spa-table>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\n\r\n@Component({\r\n selector: 'spa-positions',\r\n templateUrl: './positions.component.html',\r\n styleUrls: ['./positions.component.css']\r\n})\r\nexport class PositionsComponent implements OnInit {\r\n\r\n constructor(public dataService: DataServiceLib, public authService: AuthService) { }\r\n\r\n ngOnInit(): void {\r\n // this.dataService.loadPositionMeta();\r\n }\r\n\r\n}\r\n","<h4>Positions</h4>\r\n<hr>\r\n\r\n<div class=\"mt-3\" style=\" font-size: 14px;\">\r\n <spa-table [config]=\"dataService.positionsTableConfig\"></spa-table>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'spa-grades',\r\n templateUrl: './grades.component.html',\r\n styleUrls: ['./grades.component.css']\r\n})\r\nexport class GradesComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<h4>Grades</h4>\r\n<hr>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { TableConfig, ApiResponse } from '../../classes/Classes';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\n\r\n@Component({\r\n selector: 'spa-welcome',\r\n templateUrl: './welcome.component.html',\r\n styleUrls: ['./welcome.component.css']\r\n})\r\nexport class WelcomeComponent implements OnInit {\r\n\r\n constructor(public dataService : DataServiceLib, public authService: AuthService) { }\r\n\r\n ngOnInit(): void {\r\n this.loadMeta();\r\n\r\n this.authService.loggedUserFullName.subscribe(x => this.username = x)\r\n }\r\n\r\n username;\r\n\r\n step = \"terms\"\r\n agree = false\r\n own = true;\r\n invitations = false;\r\n\r\n myTenant\r\n\r\n loadMeta(){\r\n this.dataService.CallApi({ url:'tenants/welcome_meta/x'}).subscribe((api) => {\r\n this.invitations = api.data.invitations;\r\n this.own = api.data.own;\r\n this.myTenant = api.data.tenant;\r\n })\r\n }\r\n\r\n renameTenant() {\r\n\r\n this.dataService.CallApi({ url: 'tenants/dto?action=rename', method: 'post' }, this.myTenant).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.authService.updateTenantName(this.myTenant.name)\r\n }\r\n });\r\n }\r\n\r\n next(){\r\n\r\n if (this.step == 'terms' && this.own){\r\n this.step = \"name\"\r\n return;\r\n }\r\n else if (this.step == \"terms\" && !this.own) {\r\n this.step = \"hi\"\r\n return;\r\n }\r\n else if (this.step == \"name\" && this.own){\r\n\r\n this.renameTenant();\r\n if (this.invitations == true){\r\n this.step = \"invitations\"\r\n return;\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n this.setWelcome();\r\n }\r\n\r\n setWelcome() {\r\n this.dataService.CallApi({ url: 'tenants/set_welcome/x' }).subscribe((api) => {\r\n this.home();\r\n })\r\n }\r\n\r\n home(){\r\n this.dataService.Navigate('home');\r\n }\r\n\r\n\r\n invTableConfig: TableConfig = {\r\n\r\n greyOut: (value) => value.accepted == false,\r\n elevation: 'low',\r\n minColumns: ['tenantName'],\r\n minButtons: ['accept', 'decline'],\r\n\r\n columns: [\r\n { name: 'tenantName', alias: 'Organisation', type: 'text' },\r\n { name: 'owner', type: 'text', },\r\n ],\r\n\r\n buttons: [\r\n { name: 'accept', icon: { 'name': 'done', }, color: 'green', action: { url: 'members/dto?action=accept', method: 'post', }, confirm: { message: 'Accept ?' }, disabled: (x) => x.accepted },\r\n { name: 'decline', icon: { 'name': 'close', }, color: 'red', action: { url: 'members/dto?action=remove', method: 'post', }, confirm: { message: 'Decline ?' }, disabled: (x) => x.accepted },\r\n ],\r\n\r\n loadAction: { url: 'tenants/invitations/x' },\r\n\r\n }\r\n\r\n}\r\n","<label class=\"title\">Welcome, {{username}}</label>\r\n\r\n\r\n\r\n<!-- terms -->\r\n<div class=\"mt-3\" *ngIf=\"step=='terms'\">\r\n\r\n <label class=\"subtitle text-muted mb-2\" >We care about our users and are dedicated to protecting your data and privacy -\r\n thats why we want to be clear about what data we collect and how we use it to improve your experience.</label>\r\n\r\n <br>\r\n <spa-check display=\"I agree to the Terms and Privacy Policy\" [(value)]=\"agree\"></spa-check>\r\n</div>\r\n\r\n<!-- owner -->\r\n<div class=\"mt-3\" *ngIf=\"step=='name' && own\">\r\n\r\n <label class=\"subtitle text-muted\" style=\" margin-bottom: 20px;\">The follow steps will guide you to customise your application.</label>\r\n\r\n <div style=\"max-width: 400px;\">\r\n <spa-text display=\"Organisation Name\" [(value)]=\"myTenant.name\" ></spa-text>\r\n </div>\r\n\r\n <label class=\"text-muted\" style=\" font-size: 12px;\">You can change the Organisation's name to your team or company name.</label><br>\r\n <label class=\"text-muted\" style=\" font-size: 12px;margin-top: 10px;\">The name can be changed later.</label>\r\n\r\n</div>\r\n\r\n<!-- guest -->\r\n<div *ngIf=\"step=='hi' && !own\">\r\n <label class=\"subtitle text-muted\">You are now signed in to {{myTenant.name}}.</label>\r\n</div>\r\n\r\n\r\n<!-- invitations -->\r\n<div class=\"mt-3\" *ngIf=\"step=='invitations' && own\">\r\n\r\n <label class=\"subtitle text-muted\">You have been requested to join the following organisations. If you accept, you have the option to switch to that org now or stay in you org.</label><br>\r\n <label class=\"text-muted\" style=\" font-size: 12px;margin-top: 10px;\">You will be able to switch later.</label>\r\n <spa-invitations-table></spa-invitations-table>\r\n\r\n</div>\r\n\r\n\r\n<!-- Actions -->\r\n<div class=\"mt-3\">\r\n <button mat-stroked-button color=\"primary\" [disabled]=\"!agree\" (click)=\"next()\">Next <mat-icon>arrow_right_alt</mat-icon></button>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ApiResponse, DetailsDialogConfig, FormConfig, PageConfig, TableConfig } from '../../classes/Classes';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { NotificationsService } from '../../services/notifications.service';\r\n\r\n@Component({\r\n selector: 'spa-notifications',\r\n templateUrl: './notifications.component.html',\r\n styleUrls: ['./notifications.component.css']\r\n})\r\nexport class NotificationsComponent implements OnInit {\r\n constructor(private dataService: DataServiceLib, private notificationsService : NotificationsService) { }\r\n\r\n ngOnInit(): void {\r\n this.notificationsService.loadNotifications()\r\n }\r\n\r\n\r\n createDialog: DetailsDialogConfig = {\r\n formConfig: {\r\n security : { allow : [this.dataService.capNotifications] },\r\n title: 'Send Notification',\r\n fixedTitle: true,\r\n fields: [\r\n { name: 'message', type: 'text', required: true, span: true },\r\n {\r\n name: 'category', type: 'select', required: true, defaultFirstValue : true,\r\n options: [\r\n { name: 'System', value: 0 },\r\n { name: 'Security', value: 1 },\r\n { name: 'Task', value: 2 },\r\n { name: 'Approval', value: 3 },\r\n { name: 'Other', value: 4 }\r\n ]\r\n },\r\n {\r\n name: 'type', type: 'select', required: true, defaultFirstValue: true,\r\n options: [\r\n { name: 'Info', value: 'info' },\r\n { name: 'Warning', value: 'warn' },\r\n { name: 'Error', value: 'error' }\r\n ]\r\n },\r\n { name: 'durationHours', type: 'number', required: true, defaultValue: 24, hint: 'How long to keep this notification active' },\r\n { name: 'notifyAllUsers', type: 'checkbox', alias: 'Notify All Users', span: false },\r\n { name: 'usernames', type: 'multi-text', alias: 'Recipients', copyContent : true, clearContent : true, span: true, hiddenCondition: x => x.notifyAllUsers, loadAction : { url: 'user/list/x' } },\r\n { name: 'roleIDs', type: 'multi-select', strict : true, copyContent : true, alias: 'Roles', span: false, hiddenCondition: x => x.notifyAllUsers, loadAction : { url: 'role/list/x' } },\r\n {\r\n name: 'channels', type: 'select', alias: 'Notification Channels', span: false, defaultFirstValue: true, required: true,\r\n options: this.dataService.notificationOptions,\r\n }\r\n ]\r\n },\r\n mode: 'create',\r\n buttons: [\r\n { name: 'create', display: 'Send', action: { url: 'notifications?action=notify', method: 'post', successMessage: 'Notification sent successfully' } }\r\n ]\r\n };\r\n\r\n notificationsTableConfig: TableConfig = {\r\n showFilter: true,\r\n minColumns: ['message', 'categoryName'],\r\n flatButtons: true,\r\n columns: [\r\n {\r\n name: 'type', type: 'icon',\r\n icons: [\r\n {name : 'info', color: 'steelblue', condition: x => x.type === 'info' },\r\n { name: 'warning', color: '#FF9800', condition: x => x.type === 'warn' },\r\n { name: 'error', color: '#f44336', condition: x => x.type === 'error' }\r\n ]\r\n },\r\n { name: 'createdDate', type: 'datetime', alias: 'Date' },\r\n { name: 'message', type: 'text' },\r\n { name: 'categoryName', type: 'text', alias: 'Category' },\r\n\r\n // { name: 'createdByName', type: 'text', alias: 'From' }\r\n ],\r\n buttons: [\r\n { name: 'create', display: 'Send Notification', dialog: true, detailsConfig: this.createDialog },\r\n { name: 'dismiss', icon: { name: 'done' }, color: 'green', action: { url: 'notifications?action=dismiss', method: 'post' }, visible: x => x.canDismiss },\r\n { name: 'dismissAll', display: 'Dismiss All', inHeader : true, icon: { name: 'done_all' }, color: 'green', action: { url: 'notifications/dismiss-all', method: 'post' } },\r\n { name: 'delete', action: { url: 'notifications?action=delete', method: 'post' } }\r\n ],\r\n\r\n loadAction: { url: 'notifications/all/x' }\r\n };\r\n\r\n\r\n actionClicked(x){\r\n this.notificationsService.loadNotifications()\r\n }\r\n}\r\n","<h4>Notifications</h4>\r\n<hr>\r\n\r\n\r\n<div class=\"mt-3\" style=\" font-size: 14px;\">\r\n <spa-table [config]=\"notificationsTableConfig\" (actionResponse)=\"actionClicked($event)\"></spa-table>\r\n</div>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { ApiResponse, PageConfig, TableConfig } from '../../classes/Classes';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { Subject } from 'rxjs';\r\nimport { MessageService } from '../../services/message.service';\r\n\r\n@Component({\r\n selector: 'spa-page',\r\n templateUrl: './page.component.html',\r\n styleUrls: ['./page.component.css']\r\n})\r\nexport class PageComponent implements OnInit {\r\n\r\n constructor(public dataServiceLib: DataServiceLib, private messageService: MessageService,) { }\r\n\r\n ngOnInit(): void {\r\n\r\n this.normalTableConfig = this.getNormalTableConfig();\r\n this.searchTableConfig = this.getSearchTableConfig();\r\n\r\n }\r\n\r\n @Input() config: PageConfig = new PageConfig();\r\n @Output() searchModeActivated = new EventEmitter();\r\n @Output() searchModeDeactivated = new EventEmitter();\r\n @Output() refreshClick = new EventEmitter();\r\n @Output() actionClick = new EventEmitter();\r\n @Output() actionResponse = new EventEmitter();\r\n @Output() inputChange = new EventEmitter();\r\n @Output() createClick = new EventEmitter();\r\n @Output() searchClick = new EventEmitter();\r\n @Output() dataLoad = new EventEmitter();\r\n\r\n tableReload: Subject<boolean> = new Subject();\r\n\r\n searchMode = false;\r\n\r\n normalTableConfig: TableConfig;\r\n searchTableConfig: TableConfig;\r\n\r\n toggleSearch() {\r\n if (this.searchMode) {\r\n this.searchModeActivated.emit();\r\n }\r\n else{\r\n this.searchModeDeactivated.emit();\r\n }\r\n }\r\n\r\n\r\n\r\n getNormalTableConfig() : TableConfig {\r\n return {\r\n ...this.config.tableConfig,\r\n searchConfig: null\r\n }\r\n }\r\n\r\n\r\n getSearchTableConfig() : TableConfig {\r\n\r\n return {\r\n ...this.config.searchTableConfig,\r\n loadAction: null,\r\n showFilter: false,\r\n holdHeaderButtonSpace: true,\r\n }\r\n\r\n }\r\n\r\n refreshClicked(){\r\n this.refreshClick.emit();\r\n }\r\n\r\n actionClicked(x){\r\n this.actionClick.emit(x);\r\n }\r\n\r\n actionResponded(x){\r\n this.actionResponse.emit(x);\r\n }\r\n\r\n inputChanged(x){\r\n this.inputChange.emit(x);\r\n }\r\n\r\n createClicked(x){\r\n this.createClick.emit(x);\r\n }\r\n\r\n searchClicked(x){\r\n this.searchClick.emit(x);\r\n }\r\n\r\n dataLoaded(x){\r\n this.dataLoad.emit(x);\r\n }\r\n\r\n}\r\n","<div class=\"row\">\r\n\r\n <div class=\"col\">\r\n <h4>{{config.title ?? 'Untitled'}} </h4>\r\n </div>\r\n\r\n <div class=\"col d-flex justify-content-end\" style=\"font-size: 14px;\">\r\n <spa-check *ngIf=\"config.searchTableConfig\" [(value)]=\"searchMode\" display=\"Search Mode\" (valueChange)=\"toggleSearch()\" style=\"margin-right: 10px;\"></spa-check>\r\n </div>\r\n\r\n</div>\r\n\r\n<hr style=\"margin-top: 0px;\" />\r\n\r\n\r\n<div style=\" font-size: 14px;\">\r\n <!-- Normal -->\r\n <spa-table *ngIf=\"!searchMode\" [config]=\"normalTableConfig\" [reload]=\"tableReload\"\r\n (refreshClick)=\"refreshClicked()\" (actionClick)=\"actionClicked($event)\" (actionResponse)=\"actionResponded($event)\"\r\n (inputChange)=\"inputChanged($event)\" (createClick)=\"createClicked($event)\" (searchClick)=\"searchClicked($event)\" (dataLoad)=\"dataLoaded($event)\">\r\n </spa-table>\r\n\r\n <!-- Search -->\r\n <spa-table *ngIf=\"searchMode\" [config]=\"searchTableConfig\" [reload]=\"tableReload\"\r\n (refreshClick)=\"refreshClicked()\" (actionClick)=\"actionClicked($event)\" (actionResponse)=\"actionResponded($event)\"\r\n (inputChange)=\"inputChanged($event)\" (createClick)=\"createClicked($event)\" (searchClick)=\"searchClicked($event)\" (dataLoad)=\"dataLoaded($event)\">\r\n </spa-table>\r\n</div>\r\n\r\n","import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[selectContext]'\r\n})\r\nexport class SelectContextDirective {\r\n constructor(\r\n private templateRef: TemplateRef<any>,\r\n private viewContainer: ViewContainerRef\r\n ) { }\r\n\r\n @Input() set selectContext(context: any) {\r\n this.viewContainer.clear();\r\n this.viewContainer.createEmbeddedView(this.templateRef, context);\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DetailsDialogConfig, FormConfig, PageConfig, TableConfig } from '../../classes/Classes';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\n\r\n@Component({\r\n selector: 'spa-approvals',\r\n templateUrl: './approvals.component.html',\r\n styleUrls: ['./approvals.component.css']\r\n})\r\nexport class ApprovalsComponent implements OnInit {\r\n\r\n constructor(public dataService : DataServiceLib) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n\r\n}\r\n","<h4>Approvals</h4>\r\n<hr>\r\n\r\n<mat-tab-group>\r\n <mat-tab label=\"Received\">\r\n <div class=\"mt-3\">\r\n <spa-table [config]=\"dataService.receivedApprovalsTableConfig\"></spa-table>\r\n </div>\r\n </mat-tab>\r\n <mat-tab label=\"Sent\">\r\n <div class=\"mt-3\">\r\n <spa-table [config]=\"dataService.sentApprovalsTableConfig\"></spa-table>\r\n </div>\r\n </mat-tab>\r\n</mat-tab-group>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DetailsDialogConfig, FormConfig, PageConfig, TableConfig } from '../../classes/Classes';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\n\r\n@Component({\r\n selector: 'spa-approvals-config',\r\n templateUrl: './approvals-config.component.html',\r\n styleUrls: ['./approvals-config.component.css']\r\n})\r\nexport class ApprovalsConfigComponent implements OnInit {\r\n\r\n constructor(private dataService : DataServiceLib) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n\r\n // Approval Roles\r\n approvalRoleFormConfig: FormConfig = {\r\n title: 'Approval Role',\r\n security: { allow: [this.dataService.capApprovalsConfig] },\r\n fields: [\r\n { name: 'roleID', type: 'select', required: true, alias: 'Role', loadAction: { url: 'role/list/x' } }\r\n ]\r\n };\r\n\r\n approvalRolesTableConfig: TableConfig = {\r\n tabTitle: 'Level Roles',\r\n showFilter: true,\r\n elevation: 'none',\r\n flatButtons: true,\r\n minColumns: ['roleName'],\r\n columns: [\r\n { name: 'roleName', type: 'text', alias: 'Role' }\r\n ],\r\n buttons: [\r\n { name: 'create', display: 'Add Role', dialog: true, action: { url: 'approvalroles?action=create', method: 'post' } },\r\n { name: 'delete', dialog: true, action: { url: 'approvalroles?action=delete', method: 'post' } }\r\n ],\r\n loadAction: { url: 'approvalroles/level/x' },\r\n loadCriteria: 'level',\r\n loadIDField: 'approvalLevelID',\r\n formConfig: this.approvalRoleFormConfig\r\n };\r\n\r\n\r\n // Approval Levels\r\n\r\n approvalLevelOptions = [1,2,3,4,5].map(x => ({name: x, value: x}));\r\n\r\n approvalLevelFormConfig: FormConfig = {\r\n title: 'Approval Level',\r\n security: { allow: [this.dataService.capApprovalsConfig] },\r\n fields: [\r\n { name: 'name', type: 'text', required: true, span: true, infoMessage: 'Name of approval level e.g. Supervisor Approval' },\r\n { name: 'level', type: 'select', required: true, min: 1, defaultFirstValue : true, infoMessage: 'Order of approval',\r\n options: this.approvalLevelOptions\r\n }\r\n ],\r\n };\r\n\r\n approvalLevelDetailsConfig: DetailsDialogConfig = {\r\n formConfig: this.approvalLevelFormConfig,\r\n heroField: 'approvalLevelID',\r\n tableConfigs: [this.approvalRolesTableConfig],\r\n buttons: [\r\n { name: 'edit', dialog: true, action: { url: 'approvallevels?action=edit', method: 'post' } }\r\n ]\r\n };\r\n\r\n approvalLevelsTableConfig: TableConfig = {\r\n tabTitle: 'Approval Levels',\r\n showFilter: true,\r\n elevation: 'none',\r\n flatButtons: true,\r\n minColumns: ['level','name', ],\r\n minButtons : ['up', 'down', 'view'],\r\n collapseButtons : true,\r\n columns: [\r\n { name: 'level', type: 'number' },\r\n { name: 'name', type: 'chip', detailsConfig: this.approvalLevelDetailsConfig },\r\n { name: 'rolesDisplay', type: 'text', alias: 'Roles' }\r\n ],\r\n buttons: [\r\n { name: 'create', display: 'Add Level', dialog: true, action: { url: 'approvallevels?action=create', method: 'post' } },\r\n\r\n { name: 'up', display: 'Move Up', icon: { name: 'arrow_upward' }, action: { url: 'approvallevels?action=up', method: 'post' }, visible: x => x.level > 1 },\r\n { name: 'down', display: 'Move Down', icon: { name: 'arrow_downward' }, action: { url: 'approvallevels?action=down', method: 'post' } },\r\n { name: 'view', dialog: true, detailsConfig: this.approvalLevelDetailsConfig },\r\n { name: 'delete', dialog: true, action: { url: 'approvallevels?action=delete', method: 'post' } }\r\n ],\r\n\r\n formConfig: this.approvalLevelFormConfig,\r\n loadAction: { url: 'approvallevels/config/x' },\r\n loadCriteria: 'config',\r\n loadIDField: 'approvalConfigID'\r\n };\r\n\r\n\r\n // Approval Config\r\n approvalConfigFormConfig: FormConfig = {\r\n title: 'Approval Configuration',\r\n includeAudit: true,\r\n security : {allow : [this.dataService.capApprovalsConfig]},\r\n fields: [\r\n // { name: 'modelName', type: 'text', required: true, alias: 'Entity Name', span: true, },\r\n { name: 'enabled', type: 'checkbox', span: true, alias: 'Enable Approvals', defaultValue : true, infoMessage: 'Enable or disable approval workflow for this entity' },\r\n // { name: 'modelName', type: 'select', required: true, span: true, alias: 'Entity', optionDisplay: 'name', optionValue: 'value', loadAction: { url: 'approvalconfigs/meta/x' }, },\r\n { name: 'appModelID', type: 'select', required: true, span: true, alias: 'Entity', optionDisplay: 'name', optionValue: 'value', loadAction: { url: 'appmodels/list/approvable' }, },\r\n { name: 'createApprovalRequired', type: 'checkbox', span: true, alias: 'Create Approval' },\r\n { name: 'editApprovalRequired', type: 'checkbox', span: true, alias: 'Edit Approval' },\r\n { name: 'deleteApprovalRequired', type: 'checkbox', span: true, alias: 'Delete Approval' },\r\n { name: 'customActions', type: 'text', span: true, alias: 'Custom Actions', infoMessage: 'Comma-separated list of actions that require approval e.g receive,disburse' },\r\n { name: 'notify', type: 'checkbox', defaultValue : true,},\r\n {\r\n name: 'channels', type: 'select', alias: 'Notification Channels', span: false, defaultFirstValue: true, required: true,\r\n hiddenCondition : x => x.notify === false,\r\n options: this.dataService.notificationOptions,\r\n }\r\n ]\r\n }\r\n\r\n approvalConfigDetailsConfig: DetailsDialogConfig = {\r\n formConfig: this.approvalConfigFormConfig,\r\n heroField: 'approvalConfigID',\r\n tableConfigs: [this.approvalLevelsTableConfig],\r\n buttons: [\r\n { name: 'edit', dialog: true, action: { url: 'approvalconfigs?action=edit', method: 'post' } },\r\n ]\r\n };\r\n\r\n approvalConfigTable: TableConfig = {\r\n showFilter: true,\r\n flatButtons: true,\r\n minColumns: ['modelNameDisplay', 'enabled', 'approvalTypes'],\r\n columns: [\r\n { name: 'modelNameDisplay', type: 'text', alias: 'Entity' },\r\n { name: 'enabled', type: 'checkbox',\r\n icons: [\r\n { name: 'warning', color: 'orange', tip: 'No approval levels or roles configured', condition: x => x.enabled && (x.hasNoLevels || x.hasNoRoles) }\r\n ]\r\n },\r\n {\r\n name: 'approvalTypes',\r\n type: 'icon',\r\n alias: 'Approval Types',\r\n icons: [\r\n { name: 'add_circle', color: 'green', tip: 'Create Approval Required', condition: x => x.enabled && x.createApprovalRequired },\r\n { name: 'edit', color: 'orange', tip: 'Edit Approval Required', condition: x => x.enabled && x.editApprovalRequired },\r\n { name: 'delete', color: 'red', tip: 'Delete Approval Required', condition: x => x.enabled && x.deleteApprovalRequired },\r\n { name: 'settings', color: 'blue', tip: 'Custom Actions', condition: x => x.enabled && x.customActions?.length > 0, tipField: 'customActions' }\r\n ]\r\n },\r\n { name: 'customActions', type: 'text', alias: 'Custom Actions' },\r\n {\r\n name: 'levelCount', type: 'number', alias: 'Levels',\r\n icons: [\r\n {\r\n name: 'warning', color: 'orange', tip: 'No approval levels configured',\r\n condition: x => x.levelCount === 0\r\n }\r\n ]\r\n },\r\n ],\r\n\r\n buttons: [\r\n { name: 'create', display: 'Create', dialog: true, action: { url: 'approvalconfigs?action=create', method: 'post' } },\r\n { name: 'view', dialog: true, detailsConfig: this.approvalConfigDetailsConfig },\r\n { name: 'edit', dialog: true, detailsConfig: this.approvalConfigDetailsConfig },\r\n { name: 'delete', action: { url: 'approvalconfigs?action=delete', method: 'post' } },\r\n ],\r\n\r\n loadAction: { url: 'approvalconfigs/all/x' },\r\n formConfig: this.approvalConfigFormConfig\r\n };\r\n\r\n pageConfig : PageConfig ={\r\n title: 'Approval Configuration',\r\n tableConfig: this.approvalConfigTable\r\n }\r\n\r\n}\r\n","<spa-page [config]=\"pageConfig\"></spa-page>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { BitwiseOption, Icon } from '../../classes/Classes';\r\n\r\n@Component({\r\n selector: 'spa-select-bitwise',\r\n templateUrl: './select-bitwise.component.html',\r\n styleUrls: ['./select-bitwise.component.css']\r\n})\r\nexport class SelectBitwiseComponent implements OnInit {\r\n\r\n @Input() display = '';\r\n @Input() hint = '';\r\n @Input() required = false;\r\n @Input() readonly = false;\r\n @Input() width = '100%';\r\n @Input() infoMessage: string;\r\n @Input() options: { name?: string; value: number; icon?: Icon; }[] = [];\r\n\r\n @Input() set value(val: number) {\r\n this._value = val;\r\n this.updateSelectedValues();\r\n }\r\n get value(): number {\r\n return this._value;\r\n }\r\n\r\n @Output() valueChange = new EventEmitter<number>();\r\n @Output() infoClick = new EventEmitter<void>();\r\n\r\n private _value = 0;\r\n bitwiseOptions: BitwiseOption[] = [];\r\n selectedValues: number[] = [];\r\n hasNames = false; // Flag to track if options have names\r\n\r\n get selectedOptions(): BitwiseOption[] {\r\n return this.bitwiseOptions.filter(opt => this.selectedValues.includes(opt.value));\r\n }\r\n\r\n ngOnInit() {\r\n this.bitwiseOptions = this.options.map(opt => ({\r\n ...opt,\r\n selected: false\r\n }));\r\n // Check if any options have names\r\n this.hasNames = this.options.some(opt => !!opt.name);\r\n this.updateSelectedValues();\r\n }\r\n\r\n onSelectionChange(event: any) {\r\n const newValue = this.selectedValues.reduce((acc, curr) => acc | curr, 0);\r\n this._value = newValue;\r\n this.valueChange.emit(newValue);\r\n console.log(newValue)\r\n }\r\n\r\n private updateSelectedValues() {\r\n this.selectedValues = this.options\r\n .filter(opt => (this._value & opt.value) === opt.value)\r\n .map(opt => opt.value);\r\n }\r\n\r\n onInfoClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.infoClick.emit();\r\n }\r\n}\r\n","<mat-form-field [ngStyle]=\"{'width':width ?? '100%'}\">\r\n <mat-label>{{display}}</mat-label>\r\n\r\n <mat-select multiple [(ngModel)]=\"selectedValues\" (selectionChange)=\"onSelectionChange($event)\" [required]=\"required\" [disabled]=\"readonly\">\r\n <mat-option *ngFor=\"let option of bitwiseOptions\" [value]=\"option.value\">\r\n\r\n <mat-icon *ngIf=\"option.icon && !hasNames\" [ngStyle]=\"{'color': option.icon.color}\" [matTooltip]=\"option.icon.tip\" >\r\n {{option.icon.name}}\r\n </mat-icon>\r\n\r\n <span *ngIf=\"hasNames\">\r\n {{option.name}}\r\n </span>\r\n\r\n </mat-option>\r\n </mat-select>\r\n\r\n <mat-hint *ngIf=\"hint\">{{hint}}</mat-hint>\r\n\r\n <div matSuffix class=\"suffix-icons\">\r\n\r\n <ng-container *ngIf=\"!hasNames\">\r\n <mat-icon *ngFor=\"let option of selectedOptions\" [ngStyle]=\"{'color': option.icon?.color, 'margin-right': '4px'}\" style=\"font-size: 14px;\" [matTooltip]=\"option.icon?.tip\">\r\n {{option.icon?.name}}\r\n </mat-icon>\r\n </ng-container>\r\n\r\n <button mat-icon-button *ngIf=\"infoMessage\" (click)=\"onInfoClick($event)\" matTooltip=\"Info\" matTooltipPosition=\"above\">\r\n <mat-icon style=\"color: steelblue;\">info</mat-icon>\r\n </button>\r\n\r\n </div>\r\n\r\n</mat-form-field>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DetailsDialogConfig, FormConfig, PageConfig, TableConfig } from '../../classes/Classes';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\n\r\n@Component({\r\n selector: 'spa-app-models',\r\n templateUrl: './app-models.component.html'\r\n})\r\nexport class AppModelsComponent implements OnInit {\r\n constructor(private dataService: DataServiceLib) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n appModelFormConfig: FormConfig = {\r\n title: 'Application Model',\r\n includeAudit: true,\r\n fields: [\r\n { name: 'fullModelName', type: 'text', required: true, span: true, alias: 'Full Model Name', readonly: true },\r\n { name: 'name', type: 'text', span: true, alias: 'Display Name', infoMessage: 'Custom display name (optional)' },\r\n { name: 'endpoint', type: 'text', span: true, alias: 'Endpoint Name', infoMessage: 'Name of associated endpoint (optional)' },\r\n { name: 'approvable', type: 'checkbox', span: true, alias: 'Approvable', readonly: true }\r\n ]\r\n };\r\n\r\n appModelDetailsConfig: DetailsDialogConfig = {\r\n formConfig: this.appModelFormConfig,\r\n heroField: 'appModelID',\r\n buttons: [\r\n { name: 'edit', dialog: true, action: { url: 'appmodels?action=edit', method: 'post' } }\r\n ]\r\n };\r\n\r\n appModelTableConfig: TableConfig = {\r\n showFilter: true,\r\n elevation: 'none',\r\n flatButtons: true,\r\n minColumns: ['displayName', 'approvable'],\r\n columns: [\r\n { name: 'displayName', type: 'chip', alias: 'Name', detailsConfig: this.appModelDetailsConfig },\r\n { name: 'fullModelName', type: 'text', alias: 'Full Model Name' },\r\n { name: 'endpoint', type: 'text', alias: 'Endpoint' },\r\n { name: 'approvable', type: 'checkbox', alias: 'Approvable' }\r\n ],\r\n buttons: [\r\n { name: 'view', dialog: true, detailsConfig: this.appModelDetailsConfig },\r\n { name: 'edit', dialog: true, detailsConfig: this.appModelDetailsConfig },\r\n ],\r\n loadAction: { url: 'appmodels/all/x' }\r\n };\r\n\r\n pageConfig: PageConfig = {\r\n title: 'Application Models',\r\n tableConfig: this.appModelTableConfig\r\n };\r\n}\r\n","<spa-page [config]=\"pageConfig\"></spa-page>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DetailsDialogConfig, FormConfig, PageConfig, TableConfig } from '../../classes/Classes';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\n\r\n@Component({\r\n selector: 'spa-notifications-config',\r\n templateUrl: './notifications-config.component.html'\r\n})\r\nexport class NotificationsConfigComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n // Notification Operations\r\n notificationOperationFormConfig: FormConfig = {\r\n title: 'Notification Operation',\r\n security: { allow: [this.dataService.capNotificationsConfig] },\r\n fields: [\r\n { name: 'operationType', type: 'select', required: true, alias: 'Operation Type', loadAction: { url: 'notificationconfigs/meta/x' }, optionDisplay: 'name', optionValue: 'value' },\r\n { name: 'customAction', type: 'text', required: true, alias: 'Custom Action', hiddenCondition: x => x.operationType !== 4 }, // 4 = Custom\r\n { name: 'enabled', type: 'checkbox', alias: 'Enable Notifications', defaultValue: true },\r\n { name: 'roleIDs', type: 'multi-select', alias: 'Notify Roles', required: true, loadAction: { url: 'role/list/x' }, }, //hiddenCondition: x => !x.enabled\r\n {\r\n name: 'channels', type: 'select', alias: 'Notification Channels', span: false, defaultFirstValue: true, required: true,\r\n options: this.dataService.notificationOptions,\r\n }\r\n ]\r\n };\r\n\r\n notificationOperationsTableConfig: TableConfig = {\r\n tabTitle: 'Notification Operations',\r\n showFilter: true,\r\n elevation: 'none',\r\n flatButtons: true,\r\n minColumns: ['operationTypeName', 'enabled', 'channels'],\r\n columns: [\r\n { name: 'operationTypeName', type: 'text', alias: 'Operation' },\r\n { name: 'customAction', type: 'text', alias: 'Custom Action' },\r\n { name: 'enabled', type: 'checkbox' },\r\n { name: 'roleIDs', type: 'text', alias: 'Roles' },\r\n { name: 'channels', type: 'text', alias: 'Channels' }\r\n ],\r\n buttons: [\r\n { name: 'create', display: 'Add Operation', dialog: true, action: { url: 'notificationoperations?action=create', method: 'post' } },\r\n { name: 'edit', dialog: true, action: { url: 'notificationoperations?action=edit', method: 'post' } },\r\n { name: 'delete', dialog: true, action: { url: 'notificationoperations?action=delete', method: 'post' } }\r\n ],\r\n loadAction: { url: 'notificationoperations/config/x' },\r\n loadCriteria: 'config',\r\n loadIDField: 'notificationConfigID',\r\n formConfig: this.notificationOperationFormConfig\r\n };\r\n\r\n // Main Notification Config\r\n notificationConfigFormConfig: FormConfig = {\r\n title: 'Notification Configuration',\r\n includeAudit: true,\r\n security: { allow: [this.dataService.capNotificationsConfig] },\r\n fields: [\r\n { name: 'enabled', type: 'checkbox', alias: 'Enable Notifications', defaultValue: true, span: true },\r\n { name: 'appModelID', type: 'select', required: true, span: true, alias: 'Entity', loadAction: { url: 'appmodels/list/x' } },\r\n // { name: 'customActions', type: 'text', span: true, alias: 'Custom Actions', infoMessage: 'Comma-separated list of actions that can trigger notifications e.g receive,disburse' }\r\n ]\r\n };\r\n\r\n notificationConfigDetailsConfig: DetailsDialogConfig = {\r\n formConfig: this.notificationConfigFormConfig,\r\n heroField: 'notificationConfigID',\r\n tableConfigs: [this.notificationOperationsTableConfig],\r\n buttons: [\r\n { name: 'edit', dialog: true, action: { url: 'notificationconfigs?action=edit', method: 'post' } }\r\n ]\r\n };\r\n\r\n notificationConfigTable: TableConfig = {\r\n showFilter: true,\r\n flatButtons: true,\r\n minColumns: ['modelNameDisplay', 'enabled', 'operations'],\r\n columns: [\r\n { name: 'modelNameDisplay', type: 'chip', alias: 'Entity', detailsConfig: this.notificationConfigDetailsConfig },\r\n {\r\n name: 'enabled', type: 'checkbox',\r\n icons: [\r\n { name: 'warning', color: 'orange', tip: 'No operations configured', condition: x => x.enabled && x.hasNoOperations },\r\n { name: 'warning', color: 'orange', tip: 'Some operations have no roles configured', condition: x => x.enabled && x.hasNoRoles },\r\n { name: 'warning', color: 'orange', tip: 'Some operations have no channels configured', condition: x => x.enabled && x.hasIncompleteChannels }\r\n ]\r\n },\r\n {\r\n name: 'operations', type: 'icon', alias: 'Operations',\r\n icons: [\r\n { name: 'done_all', color: 'green', tip: 'All Operations', condition: x => x.enabled && x.operations.some(o => o.operationType === 0) },\r\n { name: 'add_circle', color: 'green', tip: 'Create', condition: x => x.enabled && x.operations.some(o => o.operationType === 1) },\r\n { name: 'edit', color: 'orange', tip: 'Edit', condition: x => x.enabled && x.operations.some(o => o.operationType === 2) },\r\n { name: 'delete', color: 'red', tip: 'Delete', condition: x => x.enabled && x.operations.some(o => o.operationType === 3) },\r\n { name: 'settings', color: 'blue', tip: 'Custom Actions', condition: x => x.enabled && x.operations.some(o => o.operationType === 4) }\r\n ]\r\n }\r\n ],\r\n buttons: [\r\n { name: 'create', display: 'Create', dialog: true, action: { url: 'notificationconfigs?action=create', method: 'post' } },\r\n { name: 'view', dialog: true, detailsConfig: this.notificationConfigDetailsConfig },\r\n { name: 'edit', dialog: true, detailsConfig: this.notificationConfigDetailsConfig },\r\n { name: 'delete', action: { url: 'notificationconfigs?action=delete', method: 'post' } }\r\n ],\r\n loadAction: { url: 'notificationconfigs/all/x' },\r\n formConfig: this.notificationConfigFormConfig\r\n };\r\n\r\n pageConfig: PageConfig = {\r\n title: 'Notification Configuration',\r\n tableConfig: this.notificationConfigTable\r\n };\r\n}\r\n","<spa-page [config]=\"pageConfig\"></spa-page>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { TableConfig, ApiResponse } from '../../classes/Classes';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { Subject } from 'rxjs';\r\n\r\n// Component to display multiple tables in tabs with lazy loading and count badges\r\n@Component({\r\n selector: 'spa-tabs',\r\n templateUrl: './tabs.component.html',\r\n styleUrls: ['./tabs.component.css']\r\n})\r\nexport class TabsComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib) { }\r\n\r\n ngOnInit(): void {\r\n this.loadAllCounts();\r\n }\r\n\r\n @Input() tableConfigs: TableConfig[] = [];\r\n\r\n tabCounts: { [index: number]: number } = {};\r\n activeTabsLoaded: { [index: number]: boolean } = {}; \r\n selectedTabIndex = 0; \r\n tableReloads: { [index: number]: Subject<boolean> } = {};\r\n\r\n private loadAllCounts(): void {\r\n this.tableConfigs.forEach((config, index) => {\r\n if (config.countAction) {\r\n this.loadTabCount(index, config.countAction);\r\n }\r\n this.tableReloads[index] = new Subject<boolean>();\r\n });\r\n }\r\n\r\n private loadTabCount(tabIndex: number, countAction: any): void {\r\n this.dataService.CallApi(countAction).subscribe((apiResponse: ApiResponse) => {\r\n if (apiResponse.success) {\r\n this.tabCounts[tabIndex] = apiResponse.data;\r\n }\r\n });\r\n }\r\n\r\n onTabChange(event: any): void {\r\n this.selectedTabIndex = event.index;\r\n \r\n // Mark current tab as loaded to trigger data loading\r\n if (!this.activeTabsLoaded[this.selectedTabIndex]) {\r\n this.activeTabsLoaded[this.selectedTabIndex] = true;\r\n }\r\n }\r\n\r\n getTabCount(index: number): number | undefined {\r\n return this.tabCounts[index];\r\n }\r\n\r\n shouldShowBadge(index: number): boolean {\r\n return this.tableConfigs[index]?.countAction !== undefined && this.tabCounts[index] !== undefined;\r\n }\r\n\r\n getTabTitle(config: TableConfig): string {\r\n return config.tabTitle || 'Untitled';\r\n }\r\n\r\n shouldLoadTabData(index: number): boolean {\r\n return this.activeTabsLoaded[index] || index === 0; // Always load first tab immediately\r\n }\r\n\r\n refreshTabCount(index: number): void {\r\n const config = this.tableConfigs[index];\r\n if (config?.countAction) {\r\n this.loadTabCount(index, config.countAction);\r\n }\r\n }\r\n\r\n onTableActionResponse(tabIndex: number, event: any): void {\r\n this.refreshTabCount(tabIndex);\r\n }\r\n}","<mat-tab-group (selectedTabChange)=\"onTabChange($event)\" [selectedIndex]=\"selectedTabIndex\">\r\n \r\n <mat-tab *ngFor=\"let config of tableConfigs; let i = index\">\r\n \r\n <!-- Tab label with optional badge -->\r\n <ng-template matTabLabel>\r\n <span \r\n [matBadge]=\"shouldShowBadge(i) ? getTabCount(i) : null\" \r\n [matBadgeHidden]=\"!shouldShowBadge(i)\"\r\n matBadgeOverlap=\"false\">\r\n {{getTabTitle(config)}}\r\n </span>\r\n </ng-template>\r\n\r\n <!-- Tab content with lazy-loaded table -->\r\n <div *ngIf=\"shouldLoadTabData(i)\" class=\"tab-content\">\r\n <spa-table \r\n [config]=\"config\" \r\n [reload]=\"tableReloads[i]\"\r\n [activeTab]=\"selectedTabIndex === i\"\r\n [inTab]=\"true\"\r\n (actionResponse)=\"onTableActionResponse(i, $event)\">\r\n </spa-table>\r\n </div>\r\n\r\n <!-- Placeholder for non-loaded tabs -->\r\n <div *ngIf=\"!shouldLoadTabData(i)\" class=\"tab-placeholder\">\r\n <!-- Empty placeholder - content will load when tab is activated -->\r\n </div>\r\n\r\n </mat-tab>\r\n\r\n</mat-tab-group>","import { NgModule } from '@angular/core';\r\nimport { TinSpaComponent } from './components/tin-spa.component';\r\nimport { SpaMatModule } from \"./modules/spa-mat.module\";\r\nimport { TextComponent } from './components/text/text.component';\r\nimport { CheckComponent } from './components/check/check.component';\r\nimport { DateComponent } from './components/date/date.component';\r\nimport { DatetimeComponent } from './components/datetime/datetime.component';\r\nimport { LabelComponent } from './components/label/label.component';\r\nimport { SelectComponent } from './components/select/select.component';\r\nimport { ActivityComponent } from './components/activity/activity.component';\r\nimport { FilterComponent } from './components/filter/filter.component';\r\nimport { messageDialog } from './components/message/messageDialog.component';\r\nimport { MoneyComponent } from './components/money/money.component';\r\nimport { OptionComponent } from './components/option/option.component';\r\nimport { TilesComponent } from './components/tiles/tiles.component';\r\nimport { StepsComponent } from './components/steps/steps.component';\r\nimport { AttachComponent } from './components/attach/attach.component';\r\nimport { ChipsComponent } from './components/chips/chips.component';\r\nimport { LoaderComponent } from './components/loader/loader.component';\r\nimport { NavMenuComponent } from './components/nav-menu/nav-menu.component';\r\nimport { LoaderInterceptor } from './services/loader-interceptor.service';\r\nimport { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\r\nimport { CurrencyPipe, DatePipe, HashLocationStrategy, LocationStrategy, PathLocationStrategy } from '@angular/common';\r\nimport { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';\r\nimport { CurrencyInputModule } from './components/money/currency-input-mask.module';\r\nimport { TableComponent } from './components/table/table.component';\r\nimport { DetailsDialog as DetailsDialog } from './components/table/detailsDialog.component';\r\nimport { FormComponent } from './components/form/form.component';\r\nimport { CamelToWordsPipe } from './pipes/camelToWords.pipe';\r\nimport { NumberComponent } from './components/number/number.component';\r\nimport { SearchComponent } from './components/search/search.component';\r\nimport { ViewerComponent } from './components/viewer/viewer.component';\r\nimport { viewerDialog } from './components/viewer/viewerDialog.component';\r\nimport { NgxDocViewerModule } from 'ngx-doc-viewer';\r\nimport { TenantSettingsComponent } from './pages/tenant-settings/tenant-settings.component';\r\nimport { TenantsComponent } from './pages/tenants/tenants.component';\r\nimport { BugComponent } from './pages/bug/bug.component';\r\nimport { MembershipComponent } from './pages/membership/membership.component';\r\nimport { PlansComponent } from './pages/plans/plans.component';\r\nimport { CustomersComponent } from './pages/customers/customers.component';\r\nimport { InventoryComponent } from './pages/inventory/inventory.component';\r\nimport { AccountsComponent } from './pages/accounts/accounts.component';\r\nimport { SuppliersComponent } from './pages/suppliers/suppliers.component';\r\nimport { quantityDialog } from './pages/inventory/quantityDialog.component';\r\nimport { TransactionsComponent } from './pages/transactions/transactions.component';\r\nimport { transactDialog } from './pages/transactions/transactDialog.component';\r\nimport { accountDialog } from './pages/accounts/accountDialog.component';\r\nimport { ListDialogComponent } from './components/list-dialog/list-dialog.component';\r\nimport { TasksComponent } from './pages/tasks/tasks.component';\r\nimport { DepartmentsComponent } from './pages/departments/departments.component';\r\nimport { EmployeesComponent } from './pages/employees/employees.component';\r\nimport { PositionsComponent } from './pages/positions/positions.component';\r\nimport { GradesComponent } from './pages/grades/grades.component';\r\nimport { WelcomeComponent } from './pages/welcome/welcome.component';\r\nimport { NotificationsComponent } from './pages/notifications/notifications.component';\r\nimport { InvitationsTableComponent } from './pages/invitations-table/invitations-table.component';\r\nimport { TableInternalComponent } from './components/table-internal/table-internal.component';\r\nimport { DetailsDialogInternal } from './components/table-internal/detailsDialog-internal.component';\r\nimport { TableHeaderComponent } from './components/table-header/table-header.component';\r\nimport { TableRowComponent } from './components/table-row/table-row.component';\r\nimport { TableActionComponent } from './components/table-action/table-action.component';\r\nimport { AlertComponent } from './components/alert/alert.component';\r\nimport { EmailComponent } from './components/email/email.component';\r\nimport { PageComponent } from './components/page/page.component';\r\nimport { SelectCommonComponent } from './components/select-common/select-common.component';\r\nimport { SelectInternalComponent } from './components/select-internal/select-internal.component';\r\nimport { SuffixComponent } from './components/suffix/suffix.component';\r\nimport { SelectContextDirective } from './select-context.directive';\r\nimport { SelectLiteComponent } from './components/select-lite/select-lite.component';\r\nimport { TableLiteComponent } from './components/table-lite/table-lite.component';\r\nimport { DetailsDialogLite } from './components/table-lite/detailsDialog-lite.component';\r\nimport { ApprovalsComponent } from './pages/approvals/approvals.component';\r\nimport { ApprovalsConfigComponent } from './pages/approvals-config/approvals-config.component';\r\nimport { MultiTextComponent } from './components/multi-text/multi-text.component';\r\nimport { MultiSelectComponent } from './components/multi-select/multi-select.component';\r\nimport { SelectBitwiseComponent } from './components/select-bitwise/select-bitwise.component';\r\nimport { AppModelsComponent } from './pages/app-models/app-models.component';\r\nimport { NotificationsConfigComponent } from './pages/notifications-config/notifications-config.component';\r\nimport { HtmlComponent } from './components/html/html.component';\r\nimport { NotesComponent } from './components/notes/notes.component';\r\nimport { CapsulesComponent } from './components/capsules/capsules.component';\r\nimport { CardsComponent } from './components/cards/cards.component';\r\nimport { TabsComponent } from './components/tabs/tabs.component';\r\nimport { StatusesComponent } from './components/statuses/statuses.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n TinSpaComponent, TextComponent, CheckComponent,DateComponent,DatetimeComponent,LabelComponent,SelectComponent,\r\n ActivityComponent, FilterComponent, messageDialog, MoneyComponent, OptionComponent, TilesComponent, StepsComponent,\r\n AttachComponent, ChipsComponent, LoaderComponent, NavMenuComponent, TableComponent, TableInternalComponent, DetailsDialog, DetailsDialogInternal, FormComponent, CamelToWordsPipe, NumberComponent, SearchComponent, ViewerComponent, viewerDialog,\r\n TenantSettingsComponent, TenantsComponent, BugComponent, MembershipComponent, PlansComponent, CustomersComponent, InventoryComponent, quantityDialog, AccountsComponent, accountDialog,\r\n SuppliersComponent,\r\n TransactionsComponent, transactDialog, ListDialogComponent, TasksComponent,\r\n DepartmentsComponent, EmployeesComponent, PositionsComponent, GradesComponent, WelcomeComponent, NotificationsComponent, InvitationsTableComponent,\r\n TableHeaderComponent, TableRowComponent, TableActionComponent,\r\n AlertComponent, EmailComponent, PageComponent, SelectCommonComponent, SelectInternalComponent, SuffixComponent, SelectContextDirective, SelectLiteComponent, \r\n TableLiteComponent, DetailsDialogLite, ApprovalsComponent, ApprovalsConfigComponent, MultiTextComponent, \r\n MultiSelectComponent, SelectBitwiseComponent, AppModelsComponent, NotificationsConfigComponent, \r\n HtmlComponent, NotesComponent, CapsulesComponent, CardsComponent, TabsComponent, StatusesComponent\r\n\r\n ],\r\n imports: [\r\n SpaMatModule,\r\n HttpClientModule,\r\n CurrencyInputModule,\r\n NgxDocViewerModule,\r\n\r\n\r\n ],\r\n exports: [\r\n TinSpaComponent,\r\n SpaMatModule,\r\n AlertComponent,\r\n TextComponent,\r\n MultiTextComponent,\r\n messageDialog,\r\n NavMenuComponent,\r\n LoaderComponent,\r\n TilesComponent,\r\n DateComponent,\r\n SelectComponent,\r\n SelectBitwiseComponent,\r\n MultiSelectComponent,\r\n DatetimeComponent,\r\n CheckComponent,\r\n AttachComponent,\r\n MoneyComponent,\r\n ChipsComponent,\r\n ActivityComponent,\r\n OptionComponent,\r\n LabelComponent,\r\n StepsComponent,\r\n FilterComponent,\r\n TableComponent, DetailsDialog,\r\n FormComponent,\r\n NumberComponent,\r\n SearchComponent,\r\n ViewerComponent,\r\n viewerDialog,\r\n ListDialogComponent,\r\n\r\n CustomersComponent,\r\n AccountsComponent,\r\n InventoryComponent,\r\n SuppliersComponent,\r\n TransactionsComponent, ListDialogComponent, TasksComponent,\r\n DepartmentsComponent, EmployeesComponent, PositionsComponent, GradesComponent,\r\n WelcomeComponent, EmailComponent, PageComponent,\r\n HtmlComponent,\r\n NotesComponent,\r\n CapsulesComponent, TabsComponent, StatusesComponent\r\n\r\n ],\r\n providers: [\r\n { provide: HTTP_INTERCEPTORS, useClass: LoaderInterceptor, multi: true },\r\n { provide: LocationStrategy, useClass: HashLocationStrategy },\r\n {provide: MAT_FORM_FIELD_DEFAULT_OPTIONS, useValue: {appearance: 'legacy'}},\r\n CurrencyPipe, DatePipe,\r\n\r\n ],\r\n})\r\nexport class TinSpaModule { }\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/datalib.service\";\r\nimport { LogService } from \"../../services/log.service\";\r\nimport { AppConfig, ApiResponse, Constants } from \"../../classes/Classes\";\r\nimport { HttpService } from \"../../services/http.service\";\r\nimport { SocialAuthService, SocialUser } from '@abacritt/angularx-social-login';\r\nimport { User } from \"../../classes/LibClasses\";\r\nimport { NotificationsService } from \"../../services/notifications.service\";\r\nimport { MsalService } from '@azure/msal-angular';\r\n\r\n\r\n@Component({\r\n selector: \"spa-login\",\r\n templateUrl: \"./login.component.html\",\r\n styleUrls: [\"./login.component.css\"],\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, private socialService: SocialAuthService, \r\n private notificationsService: NotificationsService, private msalService : MsalService ) { }\r\n\r\n ngOnInit() {\r\n\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 if (this.route.snapshot.queryParams[\"sso\"] == \"msal\" && this.appConfig.microsoftAuth) {\r\n this.loginWithMS();\r\n }\r\n\r\n\r\n\r\n this.authService.autoLoginObserv.subscribe(x => {\r\n this.autoLogin = x\r\n console.log(\"AUTO LOGIN :\" + this.autoLogin)\r\n })\r\n\r\n this.socialUser = null;\r\n\r\n this.socialService.authState.subscribe((socialUser: SocialUser) => {\r\n\r\n this.socialUser = socialUser;\r\n\r\n this.user.userName = socialUser.id;\r\n this.user.password = socialUser.id; //dummy data\r\n this.user.token = socialUser.idToken;\r\n this.user.authType = socialUser.provider;\r\n\r\n this.login();\r\n\r\n });\r\n\r\n // this.authService.logoff();\r\n this.style = this.dataService.appConfig.loginStyle ?? 'default';\r\n\r\n }\r\n\r\n loginWithMS() {\r\n this.msalService.loginPopup({\r\n scopes: [\"openid\", \"profile\", \"email\"],\r\n // prompt: \"select_account\"\r\n }).subscribe({\r\n next: (response) => {\r\n \r\n\r\n // Get user claims from response\r\n const claims = response.account;\r\n \r\n // Set user details\r\n this.user.userName = claims.username;\r\n this.user.password = response.requestId;\r\n this.user.token = response.idToken;\r\n this.user.authType = 'MSAL';\r\n \r\n\r\n // Proceed with your existing login flow\r\n this.login();\r\n },\r\n error: (error) => {\r\n console.error('MSAL login error:', error);\r\n this.messageService.toast(\"Microsoft login failed. Please try again.\");\r\n }\r\n });\r\n }\r\n\r\n \r\n autoLogin: boolean;\r\n socialUser: SocialUser | null;\r\n\r\n style: string = \"default\";\r\n\r\n email: string = \"\";\r\n password: string = \"\";\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\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\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 this.authService.updateTenantName(apiResponse.data.tenantName);\r\n this.storageService.store(Constants.AUTH_TENANT_NAME, apiResponse.data.tenantName);\r\n\r\n\r\n this.logService.info(\"logged in\");\r\n\r\n this.dataService.ClearCache();\r\n\r\n this.notifications();\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\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 notifications(){\r\n if (this.appConfig.multitenant){\r\n this.notificationsService.loadNotifications()\r\n }\r\n\r\n }\r\n\r\n\r\n}\r\n","\r\n <div *ngIf=\"style=='old'\" 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=\"width: 100px;margin-right:3em;margin-left:3em\" />\r\n <img *ngIf=\"appConfig.logoSize=='medium'\" [src]=\"appConfig.logo\" style=\"width: 150px;margin-right:3em;margin-left:3em\" />\r\n <img *ngIf=\"appConfig.logoSize=='large'\" [src]=\"appConfig.logo\" style=\"width: 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 login-card\" 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\r\n <div *ngIf=\"style=='default'\" class=\"login-page background tin-bg-login\">\r\n\r\n <div class=\"container\" >\r\n\r\n <div class=\"logo\">\r\n <img *ngIf=\"appConfig.logoSize=='normal'\" [src]=\"appConfig.logo\" style=\"width: 100px\" />\r\n <img *ngIf=\"appConfig.logoSize=='medium'\" [src]=\"appConfig.logo\" style=\"width: 150px\" />\r\n <img *ngIf=\"appConfig.logoSize=='large'\" [src]=\"appConfig.logo\" style=\"width: 250px\" />\r\n </div>\r\n\r\n <mat-card class=\"mat-elevation-z3 \" style=\"width:400px; \">\r\n\r\n <mat-card-header style=\"margin-bottom: 5px;\">\r\n <mat-card-title style=\"font-size: 40px;margin-bottom: 10px; margin-top: 20px; font-weight: 300\">{{appConfig.appName}}</mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content *ngIf=\"appConfig.localAuth || appConfig.ADAuth\">\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 <spa-text id=\"txtPassword\" display=\"Password\" format=\"password\" [(value)]=\"user.password\" (enterPress)=\"login()\"></spa-text>\r\n\r\n </div>\r\n\r\n </mat-card-content>\r\n\r\n\r\n <mat-card-actions style=\"margin-bottom: 10px;\">\r\n\r\n <div class=\"button mt-0\" *ngIf=\"appConfig.localAuth || appConfig.ADAuth\">\r\n <button id=\"btnLogin\" mat-flat-button [disabled]=\"isProcessing\" style=\"width: 350px;\" (click)=\"login()\" color=\"primary\">Login</button>\r\n </div>\r\n\r\n <div class=\"button\" *ngIf=\"(appConfig.localAuth || appConfig.ADAuth) && appConfig.selfService\" >\r\n <button id=\"btnSignup\" mat-stroked-button color=\"primary\" style=\"width: 350px;\" (click)=\"signup()\">Sign up with Email</button>\r\n </div>\r\n\r\n <div class=\"divider\" *ngIf=\"appConfig.googleAuth || appConfig.microsoftAuth\">\r\n <span>OR</span>\r\n </div>\r\n\r\n <div class=\"button\" *ngIf=\"appConfig.googleAuth\">\r\n <asl-google-signin-button type='standard' width=\"350px\" size='medium' logo_alignment=\"center\" style=\"text-align: center;\"></asl-google-signin-button>\r\n </div>\r\n\r\n <div class=\"button\" *ngIf=\"appConfig.microsoftAuth\">\r\n <button mat-stroked-button color=\"primary\" style=\"width: 350px;\" (click)=\"loginWithMS()\">{{appConfig.microsoftAuthMessage}}</button>\r\n </div>\r\n\r\n </mat-card-actions>\r\n\r\n </mat-card>\r\n\r\n <a *ngIf=\"appConfig.selfService\" mat-button id=\"lnkRecover\" style=\"margin-top: 1em\" (click)=\"recoverAccount()\">Forgot your password ?</a>\r\n\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"style=='bs'\">\r\n\r\n <div class=\"container\">\r\n\r\n <div class=\"image\">\r\n <img class=\"mb-4\" src=\"c:\\Tinashe\\Code\\Angular\\Junk\\bs-examples\\assets\\brand\\bootstrap-logo.svg\" alt=\"\" width=\"72\" height=\"57\">\r\n </div>\r\n\r\n <div class=\"details\">\r\n <h1 class=\"h3 mb-3 fw-normal\" >Please sign in</h1>\r\n\r\n <div class=\"form-floating\">\r\n <input class=\"form-control\" id=\"floatingInput\" placeholder=\"name@example.com\" [(ngModel)]=\"user.userName\">\r\n <label for=\"floatingInput\">Username</label>\r\n </div>\r\n\r\n <div class=\"form-floating\">\r\n <input type=\"password\" class=\"form-control\" id=\"floatingPassword\" placeholder=\"Password\" [(ngModel)]=\"user.password\">\r\n <label for=\"floatingPassword\">Password</label>\r\n </div>\r\n\r\n <div class=\"form-check text-start my-3\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"remember-me\" id=\"flexCheckDefault\" >\r\n <label class=\"form-check-label\" for=\"flexCheckDefault\">\r\n Remember me\r\n </label>\r\n </div>\r\n\r\n <button class=\"btn btn-primary w-100 py-2\" (click)=\"login()\">Sign in</button>\r\n\r\n </div>\r\n\r\n <p class=\"mt-5 mb-3 text-body-secondary\">&copy; 2017–2023</p>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n\r\n\r\n <div *ngIf=\"style=='modern'\" class=\"modern-login\">\r\n <mat-card class=\"login-card\">\r\n <!-- Logo -->\r\n <div class=\"logo-container\">\r\n <img *ngIf=\"appConfig.logoSize=='normal'\" [src]=\"appConfig.logo\" style=\"width: 100px\" />\r\n <img *ngIf=\"appConfig.logoSize=='medium'\" [src]=\"appConfig.logo\" style=\"width: 150px\" />\r\n <img *ngIf=\"appConfig.logoSize=='large'\" [src]=\"appConfig.logo\" style=\"width: 250px\" />\r\n </div>\r\n\r\n <!-- Welcome text -->\r\n <mat-card-header>\r\n <mat-card-title style=\"font-size: 30px;margin-bottom: 10px; margin-top: 20px; font-weight: 300\">{{appConfig.loginTitle ?? appConfig.appName}}</mat-card-title>\r\n <mat-card-subtitle class=\"mt-2\" *ngIf=\"appConfig.loginMessage\">{{appConfig.loginMessage}}</mat-card-subtitle>\r\n </mat-card-header>\r\n\r\n <mat-card-content>\r\n <div class=\"login-form\">\r\n <!-- Username -->\r\n <spa-text id=\"txtuserName\" display=\"Username\" [(value)]=\"user.userName\" [appearance]=\"'outline'\"></spa-text>\r\n\r\n <!-- Password -->\r\n <spa-text id=\"txtPassword\" display=\"Password\" format=\"password\" [(value)]=\"user.password\" [appearance]=\"'outline'\" (enterPress)=\"login()\"></spa-text>\r\n\r\n <!-- Login Button -->\r\n <div class=\"button-container\">\r\n <button id=\"btnLogin\" mat-flat-button color=\"primary\" [disabled]=\"isProcessing\" (click)=\"login()\">\r\n Login\r\n </button>\r\n </div>\r\n\r\n <!-- Divider -->\r\n <div class=\"divider\">\r\n <span>OR</span>\r\n </div>\r\n\r\n <!-- Social Login -->\r\n <div *ngIf=\"appConfig.googleAuth\" class=\"social-login\">\r\n <asl-google-signin-button type='standard' size='medium' width=\"350\" logo_alignment=\"center\"></asl-google-signin-button>\r\n </div>\r\n\r\n <!-- Microsoft Login -->\r\n <div class=\"button\" *ngIf=\"appConfig.microsoftAuth\">\r\n <button mat-stroked-button color=\"primary\" style=\"width: 350px;\" (click)=\"loginWithMS()\">{{appConfig.microsoftAuthMessage}}</button>\r\n </div>\r\n\r\n <!-- Links -->\r\n <div class=\"links-container mb-5\">\r\n <a *ngIf=\"appConfig.selfService\" mat-button id=\"lnkRecover\" color=\"primary\" (click)=\"recoverAccount()\">\r\n Forgot password?\r\n </a>\r\n\r\n <div *ngIf=\"appConfig.selfService\" class=\"signup-container\">\r\n <span>Don't have an account?</span>\r\n <a mat-button id=\"btnSignup\" color=\"primary\" (click)=\"signup()\">Sign up</a>\r\n </div>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n\r\n <mat-card-footer>\r\n <div class=\"terms-container\">\r\n <mat-divider></mat-divider>\r\n <p class=\"terms-text\">\r\n By continuing, you acknowledge that you accept our\r\n <a mat-button color=\"primary\" class=\"terms-link\" [href]=\"appConfig.termsUrl\" target=\"_blank\">Terms and Conditions</a>\r\n and\r\n <a mat-button color=\"primary\" class=\"terms-link\" [href]=\"appConfig.privacyUrl\" target=\"_blank\">Privacy Policy</a>.\r\n </p>\r\n </div>\r\n </mat-card-footer>\r\n </mat-card>\r\n</div>\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/datalib.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { ApiResponse } from '../../classes/Classes';\r\nimport { HttpService } from '../../services/http.service';\r\nimport { Account, Profile, User } from '../../classes/LibClasses';\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=\"padding-top: 30px;\">Sign up</h4>\r\n\r\n<hr/>\r\n\r\n\r\n<div class=\"container tin-grid\" style=\"font-size:14px;\">\r\n\r\n <spa-text display=\"FirstName\" [(value)]=\"account.profile.firstName\" ></spa-text>\r\n\r\n <spa-text display=\"LastName\" [(value)]=\"account.profile.lastName\" ></spa-text>\r\n\r\n <spa-text display=\"Username\" [(value)]=\"account.profile.userName\"></spa-text>\r\n\r\n &nbsp;\r\n\r\n <spa-text display=\"Password\" [(value)]=\"account.profile.password\" format=\"password\" ></spa-text>\r\n\r\n <spa-text display=\"Confirm Password\" [(value)]=\"confirmPassword\" format=\"password\" ></spa-text>\r\n\r\n <div class=\"span-col-center\">\r\n <button mat-raised-button color=\"primary\" (click)=\"create()\" cdkFocusInitial>Submit</button>\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { ApiResponse } from '../../classes/Classes';\r\nimport { Location } from '@angular/common';\r\nimport { User } from '../../classes/LibClasses';\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","\r\n<div class=\"container\" style=\"padding-top: 30px;\">\r\n<h4>Recover Account</h4>\r\n\r\n<hr />\r\n\r\nSubmit your Username and we will send you details to your registered email address.\r\n\r\n<div style=\"font-size: 14px;\">\r\n <spa-text class=\"mt-3\" display=\"Username\" [(value)]=\"userName\"></spa-text>\r\n\r\n <div class=\"tin-center\">\r\n <button class=\"mt-3 w-50\" 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\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 \"../pages/login/login.component\";\r\nimport { SignupComponent } from \"../pages/signup/signup.component\";\r\nimport { RecoverAccountComponent } from \"../pages/recover-account/recover-account.component\";\r\nimport { TinSpaModule } from \"../tin-spa.module\";\r\nimport { SocialLoginModule } from \"@abacritt/angularx-social-login\";\r\n\r\n@NgModule({\r\n declarations: [LoginComponent, SignupComponent, RecoverAccountComponent],\r\n\r\n\r\n\r\n imports: [\r\n ReactiveFormsModule.withConfig({ warnOnNgModelWithFormControl: \"never\" }),\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n TinSpaModule,\r\n SocialLoginModule\r\n ],\r\n\r\n exports: [\r\n CommonModule,\r\n FormsModule,\r\n TinSpaModule,\r\n LoginComponent,\r\n SignupComponent,\r\n RecoverAccountComponent,\r\n ],\r\n})\r\nexport class SpaIndexModule {}\r\n","\r\nimport { ApiResponse } from './../../classes/Classes';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { Location } from '@angular/common';\r\nimport { HttpService } from '../../services/http.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ChangeUserPassword } from '../../classes/LibClasses';\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","<h4>Change Password</h4>\r\n<hr>\r\n\r\n\r\n<div class=\"container tin-grid\" style=\"font-size:14px;\">\r\n\r\n <div class=\"fill\">\r\n\r\n <spa-text id=\"txtuserName\" display=\"Username\" [(value)]=\"changePassword.userName\" [readonly]=\"true\"></spa-text>\r\n <spa-text id=\"txtPassword\" display=\"Current Password\" [(value)]=\"changePassword.currentPassword\" type=\"password\"></spa-text>\r\n <spa-text id=\"txtNewPassword\" display=\"New Password\" [(value)]=\"changePassword.newPassword\" type=\"password\"></spa-text>\r\n <spa-text id=\"txtConfirmPassword\" display=\"Confirm Password\" [(value)]=\"changePassword.confirmPassword\" type=\"password\"></spa-text>\r\n <button id=\"btnChange\" mat-raised-button color=\"primary\" (click)=\"change()\" cdkFocusInitial>Change</button>\r\n\r\n </div>\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<!-- <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","import { AuthService } from './../../services/auth.service';\r\nimport { MessageService } from './../../services/message.service';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { ApiResponse, AppConfig } from '../../classes/Classes';\r\nimport { Router } from '@angular/router';\r\nimport { HttpService } from '../../services/http.service';\r\nimport { Profile } from '../../classes/LibClasses';\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 }\r\n\r\n isProcessing: boolean;\r\n myRole;\r\n initials = \"\";\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( (apiResponse: ApiResponse) => {\r\n\r\n this.profile = apiResponse.data;\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 this.initials = `${this.profile.firstName?.toUpperCase().charAt(0)}${this.profile.lastName?.toUpperCase().charAt(0)}`\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 },\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 // 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","\r\n<h4>Profile</h4>\r\n<hr>\r\n\r\n<div class=\"container tin-grid-auto\" style=\"font-size:14px;\">\r\n\r\n <div class=\"tin-center centa\">\r\n <div class=\"profileImage\">{{initials}}</div>\r\n <mat-label id=\"lbluserName\" >{{profile?.userName}}</mat-label>\r\n </div>\r\n\r\n <div>\r\n\r\n <spa-text id=\"txtFirstName\" display=\"First Name\" [(value)]=\"profile.firstName\" [readonly]=\"selfProfile\"></spa-text>\r\n <spa-text id=\"txtLastName\" display=\"Last Name\" [(value)]=\"profile.lastName\" [readonly]=\"selfProfile\"></spa-text>\r\n <spa-text id=\"txtAuth\" display=\"Authentication\" [(value)]=\"profile.authType\" [readonly]=\"true\"></spa-text>\r\n <spa-text id=\"txtEmail\" display=\"Email\" [(value)]=\"profile.email\" [readonly]=\"selfProfile\"></spa-text>\r\n <spa-select id=\"cboRole\" display=\"Role\" [options]=\"roles\" optionDisplay=\"roleName\" optionValue=\"roleID\" [(value)]=\"profile.roleID\" [readonly]=\"selfProfile\"></spa-select>\r\n <spa-label *ngIf=\"dataService.appConfig.multitenant\" display=\"Code\" [value]=\"profile.code\" ></spa-label>\r\n\r\n <button id=\"btnUpdate\" class=\"w-100\" mat-raised-button color=\"primary\" *ngIf=\"!selfProfile\" [disabled]=\"isProcessing\" (click)=\"updateProfile()\">Update Profile</button>\r\n </div>\r\n\r\n\r\n <div class=\"tin-center centa\">\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 </div>\r\n\r\n\r\n</div>\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 \"../pages/change-password/change-password.component\";\r\nimport { ProfileComponent } from \"../pages/profile/profile.component\";\r\nimport { TinSpaModule } from \"../tin-spa.module\";\r\n\r\n@NgModule({\r\n declarations: [ChangePasswordComponent, ProfileComponent],\r\n\r\n\r\n\r\n imports: [\r\n ReactiveFormsModule.withConfig({ warnOnNgModelWithFormControl: \"never\" }),\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n TinSpaModule\r\n ],\r\n\r\n exports: [\r\n CommonModule,\r\n FormsModule,\r\n TinSpaModule,\r\n ChangePasswordComponent,\r\n ProfileComponent,\r\n ],\r\n})\r\nexport class SpaUserModule {}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { ApiResponse } from '../../classes/Classes';\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 : ApiResponse) => {\r\n this.settings = apiResponse.data;\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 this.messageService.toast(\"Feature not Available\");\r\n\r\n }\r\n\r\n}\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=\"tin-row align-items-center mt-1 mb-1\" style=\"margin-left:10px\" *ngFor=\"let setting of settings\">\r\n\r\n <mat-form-field *ngIf=\"!setting.encrypted\" 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 <spa-text *ngIf=\"setting.encrypted\" format=\"password\" style=\"width: 500px; font-size: 14px;\" [display]=\"setting.sName\" [(value)]=\"setting.sValue\"></spa-text>\r\n\r\n <button mat-mini-fab color=\"primary\" (click)=\"updateSetting(setting)\" style=\"margin-right:10px;\"><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</div>\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from \"../../services/datalib.service\";\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { PageConfig } from '../../classes/Classes';\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 }\r\n\r\n logsPageConfig : PageConfig = {\r\n title : 'Logs',\r\n\r\n\r\n tableConfig: {\r\n showFilter: true,\r\n minColumns: ['dateLogged', 'userFullName', 'details'],\r\n flatButtons : this.dataService.appConfig.multitenant,\r\n logResponse : true,\r\n columns: [\r\n { name: 'dateLogged', type : 'datetimesec', alias: 'Date' },\r\n { name: 'userName', alias: 'User' },\r\n { name: 'userFullName', alias: 'Name' },\r\n { name: 'source', },\r\n { name: 'details', maxLength : 150 },\r\n { name: 'tenantName', alias: 'Tenant', hiddenCondition: x => !this.dataService.appConfig.multitenant },\r\n\r\n ],\r\n loadAction: { url: 'logs/all/x' },\r\n buttons :[\r\n // { name: 'view', dialog : true, tip: 'View Log' },\r\n ]\r\n }\r\n }\r\n\r\n}\r\n","\r\n <spa-page [config]=\"logsPageConfig\"></spa-page>\r\n","import { Component, OnInit, Inject, ViewChild } from \"@angular/core\";\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from \"@angular/material/dialog\";\r\nimport { DataServiceLib } from \"../../services/datalib.service\";\r\nimport { Router } from \"@angular/router\";\r\nimport { MessageService } from \"../../services/message.service\";\r\nimport { AuthService } from \"../../services/auth.service\";\r\nimport { TableConfig, ApiResponse, FormConfig, Button, DetailsDialogConfig } from '../../classes/Classes';\r\nimport { HttpService } from \"../../services/http.service\";\r\nimport { User } from \"../../classes/LibClasses\";\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\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.loadMeta()\r\n }\r\n\r\n\r\n inputChanged(x) {\r\n console.log(x);\r\n\r\n }\r\n\r\n loadMeta(){\r\n this.dataService.CallApi({ url: 'role/meta/x' }).subscribe((apiResponse: ApiResponse) => {\r\n console.log(apiResponse.data);\r\n this.userBaseFormConfig.fields.find(x => x.name == 'roleID').options = apiResponse.data.roles;\r\n this.userBaseFormConfig.fields.find(x => x.name == 'authType').options = apiResponse.data.authTypes;\r\n\r\n this.createDialog.formConfig.fields.find(x => x.name == 'roleID').options = apiResponse.data.roles;\r\n this.createDialog.formConfig.fields.find(x => x.name == 'authType').options = apiResponse.data.authTypes.filter(x => x.value == 'local' || x.value == 'AD');\r\n })\r\n }\r\n\r\n\r\n userBaseFormConfig: FormConfig = {\r\n fields: [\r\n { name: 'userName', type: 'text', alias: 'Username', required: true, span : true, readonly : true },\r\n { name: 'authType', type: 'select', alias: 'Authentication Type', readonly: true, span: true, required: true, defaultFirstValue: true },\r\n {\r\n name: 'firstName', type: 'text', required: true,\r\n readonlyCondition: x => x.authType !== 'local',\r\n },\r\n {\r\n name: 'lastName', type: 'text', required: true,\r\n readonlyCondition: x => x.authType !== 'local',\r\n },\r\n {\r\n name: 'password', type: 'password', required: true,\r\n hiddenCondition: x => x.authType !== 'local', span: true,\r\n },\r\n {\r\n name: 'confirmPassword', type: 'password', required: true,\r\n hiddenCondition: x => x.authType !== 'local', span: true\r\n },\r\n { name: 'email', type: 'text', required: false, span: true },\r\n { name: 'roleID', type: 'select', alias: 'Role', required: true, span: true, defaultFirstValue: true },\r\n ],\r\n };\r\n\r\n\r\n createDialog: DetailsDialogConfig = {\r\n formConfig: {\r\n title: 'User',\r\n fields: [\r\n\r\n\r\n { name: 'userName', type: 'text', alias: 'Username', required: true, span: true },\r\n { \r\n name: 'authType', type: 'select', alias: 'Authentication Type', span: true, required: true, defaultFirstValue: true,\r\n onSelectChange: (value, data) => {\r\n if (value === 'AD' && data.userName?.trim()) {\r\n this.dataService.CallApi({ url: `user/ad/${data.userName}` }).subscribe((response: ApiResponse) => {\r\n if (response.success && response.data) {\r\n data.firstName = response.data.firstName || '';\r\n data.lastName = response.data.surname || '';\r\n data.email = response.data.emailAddress || '';\r\n this.messageService.toast('AD user found');\r\n } else {\r\n this.messageService.toast(response.message || 'AD user not found');\r\n }\r\n });\r\n }\r\n }\r\n },\r\n { name: 'firstName', type: 'text', required: true, readonlyCondition: x => x.authType !== 'local' },\r\n { name: 'lastName', type: 'text', required: true, readonlyCondition: x => x.authType !== 'local' },\r\n { name: 'password', type: 'password', required: true, hiddenCondition: x => x.authType !== 'local', span: true },\r\n { name: 'confirmPassword', type: 'password', required: true, hiddenCondition: x => x.authType !== 'local', span: true },\r\n { name: 'email', type: 'text', required: false, span: true },\r\n { name: 'roleID', type: 'select', alias: 'Role', required: true, span: true, defaultFirstValue: true },\r\n ]\r\n },\r\n mode: 'create',\r\n buttons: [\r\n { name: 'create', action: { method: 'post', url: 'User/register', successMessage: \"User Created\" }}\r\n ]\r\n }\r\n\r\n editDialog : DetailsDialogConfig = {\r\n formConfig: {\r\n ...this.userBaseFormConfig,\r\n title : 'User',\r\n fields : this.userBaseFormConfig.fields.filter(x => x.name !== 'password' && x.name !== 'confirmPassword')\r\n },\r\n mode: 'view',\r\n buttons: [\r\n { name: 'edit', action: { method: 'post', url: 'User/edit', successMessage: \"User Updated\" } }\r\n ]\r\n }\r\n\r\n passwordDialog: DetailsDialogConfig = {\r\n formConfig: {\r\n ...this.userBaseFormConfig,\r\n title : 'Change Password',\r\n fixedTitle: true,\r\n alertConfig: { messages: [\r\n { type: 'info', content: '*Please consider these requirements for your new password.' },\r\n { type: 'info', content: 'At least 8 characters.' },\r\n { type: 'info', content: 'At least 1 uppercase letter' },\r\n { type: 'info', content: 'At least 2 lowercase letters (a-z)' },\r\n { type: 'info', content: 'At least 1 digit (0-9)' },\r\n { type: 'info', content: ' At least 1 special character (~`! …)' },\r\n ]},\r\n fields: [\r\n { name: 'newPassword', type: 'password', required: true },\r\n { name: 'confirmPassword', type: 'password', required: true }\r\n ]\r\n },\r\n mode: 'edit',\r\n buttons: [\r\n { name: 'edit', action: { method: 'post', url: 'User/changepassword-admin', successMessage: 'Password Changed' } }\r\n ]\r\n }\r\n\r\n usersTableConfig : TableConfig = {\r\n showFilter: true,\r\n minButtons: ['fullName','roleName'],\r\n greyOut : (value) => value.disabled == 1,\r\n collapseButtons: true,\r\n minColumns: ['userName', 'fullName', 'roleName', 'locked', 'dateCreated'],\r\n flatButtons: this.dataService.appConfig.multitenant,\r\n columns: [\r\n { name: 'userName', type: 'text'},\r\n { name: 'fullName', type: 'text' },\r\n { name: 'roleName', type: 'text' },\r\n { name: 'locked', type: 'checkbox' },\r\n { name: 'createdDate', type: 'date' },\r\n ],\r\n buttons: [\r\n { name: 'create', display: 'New User', dialog: true, detailsConfig : this.createDialog },\r\n { name: 'view', dialog: true, icon: { name: 'account_circle' }, detailsConfig: this.editDialog },\r\n {\r\n name: 'changePassword', display: 'Change Password', tip : 'Change Password', icon: { name: 'key' }, dialog: true, detailsConfig: this.passwordDialog,\r\n visible: x => x.authType === 'local'\r\n },\r\n { name: 'lock', action: { method: 'post', url: 'User/lock', successMessage: \"User locked\" }, color: 'red', tip: 'lock', icon: { name: 'lock' },\r\n visible: (value) => value.locked == 0\r\n },\r\n { name: 'unlock', action: { method: 'post', url: 'User/unlock', successMessage: \"User Unlocked\" }, color: 'green', tip: 'unlock', icon: { name: 'lock_open' },\r\n visible: (value) => value.locked == 1\r\n },\r\n { name: 'delete', action: { method: 'post', url: 'User/delete', successMessage: \"User Deleted\" }, color: 'red' },\r\n ],\r\n loadAction: { url: 'User/all/x' },\r\n }\r\n\r\n\r\n}\r\n","\r\n<h4>Users</h4>\r\n<hr />\r\n\r\n<spa-table [config]=\"usersTableConfig\" (inputChange)=\"inputChanged($event)\"></spa-table>\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 { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { LoaderService } from '../../services/loader.service';\r\nimport { Role } from '../../classes/LibClasses';\r\nimport { ApiResponse } 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 loaderService: LoaderService,private messageService: MessageService, private dataService: DataServiceLib, private authService: AuthService, private dialogRef: MatDialogRef<addRoleDialog>, @Inject(MAT_DIALOG_DATA) public data) { }\r\n\r\n ngOnInit() {\r\n this.capItems = this.data;\r\n this.loaderService.isLoading.subscribe(x => this.isProcessing = x);\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.dataService.PostRole(this.role, \"create\").subscribe((apiResponse: ApiResponse) => {\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","<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\r\n <div class=\"tin-row\" style=\" font-size:12px;\">\r\n\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capItem of capItems\">\r\n\r\n <mat-checkbox color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capItem.name]\">{{capItem.display}}</mat-checkbox>\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capSubItem of capItem.capSubItems\">\r\n\r\n <mat-checkbox color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capSubItem.name]\">{{capSubItem.display}}</mat-checkbox>\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capSubSubItem of capSubItem.capSubItems\">\r\n\r\n <mat-checkbox color=\"primary\" style=\"min-width: 100px;\" [(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 </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 { ApiResponse, AppConfig, Button, CapItem, DetailsDialogConfig, RoleAccess } from './../../classes/Classes';\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { MatDialog } from \"@angular/material/dialog\";\r\nimport { DataServiceLib } from \"../../services/datalib.service\";\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\nimport { DetailsDialog } from '../../components/table/detailsDialog.component';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { Role } from '../../classes/LibClasses';\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\r\n constructor(private httpService: HttpService, private router: Router, private authService: AuthService, private dataService: DataServiceLib, private dialogService : DialogService, 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 RoleAccess = RoleAccess;\r\n\r\n appConfig = new AppConfig();\r\n\r\n roleAccessOptions = [\r\n { value: RoleAccess.None, name: 'None' },\r\n { value: RoleAccess.View, name: 'View' },\r\n { value: RoleAccess.Edit, name: 'Edit' },\r\n { value: RoleAccess.Create, name: 'Create' },\r\n { value: RoleAccess.Full, name: 'Full' }\r\n ];\r\n\r\n\r\n\r\n loadRoles() {\r\n this.dataService.GetRole(\"all\", \"\").subscribe((apiResponse : ApiResponse) => {\r\n this.roles = apiResponse.data;\r\n });\r\n }\r\n\r\n refresh() {\r\n this.loadRoles();\r\n }\r\n\r\n onCapItemChange(capItem: CapItem, checked: boolean, role: any) {\r\n\r\n return; //disabled to allow sub component access without granting whole menu access\r\n\r\n if (!checked && capItem.capSubItems) {\r\n // When parent is unchecked, set all subitems to Restricted\r\n capItem.capSubItems.forEach(subItem => {\r\n role[subItem.name] = RoleAccess.None;\r\n });\r\n }\r\n }\r\n\r\n hasSubItemsAccess(capItem: CapItem, role: any): boolean {\r\n if (!capItem.capSubItems) return false;\r\n\r\n // Check if any sub-item has access\r\n return capItem.capSubItems.some(subItem => {\r\n // Check direct sub-items\r\n if (role[subItem.name] > 0) return true;\r\n\r\n // Check sub-sub-items recursively\r\n if (subItem.capSubItems) {\r\n return subItem.capSubItems.some(subSubItem => role[subSubItem.name] > 0);\r\n }\r\n return false;\r\n });\r\n }\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: 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: 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 renameDialogConfig: DetailsDialogConfig = {\r\n formConfig: {\r\n title: 'Rename Role',\r\n fixedTitle: true,\r\n fields: [\r\n { name: 'roleName', type: 'text', required: true, span: true, alias: 'Role Name' }\r\n ]\r\n },\r\n mode: 'edit',\r\n buttons: [\r\n { name: 'edit', dialog: true, action: { url: 'role?action=edit', method: 'post', successMessage: 'Role renamed successfully' } }\r\n ]\r\n };\r\n\r\n renameButton : Button = {name : 'edit', dialog : true, detailsConfig : this.renameDialogConfig};\r\n\r\n renameRole(role: Role) {\r\n // Create role copy to avoid modifying the original during editing\r\n const roleData = { ...role };\r\n\r\n // Open rename dialog\r\n const dialogRef = this.dialogService.openConfiguredDetailsDialog(\r\n this.renameButton,\r\n roleData,\r\n DetailsDialog\r\n ).subscribe(result => {\r\n if (result.message === 'success') {\r\n this.loadRoles();\r\n }\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-fluid mb-5\">\r\n\r\n <div class=\"d-flex justify-content-between mb-2\">\r\n\r\n <div >\r\n <button id=\"btnNewRole\" mat-raised-button color=\"primary\" (click)=\"addRole()\">New Role</button>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end\">\r\n <button id=\"btnRefresh\" mat-mini-fab color=\"primary\" (click)=\"refresh()\" matTooltip=\"refresh data\" matTooltipPosition=\"right\"><mat-icon class=\"refreshIcon\">refresh</mat-icon></button>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"row mt-2 mb-1\" *ngFor=\"let role of roles\">\r\n\r\n <mat-card class=\"mat-elevation-z8\" style=\"width:100%\">\r\n\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n\r\n <label style=\"font-size: 16px;\">{{role.roleName}}</label>\r\n\r\n <button mat-icon-button color=\"primary\" matTooltip=\"Rename Role\" (click)=\"renameRole(role)\">\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <hr style=\"margin-top: 0px;\">\r\n\r\n <div class=\"tin-row\" style=\" font-size:12px;\">\r\n\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capItem of appConfig.capItems\">\r\n\r\n <!-- Main item-->\r\n <mat-checkbox *ngIf=\"capItem.isBool || capItem.capSubItems\"\r\n color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capItem.name]\" (ngModelChange)=\"onCapItemChange(capItem, $event, role)\">\r\n {{capItem.display}}\r\n <span *ngIf=\"!role[capItem.name] && hasSubItemsAccess(capItem, role)\" class=\"asterisk\" style=\"color: red;\">*</span>\r\n </mat-checkbox>\r\n\r\n <spa-select\r\n *ngIf=\"!capItem.isBool && !capItem.capSubItems\"\r\n [options]=\"roleAccessOptions\"\r\n optionDisplay=\"name\"\r\n optionValue=\"value\"\r\n [display]=\"capItem.display\"\r\n [(value)]=\"role[capItem.name]\"\r\n width=\"100px\" style=\"font-size: 12px;\">\r\n </spa-select>\r\n\r\n\r\n <ng-container *ngIf=\"capItem.capSubItems && role[capItem.name]\">\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capSubItem of capItem.capSubItems\">\r\n\r\n\r\n <!-- Sub Item -->\r\n <mat-checkbox *ngIf=\"capSubItem.isBool\"\r\n color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capSubItem.name]\">\r\n {{capSubItem.display}}\r\n </mat-checkbox>\r\n\r\n <spa-select\r\n *ngIf=\"!capSubItem.isBool\"\r\n [options]=\"roleAccessOptions\"\r\n optionDisplay=\"name\"\r\n optionValue=\"value\"\r\n [display]=\"capSubItem.display\"\r\n [(value)]=\"role[capSubItem.name]\"\r\n width=\"100px\" style=\"font-size: 12px;\">\r\n </spa-select>\r\n\r\n <ng-container *ngIf=\"capSubItem.capSubItems\">\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capSubSubItem of capSubItem.capSubItems\">\r\n\r\n <!-- Sub Sub Items -->\r\n <mat-checkbox *ngIf=\"capSubSubItem.isBool\"\r\n color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capSubSubItem.name]\">\r\n {{capSubSubItem.display}}\r\n </mat-checkbox>\r\n\r\n <spa-select\r\n *ngIf=\"!capSubSubItem.isBool\"\r\n [options]=\"roleAccessOptions\"\r\n optionDisplay=\"name\"\r\n optionValue=\"value\"\r\n [display]=\"capSubSubItem.display\"\r\n [(value)]=\"role[capSubSubItem.name]\"\r\n width=\"100px\" style=\"font-size: 12px;\">\r\n </spa-select>\r\n\r\n </div>\r\n\r\n </ng-container>\r\n\r\n\r\n\r\n </div>\r\n\r\n </ng-container>\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)=\"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 { DataServiceLib } from '../../services/datalib.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 { AppConfig, ApiResponse } from '../../classes/Classes';\r\nimport { Router } from '@angular/router';\r\nimport { HttpService } from '../../services/http.service';\r\nimport { Register } from '../../classes/LibClasses';\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 this.loadRoles();\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 roles;\r\n\r\n check(){\r\n\r\n if ( this.register.authType != \"AD\") {\r\n\r\n return;\r\n }\r\n\r\n if (this.register.userName == \"\"){\r\n this.messageService.toast(\"Please enter UserName\")\r\n return;\r\n }\r\n\r\n this.dataService.CallApi({url: 'User/ad/' + this.register.userName}, '').subscribe((apiResponse : ApiResponse) => {\r\n\r\n if (apiResponse.success){\r\n this.register.firstName = apiResponse.data.firstName;\r\n this.register.lastName = apiResponse.data.surname;\r\n this.register.email = apiResponse.data.emailAddress;\r\n }\r\n else{\r\n this.messageService.toast(apiResponse.message)\r\n }\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 },\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 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 if (this.register.firstName == \"\") {\r\n this.messageService.toast(\"Enter First Name\");\r\n return;\r\n }\r\n\r\n if (this.register.lastName == \"\") {\r\n this.messageService.toast(\"Enter Last Name\");\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","<h4>Create User</h4>\r\n\r\n<hr/>\r\n\r\n<div class=\"container tin-grid\" style=\"font-size:14px; max-width: 70%;\">\r\n\r\n <spa-text id=\"txtUserName\" display=\"Username\" [(value)]=\"register.userName\"></spa-text>\r\n\r\n &nbsp;\r\n\r\n <spa-select id=\"cboAuth\" display=\"Authentication Type\" [options]=\"authTypes\" optionDisplay=\"name\" optionValue=\"value\" [(value)]=\"register.authType\" (valueChange)=\"check()\" ></spa-select>\r\n\r\n &nbsp;\r\n\r\n <spa-text id=\"txtFirstName\" display=\"FirstName\" [(value)]=\"register.firstName\" [readonly]=\"register.authType =='AD'\"></spa-text>\r\n\r\n <spa-text id=\"txtLastName\" display=\"LastName\" [(value)]=\"register.lastName\" [readonly]=\"register.authType =='AD'\"></spa-text>\r\n\r\n\r\n <spa-text *ngIf=\"register.authType == 'local'\" id=\"txtPassword\" display=\"Password\" format=\"password\" [(value)]=\"register.password\" ></spa-text>\r\n\r\n <spa-text *ngIf=\"register.authType == 'local'\" id=\"txtConfirmPassword\" display=\"Confirm Password\" format=\"password\" [(value)]=\"confirmPassword\" ></spa-text>\r\n\r\n <spa-text id=\"txtEmail\" display=\"Email\" [(value)]=\"register.email\"></spa-text>\r\n\r\n &nbsp;\r\n\r\n <spa-select id=\"cboRole\" display=\"Role\" [options]=\"roles\" optionDisplay=\"roleName\" optionValue=\"roleID\" [(value)]=\"register.roleID\"></spa-select>\r\n\r\n &nbsp;\r\n\r\n <spa-check display=\"Open profile after creation\" [(value)]=\"openProfile\"></spa-check>\r\n\r\n <div class=\"span-col-center\">\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\r\n\r\n</div>\r\n\r\n\r\n","import { SettingsComponent } from '../pages/settings/settings.component';\r\nimport { LogsComponent } from '../pages/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 \"../pages/users/users.component\";\r\nimport { RolesComponent } from \"../pages/roles/roles.component\";\r\nimport { addRoleDialog } from \"../pages/roles/addRoleDialog.component\";\r\nimport { CreateAccountComponent } from \"../pages/create-account/create-account.component\";\r\nimport { TinSpaModule } from '../tin-spa.module';\r\n\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 ],\r\n\r\n\r\n\r\n imports: [\r\n ReactiveFormsModule.withConfig({ warnOnNgModelWithFormControl: \"never\" }),\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n TinSpaModule\r\n ],\r\n\r\n exports: [\r\n CommonModule,\r\n FormsModule,\r\n TinSpaModule,\r\n UsersComponent,\r\n RolesComponent,\r\n addRoleDialog,\r\n CreateAccountComponent,\r\n LogsComponent,\r\n SettingsComponent,\r\n\r\n\r\n ],\r\n})\r\nexport class SpaAdminModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { SignupComponent } from '../../pages/signup/signup.component';\r\nimport { RecoverAccountComponent } from '../../pages/recover-account/recover-account.component';\r\nimport { LoginComponent } from '../../pages/login/login.component';\r\n\r\nconst routes: Routes = [\r\n\r\n { path: \"signup\", component: SignupComponent },\r\n { path: 'recover-account', component: RecoverAccountComponent },\r\n { path: 'login', component: LoginComponent },\r\n { path: '', redirectTo: 'login', pathMatch: 'full' },\r\n { path: '**', redirectTo: '' },\r\n\r\n];\r\n\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class IndexRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { IndexRoutingModule } from './index-routing.module';\r\nimport { SpaIndexModule } from '../spa-index.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n IndexRoutingModule,\r\n SpaIndexModule\r\n ]\r\n})\r\nexport class IndexModule { }\r\n","\r\nimport { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { UsersComponent } from '../../pages/users/users.component';\r\nimport { RolesComponent } from '../../pages/roles/roles.component';\r\nimport { CreateAccountComponent } from '../../pages/create-account/create-account.component';\r\nimport { LogsComponent } from '../../pages/logs/logs.component';\r\nimport { SettingsComponent } from '../../pages/settings/settings.component';\r\nimport { TenantSettingsComponent } from '../../pages/tenant-settings/tenant-settings.component';\r\nimport { TenantsComponent } from '../../pages/tenants/tenants.component';\r\nimport { BugComponent } from '../../pages/bug/bug.component';\r\nimport { MembershipComponent } from '../../pages/membership/membership.component';\r\nimport { PlansComponent } from '../../pages/plans/plans.component';\r\nimport { CustomersComponent } from '../../pages/customers/customers.component';\r\nimport { InventoryComponent } from '../../pages/inventory/inventory.component';\r\nimport { SuppliersComponent } from '../../pages/suppliers/suppliers.component';\r\nimport { AccountsComponent } from '../../pages/accounts/accounts.component';\r\nimport { TransactionsComponent } from '../../pages/transactions/transactions.component';\r\nimport { TasksComponent } from '../../pages/tasks/tasks.component';\r\nimport { EmployeesComponent } from '../../pages/employees/employees.component';\r\nimport { DepartmentsComponent } from '../../pages/departments/departments.component';\r\nimport { PositionsComponent } from '../../pages/positions/positions.component';\r\nimport { GradesComponent } from '../../pages/grades/grades.component';\r\nimport { WelcomeComponent } from '../../pages/welcome/welcome.component';\r\nimport { ApprovalsComponent } from '../../pages/approvals/approvals.component';\r\nimport { ApprovalsConfigComponent } from '../../pages/approvals-config/approvals-config.component';\r\nimport { NotificationsComponent } from '../../pages/notifications/notifications.component';\r\nimport { AppModelsComponent } from '../../pages/app-models/app-models.component';\r\nimport { NotificationsConfigComponent } from '../../pages/notifications-config/notifications-config.component';\r\n\r\nconst routes: Routes = [\r\n { path: \"users\", component: UsersComponent},\r\n { path: \"roles\", component: RolesComponent},\r\n { path: \"create-account\", component: CreateAccountComponent },\r\n { path: \"logs\", component: LogsComponent},\r\n { path: \"settings\", component: SettingsComponent},\r\n\r\n { path: \"tenant-settings\", component: TenantSettingsComponent },\r\n { path: \"tenants\", component: TenantsComponent },\r\n { path: \"bug\", component: BugComponent },\r\n { path: \"membership\", component: MembershipComponent },\r\n { path: \"plans\", component: PlansComponent },\r\n\r\n { path: \"customers\", component: CustomersComponent },\r\n { path: \"inventory\", component: InventoryComponent },\r\n { path: \"suppliers\", component: SuppliersComponent },\r\n { path: \"accounts\", component: AccountsComponent },\r\n { path: \"transactions\", component: TransactionsComponent },\r\n { path: \"tasks\", component: TasksComponent },\r\n\r\n { path: \"employees\", component: EmployeesComponent },\r\n { path: \"departments\", component: DepartmentsComponent },\r\n { path: \"positions\", component: PositionsComponent },\r\n { path: \"grades\", component: GradesComponent },\r\n { path: \"welcome\", component: WelcomeComponent },\r\n { path: \"approvals\", component: ApprovalsComponent },\r\n { path: \"approvals-config\", component: ApprovalsConfigComponent },\r\n { path: \"notifications\", component: NotificationsComponent },\r\n { path: \"appmodels\", component: AppModelsComponent },\r\n { path: \"notifications-config\", component: NotificationsConfigComponent },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AdminRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { AdminRoutingModule } from './admin-routing.module';\r\nimport { SpaAdminModule } from '../spa-admin.module';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n AdminRoutingModule,\r\n SpaAdminModule\r\n ]\r\n})\r\nexport class AdminModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { ChangePasswordComponent } from '../../pages/change-password/change-password.component';\r\nimport { ProfileComponent } from '../../pages/profile/profile.component';\r\n\r\nconst routes: Routes = [\r\n {path: \"change-password\", component: ChangePasswordComponent },\r\n {path: \"profile\", component: ProfileComponent },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class UserRoutingModule { }\r\n","\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UserRoutingModule } from './user-routing.module';\r\nimport { SpaUserModule } from '../spa-user.module';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n UserRoutingModule,\r\n SpaUserModule\r\n ]\r\n})\r\nexport class UserModule { }\r\n","/*\r\n * Public API Surface of tin-spa\r\n */\r\n\r\n\r\n\r\n//Services\r\nexport * from './lib/services/tin-spa.service';\r\nexport * from './lib/services/storage.service';\r\nexport * from './lib/services/message.service';\r\nexport * from './lib/services/export.service';\r\nexport * from './lib/services/auth.service';\r\nexport * from './lib/services/datalib.service';\r\nexport * from './lib/services/log.service';\r\nexport * from './lib/services/http.service';\r\nexport * from './lib/services/loader.service';\r\nexport * from './lib/services/dialog.service';\r\n\r\n\r\n//classes\r\nexport * from './lib/classes/Classes';\r\nexport * from './lib/classes/TinCore';\r\n\r\n\r\n//modules\r\nexport * from './lib/tin-spa.module';\r\nexport * from './lib/modules/spa-mat.module'\r\nexport * from './lib/modules/spa-index.module'\r\nexport * from './lib/modules/spa-user.module'\r\nexport * from './lib/modules/spa-admin.module'\r\nexport * from './lib/modules/index/index.module'\r\nexport * from './lib/modules/admin/admin.module'\r\nexport * from './lib/modules/user/user.module'\r\n\r\n//components\r\nexport * from './lib/components/tin-spa.component';\r\nexport * from './lib/components/tiles/tiles.component';\r\nexport * from './lib/components/alert/alert.component';\r\nexport * from './lib/components/date/date.component';\r\nexport * from './lib/components/text/text.component';\r\nexport * from './lib/components/multi-text/multi-text.component';\r\nexport * from './lib/components/label/label.component';\r\nexport * from './lib/components/datetime/datetime.component';\r\nexport * from './lib/components/select/select.component';\r\nexport * from './lib/components/multi-select/multi-select.component';\r\nexport * from './lib/components/select-bitwise/select-bitwise.component';\r\nexport * from './lib/components/attach/attach.component';\r\nexport * from './lib/components/check/check.component';\r\n// export * from './lib/components/viewer/viewer.component';\r\nexport * from './lib/components/money/money.component';\r\nexport * from './lib/components/chips/chips.component';\r\nexport * from './lib/components/activity/activity.component';\r\n// export * from './lib/components/html/html.component';\r\nexport * from './lib/components/option/option.component';\r\nexport * from './lib/components/steps/steps.component';\r\nexport * from './lib/components/filter/filter.component';\r\nexport * from './lib/components/message/messageDialog.component';\r\nexport * from './lib/components/loader/loader.component';\r\n\r\nexport * from './lib/components/table/table.component';\r\nexport * from './lib/components/table/detailsDialog.component';\r\nexport * from './lib/components/form/form.component';\r\nexport * from './lib/components/number/number.component';\r\nexport * from './lib/components/search/search.component';\r\nexport * from './lib/components/viewer/viewer.component';\r\nexport * from './lib/components/viewer/viewerDialog.component';\r\nexport * from './lib/components/nav-menu/nav-menu.component';\r\nexport * from './lib/components/list-dialog/list-dialog.component';\r\nexport * from './lib/components/email/email.component';\r\nexport * from './lib/components/page/page.component';\r\nexport * from './lib/components/html/html.component';\r\nexport * from './lib/components/notes/notes.component';\r\nexport * from './lib/components/capsules/capsules.component';\r\nexport * from './lib/components/tabs/tabs.component';\r\nexport * from './lib/components/statuses/statuses.component';\r\n\r\n//pages\r\nexport * from './lib/pages/transactions/transactions.component';\r\nexport * from './lib/pages/tasks/tasks.component';\r\n\r\nexport * from './lib/pages/departments/departments.component';\r\nexport * from './lib/pages/employees/employees.component';\r\nexport * from './lib/pages/positions/positions.component';\r\nexport * from './lib/pages/grades/grades.component';\r\nexport * from './lib/pages/welcome/welcome.component';\r\nexport * from './lib/pages/customers/customers.component';\r\nexport * from './lib/pages/inventory/inventory.component';\r\nexport * from './lib/pages/accounts/accounts.component';\r\nexport * from './lib/pages/suppliers/suppliers.component';\r\nexport * from './lib/pages/users/users.component';\r\nexport * from './lib/pages/login/login.component';\r\n\r\nexport * from './lib/pages/roles/roles.component';\r\nexport * from './lib/pages/roles/addRoleDialog.component';\r\nexport * from './lib/pages/signup/signup.component';\r\nexport * from './lib/pages/change-password/change-password.component';\r\nexport * from './lib/pages/profile/profile.component';\r\nexport * from './lib/pages/recover-account/recover-account.component';\r\nexport * from './lib/pages/create-account/create-account.component';\r\n\r\nexport * from './lib/pages/logs/logs.component';\r\nexport * from './lib/pages/settings/settings.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i4","i1","i5","i2","i3.StorageService","i4.HttpService","i5.MessageService","i6.LogService","i1.HttpService","i3.AuthService","i1.MessageService","i1.DataServiceLib","i6","i7","i8","i10","i11.SuffixComponent","i2.DataServiceLib","i9","i10.SuffixComponent","i1.AuthService","i2.AuthService","i5.CurrencyInputMaskDirective","i6.SuffixComponent","i5.SuffixComponent","i7.ChipsComponent","i5.ChipsComponent","i9.SuffixComponent","i11","i12.SuffixComponent","i7.TextComponent","i8.CheckComponent","i9.DateComponent","i10.DatetimeComponent","i11.LabelComponent","i12.MoneyComponent","i13.AttachComponent","i14.NumberComponent","i15.ViewerComponent","i16.EmailComponent","i17.MultiTextComponent","i18.MultiSelectComponent","i19.HtmlComponent","i20.NotesComponent","i21.CamelToWordsPipe","i1.SelectCommonComponent","i6.ButtonService","i7.DialogService","i8.AuthService","i9.TableConfigService","i12","i13","i14","i15.CheckComponent","i16.StepsComponent","i17.FormComponent","i18.AlertComponent","i19.SelectLiteComponent","i20.StatusesComponent","i3.DialogService","i4.ButtonService","i9.SelectCommonComponent","i10.TextComponent","i11.DateComponent","i12.SelectLiteComponent","i13.MultiTextComponent","i14.MultiSelectComponent","i5.FilterComponent","i6.OptionComponent","i7.CamelToWordsPipe","i2.MessageService","i8.CamelToWordsPipe","i1.ButtonService","i2.DialogService","i3.MessageService","i4.CsvService","i9.FilterComponent","i10.TilesComponent","i7.CheckComponent","i8.SelectLiteComponent","i2.ConditionService","i5.ButtonService","i6.DialogService","i7.TableConfigService","i8.ConditionService","i9.AuthService","i13.SearchComponent","i14.TableHeaderComponent","i15.TableRowComponent","i16.TableActionComponent","i17.CapsulesComponent","i18.CardsComponent","i19.CamelToWordsPipe","i16.CheckComponent","i17.StepsComponent","i18.FormComponent","i19.AlertComponent","i20.SelectInternalComponent","i21.TableLiteComponent","i22.StatusesComponent","i23.CamelToWordsPipe","i1.LoaderService","i4.NotificationsService","i7.DataServiceLib","i15","i19.LoaderComponent","i5.LogService","i17.SelectComponent","i18.StepsComponent","i19.TableInternalComponent","i20.FormComponent","i21.AlertComponent","i4.TableComponent","i7.LabelComponent","i8.SelectComponent","i9.TableComponent","i10.InvitationsTableComponent","i2.TableComponent","i3.TableComponent","i6.TextComponent","i7.NumberComponent","i8.TableComponent","i7.SelectComponent","i4.AuthService","i10.FilterComponent","i8.DateComponent","i9.SelectComponent","i10.MoneyComponent","i10.TableComponent","i8.InvitationsTableComponent","i2.NotificationsService","i4.CheckComponent","i5.TableComponent","i2.PageComponent","i2.StorageService","i4.MessageService","i5.DataServiceLib","i6.AuthService","i7.LogService","i9.NotificationsService","i16","i17","i18","i19.TextComponent","i3.DataServiceLib","i3.HttpService","i8.TextComponent","i5.AuthService","i9.TextComponent","i10.SelectComponent","i3.PageComponent","i4.DataServiceLib","i6.MessageService","i7.TableComponent","i5.DialogService","i7.MessageService","i15.SelectComponent","i10.CheckComponent","routes"],"mappings":"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,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,K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"}