tin-spa 2.0.0 → 2.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 (241) hide show
  1. package/README.md +2 -2
  2. package/{esm2015/lib/classes/Classes.js → esm2020/lib/classes/Classes.mjs} +15 -55
  3. package/esm2020/lib/classes/TinCore.mjs +148 -0
  4. package/esm2020/lib/components/activity/activity.component.mjs +24 -0
  5. package/esm2020/lib/components/attach/attach.component.mjs +105 -0
  6. package/esm2020/lib/components/change-password/change-password.component.mjs +92 -0
  7. package/esm2020/lib/components/check/check.component.mjs +56 -0
  8. package/esm2020/lib/components/chips/chips.component.mjs +58 -0
  9. package/esm2020/lib/components/create-account/create-account.component.mjs +72 -0
  10. package/esm2020/lib/components/date/date.component.mjs +64 -0
  11. package/esm2020/lib/components/datetime/datetime.component.mjs +39 -0
  12. package/esm2020/lib/components/filter/filter.component.mjs +46 -0
  13. package/esm2020/lib/components/form/form.component.mjs +63 -0
  14. package/esm2020/lib/components/label/label.component.mjs +25 -0
  15. package/esm2020/lib/components/loader/loader.component.mjs +24 -0
  16. package/esm2020/lib/components/login/login.component.mjs +113 -0
  17. package/esm2020/lib/components/logs/logs.component.mjs +37 -0
  18. package/esm2020/lib/components/message/messageDialog.component.mjs +32 -0
  19. package/esm2020/lib/components/money/currency-input-mask.directive.mjs +185 -0
  20. package/esm2020/lib/components/money/currency-input-mask.module.mjs +28 -0
  21. package/esm2020/lib/components/money/money.component.mjs +64 -0
  22. package/esm2020/lib/components/nav-menu/nav-menu.component.mjs +49 -0
  23. package/esm2020/lib/components/number/number.component.mjs +86 -0
  24. package/esm2020/lib/components/option/option.component.mjs +59 -0
  25. package/esm2020/lib/components/profile/profile.component.mjs +93 -0
  26. package/esm2020/lib/components/recover-account/recover-account.component.mjs +46 -0
  27. package/esm2020/lib/components/roles/addRoleDialog.component.mjs +61 -0
  28. package/esm2020/lib/components/roles/roles.component.mjs +91 -0
  29. package/esm2020/lib/components/select/select.component.mjs +71 -0
  30. package/esm2020/lib/components/settings/settings.component.mjs +63 -0
  31. package/esm2020/lib/components/signup/signup.component.mjs +50 -0
  32. package/esm2020/lib/components/steps/steps.component.mjs +90 -0
  33. package/esm2020/lib/components/table/detailsDialog.component.mjs +149 -0
  34. package/esm2020/lib/components/table/table.component.mjs +341 -0
  35. package/esm2020/lib/components/text/text.component.mjs +166 -0
  36. package/esm2020/lib/components/tiles/tiles.component.mjs +41 -0
  37. package/esm2020/lib/components/tin-spa.component.mjs +19 -0
  38. package/esm2020/lib/components/users/users.component.mjs +119 -0
  39. package/esm2020/lib/modules/admin/admin-routing.module.mjs +29 -0
  40. package/esm2020/lib/modules/admin/admin.module.mjs +26 -0
  41. package/esm2020/lib/modules/index/index-routing.module.mjs +27 -0
  42. package/esm2020/lib/modules/index/index.module.mjs +26 -0
  43. package/esm2020/lib/modules/spa-admin.module.mjs +73 -0
  44. package/esm2020/lib/modules/spa-index.module.mjs +52 -0
  45. package/esm2020/lib/modules/spa-mat.module.mjs +67 -0
  46. package/esm2020/lib/modules/spa-user.module.mjs +49 -0
  47. package/esm2020/lib/modules/user/user-routing.module.mjs +23 -0
  48. package/esm2020/lib/modules/user/user.module.mjs +26 -0
  49. package/esm2020/lib/pipes/camelToWords.pipe.mjs +23 -0
  50. package/esm2020/lib/services/auth.service.mjs +142 -0
  51. package/esm2020/lib/services/data.service.mjs +125 -0
  52. package/esm2020/lib/services/export.service.mjs +16 -0
  53. package/esm2020/lib/services/http.service.mjs +79 -0
  54. package/esm2020/lib/services/loader-interceptor.service.mjs +77 -0
  55. package/esm2020/lib/services/loader.service.mjs +17 -0
  56. package/esm2020/lib/services/log.service.mjs +77 -0
  57. package/esm2020/lib/services/message.service.mjs +52 -0
  58. package/esm2020/lib/services/storage.service.mjs +34 -0
  59. package/esm2020/lib/services/tin-spa.service.mjs +14 -0
  60. package/esm2020/lib/tin-spa.module.mjs +114 -0
  61. package/esm2020/public-api.mjs +62 -0
  62. package/esm2020/tin-spa.mjs +5 -0
  63. package/fesm2015/tin-spa.mjs +3846 -0
  64. package/fesm2015/tin-spa.mjs.map +1 -0
  65. package/fesm2020/tin-spa.mjs +3829 -0
  66. package/fesm2020/tin-spa.mjs.map +1 -0
  67. package/index.d.ts +5 -0
  68. package/lib/classes/Classes.d.ts +58 -63
  69. package/lib/classes/TinCore.d.ts +1 -0
  70. package/lib/components/activity/activity.component.d.ts +3 -0
  71. package/lib/components/attach/attach.component.d.ts +4 -1
  72. package/lib/components/change-password/change-password.component.d.ts +3 -0
  73. package/lib/components/check/check.component.d.ts +3 -0
  74. package/lib/components/chips/chips.component.d.ts +3 -0
  75. package/lib/components/create-account/create-account.component.d.ts +3 -0
  76. package/lib/components/date/date.component.d.ts +14 -6
  77. package/lib/components/datetime/datetime.component.d.ts +3 -0
  78. package/lib/components/filter/filter.component.d.ts +4 -0
  79. package/lib/components/form/form.component.d.ts +16 -0
  80. package/lib/components/label/label.component.d.ts +3 -0
  81. package/lib/components/loader/loader.component.d.ts +3 -0
  82. package/lib/components/login/login.component.d.ts +6 -0
  83. package/lib/components/logs/logs.component.d.ts +3 -0
  84. package/lib/components/message/messageDialog.component.d.ts +3 -0
  85. package/lib/components/money/currency-input-mask.directive.d.ts +41 -0
  86. package/lib/components/money/currency-input-mask.module.d.ts +9 -0
  87. package/lib/components/money/money.component.d.ts +9 -1
  88. package/lib/components/nav-menu/nav-menu.component.d.ts +3 -0
  89. package/lib/components/number/number.component.d.ts +29 -0
  90. package/lib/components/option/option.component.d.ts +3 -0
  91. package/lib/components/profile/profile.component.d.ts +6 -2
  92. package/lib/components/recover-account/recover-account.component.d.ts +3 -0
  93. package/lib/components/roles/addRoleDialog.component.d.ts +3 -0
  94. package/lib/components/roles/roles.component.d.ts +3 -0
  95. package/lib/components/select/select.component.d.ts +5 -1
  96. package/lib/components/settings/settings.component.d.ts +3 -0
  97. package/lib/components/signup/signup.component.d.ts +3 -0
  98. package/lib/components/steps/steps.component.d.ts +3 -0
  99. package/lib/components/table/detailsDialog.component.d.ts +28 -0
  100. package/lib/components/table/table.component.d.ts +57 -17
  101. package/lib/components/text/text.component.d.ts +13 -9
  102. package/lib/components/tiles/tiles.component.d.ts +3 -0
  103. package/lib/components/tin-spa.component.d.ts +4 -4
  104. package/lib/components/users/users.component.d.ts +4 -0
  105. package/lib/modules/admin/admin-routing.module.d.ts +7 -0
  106. package/lib/modules/admin/admin.module.d.ts +9 -0
  107. package/lib/modules/index/index-routing.module.d.ts +7 -0
  108. package/lib/modules/index/index.module.d.ts +9 -0
  109. package/lib/modules/spa-admin.module.d.ts +13 -0
  110. package/lib/modules/spa-index.module.d.ts +10 -0
  111. package/lib/modules/spa-mat.module.d.ts +31 -0
  112. package/lib/modules/spa-user.module.d.ts +9 -0
  113. package/lib/modules/user/user-routing.module.d.ts +7 -0
  114. package/lib/modules/user/user.module.d.ts +9 -0
  115. package/lib/pipes/camelToWords.pipe.d.ts +7 -0
  116. package/lib/services/auth.service.d.ts +3 -0
  117. package/lib/services/data.service.d.ts +5 -1
  118. package/lib/services/export.service.d.ts +3 -4
  119. package/lib/services/http.service.d.ts +3 -0
  120. package/lib/services/loader-interceptor.service.d.ts +3 -0
  121. package/lib/services/loader.service.d.ts +3 -0
  122. package/lib/services/log.service.d.ts +3 -0
  123. package/lib/services/message.service.d.ts +3 -0
  124. package/lib/services/storage.service.d.ts +3 -0
  125. package/lib/services/tin-spa.service.d.ts +3 -0
  126. package/lib/tin-spa.module.d.ts +30 -0
  127. package/package.json +24 -23
  128. package/public-api.d.ts +7 -2
  129. package/bundles/tin-spa.umd.js +0 -3672
  130. package/bundles/tin-spa.umd.js.map +0 -1
  131. package/bundles/tin-spa.umd.min.js +0 -16
  132. package/bundles/tin-spa.umd.min.js.map +0 -1
  133. package/esm2015/lib/classes/TinCore.js +0 -139
  134. package/esm2015/lib/components/activity/activity.component.js +0 -26
  135. package/esm2015/lib/components/attach/attach.component.js +0 -107
  136. package/esm2015/lib/components/change-password/change-password.component.js +0 -102
  137. package/esm2015/lib/components/check/check.component.js +0 -63
  138. package/esm2015/lib/components/chips/chips.component.js +0 -66
  139. package/esm2015/lib/components/create-account/create-account.component.js +0 -78
  140. package/esm2015/lib/components/date/date.component.js +0 -45
  141. package/esm2015/lib/components/datetime/datetime.component.js +0 -44
  142. package/esm2015/lib/components/filter/filter.component.js +0 -40
  143. package/esm2015/lib/components/label/label.component.js +0 -29
  144. package/esm2015/lib/components/loader/loader.component.js +0 -29
  145. package/esm2015/lib/components/login/login.component.js +0 -114
  146. package/esm2015/lib/components/logs/logs.component.js +0 -39
  147. package/esm2015/lib/components/message/messageDialog.component.js +0 -31
  148. package/esm2015/lib/components/money/money.component.js +0 -52
  149. package/esm2015/lib/components/nav-menu/nav-menu.component.js +0 -51
  150. package/esm2015/lib/components/option/option.component.js +0 -63
  151. package/esm2015/lib/components/profile/profile.component.js +0 -98
  152. package/esm2015/lib/components/recover-account/recover-account.component.js +0 -53
  153. package/esm2015/lib/components/roles/addRoleDialog.component.js +0 -61
  154. package/esm2015/lib/components/roles/roles.component.js +0 -94
  155. package/esm2015/lib/components/select/select.component.js +0 -77
  156. package/esm2015/lib/components/settings/settings.component.js +0 -63
  157. package/esm2015/lib/components/signup/signup.component.js +0 -57
  158. package/esm2015/lib/components/steps/steps.component.js +0 -93
  159. package/esm2015/lib/components/table/table.component.js +0 -107
  160. package/esm2015/lib/components/text/text.component.js +0 -165
  161. package/esm2015/lib/components/tiles/tiles.component.js +0 -41
  162. package/esm2015/lib/components/timeout/timeout.component.js +0 -90
  163. package/esm2015/lib/components/tin-spa.component.js +0 -19
  164. package/esm2015/lib/components/users/users.component.js +0 -120
  165. package/esm2015/lib/dnd.directive.js +0 -51
  166. package/esm2015/lib/modules/spa-admin.module.js +0 -50
  167. package/esm2015/lib/modules/spa-index.module.js +0 -35
  168. package/esm2015/lib/modules/spa-mat.module.js +0 -53
  169. package/esm2015/lib/modules/spa-user.module.js +0 -33
  170. package/esm2015/lib/services/auth.service.js +0 -155
  171. package/esm2015/lib/services/data.service.js +0 -115
  172. package/esm2015/lib/services/export.service.js +0 -29
  173. package/esm2015/lib/services/http.service.js +0 -84
  174. package/esm2015/lib/services/loader-interceptor.service.js +0 -83
  175. package/esm2015/lib/services/loader.service.js +0 -17
  176. package/esm2015/lib/services/log.service.js +0 -76
  177. package/esm2015/lib/services/message.service.js +0 -58
  178. package/esm2015/lib/services/storage.service.js +0 -42
  179. package/esm2015/lib/services/tin-spa.service.js +0 -14
  180. package/esm2015/lib/tin-spa.module.js +0 -91
  181. package/esm2015/public-api.js +0 -56
  182. package/esm2015/tin-spa.js +0 -8
  183. package/esm5/lib/classes/Classes.js +0 -313
  184. package/esm5/lib/classes/TinCore.js +0 -166
  185. package/esm5/lib/components/activity/activity.component.js +0 -27
  186. package/esm5/lib/components/attach/attach.component.js +0 -119
  187. package/esm5/lib/components/change-password/change-password.component.js +0 -104
  188. package/esm5/lib/components/check/check.component.js +0 -64
  189. package/esm5/lib/components/chips/chips.component.js +0 -68
  190. package/esm5/lib/components/create-account/create-account.component.js +0 -80
  191. package/esm5/lib/components/date/date.component.js +0 -46
  192. package/esm5/lib/components/datetime/datetime.component.js +0 -45
  193. package/esm5/lib/components/filter/filter.component.js +0 -41
  194. package/esm5/lib/components/label/label.component.js +0 -30
  195. package/esm5/lib/components/loader/loader.component.js +0 -31
  196. package/esm5/lib/components/login/login.component.js +0 -117
  197. package/esm5/lib/components/logs/logs.component.js +0 -41
  198. package/esm5/lib/components/message/messageDialog.component.js +0 -32
  199. package/esm5/lib/components/money/money.component.js +0 -53
  200. package/esm5/lib/components/nav-menu/nav-menu.component.js +0 -53
  201. package/esm5/lib/components/option/option.component.js +0 -64
  202. package/esm5/lib/components/profile/profile.component.js +0 -102
  203. package/esm5/lib/components/recover-account/recover-account.component.js +0 -55
  204. package/esm5/lib/components/roles/addRoleDialog.component.js +0 -63
  205. package/esm5/lib/components/roles/roles.component.js +0 -100
  206. package/esm5/lib/components/select/select.component.js +0 -79
  207. package/esm5/lib/components/settings/settings.component.js +0 -66
  208. package/esm5/lib/components/signup/signup.component.js +0 -59
  209. package/esm5/lib/components/steps/steps.component.js +0 -105
  210. package/esm5/lib/components/table/table.component.js +0 -109
  211. package/esm5/lib/components/text/text.component.js +0 -168
  212. package/esm5/lib/components/tiles/tiles.component.js +0 -42
  213. package/esm5/lib/components/timeout/timeout.component.js +0 -92
  214. package/esm5/lib/components/tin-spa.component.js +0 -17
  215. package/esm5/lib/components/users/users.component.js +0 -126
  216. package/esm5/lib/dnd.directive.js +0 -52
  217. package/esm5/lib/modules/spa-admin.module.js +0 -53
  218. package/esm5/lib/modules/spa-index.module.js +0 -38
  219. package/esm5/lib/modules/spa-mat.module.js +0 -56
  220. package/esm5/lib/modules/spa-user.module.js +0 -36
  221. package/esm5/lib/services/auth.service.js +0 -157
  222. package/esm5/lib/services/data.service.js +0 -116
  223. package/esm5/lib/services/export.service.js +0 -30
  224. package/esm5/lib/services/http.service.js +0 -85
  225. package/esm5/lib/services/loader-interceptor.service.js +0 -85
  226. package/esm5/lib/services/loader.service.js +0 -18
  227. package/esm5/lib/services/log.service.js +0 -112
  228. package/esm5/lib/services/message.service.js +0 -59
  229. package/esm5/lib/services/storage.service.js +0 -74
  230. package/esm5/lib/services/tin-spa.service.js +0 -16
  231. package/esm5/lib/tin-spa.module.js +0 -94
  232. package/esm5/public-api.js +0 -56
  233. package/esm5/tin-spa.js +0 -8
  234. package/fesm2015/tin-spa.js +0 -3184
  235. package/fesm2015/tin-spa.js.map +0 -1
  236. package/fesm5/tin-spa.js +0 -3422
  237. package/fesm5/tin-spa.js.map +0 -1
  238. package/lib/components/timeout/timeout.component.d.ts +0 -21
  239. package/lib/dnd.directive.d.ts +0 -8
  240. package/tin-spa.d.ts +0 -7
  241. package/tin-spa.metadata.json +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://tin-spa/lib/classes/Classes.ts","ng://tin-spa/lib/services/tin-spa.service.ts","ng://tin-spa/lib/services/storage.service.ts","ng://tin-spa/lib/components/message/messageDialog.component.ts","ng://tin-spa/lib/services/message.service.ts","ng://tin-spa/lib/services/export.service.ts","ng://tin-spa/lib/classes/TinCore.ts","ng://tin-spa/lib/services/log.service.ts","ng://tin-spa/lib/services/http.service.ts","ng://tin-spa/lib/services/auth.service.ts","ng://tin-spa/lib/services/data.service.ts","ng://tin-spa/lib/services/loader.service.ts","ng://tin-spa/lib/components/loader/loader.component.ts","ng://tin-spa/lib/modules/spa-mat.module.ts","ng://tin-spa/lib/services/loader-interceptor.service.ts","ng://tin-spa/lib/components/tin-spa.component.ts","ng://tin-spa/lib/components/nav-menu/nav-menu.component.ts","ng://tin-spa/lib/components/timeout/timeout.component.ts","ng://tin-spa/lib/components/table/table.component.ts","ng://tin-spa/lib/components/tiles/tiles.component.ts","ng://tin-spa/lib/components/date/date.component.ts","ng://tin-spa/lib/components/text/text.component.ts","ng://tin-spa/lib/components/select/select.component.ts","ng://tin-spa/lib/components/check/check.component.ts","ng://tin-spa/lib/components/attach/attach.component.ts","ng://tin-spa/lib/components/datetime/datetime.component.ts","ng://tin-spa/lib/components/money/money.component.ts","ng://tin-spa/lib/dnd.directive.ts","ng://tin-spa/lib/components/chips/chips.component.ts","ng://tin-spa/lib/components/activity/activity.component.ts","ng://tin-spa/lib/components/option/option.component.ts","ng://tin-spa/lib/components/label/label.component.ts","ng://tin-spa/lib/components/steps/steps.component.ts","ng://tin-spa/lib/components/filter/filter.component.ts","ng://tin-spa/lib/tin-spa.module.ts","ng://tin-spa/lib/components/login/login.component.ts","ng://tin-spa/lib/components/signup/signup.component.ts","ng://tin-spa/lib/components/recover-account/recover-account.component.ts","ng://tin-spa/lib/modules/spa-index.module.ts","ng://tin-spa/lib/components/change-password/change-password.component.ts","ng://tin-spa/lib/components/profile/profile.component.ts","ng://tin-spa/lib/modules/spa-user.module.ts","ng://tin-spa/lib/components/settings/settings.component.ts","ng://tin-spa/lib/components/logs/logs.component.ts","ng://tin-spa/lib/components/users/users.component.ts","ng://tin-spa/lib/components/roles/addRoleDialog.component.ts","ng://tin-spa/lib/components/roles/roles.component.ts","ng://tin-spa/lib/components/create-account/create-account.component.ts","ng://tin-spa/lib/modules/spa-admin.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__param","paramIndex","decorator","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","TypeError","call","pop","push","__values","o","s","m","LogLevel","TinSpaService","Injectable","providedIn","StorageService","store","storageKey","encryptedValue","btoa","escape","JSON","stringify","localStorage","setItem","_a","get","getItem","ret","parse","unescape","atob","removeStorageItem","removeItem","clear","messageDialog","dialogRef","data","ngOnInit","messageType","type","_messageSubject","subject","_messageDetails","details","response","resp","close","MatDialogRef","Inject","args","MAT_DIALOG_DATA","Component","selector","template","MessageService","snackBar","dialog","toast","msg","open","duration","info","width","error","confirm","afterClosed","pipe","mergeMap","of","MatSnackBar","MatDialog","ExportService","fileType","fileExtension","exportExcel","jsonData","fileName","wb","Sheets","XLSX.utils","json_to_sheet","SheetNames","excelBuffer","XLSX.write","bookType","saveExcelFile","buffer","Blob","FileSaver.saveAs","Core","getClone","x","getNumber","replace","getFirstDayOfMonth","date","Date","getFullYear","getMonth","emailIsValid","email","isValidUNCPath","path","isValidDate","parsedDate","isNaN","isValidEmailList","list","includes","emails","split","emails_1","emails_1_1","isNumber","Number","toString","getDiff","startDate","endDate","eventStartTime","milliseconds","valueOf","numberEnding","number","toFixed","minutes","hours","days","weeks","months","years","nowDate","NoTime","getFormatedDate","dateString","setHours","getHours","toISOString","getBusinessDatesCount","count","_startDate","_endDate","curDate","dayOfWeek","getDay","setDate","getDate","nullDate","Constants","AUTH_USER","AUTH_NAME","AUTH_ROLES","AUTH_TOKEN","AUTH_TOKEN_EXPIRE","TableColumnType","enableFilter","TableCreate","greyout","Condition","name","display","String","Operator","field","operator","Equal","Color","_super","Icon","appName","selfService","logo","logoSize","ADAuth","localAuth","enabled","newLine","showMenu","ignoreSubsDisplay","link","icon","userName","password","tries","locked","logged","disabled","changepassword","dateCreated","dateUpdated","token","dateExpire","tokenExpire","authType","currentPassword","newPassword","confirmPassword","roleID","firstName","lastName","profileID","empID","arID","role","Role","roleName","cap1","cap2","cap3","cap4","cap5","cap6","cap7","cap8","cap9","cap10","cap11","cap12","cap13","cap14","cap15","cap16","cap17","cap18","cap19","cap20","cap21","cap22","cap23","cap24","cap25","cap26","cap27","cap28","cap29","cap30","cap31","cap32","cap33","cap34","cap35","cap36","cap37","cap38","cap39","cap40","cap41","cap42","cap43","cap44","cap45","cap46","cap47","cap48","cap49","cap50","cap51","cap52","cap53","cap54","cap55","cap56","cap57","cap58","cap59","cap60","cap61","cap62","cap63","cap64","cap65","cap66","cap67","cap68","cap69","cap70","cap71","cap72","cap73","cap74","cap75","cap76","cap77","cap78","cap79","cap80","cap81","cap82","cap83","cap84","cap85","cap86","cap87","cap88","cap89","cap90","cap91","cap92","cap93","cap94","cap95","cap96","cap97","cap98","cap99","cap100","LogService","level","All","logToConsole","logToApi","debug","optionalParams","_i","writeToLog","Debug","Info","warn","Warn","Error","fatal","Fatal","log","params","shouldLog","formatParams","console","join","some","params_1","params_1_1","item","Off","HttpService","httpClient","router","apiUrl","httpOptions_Legacy","headers","HttpHeaders","Accept","Content-Type","Authorization","resposeType","httpOptions_Files","Post","service","post","Put","put","Post_Raw","url","Post_WithFile","file","formData","FormData","append","Post_FormData","Get","Get_Raw","statusText","navigate","HttpClient","Router","AuthService","_route","storage","httpService","messageService","logService","loggedin","loggedinSource","BehaviorSubject","loggedinObserv","asObservable","tokenSource","tokenObserv","tokenExpireSource","tokenExpireObserv","currentUser","currentUserSource","currentUserObserv","islineManager","isLineManagerSource","isLineManagerObserv","currentRole","currentRoleSource","myRoleObserv","loggedUserSource","loggedUserFullName","Updateloggedin","UpdateToken","newToken","UpdateTokenExpire","newTokenExpire","UpdateCurrentUser","newUser","toLocaleLowerCase","UpdateIsLineManager","manager","UpdateRole","updateLoggedUserFullName","isAuthorised","capName","isValidToken","valid","canActivate","_this","URL","window","location","href","hash","relativeTo","queryParams","redirectTo","queryParamsHandling","skipLocationChange","ActivatedRoute","DataServiceLib","appConfig","AppConfig","appConfigSource","appConfigObserv","capHome","CapItem","capAdmin","capUsers","capRoles","capLogs","capSettings","tmpProfileuserName","capItems","capSubItems","UpdateAppConfig","config","GetUser","RegisterAccount","u","GetUserByID","val","UpdateUser","profile","UnlockUser","user","LockUser","DeleteUser","Login","ChangePassword","ChangePasswordAdmin","SelfReset","PostRole","action","PutRole","GetRole","by","GetLog","GetSetting","UpdateSetting","setting","LoaderService","isLoading","LoaderComponent","loaderService","subscribe","loading","Input","disableClose","hasBackdrop","SpaMatModule","NgModule","declarations","imports","exports","CommonModule","FormsModule","ReactiveFormsModule","MatMenuModule","MatSliderModule","MatTableModule","MatPaginatorModule","MatCheckboxModule","MatBadgeModule","MatButtonModule","MatIconModule","MatDialogModule","MatSnackBarModule","MatTabsModule","MatFormFieldModule","MatInputModule","MatCardModule","MatChipsModule","MatSelectModule","MatNativeDateModule","MatProgressSpinnerModule","MatListModule","MatAutocompleteModule","MatTooltipModule","MatSortModule","MatDatepickerModule","MatStepperModule","MatRadioModule","providers","provide","MAT_DIALOG_DEFAULT_OPTIONS","useValue","ɵ0","MAT_DATE_LOCALE","LoaderInterceptor","authService","requests","removeRequest","req","indexOf","splice","intercept","request","requestClone","clone","setHeaders","Observable","observer","subscription","handle","event","HttpResponse","status","complete","unsubscribe","TinSpaComponent","NavMenuComponent","isExpanded","rol","myRole","obj","collapse","toggle","TimeoutComponent","idle","keepalive","idleState","timedOut","lastPing","isWarning","setIdle","setTimeout","setInterrupts","DEFAULT_INTERRUPTSOURCES","onIdleStart","onIdleEnd","onTimeoutWarning","countdown","onTimeout","stopWatch","interval","onPing","startWatch","watch","stop","using","Idle","Keepalive","TableComponent","dataChange","EventEmitter","buttonClick","loadClick","createClick","colType","displayedColumns","_filterText","columns","forEach","element","styleString","actions","ngOnChanges","MatTableDataSource","paginator","tablePaginator","applyFilter","filterValue","filter","trim","toLowerCase","do","ActionResponse","emit","load","test","a","Greater","Less","NotEqual","Output","ViewChild","TilesComponent","clickable","tileClick","selected","clicked","tileName","DateComponent","FormControl","readonly","currentYear","min","max","onChangeEvent","TextComponent","hideRequiredControl","hint","placeholder","valueChange","format","leave","enterPress","rows","options","optionValue","optionDisplay","myControl","required","regex","control","Validators","minLength","maxLength","pattern","initFilter","ngAfterViewInit","setValidators","updateValueAndValidity","filteredOptions","valueChanges","startWith","map","_filter","option","changed","changed2","leaved","enterPressed","validate","hasError","SelectComponent","readonlyMode","optionDisplayExtra","displayValue","CheckComponent","click","check","uncheck","unchecked","checked","AttachComponent","message","files","filesChange","upload","enableUpload","onFileDropped","$event","prepareFilesList","fileBrowseHandler","deleteFile","index","files_1","files_1_1","progress","formatBytes","bytes","decimals","dm","Math","floor","parseFloat","pow","uploaded","filesChanged","DatetimeComponent","MoneyComponent","currency","DndDirective","fileDropped","onDragOver","evt","preventDefault","stopPropagation","fileOver","onDragLeave","ondrop","dataTransfer","HostBinding","HostListener","Directive","ChipsComponent","removable","addable","remove","chip","removed","ActivityComponent","notes","notesMessage","title","OptionComponent","show","OGValue","resetValue","LabelComponent","displayDefaultIndicatorType","StepsComponent","pushSteps","setStepper","stepper","selectedIndex","pushStepper","steps","_b","_c","STEPPER_GLOBAL_OPTIONS","ɵ0$1","FilterComponent","refreshClick","refreshClicked","TinSpaModule","entryComponents","withConfig","warnOnNgModelWithFormControl","MomentModule","NgIdleKeepaliveModule","forRoot","HTTP_INTERCEPTORS","useClass","multi","LocationStrategy","HashLocationStrategy","LoginComponent","storageService","dataService","route","User","hide","isProcessing","undefined","snapshot","redirectPath","signup","recoverAccount","login","apiResponse","success","expiration","changePassword","SignupComponent","Profile","account","Account","RecoverAccountComponent","recover","back","Location","SpaIndexModule","ChangePasswordComponent","ChangeUserPassword","change","ProfileComponent","selfProfile","loadProfile","loadRoles","roles","gotoUsers","update","updateProfile","SpaUserModule","SettingsComponent","loadSettings","settings","updateSetting","sName","addSetting","LogsComponent","loadLogs","logs","logsPaginator","UsersComponent","UpdateData","users","usersPaginator","createAccount","viewProfile","lock","unlock","deleteUser","addRoleDialog","submit","RolesComponent","refresh","addRole","updateRole","deleteRole","CreateAccountComponent","register","Register","openProfile","authTypes","SpaAdminModule"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Core } from \"./TinCore\";\r\n\r\nexport enum LogLevel {\r\n All = 0,\r\n Debug = 1,\r\n Info = 2,\r\n Warn = 3,\r\n Error = 4,\r\n Fatal = 5,\r\n Off = 6,\r\n}\r\n\r\nexport class Tile {\r\n\r\n tileName: string;\r\n tileValue: string;\r\n tileColor: string;\r\n selected: string;\r\n visible?: boolean;\r\n info?: string;\r\n}\r\n\r\nexport class Step {\r\n name: string\r\n icon: string;\r\n}\r\n\r\nexport class TableConfig {\r\n\r\n enableFilter: boolean = false;\r\n create = new TableCreate();\r\n\r\n columns: TableColumn[];\r\n actions: TableAction[];\r\n\r\n greyout = new Condition();\r\n\r\n}\r\n\r\nexport class TableCreate {\r\n enabled: boolean\r\n display: string;\r\n}\r\n\r\nexport class TableColumn {\r\n\r\n constructor() {\r\n this.name = \"default\"\r\n this.display = \"default\"\r\n this.type = TableColumnType.String\r\n\r\n }\r\n\r\n public name: string;\r\n public display: string;\r\n public type?: TableColumnType;\r\n public icons?: Icon[];\r\n public color?: Color;\r\n}\r\n\r\nexport enum TableColumnType {\r\n String, Date, DateTime, Image, Icon, TextIcon, Chip\r\n}\r\n\r\n\r\nexport class Condition {\r\n constructor() {\r\n this.field = \"\";\r\n this.operator = Operator.Equal;\r\n this.value = \"\";\r\n }\r\n field: string;\r\n operator: Operator;\r\n value: string;\r\n}\r\n\r\nexport enum Operator {\r\n Equal, Less, Greater, NotEqual\r\n}\r\n\r\n\r\n\r\nexport class Color extends Condition {\r\n name: string;\r\n}\r\n\r\nexport class Icon extends Condition {\r\n name: string;\r\n hint?: string;\r\n color?: string;\r\n}\r\n\r\n\r\nexport class TableAction {\r\n\r\n name: string;\r\n show?: boolean;\r\n icon: string;\r\n color?: string;\r\n hint?: string;\r\n\r\n disappear?: Condition;\r\n disable?: Condition;\r\n\r\n}\r\n\r\n\r\nexport class ActionResponse {\r\n name: string;\r\n value;\r\n}\r\n\r\n\r\nexport class loginConfig {\r\n\r\n constructor() {\r\n this.appName = \"\";\r\n this.selfService = false;\r\n this.logo = \"\";\r\n this.logoSize = \"normal\";\r\n }\r\n\r\n appName: string;\r\n selfService: boolean;\r\n logo: string;\r\n logoSize: string;\r\n}\r\n\r\n\r\nexport class AppConfig {\r\n constructor() {\r\n this.appName = \"App Name\";\r\n this.logo = \"\";\r\n this.logoSize = \"normal\";\r\n this.ADAuth = true;\r\n this.localAuth = true;\r\n this.selfService = false;\r\n }\r\n appName: string;\r\n logo: string;\r\n logoSize: string;\r\n ADAuth: boolean;\r\n localAuth: boolean;\r\n selfService: boolean;\r\n capItems: CapItem[];\r\n\r\n\r\n}\r\n\r\nexport class CapItem {\r\n\r\n constructor() {\r\n this.name = \"\";\r\n this.display = \"New Cap Item\";\r\n this.enabled = false;\r\n this.type = \"\";\r\n this.newLine = false;\r\n this.showMenu = true;\r\n this.ignoreSubsDisplay = false;\r\n this.link = \"\";\r\n this.icon = \"navigate_next\";\r\n\r\n }\r\n\r\n name: string;\r\n display: string;\r\n enabled: boolean;\r\n showMenu: boolean;\r\n\r\n ignoreSubsDisplay: boolean;\r\n type: string;\r\n newLine: boolean;\r\n link: string;\r\n icon: string;\r\n capSubItems: CapItem[];\r\n\r\n}\r\n\r\n\r\nexport class Account {\r\n user: User;\r\n profile: Profile;\r\n}\r\n\r\nexport class User {\r\n\r\n constructor() {\r\n\r\n\r\n this.userName = \"\";\r\n this.password = \"\";\r\n this.tries = \"0\";\r\n this.locked = \"0\";\r\n this.logged = \"0\";\r\n this.disabled = \"0\";\r\n this.changepassword = \"0\";\r\n this.dateCreated = Core.nowDate();\r\n this.dateUpdated = Core.nowDate();\r\n this.token = \"\";\r\n this.dateExpire = Core.nowDate();\r\n this.tokenExpire = Core.nowDate();\r\n this.authType = \"\";\r\n }\r\n\r\n userName:string;\r\n password: string;\r\n tries: string;\r\n locked: string;\r\n logged: string;\r\n disabled: string;\r\n changepassword: string;\r\n dateCreated: string;\r\n dateUpdated: string;\r\n dateExpire: string;\r\n token: string;\r\n tokenExpire: string;\r\n\r\n authType: string;\r\n}\r\n\r\nexport class ChangeUserPassword {\r\n\r\n constructor() {\r\n this.userName = \"\";\r\n this.currentPassword = \"\";\r\n this.newPassword = \"\";\r\n this.confirmPassword = \"\";\r\n }\r\n userName: string;\r\n currentPassword: string;\r\n newPassword: string;\r\n confirmPassword: string;\r\n}\r\n\r\nexport class Register {\r\n\r\n constructor() {\r\n this.userName = \"\";\r\n this.roleID = 1;\r\n this.firstName = \"\";\r\n this.lastName = \"\";\r\n this.email = \"\";\r\n this.authType = \"\";\r\n this.password = \"\";\r\n }\r\n\r\n userName: string;\r\n roleID: number;\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n authType: string;\r\n password: string;\r\n}\r\n\r\nexport class Profile {\r\n\r\n constructor() {\r\n this.profileID = \"\";\r\n this.userName = \"\";\r\n this.roleID = 1;\r\n this.firstName = \"\";\r\n this.lastName = \"\";\r\n this.email = \"\";\r\n this.empID = \"\";\r\n this.arID = \"0\";\r\n this.authType = \"\";\r\n this.password = \"\";\r\n this.role = new Role();\r\n }\r\n\r\n profileID: string;\r\n userName: string;\r\n roleID: number;\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n empID: string;\r\n arID: string;\r\n authType: string;\r\n password: string;\r\n role: Role\r\n}\r\n\r\n\r\nexport class Role {\r\n\r\n constructor() {\r\n this.roleID = 0;\r\n this.roleName = \"New Role\";\r\n this.cap1 = false;\r\n this.cap2 = false;\r\n this.cap3 = false;\r\n this.cap4 = false;\r\n this.cap5 = false;\r\n this.cap6 = false;\r\n this.cap7 = false;\r\n this.cap8 = false;\r\n this.cap9 = false;\r\n this.cap10 = false;\r\n this.cap11 = false;\r\n this.cap12 = false;\r\n this.cap13 = false;\r\n this.cap14 = false;\r\n this.cap15 = false;\r\n this.cap16 = false;\r\n this.cap17 = false;\r\n this.cap18 = false;\r\n this.cap19 = false;\r\n this.cap20 = false;\r\n this.cap21 = false;\r\n this.cap22 = false;\r\n this.cap23 = false;\r\n this.cap24 = false;\r\n this.cap25 = false;\r\n this.cap26 = false;\r\n this.cap27 = false;\r\n this.cap28 = false;\r\n this.cap29 = false;\r\n this.cap30 = false;\r\n this.cap31 = false;\r\n this.cap32 = false;\r\n this.cap33 = false;\r\n this.cap34 = false;\r\n this.cap35 = false;\r\n this.cap36 = false;\r\n this.cap37 = false;\r\n this.cap38 = false;\r\n this.cap39 = false;\r\n this.cap40 = false;\r\n this.cap41 = false;\r\n this.cap42 = false;\r\n this.cap43 = false;\r\n this.cap44 = false;\r\n this.cap45 = false;\r\n this.cap46 = false;\r\n this.cap47 = false;\r\n this.cap48 = false;\r\n this.cap49 = false;\r\n this.cap50 = false;\r\n this.cap51 = false;\r\n this.cap52 = false;\r\n this.cap53 = false;\r\n this.cap54 = false;\r\n this.cap55 = false;\r\n this.cap56 = false;\r\n this.cap57 = false;\r\n this.cap58 = false;\r\n this.cap59 = false;\r\n this.cap60 = false;\r\n this.cap61 = false;\r\n this.cap62 = false;\r\n this.cap63 = false;\r\n this.cap64 = false;\r\n this.cap65 = false;\r\n this.cap66 = false;\r\n this.cap67 = false;\r\n this.cap68 = false;\r\n this.cap69 = false;\r\n this.cap70 = false;\r\n this.cap71 = false;\r\n this.cap72 = false;\r\n this.cap73 = false;\r\n this.cap74 = false;\r\n this.cap75 = false;\r\n this.cap76 = false;\r\n this.cap77 = false;\r\n this.cap78 = false;\r\n this.cap79 = false;\r\n this.cap80 = false;\r\n this.cap81 = false;\r\n this.cap82 = false;\r\n this.cap83 = false;\r\n this.cap84 = false;\r\n this.cap85 = false;\r\n this.cap86 = false;\r\n this.cap87 = false;\r\n this.cap88 = false;\r\n this.cap89 = false;\r\n this.cap90 = false;\r\n this.cap91 = false;\r\n this.cap92 = false;\r\n this.cap93 = false;\r\n this.cap94 = false;\r\n this.cap95 = false;\r\n this.cap96 = false;\r\n this.cap97 = false;\r\n this.cap98 = false;\r\n this.cap99 = false;\r\n this.cap100 = false;\r\n }\r\n\r\n roleID: number;\r\n roleName: string;\r\n cap1: boolean;\r\n cap2: boolean;\r\n cap3: boolean;\r\n cap4: boolean;\r\n cap5: boolean;\r\n cap6: boolean;\r\n cap7: boolean;\r\n cap8: boolean;\r\n cap9: boolean;\r\n cap10: boolean;\r\n cap11: boolean;\r\n cap12: boolean;\r\n cap13: boolean;\r\n cap14: boolean;\r\n cap15: boolean;\r\n cap16: boolean;\r\n cap17: boolean;\r\n cap18: boolean;\r\n cap19: boolean;\r\n cap20: boolean;\r\n cap21: boolean;\r\n cap22: boolean;\r\n cap23: boolean;\r\n cap24: boolean;\r\n cap25: boolean;\r\n cap26: boolean;\r\n cap27: boolean;\r\n cap28: boolean;\r\n cap29: boolean;\r\n cap30: boolean;\r\n cap31: boolean;\r\n cap32: boolean;\r\n cap33: boolean;\r\n cap34: boolean;\r\n cap35: boolean;\r\n cap36: boolean;\r\n cap37: boolean;\r\n cap38: boolean;\r\n cap39: boolean;\r\n cap40: boolean;\r\n cap41: boolean;\r\n cap42: boolean;\r\n cap43: boolean;\r\n cap44: boolean;\r\n cap45: boolean;\r\n cap46: boolean;\r\n cap47: boolean;\r\n cap48: boolean;\r\n cap49: boolean;\r\n cap50: boolean;\r\n cap51: boolean;\r\n cap52: boolean;\r\n cap53: boolean;\r\n cap54: boolean;\r\n cap55: boolean;\r\n cap56: boolean;\r\n cap57: boolean;\r\n cap58: boolean;\r\n cap59: boolean;\r\n cap60: boolean;\r\n cap61: boolean;\r\n cap62: boolean;\r\n cap63: boolean;\r\n cap64: boolean;\r\n cap65: boolean;\r\n cap66: boolean;\r\n cap67: boolean;\r\n cap68: boolean;\r\n cap69: boolean;\r\n cap70: boolean;\r\n cap71: boolean;\r\n cap72: boolean;\r\n cap73: boolean;\r\n cap74: boolean;\r\n cap75: boolean;\r\n cap76: boolean;\r\n cap77: boolean;\r\n cap78: boolean;\r\n cap79: boolean;\r\n cap80: boolean;\r\n cap81: boolean;\r\n cap82: boolean;\r\n cap83: boolean;\r\n cap84: boolean;\r\n cap85: boolean;\r\n cap86: boolean;\r\n cap87: boolean;\r\n cap88: boolean;\r\n cap89: boolean;\r\n cap90: boolean;\r\n cap91: boolean;\r\n cap92: boolean;\r\n cap93: boolean;\r\n cap94: boolean;\r\n cap95: boolean;\r\n cap96: boolean;\r\n cap97: boolean;\r\n cap98: boolean;\r\n cap99: boolean;\r\n cap100: boolean;\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TinSpaService {\r\n\r\n constructor() { }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StorageService {\r\n\r\n constructor() { }\r\n\r\n // Store the value\r\n async store(storageKey: string, value: any) {\r\n const encryptedValue = btoa(escape(JSON.stringify(value)));\r\n // const encryptedValue = JSON.stringify(value);\r\n await localStorage.setItem(storageKey, encryptedValue);\r\n }\r\n\r\n // Get the value\r\n async get(storageKey: string) {\r\n const ret = await localStorage.getItem(storageKey);\r\n return JSON.parse(unescape(atob(ret)));\r\n // return JSON.parse(ret);\r\n }\r\n\r\n // Remove\r\n async removeStorageItem(storageKey: string) {\r\n await localStorage.removeItem(storageKey);\r\n }\r\n\r\n // Clear storage\r\n async clear() {\r\n await localStorage.clear();\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatDialog, MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\n\r\n\r\n@Component({\r\n selector: 'lib-app-message',\r\n templateUrl: './messageDialog.component.html'\r\n})\r\n\r\nexport class messageDialog implements OnInit {\r\n\r\n constructor(private dialogRef: MatDialogRef<messageDialog>, @Inject(MAT_DIALOG_DATA) public data) { }\r\n\r\n\r\n ngOnInit() {\r\n\r\n this.messageType = this.data.type\r\n this._messageSubject = this.data.subject;\r\n this._messageDetails = this.data.details;\r\n\r\n }\r\n\r\n messageType;\r\n _messageSubject;\r\n _messageDetails;\r\n\r\n response(resp: string) {\r\n\r\n this.dialogRef.close(resp);\r\n\r\n }\r\n\r\n};\r\n\r\n\r\n\r\n","import { Injectable } from \"@angular/core\";\r\nimport { MatSnackBar } from \"@angular/material/snack-bar\";\r\nimport { MatDialog } from \"@angular/material/dialog\";\r\nimport { messageDialog } from \"../components/message/messageDialog.component\";\r\nimport { Observable, of } from 'rxjs';\r\nimport { mergeMap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class MessageService {\r\n constructor(private snackBar: MatSnackBar, public dialog: MatDialog) { }\r\n\r\n public toast(msg: string) {\r\n this.snackBar.open(msg, \"OK\", { duration: 5000 });\r\n }\r\n\r\n public info(subject: string, details: string) {\r\n\r\n let type = \"info\";\r\n\r\n const dialogRef = this.dialog.open(messageDialog, {\r\n width: \"600px\",\r\n data: { type, subject, details },\r\n });\r\n\r\n }\r\n\r\n public error(details: string) {\r\n\r\n let type = \"error\";\r\n let subject: \"\";\r\n\r\n const dialogRef = this.dialog.open(messageDialog, {\r\n width: \"600px\",\r\n data: { type, subject, details },\r\n });\r\n\r\n }\r\n\r\n public confirm(msg: string): Observable<any> {\r\n\r\n let type = \"confirm\";\r\n let subject = \"\";\r\n let details = msg\r\n\r\n const dialogRef = this.dialog.open(messageDialog, {\r\n width: \"400px\",\r\n data: { type, subject, details },\r\n });\r\n\r\n return dialogRef.afterClosed().pipe(mergeMap((result) => {\r\n\r\n return of(result);\r\n\r\n }\r\n\r\n ));\r\n\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as FileSaver from 'file-saver';\r\nimport * as XLSX from 'xlsx';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExportService {\r\n\r\n constructor() { }\r\n\r\n fileType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\r\n fileExtension = '.xlsx';\r\n\r\n public exportExcel(jsonData: any[], fileName: string): void {\r\n\r\n const ws: XLSX.WorkSheet = XLSX.utils.json_to_sheet(jsonData);\r\n const wb: XLSX.WorkBook = { Sheets: { 'data': ws }, SheetNames: ['data'] };\r\n const excelBuffer: any = XLSX.write(wb, { bookType: 'xlsx', type: 'array' });\r\n this.saveExcelFile(excelBuffer, fileName);\r\n }\r\n\r\n private saveExcelFile(buffer: any, fileName: string): void {\r\n const data: Blob = new Blob([buffer], { type: this.fileType });\r\n FileSaver.saveAs(data, fileName + this.fileExtension);\r\n }\r\n}\r\n","export class Core {\r\n\r\n public static getClone(x) {\r\n return JSON.parse(JSON.stringify(x))\r\n }\r\n\r\n public static getNumber(value: string) {\r\n\r\n if (value == null || value == \"\") {\r\n return 0;\r\n }\r\n\r\n const onlyNumbers = value.replace(/[^\\d.-]/g, '');\r\n return onlyNumbers\r\n }\r\n\r\n public static getFirstDayOfMonth() {\r\n const date = new Date();\r\n return new Date(date.getFullYear(), date.getMonth(), 1);\r\n }\r\n\r\n public static emailIsValid(email) {\r\n // return /\\S+@\\S+\\.\\S+/.test(email)\r\n 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 getBusinessDatesCount(startDate: string, endDate: string) {\r\n var count = 0;\r\n var _startDate = new Date(startDate);\r\n var _endDate = new Date(endDate);\r\n\r\n var curDate = _startDate;\r\n\r\n while (curDate < _endDate) {\r\n var dayOfWeek = curDate.getDay();\r\n if (!(dayOfWeek == 6 || dayOfWeek == 0)) count++;\r\n curDate.setDate(curDate.getDate() + 1);\r\n }\r\n\r\n return count;\r\n }\r\n\r\n}\r\n\r\n\r\nexport class ApiResponse {\r\n success: boolean;\r\n message: string;\r\n data;\r\n}\r\n\r\nexport class Constants {\r\n public static readonly AUTH_USER = 'a';\r\n public static readonly AUTH_NAME = 'b';\r\n public static readonly AUTH_ROLES = 'c';\r\n public static readonly AUTH_TOKEN = 'd';\r\n public static readonly AUTH_TOKEN_EXPIRE = 'e';\r\n}\r\n\r\n","// import { Core } from 'tin-core';\r\nimport { logging } from 'protractor';\r\nimport { Injectable } from \"@angular/core\";\r\nimport { LogLevel } from '../classes/Classes';\r\nimport { Core } from '../classes/TinCore';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class LogService {\r\n constructor() { }\r\n\r\n level: LogLevel = LogLevel.All;\r\n\r\n logToConsole: boolean = true;\r\n\r\n logToApi: boolean = false;\r\n\r\n debug(msg: string, ...optionalParams: any[]) {\r\n this.writeToLog(msg, LogLevel.Debug, optionalParams);\r\n }\r\n\r\n info(msg: string, ...optionalParams: any[]) {\r\n this.writeToLog(msg, LogLevel.Info, optionalParams);\r\n }\r\n\r\n warn(msg: string, ...optionalParams: any[]) {\r\n this.writeToLog(msg, LogLevel.Warn, optionalParams);\r\n }\r\n\r\n error(msg: string, ...optionalParams: any[]) {\r\n this.writeToLog(msg, LogLevel.Error, optionalParams);\r\n }\r\n\r\n fatal(msg: string, ...optionalParams: any[]) {\r\n this.writeToLog(msg, LogLevel.Fatal, optionalParams);\r\n }\r\n\r\n log(msg: string, ...optionalParams: any[]) {\r\n this.writeToLog(msg, LogLevel.All, optionalParams);\r\n\r\n }\r\n\r\n private writeToLog(msg: string, level: LogLevel, params: any[]) {\r\n\r\n if (this.shouldLog(level)) {\r\n\r\n // Build log string\r\n let value: string = Core.getFormatedDate(Date(), false).replace(\"T\", \" \");\r\n // value += \" - Type: \" + LogLevel[this.level];\r\n value += \" - Message: \" + msg;\r\n\r\n\r\n if (params.length) {\r\n value += \" - Extra Info: \" + this.formatParams(params);\r\n }\r\n\r\n // Log the value\r\n if (this.logToConsole) {\r\n console.log(value);\r\n }\r\n\r\n if (this.logToApi) {\r\n //Call API post\r\n }\r\n\r\n }\r\n }\r\n\r\n private formatParams(params: any[]): string {\r\n\r\n let ret: string = params.join(\",\");\r\n // Is there at least one object in the array?\r\n if (params.some((p) => typeof p == \"object\")) {\r\n ret = \"\";\r\n // Build comma-delimited string\r\n for (let item of params) {\r\n ret += JSON.stringify(item) + \",\";\r\n }\r\n }\r\n return ret;\r\n }\r\n\r\n private shouldLog(level: LogLevel): boolean {\r\n\r\n let ret: boolean = false;\r\n\r\n if (\r\n (level >= this.level && level !== LogLevel.Off) ||\r\n this.level === LogLevel.All\r\n ) {\r\n ret = true;\r\n }\r\n\r\n return ret;\r\n }\r\n}\r\n\r\n\r\n\r\n","import { 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 { MessageService } from './message.service';\r\nimport { Injectable } from '@angular/core';\r\nimport { Router, CanActivate, ActivatedRoute } from '@angular/router';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { StorageService } from './storage.service';\r\nimport { LogService } from './log.service';\r\nimport { Role } from '../classes/Classes';\r\nimport { HttpService } from './http.service';\r\nimport { Constants } from '../classes/TinCore';\r\nimport { conditionallyCreateMapObjectLiteral } from '@angular/compiler/src/render3/view/util';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class AuthService implements CanActivate {\r\n\r\n constructor(private _route: ActivatedRoute, private storage: StorageService, public router: Router, private httpService: HttpService, private messageService: MessageService, private logService: LogService) { }\r\n\r\n //Logged in\r\n private loggedin: boolean = false;\r\n private loggedinSource = new BehaviorSubject(this.loggedin);\r\n public loggedinObserv = this.loggedinSource.asObservable();\r\n Updateloggedin(loggedin: boolean) {\r\n this.loggedinSource.next(loggedin);\r\n this.loggedin = loggedin;\r\n }\r\n\r\n //Token\r\n private token: string = \"\";\r\n public tokenSource = new BehaviorSubject(this.token);\r\n public tokenObserv = this.tokenSource.asObservable();\r\n UpdateToken(newToken: string) {\r\n this.tokenSource.next(newToken);\r\n\r\n }\r\n\r\n //TokenExpire\r\n private tokenExpire: string = \"\";\r\n public tokenExpireSource = new BehaviorSubject(this.tokenExpire);\r\n public tokenExpireObserv = this.tokenExpireSource.asObservable();\r\n UpdateTokenExpire(newTokenExpire: string) {\r\n this.tokenExpireSource.next(newTokenExpire);\r\n\r\n }\r\n\r\n //Current User\r\n public currentUser: string = \"tnyagato\";\r\n private currentUserSource = new BehaviorSubject(this.currentUser);\r\n public currentUserObserv = this.currentUserSource.asObservable();\r\n UpdateCurrentUser(newUser: string) {\r\n this.currentUserSource.next(newUser.toLocaleLowerCase());\r\n this.currentUser = newUser.toLocaleLowerCase();\r\n }\r\n\r\n //Line Manager\r\n private islineManager: boolean = false;\r\n private isLineManagerSource = new BehaviorSubject(this.islineManager);\r\n public isLineManagerObserv = this.isLineManagerSource.asObservable();\r\n UpdateIsLineManager(manager: boolean) {\r\n this.isLineManagerSource.next(manager);\r\n }\r\n\r\n //Roles\r\n private currentRole = new Role;\r\n public currentRoleSource = new BehaviorSubject(this.currentRole);\r\n public myRoleObserv = this.currentRoleSource.asObservable();\r\n UpdateRole(role) {\r\n this.currentRoleSource.next(role);\r\n }\r\n\r\n //Logged in FirstName\r\n private loggedUserSource = new BehaviorSubject(\"tnyagato\");\r\n public loggedUserFullName = this.loggedUserSource.asObservable();\r\n updateLoggedUserFullName(userName: string) {\r\n this.loggedUserSource.next(userName);\r\n }\r\n\r\n\r\n //Authorisation\r\n isAuthorised(capName: string): boolean {\r\n\r\n if (!this.currentRoleSource.value[capName]) {\r\n // this.logService.info(`authorise: ${this.currentRoleSource.value.roleName} not authorised for ${capName}`);\r\n this.router.navigate([\"home\"]);\r\n this.messageService.toast(`Unauthorised: ${capName}`);\r\n\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n\r\n }\r\n\r\n isValidToken() {\r\n\r\n let tokenExpire: Date = new Date(this.tokenExpireSource.value);\r\n let nowDate: Date = new Date();\r\n\r\n let valid: boolean = tokenExpire > nowDate;\r\n\r\n if (!valid) {\r\n\r\n this.router.navigate([\"login\"]);\r\n this.messageService.toast(`Expired Session`);\r\n }\r\n\r\n return valid\r\n }\r\n\r\n canActivate() {\r\n\r\n if (this.loggedin && this.isValidToken()) {\r\n // this.logService.info(\"authentication: logged in\");\r\n return true;\r\n }\r\n\r\n if (localStorage.getItem(Constants.AUTH_USER) === null) {\r\n // this.logService.info(\"authentication: not logged and no cache\");\r\n\r\n this.Updateloggedin(false);\r\n\r\n let url = new URL(window.location.href);\r\n let path = url.hash.replace(\"#/\",\"\");\r\n\r\n\r\n this.router.navigate([\"login\"], {\r\n relativeTo: this._route,\r\n queryParams: {redirectTo: path},\r\n queryParamsHandling: 'merge',\r\n skipLocationChange: false\r\n });\r\n\r\n return false;\r\n\r\n } else {\r\n // this.logService.info(\"authentication: not logged but allowed login\");\r\n\r\n this.Updateloggedin(true);\r\n\r\n this.storage.get(Constants.AUTH_USER).then((resp: any) => {\r\n this.UpdateCurrentUser(resp);\r\n });\r\n\r\n this.storage.get(Constants.AUTH_NAME).then((resp: any) => {\r\n this.updateLoggedUserFullName(resp);\r\n });\r\n\r\n this.storage.get(Constants.AUTH_ROLES).then((resp) => {\r\n let ret = JSON.parse(resp);\r\n\r\n this.UpdateRole(ret);\r\n });\r\n\r\n this.storage.get(Constants.AUTH_TOKEN).then((resp: any) => {\r\n this.UpdateToken(resp);\r\n });\r\n\r\n this.storage.get(Constants.AUTH_TOKEN_EXPIRE).then((resp: any) => {\r\n this.UpdateTokenExpire(resp);\r\n this.isValidToken();\r\n });\r\n\r\n return true;\r\n }\r\n }\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { AppConfig, CapItem, User } from '../classes/Classes';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { HttpService } from './http.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DataServiceLib {\r\n\r\n constructor(private httpService: HttpService) {\r\n\r\n this.appConfig.appName = \"App-Name\";\r\n this.appConfig.logo = \"./assets/logo.png\"\r\n this.appConfig.ADAuth = true;\r\n this.appConfig.capItems = [this.capAdmin, this.capHome];\r\n\r\n\r\n this.capHome.name = \"cap1\";\r\n this.capHome.display = \"Home\";\r\n this.capHome.link = \"home\";\r\n\r\n this.capAdmin.name = \"cap2\";\r\n this.capAdmin.display = \"Admin\";\r\n this.capAdmin.capSubItems = [this.capUsers, this.capRoles, this.capLogs, this.capSettings];\r\n\r\n this.capUsers.name = \"cap3\";\r\n this.capUsers.display = \"Users\";\r\n this.capUsers.link = \"home/admin/users\";\r\n\r\n this.capRoles.name = \"cap4\"\r\n this.capRoles.display = \"Roles\";\r\n this.capRoles.link = \"home/admin/roles\";\r\n\r\n this.capLogs.name = \"cap5\"\r\n this.capLogs.display = \"Logs\";\r\n this.capLogs.link = \"home/admin/logs\";\r\n\r\n this.capSettings.name = \"cap6\"\r\n this.capSettings.display = \"Settings\";\r\n this.capSettings.link = \"home/admin/settings\";\r\n }\r\n\r\n\r\n appConfig = new AppConfig();\r\n private appConfigSource = new BehaviorSubject(this.appConfig);\r\n public appConfigObserv = this.appConfigSource.asObservable();\r\n UpdateAppConfig(config: AppConfig) {\r\n this.appConfigSource.next(config);\r\n this.appConfig = config;\r\n }\r\n\r\n // caps: CapItem[];\r\n capHome = new CapItem;\r\n capAdmin = new CapItem;\r\n capUsers = new CapItem;\r\n capRoles = new CapItem;\r\n capLogs = new CapItem;\r\n capSettings = new CapItem;\r\n\r\n\r\n public tmpProfileuserName = \"\";\r\n\r\n\r\n //Users\r\n public GetUser() {\r\n return this.httpService.Get(\"User/all/x\");\r\n }\r\n\r\n public RegisterAccount(u) {\r\n return this.httpService.Post(\"User/register\", u);\r\n }\r\n\r\n public GetUserByID(val: string) {\r\n return this.httpService.Get(`User/id/${val}`);\r\n }\r\n\r\n public UpdateUser(profile) {\r\n return this.httpService.Post(\"User/edit\", profile);\r\n }\r\n\r\n public UnlockUser(user) {\r\n return this.httpService.Post(\"User/unlock\", user);\r\n }\r\n\r\n public LockUser(user) {\r\n return this.httpService.Post(\"User/lock\", user);\r\n }\r\n\r\n public DeleteUser(user) {\r\n return this.httpService.Post(\"User/delete\", user);\r\n }\r\n\r\n public Login(u: User) {\r\n return this.httpService.Post(\"User/login\", u);\r\n }\r\n\r\n public ChangePassword(u) {\r\n return this.httpService.Post(\"User/changepassword-self\", u);\r\n }\r\n\r\n public ChangePasswordAdmin(u) {\r\n return this.httpService.Post(\"User/changepassword-admin\", u);\r\n }\r\n\r\n public SelfReset(u: User): Observable<any> {\r\n return this.httpService.Post(\"Basic/SelfReset\", u);\r\n }\r\n\r\n\r\n //Roles\r\n\r\n public PostRole(role, action: string) {\r\n return this.httpService.Post(`Role?action=${action}`, role);\r\n }\r\n\r\n public PutRole(role) {\r\n return this.httpService.Put(\"Role\", role);\r\n }\r\n\r\n public GetRole(by: string, val: string) {\r\n return this.httpService.Get(\"Role/all/x\");\r\n }\r\n\r\n\r\n\r\n //Logs\r\n public GetLog(by: string, val: string) {\r\n return this.httpService.Get(\"Log/all/x\");\r\n }\r\n\r\n\r\n //Settings\r\n public GetSetting(by: string, val: string) {\r\n return this.httpService.Get(\"Setting/all/x\");\r\n }\r\n\r\n public UpdateSetting(setting, action: string) {\r\n return this.httpService.Post(`Setting?action=${action}`, setting);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LoaderService {\r\n\r\n public isLoading = new BehaviorSubject(false);\r\n constructor() { }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { LoaderService } from '../../services/loader.service';\r\n\r\n@Component({\r\n selector: 'spa-loader',\r\n templateUrl: './loader.component.html',\r\n styleUrls: ['./loader.component.css']\r\n})\r\nexport class LoaderComponent implements OnInit {\r\n\r\n constructor(private loaderService: LoaderService) {\r\n\r\n this.loaderService.isLoading.subscribe((v) => {\r\n this.loading = v;\r\n });\r\n\r\n }\r\n ngOnInit() {\r\n }\r\n\r\n @Input() logo = \"\";\r\n loading: boolean;\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatBadgeModule } from '@angular/material/badge';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatNativeDateModule, MAT_DATE_LOCALE } from '@angular/material/core';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatDialogModule, MAT_DIALOG_DEFAULT_OPTIONS } from '@angular/material/dialog';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSliderModule } from '@angular/material/slider';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatStepperModule } from '@angular/material/stepper';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n\r\n\r\n ],\r\n exports: [\r\n CommonModule,FormsModule, ReactiveFormsModule,\r\n MatMenuModule, MatSliderModule, MatTableModule, MatPaginatorModule,\r\n MatCheckboxModule, MatBadgeModule, MatButtonModule, MatIconModule, MatDialogModule, MatSnackBarModule,\r\n MatTabsModule, MatFormFieldModule, MatInputModule, MatCardModule, MatChipsModule, MatSelectModule,\r\n MatNativeDateModule, MatProgressSpinnerModule, MatListModule, MatAutocompleteModule, MatTooltipModule, MatSortModule,\r\n MatDatepickerModule, MatStepperModule, MatRadioModule,\r\n ],\r\n providers:[\r\n { provide: MAT_DIALOG_DEFAULT_OPTIONS, useValue: { disableClose: true, hasBackdrop: true } },\r\n { provide: MAT_DATE_LOCALE, useValue: \"en-GB\" },\r\n ]\r\n})\r\nexport class SpaMatModule { }\r\n","import { Router } from '@angular/router';\r\nimport { AuthService } from './auth.service';\r\nimport { MessageService } from './message.service';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpResponse, HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { LoaderService } from './loader.service';\r\nimport { LogService } from './log.service';\r\n\r\n@Injectable()\r\nexport class LoaderInterceptor implements HttpInterceptor {\r\n\r\n private requests: HttpRequest<any>[] = [];\r\n\r\n constructor(private loaderService: LoaderService, private messageService: MessageService, private authService: AuthService, private router: Router, private logService: LogService) { }\r\n\r\n\r\n removeRequest(req: HttpRequest<any>) {\r\n\r\n const i = this.requests.indexOf(req);\r\n\r\n if (i >= 0) {\r\n this.requests.splice(i, 1);\r\n }\r\n\r\n this.loaderService.isLoading.next(this.requests.length > 0);\r\n }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n\r\n\r\n let requestClone = request.clone({\r\n setHeaders: {\r\n Authorization: \"Bearer \" + this.authService.tokenSource.value\r\n }\r\n });\r\n\r\n this.requests.push(requestClone);\r\n\r\n if (this.requests.length > 1) {\r\n this.logService.info(\"Multiple connections detected > \" + this.requests.length)\r\n }\r\n\r\n this.loaderService.isLoading.next(true);\r\n\r\n return Observable.create(observer => {\r\n\r\n const subscription = next.handle(requestClone).subscribe(event => {\r\n\r\n if (event instanceof HttpResponse) {\r\n this.removeRequest(requestClone);\r\n observer.next(event);\r\n }\r\n\r\n\r\n\r\n },\r\n (error: HttpErrorResponse) => {\r\n\r\n\r\n\r\n this.removeRequest(requestClone);\r\n observer.error(error);\r\n\r\n if (error.status === 401) {\r\n this.router.navigate([\"login\"]);\r\n this.messageService.toast('Unauthorised: Please login again')\r\n }\r\n else if (error.status ===500){\r\n console.log(error.error)\r\n this.messageService.toast('System Error')\r\n }\r\n else if (error.statusText == 'Unknown Error'){\r\n this.messageService.toast('Connection Error')\r\n }\r\n else{\r\n this.messageService.toast('Error: ' + error.statusText)\r\n }\r\n\r\n },\r\n () => {\r\n this.removeRequest(requestClone);\r\n observer.complete();\r\n });\r\n\r\n\r\n // remove request from queue when cancelled\r\n return () => {\r\n this.removeRequest(requestClone);\r\n subscription.unsubscribe();\r\n };\r\n\r\n });\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-tin-spa',\n template: `\n <p>\n tin-spa works!\n </p>\n `,\n styles: []\n})\nexport class TinSpaComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { AppConfig } from './../../classes/Classes';\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-nav-menu',\r\n templateUrl: './nav-menu.component.html',\r\n styleUrls: ['./nav-menu.component.css']\r\n})\r\nexport class NavMenuComponent {\r\n\r\n constructor(public router: Router, public authService: AuthService) { }\r\n\r\n ngOnInit() {\r\n\r\n this.authService.loggedUserFullName.subscribe(user => this.loggedUserFullName = user)\r\n this.authService.myRoleObserv.subscribe(rol => this.myRole = rol);\r\n this.authService.loggedinObserv.subscribe(obj => this.loggedin = obj)\r\n\r\n }\r\n\r\n myRole;\r\n loggedUserFullName: string;\r\n loggedin: boolean;\r\n isExpanded = false;\r\n\r\n @Input() appConfig = new AppConfig();\r\n\r\n\r\n\r\n collapse() {\r\n this.isExpanded = false;\r\n }\r\n\r\n toggle() {\r\n this.isExpanded = !this.isExpanded;\r\n }\r\n\r\n // logoff() {\r\n // // this.authService.updateloggedin(false);\r\n // // this.authService.updateRole(new Role());\r\n // this.router.navigate([\"login\"]);\r\n // // this.storageService.clear();\r\n // }\r\n\r\n redirectTo(link: string){\r\n\r\n if (link!=\"\"){\r\n this.router.navigate([link]);\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n\r\n\r\n}\r\n","import { Router } from '@angular/router';\r\nimport { Component, OnInit } from '@angular/core';\r\n\r\nimport {Idle, DEFAULT_INTERRUPTSOURCES} from '@ng-idle/core';\r\nimport {Keepalive} from '@ng-idle/keepalive';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-timeout',\r\n templateUrl: './timeout.component.html',\r\n styleUrls: ['./timeout.component.css']\r\n})\r\nexport class TimeoutComponent implements OnInit {\r\n\r\n constructor(private idle: Idle, private keepalive: Keepalive, public authService: AuthService, private router: Router) {\r\n\r\n this.authService.loggedinObserv.subscribe(obj => {\r\n this.loggedin = obj;\r\n // if (this.loggedin){\r\n // this.startWatch();\r\n // }else{\r\n // this.stopWatch();\r\n // }\r\n\r\n })\r\n\r\n // sets an idle timeout of 5 seconds, for testing purposes.\r\n idle.setIdle(900);\r\n // sets a timeout period of 5 seconds. after 10 seconds of inactivity, the user will be considered timed out.\r\n idle.setTimeout(10);\r\n // sets the default interrupts, in this case, things like clicks, scrolls, touches to the document\r\n idle.setInterrupts(DEFAULT_INTERRUPTSOURCES);\r\n\r\n\r\n idle.onIdleStart.subscribe(() => {\r\n this.idleState = 'You\\'ve gone idle!';\r\n });\r\n\r\n idle.onIdleEnd.subscribe(() => {\r\n this.idleState = 'No longer idle.';\r\n this.isWarning = false;\r\n });\r\n\r\n idle.onTimeoutWarning.subscribe((countdown) => {\r\n this.idleState = 'You will be signed out in ' + countdown + ' seconds!';\r\n\r\n if (this.loggedin){\r\n this.isWarning = true;\r\n }\r\n\r\n });\r\n\r\n idle.onTimeout.subscribe(() => {\r\n this.idleState = 'Timed out!';\r\n this.timedOut = true;\r\n\r\n //action\r\n this.stopWatch();\r\n });\r\n\r\n\r\n\r\n\r\n\r\n // sets the ping interval to 15 seconds\r\n keepalive.interval(15);\r\n\r\n keepalive.onPing.subscribe(() => {\r\n this.lastPing = new Date();\r\n });\r\n\r\n this.startWatch();\r\n }\r\n\r\n loggedin = false;\r\n idleState = 'Not started.';\r\n timedOut = false;\r\n lastPing?: Date = null;\r\n isWarning = false;\r\n\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n startWatch() {\r\n this.idle.watch();\r\n this.idleState = 'Started.';\r\n this.timedOut = false;\r\n this.isWarning = false;\r\n }\r\n\r\n stopWatch(){\r\n this.idle.stop();\r\n this.isWarning = false;\r\n this.router.navigate(['login']);\r\n }\r\n\r\n using(){\r\n //remove message and continue\r\n this.isWarning = false;\r\n }\r\n\r\n\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { ActionResponse, Operator, TableColumnType, TableConfig } from '../../classes/Classes';\r\n\r\n@Component({\r\n selector: 'spa-table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.css']\r\n})\r\nexport class TableComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n\r\n this.config.columns.forEach(element => {\r\n this.displayedColumns.push(element.name);\r\n });\r\n\r\n this.displayedColumns.push(\"Action\")\r\n\r\n this.styleString = `width: ${50 * this.config.actions.length}px`;\r\n\r\n }\r\n\r\n ngOnChanges(){\r\n this.data = new MatTableDataSource(this.data);\r\n this.data.paginator = this.tablePaginator;\r\n this.applyFilter(this._filterText);\r\n }\r\n\r\n\r\n @Input() config: TableConfig;\r\n @Input() data: any;\r\n @Output() dataChange = new EventEmitter();\r\n @Output() buttonClick = new EventEmitter();\r\n @Output() loadClick = new EventEmitter();\r\n @Output() createClick = new EventEmitter();\r\n\r\n @ViewChild('tablePaginator') tablePaginator: MatPaginator;\r\n\r\n colType = TableColumnType\r\n op = Operator\r\n\r\n displayedColumns: string[] = [];\r\n\r\n styleString: string;\r\n\r\n _filterText = \"\";\r\n applyFilter(filterValue: string) {\r\n this.data.filter = filterValue.trim().toLowerCase();\r\n }\r\n\r\n do(name, item) {\r\n\r\n let resp = new ActionResponse();\r\n resp.name = name;\r\n resp.value = item;\r\n this.buttonClick.emit(resp);\r\n }\r\n\r\n\r\n create(){\r\n this.createClick.emit();\r\n }\r\n\r\n load(){\r\n this.loadClick.emit();\r\n }\r\n\r\n test(a:any, op: Operator, b: any){\r\n\r\n if (op == Operator.Equal){\r\n if (a == b){\r\n return true;\r\n }else{\r\n return false;\r\n }\r\n\r\n }\r\n\r\n if (op == Operator.Greater) {\r\n if (a > b) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n if (op == Operator.Less) {\r\n if (a < b) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n if (op == Operator.NotEqual) {\r\n if (a != b) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { Tile } from '../../classes/Classes';\r\n\r\n\r\n@Component({\r\n selector: 'spa-tiles',\r\n templateUrl: './tiles.component.html',\r\n styleUrls: ['./tiles.component.css']\r\n})\r\nexport class TilesComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() tiles: Tile[];\r\n\r\n @Input() clickable: boolean = false;\r\n @Output() tileClick = new EventEmitter();\r\n\r\n selected: string = \"\";\r\n\r\n clicked(v: Tile){\r\n\r\n if(!this.clickable) return;\r\n\r\n\r\n if(this.selected == v.tileName){\r\n this.tileClick.emit(\"\");\r\n this.selected = \"\";\r\n }else{\r\n this.tileClick.emit(v.tileName);\r\n this.selected = v.tileName;\r\n }\r\n\r\n\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit, Output } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'spa-date',\r\n templateUrl: './date.component.html',\r\n styleUrls: ['./date.component.css']\r\n})\r\nexport class DateComponent implements OnInit {\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() date = new FormControl(new Date());\r\n @Input() display = \"\";\r\n @Input() readonly = false;\r\n\r\n currentYear = new Date().getFullYear();\r\n @Input() min = new FormControl(new Date(this.currentYear - 50, 0, 1));\r\n @Input() max = new FormControl(new Date(this.currentYear + 50, 0, 1));\r\n\r\n // @Output() dateChange = new EventEmitter();\r\n\r\n\r\n // minDate: Date = new Date(this.currentYear, 2, 2);\r\n // maxDate: Date = new Date(this.currentYear, 2, 10);\r\n\r\n\r\n onChangeEvent(d){\r\n // this.dateChange.emit(d);\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { map, startWith } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'spa-text',\r\n templateUrl: './text.component.html',\r\n styleUrls: ['./text.component.css']\r\n})\r\nexport class TextComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n\r\n if(this.options.length > 0){\r\n this.initFilter();\r\n }\r\n\r\n if (this.placeholder == \"\") {\r\n this.placeholder = \"Enter \" + this.display;\r\n }\r\n\r\n }\r\n\r\n ngAfterViewInit(){\r\n\r\n if (this.readonly) {\r\n this.control.setValidators(null);\r\n this.control.updateValueAndValidity();\r\n }\r\n if (!this.required && !this.readonly){\r\n\r\n this.control.setValidators([Validators.minLength(this.min), Validators.maxLength(this.max), Validators.pattern(this.regex)]);\r\n this.control.updateValueAndValidity();\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n // options: FormGroup;\r\n hideRequiredControl = new FormControl(true);\r\n\r\n @Input() readonly = false;\r\n @Input() hint = \"\";\r\n @Input() display = \"\";\r\n @Input() placeholder = \"\";\r\n @Input() value = \"\";\r\n @Output() valueChange = new EventEmitter();\r\n @Input() format = \"text\";\r\n @Input() type = \"\";\r\n\r\n @Output() leave = new EventEmitter();\r\n @Output() enterPress = new EventEmitter();\r\n\r\n @Input() rows = \"\";\r\n @Input() width = \"100%\"\r\n\r\n\r\n //Autocomplete items\r\n @Input() options: any = [];\r\n @Input() optionValue = \"\";\r\n @Input() optionDisplay = \"\";\r\n\r\n myControl = new FormControl();\r\n filteredOptions: Observable<string[]>;\r\n\r\n private initFilter() {\r\n this.filteredOptions = this.myControl.valueChanges.pipe(\r\n startWith(\"\"),\r\n map((value) => this._filter(value))\r\n );\r\n }\r\n\r\n private _filter(value: string): string[] {\r\n const filterValue = value.toLowerCase();\r\n\r\n return this.options.filter((option) => option[`${this.optionDisplay}`].toLowerCase().includes(filterValue));\r\n }\r\n\r\n\r\n\r\n\r\n\r\n //validations\r\n @Input() required = true;\r\n @Input() min = 0;\r\n @Input() max = 9000000000000000; //Math.max\r\n @Input() regex = \"\" //\"[a-zA-Z ]*\" //\"/\\S+@\\S+\\.\\S+/\";\r\n\r\n changed(){\r\n\r\n // if (this.options.length > 0) {\r\n // this.value = this.myControl.value;\r\n // }\r\n\r\n this.valueChange.emit(this.value);\r\n\r\n }\r\n\r\n changed2() {\r\n\r\n // if (this.options.length > 0) {\r\n // this.value = this.myControl.value;\r\n // }\r\n\r\n this.valueChange.emit(this.myControl.value);\r\n\r\n }\r\n\r\n leaved(){\r\n this.leave.emit();\r\n }\r\n\r\n enterPressed() {\r\n this.enterPress.emit();\r\n }\r\n\r\n control = new FormControl( this.value, [Validators.required, Validators.minLength(this.min), Validators.maxLength(this.max), Validators.pattern(this.regex) ]);\r\n\r\n validate() : string{\r\n\r\n\r\n if ((this.required || this.min > 0) && this.control.hasError('required') ){\r\n return `Required`;\r\n }\r\n\r\n if (this.control.hasError('minlength') ){\r\n return `Minimun length is ${this.min}`;\r\n }\r\n\r\n if (this.control.hasError('maxlength')) {\r\n return `Maximum length is ${this.max}`;\r\n }\r\n\r\n if (this.control.hasError('pattern')) {\r\n return `Invalid Input`;\r\n }\r\n\r\n\r\n // if (this.regex != \"\"){\r\n\r\n // let r = new RegExp(this.regex, \"g\");\r\n\r\n // if (!r.test(this.value)){\r\n // this.valid = false;\r\n // this.errorMessage = \"Invalid input\";\r\n // return this.errorMessage;\r\n // }\r\n // }\r\n\r\n return \"\";\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'spa-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.css']\r\n})\r\nexport class SelectComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n // this.displayValue = this.options.filter((m) => m.optionValue == this.value)\r\n // this.displayValue = this.value\r\n if (this.placeholder == \"\") {\r\n this.placeholder = \"Select \" + this.display;\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n\r\n if (this.readonlyMode != \"\" && this.options.length > 0){\r\n this.displayValue = this.options.filter((m) => m[`${this.optionValue}`] == this.value)[0][`${this.optionDisplay}`]\r\n }\r\n\r\n }\r\n\r\n displayValue;\r\n\r\n @Input() width = \"100%\"\r\n @Input() readonly = false;\r\n @Input() readonlyMode = \"\";\r\n @Input() hint = \"\";\r\n @Input() placeholder = \"\";\r\n\r\n\r\n @Input() display = \"\";\r\n @Input() value = \"\";\r\n @Input() options: any;\r\n @Input() optionValue = \"\";\r\n @Input() optionDisplay = \"\";\r\n @Input() optionDisplayExtra = \"\";\r\n\r\n @Output() valueChange = new EventEmitter();\r\n\r\n\r\n\r\n changed(){\r\n this.valueChange.emit(this.value);\r\n }\r\n\r\n}\r\n\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n\r\n@Component({\r\n selector: 'spa-check',\r\n templateUrl: './check.component.html',\r\n styleUrls: ['./check.component.css']\r\n})\r\nexport class CheckComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() readonly = false;\r\n @Input() display = \"\";\r\n @Input() value = false;\r\n @Output() valueChange = new EventEmitter();\r\n @Output() click = new EventEmitter();\r\n @Output() check = new EventEmitter();\r\n @Output() uncheck = new EventEmitter();\r\n\r\n changed(){\r\n this.valueChange.emit(this.value);\r\n }\r\n\r\n clicked(){\r\n this.click.emit();\r\n\r\n if(!this.value){\r\n this.checked();\r\n }else{\r\n this.unchecked();\r\n }\r\n }\r\n\r\n checked(){\r\n this.check.emit();\r\n }\r\n unchecked(){\r\n this.uncheck.emit();\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n\r\n@Component({\r\n selector: 'spa-attach',\r\n templateUrl: './attach.component.html',\r\n styleUrls: ['./attach.component.scss']\r\n})\r\nexport class AttachComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() message = \"Drag and drop files here\"\r\n @Input() files: any[] = [];\r\n @Output() filesChange = new EventEmitter();\r\n @Output() upload = new EventEmitter();\r\n\r\n\r\n @Input() enableUpload = false;\r\n\r\n\r\n /**\r\n * on file drop handler\r\n */\r\n onFileDropped($event) {\r\n this.prepareFilesList($event);\r\n }\r\n\r\n /**\r\n * handle file from browsing\r\n */\r\n fileBrowseHandler(files) {\r\n this.prepareFilesList(files);\r\n }\r\n\r\n /**\r\n * Delete file from files list\r\n * @param index (File index)\r\n */\r\n deleteFile(index: number) {\r\n this.files.splice(index, 1);\r\n }\r\n\r\n /**\r\n * Simulate the upload process\r\n */\r\n // uploadFilesSimulator(index: number) {\r\n // setTimeout(() => {\r\n // if (index === this.files.length) {\r\n // return;\r\n // } else {\r\n // const progressInterval = setInterval(() => {\r\n // if (this.files[index].progress === 100) {\r\n // clearInterval(progressInterval);\r\n // this.uploadFilesSimulator(index + 1);\r\n // } else {\r\n // this.files[index].progress += 5;\r\n // }\r\n // }, 200);\r\n // }\r\n // }, 1000);\r\n // }\r\n\r\n /**\r\n * Convert Files list to normal array list\r\n * @param files (Files List)\r\n */\r\n prepareFilesList(files: Array<any>) {\r\n for (const item of files) {\r\n item.progress = 0;\r\n this.files.push(item);\r\n }\r\n // this.uploadFilesSimulator(0);\r\n }\r\n\r\n /**\r\n * format bytes\r\n * @param bytes (File size in bytes)\r\n * @param decimals (Decimals point)\r\n */\r\n formatBytes(bytes, decimals) {\r\n if (bytes === 0) {\r\n return '0 Bytes';\r\n }\r\n const k = 1024;\r\n const dm = decimals <= 0 ? 0 : decimals || 2;\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\r\n }\r\n\r\n uploaded(){\r\n this.upload.emit();\r\n }\r\n\r\n filesChanged(){\r\n this.filesChange.emit(this.files);\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'spa-datetime',\r\n templateUrl: './datetime.component.html',\r\n styleUrls: ['./datetime.component.css']\r\n})\r\nexport class DatetimeComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() display = \"\";\r\n @Input() value = \"\";\r\n @Output() valueChange = new EventEmitter();\r\n @Input() readonly = false;\r\n\r\n @Input() min = \"01 jan 1900\";\r\n\r\n @Input() max = \"31 dec 9999\";\r\n\r\n changed() {\r\n this.valueChange.emit(this.value);\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n// import { CurrencyPipe } from '@angular/common';\r\n// import { Core } from 'tin-core';\r\n\r\n@Component({\r\n selector: 'spa-money',\r\n templateUrl: './money.component.html',\r\n styleUrls: ['./money.component.css']\r\n})\r\nexport class MoneyComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n\r\n\r\n }\r\n\r\n ngOnChanges() {\r\n\r\n }\r\n\r\n @Input() readonly = false;\r\n @Input() display = \"\";\r\n @Input() value = \"\";\r\n @Output() valueChange = new EventEmitter();\r\n\r\n @Input() width = \"100%\"\r\n @Input() hint = \"\";\r\n @Input() currency = \"$\";\r\n\r\n\r\n\r\n\r\n\r\n changed(){\r\n\r\n this.valueChange.emit(this.value);\r\n\r\n }\r\n\r\n\r\n}\r\n","import {\r\n Directive,\r\n Output,\r\n Input,\r\n EventEmitter,\r\n HostBinding,\r\n HostListener\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appDnd]'\r\n})\r\nexport class DndDirective {\r\n @HostBinding('class.fileover') fileOver: boolean;\r\n @Output() fileDropped = new EventEmitter<any>();\r\n\r\n // Dragover listener\r\n @HostListener('dragover', ['$event']) onDragOver(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = true;\r\n }\r\n\r\n // Dragleave listener\r\n @HostListener('dragleave', ['$event']) public onDragLeave(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = false;\r\n }\r\n\r\n // Drop listener\r\n @HostListener('drop', ['$event']) public ondrop(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = false;\r\n let files = evt.dataTransfer.files;\r\n if (files.length > 0) {\r\n this.fileDropped.emit(files);\r\n }\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { MessageService } from '../../services/message.service';\r\n@Component({\r\n selector: 'spa-chips',\r\n templateUrl: './chips.component.html',\r\n styleUrls: ['./chips.component.css']\r\n})\r\nexport class ChipsComponent implements OnInit {\r\n\r\n constructor(private messageService: MessageService) { }\r\n\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n\r\n @Input() icon = \"\";\r\n @Input() removable = false;\r\n @Input() addable = false;\r\n\r\n\r\n\r\n @Input() chips: string[];\r\n // @Output() chipClick = new EventEmitter();\r\n\r\n @Output() click = new EventEmitter();\r\n\r\n @Output() remove = new EventEmitter();\r\n\r\n clicked(chip: string) {\r\n\r\n if (typeof chip != 'string') {\r\n return;\r\n }\r\n\r\n if (chip) {\r\n this.click.emit(chip);\r\n }\r\n }\r\n\r\n\r\n removed(chip) {\r\n\r\n // const index = this.chips.indexOf(chip);\r\n\r\n // if (index >= 0) {\r\n // this.chips.splice(index, 1);\r\n // }\r\n\r\n this.messageService.confirm(`Remove ${chip} ?`).subscribe((result) => {\r\n if (result == \"yes\") {\r\n\r\n this.remove.emit(chip);\r\n\r\n };\r\n });\r\n\r\n }\r\n\r\n}\r\n\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'spa-activity',\r\n templateUrl: './activity.component.html',\r\n styleUrls: ['./activity.component.css']\r\n})\r\nexport class ActivityComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() notes = new Array();\r\n notesMessage: string = \"Empty\";\r\n @Input() title = \"Notes\"\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'spa-option',\r\n templateUrl: './option.component.html',\r\n styleUrls: ['./option.component.css']\r\n})\r\nexport class OptionComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.OGValue = this.value;\r\n }\r\n\r\n OGValue\r\n\r\n\r\n @Input() options: any;\r\n @Input() optionValue = \"\";\r\n @Input() optionDisplay = \"\";\r\n @Input() readonly = false;\r\n\r\n @Input() value = \"\";\r\n @Input() display = \"\";\r\n @Input() show: boolean = false;\r\n\r\n\r\n @Output() valueChange = new EventEmitter();\r\n @Output() enterPress = new EventEmitter();\r\n\r\n changed() {\r\n this.valueChange.emit(this.value);\r\n }\r\n\r\n enterPressed(){\r\n this.valueChange.emit();\r\n }\r\n\r\n resetValue(){\r\n this.value = this.OGValue;\r\n this.changed();\r\n\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'spa-label',\r\n templateUrl: './label.component.html',\r\n styleUrls: ['./label.component.css']\r\n})\r\nexport class LabelComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() display = \"\";\r\n @Input() value = \"\";\r\n @Input() format = \"text\";\r\n\r\n}\r\n","import { AfterViewInit, Component, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { MatStepper } from '@angular/material/stepper';\r\nimport { STEPPER_GLOBAL_OPTIONS } from '@angular/cdk/stepper';\r\nimport { Step } from '../../classes/Classes';\r\n\r\n@Component({\r\n selector: 'spa-steps',\r\n templateUrl: './steps.component.html',\r\n styleUrls: ['./steps.component.css'],\r\n providers: [{\r\n provide: STEPPER_GLOBAL_OPTIONS, useValue: { displayDefaultIndicatorType: false }\r\n }]\r\n})\r\nexport class StepsComponent implements OnInit, AfterViewInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n ngAfterViewInit() {\r\n\r\n }\r\n\r\n ngOnChanges() {\r\n this.pushSteps();\r\n }\r\n\r\n @ViewChild('stepper') stepper: MatStepper;\r\n @Input() value = \"\";\r\n @Input() steps: Step[];\r\n\r\n setStepper() {\r\n\r\n if (this.value == \"\") return;\r\n\r\n\r\n this.stepper.selectedIndex = 0;\r\n\r\n switch (this.value) {\r\n\r\n\r\n\r\n case \"Draft\":\r\n this.stepper.selectedIndex = 0;\r\n break;\r\n\r\n case \"Head Approval\":\r\n this.pushStepper(1)\r\n break;\r\n\r\n case \"CE Approval\":\r\n this.pushStepper(2)\r\n break;\r\n\r\n case \"Booking\":\r\n this.pushStepper(3)\r\n break;\r\n\r\n case \"BTA Approval\":\r\n this.pushStepper(4)\r\n break;\r\n\r\n case \"Travel\":\r\n this.pushStepper(5)\r\n break;\r\n\r\n case \"BTR Approval\":\r\n this.pushStepper(6)\r\n break;\r\n\r\n case \"Travel Closure\":\r\n this.pushStepper(7)\r\n break;\r\n\r\n }\r\n\r\n }\r\n\r\n pushStepper(count: number) {\r\n\r\n for (let index = 0; index < count + 1; index++) {\r\n // const element = array[index];\r\n this.stepper.selectedIndex = index;\r\n }\r\n\r\n }\r\n\r\n pushSteps(){\r\n\r\n if(this.steps.length == 0) return;\r\n if (this.value == \"\") return;\r\n this.stepper.selectedIndex = 0;\r\n\r\n\r\n let i = 0;\r\n\r\n for (let step of this.steps) {\r\n\r\n if (step.name != this.value) {\r\n\r\n this.stepper.selectedIndex = i;\r\n i++;\r\n\r\n } else {\r\n\r\n this.stepper.selectedIndex = i;\r\n break;\r\n\r\n }\r\n }\r\n\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\n\r\n@Component({\r\n selector: 'spa-filter',\r\n templateUrl: './filter.component.html',\r\n styleUrls: ['./filter.component.css']\r\n})\r\nexport class FilterComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngOnChanges() {\r\n // console.log(\"OnChange\")\r\n this.applyFilter(this._filterText);\r\n }\r\n\r\n @Input() data = new MatTableDataSource();;\r\n @Output() refreshClick = new EventEmitter();\r\n\r\n _filterText = \"\";\r\n\r\n applyFilter(filterValue: string) {\r\n if (this.data){\r\n this.data.filter = filterValue.trim().toLowerCase();\r\n }\r\n\r\n }\r\n\r\n refreshClicked(){\r\n this.refreshClick.emit();\r\n }\r\n\r\n}\r\n","import { LoaderComponent } from './components/loader/loader.component';\r\nimport { SpaMatModule } from \"./modules/spa-mat.module\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { LoaderInterceptor } from './services/loader-interceptor.service';\r\nimport { NgIdleKeepaliveModule } from '@ng-idle/keepalive';\r\nimport { MomentModule } from 'angular2-moment';\r\n// import { NgxDocViewerModule } from 'ngx-doc-viewer';\r\n\r\nimport { TinSpaComponent } from \"./components/tin-spa.component\";\r\nimport { NavMenuComponent } from \"./components/nav-menu/nav-menu.component\";\r\nimport { messageDialog } from \"./components/message/messageDialog.component\";\r\nimport { TimeoutComponent } from './components/timeout/timeout.component';\r\nimport { HashLocationStrategy, LocationStrategy } from '@angular/common';\r\nimport { TableComponent } from './components/table/table.component';\r\nimport { TilesComponent } from './components/tiles/tiles.component';\r\nimport { DateComponent } from './components/date/date.component';\r\nimport { TextComponent } from './components/text/text.component';\r\n// import { ViewerComponent } from './components/viewer/viewer.component';\r\nimport { SelectComponent } from './components/select/select.component';\r\nimport { CheckComponent } from './components/check/check.component';\r\nimport { AttachComponent } from './components/attach/attach.component';\r\nimport { DatetimeComponent } from './components/datetime/datetime.component';\r\nimport { MoneyComponent } from './components/money/money.component';\r\nimport { DndDirective } from './dnd.directive';\r\nimport { ChipsComponent } from './components/chips/chips.component';\r\nimport { ActivityComponent } from './components/activity/activity.component';\r\n// import { viewerDialog } from './components/viewer/viewerDialog.component';\r\n// import { HtmlComponent } from './components/html/html.component';\r\n// import { AngularEditorModule } from '@kolkov/angular-editor';\r\nimport { OptionComponent } from './components/option/option.component';\r\nimport { LabelComponent } from './components/label/label.component';\r\nimport { StepsComponent } from './components/steps/steps.component';\r\nimport { FilterComponent } from './components/filter/filter.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [DndDirective,TinSpaComponent, messageDialog, NavMenuComponent, LoaderComponent,\r\n TimeoutComponent, TableComponent, TilesComponent, DateComponent, TextComponent,\r\n SelectComponent, CheckComponent, AttachComponent, DatetimeComponent,\r\n MoneyComponent,\r\n ChipsComponent,\r\n ActivityComponent, OptionComponent, LabelComponent, StepsComponent, FilterComponent ],\r\n\r\n entryComponents: [messageDialog],\r\n\r\n imports: [\r\n ReactiveFormsModule.withConfig({ warnOnNgModelWithFormControl: \"never\" }),\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SpaMatModule,\r\n MomentModule,\r\n // NgxDocViewerModule,\r\n // AngularEditorModule,\r\n\r\n NgIdleKeepaliveModule.forRoot()\r\n ],\r\n\r\n exports: [\r\n CommonModule,\r\n FormsModule,\r\n SpaMatModule,\r\n TinSpaComponent,\r\n messageDialog,\r\n NavMenuComponent,\r\n LoaderComponent,\r\n TimeoutComponent,\r\n TableComponent,\r\n TilesComponent,\r\n DateComponent,\r\n\r\n SelectComponent,\r\n TextComponent,\r\n DatetimeComponent,\r\n CheckComponent,\r\n AttachComponent,\r\n MoneyComponent,\r\n ChipsComponent,\r\n ActivityComponent,\r\n OptionComponent,\r\n LabelComponent,\r\n StepsComponent,\r\n FilterComponent\r\n\r\n\r\n ],\r\n\r\n providers: [\r\n { provide: HTTP_INTERCEPTORS, useClass: LoaderInterceptor, multi: true },\r\n { provide: LocationStrategy, useClass: HashLocationStrategy}\r\n ],\r\n})\r\nexport class TinSpaModule {}\r\n","import { MessageService } from \"../../services/message.service\";\r\nimport { StorageService } from \"../../services/storage.service\";\r\nimport { AuthService } from \"../../services/auth.service\";\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { DataServiceLib } from \"../../services/data.service\";\r\nimport { LogService } from \"./../../services/log.service\";\r\nimport { User, AppConfig } from \"../../classes/Classes\";\r\nimport { HttpService } from \"../../services/http.service\";\r\nimport { ApiResponse, Constants } from \"../../classes/TinCore\";\r\n\r\n@Component({\r\n selector: \"spa-login\",\r\n templateUrl: \"./login.component.html\",\r\n styleUrls: [\"./login.component.scss\"],\r\n})\r\nexport class LoginComponent implements OnInit {\r\n\r\n constructor(private httpService: HttpService, private storageService: StorageService, public router: Router, private messageService: MessageService, public dataService: DataServiceLib,\r\n public authService: AuthService, private logService: LogService, private route: ActivatedRoute\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.authService.Updateloggedin(false);\r\n this.authService.UpdateRole(null);\r\n this.storageService.clear();\r\n\r\n this.dataService.appConfigObserv.subscribe(x => this.appConfig = x);\r\n\r\n if (this.route.snapshot.queryParams.redirectTo != undefined) {\r\n this.redirectPath = this.route.snapshot.queryParams.redirectTo\r\n }else{\r\n this.redirectPath = \"home\"\r\n }\r\n\r\n }\r\n\r\n redirectPath\r\n\r\n public user = new User();\r\n hide = true;\r\n isProcessing: boolean = false;\r\n\r\n appConfig = new AppConfig();\r\n\r\n public signup() {\r\n this.router.navigate([\"signup\"]);\r\n }\r\n\r\n public recoverAccount() {\r\n this.router.navigate([\"recover-account\"]);\r\n }\r\n\r\n public login() {\r\n\r\n if (this.user.userName == \"\" || this.user.password == \"\") {\r\n this.messageService.toast(\"Please enter your credentials\");\r\n return;\r\n }\r\n\r\n\r\n this.logService.info(\"logging in\");\r\n\r\n this.isProcessing = true;\r\n\r\n\r\n this.user.userName = this.user.userName\r\n this.dataService.Login(this.user).subscribe((apiResponse: ApiResponse) => {\r\n\r\n this.isProcessing = false;\r\n\r\n\r\n if (apiResponse.success) {\r\n\r\n if (apiResponse.data.authType == 'local' && !this.appConfig.localAuth) {\r\n this.messageService.toast(\"Contact Admin: Authentication Type error\");\r\n return;\r\n }\r\n\r\n if (apiResponse.data.authType == 'AD' && !this.appConfig.ADAuth) {\r\n this.messageService.toast(\"Contact Admin: Authentication Type error\");\r\n return;\r\n }\r\n\r\n\r\n this.authService.Updateloggedin(true);\r\n\r\n this.authService.UpdateToken(apiResponse.data.token);\r\n this.storageService.store(Constants.AUTH_TOKEN, apiResponse.data.token);\r\n\r\n this.authService.UpdateTokenExpire(apiResponse.data.expiration);\r\n this.storageService.store(Constants.AUTH_TOKEN_EXPIRE, apiResponse.data.expiration);\r\n\r\n this.authService.UpdateCurrentUser(this.user.userName);\r\n this.storageService.store(Constants.AUTH_USER, this.user.userName);\r\n\r\n this.authService.updateLoggedUserFullName(apiResponse.data.firstName);\r\n this.storageService.store(Constants.AUTH_NAME, apiResponse.data.firstName);\r\n\r\n this.authService.UpdateRole(apiResponse.data.role);\r\n this.storageService.store(Constants.AUTH_ROLES, JSON.stringify(apiResponse.data.role));\r\n\r\n\r\n this.logService.info(\"logged in\");\r\n\r\n\r\n if (apiResponse.data.changePassword == true && apiResponse.data.authType == 'local') {\r\n\r\n this.router.navigate([\"home/user/change-password\"], {\r\n queryParams: { redirectTo: this.redirectPath },\r\n queryParamsHandling: 'merge',\r\n skipLocationChange: false\r\n });\r\n return\r\n }\r\n\r\n this.router.navigate([this.redirectPath]);\r\n\r\n\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n this.user.password = \"\";\r\n }\r\n },\r\n (error) => {\r\n this.isProcessing = false;\r\n\r\n this.messageService.toast(this.httpService.Error(error));\r\n }\r\n );\r\n }\r\n\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n// import { HttpService, ApiResponse } from 'tin-core';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { DataServiceLib } from '../../services/data.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { User, Profile, Account } from '../../classes/Classes';\r\nimport { HttpService } from '../../services/http.service';\r\nimport { ApiResponse } from '../../classes/TinCore';\r\n\r\n@Component({\r\n selector: 'spa-signup',\r\n templateUrl: './signup.component.html',\r\n styleUrls: ['./signup.component.css']\r\n})\r\nexport class SignupComponent implements OnInit {\r\n\r\n\r\n constructor(private httpService: HttpService, private messageService: MessageService, private dataService: DataServiceLib, private authService: AuthService,) { }\r\n\r\n ngOnInit() {\r\n\r\n this.account.user = this.user;\r\n this.account.profile = this.profile;\r\n }\r\n\r\n isProcessing: boolean = false;\r\n user = new User();\r\n profile = new Profile();\r\n\r\n account = new Account();\r\n\r\n confirmPassword: string;\r\n\r\n\r\ncreate(){\r\n\r\n this.profile.userName = this.user.userName;\r\n\r\n this.isProcessing = true;\r\n this.dataService.RegisterAccount(this.account).subscribe(\r\n (apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"Account Created\");\r\n\r\n this.user = new User();\r\n this.profile = new Profile();\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n },\r\n (error) => {\r\n this.isProcessing = false;\r\n this.messageService.toast(this.httpService.Error(error));\r\n }\r\n );\r\n}\r\n\r\n\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/data.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { User } from '../../classes/Classes';\r\n// import { ApiResponse } from 'tin-core';\r\nimport { Location } from '@angular/common';\r\nimport { ApiResponse } from '../../classes/TinCore';\r\n\r\n@Component({\r\n selector: 'spa-recover-account',\r\n templateUrl: './recover-account.component.html',\r\n styleUrls: ['./recover-account.component.css']\r\n})\r\nexport class RecoverAccountComponent implements OnInit {\r\n\r\n constructor(private location: Location, private dataService: DataServiceLib, public authService: AuthService, private messageService: MessageService) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n userName: string = \"\";\r\n\r\n recover(){\r\n\r\n\r\n if (this.userName == \"\") {\r\n\r\n this.messageService.toast(\"Please enter your userName\");\r\n return;\r\n } else {\r\n let u = new User();\r\n u.userName = this.userName;\r\n\r\n this.dataService.SelfReset(u).subscribe((apiResponse: ApiResponse) => {\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"The password has been sent to your email\");\r\n this.location.back();\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n}\r\n","import { SpaMatModule } from \"./spa-mat.module\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { LoginComponent } from \"../components/login/login.component\";\r\nimport { SignupComponent } from \"../components/signup/signup.component\";\r\nimport { RecoverAccountComponent } from \"../components/recover-account/recover-account.component\";\r\nimport { TinSpaModule } from \"../tin-spa.module\";\r\n\r\n@NgModule({\r\n declarations: [LoginComponent, SignupComponent, RecoverAccountComponent],\r\n\r\n entryComponents: [],\r\n\r\n imports: [\r\n ReactiveFormsModule.withConfig({ warnOnNgModelWithFormControl: \"never\" }),\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SpaMatModule,\r\n TinSpaModule\r\n ],\r\n\r\n exports: [\r\n CommonModule,\r\n FormsModule,\r\n SpaMatModule,\r\n LoginComponent,\r\n SignupComponent,\r\n RecoverAccountComponent,\r\n ],\r\n})\r\nexport class SpaIndexModule {}\r\n","\r\nimport { ChangeUserPassword } from './../../classes/Classes';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { DataServiceLib } from '../../services/data.service';\r\nimport { AuthService } from '../../services/auth.service';\r\n// import { ApiResponse, HttpService } from 'tin-core';\r\nimport { Location } from '@angular/common';\r\nimport { HttpService } from '../../services/http.service';\r\nimport { ApiResponse } from '../../classes/TinCore';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'spa-change-password',\r\n templateUrl: './change-password.component.html',\r\n styleUrls: ['./change-password.component.css']\r\n})\r\nexport class ChangePasswordComponent implements OnInit {\r\n\r\n constructor(public router: Router, private location: Location, private httpService: HttpService, private messageService: MessageService, public dataService: DataServiceLib, private authService: AuthService, private route: ActivatedRoute) { }\r\n\r\n ngOnInit() {\r\n this.myRole = this.authService.currentRoleSource.value\r\n\r\n if (this.dataService.tmpProfileuserName==\"\"){\r\n this.changePassword.userName = this.authService.currentUser;\r\n\r\n }else{\r\n this.changePassword.userName = this.dataService.tmpProfileuserName;\r\n this.dataService.tmpProfileuserName = \"\";\r\n }\r\n\r\n if (this.route.snapshot.queryParams.redirectTo != undefined) {\r\n this.redirectPath = this.route.snapshot.queryParams.redirectTo\r\n } else {\r\n this.redirectPath = \"home\"\r\n }\r\n\r\n }\r\n\r\n myRole;\r\n redirectPath\r\n isProcessing: boolean = false;\r\n changePassword = new ChangeUserPassword();\r\n\r\n public change() {\r\n\r\n if (!this.myRole[this.dataService.capUsers.name]){\r\n if (this.changePassword.currentPassword == \"\") {\r\n this.messageService.toast(\"Please enter current Password\");\r\n return;\r\n }\r\n }\r\n\r\n if (this.changePassword.newPassword == \"\") {\r\n this.messageService.toast(\"Please enter new Password\");\r\n return;\r\n }\r\n\r\n if (this.changePassword.confirmPassword == \"\") {\r\n this.messageService.toast(\"Please confirm new Password\");\r\n return;\r\n }\r\n\r\n if (this.changePassword.confirmPassword != this.changePassword.newPassword ) {\r\n this.messageService.toast(\"Passwords do not match\");\r\n return;\r\n }\r\n\r\n this.isProcessing = true;\r\n\r\n if (this.myRole[this.dataService.capUsers.name]){\r\n\r\n\r\n this.dataService.ChangePasswordAdmin(this.changePassword).subscribe((apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"Password Changed\");\r\n\r\n this.router.navigate([this.redirectPath]);\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n }\r\n );\r\n\r\n }else{\r\n\r\n this.dataService.ChangePassword(this.changePassword).subscribe((apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"Password Changed\");\r\n\r\n this.router.navigate([this.redirectPath]);\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n }\r\n );\r\n\r\n }\r\n }\r\n}\r\n","import { AuthService } from './../../services/auth.service';\r\nimport { MessageService } from './../../services/message.service';\r\nimport { DataServiceLib } from './../../services/data.service';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { AppConfig, Profile } from '../../classes/Classes';\r\nimport { Router } from '@angular/router';\r\nimport { HttpService } from '../../services/http.service';\r\nimport { ApiResponse } from '../../classes/TinCore';\r\n\r\n@Component({\r\n selector: 'spa-profile',\r\n templateUrl: './profile.component.html',\r\n styleUrls: ['./profile.component.css']\r\n})\r\nexport class ProfileComponent implements OnInit {\r\n\r\n constructor(public dataService: DataServiceLib, private messageService: MessageService, private httpService: HttpService, private router: Router, private authService: AuthService) { }\r\n\r\n ngOnInit() {\r\n\r\n this.myRole = this.authService.currentRoleSource.value\r\n\r\n if (this.dataService.tmpProfileuserName==\"\"){\r\n this.loadProfile(this.authService.currentUser);\r\n\r\n }else{\r\n this.loadProfile(this.dataService.tmpProfileuserName);\r\n this.dataService.tmpProfileuserName = \"\";\r\n }\r\n\r\n }\r\n\r\n isProcessing: boolean;\r\n myRole;\r\n @Input() appConfig = new AppConfig();\r\n\r\n\r\n selfProfile : boolean = false;\r\n\r\n profile = new Profile();\r\n roles;\r\n approvalRoles;\r\n employees;\r\n\r\n\r\n loadProfile(userName: string){\r\n\r\n let action = \"all\";\r\n\r\n this.dataService.GetUserByID(userName).subscribe(\r\n (apiResponse: ApiResponse) => {\r\n\r\n this.profile = apiResponse[0];\r\n\r\n if (this.profile.userName.toLocaleLowerCase() == this.authService.currentUser.toLocaleLowerCase()){\r\n this.selfProfile = true\r\n }\r\n this.loadRoles()\r\n console.log(this.profile)\r\n },\r\n (error) => {\r\n this.isProcessing = false;\r\n this.messageService.toast(this.httpService.Error(error));\r\n }\r\n );\r\n }\r\n\r\n loadRoles(){\r\n\r\n this.dataService.GetRole(\"all\", \"\").subscribe(\r\n (apiResponse: ApiResponse) => {\r\n this.roles = apiResponse;\r\n console.log(this.roles)\r\n },\r\n (error) => {\r\n this.isProcessing = false;\r\n this.messageService.toast(this.httpService.Error(error));\r\n }\r\n );\r\n\r\n }\r\n\r\n changePassword(){\r\n this.dataService.tmpProfileuserName = this.profile.userName;\r\n this.router.navigate([\"home/user/change-password\"]);\r\n }\r\n\r\n gotoUsers(){\r\n this.router.navigate([\"home/admin/users\"]);\r\n }\r\n\r\n update(){\r\n\r\n }\r\n\r\n updateProfile(){\r\n this.isProcessing = true;\r\n\r\n // console.log(this.profile)\r\n // return\r\n this.dataService.UpdateUser(this.profile).subscribe(\r\n (apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"Profile Updated\");\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n },\r\n (error) => {\r\n this.messageService.toast(\"Connection failed \");\r\n this.isProcessing = false;\r\n }\r\n );\r\n }\r\n\r\n}\r\n","import { SpaMatModule } from \"./spa-mat.module\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { ChangePasswordComponent } from \"../components/change-password/change-password.component\";\r\nimport { ProfileComponent } from \"../components/profile/profile.component\";\r\nimport { TinSpaModule } from \"../tin-spa.module\";\r\n\r\n@NgModule({\r\n declarations: [ChangePasswordComponent, ProfileComponent],\r\n\r\n entryComponents: [],\r\n\r\n imports: [\r\n ReactiveFormsModule.withConfig({ warnOnNgModelWithFormControl: \"never\" }),\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SpaMatModule,\r\n TinSpaModule\r\n ],\r\n\r\n exports: [\r\n CommonModule,\r\n FormsModule,\r\n SpaMatModule,\r\n ChangePasswordComponent,\r\n ProfileComponent,\r\n ],\r\n})\r\nexport class SpaUserModule {}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/data.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { ApiResponse } from '../../classes/TinCore';\r\n// import { ApiResponse } from 'tin-core';\r\n\r\n@Component({\r\n selector: 'spa-settings',\r\n templateUrl: './settings.component.html',\r\n styleUrls: ['./settings.component.css']\r\n})\r\nexport class SettingsComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private messageService: MessageService) { }\r\n\r\n ngOnInit(): void {\r\n this.loadSettings();\r\n }\r\n\r\n _filterText = \"\";\r\n settings;\r\n isProcessing = false;\r\n\r\n applyFilter(filterValue: string) {\r\n this.settings.filter = filterValue.trim().toLowerCase();\r\n }\r\n\r\n loadSettings(){\r\n this.dataService.GetSetting(\"all\", \"\").subscribe((apiResponse) => {\r\n this.settings = apiResponse;\r\n }\r\n );\r\n\r\n }\r\n\r\n updateSetting(setting) {\r\n\r\n this.isProcessing = true;\r\n this.dataService.UpdateSetting(setting, \"edit\").subscribe((apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(`Setting ${setting.sName} Updated`);\r\n this.loadSettings();\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n\r\n });\r\n\r\n };\r\n\r\n addSetting() {\r\n\r\n // const dialogRef = this.dialog.open(addRoleDialog, {\r\n // width: \"1100px\",\r\n // data: \"\",\r\n // });\r\n\r\n // dialogRef.afterClosed().subscribe((result) => {\r\n // if (result == \"success\") {\r\n // this.loadRoles();\r\n // }\r\n // });\r\n this.messageService.toast(\"Feature not Available\");\r\n\r\n }\r\n\r\n}\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { DataServiceLib } from \"../../services/data.service\";\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-logs',\r\n templateUrl: './logs.component.html',\r\n styleUrls: ['./logs.component.css']\r\n})\r\nexport class LogsComponent implements OnInit {\r\n constructor(private authService: AuthService, private dataService: DataServiceLib,) { }\r\n\r\n ngOnInit() {\r\n this.authService.isAuthorised(this.dataService.capLogs.name);\r\n this.loadLogs();\r\n }\r\n\r\n isProcessing: boolean = false;\r\n @ViewChild(\"logsPaginator\") logsPaginator: MatPaginator;\r\n\r\n\r\n logs;\r\n\r\n displayedColumns: string[] = [\"dateLogged\", \"userName\", \"fullName\", \"source\", \"details\"];\r\n\r\n public loadLogs() {\r\n this.dataService.GetLog(\"all\", \"\").subscribe((apiResponse) => {\r\n\r\n this.logs = new MatTableDataSource(apiResponse);\r\n this.logs.paginator = this.logsPaginator;\r\n\r\n }\r\n );\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Inject, ViewChild } from \"@angular/core\";\r\nimport { MatTableDataSource } from \"@angular/material/table\";\r\nimport { MatPaginator } from \"@angular/material/paginator\";\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from \"@angular/material/dialog\";\r\nimport { DataServiceLib } from \"../../services/data.service\";\r\nimport { Router } from \"@angular/router\";\r\nimport { MessageService } from \"../../services/message.service\";\r\nimport { AuthService } from \"../../services/auth.service\";\r\nimport { User } from '../../classes/Classes';\r\nimport { HttpService } from \"../../services/http.service\";\r\nimport { ApiResponse } from \"../../classes/TinCore\";\r\n\r\n@Component({\r\n selector: \"spa-users\",\r\n templateUrl: \"./users.component.html\",\r\n styleUrls: [\"./users.component.css\"],\r\n})\r\nexport class UsersComponent implements OnInit {\r\n constructor(private httpService: HttpService, public router: Router, private authService: AuthService, private dataService: DataServiceLib, public dialog: MatDialog, private messageService: MessageService) { }\r\n\r\n ngOnInit() {\r\n this.authService.isAuthorised(this.dataService.capUsers.name);\r\n this.UpdateData();\r\n }\r\n\r\n isProcessing: boolean = false;\r\n @ViewChild(\"usersPaginator\") usersPaginator: MatPaginator;\r\n\r\n _filterText = \"\";\r\n\r\n users;\r\n displayedColumns: string[] = [\"userName\", \"fullName\", \"roleName\", \"locked\", \"dateCreated\", \"Action\"];\r\n\r\n public UpdateData() {\r\n this.dataService.GetUser().subscribe(\r\n (apiResponse) => {\r\n\r\n this.users = new MatTableDataSource(apiResponse);\r\n this.users.paginator = this.usersPaginator;\r\n this.applyFilter(this._filterText);\r\n\r\n },\r\n (error) => {\r\n this.isProcessing = false;\r\n this.messageService.toast(this.httpService.Error(error));\r\n }\r\n );\r\n }\r\n\r\n applyFilter(filterValue: string) {\r\n this.users.filter = filterValue.trim().toLowerCase();\r\n }\r\n\r\n createAccount() {\r\n this.router.navigate([\"home/admin/create-account\"]);\r\n }\r\n\r\n viewProfile(user: User) {\r\n\r\n this.dataService.tmpProfileuserName = user.userName;\r\n this.router.navigate([\"home/user/profile\"]);\r\n\r\n }\r\n\r\n lock(u) {\r\n let login = { userName: u.userName, password: \"Abcdef@123\" }\r\n\r\n this.dataService.LockUser(login).subscribe((apiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"User Locked\");\r\n this.UpdateData();\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse);\r\n }\r\n });\r\n }\r\n\r\n unlock(u) {\r\n let login = { userName: u.userName, password: \"Abcdef@123\" }\r\n\r\n this.dataService.UnlockUser(login).subscribe((apiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"User Unlocked\");\r\n this.UpdateData();\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse);\r\n }\r\n });\r\n }\r\n\r\n recover(u: User) {\r\n this.dataService.SelfReset(u).subscribe((apiResponse: ApiResponse) => {\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"The password has been sent on email\");\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n });\r\n\r\n }\r\n\r\n deleteUser(user: User) {\r\n\r\n this.messageService.confirm(`Delete ${user.userName} ?`).subscribe((result) => {\r\n\r\n if (result == \"yes\") {\r\n\r\n this.isProcessing = true;\r\n this.dataService.DeleteUser(user).subscribe(\r\n (apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"User Deleted\");\r\n\r\n this.UpdateData();\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n },\r\n (error) => {\r\n this.messageService.toast(\"Connection failed \");\r\n this.isProcessing = false;\r\n }\r\n );\r\n\r\n }\r\n })\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n","import { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatDialog, MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { DataServiceLib } from '../../services/data.service';\r\n// import { AuthService } from '../../services/auth.service';\r\n// import { ApiResponse, Core } from 'tin-core';\r\nimport { Role } from '../../classes/Classes';\r\nimport { ApiResponse } from '../../classes/TinCore';\r\n\r\n@Component({\r\n selector: 'app-addRole',\r\n templateUrl: './addRoleDialog.component.html',\r\n styleUrls: ['./roles.component.css']\r\n})\r\nexport class addRoleDialog implements OnInit {\r\n\r\n constructor(private messageService: MessageService, private dataService: DataServiceLib, private authService: AuthService, private dialogRef: MatDialogRef<addRoleDialog>, @Inject(MAT_DIALOG_DATA) public data) { }\r\n ngOnInit() {\r\n this.capItems = this.data;\r\n }\r\n\r\n capItems;\r\n\r\n isProcessing: boolean;\r\n role = new Role();\r\n\r\n submit() {\r\n\r\n if (this.role.roleName == \"New Role\" || this.role.roleName == \"\"){\r\n this.messageService.toast(\"Please enter Role Name\");\r\n return;\r\n }\r\n\r\n\r\n this.isProcessing = true;\r\n this.dataService.PostRole(this.role,\"add\").subscribe((apiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"Role Added\");\r\n this.dialogRef.close(\"success\");\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n\r\n\r\n }, error => {\r\n this.messageService.toast(\"Connection failed\");\r\n this.isProcessing = false;\r\n });\r\n\r\n };\r\n};\r\n\r\n\r\n\r\n","import { AppConfig } from './../../classes/Classes';\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { MatDialog } from \"@angular/material/dialog\";\r\nimport { DataServiceLib } from \"../../services/data.service\";\r\nimport { Role, CapItem } from \"../../classes/Classes\";\r\nimport { addRoleDialog } from \"./addRoleDialog.component\";\r\nimport { Router } from \"@angular/router\";\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { HttpService } from '../../services/http.service';\r\n\r\n\r\n@Component({\r\n selector: \"spa-roles\",\r\n templateUrl: \"./roles.component.html\",\r\n styleUrls: [\"./roles.component.css\"],\r\n})\r\nexport class RolesComponent implements OnInit {\r\n constructor(private httpService: HttpService, private router: Router, private authService: AuthService, private dataService: DataServiceLib, public dialog: MatDialog, private messageService: MessageService) { }\r\n\r\n ngOnInit() {\r\n this.authService.isAuthorised(this.dataService.capRoles.name);\r\n this.loadRoles();\r\n this.dataService.appConfigObserv.subscribe(x => this.appConfig = x);\r\n }\r\n\r\n isProcessing = false;\r\n roles: Role[];\r\n\r\n appConfig = new AppConfig();\r\n\r\n loadRoles() {\r\n this.dataService.GetRole(\"all\", \"\").subscribe((apiResponse) => {\r\n this.roles = apiResponse;\r\n });\r\n }\r\n\r\n refresh() {\r\n this.loadRoles();\r\n }\r\n\r\n addRole() {\r\n const dialogRef = this.dialog.open(addRoleDialog, {\r\n width: \"1100px\",\r\n data: this.appConfig.capItems,\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n if (result == \"success\") {\r\n this.loadRoles();\r\n }\r\n });\r\n }\r\n\r\n updateRole(role: Role) {\r\n\r\n this.messageService.confirm(`UPDATE ${role.roleName} ?`).subscribe((result) => {\r\n\r\n if (result == \"yes\") {\r\n\r\n this.dataService.PostRole(role, \"edit\").subscribe((apiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"Role Updated\");\r\n this.loadRoles();\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse);\r\n }\r\n });\r\n\r\n }\r\n\r\n })\r\n\r\n\r\n };\r\n\r\n deleteRole(role: Role) {\r\n\r\n this.messageService.confirm(`DELETE ${role.roleName} ?`).subscribe((result) => {\r\n\r\n if (result == \"yes\") {\r\n\r\n this.dataService.PostRole(role, \"delete\").subscribe((apiResponse) => {\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"Role Deleted\");\r\n this.loadRoles();\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse);\r\n }\r\n });\r\n\r\n }\r\n\r\n })\r\n\r\n }\r\n}\r\n","import { DataServiceLib } from './../../services/data.service';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { Profile, AppConfig, Register } from '../../classes/Classes';\r\nimport { Router } from '@angular/router';\r\nimport { HttpService } from '../../services/http.service';\r\nimport { ApiResponse } from '../../classes/TinCore';\r\n\r\n@Component({\r\n selector: 'spa-create-account',\r\n templateUrl: './create-account.component.html',\r\n styleUrls: ['./create-account.component.css']\r\n})\r\nexport class CreateAccountComponent implements OnInit {\r\n\r\n constructor(private httpService: HttpService, private messageService: MessageService, private dataService: DataServiceLib, private authService: AuthService, public router: Router) { }\r\n\r\n ngOnInit() {\r\n this.appConfig = this.dataService.appConfig;\r\n }\r\n\r\n\r\n\r\n @Input() appConfig = new AppConfig();\r\n\r\n isProcessing: boolean = false;\r\n register = new Register();\r\n confirmPassword: string;\r\n openProfile: boolean = true;\r\n\r\n authTypes = [\r\n { name: \"Local Authentication\", value: \"local\" },\r\n { name: \"AD Authentication\", value: \"AD\" }\r\n ]\r\n\r\n\r\n create() {\r\n\r\n if (this.register.authType == \"\") {\r\n this.messageService.toast(\"Choose Authentication Type\");\r\n return;\r\n }\r\n\r\n\r\n this.isProcessing = true;\r\n this.dataService.RegisterAccount(this.register).subscribe((apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"Account Created\");\r\n\r\n if (this.openProfile) {\r\n this.viewProfile(this.register.userName);\r\n } else {\r\n // this.user = new User();\r\n this.register = new Register();\r\n this.confirmPassword = \"\";\r\n }\r\n\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n },\r\n (error) => {\r\n this.isProcessing = false;\r\n this.messageService.toast(this.httpService.Error(error));\r\n }\r\n );\r\n }\r\n\r\n viewProfile(userName: string) {\r\n\r\n this.dataService.tmpProfileuserName = userName;\r\n this.router.navigate([\"home/user/profile\"]);\r\n\r\n }\r\n\r\n}\r\n","import { SettingsComponent } from '../components/settings/settings.component';\r\nimport { LogsComponent } from '../components/logs/logs.component';\r\nimport { SpaMatModule } from \"./spa-mat.module\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { UsersComponent } from \"../components/users/users.component\";\r\nimport { RolesComponent } from \"../components/roles/roles.component\";\r\nimport { addRoleDialog } from \"../components/roles/addRoleDialog.component\";\r\nimport { CreateAccountComponent } from \"../components/create-account/create-account.component\";\r\nimport { TinSpaModule } from '../tin-spa.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n UsersComponent,\r\n RolesComponent,\r\n addRoleDialog,\r\n CreateAccountComponent,\r\n LogsComponent,\r\n SettingsComponent\r\n ],\r\n\r\n entryComponents: [\r\n addRoleDialog,\r\n ],\r\n\r\n imports: [\r\n ReactiveFormsModule.withConfig({ warnOnNgModelWithFormControl: \"never\" }),\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SpaMatModule,\r\n TinSpaModule\r\n ],\r\n\r\n exports: [\r\n CommonModule,\r\n FormsModule,\r\n SpaMatModule,\r\n UsersComponent,\r\n RolesComponent,\r\n addRoleDialog,\r\n CreateAccountComponent,\r\n LogsComponent,\r\n SettingsComponent\r\n ],\r\n})\r\nexport class SpaAdminModule {}\r\n"]}