ngx-techlify-core 11.4.8 → 11.4.9

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 (341) hide show
  1. package/README.md +24 -24
  2. package/bundles/ngx-techlify-core.umd.js +8085 -8047
  3. package/bundles/ngx-techlify-core.umd.js.map +1 -1
  4. package/bundles/ngx-techlify-core.umd.min.js +1 -1
  5. package/bundles/ngx-techlify-core.umd.min.js.map +1 -1
  6. package/esm2015/lib/action-popup/action-popup.component.js +32 -32
  7. package/esm2015/lib/action-popup/action-popup.model.js +3 -3
  8. package/esm2015/lib/action-popup/action-popup.module.js +26 -26
  9. package/esm2015/lib/action-popup/index.js +3 -3
  10. package/esm2015/lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module.js +12 -12
  11. package/esm2015/lib/audit-log/audit-log-for-model/audit-log-for-model.component.js +49 -49
  12. package/esm2015/lib/audit-log/audit-log-for-model/audit-log-for-model.module.js +25 -25
  13. package/esm2015/lib/audit-log/audit-log-list/audit-log-list-routing.module.js +12 -12
  14. package/esm2015/lib/audit-log/audit-log-list/audit-log-list.component.js +132 -132
  15. package/esm2015/lib/audit-log/audit-log-list/audit-log-list.module.js +29 -29
  16. package/esm2015/lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module.js +12 -12
  17. package/esm2015/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.js +67 -67
  18. package/esm2015/lib/audit-log/audit-log-list-filter/audit-log-list-filter.module.js +25 -25
  19. package/esm2015/lib/audit-log/audit-log-routing.module.js +19 -19
  20. package/esm2015/lib/audit-log/audit-log-view/audit-log-view-routing.module.js +12 -12
  21. package/esm2015/lib/audit-log/audit-log-view/audit-log-view.component.js +60 -60
  22. package/esm2015/lib/audit-log/audit-log-view/audit-log-view.module.js +21 -21
  23. package/esm2015/lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module.js +12 -12
  24. package/esm2015/lib/audit-log/audit-log-view-model/audit-log-view-model.component.js +57 -57
  25. package/esm2015/lib/audit-log/audit-log-view-model/audit-log-view-model.module.js +21 -21
  26. package/esm2015/lib/audit-log/audit-log.module.js +20 -20
  27. package/esm2015/lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module.js +12 -12
  28. package/esm2015/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.js +35 -35
  29. package/esm2015/lib/audit-log/audit-logs-view-model/audit-logs-view-model.module.js +21 -21
  30. package/esm2015/lib/base-model/index.js +4 -4
  31. package/esm2015/lib/base-model/techlify-form-component.class.js +51 -51
  32. package/esm2015/lib/base-model/techlify-listing-component.class.js +41 -41
  33. package/esm2015/lib/base-model/techlify-service.class.js +64 -64
  34. package/esm2015/lib/core/alert.service.js +39 -39
  35. package/esm2015/lib/core/api-prefix.interceptor.js +28 -28
  36. package/esm2015/lib/core/authentication.guard.js +39 -39
  37. package/esm2015/lib/core/authentication.service.js +59 -59
  38. package/esm2015/lib/core/cache.interceptor.js +60 -60
  39. package/esm2015/lib/core/config.service.js +47 -47
  40. package/esm2015/lib/core/core.module.js +42 -42
  41. package/esm2015/lib/core/credentials.service.js +84 -84
  42. package/esm2015/lib/core/dataManager.service.js +120 -120
  43. package/esm2015/lib/core/error-handler.interceptor.js +53 -53
  44. package/esm2015/lib/core/error-handler.service.js +59 -59
  45. package/esm2015/lib/core/form-validator.service.js +23 -23
  46. package/esm2015/lib/core/header.interceptor.js +22 -22
  47. package/esm2015/lib/core/http-cache.service.js +110 -110
  48. package/esm2015/lib/core/http.service.js +82 -82
  49. package/esm2015/lib/core/index.js +21 -21
  50. package/esm2015/lib/core/logger.service.js +100 -100
  51. package/esm2015/lib/core/route-reusable-strategy.js +35 -35
  52. package/esm2015/lib/core/snack/snack.component.js +33 -33
  53. package/esm2015/lib/core/snack/snack.module.js +25 -25
  54. package/esm2015/lib/core/storage.service.js +36 -36
  55. package/esm2015/lib/core/techlify-config.model.js +28 -28
  56. package/esm2015/lib/core/token.interceptor.js +30 -30
  57. package/esm2015/lib/data-table/data-table.component.js +190 -190
  58. package/esm2015/lib/data-table/data-table.model.js +11 -11
  59. package/esm2015/lib/data-table/data-table.module.js +25 -25
  60. package/esm2015/lib/data-table/index.js +3 -3
  61. package/esm2015/lib/date-validator.js +10 -10
  62. package/esm2015/lib/document-viewer/document-viewer.component.js +58 -58
  63. package/esm2015/lib/document-viewer/document-viewer.module.js +25 -25
  64. package/esm2015/lib/document-viewer/index.js +3 -3
  65. package/esm2015/lib/document-viewer/viewer-config.model.js +3 -3
  66. package/esm2015/lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module.js +26 -26
  67. package/esm2015/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.js +72 -72
  68. package/esm2015/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module.js +23 -23
  69. package/esm2015/lib/email-subscription/email-subscription-for-user/index.js +2 -2
  70. package/esm2015/lib/email-subscription/email-subscription-routing.module.js +12 -12
  71. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module.js +12 -12
  72. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.js +102 -102
  73. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module.js +28 -28
  74. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-form/index.js +2 -2
  75. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module.js +28 -28
  76. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.js +153 -153
  77. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module.js +27 -27
  78. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/index.js +1 -1
  79. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-routing.module.js +12 -12
  80. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type.module.js +15 -15
  81. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module.js +12 -12
  82. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.js +99 -99
  83. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module.js +27 -27
  84. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-form/index.js +2 -2
  85. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module.js +28 -28
  86. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.js +155 -155
  87. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module.js +29 -29
  88. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list/index.js +2 -2
  89. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module.js +12 -12
  90. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.js +50 -50
  91. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module.js +25 -25
  92. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/index.js +2 -2
  93. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-routing.module.js +12 -12
  94. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user.module.js +15 -15
  95. package/esm2015/lib/email-subscription/email-subscription.module.js +15 -15
  96. package/esm2015/lib/entity-files/entity-file-form/entity-file-form.component.js +147 -138
  97. package/esm2015/lib/entity-files/entity-file.service.js +42 -42
  98. package/esm2015/lib/entity-files/entity-files-view-all.component.js +234 -208
  99. package/esm2015/lib/entity-files/entity-files-view-all.module.js +40 -34
  100. package/esm2015/lib/entity-files/index.js +3 -3
  101. package/esm2015/lib/export-excel/export-excel-button/export-excel-button.component.js +32 -32
  102. package/esm2015/lib/export-excel/export-excel.module.js +17 -17
  103. package/esm2015/lib/file-dropper/file-dropper.component.js +122 -122
  104. package/esm2015/lib/file-dropper/file-dropper.model.js +3 -3
  105. package/esm2015/lib/file-dropper/file-dropper.module.js +21 -21
  106. package/esm2015/lib/file-dropper/index.js +3 -3
  107. package/esm2015/lib/import-csv/data-import/data-import.component.js +18 -18
  108. package/esm2015/lib/import-csv/failed-items-list/failed-items-list.component.js +33 -33
  109. package/esm2015/lib/import-csv/field-mapping/field-mapping.component.js +148 -148
  110. package/esm2015/lib/import-csv/import-csv-config.js +2 -2
  111. package/esm2015/lib/import-csv/import-csv.component.js +196 -196
  112. package/esm2015/lib/import-csv/import-csv.module.js +46 -46
  113. package/esm2015/lib/import-csv/import-history-list/import-history-list.component.js +71 -71
  114. package/esm2015/lib/import-csv/import-success/import-success.component.js +19 -19
  115. package/esm2015/lib/loader/index.js +2 -2
  116. package/esm2015/lib/loader/loader.component.js +22 -22
  117. package/esm2015/lib/loader/loader.module.js +21 -21
  118. package/esm2015/lib/login-history-for-user/login-history-for-user-routing.module.js +20 -20
  119. package/esm2015/lib/login-history-for-user/login-history-for-user.component.js +88 -88
  120. package/esm2015/lib/login-history-for-user/login-history-for-user.module.js +27 -27
  121. package/esm2015/lib/material.module.js +60 -60
  122. package/esm2015/lib/note/comment-form/comment-form.component.js +73 -73
  123. package/esm2015/lib/note/index.js +4 -4
  124. package/esm2015/lib/note/note-form/note-form.component.js +81 -81
  125. package/esm2015/lib/note/note-list/note-list.component.js +151 -151
  126. package/esm2015/lib/note/note.module.js +36 -36
  127. package/esm2015/lib/note/note.service.js +31 -31
  128. package/esm2015/lib/read-more/read-more.component.js +43 -43
  129. package/esm2015/lib/read-more/read-more.module.js +21 -21
  130. package/esm2015/lib/searchable-selector/index.js +3 -3
  131. package/esm2015/lib/searchable-selector/mat-select-infinite-scroll.directive.js +81 -81
  132. package/esm2015/lib/searchable-selector/searchable-selector.component.js +307 -307
  133. package/esm2015/lib/searchable-selector/searchable-selector.module.js +28 -28
  134. package/esm2015/lib/techlify-feature/on-off-switch/on-off-switch.component.js +27 -27
  135. package/esm2015/lib/techlify-feature/techlify-feature-enabled.directive.js +78 -78
  136. package/esm2015/lib/techlify-feature/techlify-feature-listing.component.js +177 -177
  137. package/esm2015/lib/techlify-feature/techlify-feature.module.js +30 -30
  138. package/esm2015/lib/techlify-feature/techlify-feature.routing.js +12 -12
  139. package/esm2015/lib/techlify-feature/techlify-feature.service.js +28 -28
  140. package/esm2015/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-config.model.js +15 -15
  141. package/esm2015/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.js +269 -269
  142. package/esm2015/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.module.js +25 -25
  143. package/esm2015/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.js +168 -168
  144. package/esm2015/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.module.js +29 -29
  145. package/esm2015/lib/techlify-update/techlify-update-form/techlify-update-form.component.js +114 -114
  146. package/esm2015/lib/techlify-update/techlify-update-form/techlify-update-form.module.js +28 -28
  147. package/esm2015/lib/techlify-update/techlify-update-history/techlify-update-history-routing.module.js +22 -22
  148. package/esm2015/lib/techlify-update/techlify-update-history/techlify-update-history.component.js +143 -143
  149. package/esm2015/lib/techlify-update/techlify-update-history/techlify-update-history.module.js +28 -28
  150. package/esm2015/lib/techlify-update/techlify-update-routing.module.js +22 -22
  151. package/esm2015/lib/techlify-update/techlify-update.module.js +30 -30
  152. package/esm2015/lib/techlify-update/techlify-update.service.js +43 -43
  153. package/esm2015/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.js +161 -161
  154. package/esm2015/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.js +82 -82
  155. package/esm2015/lib/techlify-update/update-notifier/update-notifier.component.js +62 -62
  156. package/esm2015/lib/techlify-update/update-notifier/update-notifier.module.js +29 -29
  157. package/esm2015/lib/techlify-update/update-view/update-view.component.js +36 -36
  158. package/esm2015/lib/techlify-update/update-view/update-view.module.js +24 -24
  159. package/esm2015/lib/timeline-filter/calculate-timeline.js +102 -102
  160. package/esm2015/lib/timeline-filter/index.js +4 -4
  161. package/esm2015/lib/timeline-filter/timeline-filter-routing.module.js +12 -12
  162. package/esm2015/lib/timeline-filter/timeline-filter.component.js +213 -213
  163. package/esm2015/lib/timeline-filter/timeline-filter.module.js +23 -23
  164. package/esm2015/lib/timeline-filter/timeline.model.js +18 -18
  165. package/esm2015/lib/utility/date-utils.service.js +48 -48
  166. package/esm2015/lib/utility/index.js +4 -4
  167. package/esm2015/lib/utility/num-items-selector.component.js +29 -29
  168. package/esm2015/lib/utility/number-selector.component.js +38 -38
  169. package/esm2015/lib/utility/utility.module.js +20 -20
  170. package/esm2015/ngx-techlify-core.js +60 -60
  171. package/esm2015/public-api.js +96 -96
  172. package/fesm2015/ngx-techlify-core.js +6941 -6903
  173. package/fesm2015/ngx-techlify-core.js.map +1 -1
  174. package/lib/action-popup/action-popup.component.d.ts +14 -14
  175. package/lib/action-popup/action-popup.model.d.ts +5 -5
  176. package/lib/action-popup/action-popup.module.d.ts +2 -2
  177. package/lib/action-popup/index.d.ts +2 -2
  178. package/lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module.d.ts +2 -2
  179. package/lib/audit-log/audit-log-for-model/audit-log-for-model.component.d.ts +12 -12
  180. package/lib/audit-log/audit-log-for-model/audit-log-for-model.module.d.ts +2 -2
  181. package/lib/audit-log/audit-log-list/audit-log-list-routing.module.d.ts +2 -2
  182. package/lib/audit-log/audit-log-list/audit-log-list.component.d.ts +32 -32
  183. package/lib/audit-log/audit-log-list/audit-log-list.module.d.ts +2 -2
  184. package/lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module.d.ts +2 -2
  185. package/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.d.ts +19 -19
  186. package/lib/audit-log/audit-log-list-filter/audit-log-list-filter.module.d.ts +2 -2
  187. package/lib/audit-log/audit-log-routing.module.d.ts +2 -2
  188. package/lib/audit-log/audit-log-view/audit-log-view-routing.module.d.ts +2 -2
  189. package/lib/audit-log/audit-log-view/audit-log-view.component.d.ts +17 -17
  190. package/lib/audit-log/audit-log-view/audit-log-view.module.d.ts +2 -2
  191. package/lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module.d.ts +2 -2
  192. package/lib/audit-log/audit-log-view-model/audit-log-view-model.component.d.ts +15 -15
  193. package/lib/audit-log/audit-log-view-model/audit-log-view-model.module.d.ts +2 -2
  194. package/lib/audit-log/audit-log.module.d.ts +2 -2
  195. package/lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module.d.ts +2 -2
  196. package/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.d.ts +11 -11
  197. package/lib/audit-log/audit-logs-view-model/audit-logs-view-model.module.d.ts +2 -2
  198. package/lib/base-model/index.d.ts +3 -3
  199. package/lib/base-model/techlify-form-component.class.d.ts +43 -43
  200. package/lib/base-model/techlify-listing-component.class.d.ts +47 -47
  201. package/lib/base-model/techlify-service.class.d.ts +52 -52
  202. package/lib/core/alert.service.d.ts +12 -12
  203. package/lib/core/api-prefix.interceptor.d.ts +11 -11
  204. package/lib/core/authentication.guard.d.ts +10 -10
  205. package/lib/core/authentication.service.d.ts +23 -23
  206. package/lib/core/cache.interceptor.d.ts +21 -21
  207. package/lib/core/config.service.d.ts +19 -19
  208. package/lib/core/core.module.d.ts +3 -3
  209. package/lib/core/credentials.service.d.ts +36 -36
  210. package/lib/core/dataManager.service.d.ts +70 -70
  211. package/lib/core/error-handler.interceptor.d.ts +14 -14
  212. package/lib/core/error-handler.service.d.ts +14 -14
  213. package/lib/core/form-validator.service.d.ts +8 -8
  214. package/lib/core/header.interceptor.d.ts +8 -8
  215. package/lib/core/http-cache.service.d.ts +54 -54
  216. package/lib/core/http.service.d.ts +56 -56
  217. package/lib/core/index.d.ts +20 -20
  218. package/lib/core/logger.service.d.ts +85 -85
  219. package/lib/core/route-reusable-strategy.d.ts +13 -13
  220. package/lib/core/snack/snack.component.d.ts +8 -8
  221. package/lib/core/snack/snack.module.d.ts +2 -2
  222. package/lib/core/storage.service.d.ts +15 -15
  223. package/lib/core/techlify-config.model.d.ts +18 -18
  224. package/lib/core/token.interceptor.d.ts +11 -11
  225. package/lib/data-table/data-table.component.d.ts +60 -60
  226. package/lib/data-table/data-table.model.d.ts +46 -46
  227. package/lib/data-table/data-table.module.d.ts +2 -2
  228. package/lib/data-table/index.d.ts +2 -2
  229. package/lib/date-validator.d.ts +1 -1
  230. package/lib/document-viewer/document-viewer.component.d.ts +16 -16
  231. package/lib/document-viewer/document-viewer.module.d.ts +2 -2
  232. package/lib/document-viewer/index.d.ts +2 -2
  233. package/lib/document-viewer/viewer-config.model.d.ts +5 -5
  234. package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module.d.ts +7 -7
  235. package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.d.ts +17 -17
  236. package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module.d.ts +2 -2
  237. package/lib/email-subscription/email-subscription-for-user/index.d.ts +1 -1
  238. package/lib/email-subscription/email-subscription-routing.module.d.ts +2 -2
  239. package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module.d.ts +2 -2
  240. package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.d.ts +32 -32
  241. package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module.d.ts +2 -2
  242. package/lib/email-subscription/email-subscription-type/email-subscription-type-form/index.d.ts +1 -1
  243. package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module.d.ts +9 -9
  244. package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.d.ts +30 -30
  245. package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module.d.ts +2 -2
  246. package/lib/email-subscription/email-subscription-type/email-subscription-type-list/index.d.ts +1 -1
  247. package/lib/email-subscription/email-subscription-type/email-subscription-type-routing.module.d.ts +2 -2
  248. package/lib/email-subscription/email-subscription-type/email-subscription-type.module.d.ts +2 -2
  249. package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module.d.ts +2 -2
  250. package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.d.ts +32 -32
  251. package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module.d.ts +2 -2
  252. package/lib/email-subscription/email-subscription-user/email-subscription-user-form/index.d.ts +1 -1
  253. package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module.d.ts +9 -9
  254. package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.d.ts +32 -32
  255. package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module.d.ts +2 -2
  256. package/lib/email-subscription/email-subscription-user/email-subscription-user-list/index.d.ts +1 -1
  257. package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module.d.ts +2 -2
  258. package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.d.ts +13 -13
  259. package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module.d.ts +2 -2
  260. package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/index.d.ts +1 -1
  261. package/lib/email-subscription/email-subscription-user/email-subscription-user-routing.module.d.ts +2 -2
  262. package/lib/email-subscription/email-subscription-user/email-subscription-user.module.d.ts +2 -2
  263. package/lib/email-subscription/email-subscription.module.d.ts +2 -2
  264. package/lib/entity-files/entity-file-form/entity-file-form.component.d.ts +38 -34
  265. package/lib/entity-files/entity-file.service.d.ts +10 -10
  266. package/lib/entity-files/entity-files-view-all.component.d.ts +51 -45
  267. package/lib/entity-files/entity-files-view-all.module.d.ts +2 -2
  268. package/lib/entity-files/index.d.ts +2 -2
  269. package/lib/export-excel/export-excel-button/export-excel-button.component.d.ts +8 -8
  270. package/lib/export-excel/export-excel.module.d.ts +2 -2
  271. package/lib/file-dropper/file-dropper.component.d.ts +33 -33
  272. package/lib/file-dropper/file-dropper.model.d.ts +10 -10
  273. package/lib/file-dropper/file-dropper.module.d.ts +2 -2
  274. package/lib/file-dropper/index.d.ts +2 -2
  275. package/lib/import-csv/data-import/data-import.component.d.ts +6 -6
  276. package/lib/import-csv/failed-items-list/failed-items-list.component.d.ts +12 -12
  277. package/lib/import-csv/field-mapping/field-mapping.component.d.ts +34 -34
  278. package/lib/import-csv/import-csv-config.d.ts +17 -17
  279. package/lib/import-csv/import-csv.component.d.ts +33 -33
  280. package/lib/import-csv/import-csv.module.d.ts +2 -2
  281. package/lib/import-csv/import-history-list/import-history-list.component.d.ts +21 -21
  282. package/lib/import-csv/import-success/import-success.component.d.ts +8 -8
  283. package/lib/loader/index.d.ts +1 -1
  284. package/lib/loader/loader.component.d.ts +8 -8
  285. package/lib/loader/loader.module.d.ts +2 -2
  286. package/lib/login-history-for-user/login-history-for-user-routing.module.d.ts +2 -2
  287. package/lib/login-history-for-user/login-history-for-user.component.d.ts +23 -23
  288. package/lib/login-history-for-user/login-history-for-user.module.d.ts +2 -2
  289. package/lib/material.module.d.ts +2 -2
  290. package/lib/note/comment-form/comment-form.component.d.ts +22 -22
  291. package/lib/note/index.d.ts +3 -3
  292. package/lib/note/note-form/note-form.component.d.ts +27 -27
  293. package/lib/note/note-list/note-list.component.d.ts +28 -28
  294. package/lib/note/note.module.d.ts +2 -2
  295. package/lib/note/note.service.d.ts +9 -9
  296. package/lib/read-more/read-more.component.d.ts +12 -12
  297. package/lib/read-more/read-more.module.d.ts +2 -2
  298. package/lib/searchable-selector/index.d.ts +2 -2
  299. package/lib/searchable-selector/mat-select-infinite-scroll.directive.d.ts +23 -23
  300. package/lib/searchable-selector/searchable-selector.component.d.ts +81 -81
  301. package/lib/searchable-selector/searchable-selector.module.d.ts +2 -2
  302. package/lib/techlify-feature/on-off-switch/on-off-switch.component.d.ts +9 -9
  303. package/lib/techlify-feature/techlify-feature-enabled.directive.d.ts +17 -17
  304. package/lib/techlify-feature/techlify-feature-listing.component.d.ts +37 -37
  305. package/lib/techlify-feature/techlify-feature.module.d.ts +2 -2
  306. package/lib/techlify-feature/techlify-feature.routing.d.ts +2 -2
  307. package/lib/techlify-feature/techlify-feature.service.d.ts +8 -8
  308. package/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-config.model.d.ts +12 -12
  309. package/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.d.ts +76 -76
  310. package/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.module.d.ts +2 -2
  311. package/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.d.ts +58 -58
  312. package/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.module.d.ts +2 -2
  313. package/lib/techlify-update/techlify-update-form/techlify-update-form.component.d.ts +30 -30
  314. package/lib/techlify-update/techlify-update-form/techlify-update-form.module.d.ts +2 -2
  315. package/lib/techlify-update/techlify-update-history/techlify-update-history-routing.module.d.ts +2 -2
  316. package/lib/techlify-update/techlify-update-history/techlify-update-history.component.d.ts +31 -31
  317. package/lib/techlify-update/techlify-update-history/techlify-update-history.module.d.ts +2 -2
  318. package/lib/techlify-update/techlify-update-routing.module.d.ts +2 -2
  319. package/lib/techlify-update/techlify-update.module.d.ts +2 -2
  320. package/lib/techlify-update/techlify-update.service.d.ts +13 -13
  321. package/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.d.ts +31 -31
  322. package/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.d.ts +25 -25
  323. package/lib/techlify-update/update-notifier/update-notifier.component.d.ts +16 -16
  324. package/lib/techlify-update/update-notifier/update-notifier.module.d.ts +2 -2
  325. package/lib/techlify-update/update-view/update-view.component.d.ts +14 -14
  326. package/lib/techlify-update/update-view/update-view.module.d.ts +2 -2
  327. package/lib/timeline-filter/calculate-timeline.d.ts +6 -6
  328. package/lib/timeline-filter/index.d.ts +3 -3
  329. package/lib/timeline-filter/timeline-filter-routing.module.d.ts +2 -2
  330. package/lib/timeline-filter/timeline-filter.component.d.ts +61 -61
  331. package/lib/timeline-filter/timeline-filter.module.d.ts +2 -2
  332. package/lib/timeline-filter/timeline.model.d.ts +17 -17
  333. package/lib/utility/date-utils.service.d.ts +21 -21
  334. package/lib/utility/index.d.ts +3 -3
  335. package/lib/utility/num-items-selector.component.d.ts +16 -16
  336. package/lib/utility/number-selector.component.d.ts +20 -20
  337. package/lib/utility/utility.module.d.ts +2 -2
  338. package/ngx-techlify-core.d.ts +59 -59
  339. package/ngx-techlify-core.metadata.json +1 -1
  340. package/package.json +2 -2
  341. package/public-api.d.ts +92 -92
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-techlify-core.umd.js","sources":["../../../projects/ngx-techlify-core/src/lib/action-popup/action-popup.model.ts","../../../projects/ngx-techlify-core/src/lib/action-popup/action-popup.component.ts","../../../projects/ngx-techlify-core/src/lib/base-model/techlify-form-component.class.ts","../../../projects/ngx-techlify-core/src/lib/base-model/techlify-listing-component.class.ts","../../../projects/ngx-techlify-core/src/lib/base-model/techlify-service.class.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/ngx-techlify-core/src/lib/data-table/data-table.component.ts","../../../projects/ngx-techlify-core/src/lib/data-table/data-table.model.ts","../../../projects/ngx-techlify-core/src/lib/document-viewer/document-viewer.component.ts","../../../projects/ngx-techlify-core/src/lib/document-viewer/viewer-config.model.ts","../../../projects/ngx-techlify-core/src/lib/core/logger.service.ts","../../../projects/ngx-techlify-core/src/lib/core/techlify-config.model.ts","../../../projects/ngx-techlify-core/src/lib/core/config.service.ts","../../../projects/ngx-techlify-core/src/lib/core/snack/snack.component.ts","../../../projects/ngx-techlify-core/src/lib/core/alert.service.ts","../../../projects/ngx-techlify-core/src/lib/core/error-handler.service.ts","../../../projects/ngx-techlify-core/src/lib/core/error-handler.interceptor.ts","../../../projects/ngx-techlify-core/src/lib/core/http-cache.service.ts","../../../projects/ngx-techlify-core/src/lib/core/cache.interceptor.ts","../../../projects/ngx-techlify-core/src/lib/core/api-prefix.interceptor.ts","../../../projects/ngx-techlify-core/src/lib/core/credentials.service.ts","../../../projects/ngx-techlify-core/src/lib/core/token.interceptor.ts","../../../projects/ngx-techlify-core/src/lib/core/header.interceptor.ts","../../../projects/ngx-techlify-core/src/lib/core/http.service.ts","../../../projects/ngx-techlify-core/src/lib/entity-files/entity-file.service.ts","../../../projects/ngx-techlify-core/src/lib/core/form-validator.service.ts","../../../projects/ngx-techlify-core/src/lib/entity-files/entity-file-form/entity-file-form.component.ts","../../../projects/ngx-techlify-core/src/lib/entity-files/entity-files-view-all.component.ts","../../../projects/ngx-techlify-core/src/lib/file-dropper/file-dropper.component.ts","../../../projects/ngx-techlify-core/src/lib/file-dropper/file-dropper.model.ts","../../../projects/ngx-techlify-core/src/lib/note/note.service.ts","../../../projects/ngx-techlify-core/src/lib/note/note-form/note-form.component.ts","../../../projects/ngx-techlify-core/src/lib/note/note-list/note-list.component.ts","../../../projects/ngx-techlify-core/src/lib/note/comment-form/comment-form.component.ts","../../../projects/ngx-techlify-core/src/lib/searchable-selector/searchable-selector.component.ts","../../../projects/ngx-techlify-core/src/lib/searchable-selector/mat-select-infinite-scroll.directive.ts","../../../projects/ngx-techlify-core/src/lib/utility/num-items-selector.component.ts","../../../projects/ngx-techlify-core/src/lib/utility/date-utils.service.ts","../../../projects/ngx-techlify-core/src/lib/utility/number-selector.component.ts","../../../projects/ngx-techlify-core/src/lib/timeline-filter/timeline.model.ts","../../../projects/ngx-techlify-core/src/lib/timeline-filter/calculate-timeline.ts","../../../projects/ngx-techlify-core/src/lib/timeline-filter/timeline-filter.component.ts","../../../projects/ngx-techlify-core/src/lib/loader/loader.component.ts","../../../projects/ngx-techlify-core/src/lib/core/snack/snack.module.ts","../../../projects/ngx-techlify-core/src/lib/core/authentication.guard.ts","../../../projects/ngx-techlify-core/src/lib/core/authentication.service.ts","../../../projects/ngx-techlify-core/src/lib/core/route-reusable-strategy.ts","../../../projects/ngx-techlify-core/src/lib/core/storage.service.ts","../../../projects/ngx-techlify-core/src/lib/core/dataManager.service.ts","../../../projects/ngx-techlify-core/src/lib/material.module.ts","../../../projects/ngx-techlify-core/src/lib/core/core.module.ts","../../../projects/ngx-techlify-core/src/lib/action-popup/action-popup.module.ts","../../../projects/ngx-techlify-core/src/lib/data-table/data-table.module.ts","../../../projects/ngx-techlify-core/src/lib/document-viewer/document-viewer.module.ts","../../../projects/ngx-techlify-core/src/lib/file-dropper/file-dropper.module.ts","../../../projects/ngx-techlify-core/src/lib/entity-files/entity-files-view-all.module.ts","../../../projects/ngx-techlify-core/src/lib/read-more/read-more.component.ts","../../../projects/ngx-techlify-core/src/lib/read-more/read-more.module.ts","../../../projects/ngx-techlify-core/src/lib/note/note.module.ts","../../../projects/ngx-techlify-core/src/lib/searchable-selector/searchable-selector.module.ts","../../../projects/ngx-techlify-core/src/lib/utility/utility.module.ts","../../../projects/ngx-techlify-core/src/lib/timeline-filter/timeline-filter-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/timeline-filter/timeline-filter.module.ts","../../../projects/ngx-techlify-core/src/lib/loader/loader.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-type/email-subscription-type-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-type/email-subscription-type.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-update.service.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-update-form/techlify-update-form.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-update-form/techlify-update-form.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-update-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-update.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/update-view/update-view.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-update-history/techlify-update-history.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-update-history/techlify-update-history-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-update-history/techlify-update-history.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/update-view/update-view.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/update-notifier/update-notifier.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/update-notifier/update-notifier.module.ts","../../../projects/ngx-techlify-core/src/lib/export-excel/export-excel-button/export-excel-button.component.ts","../../../projects/ngx-techlify-core/src/lib/export-excel/export-excel.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-view-model/audit-log-view-model.component.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-for-model/audit-log-for-model.component.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-view-model/audit-log-view-model.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-list/audit-log-list-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-list/audit-log-list.component.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/date-validator.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-list-filter/audit-log-list-filter.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-list/audit-log-list.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-logs-view-model/audit-logs-view-model.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-for-model/audit-log-for-model.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-view/audit-log-view.component.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-view/audit-log-view-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-view/audit-log-view.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log.module.ts","../../../projects/ngx-techlify-core/src/lib/import-csv/import-success/import-success.component.ts","../../../projects/ngx-techlify-core/src/lib/import-csv/import-history-list/import-history-list.component.ts","../../../projects/ngx-techlify-core/src/lib/import-csv/field-mapping/field-mapping.component.ts","../../../projects/ngx-techlify-core/src/lib/import-csv/failed-items-list/failed-items-list.component.ts","../../../projects/ngx-techlify-core/src/lib/import-csv/import-csv.component.ts","../../../projects/ngx-techlify-core/src/lib/import-csv/data-import/data-import.component.ts","../../../projects/ngx-techlify-core/src/lib/import-csv/import-csv.module.ts","../../../projects/ngx-techlify-core/src/lib/login-history-for-user/login-history-for-user.component.ts","../../../projects/ngx-techlify-core/src/lib/login-history-for-user/login-history-for-user-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/login-history-for-user/login-history-for-user.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-config.model.ts","../../../projects/ngx-techlify-core/src/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-feature/techlify-feature.service.ts","../../../projects/ngx-techlify-core/src/lib/techlify-feature/techlify-feature-listing.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-feature/techlify-feature.routing.ts","../../../projects/ngx-techlify-core/src/lib/techlify-feature/on-off-switch/on-off-switch.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-feature/techlify-feature-enabled.directive.ts","../../../projects/ngx-techlify-core/src/lib/techlify-feature/techlify-feature.module.ts","../../../projects/ngx-techlify-core/src/public-api.ts","../../../projects/ngx-techlify-core/src/ngx-techlify-core.ts"],"sourcesContent":["export class ActionPopup {\r\n name: string;\r\n title: string;\r\n message: string;\r\n}","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { ActionPopup } from './action-popup.model';\r\n\r\n@Component({\r\n selector: 'app-action-popup',\r\n templateUrl: './action-popup.component.html',\r\n styleUrls: ['./action-popup.component.scss']\r\n})\r\nexport class ActionPopupComponent implements OnInit {\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<ActionPopupComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: ActionPopup,\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n /**Method to close dialog box */\r\n closeDialog() {\r\n this.dialogRef.close();\r\n }\r\n\r\n /**Method to close dialog box with the data given from parent component\r\n */\r\n confirm() {\r\n this.dialogRef.close(this.data);\r\n }\r\n\r\n}\r\n","import { FormGroup } from '@angular/forms';\r\nimport { FormValidatorService } from '../core/form-validator.service';\r\n\r\n/**\r\n * Interface used to ensure we have a consistent structure across our form components\r\n *\r\n * It also provides some abstraction of repeated code to reduce our codebase size\r\n *\r\n * @todo This should be moved to ngx-techlify-core\r\n *\r\n * Advantages of this abstract class\r\n * - Less code, less maintenance, less bugs\r\n * - more consistent code\r\n * - comments on more code\r\n * - save time, save energy\r\n */\r\nexport abstract class TechlifyFormComponentInterface {\r\n\r\n form: FormGroup;\r\n errorMessages: any;\r\n\r\n constructor(protected formValidatorService: FormValidatorService) {\r\n\r\n }\r\n\r\n /**\r\n * Resets the value of a field in the HTML form\r\n *\r\n * @param event\r\n * @param field\r\n */\r\n resetFieldValue(event: any, field: string) {\r\n this.form?.get(field)?.setValue('');\r\n }\r\n\r\n /**\r\n * Retrieves the value of a field from the HTML form\r\n *\r\n * @param field\r\n * @returns\r\n */\r\n getFieldValue(field: string) {\r\n return this.form?.get(field)?.value;\r\n }\r\n\r\n /**\r\n * Method to evaluate form fields\r\n * */\r\n isFieldValid(field: string) {\r\n return this.formValidatorService.isFieldValid(field, this.form, true);\r\n }\r\n\r\n /**\r\n * Method to find error in form fields\r\n * */\r\n getErrorMessage(field: string) {\r\n return this.formValidatorService.getErrorMessage(field, this.form, this.errorMessages);\r\n }\r\n\r\n}\r\n","/**\r\n * Interface used to ensure we have a consistent structure across our listing pages\r\n *\r\n * @todo This should be moved to ngx-techlify-core\r\n *\r\n * Advantages of this abstract class\r\n * - Less code, less maintenance, less bugs\r\n * - more consistent code\r\n * - comments on more code\r\n * - save time, save energy\r\n */\r\nexport abstract class TechlifyListingControllerInterface {\r\n\r\n models: any[] = [];\r\n page: number = 1;\r\n perPage: number = 25;\r\n lastPage: number = 500;\r\n isWorking: boolean = false;\r\n\r\n /**\r\n * Function that listens for any changes in the form group to apply the filters\r\n */\r\n abstract listenForChanges(): void;\r\n\r\n /**\r\n * Function that loads the main models of the application\r\n */\r\n abstract loadData(): void;\r\n\r\n /**\r\n * Reload all data from page 1\r\n */\r\n reload() {\r\n this.models = [];\r\n this.page = 1;\r\n if (!this.isWorking) {\r\n this.loadData();\r\n }\r\n }\r\n\r\n /**\r\n * Can be called when the user is scrolling,\r\n * to trigger loading a new page of data\r\n */\r\n onScroll() {\r\n if (!this.isWorking && this.page < this.lastPage) {\r\n this.page += 1;\r\n this.loadData();\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Function used to pop up the edit form for the model\r\n *\r\n * @param model\r\n */\r\n abstract editForm(model: any): void;\r\n\r\n /**\r\n * Function used to pop up the delete form for the model\r\n *\r\n * @param model\r\n */\r\n abstract deleteForm(model: any): void;\r\n\r\n}\r\n","import { HttpService } from '../core/http.service';\r\n\r\n/**\r\n * Interface used to ensure we have a consistent structure across our listing pages\r\n *\r\n * @todo This should be moved to ngx-techlify-core\r\n *\r\n * Advantages of this abstract class\r\n * - Less code, less maintenance, less bugs\r\n * - more consistent code\r\n * - comments on more code\r\n * - save time, save energy\r\n */\r\nexport class TechlifyServiceBaseClass {\r\n\r\n protected baseUrl = \"you-forgot-to-set-a-base-url\";\r\n\r\n constructor(protected http: HttpService, baseUrl: string) {\r\n this.baseUrl = baseUrl;\r\n }\r\n\r\n /**\r\n * Loads a set of the model this service is for\r\n *\r\n * @param filters Restrictors to filter the set of models\r\n * @returns\r\n */\r\n index(filters: any) {\r\n return this.http.get(`api/${this.baseUrl}`, { params: { ...filters } }).toPromise();\r\n }\r\n\r\n /**\r\n * Add a new record to the database\r\n *\r\n * @param model The data of the model to add\r\n * @returns\r\n */\r\n store(model: any) {\r\n return this.http.post(`api/${this.baseUrl}`, model).toPromise();\r\n }\r\n\r\n /**\r\n * Load a single model record, often with all relations and related data\r\n *\r\n * @param modelId ID of the model to load\r\n * @returns\r\n */\r\n show(modelId: any) {\r\n return this.http.get(`api/${this.baseUrl}/${modelId}`).toPromise();\r\n }\r\n\r\n /**\r\n * Update fields of a single existing model\r\n *\r\n * @param model Model to update\r\n * @returns\r\n */\r\n update(model: any) {\r\n return this.http.put(`api/${this.baseUrl}/${model.id}`, model).toPromise();\r\n }\r\n\r\n /**\r\n * Delete a single model\r\n *\r\n * @param model Model to delete\r\n * @returns\r\n */\r\n delete(model: any) {\r\n return this.http.delete(`api/${this.baseUrl}/${model.id}`).toPromise();\r\n }\r\n\r\n\r\n}\r\n","/*! *****************************************************************************\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(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, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, 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\n/** @deprecated */\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\n/** @deprecated */\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 __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\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\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\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 (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, 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 {\r\n Component,\r\n OnInit,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n OnChanges,\r\n SimpleChanges,\r\n AfterViewInit,\r\n ViewChild\r\n} from \"@angular/core\";\r\n\r\nimport { SelectionModel } from \"@angular/cdk/collections\";\r\nimport { MatMenuTrigger } from '@angular/material/menu';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { DataTable } from './data-table.model';\r\nimport { UntilDestroy, untilDestroyed } from \"@ngneat/until-destroy\";\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: \"app-data-table\",\r\n templateUrl: \"./data-table.component.html\",\r\n styleUrls: [\"./data-table.component.scss\"]\r\n})\r\nexport class DataTableComponent implements OnInit, OnChanges, AfterViewInit {\r\n\r\n trigger: MatMenuTrigger;\r\n\r\n @Input() data: any;\r\n\r\n @Input() config: DataTable;\r\n\r\n dataSource: MatTableDataSource<any> = new MatTableDataSource([]);\r\n\r\n @Input() selection: SelectionModel<any>;\r\n\r\n @Output() action = new EventEmitter();\r\n @Output() selctionChange = new EventEmitter();\r\n @Output() rowClick = new EventEmitter();\r\n @Output() tableScroll = new EventEmitter();\r\n @Output() sortChanged = new EventEmitter();\r\n\r\n page: number;\r\n lastPage: number;\r\n perPage: number;\r\n\r\n\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n\r\n static nextId = 0;\r\n @Input() elementId: string = `data-table-${DataTableComponent.nextId++}`;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() { }\r\n\r\n /**Life cycle hook method */\r\n ngAfterViewInit() {\r\n // Assign the data to the data source for the table to render\r\n this.dataSource = new MatTableDataSource(this.data);\r\n\r\n // Emit change in selection\r\n if (this.selection) {\r\n this.selection.changed.pipe().subscribe((change: any) => {\r\n if (this.selection.selected) {\r\n this.selctionChange.emit(this.selection.selected);\r\n }\r\n });\r\n }\r\n\r\n if (this.sort) {\r\n this.sort.sortChange.pipe(untilDestroyed(this))\r\n .subscribe((value: any) => {\r\n this.sortChanged.emit(value);\r\n })\r\n }\r\n }\r\n\r\n /** Whether the number of selected elements matches the total number of rows. */\r\n isAllSelected() {\r\n const numSelected = this.selection.selected.length;\r\n const numRows = this.dataSource.data.length;\r\n return numSelected === numRows;\r\n }\r\n\r\n /** Selects all rows if they are not all selected; otherwise clear selection. */\r\n masterToggle() {\r\n this.isAllSelected()\r\n ? this.clearSelection()\r\n : this.dataSource.data.forEach(row => this.selection.select(row));\r\n }\r\n\r\n /**clear selection*/\r\n clearSelection() {\r\n this.selection.clear();\r\n this.selctionChange.emit(this.selection.selected);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n this.initializeConfig(changes);\r\n if (changes.data && !changes.data.isFirstChange() && this.dataSource) {\r\n // If not first change\r\n this.dataSource.data = changes.data.currentValue;\r\n }\r\n }\r\n\r\n initializeConfig(changes: SimpleChanges) {\r\n if (changes.config && !changes.config.isFirstChange()) {\r\n this.config = changes.config.currentValue;\r\n }\r\n this.page = this.config.page || 1;\r\n this.lastPage = this.config.lastPage || this.page;\r\n this.perPage = this.config.perPage || 20;\r\n }\r\n\r\n onScroll() {\r\n if (this.page < this.lastPage) {\r\n this.page += 1;\r\n this.tableScroll.emit({ page: this.page, lastPage: this.lastPage, perPage: this.perPage });\r\n }\r\n }\r\n\r\n /**Method invokes when edit action icon is clickes */\r\n editClicked(event: any, element: any) {\r\n this.action.emit({ action: \"edit\", value: element });\r\n event.stopPropagation();\r\n }\r\n\r\n /**Method invokes when view action icon is clickes */\r\n viewClicked(event: any, element: any) {\r\n this.action.emit({ action: \"view\", value: element });\r\n event.stopPropagation();\r\n }\r\n\r\n /**Method invokes when edit action icon is clickes */\r\n deactivateClicked(event: any, element: any) {\r\n this.action.emit({ action: \"deactivate\", value: element });\r\n event.stopPropagation();\r\n }\r\n\r\n /**Method invokes when download action icon is clickes */\r\n downloadClicked(event: any, element: any) {\r\n this.action.emit({ action: \"download\", value: element });\r\n event.stopPropagation();\r\n }\r\n\r\n /**Method invokes when print action icon is clickes */\r\n printClicked(event: any, element: any) {\r\n\r\n this.action.emit({ action: 'print', value: element });\r\n event.stopPropagation();\r\n\r\n }\r\n\r\n /**Method invokes when a row is clicked */\r\n rowClicked(event: any, element: any) {\r\n this.rowClick.emit(element);\r\n event.stopPropagation();\r\n }\r\n\r\n /**Method invokes when menu action icon is hovered */\r\n actionMenuClick(event: any, element: any, menuValue: string) {\r\n this.action.emit({ action: menuValue, value: element });\r\n this.trigger.closeMenu();\r\n event.stopPropagation();\r\n }\r\n\r\n /**Method invokes when menu action icon is hovered and selects for particular action*/\r\n actionMenuTriggerClick(event: any, trigger: MatMenuTrigger) {\r\n this.trigger = trigger;\r\n event.stopPropagation();\r\n }\r\n\r\n checkEdit(ele: any) {\r\n if (this.config.editDisableFunction) {\r\n return this.config.editDisableFunction(ele);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n checkView(ele: any) {\r\n if (this.config.viewDisableFunction) {\r\n return this.config.viewDisableFunction(ele);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n checkPrint(ele: any) {\r\n if (this.config.printDisableFunction) {\r\n return this.config.printDisableFunction(ele);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n checkActions(ele: any) {\r\n if (this.config.actionsMenuFunction) {\r\n return this.config.actionsMenuFunction(ele);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n checkActionButton(ele: any, value: any) {\r\n if (this.config.actionsMenuButtonFunction) {\r\n return this.config.actionsMenuButtonFunction(ele, value);\r\n }\r\n return true;\r\n }\r\n\r\n getValue(ele: any, keyString: string) {\r\n keyString = keyString.replace(/\\[(\\w+)\\]/g, \".$1\"); // convert indexes to properties\r\n keyString = keyString.replace(/^\\./, \"\"); // strip a leading dot\r\n const keyList = keyString.split(\".\");\r\n for (let i = 0, n = keyList.length; i < n; ++i) {\r\n const key = keyList[i];\r\n if (ele && key in ele) {\r\n ele = ele[key];\r\n } else {\r\n return;\r\n }\r\n }\r\n return ele;\r\n }\r\n\r\n ngOnDestroy() {\r\n //Until Destroy uses it.\r\n }\r\n}\r\n","export class DataTable {\r\n displayedColumns: string[];\r\n columnsConfig: ColumnConfig[];\r\n actionsConfig?: ActionConfig;\r\n enableRowClick?: boolean;\r\n disableElevation?: boolean;\r\n downloadLink?: string;\r\n actionsMenuFunction?: any;\r\n actionsMenuButtonFunction?: any;\r\n editDisableFunction?: any;\r\n viewDisableFunction?: any;\r\n printDisableFunction?: any;\r\n customActionLabel?: string;\r\n stickyHeader?: boolean;\r\n page?: number;\r\n lastPage?: number;\r\n perPage?: number;\r\n pageSizeOptions?: number[];\r\n style?: any;\r\n}\r\n\r\nclass ColumnConfig {\r\n title: string;\r\n value: string;\r\n sort?: boolean;\r\n dateField?: boolean;\r\n currencyField?: boolean;\r\n format?: string;\r\n}\r\n\r\nclass ActionConfig {\r\n edit?: boolean;\r\n view?: boolean;\r\n download?: boolean;\r\n print?: boolean;\r\n deactivate?: boolean;\r\n actionsMenu?: ActionsMenu[];\r\n}\r\n\r\nclass ActionsMenu {\r\n name: string;\r\n value: string;\r\n}\r\n\r\nexport class PageEvent {\r\n page: number;\r\n lastPage?: number;\r\n perPage: number;\r\n}\r\n","import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';\r\nimport { ViewerConfig } from './viewer-config.model';\r\n\r\n@Component({\r\n selector: 'app-document-viewer',\r\n templateUrl: './document-viewer.component.html',\r\n styleUrls: ['./document-viewer.component.css']\r\n})\r\nexport class DocumentViewerComponent implements OnInit {\r\n\r\n\r\n @Input() config!: ViewerConfig;\r\n\r\n @Input() file!: any;\r\n\r\n @Input() fileUrl!: any;\r\n\r\n @Input() disableEdit: boolean;\r\n\r\n @Output() remove = new EventEmitter();\r\n viewerType: any;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.initData();\r\n }\r\n\r\n removeFile() {\r\n this.remove.emit();\r\n }\r\n\r\n initData() {\r\n if (this.file) {\r\n var ext = this.getFileExtension(this.file);\r\n if (ext === 'ppt' || ext === 'pptx' || ext === 'doc' || ext === 'docx' || ext === 'xls' || ext === 'xlsx') {\r\n this.viewerType = \"office\";\r\n }\r\n else if (ext === 'jpg' || ext === 'jpeg' || ext === 'png' || ext === 'gif') {\r\n this.viewerType = \"image\";\r\n }\r\n else if (ext === 'pdf') {\r\n this.viewerType = \"pdf\";\r\n }\r\n else {\r\n this.viewerType = null;\r\n }\r\n }\r\n }\r\n\r\n get fileName() {\r\n if (this.file) {\r\n let nameArray = this.file.split('/');\r\n if (nameArray.length === 2) {\r\n return nameArray[1];\r\n }\r\n return nameArray[0];\r\n }\r\n return '';\r\n }\r\n\r\n getFileExtension(file: any) {\r\n return file.split('.').pop();\r\n }\r\n\r\n}\r\n","export class ViewerConfig {\r\n imageStyle?: any;\r\n viewerStyle?: any;\r\n hideRemove?: boolean;\r\n}\r\n","/**\r\n * Simple logger system with the possibility of registering custom outputs.\r\n *\r\n * 4 different log levels are provided, with corresponding methods:\r\n * - debug : for debug information\r\n * - info : for informative status of the application (success, ...)\r\n * - warning : for non-critical errors that do not prevent normal application behavior\r\n * - error : for critical errors that prevent normal application behavior\r\n *\r\n * Example usage:\r\n * ```\r\n * import { Logger } from 'app/core/logger.service';\r\n *\r\n * const log = new Logger('myFile');\r\n * ...\r\n * log.debug('something happened');\r\n * ```\r\n *\r\n * To disable debug and info logs in production, add this snippet to your root component:\r\n * ```\r\n * export class AppComponent implements OnInit {\r\n * ngOnInit() {\r\n * if (environment.production) {\r\n * Logger.enableProductionMode();\r\n * }\r\n * ...\r\n * }\r\n * }\r\n *\r\n * If you want to process logs through other outputs than console, you can add LogOutput functions to Logger.outputs.\r\n */\r\n\r\n/**\r\n * The possible log levels.\r\n * LogLevel.Off is never emitted and only used with Logger.level property to disable logs.\r\n */\r\nexport enum LogLevel {\r\n Off = 0,\r\n Error,\r\n Warning,\r\n Info,\r\n Debug\r\n}\r\n\r\n/**\r\n * Log output handler function.\r\n */\r\nexport type LogOutput = (source: string | undefined, level: LogLevel, ...objects: any[]) => void;\r\n\r\nexport class Logger {\r\n\r\n /**\r\n * Current logging level.\r\n * Set it to LogLevel.Off to disable logs completely.\r\n */\r\n static level = LogLevel.Debug;\r\n\r\n /**\r\n * Additional log outputs.\r\n */\r\n static outputs: LogOutput[] = [];\r\n\r\n /**\r\n * Enables production mode.\r\n * Sets logging level to LogLevel.Warning.\r\n */\r\n static enableProductionMode() {\r\n Logger.level = LogLevel.Warning;\r\n }\r\n\r\n constructor(private source?: string) { }\r\n\r\n /**\r\n * Logs messages or objects with the debug level.\r\n * Works the same as console.log().\r\n */\r\n debug(...objects: any[]) {\r\n this.log(console.log, LogLevel.Debug, objects);\r\n }\r\n\r\n /**\r\n * Logs messages or objects with the info level.\r\n * Works the same as console.log().\r\n */\r\n info(...objects: any[]) {\r\n this.log(console.info, LogLevel.Info, objects);\r\n }\r\n\r\n /**\r\n * Logs messages or objects with the warning level.\r\n * Works the same as console.log().\r\n */\r\n warn(...objects: any[]) {\r\n this.log(console.warn, LogLevel.Warning, objects);\r\n }\r\n\r\n /**\r\n * Logs messages or objects with the error level.\r\n * Works the same as console.log().\r\n */\r\n error(...objects: any[]) {\r\n this.log(console.error, LogLevel.Error, objects);\r\n }\r\n\r\n private log(func: (...args: any[]) => void, level: LogLevel, objects: any[]) {\r\n if (level <= Logger.level) {\r\n const log = this.source ? ['[' + this.source + ']'].concat(objects) : objects;\r\n func.apply(console, log);\r\n Logger.outputs.forEach(output => output.apply(output, [this.source, level, ...objects]));\r\n }\r\n }\r\n\r\n}\r\n","/**\r\n * Class that stores the configuration data\r\n *\r\n * @author Joshua Kissoon\r\n * @since 20180724\r\n */\r\nexport class TechlifyConfig {\r\n projectKey: string = '';\r\n environment: string = '';\r\n authClientSecret: string = '';\r\n authGrantType: string = '';\r\n apiUrl: string = '';\r\n rawConfigs: any;\r\n storage: Storage;\r\n isLogoutWhileApiGetsFailed: boolean = false;\r\n\r\n constructor(data: any) {\r\n this.loadFromMap(data);\r\n }\r\n\r\n loadFromMap(data: any) {\r\n this.projectKey = data.projectKey;\r\n this.environment = data.environment;\r\n this.authClientSecret = data.authClientSecret;\r\n this.authGrantType = data.authGrantType;\r\n this.apiUrl = data.apiUrl;\r\n this.storage = data?.storage;\r\n this.rawConfigs = data;\r\n this.isLogoutWhileApiGetsFailed = data?.isLogoutWhileApiGetsFailed;\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { TechlifyConfig } from \"./techlify-config.model\";\r\n\r\n/**\r\n * Service that provides settings for all other services\r\n *\r\n * @author Joshua Kissoon\r\n * @since 20170709\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConfigService {\r\n\r\n public static BASE_CREDENTIALS = \"credentials\";\r\n\r\n private config: TechlifyConfig;\r\n\r\n constructor(config: TechlifyConfig) {\r\n this.config = config;\r\n }\r\n\r\n getConfigsRaw() {\r\n return this.config.rawConfigs;\r\n }\r\n\r\n getProjectKey() {\r\n return this.config.projectKey;\r\n }\r\n\r\n getApiUrl() {\r\n return this.config.apiUrl;\r\n }\r\n\r\n getAuthClientSecret() {\r\n return this.config.authClientSecret;\r\n }\r\n\r\n getStorage() {\r\n return this.config.storage ? this.config.storage : localStorage;\r\n }\r\n\r\n getAuthGrantType() {\r\n return this.config.authGrantType;\r\n }\r\n\r\n getCredentialsKey() {\r\n return this.config.projectKey + \"_\" + ConfigService.BASE_CREDENTIALS;\r\n }\r\n\r\n}\r\n","import { Component, Inject } from '@angular/core';\r\nimport { MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\r\n\r\n@Component({\r\n selector: 'snack-bar-component-example-snack',\r\n templateUrl: 'success-snack.html',\r\n styleUrls: ['./snack.scss'],\r\n})\r\nexport class SuccessSnackComponent {\r\n constructor(@Inject(MAT_SNACK_BAR_DATA) public data: any) { }\r\n}\r\n@Component({\r\n selector: 'snack-bar-component-example-snack',\r\n templateUrl: 'error-snack.html',\r\n styleUrls: ['./snack.scss'],\r\n})\r\nexport class ErrorSnackComponent {\r\n constructor(@Inject(MAT_SNACK_BAR_DATA) public data: any) { }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { ErrorSnackComponent, SuccessSnackComponent } from './snack/snack.component';\r\n\r\n/**\r\n * Service used to manage alerts in the entire system frontend\r\n * \r\n * @author Gokula Prasanna\r\n * @since 20210131\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AlertService {\r\n\r\n constructor(public snackBar: MatSnackBar) { }\r\n\r\n addAlert(message: string, alertType: string, duration = 3) {\r\n if (alertType == \"success\") {\r\n this.snackBar.openFromComponent(SuccessSnackComponent, {\r\n duration: 1000 * duration,\r\n data: message\r\n });\r\n }\r\n else {\r\n this.snackBar.openFromComponent(ErrorSnackComponent, {\r\n duration: 1000 * duration,\r\n data: message\r\n });\r\n }\r\n }\r\n}\r\n","import { TechlifyConfig } from './techlify-config.model';\r\nimport { Injectable } from \"@angular/core\";\r\nimport { AlertService } from \"./alert.service\";\r\n\r\n\r\n/**\r\n * Service used to handle errors from the request\r\n *\r\n * @author Joshua Kissoon\r\n * @since 20171202\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ErrorHandlerService {\r\n\r\n constructor(private alerter: AlertService,\r\n private config: TechlifyConfig,\r\n ) {\r\n }\r\n\r\n handleError(errorResponse: any, msg: string = '') {\r\n // 1 - Create empty array to store errors\r\n const errors = [];\r\n\r\n // 2 - check if the error object is present in the response\r\n if (errorResponse?.error) {\r\n\r\n // 3 - Check for Laravel form validation error messages object\r\n if (errorResponse?.error?.errors) {\r\n\r\n // 4 - For each error property (which is a form field)\r\n for (const property in errorResponse.error.errors) {\r\n\r\n if (errorResponse.error.errors?.hasOwnProperty(property)) {\r\n\r\n // 5 - Extract it's array of errors\r\n const propertyErrors: Array<string> = errorResponse?.error?.errors[property];\r\n\r\n // 6 - Push all errors in the array to the errors array\r\n propertyErrors.forEach(error => errors.push(error));\r\n }\r\n\r\n }\r\n }\r\n\r\n if (errors.length === 0) {\r\n // 7 - Push the main error message to the array of errors if there is no validation error\r\n errors.push(errorResponse.error.message ? errorResponse.error.message : errorResponse.error?.error);\r\n }\r\n }\r\n var errMessage = errors.length ? errors[0] : msg;\r\n this.alerter.addAlert(\"Error: \" + errMessage, \"warning\");\r\n\r\n if (errorResponse.status == 403 && this.config.isLogoutWhileApiGetsFailed) {\r\n sessionStorage.clear();\r\n localStorage.clear();\r\n location.reload();\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { Logger } from './logger.service';\r\nimport { ConfigService } from './config.service';\r\nimport { ErrorHandlerService } from './error-handler.service';\r\n\r\nconst log = new Logger('ErrorHandlerInterceptor');\r\n\r\n/**\r\n * Adds a default error handler to all requests.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ErrorHandlerInterceptor implements HttpInterceptor {\r\n\r\n constructor(private configService: ConfigService, private errorHandler: ErrorHandlerService) { }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n return next.handle(request).pipe(catchError(error => this.handleError(error)));\r\n }\r\n\r\n // Customize the default error handler here if needed\r\n private handleError(error: HttpErrorResponse): Observable<HttpEvent<any>> {\r\n let errorMessage = '';\r\n if (error.error instanceof ErrorEvent) {\r\n // client-side error\r\n errorMessage = `Client Error: ${this.configService?.getProjectKey()}: ${error.error.message}`;\r\n } else {\r\n // server-side error\r\n errorMessage = `Server Error: ${this.configService?.getProjectKey()}`;\r\n try {\r\n this.errorHandler.handleError(error, 'Unexpected Server Error, try later or contact service team');\r\n } catch (e) {\r\n console.log(\"Unable to handle server error\", e);\r\n }\r\n }\r\n return throwError(error);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpResponse } from '@angular/common/http';\r\nimport { ConfigService } from './config.service';\r\nimport { Logger } from './logger.service';\r\n\r\nconst log = new Logger('HttpCacheService');\r\n\r\n\r\nexport interface HttpCacheEntry {\r\n lastUpdated: Date;\r\n data: HttpResponse<any>;\r\n}\r\n\r\n/**\r\n * Provides a cache facility for HTTP requests with configurable persistence policy.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HttpCacheService {\r\n\r\n private cachedData: { [key: string]: HttpCacheEntry; } = {};\r\n private storage: Storage | any | null;\r\n private cachePersistenceKey: String | any;\r\n\r\n constructor(private configService: ConfigService) {\r\n this.storage = this.configService.getStorage();\r\n this.cachePersistenceKey = this.configService.getProjectKey() + '_HTTP_CACHE';\r\n this.loadCacheData();\r\n }\r\n\r\n /**\r\n * Sets the cache data for the specified request.\r\n * @param {!string} url The request URL.\r\n * @param {ResponseOptions} data The received data.\r\n * @param {Date=} lastUpdated The cache last update, current date is used if not specified.\r\n */\r\n setCacheData(url: string, data: HttpResponse<any>, lastUpdated?: Date) {\r\n this.cachedData[url] = {\r\n lastUpdated: lastUpdated || new Date(),\r\n data: data\r\n };\r\n log.debug(`Cache set for key: \"${url}\"`);\r\n this.saveCacheData();\r\n }\r\n\r\n /**\r\n * Gets the cached data for the specified request.\r\n * @param {!string} url The request URL.\r\n * @return {?ResponseOptions} The cached data or null if no cached data exists for this request.\r\n */\r\n getCacheData(url: string): HttpResponse<any> | null {\r\n const cacheEntry = this.cachedData[url];\r\n\r\n if (cacheEntry) {\r\n log.debug(`Cache hit for key: \"${url}\"`);\r\n return cacheEntry.data;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets the cached entry for the specified request.\r\n * @param {!string} url The request URL.\r\n * @return {?HttpCacheEntry} The cache entry or null if no cache entry exists for this request.\r\n */\r\n getHttpCacheEntry(url: string): HttpCacheEntry | null {\r\n return this.cachedData[url] || null;\r\n }\r\n\r\n /**\r\n * Clears the cached entry (if exists) for the specified request.\r\n * @param {!string} url The request URL.\r\n */\r\n clearCache(url: string): void {\r\n delete this.cachedData[url];\r\n log.debug(`Cache cleared for key: \"${url}\"`);\r\n this.saveCacheData();\r\n }\r\n\r\n /**\r\n * Cleans cache entries older than the specified date.\r\n * @param {date=} expirationDate The cache expiration date. If no date is specified, all cache is cleared.\r\n */\r\n cleanCache(expirationDate?: Date) {\r\n if (expirationDate) {\r\n Object(this.cachedData).keys.forEach((key: string) => {\r\n if (expirationDate >= this.cachedData[key]?.lastUpdated) {\r\n delete this.cachedData[key];\r\n }\r\n });\r\n } else {\r\n this.cachedData = {};\r\n }\r\n this.saveCacheData();\r\n }\r\n\r\n /**\r\n * Sets the cache persistence policy.\r\n * Note that changing the cache persistence will also clear the cache from its previous storage.\r\n * @param {'local'|'session'=} persistence How the cache should be persisted, it can be either local or session\r\n * storage, or if no value is provided it will be only in-memory (default).\r\n */\r\n setPersistence(persistence?: 'local' | 'session') {\r\n this.cleanCache();\r\n this.storage = persistence === 'local' ? localStorage : persistence === 'session' ? sessionStorage : null;\r\n this.loadCacheData();\r\n }\r\n\r\n private saveCacheData() {\r\n if (this.storage) {\r\n this.storage[this.cachePersistenceKey] = JSON.stringify(this.cachedData);\r\n }\r\n }\r\n\r\n private loadCacheData() {\r\n const data = this.storage ? this.storage[this.cachePersistenceKey] : null;\r\n this.cachedData = data ? JSON.parse(data) : {};\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport { HttpCacheService } from './http-cache.service';\r\nimport { Observable, Subscriber } from 'rxjs';\r\n\r\n/**\r\n * Caches HTTP requests.\r\n * Use ExtendedHttpClient fluent API to configure caching for each request.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CacheInterceptor implements HttpInterceptor {\r\n\r\n private forceUpdate = false;\r\n\r\n constructor(private httpCacheService: HttpCacheService) { }\r\n\r\n /**\r\n * Configures interceptor options\r\n * @param {{update: boolean}} options If update option is enabled, forces request to be made and updates cache entry.\r\n * @return {CacheInterceptor} The configured instance.\r\n */\r\n configure(options?: { update?: boolean } | null): CacheInterceptor {\r\n const instance = new CacheInterceptor(this.httpCacheService);\r\n if (options && options.update) {\r\n instance.forceUpdate = true;\r\n }\r\n return instance;\r\n }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n if (request.method !== 'GET') {\r\n return next.handle(request);\r\n }\r\n\r\n return new Observable((subscriber: Subscriber<HttpEvent<any>>) => {\r\n const cachedData = this.forceUpdate ? null : this.httpCacheService.getCacheData(request.urlWithParams);\r\n if (cachedData !== null) {\r\n // Create new response to avoid side-effects\r\n subscriber.next(new HttpResponse(cachedData as Object));\r\n subscriber.complete();\r\n } else {\r\n next.handle(request)\r\n .subscribe(\r\n event => {\r\n if (event instanceof HttpResponse) {\r\n this.httpCacheService.setCacheData(request.urlWithParams, event);\r\n }\r\n subscriber.next(event);\r\n },\r\n error => subscriber.error(error),\r\n () => subscriber.complete()\r\n );\r\n }\r\n });\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { ConfigService } from './config.service';\r\n\r\n/**\r\n * Prefixes all requests not starting with `http[s]` with `environment.serverUrl`.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApiPrefixInterceptor implements HttpInterceptor {\r\n\r\n constructor(private configService: ConfigService) { }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n if (!/^(http|https):/i.test(request.url)) {\r\n request = request.clone({ url: this.configService.getApiUrl() + request.url });\r\n }\r\n return next.handle(request);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ConfigService } from './config.service';\r\n\r\nexport interface Credentials {\r\n // Customize received credentials here\r\n user: any;\r\n token: any;\r\n}\r\n\r\n/**\r\n * Provides storage for authentication credentials.\r\n * The Credentials interface should be replaced with proper implementation.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CredentialsService {\r\n\r\n private _credentials: Credentials | null = null;\r\n\r\n constructor(private configService: ConfigService) {\r\n }\r\n\r\n /**\r\n * Checks is the user is authenticated.\r\n * @return True if the user is authenticated.\r\n */\r\n get isAuthenticated(): boolean {\r\n return !!this.credentials;\r\n }\r\n\r\n /**\r\n * Gets the user credentials.\r\n * @return The user credentials or null if the user is not authenticated.\r\n */\r\n get credentials(): Credentials | null {\r\n if (!this._credentials) {\r\n this._credentials = JSON.parse(sessionStorage.getItem(this.configService.getCredentialsKey()) || localStorage.getItem(this.configService.getCredentialsKey()));\r\n }\r\n return this._credentials;\r\n }\r\n\r\n /**\r\n * Sets the user credentials.\r\n * The credentials may be persisted across sessions by setting the `remember` parameter to true.\r\n * Otherwise, the credentials are only persisted for the current session.\r\n * @param credentials The user credentials.\r\n * @param remember True to remember credentials across sessions.\r\n */\r\n setCredentials(credentials?: Credentials, remember?: boolean) {\r\n this._credentials = credentials || null;\r\n\r\n if (credentials) {\r\n (remember ? localStorage : sessionStorage).setItem(this.configService.getCredentialsKey(), JSON.stringify(credentials));\r\n } else {\r\n sessionStorage.clear();\r\n localStorage.clear();\r\n this._credentials = null;\r\n }\r\n }\r\n\r\n getAccessToken(): string | null {\r\n const expiration = this.credentials?.token?.expires_in || '';\r\n const token = this.credentials?.token?.access_token || '';\r\n\r\n if (!token || !expiration) {\r\n return null;\r\n }\r\n\r\n if (Date.now() > parseInt(expiration)) {\r\n this.setCredentials();\r\n return null;\r\n }\r\n\r\n return token;\r\n }\r\n\r\n getExpiration(): string {\r\n return this.credentials?.token?.expires_in || '';\r\n }\r\n\r\n getRefreshToken(): string {\r\n return this.credentials?.token?.refresh_token || '';\r\n }\r\n\r\n refresh(): CredentialsService {\r\n this._credentials = null;\r\n return this;\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { CredentialsService } from './credentials.service';\r\n\r\n\r\n/**\r\n * Prefixes all requests not starting with `http[s]` with `environment.serverUrl`.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TokenInterceptor implements HttpInterceptor {\r\n\r\n constructor(private credentials: CredentialsService) { }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n request = request.clone({\r\n setHeaders: {\r\n Authorization: `Bearer ${this.credentials.getAccessToken() || ''}`\r\n }\r\n });\r\n return next.handle(request);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\n\r\n/**\r\n * Prefixes all requests not starting with `http[s]` with `environment.serverUrl`.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HeaderInterceptor implements HttpInterceptor {\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n request = request.clone({\r\n setHeaders: {\r\n 'Content-Type': request.headers.get('Content-Type') || 'application/json',\r\n }\r\n });\r\n return next.handle(request);\r\n }\r\n}\r\n","import { Inject, Injectable, InjectionToken, Injector, Optional } from '@angular/core';\r\nimport { HttpClient, HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';\r\n\r\nimport { Observable } from 'rxjs';\r\nimport { ErrorHandlerInterceptor } from './error-handler.interceptor';\r\nimport { CacheInterceptor } from './cache.interceptor';\r\nimport { ApiPrefixInterceptor } from './api-prefix.interceptor';\r\nimport { TokenInterceptor } from './token.interceptor';\r\nimport { HeaderInterceptor } from './header.interceptor';\r\n\r\n\r\n// Augment HttpClient with the added configuration methods from HttpService, to allow in-place replacement of\r\n// HttpClient with HttpService using dependency injection\r\nexport interface HttpCustomClient {\r\n\r\n /**\r\n * Enables caching for this request.\r\n * @param {boolean} forceUpdate Forces request to be made and updates cache entry.\r\n * @return {HttpCustomClient} The new instance.\r\n */\r\n cache(forceUpdate?: boolean): HttpCustomClient;\r\n\r\n /**\r\n * Skips default error handler for this request.\r\n * @return {HttpCustomClient} The new instance.\r\n */\r\n skipErrorHandler(): HttpCustomClient;\r\n\r\n /**\r\n * Skips default API Prefix for this request.\r\n * @return {HttpCustomClient} The new instance.\r\n */\r\n skipApiPrefix(): HttpCustomClient;\r\n\r\n\r\n /**\r\n * Skips default Token Interceptor for this request.\r\n * @return {HttpCustomClient} The new instance.\r\n */\r\n skipToken(): HttpCustomClient;\r\n\r\n /**\r\n* Skips default Header Interceptor for this request.\r\n* @return {HttpCustomClient} The new instance.\r\n*/\r\n skipHeader(): HttpCustomClient;\r\n\r\n}\r\n\r\n\r\n// From @angular/common/http/src/interceptor: allows to chain interceptors\r\nclass HttpInterceptorHandler implements HttpHandler {\r\n\r\n constructor(private next: HttpHandler, private interceptor: HttpInterceptor) { }\r\n\r\n handle(request: HttpRequest<any>): Observable<HttpEvent<any>> {\r\n return this.interceptor.intercept(request, this.next);\r\n }\r\n\r\n}\r\n\r\n/**\r\n * Allows to override default dynamic interceptors that can be disabled with the HttpService extension.\r\n * Except for very specific needs, you should better configure these interceptors directly in the constructor below\r\n * for better readability.\r\n *\r\n * For static interceptors that should always be enabled (like ApiPrefixInterceptor), use the standard\r\n * HTTP_INTERCEPTORS token.\r\n */\r\nexport const HTTP_DYNAMIC_INTERCEPTORS = new InjectionToken<HttpInterceptor>('HTTP_DYNAMIC_INTERCEPTORS');\r\n\r\n/**\r\n * Extends HttpClient with per request configuration using dynamic interceptors.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HttpService extends HttpClient implements HttpCustomClient {\r\n\r\n constructor(private httpHandler: HttpHandler,\r\n private injector: Injector,\r\n @Optional() @Inject(HTTP_DYNAMIC_INTERCEPTORS) private interceptors: HttpInterceptor[] = []) {\r\n super(httpHandler);\r\n\r\n if (!this.interceptors) {\r\n // Configure default interceptors that can be disabled here\r\n this.interceptors = [this.injector.get(ApiPrefixInterceptor), this.injector.get(HeaderInterceptor), this.injector.get(TokenInterceptor), this.injector.get(ErrorHandlerInterceptor)];\r\n }\r\n }\r\n\r\n cache(forceUpdate?: boolean): HttpService {\r\n const cacheInterceptor = this.injector.get(CacheInterceptor).configure({ update: forceUpdate });\r\n return this.addInterceptor(cacheInterceptor);\r\n }\r\n\r\n skipErrorHandler(): HttpService {\r\n return this.removeInterceptor(ErrorHandlerInterceptor);\r\n }\r\n\r\n skipApiPrefix(): HttpService {\r\n return this.removeInterceptor(ApiPrefixInterceptor);\r\n }\r\n\r\n skipToken(): HttpService {\r\n return this.removeInterceptor(TokenInterceptor);\r\n }\r\n\r\n skipHeader(): HttpService {\r\n return this.removeInterceptor(HeaderInterceptor);\r\n }\r\n\r\n // Override the original method to wire interceptors when triggering the request.\r\n request(method?: any, url?: any, options?: any): any {\r\n const handler = this.interceptors.reduceRight(\r\n (next, interceptor) => new HttpInterceptorHandler(next, interceptor),\r\n this.httpHandler\r\n );\r\n return new HttpClient(handler).request(method, url, options);\r\n }\r\n\r\n private removeInterceptor(interceptorType: Function): HttpService {\r\n return new HttpService(\r\n this.httpHandler,\r\n this.injector,\r\n this.interceptors.filter(i => !(i instanceof interceptorType))\r\n );\r\n }\r\n\r\n private addInterceptor(interceptor: HttpInterceptor): HttpService {\r\n return new HttpService(\r\n this.httpHandler,\r\n this.injector,\r\n this.interceptors.concat([interceptor])\r\n );\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpService } from '../core/http.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EntityFileService {\r\n\r\n constructor(private http: HttpService) { }\r\n\r\n getEntityFiles(filters: any) {\r\n return this.http.get(`api/entity-files`, { params: filters }).toPromise();\r\n }\r\n\r\n createEntityFile(model: any) {\r\n return this.http.post(\"api/entity-files\", model).toPromise();\r\n }\r\n\r\n updateEntityFile(model: any) {\r\n return this.http.put(`api/entity-files/${model.id}`, model).toPromise();\r\n }\r\n\r\n deleteEntityFile(model: any) {\r\n return this.http.delete(`api/entity-files/${model.id}`).toPromise();\r\n }\r\n\r\n uploadEntityFile(file: File, params?: any) {\r\n const formData: FormData = new FormData();\r\n formData.append(\"fileData\", file, file.name);\r\n if (params?.entity_id) {\r\n formData.append('entity_id', params.entity_id);\r\n formData.append('entity_type', params.entity_type);\r\n }\r\n return this.http\r\n .skipHeader()\r\n .post(\r\n \"api/entity-files-upload\",\r\n formData,\r\n ).toPromise();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormValidatorService {\r\n\r\n constructor() { }\r\n\r\n /**Method to evaluate form fields*/\r\n isFieldValid(field: string, formGroup: FormGroup | any, firstAttempt?: boolean) {\r\n return (!formGroup.get(field).valid && formGroup.get(field).touched) ||\r\n (!formGroup.get(field).valid && formGroup.get(field).untouched && firstAttempt);\r\n }\r\n\r\n /**Method to find error in form fields*/\r\n getErrorMessage(field: string, formGroup: FormGroup | any, errorMessages: any, errorField?: string) {\r\n const error = Object.keys(formGroup.get(field).errors);\r\n return (error.length > 0) ? (errorMessages[errorField || field][error[0]] ? errorMessages[errorField || field][error[0]] : '') : '';\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Inject } from \"@angular/core\";\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from \"@angular/material/dialog\";\r\nimport { FormGroup, FormBuilder, Validators } from \"@angular/forms\";\r\nimport { EntityFileService } from '../entity-file.service';\r\nimport { FileDropperConfig } from '../../file-dropper/file-dropper.model';\r\nimport { ViewerConfig } from '../../document-viewer/viewer-config.model';\r\nimport { FormValidatorService } from '../../core/form-validator.service';\r\nimport { AlertService } from \"../../core/alert.service\";\r\n\r\nconst errorMessages: any = {\r\n url: {\r\n required: \"File is required\"\r\n },\r\n};\r\n\r\n@Component({\r\n selector: 'entity-file-form',\r\n templateUrl: './entity-file-form.component.html',\r\n styleUrls: ['./entity-file-form.component.css']\r\n})\r\nexport class EntityFileFormComponent implements OnInit {\r\n\r\n entityFileGroup: FormGroup;\r\n assignmentFileFirstAttempt: boolean;\r\n updateMode: boolean;\r\n fileConfig: FileDropperConfig;\r\n fileList: any[] = [];\r\n viewerConfig: ViewerConfig;\r\n hideTitleAndDetails: boolean;\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<EntityFileFormComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private formValidatorService: FormValidatorService,\r\n private fb: FormBuilder,\r\n private entityFileService: EntityFileService,\r\n private alertService: AlertService\r\n ) {\r\n this.createForm();\r\n }\r\n\r\n /** Method to create a form **/\r\n private createForm() {\r\n //TODO: Finialize and add more validations.\r\n this.entityFileGroup = this.fb.group({\r\n id: [''],\r\n title: [''],\r\n details: [''],\r\n entity_type: [''],\r\n entity_id: [],\r\n file: ['', Validators.required],\r\n url: ['', Validators.required],\r\n file_size: ['', Validators.required],\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.data.entity) {\r\n this.entityFileGroup.get('entity_type').setValue(this.data.entity.entity_type);\r\n this.entityFileGroup.get('entity_id').setValue(this.data.entity.entity_id);\r\n }\r\n if (this.data.file) {\r\n this.updateMode = true;\r\n this.entityFileGroup.patchValue(this.data.file);\r\n }\r\n\r\n if (this.data?.hideTitleAndDetails) {\r\n this.hideTitleAndDetails = this.data?.hideTitleAndDetails;\r\n }\r\n\r\n //File dropper config\r\n this.fileConfig = {\r\n fileId: \"subjectFile\",\r\n containerId: \"subjectFileContainer\",\r\n styles: {\r\n height: \"200px\"\r\n },\r\n multiple: false,\r\n acceptFile: \"*\",\r\n maxSize: 10,\r\n acceptFileText: \"All Files\"\r\n };\r\n\r\n this.viewerConfig = {\r\n viewerStyle: {\r\n height: '200px',\r\n width: '100%'\r\n }\r\n }\r\n }\r\n\r\n\r\n //Method to trigger submit\r\n async submit() {\r\n this.assignmentFileFirstAttempt = true;\r\n if (!this.entityFileGroup.valid) {\r\n return;\r\n }\r\n const model = this.entityFileGroup.value;\r\n\r\n if (this.hideTitleAndDetails) {\r\n model.title = model.file;\r\n }\r\n\r\n const result: any = this.updateMode\r\n ? await this.entityFileService.updateEntityFile(model)\r\n : await this.entityFileService.createEntityFile(model);\r\n this.dialogRef.close(result.item);\r\n this.alertService.addAlert(\r\n \"File submitted successfully\",\r\n \"success\"\r\n );\r\n\r\n }\r\n\r\n async fileChanged(event: any) {\r\n this.fileList = event;\r\n\r\n if (this.fileList.length > 0) {\r\n\r\n const result: any = await this.entityFileService.uploadEntityFile(\r\n this.fileList[0],\r\n );\r\n this.entityFileGroup.patchValue(result.item);;\r\n this.fileList = [];\r\n }\r\n }\r\n\r\n\r\n async removeFile() {\r\n if (this.entityFileGroup.value.file) {\r\n try {\r\n this.entityFileGroup.patchValue({\r\n file: \"\",\r\n url: \"\"\r\n });\r\n } catch (error) {\r\n this.alertService.addAlert(\"Unable to remove file, try later\", \"warn\");\r\n }\r\n }\r\n }\r\n\r\n /**Method to evaluate form fields*/\r\n isFieldValid(field: string) {\r\n return this.formValidatorService.isFieldValid(\r\n field,\r\n this.entityFileGroup,\r\n this.assignmentFileFirstAttempt\r\n );\r\n }\r\n\r\n /**Method to find error in form fields*/\r\n getErrorMessage(field: string) {\r\n return this.formValidatorService.getErrorMessage(\r\n field,\r\n this.entityFileGroup,\r\n errorMessages\r\n );\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { Location } from '@angular/common';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { EntityFileFormComponent } from './entity-file-form/entity-file-form.component';\r\nimport { EntityFileService } from './entity-file.service';\r\nimport { ActionPopup } from '../action-popup/action-popup.model';\r\nimport { FormControl } from '@angular/forms';\r\nimport { UntilDestroy, untilDestroyed } from \"@ngneat/until-destroy\";\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { AlertService } from '../core/alert.service';\r\nimport { ActionPopupComponent } from '../action-popup/action-popup.component';\r\nimport { ViewerConfig } from '../document-viewer/viewer-config.model';\r\nimport { FileDropperConfig } from '../file-dropper';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-entity-files-view-all',\r\n templateUrl: './entity-files-view-all.component.html',\r\n styleUrls: ['./entity-files-view-all.component.css']\r\n})\r\nexport class EntityFilesViewAllComponent implements OnInit {\r\n @Input() entityId: number;\r\n @Input() entityType: string;\r\n @Input() viewOnly: boolean = false;\r\n @Input() removeSearch: boolean;\r\n @Input() hideTitleAndDetails: boolean;\r\n @Input() displayMode: boolean;\r\n @Input() allowMultipleFiles: boolean = false;\r\n viewerConfig: ViewerConfig;\r\n @Input() title: string = \"File\";\r\n filters: any = {};\r\n entityFiles: any[] = [];\r\n displayedColumns = [\r\n 'index',\r\n 'title',\r\n 'details',\r\n 'file_size',\r\n 'uploaded_on',\r\n ];\r\n isWorking: boolean = false;\r\n search: FormControl = new FormControl('');\r\n page: number = 1;\r\n perPage: number = 25;\r\n lastPage: number = 0;\r\n fileConfig: FileDropperConfig;\r\n fileList: any[] = [];\r\n\r\n constructor(\r\n private entityFileService: EntityFileService,\r\n public location: Location,\r\n private alertService: AlertService,\r\n private dialog: MatDialog,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n //File dropper config\r\n this.fileConfig = {\r\n fileId: \"entityDashboardDropper\",\r\n containerId: \"entityDashboardDropperContainer\",\r\n styles: {\r\n height: \"500px\"\r\n },\r\n multiple: this.allowMultipleFiles,\r\n acceptFile: \"*\",\r\n maxSize: 10,\r\n acceptFileText: \"All Files\"\r\n };\r\n\r\n this.viewerConfig = {\r\n imageStyle: {\r\n height: '200px',\r\n width: '200px'\r\n },\r\n viewerStyle: {\r\n height: ' 160px',\r\n width: '200px'\r\n },\r\n hideRemove: true\r\n };\r\n\r\n if (this.hideTitleAndDetails) {\r\n this.displayedColumns = this.displayedColumns.filter(x => (x !== 'details') && (x !== 'title'));\r\n }\r\n\r\n this.filters = {\r\n entity_type: this.entityType,\r\n entity_id: this.entityId,\r\n title: \"\"\r\n };\r\n this.search.valueChanges.pipe(debounceTime(500), distinctUntilChanged(), untilDestroyed(this)).subscribe(value => {\r\n this.filters.title = value;\r\n this.reload();\r\n })\r\n this.fetchEntityFilesDetails();\r\n if (!this.viewOnly) {\r\n this.displayedColumns.push('actions');\r\n }\r\n }\r\n\r\n async fetchEntityFilesDetails() {\r\n this.filters.page = this.page;\r\n this.filters.perPage = this.perPage;\r\n this.isWorking = true;\r\n const result: any = await this.entityFileService.getEntityFiles(this.filters);\r\n this.lastPage = result.last_page || this.page;\r\n this.entityFiles = this.entityFiles.concat(result.data);\r\n this.isWorking = false;\r\n }\r\n\r\n addEntityFile() {\r\n const dialogRef = this.dialog.open(EntityFileFormComponent, {\r\n width: \"700px\",\r\n data: {\r\n entity: this.filters,\r\n hideTitleAndDetails: this.hideTitleAndDetails\r\n },\r\n autoFocus: false,\r\n restoreFocus: false\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(async result => {\r\n if (result) {\r\n const files = [...this.entityFiles];\r\n files.push(result);\r\n this.entityFiles = files;\r\n }\r\n });\r\n }\r\n\r\n editEntityFile(file: any) {\r\n const dialogRef = this.dialog.open(EntityFileFormComponent, {\r\n width: \"700px\",\r\n autoFocus: false,\r\n data: {\r\n file: file,\r\n hideTitleAndDetails: this.hideTitleAndDetails\r\n } // Any data passed here will be injected into the model\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n this.reload();\r\n }\r\n });\r\n }\r\n\r\n deleteEntityFile(file: any) {\r\n const dialogRef = this.dialog.open(ActionPopupComponent, {\r\n width: \"400px\",\r\n data: <ActionPopup>{\r\n title: \"Delete File\",\r\n message: `Are you sure to proceed delete the file ${file.title}?`\r\n },\r\n autoFocus: false\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(async result => {\r\n if (result) {\r\n //Action confirmed\r\n const result = await this.entityFileService.deleteEntityFile(\r\n file\r\n );\r\n this.alertService.addAlert(\r\n \"File successfully deleted\",\r\n \"success\"\r\n );\r\n this.reload();\r\n\r\n }\r\n });\r\n }\r\n\r\n onScroll() {\r\n if (this.page < this.lastPage && !this.isWorking) {\r\n this.page += 1;\r\n this.fetchEntityFilesDetails();\r\n }\r\n }\r\n\r\n reload() {\r\n this.entityFiles = [];\r\n this.page = 1;\r\n if (!this.isWorking) {\r\n this.fetchEntityFilesDetails();\r\n }\r\n }\r\n\r\n ngOnDestroy() { }\r\n\r\n resetFieldValue() {\r\n this.search.setValue(\"\");\r\n }\r\n\r\n sizeOf(bytes) {\r\n if (!bytes) { return \"0.00 B\"; }\r\n var e = Math.floor(Math.log(bytes) / Math.log(1024));\r\n return (bytes / Math.pow(1024, e)).toFixed(2) + ' ' + ' KMGTP'.charAt(e) + 'B';\r\n }\r\n\r\n async fileChanged(event: any) {\r\n this.fileList = event;\r\n if (this.fileList.length > 0) {\r\n await this.fileList.forEach(async file => {\r\n const result: any = await this.entityFileService.uploadEntityFile(\r\n file,\r\n {\r\n entity_type: this.entityType,\r\n entity_id: this.entityId,\r\n }\r\n );\r\n this.reload();\r\n });\r\n this.fileList = [];\r\n this.alertService.addAlert('Successfull uploaded', 'success');\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from \"@angular/core\";\r\nimport { AlertService } from \"../core/alert.service\";\r\nimport { FileDropperConfig } from './file-dropper.model';\r\n\r\n\r\n@Component({\r\n selector: \"app-file-dropper\",\r\n templateUrl: \"./file-dropper.component.html\",\r\n styleUrls: [\"./file-dropper.component.scss\"]\r\n})\r\nexport class FileDropperComponent implements OnInit {\r\n @Input() fileArray: any[] = [];\r\n\r\n @Input() config: FileDropperConfig;\r\n\r\n @Output() fileChanged: any = new EventEmitter();\r\n\r\n border = \"1px dashed #989898\";\r\n\r\n @Input() styles: any;\r\n\r\n isSingleMode: boolean;\r\n\r\n constructor(private alertService: AlertService) { }\r\n\r\n /**Life cycle hook method */\r\n ngOnInit() {\r\n this.isSingleMode = !Boolean(this.config.multiple);\r\n }\r\n\r\n /**Method for dragging event */\r\n dragEnter(event: any) {\r\n event.target.style.background = this.config.dragColor || \"#c0c0c0\";\r\n\r\n event.target.style.border = \"1px dashed black\";\r\n\r\n event.preventDefault();\r\n }\r\n\r\n /**Method for drag over event */\r\n dragOver(event: any) {\r\n event.preventDefault();\r\n }\r\n\r\n /**Method for drag leave event */\r\n dragLeave(event: any) {\r\n event.target.style.background = \"\";\r\n event.target.style.border = this.border;\r\n\r\n event.preventDefault();\r\n }\r\n\r\n /**Method for drop event */\r\n dropEvent(event: any) {\r\n event.target.style.background = \"\";\r\n event.target.style.border = this.border;\r\n const droppedFiles: FileList = event.dataTransfer.files;\r\n if (droppedFiles.length > 0) {\r\n const fileArray = Array.from(droppedFiles);\r\n this.addFiles(fileArray);\r\n }\r\n event.preventDefault();\r\n }\r\n\r\n /**Method to list files selected */\r\n onFileChange(event: any) {\r\n if (event.target.files && event.target.files.length) {\r\n const fileArray = Array.from(event.target.files);\r\n this.addFiles(fileArray);\r\n const fileInput = document.getElementById(\r\n this.config.fileId\r\n ) as HTMLInputElement;\r\n fileInput.value = \"\";\r\n }\r\n }\r\n\r\n /**Method to add files in the array */\r\n addFiles(fileArray: any) {\r\n if (!this.isSingleMode) {\r\n fileArray.forEach((file: any) => {\r\n this.fileArray = this.fileArray.filter(\r\n (item: any) => item.name !== file.name\r\n );\r\n if (this.fileSizeAllowed(file)) {\r\n this.fileArray.push(file);\r\n }\r\n });\r\n\r\n this.fileArray.sort(this.sortFiles);\r\n this.fileChanged.emit(this.fileArray);\r\n } else {\r\n // Single Mode\r\n if (this.fileArray.length === 0) {\r\n if (this.fileSizeAllowed(fileArray[0])) {\r\n this.fileArray.push(fileArray[0]);\r\n this.fileArray.sort(this.sortFiles);\r\n this.fileChanged.emit(this.fileArray);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**Method to sort the files in asc */\r\n sortFiles(a: any, b: any) {\r\n const nameA = a.name.toUpperCase();\r\n const nameB = b.name.toUpperCase();\r\n if (nameA < nameB) {\r\n return -1;\r\n }\r\n if (nameA > nameB) {\r\n return 1;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n /**Method tp validate the file size */\r\n fileSizeAllowed(file: any): boolean {\r\n if (!Boolean(this.config.maxSize)) {\r\n return true;\r\n } else if (file.size / (1024 * 1024) < this.config.maxSize) {\r\n return true;\r\n } else {\r\n this.alertService.addAlert(\r\n `The size of the file exceeds the limit ${this.config.maxSize} MB, kindly upload a file with size ${this.config.maxSize} MB or below`,\r\n \"warn\"\r\n );\r\n return false;\r\n }\r\n }\r\n\r\n /**Method invokes when the drop box is clicked to upload the file */\r\n clickEvent(event: any) {\r\n if (!(this.isSingleMode && this.fileArray.length > 0)) {\r\n document.getElementById(this.config.fileId).click();\r\n }\r\n event.preventDefault();\r\n }\r\n}\r\n","export class FileDropperConfig {\r\n containerId: string;\r\n fileId: string;\r\n styles?: any;\r\n multiple?: boolean;\r\n dragColor?: boolean;\r\n acceptFile: string; // use '*' to accept all file types.\r\n maxSize?: number; // size in MB\r\n acceptFileText?: string;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpService } from '../core/http.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NoteService {\r\n\r\n constructor(private http: HttpService) { }\r\n\r\n getNotes(filterModel: any) {\r\n return this.http.get('api/notes', { params: filterModel }).toPromise();\r\n }\r\n\r\n addNote(note: any) {\r\n return this.http.post('api/notes', note).toPromise();\r\n }\r\n\r\n editNote(note: any) {\r\n return this.http.put(`api/notes/${note.id}`, note).toPromise();\r\n }\r\n\r\n deleteNote(note: any) {\r\n return this.http.delete(`api/notes/${note.id}`).toPromise();\r\n }\r\n}\r\n","import { Component, OnInit, Inject } from \"@angular/core\";\r\nimport { FormGroup, FormBuilder, Validators } from \"@angular/forms\";\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from \"@angular/material/dialog\";\r\nimport { NoteService } from \"../note.service\";\r\nimport { FormValidatorService } from '../../core/form-validator.service';\r\nimport { AlertService } from \"../../core/alert.service\";\r\n\r\nconst errorMessages: any = {\r\n note: {\r\n required: \"Note is required\"\r\n }\r\n};\r\n\r\n@Component({\r\n selector: 'app-note-form',\r\n templateUrl: './note-form.component.html',\r\n styleUrls: ['./note-form.component.css']\r\n})\r\nexport class NoteFormComponent implements OnInit {\r\n\r\n updateMode: boolean;\r\n noteFormGroup: FormGroup;\r\n noteFormFirstAttempt: boolean;\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<NoteFormComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private fb: FormBuilder,\r\n private formValidatorService: FormValidatorService,\r\n private alertService: AlertService,\r\n private noteService: NoteService\r\n ) {\r\n this.createForm();\r\n }\r\n\r\n /** Method to create a form **/\r\n private createForm() {\r\n //TODO: Finialize and add more validations.\r\n this.noteFormGroup = this.fb.group({\r\n id: [\"\"],\r\n note: [\"\", Validators.compose([Validators.required])],\r\n model_type: [\"\"],\r\n related_model_id: [\"\"],\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n if (this.data.update) {\r\n this.updateMode = true;\r\n }\r\n this.noteFormGroup.patchValue(this.data.note);\r\n }\r\n\r\n //Method to trigger login\r\n async submit() {\r\n this.noteFormFirstAttempt = true;\r\n if (this.noteFormGroup.valid) {\r\n const model = this.noteFormGroup.value;\r\n const result = this.updateMode\r\n ? await this.noteService.editNote(model)\r\n : await this.noteService.addNote(model);\r\n\r\n this.alertService.addAlert(\r\n `${this.data?.labelText} saved successfully`,\r\n \"success\"\r\n );\r\n this.dialogRef.close(result);\r\n }\r\n }\r\n\r\n cancel() {\r\n this.dialogRef.close();\r\n }\r\n\r\n /**Method to evaluate form fields*/\r\n isFieldValid(field: string) {\r\n return this.formValidatorService.isFieldValid(\r\n field,\r\n this.noteFormGroup,\r\n this.noteFormFirstAttempt\r\n );\r\n }\r\n\r\n /**Method to find error in form fields*/\r\n getErrorMessage(field: string) {\r\n return this.formValidatorService.getErrorMessage(\r\n field,\r\n this.noteFormGroup,\r\n errorMessages\r\n );\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { NoteService } from '../note.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { NoteFormComponent } from '../note-form/note-form.component';\r\nimport { ActionPopupComponent } from '../../action-popup/action-popup.component';\r\nimport { ActionPopup } from '../../action-popup/action-popup.model';\r\n\r\n@Component({\r\n selector: 'app-note-list',\r\n templateUrl: './note-list.component.html',\r\n styleUrls: ['./note-list.component.css']\r\n})\r\nexport class NoteListComponent implements OnInit {\r\n\r\n @Input() relatedModelId !: any;\r\n @Input() modelType !: any;\r\n @Input() readonly: boolean = false;\r\n @Input() labelText: string = 'Note';\r\n @Input() commentsView: boolean = false;\r\n\r\n notes: any[] = [];\r\n filters: any;\r\n displayedColumns = [\r\n 'index',\r\n 'note',\r\n 'actions'\r\n ];\r\n\r\n page = 1;\r\n lastPage = 1;\r\n\r\n constructor(private noteService: NoteService,\r\n private dialog: MatDialog\r\n ) {\r\n this.filters = {};\r\n this.filters.sort_by = \"created_at|DESC\";\r\n }\r\n\r\n ngOnInit() {\r\n if (this.readonly) {\r\n this.displayedColumns = this.displayedColumns.filter(x => x !== 'actions');\r\n }\r\n this.filters.related_model_id = this.relatedModelId;\r\n this.filters.model_type = this.modelType;\r\n this.loadData();\r\n }\r\n\r\n async loadData() {\r\n\r\n const result: any = await this.noteService.getNotes({ ...this.filters, page: this.page });\r\n this.notes = this.notes.concat(result.data);\r\n this.page = result.current_page;\r\n this.lastPage = result.last_page;\r\n }\r\n\r\n addNote() {\r\n const dialogRef = this.dialog.open(NoteFormComponent, {\r\n width: \"400px\",\r\n data: {\r\n note: { related_model_id: this.relatedModelId, model_type: this.modelType },\r\n labelText: this.labelText,\r\n },\r\n autoFocus: false\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n this.resetScroll();\r\n this.loadData();\r\n }\r\n });\r\n }\r\n\r\n editNote(note: any) {\r\n const dialogRef = this.dialog.open(NoteFormComponent, {\r\n width: \"400px\",\r\n data: {\r\n note: note,\r\n update: true,\r\n labelText: this.labelText\r\n },\r\n autoFocus: false\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n this.resetScroll();\r\n this.loadData();\r\n }\r\n });\r\n }\r\n\r\n async deleteNote(note: any) {\r\n const dialogRef = this.dialog.open(ActionPopupComponent, {\r\n width: \"400px\",\r\n data: <ActionPopup>{\r\n title: `Delete ${this.labelText}`,\r\n message: `Are you sure to delete?`\r\n },\r\n autoFocus: false\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(async result => {\r\n if (result) {\r\n //Action confirmed\r\n\r\n const result = await this.noteService.deleteNote(note);\r\n this.notes = this.notes.filter((item: any) => item.id !== note.id);\r\n\r\n }\r\n });\r\n }\r\n\r\n resetScroll() {\r\n this.page = 1;\r\n this.lastPage = 1;\r\n this.notes = [];\r\n }\r\n\r\n onScroll() {\r\n if (this.page < this.lastPage) {\r\n this.page += 1;\r\n this.loadData();\r\n }\r\n }\r\n\r\n commentAction(event: any) {\r\n if (event.type === \"save\") {\r\n if (event.value.id) {\r\n this.editComment(event.value);\r\n return;\r\n }\r\n this.addComment(event.value);\r\n return;\r\n }\r\n this.deleteNote(event.value);\r\n }\r\n\r\n async editComment(comment: any) {\r\n const result: any = await this.noteService.editNote(comment);\r\n let index = this.notes.findIndex(\r\n (x: any) => x.id === comment.id\r\n );\r\n if (index !== -1) {\r\n this.notes[index] = result.item;\r\n }\r\n }\r\n\r\n async addComment(comment: any) {\r\n comment.related_model_id = this.relatedModelId;\r\n comment.model_type = this.modelType;\r\n const result: any = await this.noteService.addNote(comment);\r\n this.notes.push(result.item);\r\n }\r\n\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n OnDestroy\r\n} from \"@angular/core\";\r\nimport { FormGroup, FormBuilder } from \"@angular/forms\";\r\nimport { CredentialsService } from \"../../core/credentials.service\";\r\n\r\n@Component({\r\n selector: \"app-comment-form\",\r\n templateUrl: \"./comment-form.component.html\",\r\n styleUrls: [\"./comment-form.component.scss\"]\r\n})\r\nexport class CommentFormComponent implements OnInit, OnDestroy {\r\n commentFormGroup: FormGroup;\r\n view: boolean;\r\n _commentData: any;\r\n\r\n @Input() set commentData(data: any) {\r\n this.view = !!data;\r\n this._commentData = data;\r\n this.commentFormGroup.patchValue(data);\r\n }\r\n\r\n @Output() action = new EventEmitter();\r\n\r\n constructor(private fb: FormBuilder,\r\n private credentialService: CredentialsService\r\n ) {\r\n this.createForm();\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n get isLoggedIn() {\r\n return this.credentialService.isAuthenticated;\r\n }\r\n\r\n get currentUser() {\r\n return this.credentialService.credentials.user;\r\n }\r\n\r\n private createForm() {\r\n //TODO: Finialize and add more validations.\r\n this.commentFormGroup = this.fb.group({\r\n id: [\"\"],\r\n note: [\"\"],\r\n model_type: [\"\"],\r\n related_model_id: [\"\"],\r\n });\r\n }\r\n\r\n submit() {\r\n if (this.commentFormGroup.get(\"note\").value) {\r\n if (this._commentData) {\r\n this.view = !this.view;\r\n }\r\n this.action.emit({ type: \"save\", value: this.commentFormGroup.value });\r\n this.commentFormGroup.reset();\r\n } else if (this.commentFormGroup.get(\"id\").value) {\r\n this.deleteComment();\r\n }\r\n }\r\n\r\n hideEdit() {\r\n if (this.commentFormGroup.get(\"id\").value) {\r\n this.view = !this.view;\r\n }\r\n }\r\n\r\n editComment() {\r\n this.view = !this.view;\r\n this.commentFormGroup.patchValue(this._commentData);\r\n }\r\n\r\n deleteComment() {\r\n this.action.emit({ type: \"delete\", value: this.commentFormGroup.value });\r\n }\r\n\r\n ngOnDestroy() { }\r\n}\r\n","import { FocusMonitor } from '@angular/cdk/a11y';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { Component, ElementRef, Input, OnDestroy, OnInit, Optional, Self, Output, EventEmitter, TemplateRef } from '@angular/core';\r\nimport { FormBuilder, FormGroup, ControlValueAccessor, NgControl, Validators } from '@angular/forms';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { Subject, of, from } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, startWith, switchMap, finalize } from 'rxjs/operators';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ComponentType } from '@angular/cdk/portal';\r\nimport { HttpService } from '../core/http.service';\r\nimport { UntilDestroy, untilDestroyed } from \"@ngneat/until-destroy\";\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-searchable-selector',\r\n templateUrl: './searchable-selector.component.html',\r\n styleUrls: ['./searchable-selector.component.scss'],\r\n providers: [\r\n {\r\n provide: MatFormFieldControl,\r\n useExisting: SearchableSelectorComponent\r\n }\r\n ]\r\n})\r\nexport class SearchableSelectorComponent implements ControlValueAccessor, OnInit, OnDestroy {\r\n\r\n @Input() valueField: string = 'id';\r\n @Input() titleField: string = 'title';\r\n @Input() apiUrl!: string;\r\n @Input() multiple: boolean = false;\r\n @Input() selectedValue: any;\r\n @Output() selectedValueChange = new EventEmitter();\r\n @Input() enableSearch: boolean = true;\r\n @Input() add: boolean = false;\r\n @Input() addConfig: any;\r\n @Input() edit: boolean = false;\r\n @Input() editConfig: any;\r\n @Input() sort: boolean = true;\r\n @Input() sortBy: string;\r\n @Input() searchField: string;\r\n @Input() itemComponent: ComponentType<unknown> | TemplateRef<unknown>;\r\n @Input() items: any[] = [];\r\n @Input() apiDataProperty: string = 'data';\r\n @Input() cache: boolean = false;\r\n @Input() perPage: number = 25;\r\n @Input() inDataSearch: boolean = false;\r\n @Output() selectionChange = new EventEmitter();\r\n @Output() itemsChange = new EventEmitter();\r\n\r\n\r\n isLoading: boolean = false;\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n static nextId = 0;\r\n selectorForm: FormGroup;\r\n stateChanges = new Subject<void>();\r\n focused = false;\r\n controlType = 'searchable-selctor';\r\n id = `searchable-selctor-${SearchableSelectorComponent.nextId++}`;\r\n describedBy = '';\r\n filters: any;\r\n cachedItems: any[] = [];\r\n\r\n\r\n get empty() {\r\n const { value: { select_value } } = this.selectorForm;\r\n return !select_value;\r\n }\r\n\r\n get shouldLabelFloat() { return this.focused || !this.empty; }\r\n\r\n\r\n @Input()\r\n get required(): boolean { return this._required; }\r\n set required(value: boolean) {\r\n this.selectorForm.get('select_value').setValidators(Validators.required);\r\n this._required = coerceBooleanProperty(value);\r\n this.stateChanges.next();\r\n }\r\n private _required = false;\r\n\r\n @Input()\r\n get disabled(): boolean { return this._disabled; }\r\n set disabled(value: boolean) {\r\n this._disabled = coerceBooleanProperty(value);\r\n this._disabled ? this.selectorForm.disable() : this.selectorForm.enable();\r\n this.stateChanges.next();\r\n }\r\n private _disabled = false;\r\n\r\n @Input()\r\n get value(): any {\r\n if (this.selectorForm.valid) {\r\n return this.selectorForm.value.select_value;\r\n }\r\n return '';\r\n }\r\n set value(data: any) {\r\n this.selectorForm.patchValue({ select_value: data || '' });\r\n this.stateChanges.next();\r\n }\r\n\r\n constructor(\r\n formBuilder: FormBuilder,\r\n private _focusMonitor: FocusMonitor,\r\n private http: HttpService,\r\n private _elementRef: ElementRef<HTMLElement>,\r\n private dialog: MatDialog,\r\n @Optional() @Self() public ngControl: NgControl) {\r\n\r\n this.selectorForm = formBuilder.group({\r\n select_value: [null],\r\n search: ''\r\n });\r\n\r\n _focusMonitor.monitor(_elementRef, true).subscribe(origin => {\r\n if (this.focused && !origin) {\r\n this.onTouched();\r\n }\r\n this.focused = !!origin;\r\n this.stateChanges.next();\r\n });\r\n\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n openedChange(event: any) {\r\n if (this.dataItems.length === 0 && this.selectorForm.get('search').value) {\r\n this.selectorForm.get('search').setValue('');\r\n }\r\n }\r\n\r\n get dataItems(): any[] {\r\n let items: any[] = [];\r\n if (this.multiple && this.selectedValue && (this.selectedValue.length > 0))\r\n items = [...this.selectedValue, ...this.items];\r\n else if ((!this.multiple) && this.selectedValue)\r\n items = [this.selectedValue, ...this.items];\r\n else\r\n items = this.items;\r\n items = items.filter((v, i, a) => a.findIndex(v => v[this.valueField] === a[i][this.valueField]) === i);\r\n //Emit the items to any child component\r\n this.itemsChange.emit(items);\r\n return items;\r\n }\r\n\r\n ngOnInit() {\r\n this.selectorForm.get('search').valueChanges\r\n .pipe(\r\n debounceTime(500),\r\n distinctUntilChanged(),\r\n untilDestroyed(this)\r\n ).subscribe(value => {\r\n if (this.enableSearch)\r\n this.search(value);\r\n });\r\n\r\n this.filters = {\r\n perPage: this.perPage,\r\n search: '',\r\n page: 1,\r\n lastPage: 1\r\n }\r\n if (this.sort) {\r\n this.filters.sort_by = this.sortBy || `${this.titleField}|asc`;\r\n }\r\n\r\n //Fetch Items only if it is not present, can be used in places where we load many entries.\r\n if (this.items.length === 0) {\r\n this.fetchItemList();\r\n }\r\n }\r\n\r\n fetchItemList() {\r\n this.isLoading = true;\r\n let request = this.http.get(this.apiUrl, { params: this.filters })\r\n if (this.cache) {\r\n request = this.http.cache().get(this.apiUrl, { params: this.filters })\r\n }\r\n of().pipe(\r\n startWith(true),\r\n switchMap((_) => from(request)),\r\n finalize(() => this.isLoading = false),\r\n untilDestroyed(this)\r\n ).subscribe((result: any) => {\r\n this.items = this.items.concat(result[this.apiDataProperty]);\r\n if (this.cache) {\r\n this.cachedItems = this.items;\r\n }\r\n this.filters.page = result?.current_page || 1;\r\n this.filters.lastPage = result?.last_page || 1;\r\n });\r\n }\r\n\r\n\r\n setDescribedByIds(ids: string[]) {\r\n this.describedBy = ids.join(' ');\r\n }\r\n\r\n onContainerClick(event: MouseEvent) {\r\n event.stopPropagation();\r\n }\r\n\r\n writeValue(data: any): void {\r\n this.value = data;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n getPropertyValue(ele: any, keyString: string) {\r\n keyString = keyString.replace(/\\[(\\w+)\\]/g, \".$1\"); // convert indexes to properties\r\n keyString = keyString.replace(/^\\./, \"\"); // strip a leading dot\r\n const keyList = keyString.split(\".\");\r\n for (let i = 0, n = keyList.length; i < n; ++i) {\r\n const key = keyList[i];\r\n if (ele && key in ele) {\r\n ele = ele[key];\r\n } else {\r\n return;\r\n }\r\n }\r\n return ele;\r\n }\r\n\r\n _handleInput(): void {\r\n this.onChange(this.value);\r\n if (this.multiple)\r\n this.selectedValue = (this.value as []).map(x => this.dataItems.find(y => y[this.valueField] === x));\r\n else\r\n this.selectedValue = this.dataItems.find(x => x[this.valueField] === this.value);\r\n this.selectedValueChange.emit(this.selectedValue);\r\n this.selectionChange.emit(this.value);\r\n }\r\n\r\n get errorState(): boolean {\r\n return (this.ngControl && this.ngControl.invalid && (this.ngControl.touched || this.ngControl.dirty));\r\n }\r\n\r\n static ngAcceptInputType_disabled: boolean | string | null | undefined;\r\n static ngAcceptInputType_required: boolean | string | null | undefined;\r\n\r\n onScroll() {\r\n if (this.filters.lastPage > this.filters.page) {\r\n this.filters.page += 1;\r\n this.fetchItemList();\r\n }\r\n }\r\n\r\n reloadData() {\r\n this.items = [];\r\n this.filters.page = 1;\r\n this.filters.lastPage = 1;\r\n this.fetchItemList();\r\n }\r\n\r\n search(event: any) {\r\n if (this.searchField) {\r\n this.filters[this.searchField] = event;\r\n } else {\r\n this.filters.search = event;\r\n }\r\n // we need search field to search in data\r\n if (this.inDataSearch && this.searchField) {\r\n this.filterItems(event);\r\n } else {\r\n this.reloadData();\r\n }\r\n }\r\n\r\n filterItems(event: string) {\r\n if (event) {\r\n this.items = this.cachedItems.filter((value: any) => {\r\n return (value[this.searchField] as string).toLowerCase().search(event.toLowerCase()) != -1\r\n })\r\n } else {\r\n this.items = this.cachedItems;\r\n }\r\n }\r\n\r\n addItem(event: any) {\r\n const dialogRef = this.dialog.open(this.itemComponent, {\r\n width: '400px',\r\n autoFocus: false,\r\n data: {},\r\n ...this.addConfig\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result: any) => {\r\n if (result) {\r\n this.items.push(result.item);\r\n this.selectorForm.get('select_value').setValue(result.item[this.valueField]);\r\n this._handleInput();\r\n }\r\n });\r\n event.stopPropagation();\r\n }\r\n\r\n editItem(event: any) {\r\n const dialogRef = this.dialog.open(this.itemComponent, {\r\n width: '400px',\r\n autoFocus: false,\r\n data: {\r\n item: this.selectedValue\r\n },\r\n ...this.editConfig\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result: any) => {\r\n if (result) {\r\n this.items = this.items.filter(x => x[this.valueField] !== this.selectedValue[this.valueField]);\r\n this.items.push(result.item);\r\n this.selectedValue = null;\r\n this.selectorForm.get('select_value').setValue(result.item[this.valueField]);\r\n this._handleInput();\r\n }\r\n });\r\n event.stopPropagation();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.stateChanges.complete();\r\n this._focusMonitor.stopMonitoring(this._elementRef);\r\n }\r\n\r\n}\r\n","import { AfterViewInit, Directive, EventEmitter, Input, NgZone, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { MatSelect, SELECT_ITEM_HEIGHT_EM } from '@angular/material/select';\r\nimport { debounceTime, takeUntil, tap } from 'rxjs/operators';\r\nimport { fromEvent, Subject } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[msInfiniteScroll]'\r\n})\r\nexport class MatSelectInfiniteScrollDirective implements OnInit, OnDestroy, AfterViewInit {\r\n\r\n @Input() threshold = '15%';\r\n @Input() debounceTime = 150;\r\n @Input() complete: boolean;\r\n @Output() infiniteScroll = new EventEmitter<void>();\r\n\r\n private panel: Element;\r\n private thrPx = 0;\r\n private thrPc = 0;\r\n private singleOptionHeight = SELECT_ITEM_HEIGHT_EM;\r\n\r\n private destroyed$ = new Subject<boolean>();\r\n\r\n constructor(private matSelect: MatSelect, private ngZone: NgZone) {\r\n }\r\n\r\n ngOnInit() {\r\n this.evaluateThreshold();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.matSelect.openedChange.pipe(\r\n takeUntil(this.destroyed$)\r\n ).subscribe((opened) => {\r\n if (opened) {\r\n this.panel = this.matSelect.panel.nativeElement;\r\n this.singleOptionHeight = this.getSelectItemHeightPx();\r\n this.registerScrollListener();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyed$.next(true);\r\n this.destroyed$.complete();\r\n }\r\n\r\n evaluateThreshold() {\r\n if (this.threshold.lastIndexOf('%') > -1) {\r\n this.thrPx = 0;\r\n this.thrPc = (parseFloat(this.threshold) / 100);\r\n\r\n } else {\r\n this.thrPx = parseFloat(this.threshold);\r\n this.thrPc = 0;\r\n }\r\n }\r\n\r\n registerScrollListener() {\r\n fromEvent(this.panel, 'scroll').pipe(\r\n takeUntil(this.destroyed$),\r\n debounceTime(this.debounceTime),\r\n tap((event) => {\r\n this.handleScrollEvent(event);\r\n })\r\n ).subscribe();\r\n }\r\n\r\n handleScrollEvent(event) {\r\n this.ngZone.runOutsideAngular(() => {\r\n if (this.complete) {\r\n return;\r\n }\r\n const countOfRenderedOptions = this.matSelect.options.length;\r\n const infiniteScrollDistance = this.singleOptionHeight * countOfRenderedOptions;\r\n const threshold = this.thrPc !== 0 ? (infiniteScrollDistance * this.thrPc) : this.thrPx;\r\n\r\n const scrolledDistance = this.panel.clientHeight + event.target.scrollTop;\r\n\r\n if ((scrolledDistance + threshold) >= infiniteScrollDistance) {\r\n this.ngZone.run(() => this.infiniteScroll.emit());\r\n }\r\n });\r\n }\r\n\r\n getSelectItemHeightPx(): number {\r\n return parseFloat(getComputedStyle(this.panel).fontSize) * SELECT_ITEM_HEIGHT_EM;\r\n }\r\n\r\n}","import { Component, Input, Output, EventEmitter } from \"@angular/core\";\r\n\r\n/**\r\n * Component to generate a num items selector\r\n * \r\n * @author Floyd Kissoon\r\n * @since 20170817\r\n */\r\n@Component({\r\n selector: \"num-items-selector\",\r\n templateUrl: \"./num-items-selector.html\"\r\n})\r\nexport class NumItemsSelector {\r\n @Input() numItems: number;\r\n @Output() numItemsChange: EventEmitter<number>;\r\n\r\n constructor() {\r\n this.numItemsChange = new EventEmitter<number>();\r\n }\r\n\r\n /**\r\n * Called when an item has been selected\r\n */\r\n numItemsChanged() {\r\n this.numItemsChange.emit(this.numItems);\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n/**\r\n * Service that provides utility functions for dates\r\n * \r\n * @author Joshua Kissoon\r\n * @since 20170726\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DateUtils {\r\n\r\n /**\r\n * Takes in a date object and outputs the string value\r\n */\r\n getYYYYMMDDString(inputDate: Date): string {\r\n var year = inputDate.getFullYear();\r\n var month = (inputDate.getMonth() + 1) < 10 ? (\"0\" + (inputDate.getMonth() + 1)) : (inputDate.getMonth() + 1);\r\n var date = inputDate.getDate() < 10 ? (\"0\" + inputDate.getDate()) : inputDate.getDate();\r\n\r\n return year + \"-\" + month + \"-\" + date;\r\n }\r\n\r\n /**\r\n * Takes in a date object and outputs the year\r\n */\r\n getYYYY(inputDate: Date): number {\r\n var year = inputDate.getFullYear();\r\n return year;\r\n }\r\n\r\n /**\r\n * Takes in a date object and outputs the Month\r\n */\r\n getMM(inputDate: Date): number {\r\n var month = inputDate.getMonth() + 1;\r\n return month;\r\n }\r\n // var n = this.rfidCardUseManualEntry.manual_date.toLocaleTimeString();\r\n\r\n getDateTime(inputDate: Date): string {\r\n var year = inputDate.getFullYear();\r\n var month = (inputDate.getMonth() + 1) < 10 ? (\"0\" + (inputDate.getMonth() + 1)) : (inputDate.getMonth() + 1);\r\n var date = inputDate.getDate() < 10 ? (\"0\" + inputDate.getDate()) : inputDate.getDate();\r\n var time = inputDate.toLocaleTimeString();\r\n\r\n return year + \"-\" + month + \"-\" + date + \" \" + time;\r\n }\r\n\r\n}","import { Component, Input, Output, EventEmitter, OnInit } from \"@angular/core\";\r\n\r\n/**\r\n * Component to generate a number selector\r\n * \r\n * @author Floyd Kissoon\r\n * @since 20180628\r\n */\r\n@Component({\r\n selector: \"number-selector\",\r\n templateUrl: \"./number-selector.html\"\r\n})\r\nexport class NumberSelector implements OnInit {\r\n @Input() start_value: number;\r\n @Input() end_value: number\r\n @Output() selectedValueChange: EventEmitter<number>;\r\n @Input() selectedValue: number;\r\n\r\n items = new Array();\r\n\r\n constructor() {\r\n this.selectedValueChange = new EventEmitter<number>();\r\n }\r\n\r\n /**\r\n * Called when an item has been selected\r\n */\r\n numChanged() {\r\n this.selectedValueChange.emit(this.selectedValue);\r\n }\r\n\r\n\r\n ngOnInit() {\r\n for (var i = this.start_value; i < this.end_value + 1; i++) {\r\n this.items.push(i);\r\n }\r\n }\r\n}\r\n","export class Timeline {\r\n public static CUSTOM: number = 1;\r\n public static TODAY: number = 2;\r\n public static YESTERDAY: number = 3;\r\n public static THIS_WEEK: number = 4;\r\n public static LAST_WEEK: number = 5;\r\n public static THIS_MONTH: number = 6;\r\n public static LAST_MONTH: number = 7;\r\n public static THIS_QUARTER: number = 8;\r\n public static LAST_QUARTER: number = 9;\r\n public static THIS_YEAR: number = 10;\r\n public static LAST_YEAR: number = 11;\r\n public static ALL: number = 12;\r\n public static TOMMOROW: number = 13;\r\n public static NEXT_WEEK: number = 14;\r\n public static NEXT_MONTH: number = 15;\r\n}\r\n","import * as moment_ from 'moment';\r\nconst moment = moment_;\r\nimport { Timeline } from \"./timeline.model\";\r\n\r\n\r\nexport interface TimelineValue {\r\n date_from: Date,\r\n date_to: Date,\r\n show_custom_field: boolean\r\n}\r\nexport function calculateTimeline(value: any) {\r\n const date = new Date();\r\n const data: any = {\r\n 'date_from': date,\r\n 'date_to': date,\r\n 'show_custom_field': false\r\n };\r\n switch (value) {\r\n case Timeline.CUSTOM: { //Custom\r\n data.show_custom_field = true;\r\n break;\r\n }\r\n case Timeline.TODAY: { // Today\r\n let now = moment();\r\n data.date_from = now.startOf('day').toISOString();\r\n data.date_to = now.endOf('day').toISOString();\r\n break;\r\n }\r\n case Timeline.YESTERDAY: { // Yesterday\r\n let now = moment().subtract(1, 'day');\r\n data.date_from = now.startOf('day').toISOString();\r\n data.date_to = now.endOf('day').toISOString();\r\n break;\r\n }\r\n case Timeline.THIS_WEEK: { // This Week\r\n let now = moment();\r\n data.date_from = now.startOf('isoWeek').toISOString();\r\n data.date_to = now.endOf('isoWeek').toISOString();\r\n break;\r\n }\r\n case Timeline.LAST_WEEK: { // Last Week\r\n let now = moment().subtract(1, 'week');\r\n data.date_from = now.startOf('isoWeek').toISOString();\r\n data.date_to = now.endOf('isoWeek').toISOString();\r\n break;\r\n }\r\n case Timeline.THIS_MONTH: { //This Month\r\n let now = moment();\r\n data.date_from = now.startOf('month').toISOString();\r\n data.date_to = now.endOf('month').toISOString();\r\n break;\r\n }\r\n case Timeline.LAST_MONTH: { // Last Month\r\n let now = moment().subtract(1, 'month');\r\n data.date_from = now.startOf('month').toISOString();\r\n data.date_to = now.endOf('month').toISOString();\r\n break;\r\n }\r\n case Timeline.THIS_QUARTER: { // This Quarter\r\n let now = moment();\r\n data.date_from = now.startOf('quarter').toISOString();\r\n data.date_to = now.endOf('quarter').toISOString();\r\n break;\r\n }\r\n case Timeline.LAST_QUARTER: { // Last Quarter\r\n let now = moment().subtract(1, 'quarter');\r\n data.date_from = now.startOf('quarter').toISOString();\r\n data.date_to = now.endOf('quarter').toISOString();\r\n break;\r\n }\r\n case Timeline.THIS_YEAR: { // This Year\r\n let now = moment();\r\n data.date_from = now.startOf('year').toISOString();\r\n data.date_to = now.endOf('year').toISOString();\r\n break;\r\n }\r\n case Timeline.LAST_YEAR: { // Last Year\r\n let now = moment().subtract(1, 'year');\r\n data.date_from = now.startOf('year').toISOString();\r\n data.date_to = now.endOf('year').toISOString();\r\n break;\r\n }\r\n case Timeline.TOMMOROW: {\r\n let now = moment().add(1, 'day');\r\n data.date_from = now.startOf('day').toISOString();\r\n data.date_to = now.endOf('day').toISOString();\r\n break;\r\n }\r\n case Timeline.NEXT_WEEK: {\r\n let now = moment().add(1, 'week');\r\n data.date_from = now.startOf('isoWeek').toISOString();\r\n data.date_to = now.endOf('isoWeek').toISOString();\r\n break;\r\n }\r\n case Timeline.NEXT_MONTH: {\r\n let now = moment().add(1, 'month');\r\n data.date_from = now.startOf('month').toISOString();\r\n data.date_to = now.endOf('month').toISOString();\r\n break;\r\n }\r\n default: { // All\r\n data.date_from = '';\r\n data.date_to = '';\r\n break;\r\n }\r\n\r\n }\r\n return data;\r\n}\r\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { DatePipe } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnInit, Optional, Output, Self, ViewChild } from '@angular/core';\r\nimport { ControlValueAccessor, FormBuilder, FormControl, FormGroup, NgControl, Validators } from '@angular/forms';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { UntilDestroy, untilDestroyed } from \"@ngneat/until-destroy\";\r\nimport { TimelineValue, calculateTimeline } from './calculate-timeline';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { Timeline } from './timeline.model';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-timeline-filter',\r\n templateUrl: './timeline-filter.component.html',\r\n styleUrls: ['./timeline-filter.component.scss'],\r\n providers: [\r\n {\r\n provide: MatFormFieldControl,\r\n useExisting: TimelineFilterComponent\r\n }\r\n ]\r\n})\r\nexport class TimelineFilterComponent implements OnInit, ControlValueAccessor {\r\n\r\n @ViewChild('picker') picker;\r\n @Input() timelineValue: FormControl = new FormControl('');\r\n @Input() timelines: any[] = [\r\n { value: Timeline.CUSTOM, viewValue: 'Custom' },\r\n { value: Timeline.TODAY, viewValue: 'Today' },\r\n { value: Timeline.YESTERDAY, viewValue: 'Yesterday' },\r\n { value: Timeline.TOMMOROW, viewValue: 'Tomorrow' },\r\n { value: Timeline.THIS_WEEK, viewValue: 'This Week' },\r\n { value: Timeline.LAST_WEEK, viewValue: 'Last Week' },\r\n { value: Timeline.NEXT_WEEK, viewValue: 'Next Week' },\r\n { value: Timeline.THIS_MONTH, viewValue: 'This Month' },\r\n { value: Timeline.LAST_MONTH, viewValue: 'Last Month' },\r\n { value: Timeline.NEXT_MONTH, viewValue: 'Next Month' },\r\n { value: Timeline.THIS_QUARTER, viewValue: 'This Quarter' },\r\n { value: Timeline.LAST_QUARTER, viewValue: 'Last Quarter' },\r\n { value: Timeline.THIS_YEAR, viewValue: 'This Year' },\r\n { value: Timeline.LAST_YEAR, viewValue: 'Last Year' },\r\n { value: Timeline.ALL, viewValue: 'All dates' },\r\n ];\r\n @Input() dateFrom: string = 'date_from';\r\n @Input() dateTo: string = 'date_to';\r\n @Input() appearance: any = \"legacy\"\r\n @Input() showClearbutton: boolean = false;\r\n /**\r\n * @deprecated The form input is deprated\r\n */\r\n @Input() form: FormGroup = null;\r\n @Input() labelText: string = 'Select Timeline';\r\n @Input() selectedValue: any;\r\n @Input() touchUi: boolean = true;\r\n @Output() selectedValueChange = new EventEmitter();\r\n @Output() selectionChange = new EventEmitter();\r\n\r\n selectorForm: FormGroup;\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n static nextId = 0;\r\n stateChanges = new Subject<void>();\r\n controlType = 'timeline-filter';\r\n id = `timeline-filter-${TimelineFilterComponent.nextId++}`;\r\n describedBy = '';\r\n\r\n selectedRange: TimelineValue;\r\n @Input() set defaultValue(value: any) {\r\n this.timelineValue.setValue(value);\r\n this.changeTimeline(value);\r\n }\r\n\r\n showCustomDateFields: boolean = false;\r\n\r\n constructor(\r\n formBuilder: FormBuilder,\r\n @Optional() @Self() public ngControl: NgControl,\r\n private datePipe: DatePipe\r\n ) {\r\n this.selectorForm = formBuilder.group({\r\n select_value: [null],\r\n });\r\n\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n @Input()\r\n get required(): boolean { return this._required; }\r\n set required(value: boolean) {\r\n this.selectorForm.get('select_value').setValidators(Validators.required);\r\n this._required = coerceBooleanProperty(value);\r\n this.stateChanges.next();\r\n }\r\n private _required = false;\r\n\r\n @Input()\r\n get disabled(): boolean { return this._disabled; }\r\n set disabled(value: boolean) {\r\n this._disabled = coerceBooleanProperty(value);\r\n this._disabled ? this.selectorForm.disable() : this.selectorForm.enable();\r\n this.stateChanges.next();\r\n }\r\n private _disabled = false;\r\n\r\n @Input()\r\n get value(): any {\r\n if (this.selectorForm.valid) {\r\n return this.selectorForm.value.select_value;\r\n }\r\n return '';\r\n }\r\n set value(data: any) {\r\n this.selectorForm.patchValue({ select_value: data || '' });\r\n this._handleInput();\r\n this.stateChanges.next();\r\n }\r\n\r\n getDateRangeString() {\r\n let str = \"\";\r\n if (this.selectedRange?.show_custom_field) {\r\n if (this.selectedRange?.date_from.toUTCString() != 'Invalid Date') {\r\n str += ' - ' + this.datePipe.transform(this.selectedRange?.date_from?.toUTCString())\r\n }\r\n if (this.selectedRange?.date_to.toUTCString() != 'Invalid Date') {\r\n str += ' - ' + this.datePipe.transform(this.selectedRange?.date_to?.toUTCString())\r\n }\r\n }\r\n return str;\r\n }\r\n\r\n resetFieldValue(field: string) {\r\n this.form.get(field).setValue('');\r\n }\r\n\r\n\r\n getFieldValue(field: string) {\r\n return this.form.get(field).value;\r\n }\r\n\r\n setFieldValue(field: string, value: any) {\r\n this.form.get(field).setValue(value);\r\n }\r\n\r\n changeTimeline(value: any) {\r\n const timeline = calculateTimeline(value);\r\n if (timeline) {\r\n this.setFieldValue(this.dateFrom, timeline.date_from)\r\n this.setFieldValue(this.dateTo, timeline.date_to)\r\n this.showCustomDateFields = timeline.show_custom_field;\r\n }\r\n }\r\n\r\n _handleInput(): void {\r\n if (this.value == 1) {\r\n this.picker.open();\r\n return;\r\n }\r\n const range: TimelineValue = calculateTimeline(this.value);\r\n this.selectedRange = range;\r\n this.onChange(this.value);\r\n this.selectedValueChange.emit(this.selectedValue);\r\n this.selectionChange.emit(range);\r\n }\r\n\r\n dateRangeChange(dateRangeStart: HTMLInputElement, dateRangeEnd: HTMLInputElement) {\r\n const range: TimelineValue = {\r\n date_from : new Date(dateRangeStart.value),\r\n date_to: new Date(dateRangeEnd.value),\r\n show_custom_field: true\r\n }\r\n this.selectedRange = range;\r\n this.onChange(this.value);\r\n this.selectedValueChange.emit(this.selectedValue);\r\n this.selectionChange.emit(range);\r\n }\r\n\r\n onCustomDateChange(event: any) {\r\n }\r\n\r\n setDescribedByIds(ids: string[]) {\r\n this.describedBy = ids.join(' ');\r\n }\r\n\r\n onContainerClick(event: MouseEvent) {\r\n event.stopPropagation();\r\n }\r\n\r\n writeValue(data: any): void {\r\n this.value = data;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n ngOnInit(): void {\r\n console.log(this.form);\r\n\r\n this.timelineValue.valueChanges.\r\n pipe(\r\n debounceTime(100),\r\n distinctUntilChanged(),\r\n untilDestroyed(this)\r\n ).subscribe(value => this.changeTimeline(value));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.stateChanges.complete();\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-loader',\r\n templateUrl: './loader.component.html',\r\n styleUrls: ['./loader.component.scss']\r\n})\r\nexport class LoaderComponent implements OnInit {\r\n\r\n @Input() isLoading = false;\r\n @Input() size = 0.6;\r\n @Input() message: string | undefined;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() { }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { SuccessSnackComponent, ErrorSnackComponent } from './snack.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\n@NgModule({\r\n declarations: [\r\n SuccessSnackComponent,\r\n ErrorSnackComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatSnackBarModule,\r\n MatIconModule\r\n ],\r\n exports: [\r\n SuccessSnackComponent,\r\n ErrorSnackComponent,\r\n ]\r\n})\r\nexport class SnackModule { }\r\n","import { Injectable } from '@angular/core';\r\nimport { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport { CredentialsService } from './credentials.service';\r\nimport { Logger } from './logger.service';\r\n\r\nconst log = new Logger('AuthenticationGuard');\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthenticationGuard implements CanActivate {\r\n\r\n constructor(private router: Router,\r\n private credentialsService: CredentialsService) { }\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\r\n return this.isUserAuthenticated(route, state);\r\n }\r\n\r\n canLoad(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\r\n return this.isUserAuthenticated(route, state);\r\n }\r\n\r\n isUserAuthenticated(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\r\n if (this.credentialsService.isAuthenticated) {\r\n return true;\r\n }\r\n\r\n log.debug('Not authenticated, redirecting and adding redirect url...');\r\n this.router.navigate(['/login'], { queryParams: { redirect: state.url }, replaceUrl: true });\r\n return false;\r\n }\r\n\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { concatMap, map } from 'rxjs/operators';\r\nimport { Credentials, CredentialsService } from './credentials.service';\r\nimport { HttpService } from './http.service';\r\n\r\n/**\r\n * Provides a base for authentication workflow.\r\n * The login/logout methods should be replaced with proper implementation.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthenticationService {\r\n\r\n constructor(private credentialsService: CredentialsService, private http: HttpService) { }\r\n\r\n /**\r\n * Authenticates the user.\r\n * @param context The login parameters.\r\n * @return The user credentials.\r\n */\r\n login(context: any): Observable<Credentials> {\r\n const data = <Credentials>{};\r\n return this.http\r\n .skipToken()\r\n .post('oauth/token', context)\r\n .pipe(\r\n concatMap(async (tokenInfo: any) => {\r\n tokenInfo.expires_in = Date.now() + (tokenInfo.expires_in * 1000);\r\n data.token = tokenInfo;\r\n data.user = {};\r\n this.credentialsService.setCredentials(data, context.remember);\r\n const userInfo: any = await this.http.get('api/user/current').toPromise();\r\n data.user = userInfo?.user;\r\n this.credentialsService.setCredentials(data, context.remember);\r\n return data;\r\n })\r\n )\r\n }\r\n\r\n /**\r\n * Logs out the user and clear credentials.\r\n * @return True if the user was logged out successfully.\r\n */\r\n logout(): Observable<boolean> {\r\n\r\n this.credentialsService.setCredentials();\r\n return of(true);\r\n }\r\n\r\n}\r\n","import { ActivatedRouteSnapshot, DetachedRouteHandle, RouteReuseStrategy } from '@angular/router';\r\nimport { Injectable } from '@angular/core';\r\n\r\n/**\r\n * A route strategy allowing for explicit route reuse.\r\n * Used as a workaround for https://github.com/angular/angular/issues/18374\r\n * To reuse a given route, add `data: { reuse: true }` to the route definition.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RouteReusableStrategy extends RouteReuseStrategy {\r\n\r\n public shouldDetach(route: ActivatedRouteSnapshot): boolean {\r\n return false;\r\n }\r\n\r\n public store(route: ActivatedRouteSnapshot, detachedTree: DetachedRouteHandle | null): void { }\r\n\r\n public shouldAttach(route: ActivatedRouteSnapshot): boolean {\r\n return false;\r\n }\r\n\r\n public retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle | null {\r\n return null;\r\n }\r\n\r\n public shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {\r\n // Reuse the route if the RouteConfig is the same, or if both routes use the\r\n // same component, because the latter can have different RouteConfigs.\r\n return future.routeConfig === curr.routeConfig ||\r\n Boolean(future.routeConfig?.component &&\r\n future.routeConfig?.component === curr.routeConfig?.component);\r\n }\r\n\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Subject, Observable } from 'rxjs';\r\n\r\n/**\r\n * Service used to manage Local Storage\r\n * \r\n * @author Joshua Kissoon\r\n * @since 20190623\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StorageService {\r\n private storageSub = new Subject<any>();\r\n\r\n constructor() {\r\n\r\n }\r\n\r\n watch(): Observable<any> {\r\n return this.storageSub.asObservable();\r\n }\r\n\r\n setItem(key: string, data: any) {\r\n localStorage.setItem(key, data);\r\n this.storageSub.next({ key: key, value: data });\r\n }\r\n\r\n getItem(key: string) {\r\n return localStorage.getItem(key);\r\n }\r\n\r\n removeItem(key: string) {\r\n const data = this.getItem(key);\r\n localStorage.removeItem(key);\r\n this.storageSub.next({ key: key, value: data });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpService } from './http.service';\r\n\r\n/**\r\n * Service that provides a wrapper for retrieving data from the server\r\n * @deprecated use HttpService Instead\r\n * @author Joshua Kissoon\r\n * @since 20170709\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DataManager {\r\n\r\n constructor(private http: HttpService) { }\r\n\r\n /**\r\n * Callback wrapper for the HTTP GET Call\r\n * \r\n * @param urlq The query part of the URL to be sent to the server\r\n * \r\n * @author Joshua Kissoon\r\n * @since 20160826\r\n * @updated 20170711 to add parameters\r\n */\r\n GET(urlq: string, params = {}): any {\r\n return this.http\r\n .get(urlq, { params: params })\r\n .toPromise();\r\n }\r\n\r\n /**\r\n * Callback wrapper for the HTTP POST Call\r\n * \r\n * @param urlq The query part of the URL to be sent to the server\r\n * @param object The object containing the POST data to be sent\r\n * \r\n * @author Joshua Kissoon\r\n * @since 20160826\r\n */\r\n POST(urlq: string, object: any): any {\r\n if (null == object) {\r\n object = { \"blank\": \"blank\" };\r\n }\r\n\r\n return this.http\r\n .post(urlq, object)\r\n .toPromise();\r\n }\r\n\r\n /**\r\n * Callback wrapper for the HTTP POST Call\r\n * \r\n * @param urlq The query part of the URL to be sent to the server\r\n * @param object The object containing the POST data to be sent\r\n * \r\n * @author Joshua Kissoon\r\n * @since 20160826\r\n */\r\n POSTRAW(urlq: string, object: any): any {\r\n if (null == object) {\r\n object = { \"blank\": \"blank\" };\r\n }\r\n\r\n return this.http\r\n .skipHeader()\r\n .post(urlq, object)\r\n .toPromise();\r\n }\r\n\r\n\r\n /**\r\n * Callback wrapper for the HTTP PUT Call\r\n * \r\n * @param urlq The query part of the URL to be sent to the server\r\n * @param object The object containing the PUT data to be sent\r\n * \r\n * @author Joshua Kissoon\r\n * @since 20160826\r\n */\r\n PUT(urlq: string, object: any): any {\r\n if (null == object) {\r\n object = { \"blank\": \"blank\" };\r\n }\r\n\r\n return this.http\r\n .put(urlq, object)\r\n .toPromise();\r\n }\r\n\r\n /**\r\n * Callback wrapper for the HTTP PATCH Call\r\n * \r\n * @param urlq The query part of the URL to be sent to the server\r\n * @param object The object containing the PUT data to be sent\r\n * \r\n * @author Joshua Kissoon\r\n * @since 20161107\r\n */\r\n PATCH(urlq: string, object: any): any {\r\n if (null == object) {\r\n object = { \"blank\": \"blank\" };\r\n }\r\n\r\n return this.http\r\n .patch(urlq, object)\r\n .toPromise();\r\n }\r\n\r\n /**\r\n * Callback wrapper for the HTTP DELETE Call\r\n * \r\n * @param urlq The query part of the URL to be sent to the server\r\n * \r\n * @author Joshua Kissoon\r\n * @since 20160826\r\n */\r\n DELETE(urlq: string): any {\r\n return this.http\r\n .delete(urlq)\r\n .toPromise();\r\n }\r\n\r\n}","import { MatTooltipModule } from '@angular/material/tooltip';\r\n/*\r\n * This module imports and re-exports all Angular Material modules for convenience,\r\n * so only 1 module import is needed in your feature modules.\r\n * See https://material.angular.io/guide/getting-started#step-3-import-the-component-modules.\r\n *\r\n * To optimize your production builds, you should only import the components used in your app.\r\n */\r\n\r\nimport { NgModule } from \"@angular/core\";\r\nimport {\r\n MatCommonModule,\r\n MatLineModule,\r\n MatNativeDateModule,\r\n MatOptionModule,\r\n MatPseudoCheckboxModule,\r\n MatRippleModule\r\n} from \"@angular/material/core\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatCheckboxModule } from \"@angular/material/checkbox\";\r\nimport { MatDialogModule } 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 { MatMenuModule } from \"@angular/material/menu\";\r\nimport { MatProgressSpinnerModule } from \"@angular/material/progress-spinner\";\r\nimport { MatSelectModule } from \"@angular/material/select\";\r\nimport { MatSortModule } from \"@angular/material/sort\";\r\nimport { MatTableModule } from \"@angular/material/table\";\r\nimport { MatCardModule } from \"@angular/material/card\";\r\nimport { MatDividerModule } from \"@angular/material/divider\";\r\nimport { MatChipsModule } from \"@angular/material/chips\";\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatListModule } from '@angular/material/list'\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\n\r\n\r\n@NgModule({\r\n exports: [\r\n MatButtonModule,\r\n MatCheckboxModule,\r\n MatCommonModule,\r\n MatDialogModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatLineModule,\r\n MatMenuModule,\r\n MatNativeDateModule,\r\n MatOptionModule,\r\n MatProgressSpinnerModule,\r\n MatPseudoCheckboxModule,\r\n MatRippleModule,\r\n MatSelectModule,\r\n MatSortModule,\r\n MatTableModule,\r\n MatCardModule,\r\n MatDividerModule,\r\n MatChipsModule,\r\n MatDatepickerModule,\r\n MatListModule,\r\n MatTooltipModule,\r\n MatButtonToggleModule\r\n ]\r\n})\r\nexport class MaterialModule { }\r\n","import { NgModule, Optional, SkipSelf } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HTTP_INTERCEPTORS, HttpClientModule, HttpClient } from '@angular/common/http';\r\nimport { RouteReuseStrategy, RouterModule } from '@angular/router';\r\n\r\nimport { RouteReusableStrategy } from './route-reusable-strategy';\r\nimport { ApiPrefixInterceptor } from './api-prefix.interceptor';\r\nimport { ErrorHandlerInterceptor } from './error-handler.interceptor';\r\nimport { HttpService } from './http.service';\r\nimport { TokenInterceptor } from './token.interceptor';\r\nimport { CacheInterceptor } from './cache.interceptor';\r\nimport { SnackModule } from './snack/snack.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n HttpClientModule,\r\n RouterModule,\r\n SnackModule\r\n ],\r\n providers: [\r\n {\r\n provide: HttpClient,\r\n useClass: HttpService\r\n },\r\n {\r\n provide: RouteReuseStrategy,\r\n useClass: RouteReusableStrategy\r\n }\r\n ],\r\n exports: [\r\n SnackModule\r\n ]\r\n})\r\nexport class CoreModule {\r\n\r\n constructor(@Optional() @SkipSelf() parentModule: CoreModule) {\r\n // Import guard\r\n if (parentModule) {\r\n throw new Error(`${parentModule} has already been loaded. Import Core module in the root module only.`);\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ActionPopupComponent } from './action-popup.component';\r\nimport { MaterialModule } from '../material.module';\r\n\r\n@NgModule({\r\n imports: [\r\n FlexLayoutModule,\r\n CommonModule,\r\n MaterialModule\r\n ],\r\n declarations: [\r\n ActionPopupComponent\r\n ],\r\n exports: [\r\n ActionPopupComponent\r\n ],\r\n entryComponents: [\r\n ActionPopupComponent\r\n ]\r\n})\r\nexport class ActionPopupModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { DataTableComponent } from './data-table.component';\r\nimport { InfiniteScrollModule } from \"ngx-infinite-scroll\";\r\nimport { MaterialModule } from '../material.module';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n FlexLayoutModule,\r\n CommonModule,\r\n InfiniteScrollModule,\r\n MaterialModule\r\n ],\r\n declarations: [\r\n DataTableComponent\r\n ],\r\n exports: [\r\n DataTableComponent\r\n ]\r\n})\r\nexport class DataTableModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { DocumentViewerComponent } from './document-viewer.component';\r\nimport { NgxDocViewerModule } from 'ngx-doc-viewer';\r\nimport { MaterialModule } from '../material.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FlexLayoutModule,\r\n NgxDocViewerModule,\r\n MaterialModule\r\n ],\r\n declarations: [\r\n DocumentViewerComponent\r\n ],\r\n exports: [\r\n DocumentViewerComponent\r\n ]\r\n})\r\nexport class DocumentViewerModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FileDropperComponent } from './file-dropper.component';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MaterialModule } from '../material.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FlexLayoutModule,\r\n MaterialModule\r\n ],\r\n declarations: [\r\n FileDropperComponent\r\n ],\r\n exports: [FileDropperComponent]\r\n})\r\nexport class FileDropperModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { EntityFileFormComponent } from './entity-file-form/entity-file-form.component';\r\nimport { EntityFilesViewAllComponent } from './entity-files-view-all.component';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { FileDropperModule } from '../file-dropper/file-dropper.module';\r\nimport { DocumentViewerModule } from '../document-viewer/document-viewer.module';\r\nimport { ActionPopupModule } from '../action-popup/action-popup.module';\r\nimport { MaterialModule } from '../material.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [EntityFileFormComponent, EntityFilesViewAllComponent],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n FlexLayoutModule,\r\n FileDropperModule,\r\n DocumentViewerModule,\r\n InfiniteScrollModule,\r\n ActionPopupModule,\r\n MaterialModule\r\n ],\r\n exports: [\r\n EntityFilesViewAllComponent\r\n ],\r\n entryComponents: [EntityFileFormComponent]\r\n})\r\nexport class EntityFilesViewAllModule { }\r\n","import { Component, OnInit, Input } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"app-read-more\",\r\n templateUrl: \"./read-more.component.html\",\r\n styleUrls: [\"./read-more.component.scss\"]\r\n})\r\nexport class ReadMoreComponent implements OnInit {\r\n @Input() text: string;\r\n @Input() maxLength: number = 100;\r\n currentText: string;\r\n hideToggle: boolean = true;\r\n\r\n isCollapsed: boolean = true;\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {\r\n this.determineView();\r\n }\r\n\r\n toggleView() {\r\n this.isCollapsed = !this.isCollapsed;\r\n this.determineView();\r\n }\r\n\r\n determineView() {\r\n if (!this.text || this.text.length <= this.maxLength) {\r\n this.currentText = this.text;\r\n this.isCollapsed = false;\r\n this.hideToggle = true;\r\n return;\r\n }\r\n this.hideToggle = false;\r\n if (this.isCollapsed == true) {\r\n this.currentText = this.text.substring(0, this.maxLength) + \"...\";\r\n } else if (this.isCollapsed == false) {\r\n this.currentText = this.text;\r\n }\r\n }\r\n}\r\n","import { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MaterialModule } from '../material.module';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReadMoreComponent } from './read-more.component';\r\n\r\n@NgModule({\r\n declarations: [ReadMoreComponent],\r\n imports: [\r\n CommonModule,\r\n MaterialModule,\r\n FlexLayoutModule\r\n ],\r\n exports: [\r\n ReadMoreComponent\r\n ]\r\n})\r\nexport class ReadMoreModule { }","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NoteListComponent } from './note-list/note-list.component';\r\nimport { NoteFormComponent } from './note-form/note-form.component';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ActionPopupModule } from '../action-popup/action-popup.module';\r\nimport { MaterialModule } from '../material.module';\r\nimport { CommentFormComponent } from './comment-form/comment-form.component';\r\nimport { ReadMoreModule } from '../read-more/read-more.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n NoteListComponent,\r\n NoteFormComponent,\r\n CommentFormComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n InfiniteScrollModule,\r\n FlexLayoutModule,\r\n ActionPopupModule,\r\n MaterialModule,\r\n ReadMoreModule\r\n ],\r\n exports: [\r\n NoteListComponent\r\n ],\r\n entryComponents: [NoteFormComponent]\r\n})\r\nexport class NoteModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SearchableSelectorComponent } from './searchable-selector.component';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatSelectInfiniteScrollDirective } from './mat-select-infinite-scroll.directive';\r\nimport { MaterialModule } from '../material.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FlexLayoutModule,\r\n MaterialModule\r\n ],\r\n declarations: [\r\n SearchableSelectorComponent,\r\n MatSelectInfiniteScrollDirective\r\n ],\r\n exports: [\r\n SearchableSelectorComponent,\r\n MatSelectInfiniteScrollDirective\r\n ]\r\n})\r\nexport class SearchableSelectorModule { }\r\n","import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n/* Selectors */\r\nimport { NumItemsSelector } from './num-items-selector.component';\r\nimport { NumberSelector } from './number-selector.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ],\r\n declarations: [\r\n NumItemsSelector, NumberSelector,\r\n ],\r\n exports: [NumItemsSelector, NumberSelector]\r\n})\r\nexport class UtilityModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class TimelineFilterRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { TimelineFilterRoutingModule } from './timeline-filter-routing.module';\r\nimport { TimelineFilterComponent } from './timeline-filter.component';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MaterialModule } from '../material.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [TimelineFilterComponent],\r\n imports: [\r\n CommonModule,\r\n TimelineFilterRoutingModule,\r\n FlexLayoutModule,\r\n MaterialModule,\r\n ReactiveFormsModule\r\n ],\r\n exports: [TimelineFilterComponent]\r\n})\r\nexport class TimelineFilterModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LoaderComponent } from './loader.component';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\n\r\n@NgModule({\r\n declarations: [\r\n LoaderComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatProgressSpinnerModule\r\n ],\r\n exports: [\r\n LoaderComponent\r\n ]\r\n})\r\nexport class LoaderModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class EmailSubscriptionRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { EmailSubscriptionRoutingModule } from './email-subscription-routing.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n EmailSubscriptionRoutingModule\r\n ]\r\n})\r\nexport class EmailSubscriptionModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class EmailSubscriptionUserRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { EmailSubscriptionUserRoutingModule } from './email-subscription-user-routing.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n EmailSubscriptionUserRoutingModule\r\n ]\r\n})\r\nexport class EmailSubscriptionUserModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class EmailSubscriptionUserFormRoutingModule { }\r\n","\r\nimport { Component, Inject, OnInit, TemplateRef } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { AlertService } from '../../../core/alert.service';\r\nimport { FormValidatorService } from '../../../core/form-validator.service';\r\nimport { HttpService } from '../../../core/http.service';\r\nimport { Logger } from '../../../core/logger.service';\r\n\r\nconst log = new Logger('EmailSubscriptionUser Form');\r\n\r\nconst errorMessages: any = {\r\n user_id: {\r\n required: \"User is required\"\r\n },\r\n email_type_id: {\r\n required: \"Email Type is required\"\r\n },\r\n};\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-email-subscription-user-form',\r\n templateUrl: './email-subscription-user-form.component.html',\r\n styleUrls: ['./email-subscription-user-form.component.scss']\r\n})\r\nexport class EmailSubscriptionUserFormComponent implements OnInit {\r\n\r\n updateMode: boolean;\r\n esUserFormGroup: FormGroup;\r\n esUserFormFirstAttempt: boolean;\r\n esUser: any;\r\n isSubmitLoading: boolean;\r\n selectedUser: any;\r\n selectedType: any;\r\n\r\n constructor(private fb: FormBuilder,\r\n private formValidatorService: FormValidatorService,\r\n private alertService: AlertService,\r\n public dialogRef: MatDialogRef<EmailSubscriptionUserFormComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private http: HttpService\r\n ) {\r\n this.createForm();\r\n }\r\n\r\n /** Method to create a form **/\r\n private createForm() {\r\n\r\n //TODO: Finialize and add more validations.\r\n this.esUserFormGroup = this.fb.group({\r\n id: [''],\r\n user_id: ['', Validators.required],\r\n email_type_id: ['', Validators.required],\r\n });\r\n }\r\n\r\n\r\n ngOnInit() {\r\n if (this.data?.esUser?.id) {\r\n this.esUser = this.data.esUser;\r\n this.updateMode = true;\r\n this.selectedType = this.esUser?.email_type;\r\n this.selectedUser = this.esUser?.user;\r\n this.esUserFormGroup.patchValue(this.esUser);\r\n }\r\n\r\n }\r\n\r\n //Method to trigger login\r\n submit() {\r\n this.esUserFormGroup.markAllAsTouched();\r\n this.esUserFormFirstAttempt = true;\r\n if (this.esUserFormGroup.valid) {\r\n this.isSubmitLoading = true;\r\n const model = this.esUserFormGroup.value;\r\n (\r\n this.updateMode ?\r\n this.http.put(`api/email-subscription-users/${model?.id}`, model) :\r\n this.http.post(`api/email-subscription-users`, model)\r\n )\r\n .pipe(\r\n finalize(() => this.isSubmitLoading = false),\r\n untilDestroyed(this)\r\n ).subscribe(result => {\r\n this.alertService.addAlert(\"Subscription saved successfully\", \"success\");\r\n this.dialogRef.close(result);\r\n });\r\n }\r\n }\r\n\r\n\r\n cancel() {\r\n this.dialogRef.close();\r\n }\r\n\r\n /**Method to evaluate form fields*/\r\n isFieldValid(field: string) {\r\n return this.formValidatorService.isFieldValid(field, this.esUserFormGroup, this.esUserFormFirstAttempt);\r\n }\r\n\r\n /**Method to find error in form fields*/\r\n getErrorMessage(field: string) {\r\n return this.formValidatorService.getErrorMessage(field, this.esUserFormGroup, errorMessages);\r\n }\r\n\r\n ngOnDestroy() {\r\n // Needed for automatic unsubscribe with untilDestroyed\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { EmailSubscriptionUserFormRoutingModule } from './email-subscription-user-form-routing.module';\r\nimport { EmailSubscriptionUserFormComponent } from './email-subscription-user-form.component';\r\nimport { SearchableSelectorModule } from '../../../searchable-selector/searchable-selector.module';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MaterialModule } from '../../../material.module';\r\nimport { LoaderModule } from '../../../loader/loader.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [EmailSubscriptionUserFormComponent],\r\n imports: [\r\n CommonModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n ReactiveFormsModule,\r\n SearchableSelectorModule,\r\n EmailSubscriptionUserFormRoutingModule,\r\n LoaderModule\r\n ],\r\n entryComponents: [EmailSubscriptionUserFormComponent]\r\n})\r\nexport class EmailSubscriptionUserFormModule { }\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\n\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { FormControl } from '@angular/forms';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { EmailSubscriptionUserFormComponent } from '../email-subscription-user-form/email-subscription-user-form.component';\r\nimport { Router } from '@angular/router';\r\nimport { Logger } from '../../../core/logger.service';\r\nimport { PageEvent } from '../../../data-table/data-table.model';\r\nimport { HttpService } from '../../../core/http.service';\r\nimport { ActionPopupComponent } from '../../../action-popup/action-popup.component';\r\nimport { ActionPopup } from '../../../action-popup/action-popup.model';\r\n\r\nconst log = new Logger('EmailSubscriptionUser list');\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-email-subscription-user-list',\r\n templateUrl: './email-subscription-user-list.component.html',\r\n styleUrls: ['./email-subscription-user-list.component.scss']\r\n})\r\nexport class EmailSubscriptionUserListComponent implements OnInit {\r\n\r\n esUserList: any[] = [];\r\n pageEvent: PageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n filters: any = {\r\n sort_by: 'created_at|desc',\r\n };\r\n\r\n\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n\r\n displayColumns: FormControl = new FormControl(['index', 'user.name', 'email_type.title', 'creator.name', 'created_at', 'actions']);\r\n displayedColumns: any[] = [];\r\n availableDisplayColumns: any[] = [\r\n { order: 1, value: 'index', name: 'Index' },\r\n { order: 2, value: 'user.name', name: 'User' },\r\n { order: 3, value: 'email_type.title', name: 'Email Type' },\r\n { order: 4, value: 'creator.name', name: 'Creator' },\r\n { order: 5, value: 'actions', name: 'Actions' }\r\n ];\r\n\r\n constructor(\r\n private dialog: MatDialog,\r\n private http: HttpService,\r\n private router: Router,\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.displayedColumns = this.displayColumns.value;\r\n this.initializeData();\r\n\r\n if (this.sort) {\r\n this.sort.sortChange.pipe(untilDestroyed(this))\r\n .subscribe((value: any) => {\r\n this.changeSort(value);\r\n })\r\n }\r\n }\r\n\r\n get selectedColumns(): string[] {\r\n return this.availableDisplayColumns\r\n .filter(col => (this.displayColumns.value as any).some((x: any) => x === col.value))\r\n .sort((a, b) => (a.order > b.order) ? 1 : ((b.order > a.order) ? -1 : 0))\r\n .map(col => col.value);\r\n }\r\n\r\n columnsChange() {\r\n this.displayedColumns = this.selectedColumns;\r\n }\r\n\r\n\r\n initializeData() {\r\n this.http.get(`api/email-subscription-users`, { params: { ...this.filters, ...this.pageEvent } })\r\n .pipe(untilDestroyed(this))\r\n .subscribe((result: any) => {\r\n this.esUserList = this.esUserList.concat(result.data);\r\n this.pageEvent.page = result.current_page;\r\n this.pageEvent.lastPage = result.last_page;\r\n });\r\n }\r\n\r\n filterChange(event: any) {\r\n this.filters = {\r\n ...this.filters,\r\n ...event\r\n };\r\n this.reload();\r\n }\r\n\r\n addEmailSubscriptionUser() {\r\n const dialogRef = this.dialog.open(EmailSubscriptionUserFormComponent, {\r\n width: '800px',\r\n autoFocus: false,\r\n data: {} // Any data passed here will be injected into the model\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result: any) => {\r\n if (result) {\r\n log.debug(result);\r\n this.reload();\r\n }\r\n });\r\n }\r\n\r\n\r\n editEmailSubscriptionUser(event: any, esUser: any) {\r\n event.stopPropagation();\r\n const dialogRef = this.dialog.open(EmailSubscriptionUserFormComponent, {\r\n width: '800px',\r\n autoFocus: false,\r\n data: {\r\n esUser: esUser\r\n } // Any data passed here will be injected into the model\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result: any) => {\r\n if (result) {\r\n log.debug(result);\r\n this.reload();\r\n }\r\n });\r\n }\r\n\r\n deleteEmailSubscriptionUser(event: any, esUser: any) {\r\n event.stopPropagation();\r\n const dialogRef = this.dialog.open(ActionPopupComponent, {\r\n width: '400px',\r\n data: <ActionPopup>{\r\n title: 'Delete Subscription',\r\n message: `Are you sure to proceed delete the esUser ${esUser.name}?`\r\n },\r\n autoFocus: false\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n //Action confirmed\r\n this.http.delete(`api/email-subscription-users/${esUser?.id}`)\r\n .pipe(untilDestroyed(this))\r\n .subscribe((result: any) => {\r\n this.esUserList = this.esUserList.filter(x => x.id !== esUser.id);\r\n });\r\n }\r\n });\r\n }\r\n\r\n onScroll() {\r\n if (this.pageEvent.lastPage > this.pageEvent.page) {\r\n this.pageEvent.page += 1;\r\n this.initializeData();\r\n }\r\n }\r\n\r\n changeSort(event: any) {\r\n if (event.direction) {\r\n this.filters.sort_by = `${event.active}|${event.direction}`;\r\n this.reload();\r\n }\r\n }\r\n\r\n reload() {\r\n this.esUserList = [];\r\n this.pageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n this.initializeData();\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n //Until destroyed uses it\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { AuthenticationGuard } from '../../../core/authentication.guard';\r\nimport { EmailSubscriptionUserListComponent } from './email-subscription-user-list.component';\r\n\r\nexport const esulr = {\r\n title: 'Email Subscription Users',\r\n permissions: {\r\n only: ['app_admin'],\r\n redirectTo: '/'\r\n }\r\n};\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: EmailSubscriptionUserListComponent,\r\n canActivate: [AuthenticationGuard],\r\n data: esulr\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class EmailSubscriptionUserListRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class EmailSubscriptionUserListFilterRoutingModule { }\r\n","import { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';\r\nimport { FormGroup, FormBuilder } from '@angular/forms';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-email-subscription-user-list-filter',\r\n templateUrl: './email-subscription-user-list-filter.component.html',\r\n styleUrls: ['./email-subscription-user-list-filter.component.scss']\r\n})\r\nexport class EmailSubscriptionUserListFilterComponent implements OnInit {\r\n\r\n esUserFilterForm: FormGroup;\r\n\r\n @Output() valueChange = new EventEmitter();\r\n\r\n constructor(private fb: FormBuilder) {\r\n this.createForm();\r\n }\r\n\r\n private createForm() {\r\n\r\n //TODO: Finialize and add more validations.\r\n this.esUserFilterForm = this.fb.group({\r\n user_id: [''],\r\n email_type_id: [''],\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n this.esUserFilterForm.valueChanges.pipe(\r\n debounceTime(500),\r\n distinctUntilChanged(),\r\n untilDestroyed(this)\r\n ).subscribe(value => {\r\n this.valueChange.emit(value);\r\n })\r\n }\r\n\r\n\r\n resetFieldValue(field: string) {\r\n this.esUserFilterForm.get(field).setValue('');\r\n }\r\n\r\n getFieldValue(field: string) {\r\n return this.esUserFilterForm.get(field).value;\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { EmailSubscriptionUserListFilterRoutingModule } from './email-subscription-user-list-filter-routing.module';\r\nimport { EmailSubscriptionUserListFilterComponent } from './email-subscription-user-list-filter.component';\r\nimport { MaterialModule } from '../../../material.module';\r\nimport { SearchableSelectorModule } from '../../../searchable-selector/searchable-selector.module';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\n\r\n\r\n@NgModule({\r\n declarations: [EmailSubscriptionUserListFilterComponent],\r\n imports: [\r\n CommonModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n ReactiveFormsModule,\r\n SearchableSelectorModule,\r\n EmailSubscriptionUserListFilterRoutingModule\r\n ],\r\n exports: [EmailSubscriptionUserListFilterComponent]\r\n})\r\nexport class EmailSubscriptionUserListFilterModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { EmailSubscriptionUserListRoutingModule } from './email-subscription-user-list-routing.module';\r\nimport { EmailSubscriptionUserListComponent } from './email-subscription-user-list.component';\r\nimport { EmailSubscriptionUserListFilterModule } from '../email-subscription-user-list-filter/email-subscription-user-list-filter.module';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { EmailSubscriptionUserFormModule } from '../email-subscription-user-form/email-subscription-user-form.module';\r\nimport { MaterialModule } from '../../../material.module';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\n\r\n\r\n@NgModule({\r\n declarations: [EmailSubscriptionUserListComponent],\r\n imports: [\r\n CommonModule,\r\n InfiniteScrollModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n ReactiveFormsModule,\r\n EmailSubscriptionUserListRoutingModule,\r\n EmailSubscriptionUserFormModule,\r\n EmailSubscriptionUserListFilterModule\r\n ],\r\n exports: [EmailSubscriptionUserListComponent]\r\n})\r\nexport class EmailSubscriptionUserListModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\n\r\nexport class EmailSubscriptionTypeRoutingModule { }","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { EmailSubscriptionTypeRoutingModule } from './email-subscription-type-routing.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n EmailSubscriptionTypeRoutingModule\r\n ]\r\n})\r\nexport class EmailSubscriptionTypeModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class EmailSubscriptionTypeFormRoutingModule { }\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { AlertService } from '../../../core/alert.service';\r\nimport { FormValidatorService } from '../../../core/form-validator.service';\r\nimport { HttpService } from '../../../core/http.service';\r\n\r\nconst errorMessages: any = {\r\n title: {\r\n required: \"Title is required\"\r\n },\r\n code: {\r\n required: \"Code is required\"\r\n },\r\n frequency_id: {\r\n required: \"Frequency is required\"\r\n },\r\n};\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-email-subscription-type-form',\r\n templateUrl: './email-subscription-type-form.component.html',\r\n styleUrls: ['./email-subscription-type-form.component.scss']\r\n})\r\nexport class EmailSubscriptionTypeFormComponent implements OnInit {\r\n\r\n updateMode: boolean;\r\n emailSubscriptionTypeFormGroup: FormGroup;\r\n emailSubscriptionTypeFormFirstAttempt: boolean;\r\n emailSubscriptionType: any;\r\n selectedFrequency: any;\r\n isLoading: boolean;\r\n isSubmitLoading: boolean;\r\n\r\n constructor(private fb: FormBuilder,\r\n private formValidatorService: FormValidatorService,\r\n private alertService: AlertService,\r\n public dialogRef: MatDialogRef<EmailSubscriptionTypeFormComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private http: HttpService\r\n ) {\r\n this.createForm();\r\n }\r\n\r\n /** Method to create a form **/\r\n private createForm() {\r\n\r\n //TODO: Finialize and add more validations.\r\n this.emailSubscriptionTypeFormGroup = this.fb.group({\r\n id: [''],\r\n title: ['', Validators.compose([Validators.required])],\r\n code: ['', Validators.compose([Validators.required])],\r\n frequency_id: ['', Validators.required],\r\n description: [''],\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n if (this.data.emailSubscriptionType?.id) {\r\n this.isLoading = true;\r\n this.emailSubscriptionType = this.data?.emailSubscriptionType;\r\n this.updateMode = true;\r\n this.selectedFrequency = this.emailSubscriptionType?.frequency || {};\r\n this.emailSubscriptionTypeFormGroup.patchValue(this.emailSubscriptionType);\r\n }\r\n }\r\n\r\n //Method to trigger login\r\n submit() {\r\n this.emailSubscriptionTypeFormGroup.markAllAsTouched();\r\n this.emailSubscriptionTypeFormFirstAttempt = true;\r\n if (this.emailSubscriptionTypeFormGroup.valid) {\r\n this.isSubmitLoading = true;\r\n const model = this.emailSubscriptionTypeFormGroup.value;\r\n (\r\n this.updateMode ?\r\n this.http.put(`api/email-subscription-types/${model?.id}`, model) :\r\n this.http.post(`api/email-subscription-types`, model)\r\n )\r\n .pipe(\r\n finalize(() => this.isSubmitLoading = false),\r\n untilDestroyed(this)\r\n ).subscribe(result => {\r\n this.alertService.addAlert(\"Email Type saved successfully\", \"success\");\r\n this.dialogRef.close(result);\r\n });\r\n }\r\n }\r\n\r\n\r\n cancel() {\r\n this.dialogRef.close();\r\n }\r\n\r\n\r\n /**Method to evaluate form fields*/\r\n isFieldValid(field: string) {\r\n return this.formValidatorService.isFieldValid(field, this.emailSubscriptionTypeFormGroup, this.emailSubscriptionTypeFormFirstAttempt);\r\n }\r\n\r\n /**Method to find error in form fields*/\r\n getErrorMessage(field: string) {\r\n return this.formValidatorService.getErrorMessage(field, this.emailSubscriptionTypeFormGroup, errorMessages);\r\n }\r\n\r\n ngOnDestroy() {\r\n // Needed for automatic unsubscribe with untilDestroyed\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { EmailSubscriptionTypeFormRoutingModule } from './email-subscription-type-form-routing.module';\r\nimport { EmailSubscriptionTypeFormComponent } from './email-subscription-type-form.component';\r\nimport { SearchableSelectorModule } from '../../../searchable-selector/searchable-selector.module';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MaterialModule } from '../../../material.module';\r\nimport { LoaderModule } from '../../../loader/loader.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [EmailSubscriptionTypeFormComponent],\r\n imports: [\r\n CommonModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n ReactiveFormsModule,\r\n SearchableSelectorModule,\r\n EmailSubscriptionTypeFormRoutingModule,\r\n LoaderModule\r\n ],\r\n exports: [EmailSubscriptionTypeFormComponent],\r\n entryComponents: [EmailSubscriptionTypeFormComponent]\r\n})\r\nexport class EmailSubscriptionTypeFormModule { }\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { FormControl } from '@angular/forms';\r\nimport { distinctUntilChanged, debounceTime } from 'rxjs/operators';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { EmailSubscriptionTypeFormComponent } from '../email-subscription-type-form/email-subscription-type-form.component';\r\nimport { PageEvent } from '../../../data-table/data-table.model';\r\nimport { HttpService } from '../../../core/http.service';\r\nimport { ActionPopupComponent } from '../../../action-popup/action-popup.component';\r\nimport { ActionPopup } from '../../../action-popup/action-popup.model';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-email-subscription-type-list',\r\n templateUrl: './email-subscription-type-list.component.html',\r\n styleUrls: ['./email-subscription-type-list.component.scss']\r\n})\r\nexport class EmailSubscriptionTypeListComponent implements OnInit {\r\n\r\n emailSubscriptionTypeList: any[] = [];\r\n pageEvent: PageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n filters: any = {\r\n sort_by: 'created_at|desc',\r\n isLoadRelations: true,\r\n relations: ['frequency']\r\n };\r\n search: FormControl = new FormControl('');\r\n\r\n\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n\r\n displayColumns: FormControl = new FormControl(['index', 'title', 'frequency.title', 'description', 'actions']);\r\n displayedColumns: any[] = [];\r\n availableDisplayColumns: any[] = [\r\n { order: 1, value: 'index', name: 'Index' },\r\n { order: 2, value: 'title', name: 'Title' },\r\n { order: 3, value: 'code', name: 'Code' },\r\n { order: 4, value: 'frequency.title', name: 'Frequency' },\r\n { order: 5, value: 'description', name: 'Description' },\r\n { order: 6, value: 'actions', name: 'Actions' }\r\n ];\r\n\r\n constructor(\r\n private dialog: MatDialog,\r\n private http: HttpService,\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.displayedColumns = this.displayColumns.value;\r\n this.initializeData();\r\n this.search.valueChanges.pipe(\r\n debounceTime(500),\r\n distinctUntilChanged(),\r\n untilDestroyed(this)\r\n ).subscribe(value => {\r\n this.filters.search = value;\r\n this.reload();\r\n });\r\n\r\n if (this.sort) {\r\n this.sort.sortChange.pipe(untilDestroyed(this))\r\n .subscribe((value: any) => {\r\n this.changeSort(value);\r\n })\r\n }\r\n }\r\n\r\n get selectedColumns(): string[] {\r\n return this.availableDisplayColumns\r\n .filter(col => (this.displayColumns.value as any).some((x: any) => x === col.value))\r\n .sort((a, b) => (a.order > b.order) ? 1 : ((b.order > a.order) ? -1 : 0))\r\n .map(col => col.value);\r\n }\r\n\r\n columnsChange() {\r\n this.displayedColumns = this.selectedColumns;\r\n }\r\n\r\n\r\n initializeData() {\r\n this.http.get(`api/email-subscription-types`, { params: { ...this.filters, ...this.pageEvent } })\r\n .pipe(untilDestroyed(this))\r\n .subscribe((result: any) => {\r\n this.emailSubscriptionTypeList = this.emailSubscriptionTypeList.concat(result.data);\r\n this.pageEvent.page = result.current_page;\r\n this.pageEvent.lastPage = result.last_page;\r\n });\r\n }\r\n\r\n addEmailSubscriptionType() {\r\n const dialogRef = this.dialog.open(EmailSubscriptionTypeFormComponent, {\r\n width: '400px',\r\n autoFocus: false,\r\n data: {} // Any data passed here will be injected into the model\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result: any) => {\r\n if (result) {\r\n this.reload();\r\n }\r\n });\r\n }\r\n\r\n\r\n editEmailSubscriptionType(event: any, emailSubscriptionType: any) {\r\n event.stopPropagation();\r\n const dialogRef = this.dialog.open(EmailSubscriptionTypeFormComponent, {\r\n width: '400px',\r\n autoFocus: false,\r\n data: {\r\n emailSubscriptionType: emailSubscriptionType\r\n } // Any data passed here will be injected into the model\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result: any) => {\r\n if (result) {\r\n this.reload();\r\n }\r\n });\r\n }\r\n\r\n deleteEmailSubscriptionType(event: any, emailSubscriptionType: any) {\r\n event.stopPropagation();\r\n const dialogRef = this.dialog.open(ActionPopupComponent, {\r\n width: '400px',\r\n data: <ActionPopup>{\r\n title: 'Delete Email Type',\r\n message: `Are you sure to proceed delete the Email Type ${emailSubscriptionType.title}?`\r\n },\r\n autoFocus: false\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n //Action confirmed\r\n this.http.delete(`api/email-subscription-types/${emailSubscriptionType?.id}`)\r\n .pipe(untilDestroyed(this))\r\n .subscribe((result: any) => {\r\n this.emailSubscriptionTypeList = this.emailSubscriptionTypeList.filter(x => x.id !== emailSubscriptionType.id);\r\n });\r\n }\r\n });\r\n }\r\n\r\n onScroll() {\r\n if (this.pageEvent.lastPage > this.pageEvent.page) {\r\n this.pageEvent.page += 1;\r\n this.initializeData();\r\n }\r\n }\r\n\r\n changeSort(event: any) {\r\n if (event.direction) {\r\n this.filters.sort_by = `${event.active}|${event.direction}`;\r\n this.reload();\r\n }\r\n }\r\n\r\n reload() {\r\n this.emailSubscriptionTypeList = [];\r\n this.pageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n this.initializeData();\r\n }\r\n\r\n ngOnDestroy() {\r\n //Until destroyed uses it\r\n }\r\n\r\n}","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { AuthenticationGuard } from '../../../core/authentication.guard';\r\n\r\nimport { EmailSubscriptionTypeListComponent } from './email-subscription-type-list.component';\r\n\r\nexport const estlr = {\r\n title: 'Email Subscription Type',\r\n permissions: {\r\n only: ['client_admin'],\r\n redirectTo: '/'\r\n }\r\n};\r\n\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: EmailSubscriptionTypeListComponent,\r\n canActivate: [AuthenticationGuard],\r\n data: estlr\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class EmailSubscriptionTypeListRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { EmailSubscriptionTypeListRoutingModule } from './email-subscription-type-list-routing.module';\r\nimport { EmailSubscriptionTypeListComponent } from './email-subscription-type-list.component';\r\nimport { EmailSubscriptionTypeFormModule } from '../email-subscription-type-form/email-subscription-type-form.module';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MaterialModule } from '../../../material.module';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\n\r\n\r\n@NgModule({\r\n declarations: [EmailSubscriptionTypeListComponent],\r\n imports: [\r\n CommonModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n ReactiveFormsModule,\r\n InfiniteScrollModule,\r\n EmailSubscriptionTypeFormModule,\r\n EmailSubscriptionTypeListRoutingModule\r\n ],\r\n exports: [EmailSubscriptionTypeListComponent]\r\n})\r\nexport class EmailSubscriptionTypeListModule { }\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { HttpService } from '../../core/http.service';\r\nimport { PageEvent } from '../../data-table/data-table.model';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-email-subscription-for-user',\r\n templateUrl: './email-subscription-for-user.component.html',\r\n styleUrls: ['./email-subscription-for-user.component.scss']\r\n})\r\nexport class EmailSubscriptionForUserComponent implements OnInit {\r\n\r\n subscriptions: any[] = [];\r\n pageEvent: PageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n filters: any = {\r\n sort_by: 'created_at|desc',\r\n isLoadRelations: true,\r\n relations: 'frequency,currentUserSubscription'\r\n };\r\n\r\n constructor(\r\n private http: HttpService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.fetchSubscriptions();\r\n }\r\n\r\n fetchSubscriptions() {\r\n this.http.get(`api/email-subscription-types`, { params: { ...this.filters, ...this.pageEvent } })\r\n .pipe(untilDestroyed(this))\r\n .subscribe((result: any) => {\r\n this.subscriptions = this.subscriptions.concat(result.data);\r\n this.pageEvent.page = result.current_page;\r\n this.pageEvent.lastPage = result.last_page;\r\n });\r\n }\r\n\r\n onScroll() {\r\n if (this.pageEvent.lastPage > this.pageEvent.page) {\r\n this.pageEvent.page += 1;\r\n this.fetchSubscriptions();\r\n }\r\n }\r\n\r\n subscribe(sub: any) {\r\n this.http.post(`api/email-subscription-for-user`, { email_type_id: sub?.id })\r\n .pipe(untilDestroyed(this))\r\n .subscribe((result: any) => {\r\n sub.current_user_subscription = result?.item;\r\n });\r\n }\r\n\r\n unsubscribe(sub: any) {\r\n this.http.delete(`api/email-subscription-users/${sub?.current_user_subscription?.id}`)\r\n .pipe(untilDestroyed(this))\r\n .subscribe((_: any) => {\r\n sub.current_user_subscription = null;\r\n });\r\n }\r\n\r\n\r\n reload() {\r\n this.subscriptions = [];\r\n this.pageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n this.fetchSubscriptions();\r\n }\r\n\r\n ngOnDestroy() {\r\n //Until destroyed uses it\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { AuthenticationGuard } from '../../core/authentication.guard';\r\nimport { EmailSubscriptionForUserComponent } from './email-subscription-for-user.component';\r\n\r\nexport const esfur = {\r\n permissions: {\r\n only: ['client_admin']\r\n }\r\n};\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: EmailSubscriptionForUserComponent,\r\n canActivate: [AuthenticationGuard],\r\n data: esfur\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class EmailSubscriptionForUserRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { EmailSubscriptionForUserRoutingModule } from './email-subscription-for-user-routing.module';\r\nimport { EmailSubscriptionForUserComponent } from './email-subscription-for-user.component';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MaterialModule } from '../../material.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [EmailSubscriptionForUserComponent],\r\n imports: [\r\n CommonModule,\r\n InfiniteScrollModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n EmailSubscriptionForUserRoutingModule\r\n ],\r\n exports: [EmailSubscriptionForUserComponent]\r\n})\r\nexport class EmailSubscriptionForUserModule { }\r\n","import { HttpService } from '../core/http.service';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TechlifyUpdateService {\r\n\r\n constructor(private http: HttpService) { }\r\n\r\n getTechlifyUpdates(filters: any) {\r\n return this.http.get(`api/techlify-updates`, { params: filters }).toPromise();\r\n }\r\n\r\n createTechlifyUpdate(techlifyUpdate: any) {\r\n return this.http.post(`api/techlify-updates`, techlifyUpdate).toPromise();\r\n }\r\n\r\n updateTechlifyUpdate(techlifyUpdate: any) {\r\n return this.http.put(`api/techlify-updates/${techlifyUpdate.id}`, techlifyUpdate).toPromise();\r\n }\r\n\r\n deleteTechlifyUpdate(techlifyUpdateId: any) {\r\n return this.http.delete(`api/techlify-updates/${techlifyUpdateId}`).toPromise();\r\n }\r\n\r\n getTechlifyUpdate(techlifyUpdateId: any) {\r\n return this.http.get(`api/techlify-updates/${techlifyUpdateId}`).toPromise();\r\n }\r\n\r\n getNewUpdateForCurrentUser() {\r\n return this.http.get(`api/current-user-techlify-updates`).toPromise();\r\n }\r\n\r\n createUpdateViewRecord(techlifyUpdateView: any) {\r\n return this.http.post(`api/techlify-update-views`, techlifyUpdateView).toPromise();\r\n }\r\n\r\n updateCurrentUserUpdates() {\r\n return this.http.get(`api/techlify-updates/update-view`).toPromise();\r\n }\r\n}\r\n","import { AlertService } from \"../../core/alert.service\";\r\nimport { TechlifyUpdateService } from './../techlify-update.service';\r\nimport { FormControl, Validators } from '@angular/forms';\r\nimport { Component, EventEmitter, Inject, OnInit, Output } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { FormValidatorService } from '../../core/form-validator.service';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { Editor, Toolbar } from 'ngx-editor';\r\n\r\nconst errorMessages: any = {\r\n title: {\r\n required: \"Title is required\",\r\n },\r\n released_on: {\r\n required: \"Released On is required\",\r\n },\r\n version: {\r\n required: \"Version is required\",\r\n },\r\n description: {\r\n required: \"Description is required\",\r\n },\r\n learn_more_link: {\r\n pattern: \"Please enter valid link\",\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'app-techlify-update-form',\r\n templateUrl: './techlify-update-form.component.html',\r\n styleUrls: ['./techlify-update-form.component.scss']\r\n})\r\nexport class TechlifyUpdateFormComponent implements OnInit {\r\n\r\n @Output() onSave = new EventEmitter<any>();\r\n techlifyUpdateForm: FormGroup;\r\n isUpdateMode: boolean = false;\r\n editor: Editor;\r\n toolbar: Toolbar = [\r\n ['bold', 'italic'],\r\n ['bullet_list'],\r\n ];\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<TechlifyUpdateFormComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private fb: FormBuilder,\r\n private formValidatorService: FormValidatorService,\r\n private alertService: AlertService,\r\n private techlifyUpdateService: TechlifyUpdateService\r\n ) {\r\n this.createForm();\r\n }\r\n\r\n private createForm() {\r\n this.techlifyUpdateForm = this.fb.group({\r\n id: new FormControl(''),\r\n title: new FormControl('', Validators.required),\r\n description: new FormControl('', Validators.required),\r\n version: new FormControl('', Validators.required),\r\n released_on: new FormControl('', Validators.required),\r\n learn_more_link: new FormControl('', Validators.compose([Validators.pattern('(https?://)?([\\\\da-z.-]+)\\\\.([a-z.]{2,6})[/\\\\w .-]*/?')])),\r\n });\r\n if (this.data.techlifyUpdateDetails) {\r\n this.isUpdateMode = true;\r\n this.techlifyUpdateForm.patchValue(this.data.techlifyUpdateDetails);\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.editor = new Editor();\r\n }\r\n\r\n async submit() {\r\n if (this.techlifyUpdateForm.valid) {\r\n let result;\r\n const model = this.techlifyUpdateForm.value;\r\n\r\n try {\r\n result = this.isUpdateMode ? await this.techlifyUpdateService.updateTechlifyUpdate(model)\r\n : await this.techlifyUpdateService.createTechlifyUpdate(model);\r\n this.alertService.addAlert(\r\n \"Techlify app update saved successfully\",\r\n \"success\"\r\n );\r\n } catch (error) {\r\n this.alertService.addAlert(\"Unable to process, try later\", \"warn\");\r\n } finally {\r\n if (result) {\r\n this.dialogRef.close(result);\r\n }\r\n }\r\n }\r\n }\r\n\r\n resetFieldValue(field: string) {\r\n this.techlifyUpdateForm.get(field).setValue('');\r\n }\r\n\r\n getFieldValue(field: string) {\r\n return this.techlifyUpdateForm.get(field).value;\r\n }\r\n\r\n /** Method to evaluate form fields*/\r\n isFieldValid(field: string) {\r\n return this.formValidatorService.isFieldValid(field, this.techlifyUpdateForm, true);\r\n }\r\n /** Method to find error in form fields*/\r\n getErrorMessage(field: string) {\r\n return this.formValidatorService.getErrorMessage(field, this.techlifyUpdateForm, errorMessages);\r\n }\r\n\r\n}\r\n","import { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MaterialModule } from './../../material.module';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TechlifyUpdateFormComponent } from './techlify-update-form.component';\r\nimport { NgxEditorModule } from 'ngx-editor';\r\n\r\n@NgModule({\r\n declarations: [TechlifyUpdateFormComponent],\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n NgxEditorModule,\r\n ],\r\n exports: [\r\n TechlifyUpdateFormComponent\r\n ],\r\n entryComponents: [\r\n TechlifyUpdateFormComponent\r\n ]\r\n})\r\nexport class TechlifyUpdateFormModule { }\r\n","import { UntilDestroy } from '@ngneat/until-destroy';\r\nimport { untilDestroyed } from '@ngneat/until-destroy';\r\nimport { ActionPopup } from './../../action-popup/action-popup.model';\r\nimport { ActionPopupComponent } from './../../action-popup/action-popup.component';\r\nimport { TechlifyUpdateFormComponent } from './../techlify-update-form/techlify-update-form.component';\r\nimport { TechlifyUpdateService } from './../techlify-update.service';\r\nimport { FormControl, FormBuilder } from '@angular/forms';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { AlertService } from '../../core/alert.service';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-techlify-updates-list',\r\n templateUrl: './techlify-updates-list.component.html',\r\n styleUrls: ['./techlify-updates-list.component.scss']\r\n})\r\nexport class TechlifyUpdatesListComponent implements OnInit {\r\n techlifyUpdates: any[] = [];\r\n displayedColumns: string[] = [\r\n 'index',\r\n 'title',\r\n 'version',\r\n 'released_on',\r\n 'learn_more_link',\r\n 'description',\r\n 'creator',\r\n 'actions'\r\n ];\r\n page: number = 1;\r\n lastPage: number;\r\n perPage: number = 25;\r\n isWorking: boolean = false;\r\n filterFormGroup: FormGroup;\r\n\r\n constructor(\r\n private dialog: MatDialog,\r\n private alertService: AlertService,\r\n private techlifyUpdateService: TechlifyUpdateService,\r\n private fb: FormBuilder,\r\n ) {\r\n this.filterFormGroup = this.fb.group({\r\n search: new FormControl(''),\r\n version: new FormControl(''),\r\n sort_by: new FormControl('released_on|DESC'),\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.loadData();\r\n this.listenChanges();\r\n }\r\n\r\n listenChanges() {\r\n this.filterFormGroup.valueChanges.pipe(debounceTime(500), untilDestroyed(this))\r\n .subscribe(changes => {\r\n this.reload();\r\n });\r\n }\r\n\r\n ngOnDestroy() { }\r\n\r\n async loadData() {\r\n try {\r\n this.isWorking = true;\r\n var filters: any = this.filterFormGroup.value;\r\n filters.perPage = this.perPage;\r\n filters.page = this.page;\r\n let result: any = await this.techlifyUpdateService.getTechlifyUpdates(\r\n filters\r\n );\r\n this.lastPage = result.last_page || this.page;\r\n this.techlifyUpdates = this.techlifyUpdates.concat(result.data);\r\n } catch (error) {\r\n this.alertService.addAlert(\"Unable to process, try later\", \"warn\");\r\n }\r\n finally {\r\n this.isWorking = false;\r\n }\r\n }\r\n\r\n reload() {\r\n this.techlifyUpdates = [];\r\n this.page = 1;\r\n if (!this.isWorking) {\r\n this.loadData();\r\n }\r\n }\r\n\r\n onScroll() {\r\n if (!this.isWorking && this.page < this.lastPage) {\r\n this.page += 1;\r\n this.loadData();\r\n }\r\n }\r\n\r\n modifyTechlifyUpdate(model?: any) {\r\n const dialogRef = this.dialog.open(TechlifyUpdateFormComponent, {\r\n width: \"600px\",\r\n data: {\r\n techlifyUpdateDetails: model,\r\n }\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n this.reload();\r\n }\r\n });\r\n }\r\n\r\n async deleteTechlifyUpdate(model: any) {\r\n const dialogRef = this.dialog.open(ActionPopupComponent, {\r\n width: \"400px\",\r\n data: <ActionPopup>{\r\n title: \"Delete Update\",\r\n message: `Are you sure to delete this update?`\r\n },\r\n autoFocus: false\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(async result => {\r\n if (result) {\r\n //Action confirmed\r\n try {\r\n await this.techlifyUpdateService.deleteTechlifyUpdate(model.id);\r\n this.alertService.addAlert(\r\n \"Successfully deleted the update\",\r\n \"success\"\r\n );\r\n this.reload();\r\n } catch (error) {\r\n this.alertService.addAlert(\"Unable to process, try later\", \"warn\");\r\n }\r\n }\r\n });\r\n }\r\n\r\n resetFieldValue(field: string) {\r\n this.filterFormGroup.get(field).setValue(\"\");\r\n }\r\n\r\n sortColumn(event) {\r\n var direction = event.direction.toString().toUpperCase();\r\n this.assignFilter(event.active, direction);\r\n }\r\n\r\n assignFilter(column, direction) {\r\n switch (column) {\r\n case 'title': {\r\n return this.filterFormGroup.get('sort_by').setValue(\"title|\" + direction);\r\n }\r\n case 'released_on': {\r\n return this.filterFormGroup.get('sort_by').setValue(\"released_on|\" + direction);\r\n }\r\n case 'version': {\r\n return this.filterFormGroup.get('sort_by').setValue(\"version|\" + direction);\r\n }\r\n default: {\r\n return this.filterFormGroup.get('sort_by').setValue(\"created_at|DESC\");\r\n }\r\n };\r\n }\r\n\r\n}\r\n","import { TechlifyUpdatesListComponent } from './techlify-updates-list/techlify-updates-list.component';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nconst routes: Routes = [\r\n { path: '', redirectTo: 'all', pathMatch: 'full' },\r\n { path: 'all', component: TechlifyUpdatesListComponent },\r\n\r\n //fallback\r\n {\r\n path: '**',\r\n redirectTo: 'all',\r\n pathMatch: 'full'\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class TechlifyUpdateRoutingModule { }\r\n","import { ReadMoreModule } from '../read-more/read-more.module';\r\nimport { TechlifyUpdateFormModule } from './techlify-update-form/techlify-update-form.module';\r\nimport { TechlifyUpdateRoutingModule } from './techlify-update-routing.module';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TechlifyUpdatesListComponent } from './techlify-updates-list/techlify-updates-list.component';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MaterialModule } from '../material.module';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ActionPopupModule } from '../action-popup/action-popup.module';\r\n\r\n@NgModule({\r\n declarations: [TechlifyUpdatesListComponent],\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n InfiniteScrollModule,\r\n FlexLayoutModule,\r\n MaterialModule,\r\n ActionPopupModule,\r\n TechlifyUpdateRoutingModule,\r\n TechlifyUpdateFormModule,\r\n ReadMoreModule,\r\n ]\r\n})\r\nexport class TechlifyUpdateModule { }\r\n","import { Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-update-view',\r\n templateUrl: './update-view.component.html',\r\n styleUrls: ['./update-view.component.scss']\r\n})\r\nexport class UpdateViewComponent implements OnInit {\r\n techlifyUpdate: any;\r\n rootNavUrl: any;\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<UpdateViewComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private router: Router\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.techlifyUpdate = this.data.techlifyUpdate;\r\n this.rootNavUrl = this.data.rootNavUrl;\r\n }\r\n\r\n close() {\r\n this.dialogRef.close();\r\n }\r\n\r\n openUpdateHistory(): void {\r\n this.close();\r\n this.router.navigate([this.rootNavUrl + \"/update-history\"]);\r\n }\r\n\r\n}\r\n","import { UntilDestroy } from '@ngneat/until-destroy';\r\nimport { untilDestroyed } from '@ngneat/until-destroy';\r\nimport { AlertService } from './../../core/alert.service';\r\nimport { UpdateViewComponent } from './../update-view/update-view.component';\r\nimport { TechlifyUpdateService } from './../techlify-update.service';\r\nimport { FormControl, FormBuilder } from '@angular/forms';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-techlify-update-history',\r\n templateUrl: './techlify-update-history.component.html',\r\n styleUrls: ['./techlify-update-history.component.scss']\r\n})\r\nexport class TechlifyUpdateHistoryComponent implements OnInit {\r\n techlifyUpdates: any[] = [];\r\n displayedColumns: string[] = [\r\n 'index',\r\n 'title',\r\n 'version',\r\n 'released_on',\r\n 'learn_more_link',\r\n 'description',\r\n 'creator',\r\n 'actions'\r\n ];\r\n page: number = 1;\r\n lastPage: number;\r\n perPage: number = 25;\r\n isWorking: boolean = false;\r\n filterFormGroup: FormGroup;\r\n\r\n constructor(\r\n private dialog: MatDialog,\r\n private techlifyUpdateService: TechlifyUpdateService,\r\n private fb: FormBuilder,\r\n private alertService: AlertService\r\n ) {\r\n this.filterFormGroup = this.fb.group({\r\n search: new FormControl(''),\r\n version: new FormControl(''),\r\n sort_by: new FormControl('released_on|DESC'),\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.loadData();\r\n this.listenChanges();\r\n this.updateCurrentUserUpdates();\r\n }\r\n\r\n listenChanges() {\r\n this.filterFormGroup.valueChanges.pipe(debounceTime(500), untilDestroyed(this))\r\n .subscribe(changes => {\r\n this.reload();\r\n });\r\n }\r\n\r\n ngOnDestroy() { }\r\n\r\n async loadData() {\r\n try {\r\n this.isWorking = true;\r\n var filters: any = this.filterFormGroup.value;\r\n filters.perPage = this.perPage;\r\n filters.page = this.page;\r\n let result: any = await this.techlifyUpdateService.getTechlifyUpdates(\r\n filters\r\n );\r\n this.lastPage = result.last_page || this.page;\r\n this.techlifyUpdates = this.techlifyUpdates.concat(result.data);\r\n } catch (error) {\r\n this.alertService.addAlert(\"Unable to process, try later\", \"warn\");\r\n }\r\n finally {\r\n this.isWorking = false;\r\n }\r\n }\r\n\r\n reload() {\r\n this.techlifyUpdates = [];\r\n this.page = 1;\r\n if (!this.isWorking) {\r\n this.loadData();\r\n }\r\n }\r\n\r\n onScroll() {\r\n if (!this.isWorking && this.page < this.lastPage) {\r\n this.page += 1;\r\n this.loadData();\r\n }\r\n }\r\n\r\n resetFieldValue(field: string) {\r\n this.filterFormGroup.get(field).setValue(\"\");\r\n }\r\n\r\n sortColumn(event) {\r\n var direction = event.direction.toString().toUpperCase();\r\n this.assignFilter(event.active, direction);\r\n }\r\n\r\n assignFilter(column, direction) {\r\n switch (column) {\r\n case 'title': {\r\n return this.filterFormGroup.get('sort_by').setValue(\"title|\" + direction);\r\n }\r\n case 'released_on': {\r\n return this.filterFormGroup.get('sort_by').setValue(\"released_on|\" + direction);\r\n }\r\n case 'version': {\r\n return this.filterFormGroup.get('sort_by').setValue(\"version|\" + direction);\r\n }\r\n default: {\r\n return this.filterFormGroup.get('sort_by').setValue(\"created_at|DESC\");\r\n }\r\n };\r\n }\r\n\r\n openUpdateView(techlifyUpdate: any): void {\r\n const dialogRef = this.dialog.open(UpdateViewComponent, {\r\n width: \"800px\",\r\n autoFocus: false,\r\n data: {\r\n techlifyUpdate: techlifyUpdate,\r\n isFromHistory: true,\r\n } // Any data passed here will be injected into the model\r\n });\r\n }\r\n\r\n async updateCurrentUserUpdates() {\r\n try {\r\n await this.techlifyUpdateService.updateCurrentUserUpdates();\r\n } catch (error) {\r\n this.alertService.addAlert(\"Unable to process, try later\", \"warn\");\r\n }\r\n }\r\n}\r\n","import { TechlifyUpdateHistoryComponent } from './techlify-update-history.component';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nconst routes: Routes = [\r\n { path: '', redirectTo: 'update-history', pathMatch: 'full' },\r\n { path: 'update-history', component: TechlifyUpdateHistoryComponent },\r\n\r\n //fallback\r\n {\r\n path: '**',\r\n redirectTo: 'all',\r\n pathMatch: 'full'\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class TechlifyUpdateHistoryRoutingModule { }\r\n","import { ReactiveFormsModule } from '@angular/forms';\r\nimport { TechlifyUpdateHistoryRoutingModule } from './techlify-update-history-routing.module';\r\nimport { ReadMoreModule } from '../../read-more/read-more.module';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TechlifyUpdateHistoryComponent } from './techlify-update-history.component';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { MaterialModule } from '../../material.module';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ActionPopupModule } from '../../action-popup/action-popup.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n InfiniteScrollModule,\r\n FlexLayoutModule,\r\n MaterialModule,\r\n ActionPopupModule,\r\n ReadMoreModule,\r\n TechlifyUpdateHistoryRoutingModule\r\n ],\r\n declarations: [TechlifyUpdateHistoryComponent]\r\n})\r\nexport class TechlifyUpdateHistoryModule { }\r\n","import { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MaterialModule } from './../../material.module';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UpdateViewComponent } from './update-view.component';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [UpdateViewComponent],\r\n imports: [\r\n CommonModule,\r\n MaterialModule,\r\n FlexLayoutModule\r\n ],\r\n exports: [\r\n UpdateViewComponent\r\n ],\r\n entryComponents: [\r\n UpdateViewComponent\r\n ]\r\n})\r\nexport class UpdateViewModule { }\r\n","import { AlertService } from './../../../core/alert.service';\r\nimport { TechlifyUpdateService } from './../../techlify-update.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Component, EmbeddedViewRef, Inject, OnInit } from '@angular/core';\r\nimport { MatSnackBarRef, MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\r\nimport { UpdateViewComponent } from '../../update-view/update-view.component';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-update-notifier-snack',\r\n templateUrl: './update-notifier-snack.component.html',\r\n styleUrls: ['./update-notifier-snack.component.scss']\r\n})\r\nexport class UpdateNotifierSnackComponent implements OnInit {\r\n maxDescriptionLength: any = 70;\r\n descriptionText: any = '';\r\n techlifyUpdate: any;\r\n rootNavUrl: any;\r\n\r\n constructor(\r\n @Inject(MAT_SNACK_BAR_DATA) public data: any,\r\n private snackBarRef: MatSnackBarRef<EmbeddedViewRef<any>>,\r\n private dialog: MatDialog,\r\n private router: Router,\r\n private techlifyUpdateService: TechlifyUpdateService,\r\n private alertService: AlertService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.techlifyUpdate = this.data.techlifyUpdate;\r\n this.rootNavUrl = this.data.rootNavUrl;\r\n this.determineDescription(this.techlifyUpdate?.description)\r\n }\r\n\r\n close(): void {\r\n this.createUpdateViewRecord();\r\n this.snackBarRef.dismiss();\r\n }\r\n\r\n determineDescription(description: any) {\r\n if (!description || description.length <= this.maxDescriptionLength) {\r\n this.descriptionText = description;\r\n return;\r\n }\r\n this.descriptionText = description.substring(0, this.maxDescriptionLength) + \"...\";\r\n }\r\n\r\n openUpdateView(): void {\r\n this.close();\r\n const dialogRef = this.dialog.open(UpdateViewComponent, {\r\n width: \"800px\",\r\n autoFocus: false,\r\n data: {\r\n techlifyUpdate: this.techlifyUpdate,\r\n rootNavUrl: this.data.rootNavUrl\r\n } // Any data passed here will be injected into the model\r\n });\r\n }\r\n\r\n openUpdateHistory(): void {\r\n this.close();\r\n this.router.navigate([this.rootNavUrl + \"/update-history\"]);\r\n }\r\n\r\n async createUpdateViewRecord() {\r\n try {\r\n var techlifyUpdateView = {\r\n update_id: this.techlifyUpdate?.id\r\n };\r\n let result: any = await this.techlifyUpdateService.createUpdateViewRecord(techlifyUpdateView);\r\n }\r\n catch (error) {\r\n this.alertService.addAlert(\"Unable to process, try later\", \"warn\");\r\n }\r\n }\r\n}\r\n","import { UpdateNotifierSnackComponent } from './update-notifier-snack/update-notifier-snack.component';\r\nimport { TechlifyUpdateService } from './../techlify-update.service';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { AlertService } from '../../core/alert.service';\r\n\r\n@Component({\r\n selector: 'app-update-notifier',\r\n templateUrl: './update-notifier.component.html',\r\n styleUrls: ['./update-notifier.component.scss']\r\n})\r\nexport class UpdateNotifierComponent implements OnInit {\r\n techlifyUpdate: any;\r\n @Input() rootNavUrl: string = '/techlify-updates';\r\n\r\n constructor(\r\n private snackBar: MatSnackBar,\r\n private techlifyUpdateService: TechlifyUpdateService,\r\n private alertService: AlertService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(x => {\r\n this.getNewUpdate();\r\n }, 5000);\r\n }\r\n\r\n async getNewUpdate() {\r\n try {\r\n let result: any = await this.techlifyUpdateService.getNewUpdateForCurrentUser();\r\n this.techlifyUpdate = result.item;\r\n if (this.techlifyUpdate) {\r\n this.showUpdate();\r\n }\r\n }\r\n catch (error) {\r\n console.log(\"Current user updates failed\");\r\n }\r\n }\r\n\r\n showUpdate() {\r\n this.snackBar.openFromComponent(UpdateNotifierSnackComponent, {\r\n data: {\r\n techlifyUpdate: this.techlifyUpdate,\r\n rootNavUrl: this.rootNavUrl\r\n },\r\n horizontalPosition: 'right',\r\n verticalPosition: 'top',\r\n panelClass: ['white-bg']\r\n });\r\n }\r\n\r\n}\r\n","import { ActionPopupModule } from './../../action-popup/action-popup.module';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MaterialModule } from './../../material.module';\r\nimport { UpdateViewModule } from './../update-view/update-view.module';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UpdateNotifierComponent } from './update-notifier.component';\r\nimport { UpdateNotifierSnackComponent } from './update-notifier-snack/update-notifier-snack.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [UpdateNotifierComponent, UpdateNotifierSnackComponent],\r\n imports: [\r\n CommonModule,\r\n MaterialModule,\r\n UpdateViewModule,\r\n FlexLayoutModule,\r\n ActionPopupModule\r\n ],\r\n exports: [\r\n UpdateNotifierComponent,\r\n ],\r\n entryComponents: [\r\n UpdateNotifierSnackComponent\r\n ]\r\n})\r\nexport class UpdateNotifierModule { }\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport * as XLSX from 'xlsx';\r\n\r\n@Component({\r\n selector: 'app-export-excel-button',\r\n templateUrl: './export-excel-button.component.html',\r\n styleUrls: ['./export-excel-button.component.scss']\r\n})\r\nexport class ExportExcelButtonComponent implements OnInit {\r\n\r\n @Input() name: string = 'Export_Data';\r\n @Input() data: any[] = [];\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n exportExcel() {\r\n const fileName = `${this.name}_${new Date().getTime()}.xlsx`;\r\n const ws = XLSX.utils.json_to_sheet(this.data);\r\n /* generate workbook and add the worksheet */\r\n const wb: XLSX.WorkBook = XLSX.utils.book_new();\r\n XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');\r\n\r\n /* save to file */\r\n XLSX.writeFile(wb, fileName);\r\n }\r\n\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ExportExcelButtonComponent } from './export-excel-button/export-excel-button.component';\r\nimport { MaterialModule } from '../material.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [ExportExcelButtonComponent],\r\n imports: [\r\n CommonModule,\r\n MaterialModule\r\n ],\r\n exports: [ExportExcelButtonComponent]\r\n})\r\nexport class ExportExcelModule { }\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { HttpService } from '../../core/http.service';\r\n\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-audit-log-view',\r\n templateUrl: './audit-log-view-model.component.html',\r\n styleUrls: ['./audit-log-view-model.component.scss']\r\n})\r\nexport class AuditLogViewModelComponent implements OnInit {\r\n\r\n logInfo: any;\r\n showDeltaChanges: boolean = false;\r\n changeList: any[] = [];\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<AuditLogViewModelComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private http: HttpService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n if (this.data) {\r\n this.http.get(`api/recent-log-for-model`, {\r\n params: {\r\n model_type: this.data?.modelType,\r\n model_id: this.data?.modelId\r\n }\r\n }).pipe(\r\n untilDestroyed(this)\r\n ).subscribe((result: any) => {\r\n this.logInfo = result?.item;\r\n this.getTransformedChanges();\r\n });\r\n }\r\n }\r\n\r\n getTransformedChanges() {\r\n const changes = ((this.logInfo?.action === 'deleted') ? Object.keys(this.logInfo?.object) : Object.keys(this.logInfo?.data?.changes)) || [];\r\n changes.forEach((key: any) => {\r\n const displayAttribute = (key as string).split('_').map(x => x.charAt(0).toUpperCase() + x.slice(1)).join(' ');\r\n this.changeList.push({ displayAttribute: displayAttribute, attribute: key, newValue: (this.logInfo?.action === 'deleted') ? '' : (this.logInfo?.object[key] ?? ''), oldValue: this.logInfo?.pre_object[key] ?? '' });\r\n });\r\n }\r\n\r\n close() {\r\n this.dialogRef.close();\r\n }\r\n\r\n}\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { filter } from 'rxjs/operators';\r\nimport { AuditLogViewModelComponent } from '../audit-log-view-model/audit-log-view-model.component';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-audit-logs-view-model',\r\n templateUrl: './audit-logs-view-model.component.html',\r\n styleUrls: ['./audit-logs-view-model.component.scss']\r\n})\r\nexport class AuditLogsViewModelComponent implements OnInit {\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<AuditLogViewModelComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private router: Router\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.router.events\r\n .pipe(filter(event => event instanceof NavigationEnd), untilDestroyed(this))\r\n .subscribe(_ => this.dialogRef.close());\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { AuditLogViewModelComponent } from '../audit-log-view-model/audit-log-view-model.component';\r\nimport { AuditLogsViewModelComponent } from '../audit-logs-view-model/audit-logs-view-model.component';\r\n\r\n\r\n@Component({\r\n selector: 'app-audit-log-for-model',\r\n templateUrl: './audit-log-for-model.component.html',\r\n styleUrls: ['./audit-log-for-model.component.scss']\r\n})\r\nexport class AuditLogForModelComponent implements OnInit {\r\n\r\n @Input() modelType: string;\r\n @Input() modelId: any;\r\n @Input() logView: 'recent' | 'all' = 'recent';\r\n\r\n constructor(\r\n private dialog: MatDialog,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n getLogView() {\r\n const dialogRef = this.dialog.open(AuditLogViewModelComponent, {\r\n width: '800px',\r\n autoFocus: false,\r\n data: {\r\n modelType: this.modelType,\r\n modelId: this.modelId\r\n } // Any data passed here will be injected into the model\r\n });\r\n }\r\n\r\n getLogsView() {\r\n const dialogRef = this.dialog.open(AuditLogsViewModelComponent, {\r\n width: '95%',\r\n maxWidth: 'unset',\r\n autoFocus: false,\r\n data: {\r\n modelType: this.modelType,\r\n modelId: this.modelId\r\n } // Any data passed here will be injected into the model\r\n });\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AuditLogForModelRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AuditLogViewModelRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { AuditLogViewModelRoutingModule } from './audit-log-view-model-routing.module';\r\nimport { AuditLogViewModelComponent } from './audit-log-view-model.component';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MaterialModule } from '../../material.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [AuditLogViewModelComponent],\r\n imports: [\r\n CommonModule,\r\n AuditLogViewModelRoutingModule,\r\n FlexLayoutModule,\r\n MaterialModule\r\n ],\r\n exports: [AuditLogViewModelComponent]\r\n})\r\nexport class AuditLogViewModelModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AuditLogsViewModelRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AuditLogListRoutingModule { }\r\n","import { Component, OnInit, OnDestroy, Input, ViewChild } from '@angular/core';\r\n\r\n\r\nimport { Router } from '@angular/router';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { PageEvent } from '../../data-table/data-table.model';\r\nimport { DataManager } from '../../core/dataManager.service';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-audit-log-list',\r\n templateUrl: './audit-log-list.component.html',\r\n styleUrls: ['./audit-log-list.component.scss'],\r\n})\r\nexport class AuditLogListComponent implements OnInit, OnDestroy {\r\n\r\n auditLogList: any[] = [];\r\n @Input() objectId: any;\r\n @Input() objectType: any;\r\n @Input() showFilter: boolean = true;\r\n @Input() showExportButtons: boolean = true;\r\n @Input() userId: any;\r\n\r\n pageEvent: PageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n filters: any = { sort_by: 'created_at|desc' };\r\n displayedColumns: any[] = ['index', 'id', 'object_type', 'object_id', 'action', 'changes', 'created_at', 'user.email'];\r\n\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n\r\n constructor(\r\n private dataManager: DataManager,\r\n private router: Router,\r\n public sanitizer: DomSanitizer\r\n ) { }\r\n\r\n ngOnInit() {\r\n\r\n this.initializeData();\r\n\r\n if (this.sort) {\r\n this.sort.sortChange.pipe(untilDestroyed(this))\r\n .subscribe((value: any) => {\r\n this.changeSort(value);\r\n })\r\n }\r\n\r\n }\r\n\r\n get excelData(): any[] {\r\n if (this.auditLogList.length > 0) {\r\n return this.auditLogList.map(item => {\r\n return {\r\n 'Type': item?.object_type,\r\n 'Action': item?.action,\r\n 'Data': JSON.stringify(item?.data || {}),\r\n 'Object': JSON.stringify(item?.object || {}),\r\n 'Pre-Object': JSON.stringify(item?.pre_object || {}),\r\n 'Created At': new Date(item?.created_at).toDateString(),\r\n 'Created By': item?.user?.email\r\n };\r\n });\r\n }\r\n return [];\r\n }\r\n\r\n changeSort(event: any) {\r\n if (event.direction) {\r\n this.filters.sort_by = `${event.active}|${event.direction}`;\r\n this.reload();\r\n }\r\n }\r\n\r\n logClicked(log: any) {\r\n this.router.navigate(['/system/audit-logs/log-view', log.id]);\r\n }\r\n\r\n\r\n async initializeData() {\r\n if (this.objectType) {\r\n this.filters = { ...this.filters, object_type: this.objectType }\r\n }\r\n if (this.objectId) {\r\n this.filters = { ...this.filters, object_id: this.objectId }\r\n }\r\n if (this.userId) {\r\n this.filters = { ...this.filters, user_id: this.userId }\r\n }\r\n const result = await this.dataManager.GET(`api/audit-logs`, { ...this.filters, ...this.pageEvent });\r\n this.auditLogList = this.auditLogList.concat(result.data);\r\n this.pageEvent.page = result.current_page;\r\n this.pageEvent.lastPage = result.last_page;\r\n }\r\n\r\n filterChange(event: any) {\r\n if (this.showFilter) {\r\n this.filters = {\r\n ...this.filters,\r\n ...event,\r\n object_type: this.objectType || event?.object_type || '',\r\n object_id: this.objectId || '',\r\n };\r\n this.reload();\r\n }\r\n }\r\n\r\n onScroll() {\r\n if (this.pageEvent.lastPage > this.pageEvent.page) {\r\n this.pageEvent.page += 1;\r\n this.initializeData();\r\n }\r\n }\r\n\r\n reload() {\r\n this.auditLogList = [];\r\n this.pageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n this.initializeData();\r\n }\r\n\r\n getTransformedChanges(log: any) {\r\n if (log?.data?.changes) {\r\n const changes = Object.keys(log?.data?.changes) || [];\r\n let value = '<div>';\r\n changes.forEach((key: any) => {\r\n const displayAttribute = (key as string).split('_').map(x => x.charAt(0).toUpperCase() + x.slice(1)).join(' ');\r\n value = `${value} <div><b>${displayAttribute}:</b> <span id=\"old-value\">${log?.pre_object[key] ?? ''}</span><span id=\"new-value\">${log?.object[key] ?? ''}</span></div>`;\r\n });\r\n value = `${value} </div>`;\r\n return value;\r\n }\r\n return '';\r\n }\r\n\r\n ngOnDestroy() {\r\n // Needed for automatic unsubscribe with untilDestroyed\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AuditLogListFilterRoutingModule { }\r\n","import { FormControl } from \"@angular/forms\";\r\n\r\nexport function DateValidator(): any {\r\n return (control: FormControl): { [key: string]: any } => {\r\n\r\n const val: any = new Date(control.value);\r\n if (!!control.value && val == 'Invalid Date') {\r\n return { invalidDate: true };\r\n }\r\n return null;\r\n };\r\n}","import { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';\r\nimport { FormGroup, FormBuilder } from '@angular/forms';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { FormValidatorService } from '../../core/form-validator.service';\r\nimport { DateValidator } from '../../date-validator';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-audit-log-list-filter',\r\n templateUrl: './audit-log-list-filter.component.html',\r\n styleUrls: ['./audit-log-list-filter.component.scss']\r\n})\r\nexport class AuditLogListFilterComponent implements OnInit {\r\n\r\n auditLogFilterForm: FormGroup;\r\n\r\n @Input() objectId: any;\r\n @Input() objectType: any;\r\n\r\n @Output() valueChange = new EventEmitter();\r\n\r\n constructor(private fb: FormBuilder, private formValidatorService: FormValidatorService) {\r\n this.createForm();\r\n }\r\n\r\n get showObjectFilter() {\r\n return !(this.objectId || this.objectType);\r\n }\r\n\r\n private createForm() {\r\n\r\n //TODO: Finialize and add more validations.\r\n this.auditLogFilterForm = this.fb.group({\r\n object_type: [''],\r\n action: [''],\r\n data: [''],\r\n date_to: ['', DateValidator()],\r\n date_from: ['', DateValidator()]\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n this.auditLogFilterForm.valueChanges.pipe(\r\n debounceTime(500),\r\n distinctUntilChanged(),\r\n untilDestroyed(this)\r\n ).subscribe((value: any) => {\r\n value.date_from = value.date_from ? (value.date_from as Date).toISOString() : '';\r\n value.date_to = value.date_to ? (value.date_to as Date).toISOString() : '';\r\n this.valueChange.emit(value);\r\n })\r\n }\r\n\r\n\r\n resetFieldValue(field: string) {\r\n this.auditLogFilterForm.get(field).setValue('');\r\n }\r\n\r\n getFieldValue(field: string) {\r\n return this.auditLogFilterForm.get(field).value;\r\n }\r\n\r\n isFieldValid(field: string) {\r\n return this.formValidatorService.isFieldValid(field, this.auditLogFilterForm, true);\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { AuditLogListFilterRoutingModule } from './audit-log-list-filter-routing.module';\r\nimport { AuditLogListFilterComponent } from './audit-log-list-filter.component';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MaterialModule } from '../../material.module';\r\nimport { SearchableSelectorModule } from '../../searchable-selector/searchable-selector.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [AuditLogListFilterComponent],\r\n imports: [\r\n CommonModule,\r\n AuditLogListFilterRoutingModule,\r\n FlexLayoutModule,\r\n ReactiveFormsModule,\r\n MaterialModule,\r\n SearchableSelectorModule,\r\n ],\r\n exports: [AuditLogListFilterComponent]\r\n})\r\nexport class AuditLogListFilterModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { AuditLogListRoutingModule } from './audit-log-list-routing.module';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { AuditLogListComponent } from './audit-log-list.component';\r\nimport { AuditLogListFilterModule } from '../audit-log-list-filter/audit-log-list-filter.module';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { ExportExcelModule } from '../../export-excel/export-excel.module';\r\nimport { MaterialModule } from '../../material.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [AuditLogListComponent],\r\n imports: [\r\n CommonModule,\r\n AuditLogListRoutingModule,\r\n ExportExcelModule,\r\n FlexLayoutModule,\r\n ReactiveFormsModule,\r\n MaterialModule,\r\n InfiniteScrollModule,\r\n AuditLogListFilterModule\r\n ],\r\n exports: [AuditLogListComponent]\r\n})\r\nexport class AuditLogListModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { AuditLogsViewModelRoutingModule } from './audit-logs-view-model-routing.module';\r\nimport { AuditLogsViewModelComponent } from './audit-logs-view-model.component';\r\nimport { AuditLogListModule } from '../audit-log-list/audit-log-list.module';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\n\r\n\r\n@NgModule({\r\n declarations: [AuditLogsViewModelComponent],\r\n imports: [\r\n CommonModule,\r\n AuditLogsViewModelRoutingModule,\r\n FlexLayoutModule,\r\n AuditLogListModule\r\n ],\r\n exports: [AuditLogsViewModelComponent]\r\n})\r\nexport class AuditLogsViewModelModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { AuditLogForModelRoutingModule } from './audit-log-for-model-routing.module';\r\nimport { AuditLogForModelComponent } from './audit-log-for-model.component';\r\nimport { AuditLogViewModelModule } from '../audit-log-view-model/audit-log-view-model.module';\r\nimport { AuditLogsViewModelModule } from '../audit-logs-view-model/audit-logs-view-model.module';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MaterialModule } from '../../material.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [AuditLogForModelComponent],\r\n imports: [\r\n AuditLogViewModelModule,\r\n AuditLogsViewModelModule,\r\n CommonModule,\r\n AuditLogForModelRoutingModule,\r\n FlexLayoutModule,\r\n MaterialModule,\r\n ],\r\n exports: [AuditLogForModelComponent]\r\n})\r\nexport class AuditLogForModelModule { }\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { Location } from '@angular/common';\r\nimport * as jsondiffpatch from \"jsondiffpatch\"\r\nimport { DataManager } from '../../core/dataManager.service';\r\n\r\n@Component({\r\n selector: 'app-audit-log-view',\r\n templateUrl: './audit-log-view.component.html',\r\n styleUrls: ['./audit-log-view.component.scss']\r\n})\r\nexport class AuditLogViewComponent implements OnInit {\r\n\r\n logInfo: any;\r\n showDeltaChanges: boolean = false;\r\n changeList: any[] = [];\r\n\r\n constructor(\r\n private dataManager: DataManager,\r\n private route: ActivatedRoute,\r\n private location: Location\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.route.paramMap.subscribe(params => {\r\n if (params.get('id')) {\r\n this.fetchLogDetail(params.get('id'));\r\n } else {\r\n this.location.back();\r\n }\r\n });\r\n }\r\n\r\n getTransformedChanges() {\r\n const changes = ((this.logInfo?.action === 'deleted') ? Object.keys(this.logInfo?.object) : Object.keys(this.logInfo?.data?.changes)) || [];\r\n changes.forEach((key: any) => {\r\n const displayAttribute = (key as string).split('_').map(x => x.charAt(0).toUpperCase() + x.slice(1)).join(' ');\r\n this.changeList.push({ displayAttribute: displayAttribute, attribute: key, newValue: (this.logInfo?.action === 'deleted') ? '' : (this.logInfo?.object[key] ?? ''), oldValue: this.logInfo?.pre_object[key] ?? '' });\r\n });\r\n }\r\n\r\n async fetchLogDetail(logId: any) {\r\n const result = await this.dataManager.GET(`api/audit-logs/${logId}`);\r\n this.logInfo = result.item;\r\n this.getTransformedChanges();\r\n this.patchDelta();\r\n }\r\n\r\n patchDelta() {\r\n const delta = jsondiffpatch.diff(this.logInfo?.pre_object, this.logInfo?.object);\r\n document.getElementById('jsondiff').innerHTML = jsondiffpatch.formatters.html.format(delta, this.logInfo?.pre_object);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AuditLogViewRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { AuditLogViewRoutingModule } from './audit-log-view-routing.module';\r\nimport { AuditLogViewComponent } from './audit-log-view.component';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MaterialModule } from '../../material.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [AuditLogViewComponent],\r\n imports: [\r\n CommonModule,\r\n AuditLogViewRoutingModule,\r\n FlexLayoutModule,\r\n MaterialModule\r\n ],\r\n exports: [AuditLogViewComponent]\r\n})\r\nexport class AuditLogViewModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { AuthenticationGuard } from '../core/authentication.guard';\r\nimport { AuditLogListComponent } from './audit-log-list/audit-log-list.component';\r\nimport { AuditLogViewComponent } from './audit-log-view/audit-log-view.component';\r\n\r\n\r\nconst routes: Routes = [\r\n { path: 'log-list', component: AuditLogListComponent, canActivate: [AuthenticationGuard] },\r\n { path: 'log-view/:id', component: AuditLogViewComponent, canActivate: [AuthenticationGuard] },\r\n { path: '**', redirectTo: 'log-list', pathMatch: 'full' }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AuditLogRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { AuditLogRoutingModule } from './audit-log-routing.module';\r\nimport { AuditLogListModule } from './audit-log-list/audit-log-list.module';\r\nimport { AuditLogViewModule } from './audit-log-view/audit-log-view.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ],\r\n imports: [\r\n CommonModule,\r\n AuditLogRoutingModule,\r\n AuditLogListModule,\r\n AuditLogViewModule\r\n ],\r\n exports: []\r\n})\r\nexport class AuditLogModule { }\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { ImportCsvConfig } from '../import-csv-config';\r\n\r\n@Component({\r\n selector: 'app-import-success',\r\n templateUrl: './import-success.component.html',\r\n styleUrls: ['./import-success.component.scss']\r\n})\r\nexport class ImportSuccessComponent implements OnInit {\r\n @Input() data: any;\r\n @Input() config: ImportCsvConfig;\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import { ErrorHandlerService } from './../../core/error-handler.service';\r\nimport { PageEvent } from './../../data-table/data-table.model';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { ImportCsvConfig } from '../import-csv-config';\r\nimport { HttpService } from '../../core/http.service';\r\n\r\n@Component({\r\n selector: 'app-import-history-list',\r\n templateUrl: './import-history-list.component.html',\r\n styleUrls: ['./import-history-list.component.scss']\r\n})\r\nexport class ImportHistoryListComponent implements OnInit {\r\n\r\n @Input() config: ImportCsvConfig;\r\n histories: any[] = [];\r\n displayedColumns: string[] = [\r\n 'index',\r\n 'imported_by',\r\n 'date',\r\n 'no_of_records'\r\n ];\r\n isWorking: boolean = false;\r\n filter: any;\r\n pageEvent: PageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n\r\n constructor(\r\n private errorHandler: ErrorHandlerService,\r\n private http: HttpService,\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n if (this.config.importHistory.isEnabled) {\r\n this.filter = {\r\n model_type: this.config.importHistory.type,\r\n };\r\n }\r\n this.loadData();\r\n }\r\n\r\n loadData() {\r\n try {\r\n this.isWorking = true;\r\n this.http.get(this.config.importHistory.apiUrl, { params: { ...this.filter, ...this.pageEvent } }).subscribe((result: any) => {\r\n this.histories = this.histories.concat(result.data);\r\n this.pageEvent.page = result.current_page;\r\n this.pageEvent.lastPage = result.last_page;\r\n });\r\n } catch (error) {\r\n this.errorHandler.handleError(error);\r\n }\r\n finally {\r\n this.isWorking = false;\r\n }\r\n }\r\n\r\n onScroll() {\r\n if (this.pageEvent.lastPage > this.pageEvent.page) {\r\n this.pageEvent.page += 1;\r\n this.loadData();\r\n }\r\n }\r\n\r\n reload() {\r\n this.histories = [];\r\n this.pageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n this.loadData();\r\n }\r\n\r\n ngOnDestroy() {\r\n //Until destroyed uses it\r\n }\r\n\r\n}\r\n","import { FormValidatorService } from '../../core/form-validator.service';\r\nimport { ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { Location } from '@angular/common';\r\nimport { ImportCsvConfig } from '../import-csv-config';\r\n\r\nconst errorMessages: any = {\r\n property: {\r\n required: \"Property is required\",\r\n unavailable: \"Duplicate entry\"\r\n },\r\n};\r\n\r\n@Component({\r\n selector: 'app-field-mapping',\r\n templateUrl: './field-mapping.component.html',\r\n styleUrls: ['./field-mapping.component.scss']\r\n})\r\nexport class FieldMappingComponent implements OnInit {\r\n\r\n importMappingForm: FormGroup;\r\n @Input() data: any[];\r\n @Input() config: ImportCsvConfig;\r\n firstDataArray: any[] = [];\r\n properties: any[] = [];\r\n @Output() onSave = new EventEmitter();\r\n @Output() onReUpload= new EventEmitter();\r\n\r\n constructor(\r\n private fb: FormBuilder,\r\n private formValidatorService: FormValidatorService,\r\n private changeDetectorRef: ChangeDetectorRef,\r\n public location: Location\r\n ) {\r\n this.createImportMappingForm();\r\n }\r\n\r\n ngOnInit() {\r\n this.properties = this.config.properties;;\r\n this.reFectorAttributes(this.data[0]);\r\n }\r\n\r\n createImportMappingForm() {\r\n this.importMappingForm = this.fb.group({\r\n fields: this.fb.array([]),\r\n });\r\n }\r\n\r\n get fieldsArray(): FormArray {\r\n return this.importMappingForm.get('fields') as FormArray;\r\n }\r\n\r\n createField(field: any): FormGroup {\r\n var fieldForm: FormGroup = this.fb.group({\r\n id: new FormControl(field.id),\r\n label: new FormControl(field.label),\r\n value: new FormControl(field.value),\r\n property: new FormControl(field.property,\r\n Validators.compose(\r\n [\r\n Validators.required\r\n ]\r\n )\r\n ),\r\n propertyType: new FormControl(field.propertyType)\r\n });\r\n return fieldForm;\r\n }\r\n\r\n reFectorAttributes(data) {\r\n for (var k in data) {\r\n if (data.hasOwnProperty(k)) {\r\n var dataValue = {\r\n id: '',\r\n label: k,\r\n value: data[k],\r\n property: '',\r\n propertyType: ''\r\n };\r\n this.firstDataArray.push(dataValue);\r\n }\r\n }\r\n this.firstDataArray.forEach((element: any, mainIndex: any) => {\r\n element.id = mainIndex;\r\n this.properties.find((property: any, index: any) => {\r\n if (property.label.toLowerCase().includes(element.label.toLowerCase())) {\r\n element.property = property.value;\r\n element.propertyType = property.type;\r\n return element;\r\n }\r\n });\r\n });\r\n }\r\n\r\n next() {\r\n this.importMappingForm.markAllAsTouched();\r\n if (!this.importMappingForm.valid) {\r\n return;\r\n }\r\n this.onSave.emit(this.importMappingForm.value);\r\n }\r\n\r\n /** Method to evaluate form fields*/\r\n isFieldValid(field: string, form: any) {\r\n return this.formValidatorService.isFieldValid(field, form);\r\n }\r\n\r\n /** Method to find error in form fields*/\r\n getErrorMessage(field: string, form: any) {\r\n return this.formValidatorService.getErrorMessage(field, form, errorMessages);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n //Called after ngAfterContentInit when the component's view has been initialized. Applies to components only.\r\n //Add 'implements AfterViewInit' to the class.\r\n setTimeout(x => {\r\n this.firstDataArray.forEach((element: any) => {\r\n this.fieldsArray.push(this.createField(element));\r\n });\r\n this.changeDetectorRef.detectChanges();\r\n }, 500);\r\n }\r\n\r\n updatePropertyType(event: any, index: any): void {\r\n var field = this.properties.find((field: any) => field.value == event.value);\r\n if (field) {\r\n this.fieldsArray.controls[index].get('propertyType').setValue(field.type);\r\n this.uniqueValidator();\r\n }\r\n }\r\n\r\n uniqueValidator() {\r\n this.fieldsArray.value.forEach((field: any, index: any) => {\r\n var control = this.fieldsArray.controls[index].get('property');\r\n const isNameUnique = this.fieldsArray.value.find(propertyData =>\r\n propertyData.property === control.value\r\n && propertyData.id != this.fieldsArray.controls[index].get('id').value\r\n )\r\n ? false\r\n : true;\r\n if (!isNameUnique) {\r\n control.setErrors({ unavailable: true });\r\n }\r\n else {\r\n control.setErrors(null);\r\n }\r\n });\r\n }\r\n\r\n removeField(index: number) {\r\n if (index == -1) {\r\n return;\r\n }\r\n this.fieldsArray.removeAt(index);\r\n }\r\n\r\n reUpload() {\r\n this.onReUpload.emit(true);\r\n }\r\n\r\n}\r\n","import { Location } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-failed-items-list',\r\n templateUrl: './failed-items-list.component.html',\r\n styleUrls: ['./failed-items-list.component.scss']\r\n})\r\nexport class FailedItemsListComponent implements OnInit {\r\n @Input() failedItems: any[];\r\n @Input() selectedFields: any[];\r\n @Output() onReUpload = new EventEmitter();\r\n\r\n constructor(\r\n public location: Location\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n isValidDate(d: any): boolean {\r\n var date = new Date(d);\r\n return date instanceof Date && !isNaN(date.getTime());\r\n }\r\n\r\n reUpload() {\r\n this.onReUpload.emit(true);\r\n }\r\n\r\n}\r\n","import { ViewerConfig } from '../document-viewer/viewer-config.model';\r\nimport { FileDropperConfig } from '../file-dropper/file-dropper.model';\r\nimport { HttpService } from '../core/http.service';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { AlertService } from '../core/alert.service';\r\nimport { ErrorHandlerService } from '../core/error-handler.service';\r\nimport * as XLSX from 'xlsx';\r\nimport { ImportCsvConfig } from './import-csv-config';\r\n@UntilDestroy()\r\n\r\n@Component({\r\n selector: 'app-import-csv',\r\n templateUrl: './import-csv.component.html',\r\n styleUrls: ['./import-csv.component.scss']\r\n})\r\nexport class ImportCsvComponent implements OnInit {\r\n result: any;\r\n @Input() config: ImportCsvConfig;\r\n filesConfig: FileDropperConfig;\r\n filesList: any[] = [];\r\n data: any[] = [];\r\n isUploaded: boolean = false;\r\n isImportTypeSelected: boolean = false;\r\n viewerConfig: ViewerConfig;\r\n fileData: any[] = [];\r\n failedItems: any[] = [];\r\n selectedFields: any[] = [];\r\n importSteps: any = [\r\n {\r\n id: 1,\r\n step: 1,\r\n title: 'Upload',\r\n progressTitle: '',\r\n progressDescription: ''\r\n },\r\n {\r\n id: 2,\r\n step: 2,\r\n title: 'Field Mappings',\r\n progressTitle: '',\r\n progressDescription: ''\r\n },\r\n {\r\n id: 3,\r\n step: 3,\r\n title: 'Data Validation',\r\n progressTitle: 'Data Being Validated',\r\n progressDescription: 'The data is currently being validated and checked for errors, please do not navigate away from this page. '\r\n },\r\n {\r\n id: 4,\r\n step: 3,\r\n title: 'Data Validation & Errors',\r\n progressTitle: '',\r\n progressDescription: ''\r\n },\r\n {\r\n id: 5,\r\n step: 4,\r\n title: 'Data Importing',\r\n progressTitle: 'Data Being Imported',\r\n progressDescription: 'The data is currently being imported and saved, please do not navigate away from this page. After the import is completed, you will be redirected to a page with the imported records.'\r\n },\r\n {\r\n id: 6,\r\n step: 5,\r\n title: 'Success Page & Data Preview',\r\n progressTitle: '',\r\n progressDescription: ''\r\n },\r\n ];\r\n currentStep: any = 1;\r\n\r\n constructor(\r\n private alertService: AlertService,\r\n private errorHandler: ErrorHandlerService,\r\n private http: HttpService,\r\n ) {\r\n this.filesConfig = {\r\n fileId: \"file\",\r\n containerId: \"fileContainer\",\r\n styles: {\r\n height: \"200px\"\r\n },\r\n acceptFile: '.csv',\r\n multiple: false,\r\n maxSize: 10,\r\n acceptFileText: \".csv\"\r\n };\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n get step() {\r\n return this.importSteps.find(step => step.id == this.currentStep);\r\n }\r\n\r\n async fileChanged(event: any) {\r\n this.currentStep = 2;\r\n this.filesList = event;\r\n\r\n let selectedFile = null;\r\n let jsonData = null;\r\n const reader = new FileReader();\r\n const file = this.filesList[0];\r\n reader.onload = (event) => {\r\n const data = reader.result;\r\n selectedFile = XLSX.read(data, {\r\n type: 'binary',\r\n cellDates: true,\r\n });\r\n jsonData = selectedFile.SheetNames.reduce((initial, name) => {\r\n const sheet = selectedFile.Sheets[name];\r\n initial = XLSX.utils.sheet_to_json(sheet, {\r\n header: 0,\r\n defval: \"\",\r\n });\r\n return initial;\r\n }, {});\r\n this.fileData = jsonData;\r\n }\r\n reader.readAsBinaryString(file);\r\n return;\r\n }\r\n\r\n mappingProcessed(event: any) {\r\n this.currentStep = 3;\r\n setTimeout(x => {\r\n this.selectedFields = event.fields;\r\n const tempFileData = JSON.parse(JSON.stringify(this.fileData));\r\n tempFileData.forEach(data => {\r\n for (var key in data) {\r\n var field = event.fields.find((field: any) => field.label == key);\r\n if (field) {\r\n if ((field.propertyType == 'date' || field.propertyType == 'dateTime') && this.isValidDate(new Date(data[field.label]))) {\r\n data[field.property] = (new Date(data[field.label]) as Date).toISOString();\r\n }\r\n else {\r\n data[field.property] = data[field.label];\r\n }\r\n delete data[key];\r\n }\r\n else {\r\n delete data[key];\r\n }\r\n }\r\n });\r\n this.save(tempFileData);\r\n }, 2000);\r\n }\r\n\r\n async save(tempFileData: any) {\r\n try {\r\n this.http.post(this.config.apiUrl, { data: tempFileData })\r\n .pipe(\r\n untilDestroyed(this)\r\n ).subscribe((result: any) => {\r\n\r\n this.failedItems = result.failed_items;\r\n if (this.failedItems.length) {\r\n this.alertService.addAlert(result.msg, 'warn');\r\n }\r\n if (!(this.failedItems.length > 0)) {\r\n this.currentStep = 5;\r\n setTimeout(x => {\r\n this.currentStep = 6;\r\n this.result = result;\r\n }, 2000);\r\n }\r\n else {\r\n this.currentStep = 4;\r\n }\r\n });\r\n } catch (error) {\r\n if ((error.status === 422 || error.status === 400) && error.msg) {\r\n this.alertService.addAlert(error.msg, \"warning\");\r\n }\r\n this.errorHandler.handleError(error);\r\n this.reUpload();\r\n }\r\n }\r\n\r\n isValidDate(d: any) {\r\n return d instanceof Date && !isNaN(d.getTime());\r\n }\r\n\r\n reUpload() {\r\n this.data = [];\r\n this.fileData = [];\r\n this.filesList = [];\r\n this.failedItems = [];\r\n this.selectedFields = [];\r\n this.currentStep = 1;\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-data-import',\r\n templateUrl: './data-import.component.html',\r\n styleUrls: ['./data-import.component.scss']\r\n})\r\nexport class DataImportComponent implements OnInit {\r\n @Input() step: any;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { DocumentViewerModule } from './../document-viewer/document-viewer.module';\r\nimport { FileDropperModule } from './../file-dropper/file-dropper.module';\r\nimport { MaterialModule } from './../material.module';\r\nimport { ImportSuccessComponent } from './import-success/import-success.component';\r\nimport { ImportHistoryListComponent } from './import-history-list/import-history-list.component';\r\nimport { FieldMappingComponent } from './field-mapping/field-mapping.component';\r\nimport { FailedItemsListComponent } from './failed-items-list/failed-items-list.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ImportCsvComponent } from './import-csv.component';\r\nimport { RouterModule } from '@angular/router';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { DataImportComponent } from './data-import/data-import.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n FlexLayoutModule,\r\n RouterModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n FileDropperModule,\r\n DocumentViewerModule,\r\n InfiniteScrollModule\r\n ],\r\n declarations: [\r\n ImportCsvComponent,\r\n FieldMappingComponent,\r\n FailedItemsListComponent,\r\n ImportHistoryListComponent,\r\n ImportSuccessComponent,\r\n DataImportComponent\r\n ],\r\n providers: [],\r\n exports: [\r\n ImportCsvComponent\r\n ],\r\n})\r\nexport class ImportCsvModule { }\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { PageEvent } from '../data-table/data-table.model';\r\nimport { HttpService } from '../core/http.service';\r\nimport { TimelineValue } from '../timeline-filter';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-login-history-for-user',\r\n templateUrl: './login-history-for-user.component.html',\r\n styleUrls: ['./login-history-for-user.component.scss']\r\n})\r\nexport class LoginHistoryForUserComponent implements OnInit {\r\n\r\n loginHistoryList: any[] = [];\r\n pageEvent: PageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n filters: any = {\r\n sort_by: 'created_at|desc',\r\n };\r\n historyFilterForm: FormGroup;\r\n displayedColumns: any[] = ['index', 'created_at'];\r\n @Input() userId: any;\r\n\r\n constructor(\r\n private http: HttpService,\r\n private fb: FormBuilder,\r\n ) {\r\n this.historyFilterForm = this.fb.group({\r\n 'duration': [''],\r\n 'date_from': [''],\r\n 'date_to': ['']\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.filters.user_id = this.userId;\r\n this.historyFilterForm.valueChanges\r\n .pipe(debounceTime(500), distinctUntilChanged(), untilDestroyed(this))\r\n .subscribe((value: any) => {\r\n value.date_from = value.date_from ? (value.date_from as Date).toISOString() : '';\r\n value.date_to = value.date_to ? (value.date_to as Date).toISOString() : '';\r\n this.filterChange(value);\r\n });\r\n this.initializeData();\r\n }\r\n\r\n onTimelineChange(range: TimelineValue) {\r\n let date_from = range?.date_from ? new Date(range.date_from) : '';\r\n let date_to = range?.date_to ? new Date(range.date_to) : '';\r\n this.historyFilterForm.patchValue({\r\n date_from,\r\n date_to\r\n });\r\n }\r\n\r\n initializeData() {\r\n this.http.get(`api/user-login-history`, { params: { ...this.filters, ...this.pageEvent } })\r\n .pipe(untilDestroyed(this))\r\n .subscribe((result: any) => {\r\n this.loginHistoryList = this.loginHistoryList.concat(result.data);\r\n this.pageEvent.page = result.current_page;\r\n this.pageEvent.lastPage = result.last_page;\r\n });\r\n }\r\n\r\n filterChange(event: any) {\r\n this.filters = {\r\n ...this.filters,\r\n ...event\r\n };\r\n this.reload();\r\n }\r\n\r\n onScroll() {\r\n if (this.pageEvent.lastPage > this.pageEvent.page) {\r\n this.pageEvent.page += 1;\r\n this.initializeData();\r\n }\r\n }\r\n\r\n\r\n reload() {\r\n this.loginHistoryList = [];\r\n this.pageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n this.initializeData();\r\n }\r\n\r\n ngOnDestroy() {\r\n //Until destroyed uses it\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { AuthenticationGuard } from '../core/authentication.guard';\r\nimport { LoginHistoryForUserComponent } from './login-history-for-user.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: LoginHistoryForUserComponent,\r\n canActivate: [AuthenticationGuard]\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class LoginHistoryForUserRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { LoginHistoryForUserRoutingModule } from './login-history-for-user-routing.module';\r\nimport { LoginHistoryForUserComponent } from './login-history-for-user.component';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MaterialModule } from '../material.module';\r\nimport { TimelineFilterModule } from '../timeline-filter/timeline-filter.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [LoginHistoryForUserComponent],\r\n imports: [\r\n CommonModule,\r\n LoginHistoryForUserRoutingModule,\r\n InfiniteScrollModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n ReactiveFormsModule,\r\n TimelineFilterModule\r\n ],\r\n exports: [LoginHistoryForUserComponent]\r\n})\r\nexport class LoginHistoryForUserModule { }\r\n","import { COMMA, ENTER } from '@angular/cdk/keycodes';\r\n\r\nexport class TechlifyTaggerTagFormConfigModel {\r\n selectable: boolean;\r\n removable: boolean;\r\n separatorKeysCodes: number[];\r\n placeholder: string;\r\n apiUrl: string;\r\n isCreateable: boolean;\r\n createApiUrl: string;\r\n isCacheTags: boolean;\r\n isSingle: boolean;\r\n\r\n constructor() {\r\n this.selectable = true;\r\n this.removable = true;\r\n this.separatorKeysCodes = [ENTER, COMMA];\r\n this.placeholder = 'New Tag..';\r\n this.apiUrl = 'api/techlify-tagger-tags';\r\n this.createApiUrl = 'api/techlify-tagger-tags';\r\n this.isCreateable = true;\r\n this.isCacheTags = false;\r\n this.isSingle = false;\r\n }\r\n}","import { FocusMonitor } from '@angular/cdk/a11y';\r\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { Component, ElementRef, ViewChild, OnInit, Input, OnDestroy, Inject, Optional, Self, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\r\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\r\nimport { MatChipInputEvent } from '@angular/material/chips';\r\nimport { MatFormField, MatFormFieldControl, MAT_FORM_FIELD } from '@angular/material/form-field';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { HttpService } from '../core/http.service';\r\nimport { TechlifyTaggerTagFormConfigModel } from './techlify-tagger-tag-form-config.model';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-techlify-tagger-tag-form-field',\r\n templateUrl: './techlify-tagger-tag-form-field.component.html',\r\n styleUrls: ['./techlify-tagger-tag-form-field.component.scss'],\r\n providers: [{ provide: MatFormFieldControl, useExisting: TechlifyTaggerTagFormFieldComponent }],\r\n})\r\nexport class TechlifyTaggerTagFormFieldComponent implements OnInit, ControlValueAccessor, MatFormFieldControl<any>, OnDestroy, OnChanges {\r\n\r\n static nextId = 0;\r\n stateChanges = new Subject<void>();\r\n focused = false;\r\n controlType = 'techlify-tagger-form-field';\r\n id = `techlify-tagger-form-field-${TechlifyTaggerTagFormFieldComponent.nextId++}`;\r\n\r\n onChange = (_: any) => { };\r\n onTouched = () => { };\r\n\r\n tagInputCtrl = new FormControl();\r\n filterString: any;\r\n @ViewChild('tagInput') tagInput: ElementRef<HTMLInputElement>;\r\n\r\n /**Pass the configuration for Techlify Tagger */\r\n @Input() config: TechlifyTaggerTagFormConfigModel = new TechlifyTaggerTagFormConfigModel();\r\n /**Pass the Model Type for Techlify Tagger, Required */\r\n @Input() modelType!: string;\r\n /**Pass the Model ID for Techlify Tagger */\r\n @Input() modelId: string;\r\n\r\n /**Pass the default list of tags */\r\n private _allTags: any[] = [];\r\n @Input()\r\n get allTags() {\r\n return this._allTags;\r\n }\r\n set allTags(value) {\r\n this._allTags = value;\r\n }\r\n\r\n /**Pass the Categories to filter for a model */\r\n @Input() categories: string[] = [];\r\n /**Pass default category to be used for assigning the tags, when we filter by more than one category */\r\n @Input() defaultCreateCategory: string;\r\n\r\n get tags() {\r\n return this.allTags.filter(x => this.value.some(y => y == x.id));\r\n }\r\n\r\n //Default Getter and Setters for a Form Field Implementation\r\n get empty() {\r\n return this.value.length == 0;\r\n }\r\n\r\n get shouldLabelFloat() {\r\n return this.focused || !this.empty || this.tagInputCtrl.value;\r\n }\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this._required;\r\n }\r\n set required(value: boolean) {\r\n this._required = coerceBooleanProperty(value);\r\n this.stateChanges.next();\r\n }\r\n private _required = false;\r\n\r\n @Input()\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n set disabled(value: boolean) {\r\n this._disabled = coerceBooleanProperty(value);\r\n this._disabled ? this.tagInputCtrl.disable() : this.tagInputCtrl.enable();\r\n this.stateChanges.next();\r\n }\r\n private _disabled = false;\r\n\r\n\r\n private _value: any[] = [];\r\n @Input()\r\n get value(): any[] {\r\n return this._value;\r\n }\r\n set value(tagIds: any[]) {\r\n this._value = tagIds || [];\r\n this.stateChanges.next();\r\n }\r\n\r\n get errorState(): boolean {\r\n return this.tagInputCtrl.dirty && this.required && (this.value.length == 0);\r\n }\r\n\r\n @Input()\r\n get placeholder(): string {\r\n return this._placeholder;\r\n }\r\n set placeholder(value: string) {\r\n this._placeholder = value;\r\n this.stateChanges.next();\r\n }\r\n private _placeholder: string;\r\n\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n\r\n //API to load all tags for the model type\r\n if (this.allTags.length == 0) {\r\n this.httpService\r\n .cache(!this.config.isCacheTags)\r\n .get(this.config.apiUrl, {\r\n params: {\r\n categories: this.categories.join(','),\r\n perPage: '1000'\r\n }\r\n }).pipe(\r\n debounceTime(500),\r\n untilDestroyed(this)\r\n ).subscribe((result: any) => {\r\n this.allTags = result.data;\r\n });\r\n }\r\n\r\n //API to load only the selected tags for the model\r\n if (this.modelId && this.value.length == 0) {\r\n //Model Id is passed and no tags are present, so we query db for the avilable tags for the model ID.\r\n this.httpService\r\n .cache(!this.config.isCacheTags)\r\n .get(this.config.apiUrl, {\r\n params: {\r\n categories: this.categories.join(','),\r\n model_type: this.modelType,\r\n model_id: this.modelId,\r\n perPage: '1000'\r\n }\r\n }).pipe(\r\n debounceTime(500),\r\n untilDestroyed(this)\r\n ).subscribe((result: any) => {\r\n this.value = (result?.data || []).map((x: any) => x.id);\r\n this._handleInput();\r\n });\r\n }\r\n }\r\n\r\n init() {\r\n if (this.modelId && this.allTags.length == 0) {\r\n //Model Id is passed and no tags are passed, so we query db for the avilable tags for the model ID.\r\n this.httpService\r\n .cache(!this.config.isCacheTags)\r\n .get(this.config.apiUrl, {\r\n params: {\r\n categories: this.categories.join(','),\r\n model_type: this.modelType,\r\n model_id: this.modelId\r\n }\r\n }).pipe(\r\n untilDestroyed(this)\r\n ).subscribe((result: any) => {\r\n this.allTags = result.data;\r\n });\r\n }\r\n }\r\n\r\n get filteredTags(): any[] {\r\n return this._filter();\r\n }\r\n\r\n constructor(\r\n private _focusMonitor: FocusMonitor,\r\n private _elementRef: ElementRef<HTMLElement>,\r\n private httpService: HttpService,\r\n @Optional() @Inject(MAT_FORM_FIELD) public _formField: MatFormField,\r\n @Optional() @Self() public ngControl: NgControl) {\r\n\r\n this.tagInputCtrl.valueChanges\r\n .subscribe(filterValue => {\r\n this.filterString = filterValue;\r\n });\r\n\r\n //Set Focus Monitor\r\n _focusMonitor.monitor(_elementRef, true).subscribe(origin => {\r\n if (this.focused && !origin) {\r\n this.onTouched();\r\n }\r\n this.focused = !!origin;\r\n this.stateChanges.next();\r\n });\r\n\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n setDescribedByIds(ids: string[]) {\r\n // Just a empty implementation for Mat Form Field Interface\r\n }\r\n\r\n onContainerClick() {\r\n // Just a empty implementation for Mat Form Field Interface\r\n }\r\n\r\n\r\n async add(event: MatChipInputEvent) {\r\n const value = (event.value || '').trim();\r\n // Add our tag\r\n // Validate for single mode\r\n if (!this.config.isSingle || (this.value.length === 0)) {\r\n if (value && this.config.isCreateable) {\r\n const tags = this.allTags;\r\n let tag = tags.find((item: any) => item.title.toLowerCase() == value.toLowerCase());\r\n if (!tag) {\r\n //No tag present in the list\r\n try {\r\n const result: any = await this.httpService.post(this.config.createApiUrl, {\r\n title: value,\r\n description: value,\r\n category_title: (this.categories.length > 0) ? (this.defaultCreateCategory ? this.defaultCreateCategory : this.categories[0]) : ''\r\n }).toPromise();\r\n tag = result.item;\r\n } catch (error) {\r\n return;\r\n }\r\n this.allTags.push(tag);\r\n } else {\r\n //Optionally clean the existing value, to avoid duplicate\r\n this.remove(tag);\r\n }\r\n this.value.push(tag.id);\r\n this._handleInput();\r\n }\r\n }\r\n\r\n // Clear the input value\r\n event.input.value = '';\r\n\r\n this.tagInputCtrl.setValue(null);\r\n }\r\n\r\n remove(tag: any): void {\r\n this.value = this.value.filter(x => x !== tag.id);\r\n this._handleInput();\r\n }\r\n\r\n selected(event: MatAutocompleteSelectedEvent): void {\r\n // Validate for single mode\r\n if (!this.config.isSingle || (this.value.length === 0)) {\r\n //Clean the existing value, to avoid duplicate\r\n this.remove({ id: event.option.value });\r\n this.value.push(event.option.value);\r\n this._handleInput();\r\n }\r\n this.tagInput.nativeElement.value = '';\r\n this.tagInputCtrl.setValue(null);\r\n }\r\n\r\n private _filter(): any[] {\r\n const filterValue = this.filterString ? this.filterString.toString().toLowerCase() : null;\r\n const availableTags = this.allTags.filter((tag: any) => !this.value.some((item: any) => item == tag.id));\r\n return filterValue ? availableTags.filter((tag: any) => tag.title.toLowerCase().includes(filterValue)) : availableTags;\r\n }\r\n\r\n writeValue(tagIds: any[]): void {\r\n this.value = tagIds || [];\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n _handleInput(): void {\r\n this.onChange(this.value);\r\n }\r\n\r\n static ngAcceptInputType_disabled: BooleanInput;\r\n static ngAcceptInputType_required: BooleanInput;\r\n\r\n ngOnDestroy() {\r\n this.stateChanges.complete();\r\n this._focusMonitor.stopMonitoring(this._elementRef);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TechlifyTaggerTagFormFieldComponent } from './techlify-tagger-tag-form-field.component';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MaterialModule } from '../material.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n TechlifyTaggerTagFormFieldComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n MatAutocompleteModule,\r\n ReactiveFormsModule\r\n ],\r\n exports: [TechlifyTaggerTagFormFieldComponent]\r\n})\r\nexport class TechlifyTaggerTagFormFieldModule { }\r\n","import { FocusMonitor } from '@angular/cdk/a11y';\r\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { Component, ElementRef, OnInit, Input, OnDestroy, Inject, Optional, Self } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\r\nimport { MatFormField, MatFormFieldControl, MAT_FORM_FIELD } from '@angular/material/form-field';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { HttpService } from '../core/http.service';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-techlify-tagger-tag-selector',\r\n templateUrl: './techlify-tagger-tag-selector.component.html',\r\n styleUrls: ['./techlify-tagger-tag-selector.component.scss'],\r\n providers: [{ provide: MatFormFieldControl, useExisting: TechlifyTaggerTagSelectorComponent }],\r\n})\r\nexport class TechlifyTaggerTagSelectorComponent implements OnInit, ControlValueAccessor, MatFormFieldControl<any>, OnDestroy {\r\n\r\n /**Pass the Categories to filter for a model */\r\n @Input() categories: string[] = [];\r\n @Input() multiple: boolean = false;\r\n @Input() enableSearch: boolean = true;\r\n tagSelectorCtrl = new FormControl();\r\n @Input() showAllTags: boolean = false;\r\n @Input() useSelectButtonStyle: boolean = false;\r\n\r\n tags: any[] = [];\r\n\r\n static nextId = 0;\r\n stateChanges = new Subject<void>();\r\n focused = false;\r\n controlType = 'techlify-tagger-selector';\r\n id = `techlify-tagger-selector-${TechlifyTaggerTagSelectorComponent.nextId++}`;\r\n\r\n onChange = (_: any) => { };\r\n onTouched = () => { };\r\n\r\n get apiUrl() {\r\n if (this.showAllTags) {\r\n return 'api/techlify-tagger-tags'\r\n }\r\n else if (this.categories?.length > 0) {\r\n return 'api/techlify-tagger-tags?categories=' + this.categories.join(',');\r\n }\r\n else {\r\n return '';\r\n }\r\n }\r\n\r\n //Default Getter and Setters for a Form Field Implementation\r\n get empty() {\r\n return this.value.length == 0;\r\n }\r\n\r\n get shouldLabelFloat() {\r\n return this.focused || !this.empty;\r\n }\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this._required;\r\n }\r\n set required(value: boolean) {\r\n this._required = coerceBooleanProperty(value);\r\n this.stateChanges.next();\r\n }\r\n private _required = false;\r\n\r\n @Input()\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n set disabled(value: boolean) {\r\n this._disabled = coerceBooleanProperty(value);\r\n this._disabled ? this.tagSelectorCtrl.disable() : this.tagSelectorCtrl.enable();\r\n this.stateChanges.next();\r\n }\r\n private _disabled = false;\r\n\r\n\r\n private _value: any;\r\n @Input()\r\n get value(): any {\r\n return this._value;\r\n }\r\n set value(val: any) {\r\n this._value = val;\r\n this.tagSelectorCtrl.setValue(val);\r\n this.stateChanges.next();\r\n }\r\n\r\n get errorState(): boolean {\r\n return this.tagSelectorCtrl.dirty && this.required && (this.value.length == 0);\r\n }\r\n\r\n @Input()\r\n get placeholder(): string {\r\n return this._placeholder;\r\n }\r\n set placeholder(value: string) {\r\n this._placeholder = value;\r\n this.stateChanges.next();\r\n }\r\n private _placeholder: string;\r\n\r\n\r\n ngOnInit(): void {\r\n if (this.useSelectButtonStyle) {\r\n this.httpService.get(this.apiUrl)\r\n .pipe(untilDestroyed(this))\r\n .subscribe((res: any) => {\r\n this.tags = res.data;\r\n })\r\n }\r\n }\r\n\r\n selectionChange(value: any) {\r\n this.value = value;\r\n this._handleInput();\r\n }\r\n\r\n constructor(\r\n private _focusMonitor: FocusMonitor,\r\n private _elementRef: ElementRef<HTMLElement>,\r\n private httpService: HttpService,\r\n @Optional() @Inject(MAT_FORM_FIELD) public _formField: MatFormField,\r\n @Optional() @Self() public ngControl: NgControl) {\r\n\r\n //Set Focus Monitor\r\n _focusMonitor.monitor(_elementRef, true).subscribe(origin => {\r\n if (this.focused && !origin) {\r\n this.onTouched();\r\n }\r\n this.focused = !!origin;\r\n this.stateChanges.next();\r\n });\r\n\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n setDescribedByIds(ids: string[]) {\r\n // Just a empty implementation for Mat Form Field Interface\r\n }\r\n\r\n onContainerClick() {\r\n // Just a empty implementation for Mat Form Field Interface\r\n }\r\n\r\n writeValue(val: any): void {\r\n this.value = val;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n _handleInput(): void {\r\n this.onChange(this.value);\r\n }\r\n\r\n static ngAcceptInputType_disabled: BooleanInput;\r\n static ngAcceptInputType_required: BooleanInput;\r\n\r\n ngOnDestroy() {\r\n this.stateChanges.complete();\r\n this._focusMonitor.stopMonitoring(this._elementRef);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TechlifyTaggerTagSelectorComponent } from './techlify-tagger-tag-selector.component';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\nimport { MaterialModule } from '../material.module';\r\nimport { SearchableSelectorModule } from '../searchable-selector/searchable-selector.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n TechlifyTaggerTagSelectorComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n MatAutocompleteModule,\r\n ReactiveFormsModule,\r\n SearchableSelectorModule,\r\n MatButtonToggleModule\r\n ],\r\n exports: [TechlifyTaggerTagSelectorComponent]\r\n})\r\nexport class TechlifyTaggerTagSelectorModule { }\r\n","import { DataManager } from './../core/dataManager.service';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TechlifyFeatureService {\r\n\r\n constructor(private dataManager: DataManager) { }\r\n\r\n getFeatures() {\r\n return this.dataManager.GET(`api/features`);\r\n }\r\n\r\n disableFeature(id: any) {\r\n return this.dataManager.GET(`api/feature/${id}/disable`);\r\n }\r\n\r\n enableFeature(id: any) {\r\n return this.dataManager.GET(`api/feature/${id}/enable`);\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { TechlifyFeatureService } from './techlify-feature.service';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { ActionPopup, ActionPopupComponent } from '../action-popup';\r\nimport { DataManager } from '../core/dataManager.service';\r\nimport { ErrorHandlerService } from '../core/error-handler.service';\r\nimport { AlertService } from '../core/alert.service';\r\nimport { StorageService } from '../core/storage.service';\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-techlify-listing-feature',\r\n templateUrl: './techlify-feature-listing.component.html',\r\n styleUrls: ['./techlify-feature-listing.component.scss']\r\n})\r\nexport class TechlifyFeatureListingComponent implements OnInit {\r\n\r\n features: any[] = []\r\n displayedColumns: string[] = [\r\n 'index',\r\n 'feature',\r\n 'description',\r\n 'actions',\r\n ]\r\n\r\n dataSource = new MatTableDataSource()\r\n\r\n page: number = 1;\r\n lastPage: number;\r\n perPage: number = 25;\r\n\r\n isWorking: boolean = false\r\n filterFormGroup: FormGroup;\r\n featureToggleForm: FormGroup;\r\n\r\n constructor(\r\n private dataManager: DataManager,\r\n private errorHandler: ErrorHandlerService,\r\n private fb: FormBuilder,\r\n private alertService: AlertService,\r\n private dialog: MatDialog,\r\n private storage: StorageService,\r\n private featureService: TechlifyFeatureService\r\n ) {\r\n this.filterFormGroup = this.fb.group({\r\n num_items: [\"\"]\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n this.loadData()\r\n this.listenForChanges()\r\n }\r\n\r\n listenForChanges() {\r\n this.filterFormGroup.valueChanges\r\n .pipe(debounceTime(500), untilDestroyed(this))\r\n .subscribe((changes) => {\r\n this.reload()\r\n })\r\n }\r\n\r\n async loadData() {\r\n let result;\r\n try {\r\n this.isWorking = true\r\n var filter = this.filterFormGroup.value\r\n filter.page = this.page;\r\n filter.perPage = this.perPage;\r\n result = await this.dataManager.GET(`api/features`, filter);\r\n this.features = this.features.concat(result.data);\r\n this.dataSource = new MatTableDataSource(this.features);\r\n\r\n if (!this.storage.getItem('features')) {\r\n this.setStorage(this.features);\r\n }\r\n\r\n this.isWorking = false\r\n } catch (error) {\r\n this.errorHandler.handleError(error);\r\n } finally {\r\n this.isWorking = false;\r\n }\r\n }\r\n\r\n async toggeleFeature(element, feature) {\r\n let status = element ? 'Off' : \"On\";\r\n let data;\r\n const dialogRef = this.dialog.open(ActionPopupComponent, {\r\n width: \"400px\",\r\n data: <ActionPopup>{\r\n title: `Turn this feature ${status}?`,\r\n message: `Would you like to turn ${feature.title} feature ${status}`\r\n }\r\n })\r\n\r\n dialogRef.afterClosed().subscribe(async result => {\r\n if (result) {\r\n try {\r\n data = element\r\n ? await this.featureService.disableFeature(feature.id)\r\n : await this.featureService.enableFeature(feature.id);\r\n } catch (error) {\r\n this.errorHandler.handleError(error);\r\n } finally {\r\n this.alertService.addAlert(`You have just turned ${status} the feature ${feature.title}`, 'success');\r\n this.reload();\r\n this.storage.removeItem('features');\r\n this.setStorage(this.features);\r\n this.isWorking = false;\r\n }\r\n } else {\r\n this.reload();\r\n }\r\n })\r\n }\r\n\r\n setStorage(features) {\r\n let localFeatures = [];\r\n for (let feature of features) {\r\n if (!feature.client_feature) {\r\n if (feature.is_enabled_default) {\r\n localFeatures.push(feature.code);\r\n }\r\n } else {\r\n if (feature.client_feature.is_enabled) {\r\n localFeatures.push(feature.code);\r\n }\r\n }\r\n\r\n }\r\n this.storage.setItem(\"features\", localFeatures);\r\n }\r\n\r\n reload() {\r\n this.features = [];\r\n this.page = 1;\r\n if (!this.isWorking) {\r\n this.loadData();\r\n }\r\n }\r\n\r\n onScroll() {\r\n if (!this.isWorking && this.page < this.lastPage) {\r\n this.page += 1;\r\n this.loadData();\r\n }\r\n }\r\n\r\n sortColumn(event) {\r\n var direction = event.direction.toString().toUpperCase()\r\n this.assignFilter(event.active, direction)\r\n this.reload()\r\n }\r\n\r\n assignFilter(column, direction) {\r\n switch (column) {\r\n case 'name': {\r\n return this.filterFormGroup\r\n .get('sort_by')\r\n .setValue('first_name|' + direction)\r\n }\r\n case 'added_on': {\r\n return this.filterFormGroup\r\n .get('sort_by')\r\n .setValue('created_at|' + direction)\r\n }\r\n }\r\n }\r\n\r\n}\r\n","import { AuthenticationGuard } from './../core/authentication.guard';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { TechlifyFeatureListingComponent } from './techlify-feature-listing.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: TechlifyFeatureListingComponent,\r\n canActivate: [AuthenticationGuard]\r\n },\r\n];\r\n\r\nexport const TechlifyFeatureRoutes = RouterModule.forChild(routes);\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'app-on-off-switch',\r\n templateUrl: './on-off-switch.component.html',\r\n styleUrls: ['./on-off-switch.component.scss']\r\n})\r\n\r\nexport class OnOffSwitchComponent implements OnInit {\r\n\r\n @Input() value: boolean;\r\n slideToggle: FormGroup;\r\n\r\n constructor(private fb: FormBuilder) {\r\n this.slideToggle = this.fb.group({\r\n toggle: [\"\"]\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n this.slideToggle.get('toggle').setValue(this.value);\r\n }\r\n\r\n}\r\n","import { Directive, ElementRef, Input } from '@angular/core';\r\nimport { ErrorHandlerService } from '../core/error-handler.service';\r\nimport { StorageService } from '../core/storage.service';\r\nimport { TechlifyFeatureService } from './techlify-feature.service';\r\n\r\n@Directive({\r\n selector: '[techlifyFeatureEnabled]'\r\n})\r\nexport class TechlifyFeatureEnabledDirective {\r\n\r\n features: any;\r\n localFeatures: any[] = [];\r\n @Input('techlifyFeatureEnabled') enabledFeature: any;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private featureService: TechlifyFeatureService,\r\n private errorHandler: ErrorHandlerService,\r\n private storage: StorageService) {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.storage.getItem('features')) {\r\n this.getFeatures();\r\n } else {\r\n this.checkForFeatureEnabled();\r\n }\r\n }\r\n\r\n async getFeatures() {\r\n try {\r\n let features = await this.featureService.getFeatures();\r\n\r\n for (let feature of features.data) {\r\n if (!feature.client_feature) {\r\n if (feature.is_enabled_default) {\r\n this.localFeatures.push(feature.code);\r\n }\r\n } else {\r\n if (feature.client_feature.is_enabled) {\r\n this.localFeatures.push(feature.code);\r\n }\r\n }\r\n\r\n }\r\n this.storage.setItem(\"features\", this.localFeatures);\r\n } catch (error) {\r\n this.errorHandler.handleError(error);\r\n } finally {\r\n this.checkForFeatureEnabled()\r\n }\r\n }\r\n\r\n checkForFeatureEnabled() {\r\n try {\r\n let features = this.storage.getItem('features');\r\n let features_split = features.split(',');\r\n\r\n if (features_split.includes(this.enabledFeature)) {\r\n this.el.nativeElement.style.display = \"show\";\r\n } else {\r\n this.el.nativeElement.remove();\r\n }\r\n\r\n } catch (error) {\r\n this.errorHandler.handleError(error);\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TechlifyFeatureListingComponent } from './techlify-feature-listing.component';\r\n\r\nimport { TechlifyFeatureRoutes } from './techlify-feature.routing';\r\nimport { OnOffSwitchComponent } from './on-off-switch/on-off-switch.component';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { TechlifyFeatureEnabledDirective } from './techlify-feature-enabled.directive';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MaterialModule } from '../material.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n TechlifyFeatureRoutes,\r\n MatSlideToggleModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n InfiniteScrollModule\r\n ],\r\n declarations: [TechlifyFeatureListingComponent, OnOffSwitchComponent, TechlifyFeatureEnabledDirective],\r\n exports: [TechlifyFeatureListingComponent, TechlifyFeatureEnabledDirective]\r\n})\r\nexport class TechlifyFeatureModule { }\r\n","/*\r\n * Public API Surface of ngx-techlify-core\r\n */\r\n\r\nimport { from } from 'rxjs';\r\n\r\nexport * from './lib/action-popup';\r\nexport * from './lib/base-model';\r\nexport * from './lib/data-table';\r\nexport * from './lib/document-viewer';\r\nexport * from './lib/entity-files';\r\nexport * from './lib/file-dropper';\r\nexport * from './lib/note';\r\nexport * from './lib/searchable-selector';\r\nexport * from './lib/utility';\r\nexport * from './lib/timeline-filter';\r\nexport * from './lib/loader';\r\nexport * from './lib/core';\r\n\r\nexport * from './lib/material.module';\r\nexport * from './lib/core/core.module';\r\nexport * from './lib/action-popup/action-popup.module';\r\nexport * from './lib/data-table/data-table.module';\r\nexport * from './lib/document-viewer/document-viewer.module';\r\nexport * from './lib/entity-files/entity-files-view-all.module';\r\nexport * from './lib/file-dropper/file-dropper.module';\r\nexport * from './lib/note/note.module';\r\nexport * from './lib/searchable-selector/searchable-selector.module';\r\nexport * from './lib/utility/utility.module';\r\nexport * from './lib/timeline-filter/timeline-filter.module';\r\nexport * from './lib/loader/loader.module';\r\n\r\nexport * from './lib/email-subscription/email-subscription.module';\r\nexport * from './lib/email-subscription/email-subscription-routing.module';\r\n\r\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user.module';\r\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-routing.module';\r\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module';\r\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module';\r\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module';\r\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module';\r\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module';\r\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module';\r\n\r\nexport * from './lib/email-subscription/email-subscription-type/email-subscription-type-routing.module';\r\nexport * from './lib/email-subscription/email-subscription-type/email-subscription-type.module';\r\nexport * from './lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module';\r\nexport * from './lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module';\r\nexport * from './lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module';\r\nexport * from './lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module';\r\n\r\nexport * from './lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module';\r\nexport * from './lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module';\r\n\r\nexport * from './lib/email-subscription/email-subscription-for-user';\r\nexport * from './lib/email-subscription/email-subscription-type/email-subscription-type-form';\r\nexport * from './lib/email-subscription/email-subscription-type/email-subscription-type-list';\r\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-form';\r\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-list';\r\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-list-filter';\r\n\r\nexport * from './lib/techlify-update/techlify-update.module';\r\nexport * from './lib/techlify-update/techlify-update-history/techlify-update-history.module';\r\nexport * from './lib/techlify-update/update-notifier/update-notifier.module';\r\nexport * from './lib/techlify-update/update-notifier/update-notifier.component';\r\n\r\nexport * from './lib/export-excel/export-excel-button/export-excel-button.component';\r\nexport * from './lib/export-excel/export-excel.module';\r\n\r\n\r\nexport * from './lib/audit-log/audit-log-for-model/audit-log-for-model.component';\r\nexport * from './lib/audit-log/audit-log-for-model/audit-log-for-model.module';\r\nexport * from './lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module';\r\n\r\nexport * from './lib/audit-log/audit-log-list/audit-log-list.component';\r\nexport * from './lib/audit-log/audit-log-list/audit-log-list.module';\r\nexport * from './lib/audit-log/audit-log-list/audit-log-list-routing.module';\r\n\r\nexport * from './lib/audit-log/audit-log-list-filter/audit-log-list-filter.component';\r\nexport * from './lib/audit-log/audit-log-list-filter/audit-log-list-filter.module';\r\nexport * from './lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module';\r\n\r\nexport * from './lib/audit-log/audit-log-view/audit-log-view.component';\r\nexport * from './lib/audit-log/audit-log-view/audit-log-view.module';\r\nexport * from './lib/audit-log/audit-log-view/audit-log-view-routing.module';\r\n\r\nexport * from './lib/audit-log/audit-log-view-model/audit-log-view-model.component';\r\nexport * from './lib/audit-log/audit-log-view-model/audit-log-view-model.module';\r\nexport * from './lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module';\r\n\r\nexport * from './lib/audit-log/audit-logs-view-model/audit-logs-view-model.component';\r\nexport * from './lib/audit-log/audit-logs-view-model/audit-logs-view-model.module';\r\nexport * from './lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module';\r\n\r\nexport * from './lib/audit-log/audit-log.module';\r\nexport * from './lib/audit-log/audit-log-routing.module';\r\n\r\nexport * from './lib/date-validator';\r\n\r\nexport * from './lib/import-csv/import-csv.module';\r\nexport * from './lib/import-csv/import-csv.component';\r\nexport * from './lib/import-csv/import-csv-config';\r\n\r\nexport * from './lib/login-history-for-user/login-history-for-user.module';\r\nexport * from './lib/login-history-for-user/login-history-for-user-routing.module';\r\nexport * from './lib/login-history-for-user/login-history-for-user.component';\r\n\r\nexport * from './lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-config.model';\r\nexport * from './lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component';\r\nexport * from './lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.module';\r\n\r\nexport * from './lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.module';\r\nexport * from './lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component';\r\n\r\nexport * from './lib/read-more/read-more.module';\r\nexport * from './lib/read-more/read-more.component';\r\n\r\nexport * from './lib/techlify-feature/techlify-feature.module';\r\nexport * from './lib/techlify-feature/techlify-feature.routing';\r\nexport * from './lib/techlify-feature/techlify-feature-listing.component';\r\nexport * from './lib/techlify-feature/techlify-feature-enabled.directive';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {ActionPopupComponent as ɵg} from './lib/action-popup/action-popup.component';\nexport {ActionPopup as ɵh} from './lib/action-popup/action-popup.model';\nexport {AlertService as ɵn} from './lib/core/alert.service';\nexport {AuthenticationGuard as ɵbg} from './lib/core/authentication.guard';\nexport {ConfigService as ɵv} from './lib/core/config.service';\nexport {CredentialsService as ɵu} from './lib/core/credentials.service';\nexport {DataManager as ɵbv} from './lib/core/dataManager.service';\nexport {ErrorHandlerService as ɵbw} from './lib/core/error-handler.service';\nexport {FormValidatorService as ɵl} from './lib/core/form-validator.service';\nexport {HTTP_DYNAMIC_INTERCEPTORS as ɵd,HttpService as ɵe} from './lib/core/http.service';\nexport {RouteReusableStrategy as ɵf} from './lib/core/route-reusable-strategy';\nexport {ErrorSnackComponent as ɵc,SuccessSnackComponent as ɵb} from './lib/core/snack/snack.component';\nexport {SnackModule as ɵa} from './lib/core/snack/snack.module';\nexport {StorageService as ɵcc} from './lib/core/storage.service';\nexport {TechlifyConfig as ɵw} from './lib/core/techlify-config.model';\nexport {DataTableComponent as ɵi} from './lib/data-table/data-table.component';\nexport {DocumentViewerComponent as ɵj} from './lib/document-viewer/document-viewer.component';\nexport {EmailSubscriptionForUserComponent as ɵbk} from './lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component';\nexport {EmailSubscriptionTypeFormComponent as ɵbi} from './lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component';\nexport {EmailSubscriptionTypeListComponent as ɵbj} from './lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component';\nexport {EmailSubscriptionUserFormComponent as ɵbe} from './lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component';\nexport {EmailSubscriptionUserListFilterComponent as ɵbh} from './lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component';\nexport {EmailSubscriptionUserListComponent as ɵbf} from './lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component';\nexport {EntityFileFormComponent as ɵk} from './lib/entity-files/entity-file-form/entity-file-form.component';\nexport {EntityFileService as ɵm} from './lib/entity-files/entity-file.service';\nexport {EntityFilesViewAllComponent as ɵo} from './lib/entity-files/entity-files-view-all.component';\nexport {FileDropperComponent as ɵp} from './lib/file-dropper/file-dropper.component';\nexport {DataImportComponent as ɵcb} from './lib/import-csv/data-import/data-import.component';\nexport {FailedItemsListComponent as ɵby} from './lib/import-csv/failed-items-list/failed-items-list.component';\nexport {FieldMappingComponent as ɵbx} from './lib/import-csv/field-mapping/field-mapping.component';\nexport {ImportHistoryListComponent as ɵbz} from './lib/import-csv/import-history-list/import-history-list.component';\nexport {ImportSuccessComponent as ɵca} from './lib/import-csv/import-success/import-success.component';\nexport {LoaderComponent as ɵbd} from './lib/loader/loader.component';\nexport {CommentFormComponent as ɵt} from './lib/note/comment-form/comment-form.component';\nexport {NoteFormComponent as ɵs} from './lib/note/note-form/note-form.component';\nexport {NoteListComponent as ɵq} from './lib/note/note-list/note-list.component';\nexport {NoteService as ɵr} from './lib/note/note.service';\nexport {MatSelectInfiniteScrollDirective as ɵy} from './lib/searchable-selector/mat-select-infinite-scroll.directive';\nexport {SearchableSelectorComponent as ɵx} from './lib/searchable-selector/searchable-selector.component';\nexport {OnOffSwitchComponent as ɵce} from './lib/techlify-feature/on-off-switch/on-off-switch.component';\nexport {TechlifyFeatureService as ɵcd} from './lib/techlify-feature/techlify-feature.service';\nexport {TechlifyUpdateFormComponent as ɵbp} from './lib/techlify-update/techlify-update-form/techlify-update-form.component';\nexport {TechlifyUpdateFormModule as ɵbo} from './lib/techlify-update/techlify-update-form/techlify-update-form.module';\nexport {TechlifyUpdateHistoryRoutingModule as ɵbq} from './lib/techlify-update/techlify-update-history/techlify-update-history-routing.module';\nexport {TechlifyUpdateHistoryComponent as ɵbr} from './lib/techlify-update/techlify-update-history/techlify-update-history.component';\nexport {TechlifyUpdateRoutingModule as ɵbn} from './lib/techlify-update/techlify-update-routing.module';\nexport {TechlifyUpdateService as ɵbm} from './lib/techlify-update/techlify-update.service';\nexport {TechlifyUpdatesListComponent as ɵbl} from './lib/techlify-update/techlify-updates-list/techlify-updates-list.component';\nexport {UpdateNotifierSnackComponent as ɵbs} from './lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component';\nexport {UpdateViewComponent as ɵbu} from './lib/techlify-update/update-view/update-view.component';\nexport {UpdateViewModule as ɵbt} from './lib/techlify-update/update-view/update-view.module';\nexport {TimelineFilterRoutingModule as ɵbc} from './lib/timeline-filter/timeline-filter-routing.module';\nexport {TimelineFilterComponent as ɵbb} from './lib/timeline-filter/timeline-filter.component';\nexport {NumItemsSelector as ɵz} from './lib/utility/num-items-selector.component';\nexport {NumberSelector as ɵba} from './lib/utility/number-selector.component';"],"names":["Component","MatDialogRef","Inject","MAT_DIALOG_DATA","DataTableComponent","MatTableDataSource","EventEmitter","untilDestroyed","Input","Output","ViewChild","MatSort","UntilDestroy","LogLevel","Injectable","MAT_SNACK_BAR_DATA","MatSnackBar","catchError","throwError","log","Observable","HttpResponse","InjectionToken","HttpClient","HttpHandler","Injector","Optional","Validators","FormBuilder","EntityFilesViewAllComponent","FormControl","debounceTime","distinctUntilChanged","Location","MatDialog","errorMessages","SearchableSelectorComponent","Subject","coerceBooleanProperty","of","startWith","switchMap","from","finalize","MatFormFieldControl","FocusMonitor","ElementRef","NgControl","Self","SELECT_ITEM_HEIGHT_EM","takeUntil","fromEvent","tap","Directive","MatSelect","NgZone","moment_","TimelineFilterComponent","DatePipe","NgModule","CommonModule","MatSnackBarModule","MatIconModule","Router","concatMap","RouteReuseStrategy","MatButtonModule","MatCheckboxModule","MatCommonModule","MatDialogModule","MatFormFieldModule","MatInputModule","MatLineModule","MatMenuModule","MatNativeDateModule","MatOptionModule","MatProgressSpinnerModule","MatPseudoCheckboxModule","MatRippleModule","MatSelectModule","MatSortModule","MatTableModule","MatCardModule","MatDividerModule","MatChipsModule","MatDatepickerModule","MatListModule","MatTooltipModule","MatButtonToggleModule","HttpClientModule","RouterModule","SkipSelf","FlexLayoutModule","InfiniteScrollModule","NgxDocViewerModule","FormsModule","ReactiveFormsModule","routes","EmailSubscriptionUserFormComponent","EmailSubscriptionUserListComponent","EmailSubscriptionUserListFilterComponent","EmailSubscriptionTypeFormComponent","EmailSubscriptionTypeListComponent","EmailSubscriptionForUserComponent","Editor","NgxEditorModule","TechlifyUpdatesListComponent","TechlifyUpdateHistoryComponent","MatSnackBarRef","XLSX.utils","XLSX.writeFile","AuditLogViewModelComponent","AuditLogsViewModelComponent","filter","NavigationEnd","AuditLogListComponent","DomSanitizer","AuditLogListFilterComponent","jsondiffpatch.diff","jsondiffpatch.formatters","ActivatedRoute","ChangeDetectorRef","ImportCsvComponent","XLSX.read","LoginHistoryForUserComponent","ENTER","COMMA","TechlifyTaggerTagFormFieldComponent","MatFormField","MAT_FORM_FIELD","MatAutocompleteModule","TechlifyTaggerTagSelectorComponent","TechlifyFeatureListingComponent","MatSlideToggleModule"],"mappings":"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"}
1
+ {"version":3,"file":"ngx-techlify-core.umd.js","sources":["../../../projects/ngx-techlify-core/src/lib/action-popup/action-popup.model.ts","../../../projects/ngx-techlify-core/src/lib/action-popup/action-popup.component.ts","../../../projects/ngx-techlify-core/src/lib/base-model/techlify-form-component.class.ts","../../../projects/ngx-techlify-core/src/lib/base-model/techlify-listing-component.class.ts","../../../projects/ngx-techlify-core/src/lib/base-model/techlify-service.class.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/ngx-techlify-core/src/lib/data-table/data-table.component.ts","../../../projects/ngx-techlify-core/src/lib/data-table/data-table.model.ts","../../../projects/ngx-techlify-core/src/lib/document-viewer/document-viewer.component.ts","../../../projects/ngx-techlify-core/src/lib/document-viewer/viewer-config.model.ts","../../../projects/ngx-techlify-core/src/lib/core/logger.service.ts","../../../projects/ngx-techlify-core/src/lib/core/techlify-config.model.ts","../../../projects/ngx-techlify-core/src/lib/core/config.service.ts","../../../projects/ngx-techlify-core/src/lib/core/snack/snack.component.ts","../../../projects/ngx-techlify-core/src/lib/core/alert.service.ts","../../../projects/ngx-techlify-core/src/lib/core/error-handler.service.ts","../../../projects/ngx-techlify-core/src/lib/core/error-handler.interceptor.ts","../../../projects/ngx-techlify-core/src/lib/core/http-cache.service.ts","../../../projects/ngx-techlify-core/src/lib/core/cache.interceptor.ts","../../../projects/ngx-techlify-core/src/lib/core/api-prefix.interceptor.ts","../../../projects/ngx-techlify-core/src/lib/core/credentials.service.ts","../../../projects/ngx-techlify-core/src/lib/core/token.interceptor.ts","../../../projects/ngx-techlify-core/src/lib/core/header.interceptor.ts","../../../projects/ngx-techlify-core/src/lib/core/http.service.ts","../../../projects/ngx-techlify-core/src/lib/entity-files/entity-file.service.ts","../../../projects/ngx-techlify-core/src/lib/core/form-validator.service.ts","../../../projects/ngx-techlify-core/src/lib/entity-files/entity-file-form/entity-file-form.component.ts","../../../projects/ngx-techlify-core/src/lib/entity-files/entity-files-view-all.component.ts","../../../projects/ngx-techlify-core/src/lib/file-dropper/file-dropper.component.ts","../../../projects/ngx-techlify-core/src/lib/file-dropper/file-dropper.model.ts","../../../projects/ngx-techlify-core/src/lib/note/note.service.ts","../../../projects/ngx-techlify-core/src/lib/note/note-form/note-form.component.ts","../../../projects/ngx-techlify-core/src/lib/note/note-list/note-list.component.ts","../../../projects/ngx-techlify-core/src/lib/note/comment-form/comment-form.component.ts","../../../projects/ngx-techlify-core/src/lib/searchable-selector/searchable-selector.component.ts","../../../projects/ngx-techlify-core/src/lib/searchable-selector/mat-select-infinite-scroll.directive.ts","../../../projects/ngx-techlify-core/src/lib/utility/num-items-selector.component.ts","../../../projects/ngx-techlify-core/src/lib/utility/date-utils.service.ts","../../../projects/ngx-techlify-core/src/lib/utility/number-selector.component.ts","../../../projects/ngx-techlify-core/src/lib/timeline-filter/timeline.model.ts","../../../projects/ngx-techlify-core/src/lib/timeline-filter/calculate-timeline.ts","../../../projects/ngx-techlify-core/src/lib/timeline-filter/timeline-filter.component.ts","../../../projects/ngx-techlify-core/src/lib/loader/loader.component.ts","../../../projects/ngx-techlify-core/src/lib/core/snack/snack.module.ts","../../../projects/ngx-techlify-core/src/lib/core/authentication.guard.ts","../../../projects/ngx-techlify-core/src/lib/core/authentication.service.ts","../../../projects/ngx-techlify-core/src/lib/core/route-reusable-strategy.ts","../../../projects/ngx-techlify-core/src/lib/core/storage.service.ts","../../../projects/ngx-techlify-core/src/lib/core/dataManager.service.ts","../../../projects/ngx-techlify-core/src/lib/material.module.ts","../../../projects/ngx-techlify-core/src/lib/core/core.module.ts","../../../projects/ngx-techlify-core/src/lib/action-popup/action-popup.module.ts","../../../projects/ngx-techlify-core/src/lib/data-table/data-table.module.ts","../../../projects/ngx-techlify-core/src/lib/document-viewer/document-viewer.module.ts","../../../projects/ngx-techlify-core/src/lib/file-dropper/file-dropper.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-config.model.ts","../../../projects/ngx-techlify-core/src/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.module.ts","../../../projects/ngx-techlify-core/src/lib/searchable-selector/searchable-selector.module.ts","../../../projects/ngx-techlify-core/src/lib/read-more/read-more.component.ts","../../../projects/ngx-techlify-core/src/lib/read-more/read-more.module.ts","../../../projects/ngx-techlify-core/src/lib/entity-files/entity-files-view-all.module.ts","../../../projects/ngx-techlify-core/src/lib/note/note.module.ts","../../../projects/ngx-techlify-core/src/lib/utility/utility.module.ts","../../../projects/ngx-techlify-core/src/lib/timeline-filter/timeline-filter-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/timeline-filter/timeline-filter.module.ts","../../../projects/ngx-techlify-core/src/lib/loader/loader.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-type/email-subscription-type-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-type/email-subscription-type.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-update.service.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-update-form/techlify-update-form.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-update-form/techlify-update-form.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-update-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-update.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/update-view/update-view.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-update-history/techlify-update-history.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-update-history/techlify-update-history-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-update-history/techlify-update-history.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/update-view/update-view.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/update-notifier/update-notifier.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/update-notifier/update-notifier.module.ts","../../../projects/ngx-techlify-core/src/lib/export-excel/export-excel-button/export-excel-button.component.ts","../../../projects/ngx-techlify-core/src/lib/export-excel/export-excel.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-view-model/audit-log-view-model.component.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-for-model/audit-log-for-model.component.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-view-model/audit-log-view-model.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-list/audit-log-list-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-list/audit-log-list.component.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/date-validator.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-list-filter/audit-log-list-filter.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-list/audit-log-list.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-logs-view-model/audit-logs-view-model.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-for-model/audit-log-for-model.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-view/audit-log-view.component.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-view/audit-log-view-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-view/audit-log-view.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log.module.ts","../../../projects/ngx-techlify-core/src/lib/import-csv/import-success/import-success.component.ts","../../../projects/ngx-techlify-core/src/lib/import-csv/import-history-list/import-history-list.component.ts","../../../projects/ngx-techlify-core/src/lib/import-csv/field-mapping/field-mapping.component.ts","../../../projects/ngx-techlify-core/src/lib/import-csv/failed-items-list/failed-items-list.component.ts","../../../projects/ngx-techlify-core/src/lib/import-csv/import-csv.component.ts","../../../projects/ngx-techlify-core/src/lib/import-csv/data-import/data-import.component.ts","../../../projects/ngx-techlify-core/src/lib/import-csv/import-csv.module.ts","../../../projects/ngx-techlify-core/src/lib/login-history-for-user/login-history-for-user.component.ts","../../../projects/ngx-techlify-core/src/lib/login-history-for-user/login-history-for-user-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/login-history-for-user/login-history-for-user.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-feature/techlify-feature.service.ts","../../../projects/ngx-techlify-core/src/lib/techlify-feature/techlify-feature-listing.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-feature/techlify-feature.routing.ts","../../../projects/ngx-techlify-core/src/lib/techlify-feature/on-off-switch/on-off-switch.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-feature/techlify-feature-enabled.directive.ts","../../../projects/ngx-techlify-core/src/lib/techlify-feature/techlify-feature.module.ts","../../../projects/ngx-techlify-core/src/public-api.ts","../../../projects/ngx-techlify-core/src/ngx-techlify-core.ts"],"sourcesContent":["export class ActionPopup {\n name: string;\n title: string;\n message: string;\n}","import { Component, OnInit, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { ActionPopup } from './action-popup.model';\n\n@Component({\n selector: 'app-action-popup',\n templateUrl: './action-popup.component.html',\n styleUrls: ['./action-popup.component.scss']\n})\nexport class ActionPopupComponent implements OnInit {\n\n constructor(\n public dialogRef: MatDialogRef<ActionPopupComponent>,\n @Inject(MAT_DIALOG_DATA) public data: ActionPopup,\n ) { }\n\n ngOnInit() {\n }\n\n /**Method to close dialog box */\n closeDialog() {\n this.dialogRef.close();\n }\n\n /**Method to close dialog box with the data given from parent component\n */\n confirm() {\n this.dialogRef.close(this.data);\n }\n\n}\n","import { FormGroup } from '@angular/forms';\nimport { FormValidatorService } from '../core/form-validator.service';\n\n/**\n * Interface used to ensure we have a consistent structure across our form components\n *\n * It also provides some abstraction of repeated code to reduce our codebase size\n *\n * @todo This should be moved to ngx-techlify-core\n *\n * Advantages of this abstract class\n * - Less code, less maintenance, less bugs\n * - more consistent code\n * - comments on more code\n * - save time, save energy\n */\nexport abstract class TechlifyFormComponentInterface {\n\n form: FormGroup;\n errorMessages: any;\n\n constructor(protected formValidatorService: FormValidatorService) {\n\n }\n\n /**\n * Resets the value of a field in the HTML form\n *\n * @param event\n * @param field\n */\n resetFieldValue(event: any, field: string) {\n this.form?.get(field)?.setValue('');\n }\n\n /**\n * Retrieves the value of a field from the HTML form\n *\n * @param field\n * @returns\n */\n getFieldValue(field: string) {\n return this.form?.get(field)?.value;\n }\n\n /**\n * Method to evaluate form fields\n * */\n isFieldValid(field: string) {\n return this.formValidatorService.isFieldValid(field, this.form, true);\n }\n\n /**\n * Method to find error in form fields\n * */\n getErrorMessage(field: string) {\n return this.formValidatorService.getErrorMessage(field, this.form, this.errorMessages);\n }\n\n}\n","/**\n * Interface used to ensure we have a consistent structure across our listing pages\n *\n * @todo This should be moved to ngx-techlify-core\n *\n * Advantages of this abstract class\n * - Less code, less maintenance, less bugs\n * - more consistent code\n * - comments on more code\n * - save time, save energy\n */\nexport abstract class TechlifyListingControllerInterface {\n\n models: any[] = [];\n page: number = 1;\n perPage: number = 25;\n lastPage: number = 500;\n isWorking: boolean = false;\n\n /**\n * Function that listens for any changes in the form group to apply the filters\n */\n abstract listenForChanges(): void;\n\n /**\n * Function that loads the main models of the application\n */\n abstract loadData(): void;\n\n /**\n * Reload all data from page 1\n */\n reload() {\n this.models = [];\n this.page = 1;\n if (!this.isWorking) {\n this.loadData();\n }\n }\n\n /**\n * Can be called when the user is scrolling,\n * to trigger loading a new page of data\n */\n onScroll() {\n if (!this.isWorking && this.page < this.lastPage) {\n this.page += 1;\n this.loadData();\n }\n }\n\n\n /**\n * Function used to pop up the edit form for the model\n *\n * @param model\n */\n abstract editForm(model: any): void;\n\n /**\n * Function used to pop up the delete form for the model\n *\n * @param model\n */\n abstract deleteForm(model: any): void;\n\n}\n","import { HttpService } from '../core/http.service';\n\n/**\n * Interface used to ensure we have a consistent structure across our listing pages\n *\n * @todo This should be moved to ngx-techlify-core\n *\n * Advantages of this abstract class\n * - Less code, less maintenance, less bugs\n * - more consistent code\n * - comments on more code\n * - save time, save energy\n */\nexport class TechlifyServiceBaseClass {\n\n protected baseUrl = \"you-forgot-to-set-a-base-url\";\n\n constructor(protected http: HttpService, baseUrl: string) {\n this.baseUrl = baseUrl;\n }\n\n /**\n * Loads a set of the model this service is for\n *\n * @param filters Restrictors to filter the set of models\n * @returns\n */\n index(filters: any) {\n return this.http.get(`api/${this.baseUrl}`, { params: { ...filters } }).toPromise();\n }\n\n /**\n * Add a new record to the database\n *\n * @param model The data of the model to add\n * @returns\n */\n store(model: any) {\n return this.http.post(`api/${this.baseUrl}`, model).toPromise();\n }\n\n /**\n * Load a single model record, often with all relations and related data\n *\n * @param modelId ID of the model to load\n * @returns\n */\n show(modelId: any) {\n return this.http.get(`api/${this.baseUrl}/${modelId}`).toPromise();\n }\n\n /**\n * Update fields of a single existing model\n *\n * @param model Model to update\n * @returns\n */\n update(model: any) {\n return this.http.put(`api/${this.baseUrl}/${model.id}`, model).toPromise();\n }\n\n /**\n * Delete a single model\n *\n * @param model Model to delete\n * @returns\n */\n delete(model: any) {\n return this.http.delete(`api/${this.baseUrl}/${model.id}`).toPromise();\n }\n\n\n}\n","/*! *****************************************************************************\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(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, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, 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\n/** @deprecated */\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\n/** @deprecated */\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 __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\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\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\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 (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, 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 {\n Component,\n OnInit,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n SimpleChanges,\n AfterViewInit,\n ViewChild\n} from \"@angular/core\";\n\nimport { SelectionModel } from \"@angular/cdk/collections\";\nimport { MatMenuTrigger } from '@angular/material/menu';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { MatSort } from '@angular/material/sort';\nimport { DataTable } from './data-table.model';\nimport { UntilDestroy, untilDestroyed } from \"@ngneat/until-destroy\";\n\n@UntilDestroy()\n@Component({\n selector: \"app-data-table\",\n templateUrl: \"./data-table.component.html\",\n styleUrls: [\"./data-table.component.scss\"]\n})\nexport class DataTableComponent implements OnInit, OnChanges, AfterViewInit {\n\n trigger: MatMenuTrigger;\n\n @Input() data: any;\n\n @Input() config: DataTable;\n\n dataSource: MatTableDataSource<any> = new MatTableDataSource([]);\n\n @Input() selection: SelectionModel<any>;\n\n @Output() action = new EventEmitter();\n @Output() selctionChange = new EventEmitter();\n @Output() rowClick = new EventEmitter();\n @Output() tableScroll = new EventEmitter();\n @Output() sortChanged = new EventEmitter();\n\n page: number;\n lastPage: number;\n perPage: number;\n\n\n @ViewChild(MatSort, { static: true }) sort: MatSort;\n\n static nextId = 0;\n @Input() elementId: string = `data-table-${DataTableComponent.nextId++}`;\n\n constructor() { }\n\n ngOnInit() { }\n\n /**Life cycle hook method */\n ngAfterViewInit() {\n // Assign the data to the data source for the table to render\n this.dataSource = new MatTableDataSource(this.data);\n\n // Emit change in selection\n if (this.selection) {\n this.selection.changed.pipe().subscribe((change: any) => {\n if (this.selection.selected) {\n this.selctionChange.emit(this.selection.selected);\n }\n });\n }\n\n if (this.sort) {\n this.sort.sortChange.pipe(untilDestroyed(this))\n .subscribe((value: any) => {\n this.sortChanged.emit(value);\n })\n }\n }\n\n /** Whether the number of selected elements matches the total number of rows. */\n isAllSelected() {\n const numSelected = this.selection.selected.length;\n const numRows = this.dataSource.data.length;\n return numSelected === numRows;\n }\n\n /** Selects all rows if they are not all selected; otherwise clear selection. */\n masterToggle() {\n this.isAllSelected()\n ? this.clearSelection()\n : this.dataSource.data.forEach(row => this.selection.select(row));\n }\n\n /**clear selection*/\n clearSelection() {\n this.selection.clear();\n this.selctionChange.emit(this.selection.selected);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this.initializeConfig(changes);\n if (changes.data && !changes.data.isFirstChange() && this.dataSource) {\n // If not first change\n this.dataSource.data = changes.data.currentValue;\n }\n }\n\n initializeConfig(changes: SimpleChanges) {\n if (changes.config && !changes.config.isFirstChange()) {\n this.config = changes.config.currentValue;\n }\n this.page = this.config.page || 1;\n this.lastPage = this.config.lastPage || this.page;\n this.perPage = this.config.perPage || 20;\n }\n\n onScroll() {\n if (this.page < this.lastPage) {\n this.page += 1;\n this.tableScroll.emit({ page: this.page, lastPage: this.lastPage, perPage: this.perPage });\n }\n }\n\n /**Method invokes when edit action icon is clickes */\n editClicked(event: any, element: any) {\n this.action.emit({ action: \"edit\", value: element });\n event.stopPropagation();\n }\n\n /**Method invokes when view action icon is clickes */\n viewClicked(event: any, element: any) {\n this.action.emit({ action: \"view\", value: element });\n event.stopPropagation();\n }\n\n /**Method invokes when edit action icon is clickes */\n deactivateClicked(event: any, element: any) {\n this.action.emit({ action: \"deactivate\", value: element });\n event.stopPropagation();\n }\n\n /**Method invokes when download action icon is clickes */\n downloadClicked(event: any, element: any) {\n this.action.emit({ action: \"download\", value: element });\n event.stopPropagation();\n }\n\n /**Method invokes when print action icon is clickes */\n printClicked(event: any, element: any) {\n\n this.action.emit({ action: 'print', value: element });\n event.stopPropagation();\n\n }\n\n /**Method invokes when a row is clicked */\n rowClicked(event: any, element: any) {\n this.rowClick.emit(element);\n event.stopPropagation();\n }\n\n /**Method invokes when menu action icon is hovered */\n actionMenuClick(event: any, element: any, menuValue: string) {\n this.action.emit({ action: menuValue, value: element });\n this.trigger.closeMenu();\n event.stopPropagation();\n }\n\n /**Method invokes when menu action icon is hovered and selects for particular action*/\n actionMenuTriggerClick(event: any, trigger: MatMenuTrigger) {\n this.trigger = trigger;\n event.stopPropagation();\n }\n\n checkEdit(ele: any) {\n if (this.config.editDisableFunction) {\n return this.config.editDisableFunction(ele);\n }\n\n return true;\n }\n\n checkView(ele: any) {\n if (this.config.viewDisableFunction) {\n return this.config.viewDisableFunction(ele);\n }\n\n return true;\n }\n\n checkPrint(ele: any) {\n if (this.config.printDisableFunction) {\n return this.config.printDisableFunction(ele);\n }\n\n return true;\n }\n\n checkActions(ele: any) {\n if (this.config.actionsMenuFunction) {\n return this.config.actionsMenuFunction(ele);\n }\n\n return true;\n }\n\n checkActionButton(ele: any, value: any) {\n if (this.config.actionsMenuButtonFunction) {\n return this.config.actionsMenuButtonFunction(ele, value);\n }\n return true;\n }\n\n getValue(ele: any, keyString: string) {\n keyString = keyString.replace(/\\[(\\w+)\\]/g, \".$1\"); // convert indexes to properties\n keyString = keyString.replace(/^\\./, \"\"); // strip a leading dot\n const keyList = keyString.split(\".\");\n for (let i = 0, n = keyList.length; i < n; ++i) {\n const key = keyList[i];\n if (ele && key in ele) {\n ele = ele[key];\n } else {\n return;\n }\n }\n return ele;\n }\n\n ngOnDestroy() {\n //Until Destroy uses it.\n }\n}\n","export class DataTable {\n displayedColumns: string[];\n columnsConfig: ColumnConfig[];\n actionsConfig?: ActionConfig;\n enableRowClick?: boolean;\n disableElevation?: boolean;\n downloadLink?: string;\n actionsMenuFunction?: any;\n actionsMenuButtonFunction?: any;\n editDisableFunction?: any;\n viewDisableFunction?: any;\n printDisableFunction?: any;\n customActionLabel?: string;\n stickyHeader?: boolean;\n page?: number;\n lastPage?: number;\n perPage?: number;\n pageSizeOptions?: number[];\n style?: any;\n}\n\nclass ColumnConfig {\n title: string;\n value: string;\n sort?: boolean;\n dateField?: boolean;\n currencyField?: boolean;\n format?: string;\n}\n\nclass ActionConfig {\n edit?: boolean;\n view?: boolean;\n download?: boolean;\n print?: boolean;\n deactivate?: boolean;\n actionsMenu?: ActionsMenu[];\n}\n\nclass ActionsMenu {\n name: string;\n value: string;\n}\n\nexport class PageEvent {\n page: number;\n lastPage?: number;\n perPage: number;\n}\n","import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';\nimport { ViewerConfig } from './viewer-config.model';\n\n@Component({\n selector: 'app-document-viewer',\n templateUrl: './document-viewer.component.html',\n styleUrls: ['./document-viewer.component.css']\n})\nexport class DocumentViewerComponent implements OnInit {\n\n\n @Input() config!: ViewerConfig;\n\n @Input() file!: any;\n\n @Input() fileUrl!: any;\n\n @Input() disableEdit: boolean;\n\n @Output() remove = new EventEmitter();\n viewerType: any;\n\n constructor() { }\n\n ngOnInit(): void {\n this.initData();\n }\n\n removeFile() {\n this.remove.emit();\n }\n\n initData() {\n if (this.file) {\n var ext = this.getFileExtension(this.file);\n if (ext === 'ppt' || ext === 'pptx' || ext === 'doc' || ext === 'docx' || ext === 'xls' || ext === 'xlsx') {\n this.viewerType = \"office\";\n }\n else if (ext === 'jpg' || ext === 'jpeg' || ext === 'png' || ext === 'gif') {\n this.viewerType = \"image\";\n }\n else if (ext === 'pdf') {\n this.viewerType = \"pdf\";\n }\n else {\n this.viewerType = null;\n }\n }\n }\n\n get fileName() {\n if (this.file) {\n let nameArray = this.file.split('/');\n if (nameArray.length === 2) {\n return nameArray[1];\n }\n return nameArray[0];\n }\n return '';\n }\n\n getFileExtension(file: any) {\n return file.split('.').pop();\n }\n\n}\n","export class ViewerConfig {\n imageStyle?: any;\n viewerStyle?: any;\n hideRemove?: boolean;\n}\n","/**\n * Simple logger system with the possibility of registering custom outputs.\n *\n * 4 different log levels are provided, with corresponding methods:\n * - debug : for debug information\n * - info : for informative status of the application (success, ...)\n * - warning : for non-critical errors that do not prevent normal application behavior\n * - error : for critical errors that prevent normal application behavior\n *\n * Example usage:\n * ```\n * import { Logger } from 'app/core/logger.service';\n *\n * const log = new Logger('myFile');\n * ...\n * log.debug('something happened');\n * ```\n *\n * To disable debug and info logs in production, add this snippet to your root component:\n * ```\n * export class AppComponent implements OnInit {\n * ngOnInit() {\n * if (environment.production) {\n * Logger.enableProductionMode();\n * }\n * ...\n * }\n * }\n *\n * If you want to process logs through other outputs than console, you can add LogOutput functions to Logger.outputs.\n */\n\n/**\n * The possible log levels.\n * LogLevel.Off is never emitted and only used with Logger.level property to disable logs.\n */\nexport enum LogLevel {\n Off = 0,\n Error,\n Warning,\n Info,\n Debug\n}\n\n/**\n * Log output handler function.\n */\nexport type LogOutput = (source: string | undefined, level: LogLevel, ...objects: any[]) => void;\n\nexport class Logger {\n\n /**\n * Current logging level.\n * Set it to LogLevel.Off to disable logs completely.\n */\n static level = LogLevel.Debug;\n\n /**\n * Additional log outputs.\n */\n static outputs: LogOutput[] = [];\n\n /**\n * Enables production mode.\n * Sets logging level to LogLevel.Warning.\n */\n static enableProductionMode() {\n Logger.level = LogLevel.Warning;\n }\n\n constructor(private source?: string) { }\n\n /**\n * Logs messages or objects with the debug level.\n * Works the same as console.log().\n */\n debug(...objects: any[]) {\n this.log(console.log, LogLevel.Debug, objects);\n }\n\n /**\n * Logs messages or objects with the info level.\n * Works the same as console.log().\n */\n info(...objects: any[]) {\n this.log(console.info, LogLevel.Info, objects);\n }\n\n /**\n * Logs messages or objects with the warning level.\n * Works the same as console.log().\n */\n warn(...objects: any[]) {\n this.log(console.warn, LogLevel.Warning, objects);\n }\n\n /**\n * Logs messages or objects with the error level.\n * Works the same as console.log().\n */\n error(...objects: any[]) {\n this.log(console.error, LogLevel.Error, objects);\n }\n\n private log(func: (...args: any[]) => void, level: LogLevel, objects: any[]) {\n if (level <= Logger.level) {\n const log = this.source ? ['[' + this.source + ']'].concat(objects) : objects;\n func.apply(console, log);\n Logger.outputs.forEach(output => output.apply(output, [this.source, level, ...objects]));\n }\n }\n\n}\n","/**\n * Class that stores the configuration data\n *\n * @author Joshua Kissoon\n * @since 20180724\n */\nexport class TechlifyConfig {\n projectKey: string = '';\n environment: string = '';\n authClientSecret: string = '';\n authGrantType: string = '';\n apiUrl: string = '';\n rawConfigs: any;\n storage: Storage;\n isLogoutWhileApiGetsFailed: boolean = false;\n\n constructor(data: any) {\n this.loadFromMap(data);\n }\n\n loadFromMap(data: any) {\n this.projectKey = data.projectKey;\n this.environment = data.environment;\n this.authClientSecret = data.authClientSecret;\n this.authGrantType = data.authGrantType;\n this.apiUrl = data.apiUrl;\n this.storage = data?.storage;\n this.rawConfigs = data;\n this.isLogoutWhileApiGetsFailed = data?.isLogoutWhileApiGetsFailed;\n }\n\n}\n","import { Injectable } from '@angular/core';\n\nimport { TechlifyConfig } from \"./techlify-config.model\";\n\n/**\n * Service that provides settings for all other services\n *\n * @author Joshua Kissoon\n * @since 20170709\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfigService {\n\n public static BASE_CREDENTIALS = \"credentials\";\n\n private config: TechlifyConfig;\n\n constructor(config: TechlifyConfig) {\n this.config = config;\n }\n\n getConfigsRaw() {\n return this.config.rawConfigs;\n }\n\n getProjectKey() {\n return this.config.projectKey;\n }\n\n getApiUrl() {\n return this.config.apiUrl;\n }\n\n getAuthClientSecret() {\n return this.config.authClientSecret;\n }\n\n getStorage() {\n return this.config.storage ? this.config.storage : localStorage;\n }\n\n getAuthGrantType() {\n return this.config.authGrantType;\n }\n\n getCredentialsKey() {\n return this.config.projectKey + \"_\" + ConfigService.BASE_CREDENTIALS;\n }\n\n}\n","import { Component, Inject } from '@angular/core';\nimport { MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\n\n@Component({\n selector: 'snack-bar-component-example-snack',\n templateUrl: 'success-snack.html',\n styleUrls: ['./snack.scss'],\n})\nexport class SuccessSnackComponent {\n constructor(@Inject(MAT_SNACK_BAR_DATA) public data: any) { }\n}\n@Component({\n selector: 'snack-bar-component-example-snack',\n templateUrl: 'error-snack.html',\n styleUrls: ['./snack.scss'],\n})\nexport class ErrorSnackComponent {\n constructor(@Inject(MAT_SNACK_BAR_DATA) public data: any) { }\n}\n","import { Injectable } from '@angular/core';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { ErrorSnackComponent, SuccessSnackComponent } from './snack/snack.component';\r\n\r\n/**\r\n * Service used to manage alerts in the entire system frontend\r\n * \r\n * @author Gokula Prasanna\r\n * @since 20210131\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AlertService {\r\n\r\n constructor(public snackBar: MatSnackBar) { }\r\n\r\n addAlert(message: string, alertType: string, duration = 3) {\r\n if (alertType == \"success\") {\r\n this.snackBar.openFromComponent(SuccessSnackComponent, {\r\n duration: 1000 * duration,\r\n data: message\r\n });\r\n }\r\n else {\r\n this.snackBar.openFromComponent(ErrorSnackComponent, {\r\n duration: 1000 * duration,\r\n data: message\r\n });\r\n }\r\n }\r\n}\r\n","import { TechlifyConfig } from './techlify-config.model';\r\nimport { Injectable } from \"@angular/core\";\r\nimport { AlertService } from \"./alert.service\";\r\n\r\n\r\n/**\r\n * Service used to handle errors from the request\r\n *\r\n * @author Joshua Kissoon\r\n * @since 20171202\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ErrorHandlerService {\r\n\r\n constructor(private alerter: AlertService,\r\n private config: TechlifyConfig,\r\n ) {\r\n }\r\n\r\n handleError(errorResponse: any, msg: string = '') {\r\n // 1 - Create empty array to store errors\r\n const errors = [];\r\n\r\n // 2 - check if the error object is present in the response\r\n if (errorResponse?.error) {\r\n\r\n // 3 - Check for Laravel form validation error messages object\r\n if (errorResponse?.error?.errors) {\r\n\r\n // 4 - For each error property (which is a form field)\r\n for (const property in errorResponse.error.errors) {\r\n\r\n if (errorResponse.error.errors?.hasOwnProperty(property)) {\r\n\r\n // 5 - Extract it's array of errors\r\n const propertyErrors: Array<string> = errorResponse?.error?.errors[property];\r\n\r\n // 6 - Push all errors in the array to the errors array\r\n propertyErrors.forEach(error => errors.push(error));\r\n }\r\n\r\n }\r\n }\r\n\r\n if (errors.length === 0) {\r\n // 7 - Push the main error message to the array of errors if there is no validation error\r\n errors.push(errorResponse.error.message ? errorResponse.error.message : errorResponse.error?.error);\r\n }\r\n }\r\n var errMessage = errors.length ? errors[0] : msg;\r\n this.alerter.addAlert(\"Error: \" + errMessage, \"warning\");\r\n\r\n if (errorResponse.status == 403 && this.config.isLogoutWhileApiGetsFailed) {\r\n sessionStorage.clear();\r\n localStorage.clear();\r\n location.reload();\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpErrorResponse } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { Logger } from './logger.service';\nimport { ConfigService } from './config.service';\nimport { ErrorHandlerService } from './error-handler.service';\n\nconst log = new Logger('ErrorHandlerInterceptor');\n\n/**\n * Adds a default error handler to all requests.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ErrorHandlerInterceptor implements HttpInterceptor {\n\n constructor(private configService: ConfigService, private errorHandler: ErrorHandlerService) { }\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n return next.handle(request).pipe(catchError(error => this.handleError(error)));\n }\n\n // Customize the default error handler here if needed\n private handleError(error: HttpErrorResponse): Observable<HttpEvent<any>> {\n let errorMessage = '';\n if (error.error instanceof ErrorEvent) {\n // client-side error\n errorMessage = `Client Error: ${this.configService?.getProjectKey()}: ${error.error.message}`;\n } else {\n // server-side error\n errorMessage = `Server Error: ${this.configService?.getProjectKey()}`;\n try {\n this.errorHandler.handleError(error, 'Unexpected Server Error, try later or contact service team');\n } catch (e) {\n console.log(\"Unable to handle server error\", e);\n }\n }\n return throwError(error);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { HttpResponse } from '@angular/common/http';\nimport { ConfigService } from './config.service';\nimport { Logger } from './logger.service';\n\nconst log = new Logger('HttpCacheService');\n\n\nexport interface HttpCacheEntry {\n lastUpdated: Date;\n data: HttpResponse<any>;\n}\n\n/**\n * Provides a cache facility for HTTP requests with configurable persistence policy.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class HttpCacheService {\n\n private cachedData: { [key: string]: HttpCacheEntry; } = {};\n private storage: Storage | any | null;\n private cachePersistenceKey: String | any;\n\n constructor(private configService: ConfigService) {\n this.storage = this.configService.getStorage();\n this.cachePersistenceKey = this.configService.getProjectKey() + '_HTTP_CACHE';\n this.loadCacheData();\n }\n\n /**\n * Sets the cache data for the specified request.\n * @param {!string} url The request URL.\n * @param {ResponseOptions} data The received data.\n * @param {Date=} lastUpdated The cache last update, current date is used if not specified.\n */\n setCacheData(url: string, data: HttpResponse<any>, lastUpdated?: Date) {\n this.cachedData[url] = {\n lastUpdated: lastUpdated || new Date(),\n data: data\n };\n log.debug(`Cache set for key: \"${url}\"`);\n this.saveCacheData();\n }\n\n /**\n * Gets the cached data for the specified request.\n * @param {!string} url The request URL.\n * @return {?ResponseOptions} The cached data or null if no cached data exists for this request.\n */\n getCacheData(url: string): HttpResponse<any> | null {\n const cacheEntry = this.cachedData[url];\n\n if (cacheEntry) {\n log.debug(`Cache hit for key: \"${url}\"`);\n return cacheEntry.data;\n }\n\n return null;\n }\n\n /**\n * Gets the cached entry for the specified request.\n * @param {!string} url The request URL.\n * @return {?HttpCacheEntry} The cache entry or null if no cache entry exists for this request.\n */\n getHttpCacheEntry(url: string): HttpCacheEntry | null {\n return this.cachedData[url] || null;\n }\n\n /**\n * Clears the cached entry (if exists) for the specified request.\n * @param {!string} url The request URL.\n */\n clearCache(url: string): void {\n delete this.cachedData[url];\n log.debug(`Cache cleared for key: \"${url}\"`);\n this.saveCacheData();\n }\n\n /**\n * Cleans cache entries older than the specified date.\n * @param {date=} expirationDate The cache expiration date. If no date is specified, all cache is cleared.\n */\n cleanCache(expirationDate?: Date) {\n if (expirationDate) {\n Object(this.cachedData).keys.forEach((key: string) => {\n if (expirationDate >= this.cachedData[key]?.lastUpdated) {\n delete this.cachedData[key];\n }\n });\n } else {\n this.cachedData = {};\n }\n this.saveCacheData();\n }\n\n /**\n * Sets the cache persistence policy.\n * Note that changing the cache persistence will also clear the cache from its previous storage.\n * @param {'local'|'session'=} persistence How the cache should be persisted, it can be either local or session\n * storage, or if no value is provided it will be only in-memory (default).\n */\n setPersistence(persistence?: 'local' | 'session') {\n this.cleanCache();\n this.storage = persistence === 'local' ? localStorage : persistence === 'session' ? sessionStorage : null;\n this.loadCacheData();\n }\n\n private saveCacheData() {\n if (this.storage) {\n this.storage[this.cachePersistenceKey] = JSON.stringify(this.cachedData);\n }\n }\n\n private loadCacheData() {\n const data = this.storage ? this.storage[this.cachePersistenceKey] : null;\n this.cachedData = data ? JSON.parse(data) : {};\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { HttpCacheService } from './http-cache.service';\nimport { Observable, Subscriber } from 'rxjs';\n\n/**\n * Caches HTTP requests.\n * Use ExtendedHttpClient fluent API to configure caching for each request.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class CacheInterceptor implements HttpInterceptor {\n\n private forceUpdate = false;\n\n constructor(private httpCacheService: HttpCacheService) { }\n\n /**\n * Configures interceptor options\n * @param {{update: boolean}} options If update option is enabled, forces request to be made and updates cache entry.\n * @return {CacheInterceptor} The configured instance.\n */\n configure(options?: { update?: boolean } | null): CacheInterceptor {\n const instance = new CacheInterceptor(this.httpCacheService);\n if (options && options.update) {\n instance.forceUpdate = true;\n }\n return instance;\n }\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n if (request.method !== 'GET') {\n return next.handle(request);\n }\n\n return new Observable((subscriber: Subscriber<HttpEvent<any>>) => {\n const cachedData = this.forceUpdate ? null : this.httpCacheService.getCacheData(request.urlWithParams);\n if (cachedData !== null) {\n // Create new response to avoid side-effects\n subscriber.next(new HttpResponse(cachedData as Object));\n subscriber.complete();\n } else {\n next.handle(request)\n .subscribe(\n event => {\n if (event instanceof HttpResponse) {\n this.httpCacheService.setCacheData(request.urlWithParams, event);\n }\n subscriber.next(event);\n },\n error => subscriber.error(error),\n () => subscriber.complete()\n );\n }\n });\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { ConfigService } from './config.service';\n\n/**\n * Prefixes all requests not starting with `http[s]` with `environment.serverUrl`.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ApiPrefixInterceptor implements HttpInterceptor {\n\n constructor(private configService: ConfigService) { }\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n if (!/^(http|https):/i.test(request.url)) {\n request = request.clone({ url: this.configService.getApiUrl() + request.url });\n }\n return next.handle(request);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ConfigService } from './config.service';\n\nexport interface Credentials {\n // Customize received credentials here\n user: any;\n token: any;\n}\n\n/**\n * Provides storage for authentication credentials.\n * The Credentials interface should be replaced with proper implementation.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class CredentialsService {\n\n private _credentials: Credentials | null = null;\n\n constructor(private configService: ConfigService) {\n }\n\n /**\n * Checks is the user is authenticated.\n * @return True if the user is authenticated.\n */\n get isAuthenticated(): boolean {\n return !!this.credentials;\n }\n\n /**\n * Gets the user credentials.\n * @return The user credentials or null if the user is not authenticated.\n */\n get credentials(): Credentials | null {\n if (!this._credentials) {\n this._credentials = JSON.parse(sessionStorage.getItem(this.configService.getCredentialsKey()) || localStorage.getItem(this.configService.getCredentialsKey()));\n }\n return this._credentials;\n }\n\n /**\n * Sets the user credentials.\n * The credentials may be persisted across sessions by setting the `remember` parameter to true.\n * Otherwise, the credentials are only persisted for the current session.\n * @param credentials The user credentials.\n * @param remember True to remember credentials across sessions.\n */\n setCredentials(credentials?: Credentials, remember?: boolean) {\n this._credentials = credentials || null;\n\n if (credentials) {\n (remember ? localStorage : sessionStorage).setItem(this.configService.getCredentialsKey(), JSON.stringify(credentials));\n } else {\n sessionStorage.clear();\n localStorage.clear();\n this._credentials = null;\n }\n }\n\n getAccessToken(): string | null {\n const expiration = this.credentials?.token?.expires_in || '';\n const token = this.credentials?.token?.access_token || '';\n\n if (!token || !expiration) {\n return null;\n }\n\n if (Date.now() > parseInt(expiration)) {\n this.setCredentials();\n return null;\n }\n\n return token;\n }\n\n getExpiration(): string {\n return this.credentials?.token?.expires_in || '';\n }\n\n getRefreshToken(): string {\n return this.credentials?.token?.refresh_token || '';\n }\n\n refresh(): CredentialsService {\n this._credentials = null;\n return this;\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { CredentialsService } from './credentials.service';\n\n\n/**\n * Prefixes all requests not starting with `http[s]` with `environment.serverUrl`.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class TokenInterceptor implements HttpInterceptor {\n\n constructor(private credentials: CredentialsService) { }\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n request = request.clone({\n setHeaders: {\n Authorization: `Bearer ${this.credentials.getAccessToken() || ''}`\n }\n });\n return next.handle(request);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n\n/**\n * Prefixes all requests not starting with `http[s]` with `environment.serverUrl`.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class HeaderInterceptor implements HttpInterceptor {\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n request = request.clone({\n setHeaders: {\n 'Content-Type': request.headers.get('Content-Type') || 'application/json',\n }\n });\n return next.handle(request);\n }\n}\n","import { Inject, Injectable, InjectionToken, Injector, Optional } from '@angular/core';\nimport { HttpClient, HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';\n\nimport { Observable } from 'rxjs';\nimport { ErrorHandlerInterceptor } from './error-handler.interceptor';\nimport { CacheInterceptor } from './cache.interceptor';\nimport { ApiPrefixInterceptor } from './api-prefix.interceptor';\nimport { TokenInterceptor } from './token.interceptor';\nimport { HeaderInterceptor } from './header.interceptor';\n\n\n// Augment HttpClient with the added configuration methods from HttpService, to allow in-place replacement of\n// HttpClient with HttpService using dependency injection\nexport interface HttpCustomClient {\n\n /**\n * Enables caching for this request.\n * @param {boolean} forceUpdate Forces request to be made and updates cache entry.\n * @return {HttpCustomClient} The new instance.\n */\n cache(forceUpdate?: boolean): HttpCustomClient;\n\n /**\n * Skips default error handler for this request.\n * @return {HttpCustomClient} The new instance.\n */\n skipErrorHandler(): HttpCustomClient;\n\n /**\n * Skips default API Prefix for this request.\n * @return {HttpCustomClient} The new instance.\n */\n skipApiPrefix(): HttpCustomClient;\n\n\n /**\n * Skips default Token Interceptor for this request.\n * @return {HttpCustomClient} The new instance.\n */\n skipToken(): HttpCustomClient;\n\n /**\n* Skips default Header Interceptor for this request.\n* @return {HttpCustomClient} The new instance.\n*/\n skipHeader(): HttpCustomClient;\n\n}\n\n\n// From @angular/common/http/src/interceptor: allows to chain interceptors\nclass HttpInterceptorHandler implements HttpHandler {\n\n constructor(private next: HttpHandler, private interceptor: HttpInterceptor) { }\n\n handle(request: HttpRequest<any>): Observable<HttpEvent<any>> {\n return this.interceptor.intercept(request, this.next);\n }\n\n}\n\n/**\n * Allows to override default dynamic interceptors that can be disabled with the HttpService extension.\n * Except for very specific needs, you should better configure these interceptors directly in the constructor below\n * for better readability.\n *\n * For static interceptors that should always be enabled (like ApiPrefixInterceptor), use the standard\n * HTTP_INTERCEPTORS token.\n */\nexport const HTTP_DYNAMIC_INTERCEPTORS = new InjectionToken<HttpInterceptor>('HTTP_DYNAMIC_INTERCEPTORS');\n\n/**\n * Extends HttpClient with per request configuration using dynamic interceptors.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class HttpService extends HttpClient implements HttpCustomClient {\n\n constructor(private httpHandler: HttpHandler,\n private injector: Injector,\n @Optional() @Inject(HTTP_DYNAMIC_INTERCEPTORS) private interceptors: HttpInterceptor[] = []) {\n super(httpHandler);\n\n if (!this.interceptors) {\n // Configure default interceptors that can be disabled here\n this.interceptors = [this.injector.get(ApiPrefixInterceptor), this.injector.get(HeaderInterceptor), this.injector.get(TokenInterceptor), this.injector.get(ErrorHandlerInterceptor)];\n }\n }\n\n cache(forceUpdate?: boolean): HttpService {\n const cacheInterceptor = this.injector.get(CacheInterceptor).configure({ update: forceUpdate });\n return this.addInterceptor(cacheInterceptor);\n }\n\n skipErrorHandler(): HttpService {\n return this.removeInterceptor(ErrorHandlerInterceptor);\n }\n\n skipApiPrefix(): HttpService {\n return this.removeInterceptor(ApiPrefixInterceptor);\n }\n\n skipToken(): HttpService {\n return this.removeInterceptor(TokenInterceptor);\n }\n\n skipHeader(): HttpService {\n return this.removeInterceptor(HeaderInterceptor);\n }\n\n // Override the original method to wire interceptors when triggering the request.\n request(method?: any, url?: any, options?: any): any {\n const handler = this.interceptors.reduceRight(\n (next, interceptor) => new HttpInterceptorHandler(next, interceptor),\n this.httpHandler\n );\n return new HttpClient(handler).request(method, url, options);\n }\n\n private removeInterceptor(interceptorType: Function): HttpService {\n return new HttpService(\n this.httpHandler,\n this.injector,\n this.interceptors.filter(i => !(i instanceof interceptorType))\n );\n }\n\n private addInterceptor(interceptor: HttpInterceptor): HttpService {\n return new HttpService(\n this.httpHandler,\n this.injector,\n this.interceptors.concat([interceptor])\n );\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { HttpService } from '../core/http.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EntityFileService {\n\n constructor(private http: HttpService) { }\n\n getEntityFiles(filters: any) {\n return this.http.get(`api/entity-files`, { params: filters }).toPromise();\n }\n\n createEntityFile(model: any) {\n return this.http.post(\"api/entity-files\", model).toPromise();\n }\n\n updateEntityFile(model: any) {\n return this.http.put(`api/entity-files/${model.id}`, model).toPromise();\n }\n\n deleteEntityFile(model: any) {\n return this.http.delete(`api/entity-files/${model.id}`).toPromise();\n }\n\n uploadEntityFile(file: File, params?: any) {\n const formData: FormData = new FormData();\n formData.append(\"fileData\", file, file.name);\n if (params?.entity_id) {\n formData.append('entity_id', params.entity_id);\n formData.append('entity_type', params.entity_type);\n }\n return this.http\n .skipHeader()\n .post(\n \"api/entity-files-upload\",\n formData,\n ).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FormValidatorService {\n\n constructor() { }\n\n /**Method to evaluate form fields*/\n isFieldValid(field: string, formGroup: FormGroup | any, firstAttempt?: boolean) {\n return (!formGroup.get(field).valid && formGroup.get(field).touched) ||\n (!formGroup.get(field).valid && formGroup.get(field).untouched && firstAttempt);\n }\n\n /**Method to find error in form fields*/\n getErrorMessage(field: string, formGroup: FormGroup | any, errorMessages: any, errorField?: string) {\n const error = Object.keys(formGroup.get(field).errors);\n return (error.length > 0) ? (errorMessages[errorField || field][error[0]] ? errorMessages[errorField || field][error[0]] : '') : '';\n }\n\n}\n","import { Component, OnInit, Inject } from \"@angular/core\";\nimport { MatDialogRef, MAT_DIALOG_DATA } from \"@angular/material/dialog\";\nimport { FormGroup, FormBuilder, Validators } from \"@angular/forms\";\nimport { EntityFileService } from '../entity-file.service';\nimport { FileDropperConfig } from '../../file-dropper/file-dropper.model';\nimport { ViewerConfig } from '../../document-viewer/viewer-config.model';\nimport { FormValidatorService } from '../../core/form-validator.service';\nimport { AlertService } from \"../../core/alert.service\";\n\nconst errorMessages: any = {\n url: {\n required: \"File is required\"\n },\n};\n\n@Component({\n selector: 'entity-file-form',\n templateUrl: './entity-file-form.component.html',\n styleUrls: ['./entity-file-form.component.css']\n})\nexport class EntityFileFormComponent implements OnInit {\n\n entityFileGroup: FormGroup;\n assignmentFileFirstAttempt: boolean;\n updateMode: boolean;\n fileConfig: FileDropperConfig;\n fileList: any[] = [];\n viewerConfig: ViewerConfig;\n hideTitleAndDetails: boolean;\n\n /**\n * Should we allow tagging entity-files?\n */\n useTechlifyTags: boolean = false;\n\n constructor(\n public dialogRef: MatDialogRef<EntityFileFormComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n private formValidatorService: FormValidatorService,\n private fb: FormBuilder,\n private entityFileService: EntityFileService,\n private alertService: AlertService\n ) {\n this.createForm();\n }\n\n /** Method to create a form **/\n private createForm() {\n //TODO: Finialize and add more validations.\n this.entityFileGroup = this.fb.group({\n id: [''],\n title: [''],\n details: [''],\n entity_type: [''],\n entity_id: [],\n file: ['', Validators.required],\n url: ['', Validators.required],\n file_size: ['', Validators.required],\n tag_ids: [[]]\n });\n }\n\n ngOnInit(): void {\n if (this.data.entity) {\n this.entityFileGroup.get('entity_type').setValue(this.data.entity.entity_type);\n this.entityFileGroup.get('entity_id').setValue(this.data.entity.entity_id);\n }\n if (this.data.file) {\n this.updateMode = true;\n this.entityFileGroup.patchValue(this.data.file);\n }\n\n if (this.data?.hideTitleAndDetails) {\n this.hideTitleAndDetails = this.data?.hideTitleAndDetails;\n }\n\n if (this.data?.useTechlifyTags) {\n this.useTechlifyTags = this.data?.useTechlifyTags;\n }\n\n //File dropper config\n this.fileConfig = {\n fileId: \"subjectFile\",\n containerId: \"subjectFileContainer\",\n styles: {\n height: \"200px\"\n },\n multiple: false,\n acceptFile: \"*\",\n maxSize: 10,\n acceptFileText: \"All Files\"\n };\n\n this.viewerConfig = {\n viewerStyle: {\n height: '200px',\n width: '100%'\n }\n }\n }\n\n\n //Method to trigger submit\n async submit() {\n this.assignmentFileFirstAttempt = true;\n if (!this.entityFileGroup.valid) {\n return;\n }\n const model = this.entityFileGroup.value;\n\n if (this.hideTitleAndDetails) {\n model.title = model.file;\n }\n model.tag_ids = model.tag_ids.toString();\n\n const result: any = this.updateMode\n ? await this.entityFileService.updateEntityFile(model)\n : await this.entityFileService.createEntityFile(model);\n this.dialogRef.close(result.item);\n this.alertService.addAlert(\n \"File submitted successfully\",\n \"success\"\n );\n\n }\n\n async fileChanged(event: any) {\n this.fileList = event;\n\n if (this.fileList.length > 0) {\n\n const result: any = await this.entityFileService.uploadEntityFile(\n this.fileList[0],\n );\n this.entityFileGroup.patchValue(result.item);;\n this.fileList = [];\n }\n }\n\n\n async removeFile() {\n if (this.entityFileGroup.value.file) {\n try {\n this.entityFileGroup.patchValue({\n file: \"\",\n url: \"\"\n });\n } catch (error) {\n this.alertService.addAlert(\"Unable to remove file, try later\", \"warn\");\n }\n }\n }\n\n /**Method to evaluate form fields*/\n isFieldValid(field: string) {\n return this.formValidatorService.isFieldValid(\n field,\n this.entityFileGroup,\n this.assignmentFileFirstAttempt\n );\n }\n\n /**Method to find error in form fields*/\n getErrorMessage(field: string) {\n return this.formValidatorService.getErrorMessage(\n field,\n this.entityFileGroup,\n errorMessages\n );\n }\n\n}\n","import { Component, OnInit, Input } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { MatDialog } from '@angular/material/dialog';\nimport { EntityFileFormComponent } from './entity-file-form/entity-file-form.component';\nimport { EntityFileService } from './entity-file.service';\nimport { ActionPopup } from '../action-popup/action-popup.model';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { UntilDestroy, untilDestroyed } from \"@ngneat/until-destroy\";\nimport { debounceTime } from 'rxjs/operators';\nimport { AlertService } from '../core/alert.service';\nimport { ActionPopupComponent } from '../action-popup/action-popup.component';\nimport { ViewerConfig } from '../document-viewer/viewer-config.model';\nimport { FileDropperConfig } from '../file-dropper';\n\n\n@UntilDestroy()\n@Component({\n selector: 'app-entity-files-view-all',\n templateUrl: './entity-files-view-all.component.html',\n styleUrls: ['./entity-files-view-all.component.css']\n})\nexport class EntityFilesViewAllComponent implements OnInit {\n @Input() entityId: number;\n @Input() entityType: string;\n @Input() viewOnly: boolean = false;\n @Input() removeSearch: boolean;\n @Input() hideTitleAndDetails: boolean;\n @Input() displayMode: boolean;\n @Input() allowMultipleFiles: boolean = false;\n\n /**\n * Should we allow tagging entity-files?\n */\n @Input() useTechlifyTags: boolean = false;\n\n viewerConfig: ViewerConfig;\n @Input() title: string = \"File\";\n filters: any = {};\n entityFiles: any[] = [];\n displayedColumns = [\n 'index',\n 'title',\n 'details',\n 'file_size',\n 'uploaded_on',\n ];\n isWorking: boolean = false;\n page: number = 1;\n perPage: number = 25;\n lastPage: number = 0;\n fileConfig: FileDropperConfig;\n fileList: any[] = [];\n filterFormGroup: FormGroup;\n\n constructor(\n private entityFileService: EntityFileService,\n public location: Location,\n private alertService: AlertService,\n private dialog: MatDialog,\n private fb: FormBuilder,\n ) {\n this.filterFormGroup = this.fb.group({\n title: [\"\"],\n tag_ids: [\"\"]\n });\n }\n\n ngOnInit(): void {\n //File dropper config\n this.fileConfig = {\n fileId: \"entityDashboardDropper\",\n containerId: \"entityDashboardDropperContainer\",\n styles: {\n height: \"500px\"\n },\n multiple: this.allowMultipleFiles,\n acceptFile: \"*\",\n maxSize: 10,\n acceptFileText: \"All Files\"\n };\n\n this.viewerConfig = {\n imageStyle: {\n height: '200px',\n width: '200px'\n },\n viewerStyle: {\n height: ' 160px',\n width: '200px'\n },\n hideRemove: true\n };\n\n if (this.hideTitleAndDetails) {\n this.displayedColumns = this.displayedColumns.filter(x => (x !== 'details') && (x !== 'title'));\n }\n this.listenRoutes();\n this.filters = {\n entity_type: this.entityType,\n entity_id: this.entityId,\n title: \"\"\n };\n this.fetchEntityFilesDetails();\n if (this.useTechlifyTags) {\n this.displayedColumns.push('tag');\n }\n if (!this.viewOnly) {\n this.displayedColumns.push('actions');\n }\n }\n\n listenRoutes() {\n this.filterFormGroup.valueChanges.pipe(debounceTime(500), untilDestroyed(this))\n .subscribe(changes => {\n this.reload();\n });\n }\n\n async fetchEntityFilesDetails() {\n this.filters.page = this.page;\n this.filters.perPage = this.perPage;\n let formGroup = this.filterFormGroup.value;\n formGroup.tag_ids = formGroup.tag_ids.toString();\n this.filters = {\n ...this.filters,\n ...formGroup\n }\n this.isWorking = true;\n const result: any = await this.entityFileService.getEntityFiles(this.filters);\n this.lastPage = result.last_page || this.page;\n this.entityFiles = this.entityFiles.concat(result.data);\n this.isWorking = false;\n }\n\n addEntityFile() {\n this.isWorking = true;\n const dialogRef = this.dialog.open(EntityFileFormComponent, {\n width: \"700px\",\n data: {\n entity: this.filters,\n hideTitleAndDetails: this.hideTitleAndDetails,\n useTechlifyTags: this.useTechlifyTags,\n },\n autoFocus: false,\n restoreFocus: false\n });\n\n dialogRef.afterClosed().subscribe(async result => {\n this.isWorking = false;\n if (result) {\n const files = [...this.entityFiles];\n files.push(result);\n this.entityFiles = files;\n }\n });\n }\n\n editEntityFile(file: any) {\n this.isWorking = true;\n const dialogRef = this.dialog.open(EntityFileFormComponent, {\n width: \"700px\",\n autoFocus: false,\n data: {\n file: file,\n hideTitleAndDetails: this.hideTitleAndDetails,\n useTechlifyTags: this.useTechlifyTags,\n } // Any data passed here will be injected into the model\n });\n\n dialogRef.afterClosed().subscribe(result => {\n this.isWorking = false;\n if (result) {\n this.reload();\n }\n });\n }\n\n deleteEntityFile(file: any) {\n const dialogRef = this.dialog.open(ActionPopupComponent, {\n width: \"400px\",\n data: <ActionPopup>{\n title: \"Delete File\",\n message: `Are you sure to proceed delete the file ${file.title}?`\n },\n autoFocus: false\n });\n\n dialogRef.afterClosed().subscribe(async result => {\n if (result) {\n //Action confirmed\n const result = await this.entityFileService.deleteEntityFile(\n file\n );\n this.alertService.addAlert(\n \"File successfully deleted\",\n \"success\"\n );\n this.reload();\n\n }\n });\n }\n\n onScroll() {\n if (this.page < this.lastPage && !this.isWorking) {\n this.page += 1;\n this.fetchEntityFilesDetails();\n }\n }\n\n reload() {\n this.entityFiles = [];\n this.page = 1;\n if (!this.isWorking) {\n this.fetchEntityFilesDetails();\n }\n }\n\n ngOnDestroy() { }\n\n resetFieldValue(event: any, field: any) {\n event.stopPropagation();\n this.filterFormGroup.get(field).setValue(\"\");\n }\n\n sizeOf(bytes) {\n if (!bytes) { return \"0.00 B\"; }\n var e = Math.floor(Math.log(bytes) / Math.log(1024));\n return (bytes / Math.pow(1024, e)).toFixed(2) + ' ' + ' KMGTP'.charAt(e) + 'B';\n }\n\n async fileChanged(event: any) {\n this.fileList = event;\n if (this.fileList.length > 0) {\n await this.fileList.forEach(async file => {\n const result: any = await this.entityFileService.uploadEntityFile(\n file,\n {\n entity_type: this.entityType,\n entity_id: this.entityId,\n }\n );\n this.reload();\n });\n this.fileList = [];\n this.alertService.addAlert('Successfull uploaded', 'success');\n }\n }\n}\n","import { Component, OnInit, Input, Output, EventEmitter } from \"@angular/core\";\nimport { AlertService } from \"../core/alert.service\";\nimport { FileDropperConfig } from './file-dropper.model';\n\n\n@Component({\n selector: \"app-file-dropper\",\n templateUrl: \"./file-dropper.component.html\",\n styleUrls: [\"./file-dropper.component.scss\"]\n})\nexport class FileDropperComponent implements OnInit {\n @Input() fileArray: any[] = [];\n\n @Input() config: FileDropperConfig;\n\n @Output() fileChanged: any = new EventEmitter();\n\n border = \"1px dashed #989898\";\n\n @Input() styles: any;\n\n isSingleMode: boolean;\n\n constructor(private alertService: AlertService) { }\n\n /**Life cycle hook method */\n ngOnInit() {\n this.isSingleMode = !Boolean(this.config.multiple);\n }\n\n /**Method for dragging event */\n dragEnter(event: any) {\n event.target.style.background = this.config.dragColor || \"#c0c0c0\";\n\n event.target.style.border = \"1px dashed black\";\n\n event.preventDefault();\n }\n\n /**Method for drag over event */\n dragOver(event: any) {\n event.preventDefault();\n }\n\n /**Method for drag leave event */\n dragLeave(event: any) {\n event.target.style.background = \"\";\n event.target.style.border = this.border;\n\n event.preventDefault();\n }\n\n /**Method for drop event */\n dropEvent(event: any) {\n event.target.style.background = \"\";\n event.target.style.border = this.border;\n const droppedFiles: FileList = event.dataTransfer.files;\n if (droppedFiles.length > 0) {\n const fileArray = Array.from(droppedFiles);\n this.addFiles(fileArray);\n }\n event.preventDefault();\n }\n\n /**Method to list files selected */\n onFileChange(event: any) {\n if (event.target.files && event.target.files.length) {\n const fileArray = Array.from(event.target.files);\n this.addFiles(fileArray);\n const fileInput = document.getElementById(\n this.config.fileId\n ) as HTMLInputElement;\n fileInput.value = \"\";\n }\n }\n\n /**Method to add files in the array */\n addFiles(fileArray: any) {\n if (!this.isSingleMode) {\n fileArray.forEach((file: any) => {\n this.fileArray = this.fileArray.filter(\n (item: any) => item.name !== file.name\n );\n if (this.fileSizeAllowed(file)) {\n this.fileArray.push(file);\n }\n });\n\n this.fileArray.sort(this.sortFiles);\n this.fileChanged.emit(this.fileArray);\n } else {\n // Single Mode\n if (this.fileArray.length === 0) {\n if (this.fileSizeAllowed(fileArray[0])) {\n this.fileArray.push(fileArray[0]);\n this.fileArray.sort(this.sortFiles);\n this.fileChanged.emit(this.fileArray);\n }\n }\n }\n }\n\n /**Method to sort the files in asc */\n sortFiles(a: any, b: any) {\n const nameA = a.name.toUpperCase();\n const nameB = b.name.toUpperCase();\n if (nameA < nameB) {\n return -1;\n }\n if (nameA > nameB) {\n return 1;\n }\n\n return 0;\n }\n\n /**Method tp validate the file size */\n fileSizeAllowed(file: any): boolean {\n if (!Boolean(this.config.maxSize)) {\n return true;\n } else if (file.size / (1024 * 1024) < this.config.maxSize) {\n return true;\n } else {\n this.alertService.addAlert(\n `The size of the file exceeds the limit ${this.config.maxSize} MB, kindly upload a file with size ${this.config.maxSize} MB or below`,\n \"warn\"\n );\n return false;\n }\n }\n\n /**Method invokes when the drop box is clicked to upload the file */\n clickEvent(event: any) {\n if (!(this.isSingleMode && this.fileArray.length > 0)) {\n document.getElementById(this.config.fileId).click();\n }\n event.preventDefault();\n }\n}\n","export class FileDropperConfig {\n containerId: string;\n fileId: string;\n styles?: any;\n multiple?: boolean;\n dragColor?: boolean;\n acceptFile: string; // use '*' to accept all file types.\n maxSize?: number; // size in MB\n acceptFileText?: string;\n}\n","import { Injectable } from '@angular/core';\nimport { HttpService } from '../core/http.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NoteService {\n\n constructor(private http: HttpService) { }\n\n getNotes(filterModel: any) {\n return this.http.get('api/notes', { params: filterModel }).toPromise();\n }\n\n addNote(note: any) {\n return this.http.post('api/notes', note).toPromise();\n }\n\n editNote(note: any) {\n return this.http.put(`api/notes/${note.id}`, note).toPromise();\n }\n\n deleteNote(note: any) {\n return this.http.delete(`api/notes/${note.id}`).toPromise();\n }\n}\n","import { Component, OnInit, Inject } from \"@angular/core\";\nimport { FormGroup, FormBuilder, Validators } from \"@angular/forms\";\nimport { MatDialogRef, MAT_DIALOG_DATA } from \"@angular/material/dialog\";\nimport { NoteService } from \"../note.service\";\nimport { FormValidatorService } from '../../core/form-validator.service';\nimport { AlertService } from \"../../core/alert.service\";\n\nconst errorMessages: any = {\n note: {\n required: \"Note is required\"\n }\n};\n\n@Component({\n selector: 'app-note-form',\n templateUrl: './note-form.component.html',\n styleUrls: ['./note-form.component.css']\n})\nexport class NoteFormComponent implements OnInit {\n\n updateMode: boolean;\n noteFormGroup: FormGroup;\n noteFormFirstAttempt: boolean;\n\n constructor(\n public dialogRef: MatDialogRef<NoteFormComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n private fb: FormBuilder,\n private formValidatorService: FormValidatorService,\n private alertService: AlertService,\n private noteService: NoteService\n ) {\n this.createForm();\n }\n\n /** Method to create a form **/\n private createForm() {\n //TODO: Finialize and add more validations.\n this.noteFormGroup = this.fb.group({\n id: [\"\"],\n note: [\"\", Validators.compose([Validators.required])],\n model_type: [\"\"],\n related_model_id: [\"\"],\n });\n }\n\n ngOnInit() {\n if (this.data.update) {\n this.updateMode = true;\n }\n this.noteFormGroup.patchValue(this.data.note);\n }\n\n //Method to trigger login\n async submit() {\n this.noteFormFirstAttempt = true;\n if (this.noteFormGroup.valid) {\n const model = this.noteFormGroup.value;\n const result = this.updateMode\n ? await this.noteService.editNote(model)\n : await this.noteService.addNote(model);\n\n this.alertService.addAlert(\n `${this.data?.labelText} saved successfully`,\n \"success\"\n );\n this.dialogRef.close(result);\n }\n }\n\n cancel() {\n this.dialogRef.close();\n }\n\n /**Method to evaluate form fields*/\n isFieldValid(field: string) {\n return this.formValidatorService.isFieldValid(\n field,\n this.noteFormGroup,\n this.noteFormFirstAttempt\n );\n }\n\n /**Method to find error in form fields*/\n getErrorMessage(field: string) {\n return this.formValidatorService.getErrorMessage(\n field,\n this.noteFormGroup,\n errorMessages\n );\n }\n\n}\n","import { Component, OnInit, Input } from '@angular/core';\nimport { NoteService } from '../note.service';\nimport { MatDialog } from '@angular/material/dialog';\nimport { NoteFormComponent } from '../note-form/note-form.component';\nimport { ActionPopupComponent } from '../../action-popup/action-popup.component';\nimport { ActionPopup } from '../../action-popup/action-popup.model';\n\n@Component({\n selector: 'app-note-list',\n templateUrl: './note-list.component.html',\n styleUrls: ['./note-list.component.css']\n})\nexport class NoteListComponent implements OnInit {\n\n @Input() relatedModelId !: any;\n @Input() modelType !: any;\n @Input() readonly: boolean = false;\n @Input() labelText: string = 'Note';\n @Input() commentsView: boolean = false;\n\n notes: any[] = [];\n filters: any;\n displayedColumns = [\n 'index',\n 'note',\n 'actions'\n ];\n\n page = 1;\n lastPage = 1;\n\n constructor(private noteService: NoteService,\n private dialog: MatDialog\n ) {\n this.filters = {};\n this.filters.sort_by = \"created_at|DESC\";\n }\n\n ngOnInit() {\n if (this.readonly) {\n this.displayedColumns = this.displayedColumns.filter(x => x !== 'actions');\n }\n this.filters.related_model_id = this.relatedModelId;\n this.filters.model_type = this.modelType;\n this.loadData();\n }\n\n async loadData() {\n\n const result: any = await this.noteService.getNotes({ ...this.filters, page: this.page });\n this.notes = this.notes.concat(result.data);\n this.page = result.current_page;\n this.lastPage = result.last_page;\n }\n\n addNote() {\n const dialogRef = this.dialog.open(NoteFormComponent, {\n width: \"400px\",\n data: {\n note: { related_model_id: this.relatedModelId, model_type: this.modelType },\n labelText: this.labelText,\n },\n autoFocus: false\n });\n\n dialogRef.afterClosed().subscribe(result => {\n if (result) {\n this.resetScroll();\n this.loadData();\n }\n });\n }\n\n editNote(note: any) {\n const dialogRef = this.dialog.open(NoteFormComponent, {\n width: \"400px\",\n data: {\n note: note,\n update: true,\n labelText: this.labelText\n },\n autoFocus: false\n });\n\n dialogRef.afterClosed().subscribe(result => {\n if (result) {\n this.resetScroll();\n this.loadData();\n }\n });\n }\n\n async deleteNote(note: any) {\n const dialogRef = this.dialog.open(ActionPopupComponent, {\n width: \"400px\",\n data: <ActionPopup>{\n title: `Delete ${this.labelText}`,\n message: `Are you sure to delete?`\n },\n autoFocus: false\n });\n\n dialogRef.afterClosed().subscribe(async result => {\n if (result) {\n //Action confirmed\n\n const result = await this.noteService.deleteNote(note);\n this.notes = this.notes.filter((item: any) => item.id !== note.id);\n\n }\n });\n }\n\n resetScroll() {\n this.page = 1;\n this.lastPage = 1;\n this.notes = [];\n }\n\n onScroll() {\n if (this.page < this.lastPage) {\n this.page += 1;\n this.loadData();\n }\n }\n\n commentAction(event: any) {\n if (event.type === \"save\") {\n if (event.value.id) {\n this.editComment(event.value);\n return;\n }\n this.addComment(event.value);\n return;\n }\n this.deleteNote(event.value);\n }\n\n async editComment(comment: any) {\n const result: any = await this.noteService.editNote(comment);\n let index = this.notes.findIndex(\n (x: any) => x.id === comment.id\n );\n if (index !== -1) {\n this.notes[index] = result.item;\n }\n }\n\n async addComment(comment: any) {\n comment.related_model_id = this.relatedModelId;\n comment.model_type = this.modelType;\n const result: any = await this.noteService.addNote(comment);\n this.notes.push(result.item);\n }\n\n}\n","import {\n Component,\n OnInit,\n Input,\n Output,\n EventEmitter,\n OnDestroy\n} from \"@angular/core\";\nimport { FormGroup, FormBuilder } from \"@angular/forms\";\nimport { CredentialsService } from \"../../core/credentials.service\";\n\n@Component({\n selector: \"app-comment-form\",\n templateUrl: \"./comment-form.component.html\",\n styleUrls: [\"./comment-form.component.scss\"]\n})\nexport class CommentFormComponent implements OnInit, OnDestroy {\n commentFormGroup: FormGroup;\n view: boolean;\n _commentData: any;\n\n @Input() set commentData(data: any) {\n this.view = !!data;\n this._commentData = data;\n this.commentFormGroup.patchValue(data);\n }\n\n @Output() action = new EventEmitter();\n\n constructor(private fb: FormBuilder,\n private credentialService: CredentialsService\n ) {\n this.createForm();\n }\n\n ngOnInit() { }\n\n get isLoggedIn() {\n return this.credentialService.isAuthenticated;\n }\n\n get currentUser() {\n return this.credentialService.credentials.user;\n }\n\n private createForm() {\n //TODO: Finialize and add more validations.\n this.commentFormGroup = this.fb.group({\n id: [\"\"],\n note: [\"\"],\n model_type: [\"\"],\n related_model_id: [\"\"],\n });\n }\n\n submit() {\n if (this.commentFormGroup.get(\"note\").value) {\n if (this._commentData) {\n this.view = !this.view;\n }\n this.action.emit({ type: \"save\", value: this.commentFormGroup.value });\n this.commentFormGroup.reset();\n } else if (this.commentFormGroup.get(\"id\").value) {\n this.deleteComment();\n }\n }\n\n hideEdit() {\n if (this.commentFormGroup.get(\"id\").value) {\n this.view = !this.view;\n }\n }\n\n editComment() {\n this.view = !this.view;\n this.commentFormGroup.patchValue(this._commentData);\n }\n\n deleteComment() {\n this.action.emit({ type: \"delete\", value: this.commentFormGroup.value });\n }\n\n ngOnDestroy() { }\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Component, ElementRef, Input, OnDestroy, OnInit, Optional, Self, Output, EventEmitter, TemplateRef } from '@angular/core';\nimport { FormBuilder, FormGroup, ControlValueAccessor, NgControl, Validators } from '@angular/forms';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { Subject, of, from } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, startWith, switchMap, finalize } from 'rxjs/operators';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ComponentType } from '@angular/cdk/portal';\nimport { HttpService } from '../core/http.service';\nimport { UntilDestroy, untilDestroyed } from \"@ngneat/until-destroy\";\n\n@UntilDestroy()\n@Component({\n selector: 'app-searchable-selector',\n templateUrl: './searchable-selector.component.html',\n styleUrls: ['./searchable-selector.component.scss'],\n providers: [\n {\n provide: MatFormFieldControl,\n useExisting: SearchableSelectorComponent\n }\n ]\n})\nexport class SearchableSelectorComponent implements ControlValueAccessor, OnInit, OnDestroy {\n\n @Input() valueField: string = 'id';\n @Input() titleField: string = 'title';\n @Input() apiUrl!: string;\n @Input() multiple: boolean = false;\n @Input() selectedValue: any;\n @Output() selectedValueChange = new EventEmitter();\n @Input() enableSearch: boolean = true;\n @Input() add: boolean = false;\n @Input() addConfig: any;\n @Input() edit: boolean = false;\n @Input() editConfig: any;\n @Input() sort: boolean = true;\n @Input() sortBy: string;\n @Input() searchField: string;\n @Input() itemComponent: ComponentType<unknown> | TemplateRef<unknown>;\n @Input() items: any[] = [];\n @Input() apiDataProperty: string = 'data';\n @Input() cache: boolean = false;\n @Input() perPage: number = 25;\n @Input() inDataSearch: boolean = false;\n @Output() selectionChange = new EventEmitter();\n @Output() itemsChange = new EventEmitter();\n\n\n isLoading: boolean = false;\n onChange: any = () => { };\n onTouched: any = () => { };\n static nextId = 0;\n selectorForm: FormGroup;\n stateChanges = new Subject<void>();\n focused = false;\n controlType = 'searchable-selctor';\n id = `searchable-selctor-${SearchableSelectorComponent.nextId++}`;\n describedBy = '';\n filters: any;\n cachedItems: any[] = [];\n\n\n get empty() {\n const { value: { select_value } } = this.selectorForm;\n return !select_value;\n }\n\n get shouldLabelFloat() { return this.focused || !this.empty; }\n\n\n @Input()\n get required(): boolean { return this._required; }\n set required(value: boolean) {\n this.selectorForm.get('select_value').setValidators(Validators.required);\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n private _required = false;\n\n @Input()\n get disabled(): boolean { return this._disabled; }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n this._disabled ? this.selectorForm.disable() : this.selectorForm.enable();\n this.stateChanges.next();\n }\n private _disabled = false;\n\n @Input()\n get value(): any {\n if (this.selectorForm.valid) {\n return this.selectorForm.value.select_value;\n }\n return '';\n }\n set value(data: any) {\n this.selectorForm.patchValue({ select_value: data || '' });\n this.stateChanges.next();\n }\n\n constructor(\n formBuilder: FormBuilder,\n private _focusMonitor: FocusMonitor,\n private http: HttpService,\n private _elementRef: ElementRef<HTMLElement>,\n private dialog: MatDialog,\n @Optional() @Self() public ngControl: NgControl) {\n\n this.selectorForm = formBuilder.group({\n select_value: [null],\n search: ''\n });\n\n _focusMonitor.monitor(_elementRef, true).subscribe(origin => {\n if (this.focused && !origin) {\n this.onTouched();\n }\n this.focused = !!origin;\n this.stateChanges.next();\n });\n\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n openedChange(event: any) {\n if (this.dataItems.length === 0 && this.selectorForm.get('search').value) {\n this.selectorForm.get('search').setValue('');\n }\n }\n\n get dataItems(): any[] {\n let items: any[] = [];\n if (this.multiple && this.selectedValue && (this.selectedValue.length > 0))\n items = [...this.selectedValue, ...this.items];\n else if ((!this.multiple) && this.selectedValue)\n items = [this.selectedValue, ...this.items];\n else\n items = this.items;\n items = items.filter((v, i, a) => a.findIndex(v => v[this.valueField] === a[i][this.valueField]) === i);\n //Emit the items to any child component\n this.itemsChange.emit(items);\n return items;\n }\n\n ngOnInit() {\n this.selectorForm.get('search').valueChanges\n .pipe(\n debounceTime(500),\n distinctUntilChanged(),\n untilDestroyed(this)\n ).subscribe(value => {\n if (this.enableSearch)\n this.search(value);\n });\n\n this.filters = {\n perPage: this.perPage,\n search: '',\n page: 1,\n lastPage: 1\n }\n if (this.sort) {\n this.filters.sort_by = this.sortBy || `${this.titleField}|asc`;\n }\n\n //Fetch Items only if it is not present, can be used in places where we load many entries.\n if (this.items.length === 0) {\n this.fetchItemList();\n }\n }\n\n fetchItemList() {\n this.isLoading = true;\n let request = this.http.get(this.apiUrl, { params: this.filters })\n if (this.cache) {\n request = this.http.cache().get(this.apiUrl, { params: this.filters })\n }\n of().pipe(\n startWith(true),\n switchMap((_) => from(request)),\n finalize(() => this.isLoading = false),\n untilDestroyed(this)\n ).subscribe((result: any) => {\n this.items = this.items.concat(result[this.apiDataProperty]);\n if (this.cache) {\n this.cachedItems = this.items;\n }\n this.filters.page = result?.current_page || 1;\n this.filters.lastPage = result?.last_page || 1;\n });\n }\n\n\n setDescribedByIds(ids: string[]) {\n this.describedBy = ids.join(' ');\n }\n\n onContainerClick(event: MouseEvent) {\n event.stopPropagation();\n }\n\n writeValue(data: any): void {\n this.value = data;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n getPropertyValue(ele: any, keyString: string) {\n keyString = keyString.replace(/\\[(\\w+)\\]/g, \".$1\"); // convert indexes to properties\n keyString = keyString.replace(/^\\./, \"\"); // strip a leading dot\n const keyList = keyString.split(\".\");\n for (let i = 0, n = keyList.length; i < n; ++i) {\n const key = keyList[i];\n if (ele && key in ele) {\n ele = ele[key];\n } else {\n return;\n }\n }\n return ele;\n }\n\n _handleInput(): void {\n this.onChange(this.value);\n if (this.multiple)\n this.selectedValue = (this.value as []).map(x => this.dataItems.find(y => y[this.valueField] === x));\n else\n this.selectedValue = this.dataItems.find(x => x[this.valueField] === this.value);\n this.selectedValueChange.emit(this.selectedValue);\n this.selectionChange.emit(this.value);\n }\n\n get errorState(): boolean {\n return (this.ngControl && this.ngControl.invalid && (this.ngControl.touched || this.ngControl.dirty));\n }\n\n static ngAcceptInputType_disabled: boolean | string | null | undefined;\n static ngAcceptInputType_required: boolean | string | null | undefined;\n\n onScroll() {\n if (this.filters.lastPage > this.filters.page) {\n this.filters.page += 1;\n this.fetchItemList();\n }\n }\n\n reloadData() {\n this.items = [];\n this.filters.page = 1;\n this.filters.lastPage = 1;\n this.fetchItemList();\n }\n\n search(event: any) {\n if (this.searchField) {\n this.filters[this.searchField] = event;\n } else {\n this.filters.search = event;\n }\n // we need search field to search in data\n if (this.inDataSearch && this.searchField) {\n this.filterItems(event);\n } else {\n this.reloadData();\n }\n }\n\n filterItems(event: string) {\n if (event) {\n this.items = this.cachedItems.filter((value: any) => {\n return (value[this.searchField] as string).toLowerCase().search(event.toLowerCase()) != -1\n })\n } else {\n this.items = this.cachedItems;\n }\n }\n\n addItem(event: any) {\n const dialogRef = this.dialog.open(this.itemComponent, {\n width: '400px',\n autoFocus: false,\n data: {},\n ...this.addConfig\n });\n\n dialogRef.afterClosed().subscribe((result: any) => {\n if (result) {\n this.items.push(result.item);\n this.selectorForm.get('select_value').setValue(result.item[this.valueField]);\n this._handleInput();\n }\n });\n event.stopPropagation();\n }\n\n editItem(event: any) {\n const dialogRef = this.dialog.open(this.itemComponent, {\n width: '400px',\n autoFocus: false,\n data: {\n item: this.selectedValue\n },\n ...this.editConfig\n });\n\n dialogRef.afterClosed().subscribe((result: any) => {\n if (result) {\n this.items = this.items.filter(x => x[this.valueField] !== this.selectedValue[this.valueField]);\n this.items.push(result.item);\n this.selectedValue = null;\n this.selectorForm.get('select_value').setValue(result.item[this.valueField]);\n this._handleInput();\n }\n });\n event.stopPropagation();\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n}\n","import { AfterViewInit, Directive, EventEmitter, Input, NgZone, OnDestroy, OnInit, Output } from '@angular/core';\nimport { MatSelect, SELECT_ITEM_HEIGHT_EM } from '@angular/material/select';\nimport { debounceTime, takeUntil, tap } from 'rxjs/operators';\nimport { fromEvent, Subject } from 'rxjs';\n\n@Directive({\n selector: '[msInfiniteScroll]'\n})\nexport class MatSelectInfiniteScrollDirective implements OnInit, OnDestroy, AfterViewInit {\n\n @Input() threshold = '15%';\n @Input() debounceTime = 150;\n @Input() complete: boolean;\n @Output() infiniteScroll = new EventEmitter<void>();\n\n private panel: Element;\n private thrPx = 0;\n private thrPc = 0;\n private singleOptionHeight = SELECT_ITEM_HEIGHT_EM;\n\n private destroyed$ = new Subject<boolean>();\n\n constructor(private matSelect: MatSelect, private ngZone: NgZone) {\n }\n\n ngOnInit() {\n this.evaluateThreshold();\n }\n\n ngAfterViewInit() {\n this.matSelect.openedChange.pipe(\n takeUntil(this.destroyed$)\n ).subscribe((opened) => {\n if (opened) {\n this.panel = this.matSelect.panel.nativeElement;\n this.singleOptionHeight = this.getSelectItemHeightPx();\n this.registerScrollListener();\n }\n });\n }\n\n ngOnDestroy() {\n this.destroyed$.next(true);\n this.destroyed$.complete();\n }\n\n evaluateThreshold() {\n if (this.threshold.lastIndexOf('%') > -1) {\n this.thrPx = 0;\n this.thrPc = (parseFloat(this.threshold) / 100);\n\n } else {\n this.thrPx = parseFloat(this.threshold);\n this.thrPc = 0;\n }\n }\n\n registerScrollListener() {\n fromEvent(this.panel, 'scroll').pipe(\n takeUntil(this.destroyed$),\n debounceTime(this.debounceTime),\n tap((event) => {\n this.handleScrollEvent(event);\n })\n ).subscribe();\n }\n\n handleScrollEvent(event) {\n this.ngZone.runOutsideAngular(() => {\n if (this.complete) {\n return;\n }\n const countOfRenderedOptions = this.matSelect.options.length;\n const infiniteScrollDistance = this.singleOptionHeight * countOfRenderedOptions;\n const threshold = this.thrPc !== 0 ? (infiniteScrollDistance * this.thrPc) : this.thrPx;\n\n const scrolledDistance = this.panel.clientHeight + event.target.scrollTop;\n\n if ((scrolledDistance + threshold) >= infiniteScrollDistance) {\n this.ngZone.run(() => this.infiniteScroll.emit());\n }\n });\n }\n\n getSelectItemHeightPx(): number {\n return parseFloat(getComputedStyle(this.panel).fontSize) * SELECT_ITEM_HEIGHT_EM;\n }\n\n}","import { Component, Input, Output, EventEmitter } from \"@angular/core\";\r\n\r\n/**\r\n * Component to generate a num items selector\r\n * \r\n * @author Floyd Kissoon\r\n * @since 20170817\r\n */\r\n@Component({\r\n selector: \"num-items-selector\",\r\n templateUrl: \"./num-items-selector.html\"\r\n})\r\nexport class NumItemsSelector {\r\n @Input() numItems: number;\r\n @Output() numItemsChange: EventEmitter<number>;\r\n\r\n constructor() {\r\n this.numItemsChange = new EventEmitter<number>();\r\n }\r\n\r\n /**\r\n * Called when an item has been selected\r\n */\r\n numItemsChanged() {\r\n this.numItemsChange.emit(this.numItems);\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\n\n/**\n * Service that provides utility functions for dates\n * \n * @author Joshua Kissoon\n * @since 20170726\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DateUtils {\n\n /**\n * Takes in a date object and outputs the string value\n */\n getYYYYMMDDString(inputDate: Date): string {\n var year = inputDate.getFullYear();\n var month = (inputDate.getMonth() + 1) < 10 ? (\"0\" + (inputDate.getMonth() + 1)) : (inputDate.getMonth() + 1);\n var date = inputDate.getDate() < 10 ? (\"0\" + inputDate.getDate()) : inputDate.getDate();\n\n return year + \"-\" + month + \"-\" + date;\n }\n\n /**\n * Takes in a date object and outputs the year\n */\n getYYYY(inputDate: Date): number {\n var year = inputDate.getFullYear();\n return year;\n }\n\n /**\n * Takes in a date object and outputs the Month\n */\n getMM(inputDate: Date): number {\n var month = inputDate.getMonth() + 1;\n return month;\n }\n // var n = this.rfidCardUseManualEntry.manual_date.toLocaleTimeString();\n\n getDateTime(inputDate: Date): string {\n var year = inputDate.getFullYear();\n var month = (inputDate.getMonth() + 1) < 10 ? (\"0\" + (inputDate.getMonth() + 1)) : (inputDate.getMonth() + 1);\n var date = inputDate.getDate() < 10 ? (\"0\" + inputDate.getDate()) : inputDate.getDate();\n var time = inputDate.toLocaleTimeString();\n\n return year + \"-\" + month + \"-\" + date + \" \" + time;\n }\n\n}","import { Component, Input, Output, EventEmitter, OnInit } from \"@angular/core\";\n\n/**\n * Component to generate a number selector\n * \n * @author Floyd Kissoon\n * @since 20180628\n */\n@Component({\n selector: \"number-selector\",\n templateUrl: \"./number-selector.html\"\n})\nexport class NumberSelector implements OnInit {\n @Input() start_value: number;\n @Input() end_value: number\n @Output() selectedValueChange: EventEmitter<number>;\n @Input() selectedValue: number;\n\n items = new Array();\n\n constructor() {\n this.selectedValueChange = new EventEmitter<number>();\n }\n\n /**\n * Called when an item has been selected\n */\n numChanged() {\n this.selectedValueChange.emit(this.selectedValue);\n }\n\n\n ngOnInit() {\n for (var i = this.start_value; i < this.end_value + 1; i++) {\n this.items.push(i);\n }\n }\n}\n","export class Timeline {\n public static CUSTOM: number = 1;\n public static TODAY: number = 2;\n public static YESTERDAY: number = 3;\n public static THIS_WEEK: number = 4;\n public static LAST_WEEK: number = 5;\n public static THIS_MONTH: number = 6;\n public static LAST_MONTH: number = 7;\n public static THIS_QUARTER: number = 8;\n public static LAST_QUARTER: number = 9;\n public static THIS_YEAR: number = 10;\n public static LAST_YEAR: number = 11;\n public static ALL: number = 12;\n public static TOMMOROW: number = 13;\n public static NEXT_WEEK: number = 14;\n public static NEXT_MONTH: number = 15;\n}\n","import * as moment_ from 'moment';\nconst moment = moment_;\nimport { Timeline } from \"./timeline.model\";\n\n\nexport interface TimelineValue {\n date_from: Date,\n date_to: Date,\n show_custom_field: boolean\n}\nexport function calculateTimeline(value: any) {\n const date = new Date();\n const data: any = {\n 'date_from': date,\n 'date_to': date,\n 'show_custom_field': false\n };\n switch (value) {\n case Timeline.CUSTOM: { //Custom\n data.show_custom_field = true;\n break;\n }\n case Timeline.TODAY: { // Today\n let now = moment();\n data.date_from = now.startOf('day').toISOString();\n data.date_to = now.endOf('day').toISOString();\n break;\n }\n case Timeline.YESTERDAY: { // Yesterday\n let now = moment().subtract(1, 'day');\n data.date_from = now.startOf('day').toISOString();\n data.date_to = now.endOf('day').toISOString();\n break;\n }\n case Timeline.THIS_WEEK: { // This Week\n let now = moment();\n data.date_from = now.startOf('isoWeek').toISOString();\n data.date_to = now.endOf('isoWeek').toISOString();\n break;\n }\n case Timeline.LAST_WEEK: { // Last Week\n let now = moment().subtract(1, 'week');\n data.date_from = now.startOf('isoWeek').toISOString();\n data.date_to = now.endOf('isoWeek').toISOString();\n break;\n }\n case Timeline.THIS_MONTH: { //This Month\n let now = moment();\n data.date_from = now.startOf('month').toISOString();\n data.date_to = now.endOf('month').toISOString();\n break;\n }\n case Timeline.LAST_MONTH: { // Last Month\n let now = moment().subtract(1, 'month');\n data.date_from = now.startOf('month').toISOString();\n data.date_to = now.endOf('month').toISOString();\n break;\n }\n case Timeline.THIS_QUARTER: { // This Quarter\n let now = moment();\n data.date_from = now.startOf('quarter').toISOString();\n data.date_to = now.endOf('quarter').toISOString();\n break;\n }\n case Timeline.LAST_QUARTER: { // Last Quarter\n let now = moment().subtract(1, 'quarter');\n data.date_from = now.startOf('quarter').toISOString();\n data.date_to = now.endOf('quarter').toISOString();\n break;\n }\n case Timeline.THIS_YEAR: { // This Year\n let now = moment();\n data.date_from = now.startOf('year').toISOString();\n data.date_to = now.endOf('year').toISOString();\n break;\n }\n case Timeline.LAST_YEAR: { // Last Year\n let now = moment().subtract(1, 'year');\n data.date_from = now.startOf('year').toISOString();\n data.date_to = now.endOf('year').toISOString();\n break;\n }\n case Timeline.TOMMOROW: {\n let now = moment().add(1, 'day');\n data.date_from = now.startOf('day').toISOString();\n data.date_to = now.endOf('day').toISOString();\n break;\n }\n case Timeline.NEXT_WEEK: {\n let now = moment().add(1, 'week');\n data.date_from = now.startOf('isoWeek').toISOString();\n data.date_to = now.endOf('isoWeek').toISOString();\n break;\n }\n case Timeline.NEXT_MONTH: {\n let now = moment().add(1, 'month');\n data.date_from = now.startOf('month').toISOString();\n data.date_to = now.endOf('month').toISOString();\n break;\n }\n default: { // All\n data.date_from = '';\n data.date_to = '';\n break;\n }\n\n }\n return data;\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { DatePipe } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Optional, Output, Self, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, FormBuilder, FormControl, FormGroup, NgControl, Validators } from '@angular/forms';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { UntilDestroy, untilDestroyed } from \"@ngneat/until-destroy\";\nimport { TimelineValue, calculateTimeline } from './calculate-timeline';\nimport { Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { Timeline } from './timeline.model';\n\n@UntilDestroy()\n@Component({\n selector: 'app-timeline-filter',\n templateUrl: './timeline-filter.component.html',\n styleUrls: ['./timeline-filter.component.scss'],\n providers: [\n {\n provide: MatFormFieldControl,\n useExisting: TimelineFilterComponent\n }\n ]\n})\nexport class TimelineFilterComponent implements OnInit, ControlValueAccessor {\n\n @ViewChild('picker') picker;\n @Input() timelineValue: FormControl = new FormControl('');\n @Input() timelines: any[] = [\n { value: Timeline.CUSTOM, viewValue: 'Custom' },\n { value: Timeline.TODAY, viewValue: 'Today' },\n { value: Timeline.YESTERDAY, viewValue: 'Yesterday' },\n { value: Timeline.TOMMOROW, viewValue: 'Tomorrow' },\n { value: Timeline.THIS_WEEK, viewValue: 'This Week' },\n { value: Timeline.LAST_WEEK, viewValue: 'Last Week' },\n { value: Timeline.NEXT_WEEK, viewValue: 'Next Week' },\n { value: Timeline.THIS_MONTH, viewValue: 'This Month' },\n { value: Timeline.LAST_MONTH, viewValue: 'Last Month' },\n { value: Timeline.NEXT_MONTH, viewValue: 'Next Month' },\n { value: Timeline.THIS_QUARTER, viewValue: 'This Quarter' },\n { value: Timeline.LAST_QUARTER, viewValue: 'Last Quarter' },\n { value: Timeline.THIS_YEAR, viewValue: 'This Year' },\n { value: Timeline.LAST_YEAR, viewValue: 'Last Year' },\n { value: Timeline.ALL, viewValue: 'All dates' },\n ];\n @Input() dateFrom: string = 'date_from';\n @Input() dateTo: string = 'date_to';\n @Input() appearance: any = \"legacy\"\n @Input() showClearbutton: boolean = false;\n /**\n * @deprecated The form input is deprated\n */\n @Input() form: FormGroup = null;\n @Input() labelText: string = 'Select Timeline';\n @Input() selectedValue: any;\n @Input() touchUi: boolean = true;\n @Output() selectedValueChange = new EventEmitter();\n @Output() selectionChange = new EventEmitter();\n\n selectorForm: FormGroup;\n onChange: any = () => { };\n onTouched: any = () => { };\n static nextId = 0;\n stateChanges = new Subject<void>();\n controlType = 'timeline-filter';\n id = `timeline-filter-${TimelineFilterComponent.nextId++}`;\n describedBy = '';\n\n selectedRange: TimelineValue;\n @Input() set defaultValue(value: any) {\n this.timelineValue.setValue(value);\n this.changeTimeline(value);\n }\n\n showCustomDateFields: boolean = false;\n\n constructor(\n formBuilder: FormBuilder,\n @Optional() @Self() public ngControl: NgControl,\n private datePipe: DatePipe\n ) {\n this.selectorForm = formBuilder.group({\n select_value: [null],\n });\n\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n @Input()\n get required(): boolean { return this._required; }\n set required(value: boolean) {\n this.selectorForm.get('select_value').setValidators(Validators.required);\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n private _required = false;\n\n @Input()\n get disabled(): boolean { return this._disabled; }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n this._disabled ? this.selectorForm.disable() : this.selectorForm.enable();\n this.stateChanges.next();\n }\n private _disabled = false;\n\n @Input()\n get value(): any {\n if (this.selectorForm.valid) {\n return this.selectorForm.value.select_value;\n }\n return '';\n }\n set value(data: any) {\n this.selectorForm.patchValue({ select_value: data || '' });\n this._handleInput();\n this.stateChanges.next();\n }\n\n getDateRangeString() {\n let str = \"\";\n if (this.selectedRange?.show_custom_field) {\n if (this.selectedRange?.date_from.toUTCString() != 'Invalid Date') {\n str += ' - ' + this.datePipe.transform(this.selectedRange?.date_from?.toUTCString())\n }\n if (this.selectedRange?.date_to.toUTCString() != 'Invalid Date') {\n str += ' - ' + this.datePipe.transform(this.selectedRange?.date_to?.toUTCString())\n }\n }\n return str;\n }\n\n resetFieldValue(field: string) {\n this.form.get(field).setValue('');\n }\n\n\n getFieldValue(field: string) {\n return this.form.get(field).value;\n }\n\n setFieldValue(field: string, value: any) {\n this.form.get(field).setValue(value);\n }\n\n changeTimeline(value: any) {\n const timeline = calculateTimeline(value);\n if (timeline) {\n this.setFieldValue(this.dateFrom, timeline.date_from)\n this.setFieldValue(this.dateTo, timeline.date_to)\n this.showCustomDateFields = timeline.show_custom_field;\n }\n }\n\n _handleInput(): void {\n if (this.value == 1) {\n this.picker.open();\n return;\n }\n const range: TimelineValue = calculateTimeline(this.value);\n this.selectedRange = range;\n this.onChange(this.value);\n this.selectedValueChange.emit(this.selectedValue);\n this.selectionChange.emit(range);\n }\n\n dateRangeChange(dateRangeStart: HTMLInputElement, dateRangeEnd: HTMLInputElement) {\n const range: TimelineValue = {\n date_from : new Date(dateRangeStart.value),\n date_to: new Date(dateRangeEnd.value),\n show_custom_field: true\n }\n this.selectedRange = range;\n this.onChange(this.value);\n this.selectedValueChange.emit(this.selectedValue);\n this.selectionChange.emit(range);\n }\n\n onCustomDateChange(event: any) {\n }\n\n setDescribedByIds(ids: string[]) {\n this.describedBy = ids.join(' ');\n }\n\n onContainerClick(event: MouseEvent) {\n event.stopPropagation();\n }\n\n writeValue(data: any): void {\n this.value = data;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n ngOnInit(): void {\n console.log(this.form);\n\n this.timelineValue.valueChanges.\n pipe(\n debounceTime(100),\n distinctUntilChanged(),\n untilDestroyed(this)\n ).subscribe(value => this.changeTimeline(value));\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n }\n\n}\n","import { Component, OnInit, Input } from '@angular/core';\n\n@Component({\n selector: 'app-loader',\n templateUrl: './loader.component.html',\n styleUrls: ['./loader.component.scss']\n})\nexport class LoaderComponent implements OnInit {\n\n @Input() isLoading = false;\n @Input() size = 0.6;\n @Input() message: string | undefined;\n\n constructor() { }\n\n ngOnInit() { }\n\n}\n","import { NgModule } from '@angular/core';\nimport { SuccessSnackComponent, ErrorSnackComponent } from './snack.component';\nimport { CommonModule } from '@angular/common';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatIconModule } from '@angular/material/icon';\n\n@NgModule({\n declarations: [\n SuccessSnackComponent,\n ErrorSnackComponent\n ],\n imports: [\n CommonModule,\n MatSnackBarModule,\n MatIconModule\n ],\n exports: [\n SuccessSnackComponent,\n ErrorSnackComponent,\n ]\n})\nexport class SnackModule { }\n","import { Injectable } from '@angular/core';\nimport { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\nimport { CredentialsService } from './credentials.service';\nimport { Logger } from './logger.service';\n\nconst log = new Logger('AuthenticationGuard');\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthenticationGuard implements CanActivate {\n\n constructor(private router: Router,\n private credentialsService: CredentialsService) { }\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\n return this.isUserAuthenticated(route, state);\n }\n\n canLoad(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\n return this.isUserAuthenticated(route, state);\n }\n\n isUserAuthenticated(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\n if (this.credentialsService.isAuthenticated) {\n return true;\n }\n\n log.debug('Not authenticated, redirecting and adding redirect url...');\n this.router.navigate(['/login'], { queryParams: { redirect: state.url }, replaceUrl: true });\n return false;\n }\n\n}\n","\nimport { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { concatMap, map } from 'rxjs/operators';\nimport { Credentials, CredentialsService } from './credentials.service';\nimport { HttpService } from './http.service';\n\n/**\n * Provides a base for authentication workflow.\n * The login/logout methods should be replaced with proper implementation.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthenticationService {\n\n constructor(private credentialsService: CredentialsService, private http: HttpService) { }\n\n /**\n * Authenticates the user.\n * @param context The login parameters.\n * @return The user credentials.\n */\n login(context: any): Observable<Credentials> {\n const data = <Credentials>{};\n return this.http\n .skipToken()\n .post('oauth/token', context)\n .pipe(\n concatMap(async (tokenInfo: any) => {\n tokenInfo.expires_in = Date.now() + (tokenInfo.expires_in * 1000);\n data.token = tokenInfo;\n data.user = {};\n this.credentialsService.setCredentials(data, context.remember);\n const userInfo: any = await this.http.get('api/user/current').toPromise();\n data.user = userInfo?.user;\n this.credentialsService.setCredentials(data, context.remember);\n return data;\n })\n )\n }\n\n /**\n * Logs out the user and clear credentials.\n * @return True if the user was logged out successfully.\n */\n logout(): Observable<boolean> {\n\n this.credentialsService.setCredentials();\n return of(true);\n }\n\n}\n","import { ActivatedRouteSnapshot, DetachedRouteHandle, RouteReuseStrategy } from '@angular/router';\nimport { Injectable } from '@angular/core';\n\n/**\n * A route strategy allowing for explicit route reuse.\n * Used as a workaround for https://github.com/angular/angular/issues/18374\n * To reuse a given route, add `data: { reuse: true }` to the route definition.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class RouteReusableStrategy extends RouteReuseStrategy {\n\n public shouldDetach(route: ActivatedRouteSnapshot): boolean {\n return false;\n }\n\n public store(route: ActivatedRouteSnapshot, detachedTree: DetachedRouteHandle | null): void { }\n\n public shouldAttach(route: ActivatedRouteSnapshot): boolean {\n return false;\n }\n\n public retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle | null {\n return null;\n }\n\n public shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {\n // Reuse the route if the RouteConfig is the same, or if both routes use the\n // same component, because the latter can have different RouteConfigs.\n return future.routeConfig === curr.routeConfig ||\n Boolean(future.routeConfig?.component &&\n future.routeConfig?.component === curr.routeConfig?.component);\n }\n\n}\n","import { Injectable } from \"@angular/core\";\r\nimport { Subject, Observable } from 'rxjs';\r\n\r\n/**\r\n * Service used to manage Local Storage\r\n * \r\n * @author Joshua Kissoon\r\n * @since 20190623\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StorageService {\r\n private storageSub = new Subject<any>();\r\n\r\n constructor() {\r\n\r\n }\r\n\r\n watch(): Observable<any> {\r\n return this.storageSub.asObservable();\r\n }\r\n\r\n setItem(key: string, data: any) {\r\n localStorage.setItem(key, data);\r\n this.storageSub.next({ key: key, value: data });\r\n }\r\n\r\n getItem(key: string) {\r\n return localStorage.getItem(key);\r\n }\r\n\r\n removeItem(key: string) {\r\n const data = this.getItem(key);\r\n localStorage.removeItem(key);\r\n this.storageSub.next({ key: key, value: data });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpService } from './http.service';\r\n\r\n/**\r\n * Service that provides a wrapper for retrieving data from the server\r\n * @deprecated use HttpService Instead\r\n * @author Joshua Kissoon\r\n * @since 20170709\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DataManager {\r\n\r\n constructor(private http: HttpService) { }\r\n\r\n /**\r\n * Callback wrapper for the HTTP GET Call\r\n * \r\n * @param urlq The query part of the URL to be sent to the server\r\n * \r\n * @author Joshua Kissoon\r\n * @since 20160826\r\n * @updated 20170711 to add parameters\r\n */\r\n GET(urlq: string, params = {}): any {\r\n return this.http\r\n .get(urlq, { params: params })\r\n .toPromise();\r\n }\r\n\r\n /**\r\n * Callback wrapper for the HTTP POST Call\r\n * \r\n * @param urlq The query part of the URL to be sent to the server\r\n * @param object The object containing the POST data to be sent\r\n * \r\n * @author Joshua Kissoon\r\n * @since 20160826\r\n */\r\n POST(urlq: string, object: any): any {\r\n if (null == object) {\r\n object = { \"blank\": \"blank\" };\r\n }\r\n\r\n return this.http\r\n .post(urlq, object)\r\n .toPromise();\r\n }\r\n\r\n /**\r\n * Callback wrapper for the HTTP POST Call\r\n * \r\n * @param urlq The query part of the URL to be sent to the server\r\n * @param object The object containing the POST data to be sent\r\n * \r\n * @author Joshua Kissoon\r\n * @since 20160826\r\n */\r\n POSTRAW(urlq: string, object: any): any {\r\n if (null == object) {\r\n object = { \"blank\": \"blank\" };\r\n }\r\n\r\n return this.http\r\n .skipHeader()\r\n .post(urlq, object)\r\n .toPromise();\r\n }\r\n\r\n\r\n /**\r\n * Callback wrapper for the HTTP PUT Call\r\n * \r\n * @param urlq The query part of the URL to be sent to the server\r\n * @param object The object containing the PUT data to be sent\r\n * \r\n * @author Joshua Kissoon\r\n * @since 20160826\r\n */\r\n PUT(urlq: string, object: any): any {\r\n if (null == object) {\r\n object = { \"blank\": \"blank\" };\r\n }\r\n\r\n return this.http\r\n .put(urlq, object)\r\n .toPromise();\r\n }\r\n\r\n /**\r\n * Callback wrapper for the HTTP PATCH Call\r\n * \r\n * @param urlq The query part of the URL to be sent to the server\r\n * @param object The object containing the PUT data to be sent\r\n * \r\n * @author Joshua Kissoon\r\n * @since 20161107\r\n */\r\n PATCH(urlq: string, object: any): any {\r\n if (null == object) {\r\n object = { \"blank\": \"blank\" };\r\n }\r\n\r\n return this.http\r\n .patch(urlq, object)\r\n .toPromise();\r\n }\r\n\r\n /**\r\n * Callback wrapper for the HTTP DELETE Call\r\n * \r\n * @param urlq The query part of the URL to be sent to the server\r\n * \r\n * @author Joshua Kissoon\r\n * @since 20160826\r\n */\r\n DELETE(urlq: string): any {\r\n return this.http\r\n .delete(urlq)\r\n .toPromise();\r\n }\r\n\r\n}","import { MatTooltipModule } from '@angular/material/tooltip';\n/*\n * This module imports and re-exports all Angular Material modules for convenience,\n * so only 1 module import is needed in your feature modules.\n * See https://material.angular.io/guide/getting-started#step-3-import-the-component-modules.\n *\n * To optimize your production builds, you should only import the components used in your app.\n */\n\nimport { NgModule } from \"@angular/core\";\nimport {\n MatCommonModule,\n MatLineModule,\n MatNativeDateModule,\n MatOptionModule,\n MatPseudoCheckboxModule,\n MatRippleModule\n} from \"@angular/material/core\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatCheckboxModule } from \"@angular/material/checkbox\";\nimport { MatDialogModule } from \"@angular/material/dialog\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatInputModule } from \"@angular/material/input\";\nimport { MatMenuModule } from \"@angular/material/menu\";\nimport { MatProgressSpinnerModule } from \"@angular/material/progress-spinner\";\nimport { MatSelectModule } from \"@angular/material/select\";\nimport { MatSortModule } from \"@angular/material/sort\";\nimport { MatTableModule } from \"@angular/material/table\";\nimport { MatCardModule } from \"@angular/material/card\";\nimport { MatDividerModule } from \"@angular/material/divider\";\nimport { MatChipsModule } from \"@angular/material/chips\";\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatListModule } from '@angular/material/list'\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\n\n\n@NgModule({\n exports: [\n MatButtonModule,\n MatCheckboxModule,\n MatCommonModule,\n MatDialogModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatLineModule,\n MatMenuModule,\n MatNativeDateModule,\n MatOptionModule,\n MatProgressSpinnerModule,\n MatPseudoCheckboxModule,\n MatRippleModule,\n MatSelectModule,\n MatSortModule,\n MatTableModule,\n MatCardModule,\n MatDividerModule,\n MatChipsModule,\n MatDatepickerModule,\n MatListModule,\n MatTooltipModule,\n MatButtonToggleModule\n ]\n})\nexport class MaterialModule { }\n","import { NgModule, Optional, SkipSelf } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HTTP_INTERCEPTORS, HttpClientModule, HttpClient } from '@angular/common/http';\nimport { RouteReuseStrategy, RouterModule } from '@angular/router';\n\nimport { RouteReusableStrategy } from './route-reusable-strategy';\nimport { ApiPrefixInterceptor } from './api-prefix.interceptor';\nimport { ErrorHandlerInterceptor } from './error-handler.interceptor';\nimport { HttpService } from './http.service';\nimport { TokenInterceptor } from './token.interceptor';\nimport { CacheInterceptor } from './cache.interceptor';\nimport { SnackModule } from './snack/snack.module';\n\n@NgModule({\n imports: [\n CommonModule,\n HttpClientModule,\n RouterModule,\n SnackModule\n ],\n providers: [\n {\n provide: HttpClient,\n useClass: HttpService\n },\n {\n provide: RouteReuseStrategy,\n useClass: RouteReusableStrategy\n }\n ],\n exports: [\n SnackModule\n ]\n})\nexport class CoreModule {\n\n constructor(@Optional() @SkipSelf() parentModule: CoreModule) {\n // Import guard\n if (parentModule) {\n throw new Error(`${parentModule} has already been loaded. Import Core module in the root module only.`);\n }\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { ActionPopupComponent } from './action-popup.component';\nimport { MaterialModule } from '../material.module';\n\n@NgModule({\n imports: [\n FlexLayoutModule,\n CommonModule,\n MaterialModule\n ],\n declarations: [\n ActionPopupComponent\n ],\n exports: [\n ActionPopupComponent\n ],\n entryComponents: [\n ActionPopupComponent\n ]\n})\nexport class ActionPopupModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { DataTableComponent } from './data-table.component';\nimport { InfiniteScrollModule } from \"ngx-infinite-scroll\";\nimport { MaterialModule } from '../material.module';\n\n\n@NgModule({\n imports: [\n FlexLayoutModule,\n CommonModule,\n InfiniteScrollModule,\n MaterialModule\n ],\n declarations: [\n DataTableComponent\n ],\n exports: [\n DataTableComponent\n ]\n})\nexport class DataTableModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { DocumentViewerComponent } from './document-viewer.component';\nimport { NgxDocViewerModule } from 'ngx-doc-viewer';\nimport { MaterialModule } from '../material.module';\n\n@NgModule({\n imports: [\n CommonModule,\n FlexLayoutModule,\n NgxDocViewerModule,\n MaterialModule\n ],\n declarations: [\n DocumentViewerComponent\n ],\n exports: [\n DocumentViewerComponent\n ]\n})\nexport class DocumentViewerModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FileDropperComponent } from './file-dropper.component';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { MaterialModule } from '../material.module';\n\n@NgModule({\n imports: [\n CommonModule,\n FlexLayoutModule,\n MaterialModule\n ],\n declarations: [\n FileDropperComponent\n ],\n exports: [FileDropperComponent]\n})\nexport class FileDropperModule { }\n","import { COMMA, ENTER } from '@angular/cdk/keycodes';\n\nexport class TechlifyTaggerTagFormConfigModel {\n selectable: boolean;\n removable: boolean;\n separatorKeysCodes: number[];\n placeholder: string;\n apiUrl: string;\n isCreateable: boolean;\n createApiUrl: string;\n isCacheTags: boolean;\n isSingle: boolean;\n\n constructor() {\n this.selectable = true;\n this.removable = true;\n this.separatorKeysCodes = [ENTER, COMMA];\n this.placeholder = 'Enter new Tag..';\n this.apiUrl = 'api/techlify-tagger-tags';\n this.createApiUrl = 'api/techlify-tagger-tags';\n this.isCreateable = true;\n this.isCacheTags = false;\n this.isSingle = false;\n }\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Component, ElementRef, ViewChild, OnInit, Input, OnDestroy, Inject, Optional, Self, OnChanges, SimpleChanges } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { MatChipInputEvent } from '@angular/material/chips';\nimport { MatFormField, MatFormFieldControl, MAT_FORM_FIELD } from '@angular/material/form-field';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { HttpService } from '../core/http.service';\nimport { TechlifyTaggerTagFormConfigModel } from './techlify-tagger-tag-form-config.model';\n\n@UntilDestroy()\n@Component({\n selector: 'app-techlify-tagger-tag-form-field',\n templateUrl: './techlify-tagger-tag-form-field.component.html',\n styleUrls: ['./techlify-tagger-tag-form-field.component.scss'],\n providers: [{ provide: MatFormFieldControl, useExisting: TechlifyTaggerTagFormFieldComponent }],\n})\nexport class TechlifyTaggerTagFormFieldComponent implements OnInit, ControlValueAccessor, MatFormFieldControl<any>, OnDestroy, OnChanges {\n\n static nextId = 0;\n stateChanges = new Subject<void>();\n focused = false;\n controlType = 'techlify-tagger-form-field';\n id = `techlify-tagger-form-field-${TechlifyTaggerTagFormFieldComponent.nextId++}`;\n\n onChange = (_: any) => { };\n onTouched = () => { };\n\n tagInputCtrl = new FormControl();\n filterString: any;\n @ViewChild('tagInput') tagInput: ElementRef<HTMLInputElement>;\n\n /**Pass the configuration for Techlify Tagger */\n @Input() config: TechlifyTaggerTagFormConfigModel = new TechlifyTaggerTagFormConfigModel();\n /**Pass the Model Type for Techlify Tagger, Required */\n @Input() modelType!: string;\n /**Pass the Model ID for Techlify Tagger */\n @Input() modelId: string;\n\n /**Pass the default list of tags */\n private _allTags: any[] = [];\n @Input()\n get allTags() {\n return this._allTags;\n }\n set allTags(value) {\n this._allTags = value;\n }\n\n /**Pass the Categories to filter for a model */\n @Input() categories: string[] = [];\n /**Pass default category to be used for assigning the tags, when we filter by more than one category */\n @Input() defaultCreateCategory: string;\n\n get tags() {\n return this.allTags.filter(x => this.value.some(y => y == x.id));\n }\n\n //Default Getter and Setters for a Form Field Implementation\n get empty() {\n return this.value.length == 0;\n }\n\n get shouldLabelFloat() {\n return this.focused || !this.empty || this.tagInputCtrl.value;\n }\n\n @Input()\n get required(): boolean {\n return this._required;\n }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n private _required = false;\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n this._disabled ? this.tagInputCtrl.disable() : this.tagInputCtrl.enable();\n this.stateChanges.next();\n }\n private _disabled = false;\n\n\n private _value: any[] = [];\n @Input()\n get value(): any[] {\n return this._value;\n }\n set value(tagIds: any[]) {\n this._value = tagIds || [];\n this.stateChanges.next();\n }\n\n get errorState(): boolean {\n return this.tagInputCtrl.dirty && this.required && (this.value.length == 0);\n }\n\n @Input()\n get placeholder(): string {\n return this._placeholder;\n }\n set placeholder(value: string) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n private _placeholder: string;\n\n\n ngOnInit(): void {\n\n }\n\n ngOnChanges(changes: SimpleChanges) {\n\n //API to load all tags for the model type\n if (this.allTags.length == 0) {\n this.httpService\n .cache(!this.config.isCacheTags)\n .get(this.config.apiUrl, {\n params: {\n categories: this.categories.join(','),\n perPage: '1000'\n }\n }).pipe(\n debounceTime(500),\n untilDestroyed(this)\n ).subscribe((result: any) => {\n this.allTags = result.data;\n });\n }\n\n //API to load only the selected tags for the model\n if (this.modelId && this.value.length == 0) {\n //Model Id is passed and no tags are present, so we query db for the avilable tags for the model ID.\n this.httpService\n .cache(!this.config.isCacheTags)\n .get(this.config.apiUrl, {\n params: {\n categories: this.categories.join(','),\n model_type: this.modelType,\n model_id: this.modelId,\n perPage: '1000'\n }\n }).pipe(\n debounceTime(500),\n untilDestroyed(this)\n ).subscribe((result: any) => {\n this.value = (result?.data || []).map((x: any) => x.id);\n this._handleInput();\n });\n }\n }\n\n init() {\n if (this.modelId && this.allTags.length == 0) {\n //Model Id is passed and no tags are passed, so we query db for the avilable tags for the model ID.\n this.httpService\n .cache(!this.config.isCacheTags)\n .get(this.config.apiUrl, {\n params: {\n categories: this.categories.join(','),\n model_type: this.modelType,\n model_id: this.modelId\n }\n }).pipe(\n untilDestroyed(this)\n ).subscribe((result: any) => {\n this.allTags = result.data;\n });\n }\n }\n\n get filteredTags(): any[] {\n return this._filter();\n }\n\n constructor(\n private _focusMonitor: FocusMonitor,\n private _elementRef: ElementRef<HTMLElement>,\n private httpService: HttpService,\n @Optional() @Inject(MAT_FORM_FIELD) public _formField: MatFormField,\n @Optional() @Self() public ngControl: NgControl) {\n\n this.tagInputCtrl.valueChanges\n .subscribe(filterValue => {\n this.filterString = filterValue;\n });\n\n //Set Focus Monitor\n _focusMonitor.monitor(_elementRef, true).subscribe(origin => {\n if (this.focused && !origin) {\n this.onTouched();\n }\n this.focused = !!origin;\n this.stateChanges.next();\n });\n\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n setDescribedByIds(ids: string[]) {\n // Just a empty implementation for Mat Form Field Interface\n }\n\n onContainerClick() {\n // Just a empty implementation for Mat Form Field Interface\n }\n\n\n async add(event: MatChipInputEvent) {\n const value = (event.value || '').trim();\n // Add our tag\n // Validate for single mode\n if (!this.config.isSingle || (this.value.length === 0)) {\n if (value && this.config.isCreateable) {\n const tags = this.allTags;\n let tag = tags.find((item: any) => item.title.toLowerCase() == value.toLowerCase());\n if (!tag) {\n //No tag present in the list\n try {\n const result: any = await this.httpService.post(this.config.createApiUrl, {\n title: value,\n description: value,\n category_title: (this.categories.length > 0) ? (this.defaultCreateCategory ? this.defaultCreateCategory : this.categories[0]) : ''\n }).toPromise();\n tag = result.item;\n } catch (error) {\n return;\n }\n this.allTags.push(tag);\n } else {\n //Optionally clean the existing value, to avoid duplicate\n this.remove(tag);\n }\n this.value.push(tag.id);\n this._handleInput();\n }\n }\n\n // Clear the input value\n event.input.value = '';\n\n this.tagInputCtrl.setValue(null);\n }\n\n remove(tag: any): void {\n this.value = this.value.filter(x => x !== tag.id);\n this._handleInput();\n }\n\n selected(event: MatAutocompleteSelectedEvent): void {\n // Validate for single mode\n if (!this.config.isSingle || (this.value.length === 0)) {\n //Clean the existing value, to avoid duplicate\n this.remove({ id: event.option.value });\n this.value.push(event.option.value);\n this._handleInput();\n }\n this.tagInput.nativeElement.value = '';\n this.tagInputCtrl.setValue(null);\n }\n\n private _filter(): any[] {\n const filterValue = this.filterString ? this.filterString.toString().toLowerCase() : null;\n const availableTags = this.allTags.filter((tag: any) => !this.value.some((item: any) => item == tag.id));\n return filterValue ? availableTags.filter((tag: any) => tag.title.toLowerCase().includes(filterValue)) : availableTags;\n }\n\n writeValue(tagIds: any[]): void {\n this.value = tagIds || [];\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n _handleInput(): void {\n this.onChange(this.value);\n }\n\n static ngAcceptInputType_disabled: BooleanInput;\n static ngAcceptInputType_required: BooleanInput;\n\n ngOnDestroy() {\n this.stateChanges.complete();\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TechlifyTaggerTagFormFieldComponent } from './techlify-tagger-tag-form-field.component';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MaterialModule } from '../material.module';\n\n\n\n@NgModule({\n declarations: [\n TechlifyTaggerTagFormFieldComponent\n ],\n imports: [\n CommonModule,\n MaterialModule,\n FlexLayoutModule,\n MatAutocompleteModule,\n ReactiveFormsModule\n ],\n exports: [TechlifyTaggerTagFormFieldComponent]\n})\nexport class TechlifyTaggerTagFormFieldModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SearchableSelectorComponent } from './searchable-selector.component';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatSelectInfiniteScrollDirective } from './mat-select-infinite-scroll.directive';\nimport { MaterialModule } from '../material.module';\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FlexLayoutModule,\n MaterialModule\n ],\n declarations: [\n SearchableSelectorComponent,\n MatSelectInfiniteScrollDirective\n ],\n exports: [\n SearchableSelectorComponent,\n MatSelectInfiniteScrollDirective\n ]\n})\nexport class SearchableSelectorModule { }\n","import { Component, OnInit, Input } from \"@angular/core\";\n\n@Component({\n selector: \"app-read-more\",\n templateUrl: \"./read-more.component.html\",\n styleUrls: [\"./read-more.component.scss\"]\n})\nexport class ReadMoreComponent implements OnInit {\n @Input() text: string;\n @Input() maxLength: number = 100;\n currentText: string;\n hideToggle: boolean = true;\n\n isCollapsed: boolean = true;\n\n constructor() {}\n\n ngOnInit() {\n this.determineView();\n }\n\n toggleView() {\n this.isCollapsed = !this.isCollapsed;\n this.determineView();\n }\n\n determineView() {\n if (!this.text || this.text.length <= this.maxLength) {\n this.currentText = this.text;\n this.isCollapsed = false;\n this.hideToggle = true;\n return;\n }\n this.hideToggle = false;\n if (this.isCollapsed == true) {\n this.currentText = this.text.substring(0, this.maxLength) + \"...\";\n } else if (this.isCollapsed == false) {\n this.currentText = this.text;\n }\n }\n}\n","import { FlexLayoutModule } from '@angular/flex-layout';\nimport { MaterialModule } from '../material.module';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReadMoreComponent } from './read-more.component';\n\n@NgModule({\n declarations: [ReadMoreComponent],\n imports: [\n CommonModule,\n MaterialModule,\n FlexLayoutModule\n ],\n exports: [\n ReadMoreComponent\n ]\n})\nexport class ReadMoreModule { }","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EntityFileFormComponent } from './entity-file-form/entity-file-form.component';\nimport { EntityFilesViewAllComponent } from './entity-files-view-all.component';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { FileDropperModule } from '../file-dropper/file-dropper.module';\nimport { DocumentViewerModule } from '../document-viewer/document-viewer.module';\nimport { ActionPopupModule } from '../action-popup/action-popup.module';\nimport { MaterialModule } from '../material.module';\nimport { TechlifyTaggerTagFormFieldModule } from '../techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.module';\nimport { SearchableSelectorModule } from '../searchable-selector/searchable-selector.module';\nimport { ReadMoreModule } from '../read-more/read-more.module';\n\n\n@NgModule({\n declarations: [EntityFileFormComponent, EntityFilesViewAllComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n FlexLayoutModule,\n FileDropperModule,\n DocumentViewerModule,\n InfiniteScrollModule,\n ActionPopupModule,\n MaterialModule,\n TechlifyTaggerTagFormFieldModule,\n SearchableSelectorModule,\n ReadMoreModule\n ],\n exports: [\n EntityFilesViewAllComponent\n ],\n entryComponents: [EntityFileFormComponent]\n})\nexport class EntityFilesViewAllModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NoteListComponent } from './note-list/note-list.component';\nimport { NoteFormComponent } from './note-form/note-form.component';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { ActionPopupModule } from '../action-popup/action-popup.module';\nimport { MaterialModule } from '../material.module';\nimport { CommentFormComponent } from './comment-form/comment-form.component';\nimport { ReadMoreModule } from '../read-more/read-more.module';\n\n@NgModule({\n declarations: [\n NoteListComponent,\n NoteFormComponent,\n CommentFormComponent,\n ],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n InfiniteScrollModule,\n FlexLayoutModule,\n ActionPopupModule,\n MaterialModule,\n ReadMoreModule\n ],\n exports: [\n NoteListComponent\n ],\n entryComponents: [NoteFormComponent]\n})\nexport class NoteModule { }\n","import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n/* Selectors */\r\nimport { NumItemsSelector } from './num-items-selector.component';\r\nimport { NumberSelector } from './number-selector.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ],\r\n declarations: [\r\n NumItemsSelector, NumberSelector,\r\n ],\r\n exports: [NumItemsSelector, NumberSelector]\r\n})\r\nexport class UtilityModule { }\r\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nconst routes: Routes = [];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class TimelineFilterRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { TimelineFilterRoutingModule } from './timeline-filter-routing.module';\nimport { TimelineFilterComponent } from './timeline-filter.component';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MaterialModule } from '../material.module';\n\n\n@NgModule({\n declarations: [TimelineFilterComponent],\n imports: [\n CommonModule,\n TimelineFilterRoutingModule,\n FlexLayoutModule,\n MaterialModule,\n ReactiveFormsModule\n ],\n exports: [TimelineFilterComponent]\n})\nexport class TimelineFilterModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LoaderComponent } from './loader.component';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\n@NgModule({\n declarations: [\n LoaderComponent\n ],\n imports: [\n CommonModule,\n MatProgressSpinnerModule\n ],\n exports: [\n LoaderComponent\n ]\n})\nexport class LoaderModule { }\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nconst routes: Routes = [];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class EmailSubscriptionRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { EmailSubscriptionRoutingModule } from './email-subscription-routing.module';\n\n\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n EmailSubscriptionRoutingModule\n ]\n})\nexport class EmailSubscriptionModule { }\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\n\nconst routes: Routes = [];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class EmailSubscriptionUserRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { EmailSubscriptionUserRoutingModule } from './email-subscription-user-routing.module';\n\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n EmailSubscriptionUserRoutingModule\n ]\n})\nexport class EmailSubscriptionUserModule { }\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nconst routes: Routes = [];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class EmailSubscriptionUserFormRoutingModule { }\n","\nimport { Component, Inject, OnInit, TemplateRef } from '@angular/core';\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { finalize } from 'rxjs/operators';\nimport { AlertService } from '../../../core/alert.service';\nimport { FormValidatorService } from '../../../core/form-validator.service';\nimport { HttpService } from '../../../core/http.service';\nimport { Logger } from '../../../core/logger.service';\n\nconst log = new Logger('EmailSubscriptionUser Form');\n\nconst errorMessages: any = {\n user_id: {\n required: \"User is required\"\n },\n email_type_id: {\n required: \"Email Type is required\"\n },\n};\n\n@UntilDestroy()\n@Component({\n selector: 'app-email-subscription-user-form',\n templateUrl: './email-subscription-user-form.component.html',\n styleUrls: ['./email-subscription-user-form.component.scss']\n})\nexport class EmailSubscriptionUserFormComponent implements OnInit {\n\n updateMode: boolean;\n esUserFormGroup: FormGroup;\n esUserFormFirstAttempt: boolean;\n esUser: any;\n isSubmitLoading: boolean;\n selectedUser: any;\n selectedType: any;\n\n constructor(private fb: FormBuilder,\n private formValidatorService: FormValidatorService,\n private alertService: AlertService,\n public dialogRef: MatDialogRef<EmailSubscriptionUserFormComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n private http: HttpService\n ) {\n this.createForm();\n }\n\n /** Method to create a form **/\n private createForm() {\n\n //TODO: Finialize and add more validations.\n this.esUserFormGroup = this.fb.group({\n id: [''],\n user_id: ['', Validators.required],\n email_type_id: ['', Validators.required],\n });\n }\n\n\n ngOnInit() {\n if (this.data?.esUser?.id) {\n this.esUser = this.data.esUser;\n this.updateMode = true;\n this.selectedType = this.esUser?.email_type;\n this.selectedUser = this.esUser?.user;\n this.esUserFormGroup.patchValue(this.esUser);\n }\n\n }\n\n //Method to trigger login\n submit() {\n this.esUserFormGroup.markAllAsTouched();\n this.esUserFormFirstAttempt = true;\n if (this.esUserFormGroup.valid) {\n this.isSubmitLoading = true;\n const model = this.esUserFormGroup.value;\n (\n this.updateMode ?\n this.http.put(`api/email-subscription-users/${model?.id}`, model) :\n this.http.post(`api/email-subscription-users`, model)\n )\n .pipe(\n finalize(() => this.isSubmitLoading = false),\n untilDestroyed(this)\n ).subscribe(result => {\n this.alertService.addAlert(\"Subscription saved successfully\", \"success\");\n this.dialogRef.close(result);\n });\n }\n }\n\n\n cancel() {\n this.dialogRef.close();\n }\n\n /**Method to evaluate form fields*/\n isFieldValid(field: string) {\n return this.formValidatorService.isFieldValid(field, this.esUserFormGroup, this.esUserFormFirstAttempt);\n }\n\n /**Method to find error in form fields*/\n getErrorMessage(field: string) {\n return this.formValidatorService.getErrorMessage(field, this.esUserFormGroup, errorMessages);\n }\n\n ngOnDestroy() {\n // Needed for automatic unsubscribe with untilDestroyed\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { EmailSubscriptionUserFormRoutingModule } from './email-subscription-user-form-routing.module';\nimport { EmailSubscriptionUserFormComponent } from './email-subscription-user-form.component';\nimport { SearchableSelectorModule } from '../../../searchable-selector/searchable-selector.module';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { MaterialModule } from '../../../material.module';\nimport { LoaderModule } from '../../../loader/loader.module';\n\n\n@NgModule({\n declarations: [EmailSubscriptionUserFormComponent],\n imports: [\n CommonModule,\n MaterialModule,\n FlexLayoutModule,\n ReactiveFormsModule,\n SearchableSelectorModule,\n EmailSubscriptionUserFormRoutingModule,\n LoaderModule\n ],\n entryComponents: [EmailSubscriptionUserFormComponent]\n})\nexport class EmailSubscriptionUserFormModule { }\n","import { Component, OnInit, ViewChild } from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\nimport { FormControl } from '@angular/forms';\nimport { MatSort } from '@angular/material/sort';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { EmailSubscriptionUserFormComponent } from '../email-subscription-user-form/email-subscription-user-form.component';\nimport { Router } from '@angular/router';\nimport { Logger } from '../../../core/logger.service';\nimport { PageEvent } from '../../../data-table/data-table.model';\nimport { HttpService } from '../../../core/http.service';\nimport { ActionPopupComponent } from '../../../action-popup/action-popup.component';\nimport { ActionPopup } from '../../../action-popup/action-popup.model';\n\nconst log = new Logger('EmailSubscriptionUser list');\n\n@UntilDestroy()\n@Component({\n selector: 'app-email-subscription-user-list',\n templateUrl: './email-subscription-user-list.component.html',\n styleUrls: ['./email-subscription-user-list.component.scss']\n})\nexport class EmailSubscriptionUserListComponent implements OnInit {\n\n esUserList: any[] = [];\n pageEvent: PageEvent = { page: 1, perPage: 25, lastPage: 1 };\n filters: any = {\n sort_by: 'created_at|desc',\n };\n\n\n @ViewChild(MatSort, { static: true }) sort: MatSort;\n\n displayColumns: FormControl = new FormControl(['index', 'user.name', 'email_type.title', 'creator.name', 'created_at', 'actions']);\n displayedColumns: any[] = [];\n availableDisplayColumns: any[] = [\n { order: 1, value: 'index', name: 'Index' },\n { order: 2, value: 'user.name', name: 'User' },\n { order: 3, value: 'email_type.title', name: 'Email Type' },\n { order: 4, value: 'creator.name', name: 'Creator' },\n { order: 5, value: 'actions', name: 'Actions' }\n ];\n\n constructor(\n private dialog: MatDialog,\n private http: HttpService,\n private router: Router,\n ) { }\n\n ngOnInit() {\n this.displayedColumns = this.displayColumns.value;\n this.initializeData();\n\n if (this.sort) {\n this.sort.sortChange.pipe(untilDestroyed(this))\n .subscribe((value: any) => {\n this.changeSort(value);\n })\n }\n }\n\n get selectedColumns(): string[] {\n return this.availableDisplayColumns\n .filter(col => (this.displayColumns.value as any).some((x: any) => x === col.value))\n .sort((a, b) => (a.order > b.order) ? 1 : ((b.order > a.order) ? -1 : 0))\n .map(col => col.value);\n }\n\n columnsChange() {\n this.displayedColumns = this.selectedColumns;\n }\n\n\n initializeData() {\n this.http.get(`api/email-subscription-users`, { params: { ...this.filters, ...this.pageEvent } })\n .pipe(untilDestroyed(this))\n .subscribe((result: any) => {\n this.esUserList = this.esUserList.concat(result.data);\n this.pageEvent.page = result.current_page;\n this.pageEvent.lastPage = result.last_page;\n });\n }\n\n filterChange(event: any) {\n this.filters = {\n ...this.filters,\n ...event\n };\n this.reload();\n }\n\n addEmailSubscriptionUser() {\n const dialogRef = this.dialog.open(EmailSubscriptionUserFormComponent, {\n width: '800px',\n autoFocus: false,\n data: {} // Any data passed here will be injected into the model\n });\n\n dialogRef.afterClosed().subscribe((result: any) => {\n if (result) {\n log.debug(result);\n this.reload();\n }\n });\n }\n\n\n editEmailSubscriptionUser(event: any, esUser: any) {\n event.stopPropagation();\n const dialogRef = this.dialog.open(EmailSubscriptionUserFormComponent, {\n width: '800px',\n autoFocus: false,\n data: {\n esUser: esUser\n } // Any data passed here will be injected into the model\n });\n\n dialogRef.afterClosed().subscribe((result: any) => {\n if (result) {\n log.debug(result);\n this.reload();\n }\n });\n }\n\n deleteEmailSubscriptionUser(event: any, esUser: any) {\n event.stopPropagation();\n const dialogRef = this.dialog.open(ActionPopupComponent, {\n width: '400px',\n data: <ActionPopup>{\n title: 'Delete Subscription',\n message: `Are you sure to proceed delete the esUser ${esUser.name}?`\n },\n autoFocus: false\n });\n\n dialogRef.afterClosed().subscribe(result => {\n if (result) {\n //Action confirmed\n this.http.delete(`api/email-subscription-users/${esUser?.id}`)\n .pipe(untilDestroyed(this))\n .subscribe((result: any) => {\n this.esUserList = this.esUserList.filter(x => x.id !== esUser.id);\n });\n }\n });\n }\n\n onScroll() {\n if (this.pageEvent.lastPage > this.pageEvent.page) {\n this.pageEvent.page += 1;\n this.initializeData();\n }\n }\n\n changeSort(event: any) {\n if (event.direction) {\n this.filters.sort_by = `${event.active}|${event.direction}`;\n this.reload();\n }\n }\n\n reload() {\n this.esUserList = [];\n this.pageEvent = { page: 1, perPage: 25, lastPage: 1 };\n this.initializeData();\n }\n\n\n ngOnDestroy() {\n //Until destroyed uses it\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { AuthenticationGuard } from '../../../core/authentication.guard';\nimport { EmailSubscriptionUserListComponent } from './email-subscription-user-list.component';\n\nexport const esulr = {\n title: 'Email Subscription Users',\n permissions: {\n only: ['app_admin'],\n redirectTo: '/'\n }\n};\n\nconst routes: Routes = [\n {\n path: '',\n component: EmailSubscriptionUserListComponent,\n canActivate: [AuthenticationGuard],\n data: esulr\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class EmailSubscriptionUserListRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nconst routes: Routes = [];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class EmailSubscriptionUserListFilterRoutingModule { }\n","import { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';\nimport { FormGroup, FormBuilder } from '@angular/forms';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\n\n@UntilDestroy()\n@Component({\n selector: 'app-email-subscription-user-list-filter',\n templateUrl: './email-subscription-user-list-filter.component.html',\n styleUrls: ['./email-subscription-user-list-filter.component.scss']\n})\nexport class EmailSubscriptionUserListFilterComponent implements OnInit {\n\n esUserFilterForm: FormGroup;\n\n @Output() valueChange = new EventEmitter();\n\n constructor(private fb: FormBuilder) {\n this.createForm();\n }\n\n private createForm() {\n\n //TODO: Finialize and add more validations.\n this.esUserFilterForm = this.fb.group({\n user_id: [''],\n email_type_id: [''],\n });\n }\n\n ngOnInit(): void {\n\n this.esUserFilterForm.valueChanges.pipe(\n debounceTime(500),\n distinctUntilChanged(),\n untilDestroyed(this)\n ).subscribe(value => {\n this.valueChange.emit(value);\n })\n }\n\n\n resetFieldValue(field: string) {\n this.esUserFilterForm.get(field).setValue('');\n }\n\n getFieldValue(field: string) {\n return this.esUserFilterForm.get(field).value;\n }\n\n\n ngOnDestroy() {\n\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { EmailSubscriptionUserListFilterRoutingModule } from './email-subscription-user-list-filter-routing.module';\nimport { EmailSubscriptionUserListFilterComponent } from './email-subscription-user-list-filter.component';\nimport { MaterialModule } from '../../../material.module';\nimport { SearchableSelectorModule } from '../../../searchable-selector/searchable-selector.module';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n\n@NgModule({\n declarations: [EmailSubscriptionUserListFilterComponent],\n imports: [\n CommonModule,\n MaterialModule,\n FlexLayoutModule,\n ReactiveFormsModule,\n SearchableSelectorModule,\n EmailSubscriptionUserListFilterRoutingModule\n ],\n exports: [EmailSubscriptionUserListFilterComponent]\n})\nexport class EmailSubscriptionUserListFilterModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { EmailSubscriptionUserListRoutingModule } from './email-subscription-user-list-routing.module';\nimport { EmailSubscriptionUserListComponent } from './email-subscription-user-list.component';\nimport { EmailSubscriptionUserListFilterModule } from '../email-subscription-user-list-filter/email-subscription-user-list-filter.module';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { EmailSubscriptionUserFormModule } from '../email-subscription-user-form/email-subscription-user-form.module';\nimport { MaterialModule } from '../../../material.module';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n\n@NgModule({\n declarations: [EmailSubscriptionUserListComponent],\n imports: [\n CommonModule,\n InfiniteScrollModule,\n MaterialModule,\n FlexLayoutModule,\n ReactiveFormsModule,\n EmailSubscriptionUserListRoutingModule,\n EmailSubscriptionUserFormModule,\n EmailSubscriptionUserListFilterModule\n ],\n exports: [EmailSubscriptionUserListComponent]\n})\nexport class EmailSubscriptionUserListModule { }\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nconst routes: Routes = [];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\n\nexport class EmailSubscriptionTypeRoutingModule { }","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { EmailSubscriptionTypeRoutingModule } from './email-subscription-type-routing.module';\n\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n EmailSubscriptionTypeRoutingModule\n ]\n})\nexport class EmailSubscriptionTypeModule { }\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nconst routes: Routes = [];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class EmailSubscriptionTypeFormRoutingModule { }\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { finalize } from 'rxjs/operators';\nimport { AlertService } from '../../../core/alert.service';\nimport { FormValidatorService } from '../../../core/form-validator.service';\nimport { HttpService } from '../../../core/http.service';\n\nconst errorMessages: any = {\n title: {\n required: \"Title is required\"\n },\n code: {\n required: \"Code is required\"\n },\n frequency_id: {\n required: \"Frequency is required\"\n },\n};\n\n@UntilDestroy()\n@Component({\n selector: 'app-email-subscription-type-form',\n templateUrl: './email-subscription-type-form.component.html',\n styleUrls: ['./email-subscription-type-form.component.scss']\n})\nexport class EmailSubscriptionTypeFormComponent implements OnInit {\n\n updateMode: boolean;\n emailSubscriptionTypeFormGroup: FormGroup;\n emailSubscriptionTypeFormFirstAttempt: boolean;\n emailSubscriptionType: any;\n selectedFrequency: any;\n isLoading: boolean;\n isSubmitLoading: boolean;\n\n constructor(private fb: FormBuilder,\n private formValidatorService: FormValidatorService,\n private alertService: AlertService,\n public dialogRef: MatDialogRef<EmailSubscriptionTypeFormComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n private http: HttpService\n ) {\n this.createForm();\n }\n\n /** Method to create a form **/\n private createForm() {\n\n //TODO: Finialize and add more validations.\n this.emailSubscriptionTypeFormGroup = this.fb.group({\n id: [''],\n title: ['', Validators.compose([Validators.required])],\n code: ['', Validators.compose([Validators.required])],\n frequency_id: ['', Validators.required],\n description: [''],\n });\n }\n\n ngOnInit() {\n if (this.data.emailSubscriptionType?.id) {\n this.isLoading = true;\n this.emailSubscriptionType = this.data?.emailSubscriptionType;\n this.updateMode = true;\n this.selectedFrequency = this.emailSubscriptionType?.frequency || {};\n this.emailSubscriptionTypeFormGroup.patchValue(this.emailSubscriptionType);\n }\n }\n\n //Method to trigger login\n submit() {\n this.emailSubscriptionTypeFormGroup.markAllAsTouched();\n this.emailSubscriptionTypeFormFirstAttempt = true;\n if (this.emailSubscriptionTypeFormGroup.valid) {\n this.isSubmitLoading = true;\n const model = this.emailSubscriptionTypeFormGroup.value;\n (\n this.updateMode ?\n this.http.put(`api/email-subscription-types/${model?.id}`, model) :\n this.http.post(`api/email-subscription-types`, model)\n )\n .pipe(\n finalize(() => this.isSubmitLoading = false),\n untilDestroyed(this)\n ).subscribe(result => {\n this.alertService.addAlert(\"Email Type saved successfully\", \"success\");\n this.dialogRef.close(result);\n });\n }\n }\n\n\n cancel() {\n this.dialogRef.close();\n }\n\n\n /**Method to evaluate form fields*/\n isFieldValid(field: string) {\n return this.formValidatorService.isFieldValid(field, this.emailSubscriptionTypeFormGroup, this.emailSubscriptionTypeFormFirstAttempt);\n }\n\n /**Method to find error in form fields*/\n getErrorMessage(field: string) {\n return this.formValidatorService.getErrorMessage(field, this.emailSubscriptionTypeFormGroup, errorMessages);\n }\n\n ngOnDestroy() {\n // Needed for automatic unsubscribe with untilDestroyed\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { EmailSubscriptionTypeFormRoutingModule } from './email-subscription-type-form-routing.module';\nimport { EmailSubscriptionTypeFormComponent } from './email-subscription-type-form.component';\nimport { SearchableSelectorModule } from '../../../searchable-selector/searchable-selector.module';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { MaterialModule } from '../../../material.module';\nimport { LoaderModule } from '../../../loader/loader.module';\n\n\n\n@NgModule({\n declarations: [EmailSubscriptionTypeFormComponent],\n imports: [\n CommonModule,\n MaterialModule,\n FlexLayoutModule,\n ReactiveFormsModule,\n SearchableSelectorModule,\n EmailSubscriptionTypeFormRoutingModule,\n LoaderModule\n ],\n exports: [EmailSubscriptionTypeFormComponent],\n entryComponents: [EmailSubscriptionTypeFormComponent]\n})\nexport class EmailSubscriptionTypeFormModule { }\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { FormControl } from '@angular/forms';\nimport { distinctUntilChanged, debounceTime } from 'rxjs/operators';\nimport { MatSort } from '@angular/material/sort';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { EmailSubscriptionTypeFormComponent } from '../email-subscription-type-form/email-subscription-type-form.component';\nimport { PageEvent } from '../../../data-table/data-table.model';\nimport { HttpService } from '../../../core/http.service';\nimport { ActionPopupComponent } from '../../../action-popup/action-popup.component';\nimport { ActionPopup } from '../../../action-popup/action-popup.model';\n\n@UntilDestroy()\n@Component({\n selector: 'app-email-subscription-type-list',\n templateUrl: './email-subscription-type-list.component.html',\n styleUrls: ['./email-subscription-type-list.component.scss']\n})\nexport class EmailSubscriptionTypeListComponent implements OnInit {\n\n emailSubscriptionTypeList: any[] = [];\n pageEvent: PageEvent = { page: 1, perPage: 25, lastPage: 1 };\n filters: any = {\n sort_by: 'created_at|desc',\n isLoadRelations: true,\n relations: ['frequency']\n };\n search: FormControl = new FormControl('');\n\n\n @ViewChild(MatSort, { static: true }) sort: MatSort;\n\n displayColumns: FormControl = new FormControl(['index', 'title', 'frequency.title', 'description', 'actions']);\n displayedColumns: any[] = [];\n availableDisplayColumns: any[] = [\n { order: 1, value: 'index', name: 'Index' },\n { order: 2, value: 'title', name: 'Title' },\n { order: 3, value: 'code', name: 'Code' },\n { order: 4, value: 'frequency.title', name: 'Frequency' },\n { order: 5, value: 'description', name: 'Description' },\n { order: 6, value: 'actions', name: 'Actions' }\n ];\n\n constructor(\n private dialog: MatDialog,\n private http: HttpService,\n ) { }\n\n ngOnInit() {\n this.displayedColumns = this.displayColumns.value;\n this.initializeData();\n this.search.valueChanges.pipe(\n debounceTime(500),\n distinctUntilChanged(),\n untilDestroyed(this)\n ).subscribe(value => {\n this.filters.search = value;\n this.reload();\n });\n\n if (this.sort) {\n this.sort.sortChange.pipe(untilDestroyed(this))\n .subscribe((value: any) => {\n this.changeSort(value);\n })\n }\n }\n\n get selectedColumns(): string[] {\n return this.availableDisplayColumns\n .filter(col => (this.displayColumns.value as any).some((x: any) => x === col.value))\n .sort((a, b) => (a.order > b.order) ? 1 : ((b.order > a.order) ? -1 : 0))\n .map(col => col.value);\n }\n\n columnsChange() {\n this.displayedColumns = this.selectedColumns;\n }\n\n\n initializeData() {\n this.http.get(`api/email-subscription-types`, { params: { ...this.filters, ...this.pageEvent } })\n .pipe(untilDestroyed(this))\n .subscribe((result: any) => {\n this.emailSubscriptionTypeList = this.emailSubscriptionTypeList.concat(result.data);\n this.pageEvent.page = result.current_page;\n this.pageEvent.lastPage = result.last_page;\n });\n }\n\n addEmailSubscriptionType() {\n const dialogRef = this.dialog.open(EmailSubscriptionTypeFormComponent, {\n width: '400px',\n autoFocus: false,\n data: {} // Any data passed here will be injected into the model\n });\n\n dialogRef.afterClosed().subscribe((result: any) => {\n if (result) {\n this.reload();\n }\n });\n }\n\n\n editEmailSubscriptionType(event: any, emailSubscriptionType: any) {\n event.stopPropagation();\n const dialogRef = this.dialog.open(EmailSubscriptionTypeFormComponent, {\n width: '400px',\n autoFocus: false,\n data: {\n emailSubscriptionType: emailSubscriptionType\n } // Any data passed here will be injected into the model\n });\n\n dialogRef.afterClosed().subscribe((result: any) => {\n if (result) {\n this.reload();\n }\n });\n }\n\n deleteEmailSubscriptionType(event: any, emailSubscriptionType: any) {\n event.stopPropagation();\n const dialogRef = this.dialog.open(ActionPopupComponent, {\n width: '400px',\n data: <ActionPopup>{\n title: 'Delete Email Type',\n message: `Are you sure to proceed delete the Email Type ${emailSubscriptionType.title}?`\n },\n autoFocus: false\n });\n\n dialogRef.afterClosed().subscribe(result => {\n if (result) {\n //Action confirmed\n this.http.delete(`api/email-subscription-types/${emailSubscriptionType?.id}`)\n .pipe(untilDestroyed(this))\n .subscribe((result: any) => {\n this.emailSubscriptionTypeList = this.emailSubscriptionTypeList.filter(x => x.id !== emailSubscriptionType.id);\n });\n }\n });\n }\n\n onScroll() {\n if (this.pageEvent.lastPage > this.pageEvent.page) {\n this.pageEvent.page += 1;\n this.initializeData();\n }\n }\n\n changeSort(event: any) {\n if (event.direction) {\n this.filters.sort_by = `${event.active}|${event.direction}`;\n this.reload();\n }\n }\n\n reload() {\n this.emailSubscriptionTypeList = [];\n this.pageEvent = { page: 1, perPage: 25, lastPage: 1 };\n this.initializeData();\n }\n\n ngOnDestroy() {\n //Until destroyed uses it\n }\n\n}","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { AuthenticationGuard } from '../../../core/authentication.guard';\n\nimport { EmailSubscriptionTypeListComponent } from './email-subscription-type-list.component';\n\nexport const estlr = {\n title: 'Email Subscription Type',\n permissions: {\n only: ['client_admin'],\n redirectTo: '/'\n }\n};\n\n\nconst routes: Routes = [\n {\n path: '',\n component: EmailSubscriptionTypeListComponent,\n canActivate: [AuthenticationGuard],\n data: estlr\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class EmailSubscriptionTypeListRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { EmailSubscriptionTypeListRoutingModule } from './email-subscription-type-list-routing.module';\nimport { EmailSubscriptionTypeListComponent } from './email-subscription-type-list.component';\nimport { EmailSubscriptionTypeFormModule } from '../email-subscription-type-form/email-subscription-type-form.module';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { MaterialModule } from '../../../material.module';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n\n@NgModule({\n declarations: [EmailSubscriptionTypeListComponent],\n imports: [\n CommonModule,\n MaterialModule,\n FlexLayoutModule,\n ReactiveFormsModule,\n InfiniteScrollModule,\n EmailSubscriptionTypeFormModule,\n EmailSubscriptionTypeListRoutingModule\n ],\n exports: [EmailSubscriptionTypeListComponent]\n})\nexport class EmailSubscriptionTypeListModule { }\n","import { Component, OnInit } from '@angular/core';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { HttpService } from '../../core/http.service';\nimport { PageEvent } from '../../data-table/data-table.model';\n\n@UntilDestroy()\n@Component({\n selector: 'app-email-subscription-for-user',\n templateUrl: './email-subscription-for-user.component.html',\n styleUrls: ['./email-subscription-for-user.component.scss']\n})\nexport class EmailSubscriptionForUserComponent implements OnInit {\n\n subscriptions: any[] = [];\n pageEvent: PageEvent = { page: 1, perPage: 25, lastPage: 1 };\n filters: any = {\n sort_by: 'created_at|desc',\n isLoadRelations: true,\n relations: 'frequency,currentUserSubscription'\n };\n\n constructor(\n private http: HttpService\n ) { }\n\n ngOnInit(): void {\n this.fetchSubscriptions();\n }\n\n fetchSubscriptions() {\n this.http.get(`api/email-subscription-types`, { params: { ...this.filters, ...this.pageEvent } })\n .pipe(untilDestroyed(this))\n .subscribe((result: any) => {\n this.subscriptions = this.subscriptions.concat(result.data);\n this.pageEvent.page = result.current_page;\n this.pageEvent.lastPage = result.last_page;\n });\n }\n\n onScroll() {\n if (this.pageEvent.lastPage > this.pageEvent.page) {\n this.pageEvent.page += 1;\n this.fetchSubscriptions();\n }\n }\n\n subscribe(sub: any) {\n this.http.post(`api/email-subscription-for-user`, { email_type_id: sub?.id })\n .pipe(untilDestroyed(this))\n .subscribe((result: any) => {\n sub.current_user_subscription = result?.item;\n });\n }\n\n unsubscribe(sub: any) {\n this.http.delete(`api/email-subscription-users/${sub?.current_user_subscription?.id}`)\n .pipe(untilDestroyed(this))\n .subscribe((_: any) => {\n sub.current_user_subscription = null;\n });\n }\n\n\n reload() {\n this.subscriptions = [];\n this.pageEvent = { page: 1, perPage: 25, lastPage: 1 };\n this.fetchSubscriptions();\n }\n\n ngOnDestroy() {\n //Until destroyed uses it\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { AuthenticationGuard } from '../../core/authentication.guard';\nimport { EmailSubscriptionForUserComponent } from './email-subscription-for-user.component';\n\nexport const esfur = {\n permissions: {\n only: ['client_admin']\n }\n};\n\nconst routes: Routes = [\n {\n path: '',\n component: EmailSubscriptionForUserComponent,\n canActivate: [AuthenticationGuard],\n data: esfur\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class EmailSubscriptionForUserRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { EmailSubscriptionForUserRoutingModule } from './email-subscription-for-user-routing.module';\nimport { EmailSubscriptionForUserComponent } from './email-subscription-for-user.component';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { MaterialModule } from '../../material.module';\n\n\n@NgModule({\n declarations: [EmailSubscriptionForUserComponent],\n imports: [\n CommonModule,\n InfiniteScrollModule,\n MaterialModule,\n FlexLayoutModule,\n EmailSubscriptionForUserRoutingModule\n ],\n exports: [EmailSubscriptionForUserComponent]\n})\nexport class EmailSubscriptionForUserModule { }\n","import { HttpService } from '../core/http.service';\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TechlifyUpdateService {\n\n constructor(private http: HttpService) { }\n\n getTechlifyUpdates(filters: any) {\n return this.http.get(`api/techlify-updates`, { params: filters }).toPromise();\n }\n\n createTechlifyUpdate(techlifyUpdate: any) {\n return this.http.post(`api/techlify-updates`, techlifyUpdate).toPromise();\n }\n\n updateTechlifyUpdate(techlifyUpdate: any) {\n return this.http.put(`api/techlify-updates/${techlifyUpdate.id}`, techlifyUpdate).toPromise();\n }\n\n deleteTechlifyUpdate(techlifyUpdateId: any) {\n return this.http.delete(`api/techlify-updates/${techlifyUpdateId}`).toPromise();\n }\n\n getTechlifyUpdate(techlifyUpdateId: any) {\n return this.http.get(`api/techlify-updates/${techlifyUpdateId}`).toPromise();\n }\n\n getNewUpdateForCurrentUser() {\n return this.http.get(`api/current-user-techlify-updates`).toPromise();\n }\n\n createUpdateViewRecord(techlifyUpdateView: any) {\n return this.http.post(`api/techlify-update-views`, techlifyUpdateView).toPromise();\n }\n\n updateCurrentUserUpdates() {\n return this.http.get(`api/techlify-updates/update-view`).toPromise();\n }\n}\n","import { AlertService } from \"../../core/alert.service\";\nimport { TechlifyUpdateService } from './../techlify-update.service';\nimport { FormControl, Validators } from '@angular/forms';\nimport { Component, EventEmitter, Inject, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { FormValidatorService } from '../../core/form-validator.service';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { Editor, Toolbar } from 'ngx-editor';\n\nconst errorMessages: any = {\n title: {\n required: \"Title is required\",\n },\n released_on: {\n required: \"Released On is required\",\n },\n version: {\n required: \"Version is required\",\n },\n description: {\n required: \"Description is required\",\n },\n learn_more_link: {\n pattern: \"Please enter valid link\",\n }\n}\n\n@Component({\n selector: 'app-techlify-update-form',\n templateUrl: './techlify-update-form.component.html',\n styleUrls: ['./techlify-update-form.component.scss']\n})\nexport class TechlifyUpdateFormComponent implements OnInit {\n\n @Output() onSave = new EventEmitter<any>();\n techlifyUpdateForm: FormGroup;\n isUpdateMode: boolean = false;\n editor: Editor;\n toolbar: Toolbar = [\n ['bold', 'italic'],\n ['bullet_list'],\n ];\n\n constructor(\n public dialogRef: MatDialogRef<TechlifyUpdateFormComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n private fb: FormBuilder,\n private formValidatorService: FormValidatorService,\n private alertService: AlertService,\n private techlifyUpdateService: TechlifyUpdateService\n ) {\n this.createForm();\n }\n\n private createForm() {\n this.techlifyUpdateForm = this.fb.group({\n id: new FormControl(''),\n title: new FormControl('', Validators.required),\n description: new FormControl('', Validators.required),\n version: new FormControl('', Validators.required),\n released_on: new FormControl('', Validators.required),\n learn_more_link: new FormControl('', Validators.compose([Validators.pattern('(https?://)?([\\\\da-z.-]+)\\\\.([a-z.]{2,6})[/\\\\w .-]*/?')])),\n });\n if (this.data.techlifyUpdateDetails) {\n this.isUpdateMode = true;\n this.techlifyUpdateForm.patchValue(this.data.techlifyUpdateDetails);\n }\n }\n\n ngOnInit() {\n this.editor = new Editor();\n }\n\n async submit() {\n if (this.techlifyUpdateForm.valid) {\n let result;\n const model = this.techlifyUpdateForm.value;\n\n try {\n result = this.isUpdateMode ? await this.techlifyUpdateService.updateTechlifyUpdate(model)\n : await this.techlifyUpdateService.createTechlifyUpdate(model);\n this.alertService.addAlert(\n \"Techlify app update saved successfully\",\n \"success\"\n );\n } catch (error) {\n this.alertService.addAlert(\"Unable to process, try later\", \"warn\");\n } finally {\n if (result) {\n this.dialogRef.close(result);\n }\n }\n }\n }\n\n resetFieldValue(field: string) {\n this.techlifyUpdateForm.get(field).setValue('');\n }\n\n getFieldValue(field: string) {\n return this.techlifyUpdateForm.get(field).value;\n }\n\n /** Method to evaluate form fields*/\n isFieldValid(field: string) {\n return this.formValidatorService.isFieldValid(field, this.techlifyUpdateForm, true);\n }\n /** Method to find error in form fields*/\n getErrorMessage(field: string) {\n return this.formValidatorService.getErrorMessage(field, this.techlifyUpdateForm, errorMessages);\n }\n\n}\n","import { FlexLayoutModule } from '@angular/flex-layout';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MaterialModule } from './../../material.module';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TechlifyUpdateFormComponent } from './techlify-update-form.component';\nimport { NgxEditorModule } from 'ngx-editor';\n\n@NgModule({\n declarations: [TechlifyUpdateFormComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MaterialModule,\n FlexLayoutModule,\n NgxEditorModule,\n ],\n exports: [\n TechlifyUpdateFormComponent\n ],\n entryComponents: [\n TechlifyUpdateFormComponent\n ]\n})\nexport class TechlifyUpdateFormModule { }\n","import { UntilDestroy } from '@ngneat/until-destroy';\nimport { untilDestroyed } from '@ngneat/until-destroy';\nimport { ActionPopup } from './../../action-popup/action-popup.model';\nimport { ActionPopupComponent } from './../../action-popup/action-popup.component';\nimport { TechlifyUpdateFormComponent } from './../techlify-update-form/techlify-update-form.component';\nimport { TechlifyUpdateService } from './../techlify-update.service';\nimport { FormControl, FormBuilder } from '@angular/forms';\nimport { FormGroup } from '@angular/forms';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AlertService } from '../../core/alert.service';\nimport { Component, OnInit } from '@angular/core';\nimport { debounceTime } from 'rxjs/operators';\n\n@UntilDestroy()\n@Component({\n selector: 'app-techlify-updates-list',\n templateUrl: './techlify-updates-list.component.html',\n styleUrls: ['./techlify-updates-list.component.scss']\n})\nexport class TechlifyUpdatesListComponent implements OnInit {\n techlifyUpdates: any[] = [];\n displayedColumns: string[] = [\n 'index',\n 'title',\n 'version',\n 'released_on',\n 'learn_more_link',\n 'description',\n 'creator',\n 'actions'\n ];\n page: number = 1;\n lastPage: number;\n perPage: number = 25;\n isWorking: boolean = false;\n filterFormGroup: FormGroup;\n\n constructor(\n private dialog: MatDialog,\n private alertService: AlertService,\n private techlifyUpdateService: TechlifyUpdateService,\n private fb: FormBuilder,\n ) {\n this.filterFormGroup = this.fb.group({\n search: new FormControl(''),\n version: new FormControl(''),\n sort_by: new FormControl('released_on|DESC'),\n });\n }\n\n ngOnInit() {\n this.loadData();\n this.listenChanges();\n }\n\n listenChanges() {\n this.filterFormGroup.valueChanges.pipe(debounceTime(500), untilDestroyed(this))\n .subscribe(changes => {\n this.reload();\n });\n }\n\n ngOnDestroy() { }\n\n async loadData() {\n try {\n this.isWorking = true;\n var filters: any = this.filterFormGroup.value;\n filters.perPage = this.perPage;\n filters.page = this.page;\n let result: any = await this.techlifyUpdateService.getTechlifyUpdates(\n filters\n );\n this.lastPage = result.last_page || this.page;\n this.techlifyUpdates = this.techlifyUpdates.concat(result.data);\n } catch (error) {\n this.alertService.addAlert(\"Unable to process, try later\", \"warn\");\n }\n finally {\n this.isWorking = false;\n }\n }\n\n reload() {\n this.techlifyUpdates = [];\n this.page = 1;\n if (!this.isWorking) {\n this.loadData();\n }\n }\n\n onScroll() {\n if (!this.isWorking && this.page < this.lastPage) {\n this.page += 1;\n this.loadData();\n }\n }\n\n modifyTechlifyUpdate(model?: any) {\n const dialogRef = this.dialog.open(TechlifyUpdateFormComponent, {\n width: \"600px\",\n data: {\n techlifyUpdateDetails: model,\n }\n });\n\n dialogRef.afterClosed().subscribe(result => {\n if (result) {\n this.reload();\n }\n });\n }\n\n async deleteTechlifyUpdate(model: any) {\n const dialogRef = this.dialog.open(ActionPopupComponent, {\n width: \"400px\",\n data: <ActionPopup>{\n title: \"Delete Update\",\n message: `Are you sure to delete this update?`\n },\n autoFocus: false\n });\n\n dialogRef.afterClosed().subscribe(async result => {\n if (result) {\n //Action confirmed\n try {\n await this.techlifyUpdateService.deleteTechlifyUpdate(model.id);\n this.alertService.addAlert(\n \"Successfully deleted the update\",\n \"success\"\n );\n this.reload();\n } catch (error) {\n this.alertService.addAlert(\"Unable to process, try later\", \"warn\");\n }\n }\n });\n }\n\n resetFieldValue(field: string) {\n this.filterFormGroup.get(field).setValue(\"\");\n }\n\n sortColumn(event) {\n var direction = event.direction.toString().toUpperCase();\n this.assignFilter(event.active, direction);\n }\n\n assignFilter(column, direction) {\n switch (column) {\n case 'title': {\n return this.filterFormGroup.get('sort_by').setValue(\"title|\" + direction);\n }\n case 'released_on': {\n return this.filterFormGroup.get('sort_by').setValue(\"released_on|\" + direction);\n }\n case 'version': {\n return this.filterFormGroup.get('sort_by').setValue(\"version|\" + direction);\n }\n default: {\n return this.filterFormGroup.get('sort_by').setValue(\"created_at|DESC\");\n }\n };\n }\n\n}\n","import { TechlifyUpdatesListComponent } from './techlify-updates-list/techlify-updates-list.component';\nimport { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\n\nconst routes: Routes = [\n { path: '', redirectTo: 'all', pathMatch: 'full' },\n { path: 'all', component: TechlifyUpdatesListComponent },\n\n //fallback\n {\n path: '**',\n redirectTo: 'all',\n pathMatch: 'full'\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class TechlifyUpdateRoutingModule { }\n","import { ReadMoreModule } from '../read-more/read-more.module';\nimport { TechlifyUpdateFormModule } from './techlify-update-form/techlify-update-form.module';\nimport { TechlifyUpdateRoutingModule } from './techlify-update-routing.module';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TechlifyUpdatesListComponent } from './techlify-updates-list/techlify-updates-list.component';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MaterialModule } from '../material.module';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { ActionPopupModule } from '../action-popup/action-popup.module';\n\n@NgModule({\n declarations: [TechlifyUpdatesListComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n InfiniteScrollModule,\n FlexLayoutModule,\n MaterialModule,\n ActionPopupModule,\n TechlifyUpdateRoutingModule,\n TechlifyUpdateFormModule,\n ReadMoreModule,\n ]\n})\nexport class TechlifyUpdateModule { }\n","import { Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'app-update-view',\n templateUrl: './update-view.component.html',\n styleUrls: ['./update-view.component.scss']\n})\nexport class UpdateViewComponent implements OnInit {\n techlifyUpdate: any;\n rootNavUrl: any;\n\n constructor(\n public dialogRef: MatDialogRef<UpdateViewComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n private router: Router\n ) { }\n\n ngOnInit(): void {\n this.techlifyUpdate = this.data.techlifyUpdate;\n this.rootNavUrl = this.data.rootNavUrl;\n }\n\n close() {\n this.dialogRef.close();\n }\n\n openUpdateHistory(): void {\n this.close();\n this.router.navigate([this.rootNavUrl + \"/update-history\"]);\n }\n\n}\n","import { UntilDestroy } from '@ngneat/until-destroy';\nimport { untilDestroyed } from '@ngneat/until-destroy';\nimport { AlertService } from './../../core/alert.service';\nimport { UpdateViewComponent } from './../update-view/update-view.component';\nimport { TechlifyUpdateService } from './../techlify-update.service';\nimport { FormControl, FormBuilder } from '@angular/forms';\nimport { FormGroup } from '@angular/forms';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Component, OnInit } from '@angular/core';\nimport { debounceTime } from 'rxjs/operators';\n\n@UntilDestroy()\n@Component({\n selector: 'app-techlify-update-history',\n templateUrl: './techlify-update-history.component.html',\n styleUrls: ['./techlify-update-history.component.scss']\n})\nexport class TechlifyUpdateHistoryComponent implements OnInit {\n techlifyUpdates: any[] = [];\n displayedColumns: string[] = [\n 'index',\n 'title',\n 'version',\n 'released_on',\n 'learn_more_link',\n 'description',\n 'creator',\n 'actions'\n ];\n page: number = 1;\n lastPage: number;\n perPage: number = 25;\n isWorking: boolean = false;\n filterFormGroup: FormGroup;\n\n constructor(\n private dialog: MatDialog,\n private techlifyUpdateService: TechlifyUpdateService,\n private fb: FormBuilder,\n private alertService: AlertService\n ) {\n this.filterFormGroup = this.fb.group({\n search: new FormControl(''),\n version: new FormControl(''),\n sort_by: new FormControl('released_on|DESC'),\n });\n }\n\n ngOnInit() {\n this.loadData();\n this.listenChanges();\n this.updateCurrentUserUpdates();\n }\n\n listenChanges() {\n this.filterFormGroup.valueChanges.pipe(debounceTime(500), untilDestroyed(this))\n .subscribe(changes => {\n this.reload();\n });\n }\n\n ngOnDestroy() { }\n\n async loadData() {\n try {\n this.isWorking = true;\n var filters: any = this.filterFormGroup.value;\n filters.perPage = this.perPage;\n filters.page = this.page;\n let result: any = await this.techlifyUpdateService.getTechlifyUpdates(\n filters\n );\n this.lastPage = result.last_page || this.page;\n this.techlifyUpdates = this.techlifyUpdates.concat(result.data);\n } catch (error) {\n this.alertService.addAlert(\"Unable to process, try later\", \"warn\");\n }\n finally {\n this.isWorking = false;\n }\n }\n\n reload() {\n this.techlifyUpdates = [];\n this.page = 1;\n if (!this.isWorking) {\n this.loadData();\n }\n }\n\n onScroll() {\n if (!this.isWorking && this.page < this.lastPage) {\n this.page += 1;\n this.loadData();\n }\n }\n\n resetFieldValue(field: string) {\n this.filterFormGroup.get(field).setValue(\"\");\n }\n\n sortColumn(event) {\n var direction = event.direction.toString().toUpperCase();\n this.assignFilter(event.active, direction);\n }\n\n assignFilter(column, direction) {\n switch (column) {\n case 'title': {\n return this.filterFormGroup.get('sort_by').setValue(\"title|\" + direction);\n }\n case 'released_on': {\n return this.filterFormGroup.get('sort_by').setValue(\"released_on|\" + direction);\n }\n case 'version': {\n return this.filterFormGroup.get('sort_by').setValue(\"version|\" + direction);\n }\n default: {\n return this.filterFormGroup.get('sort_by').setValue(\"created_at|DESC\");\n }\n };\n }\n\n openUpdateView(techlifyUpdate: any): void {\n const dialogRef = this.dialog.open(UpdateViewComponent, {\n width: \"800px\",\n autoFocus: false,\n data: {\n techlifyUpdate: techlifyUpdate,\n isFromHistory: true,\n } // Any data passed here will be injected into the model\n });\n }\n\n async updateCurrentUserUpdates() {\n try {\n await this.techlifyUpdateService.updateCurrentUserUpdates();\n } catch (error) {\n this.alertService.addAlert(\"Unable to process, try later\", \"warn\");\n }\n }\n}\n","import { TechlifyUpdateHistoryComponent } from './techlify-update-history.component';\nimport { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\n\nconst routes: Routes = [\n { path: '', redirectTo: 'update-history', pathMatch: 'full' },\n { path: 'update-history', component: TechlifyUpdateHistoryComponent },\n\n //fallback\n {\n path: '**',\n redirectTo: 'all',\n pathMatch: 'full'\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class TechlifyUpdateHistoryRoutingModule { }\n","import { ReactiveFormsModule } from '@angular/forms';\nimport { TechlifyUpdateHistoryRoutingModule } from './techlify-update-history-routing.module';\nimport { ReadMoreModule } from '../../read-more/read-more.module';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TechlifyUpdateHistoryComponent } from './techlify-update-history.component';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { MaterialModule } from '../../material.module';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { ActionPopupModule } from '../../action-popup/action-popup.module';\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n InfiniteScrollModule,\n FlexLayoutModule,\n MaterialModule,\n ActionPopupModule,\n ReadMoreModule,\n TechlifyUpdateHistoryRoutingModule\n ],\n declarations: [TechlifyUpdateHistoryComponent]\n})\nexport class TechlifyUpdateHistoryModule { }\n","import { FlexLayoutModule } from '@angular/flex-layout';\nimport { MaterialModule } from './../../material.module';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UpdateViewComponent } from './update-view.component';\n\n\n\n@NgModule({\n declarations: [UpdateViewComponent],\n imports: [\n CommonModule,\n MaterialModule,\n FlexLayoutModule\n ],\n exports: [\n UpdateViewComponent\n ],\n entryComponents: [\n UpdateViewComponent\n ]\n})\nexport class UpdateViewModule { }\n","import { AlertService } from './../../../core/alert.service';\nimport { TechlifyUpdateService } from './../../techlify-update.service';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Component, EmbeddedViewRef, Inject, OnInit } from '@angular/core';\nimport { MatSnackBarRef, MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\nimport { UpdateViewComponent } from '../../update-view/update-view.component';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'app-update-notifier-snack',\n templateUrl: './update-notifier-snack.component.html',\n styleUrls: ['./update-notifier-snack.component.scss']\n})\nexport class UpdateNotifierSnackComponent implements OnInit {\n maxDescriptionLength: any = 70;\n descriptionText: any = '';\n techlifyUpdate: any;\n rootNavUrl: any;\n\n constructor(\n @Inject(MAT_SNACK_BAR_DATA) public data: any,\n private snackBarRef: MatSnackBarRef<EmbeddedViewRef<any>>,\n private dialog: MatDialog,\n private router: Router,\n private techlifyUpdateService: TechlifyUpdateService,\n private alertService: AlertService\n ) { }\n\n ngOnInit(): void {\n this.techlifyUpdate = this.data.techlifyUpdate;\n this.rootNavUrl = this.data.rootNavUrl;\n this.determineDescription(this.techlifyUpdate?.description)\n }\n\n close(): void {\n this.createUpdateViewRecord();\n this.snackBarRef.dismiss();\n }\n\n determineDescription(description: any) {\n if (!description || description.length <= this.maxDescriptionLength) {\n this.descriptionText = description;\n return;\n }\n this.descriptionText = description.substring(0, this.maxDescriptionLength) + \"...\";\n }\n\n openUpdateView(): void {\n this.close();\n const dialogRef = this.dialog.open(UpdateViewComponent, {\n width: \"800px\",\n autoFocus: false,\n data: {\n techlifyUpdate: this.techlifyUpdate,\n rootNavUrl: this.data.rootNavUrl\n } // Any data passed here will be injected into the model\n });\n }\n\n openUpdateHistory(): void {\n this.close();\n this.router.navigate([this.rootNavUrl + \"/update-history\"]);\n }\n\n async createUpdateViewRecord() {\n try {\n var techlifyUpdateView = {\n update_id: this.techlifyUpdate?.id\n };\n let result: any = await this.techlifyUpdateService.createUpdateViewRecord(techlifyUpdateView);\n }\n catch (error) {\n this.alertService.addAlert(\"Unable to process, try later\", \"warn\");\n }\n }\n}\n","import { UpdateNotifierSnackComponent } from './update-notifier-snack/update-notifier-snack.component';\nimport { TechlifyUpdateService } from './../techlify-update.service';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { AlertService } from '../../core/alert.service';\n\n@Component({\n selector: 'app-update-notifier',\n templateUrl: './update-notifier.component.html',\n styleUrls: ['./update-notifier.component.scss']\n})\nexport class UpdateNotifierComponent implements OnInit {\n techlifyUpdate: any;\n @Input() rootNavUrl: string = '/techlify-updates';\n\n constructor(\n private snackBar: MatSnackBar,\n private techlifyUpdateService: TechlifyUpdateService,\n private alertService: AlertService\n ) { }\n\n ngOnInit(): void {\n }\n\n ngAfterViewInit(): void {\n setTimeout(x => {\n this.getNewUpdate();\n }, 5000);\n }\n\n async getNewUpdate() {\n try {\n let result: any = await this.techlifyUpdateService.getNewUpdateForCurrentUser();\n this.techlifyUpdate = result.item;\n if (this.techlifyUpdate) {\n this.showUpdate();\n }\n }\n catch (error) {\n console.log(\"Current user updates failed\");\n }\n }\n\n showUpdate() {\n this.snackBar.openFromComponent(UpdateNotifierSnackComponent, {\n data: {\n techlifyUpdate: this.techlifyUpdate,\n rootNavUrl: this.rootNavUrl\n },\n horizontalPosition: 'right',\n verticalPosition: 'top',\n panelClass: ['white-bg']\n });\n }\n\n}\n","import { ActionPopupModule } from './../../action-popup/action-popup.module';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { MaterialModule } from './../../material.module';\nimport { UpdateViewModule } from './../update-view/update-view.module';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UpdateNotifierComponent } from './update-notifier.component';\nimport { UpdateNotifierSnackComponent } from './update-notifier-snack/update-notifier-snack.component';\n\n\n@NgModule({\n declarations: [UpdateNotifierComponent, UpdateNotifierSnackComponent],\n imports: [\n CommonModule,\n MaterialModule,\n UpdateViewModule,\n FlexLayoutModule,\n ActionPopupModule\n ],\n exports: [\n UpdateNotifierComponent,\n ],\n entryComponents: [\n UpdateNotifierSnackComponent\n ]\n})\nexport class UpdateNotifierModule { }\n","import { Component, OnInit, Input } from '@angular/core';\nimport * as XLSX from 'xlsx';\n\n@Component({\n selector: 'app-export-excel-button',\n templateUrl: './export-excel-button.component.html',\n styleUrls: ['./export-excel-button.component.scss']\n})\nexport class ExportExcelButtonComponent implements OnInit {\n\n @Input() name: string = 'Export_Data';\n @Input() data: any[] = [];\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n exportExcel() {\n const fileName = `${this.name}_${new Date().getTime()}.xlsx`;\n const ws = XLSX.utils.json_to_sheet(this.data);\n /* generate workbook and add the worksheet */\n const wb: XLSX.WorkBook = XLSX.utils.book_new();\n XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');\n\n /* save to file */\n XLSX.writeFile(wb, fileName);\n }\n\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ExportExcelButtonComponent } from './export-excel-button/export-excel-button.component';\nimport { MaterialModule } from '../material.module';\n\n\n\n@NgModule({\n declarations: [ExportExcelButtonComponent],\n imports: [\n CommonModule,\n MaterialModule\n ],\n exports: [ExportExcelButtonComponent]\n})\nexport class ExportExcelModule { }\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { HttpService } from '../../core/http.service';\n\n\n@UntilDestroy()\n@Component({\n selector: 'app-audit-log-view',\n templateUrl: './audit-log-view-model.component.html',\n styleUrls: ['./audit-log-view-model.component.scss']\n})\nexport class AuditLogViewModelComponent implements OnInit {\n\n logInfo: any;\n showDeltaChanges: boolean = false;\n changeList: any[] = [];\n\n constructor(\n public dialogRef: MatDialogRef<AuditLogViewModelComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n private http: HttpService\n ) { }\n\n ngOnInit(): void {\n if (this.data) {\n this.http.get(`api/recent-log-for-model`, {\n params: {\n model_type: this.data?.modelType,\n model_id: this.data?.modelId\n }\n }).pipe(\n untilDestroyed(this)\n ).subscribe((result: any) => {\n this.logInfo = result?.item;\n this.getTransformedChanges();\n });\n }\n }\n\n getTransformedChanges() {\n const changes = ((this.logInfo?.action === 'deleted') ? Object.keys(this.logInfo?.object) : Object.keys(this.logInfo?.data?.changes)) || [];\n changes.forEach((key: any) => {\n const displayAttribute = (key as string).split('_').map(x => x.charAt(0).toUpperCase() + x.slice(1)).join(' ');\n this.changeList.push({ displayAttribute: displayAttribute, attribute: key, newValue: (this.logInfo?.action === 'deleted') ? '' : (this.logInfo?.object[key] ?? ''), oldValue: this.logInfo?.pre_object[key] ?? '' });\n });\n }\n\n close() {\n this.dialogRef.close();\n }\n\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { filter } from 'rxjs/operators';\nimport { AuditLogViewModelComponent } from '../audit-log-view-model/audit-log-view-model.component';\n\n@UntilDestroy()\n@Component({\n selector: 'app-audit-logs-view-model',\n templateUrl: './audit-logs-view-model.component.html',\n styleUrls: ['./audit-logs-view-model.component.scss']\n})\nexport class AuditLogsViewModelComponent implements OnInit {\n\n constructor(\n public dialogRef: MatDialogRef<AuditLogViewModelComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n private router: Router\n ) { }\n\n ngOnInit(): void {\n this.router.events\n .pipe(filter(event => event instanceof NavigationEnd), untilDestroyed(this))\n .subscribe(_ => this.dialogRef.close());\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AuditLogViewModelComponent } from '../audit-log-view-model/audit-log-view-model.component';\nimport { AuditLogsViewModelComponent } from '../audit-logs-view-model/audit-logs-view-model.component';\n\n\n@Component({\n selector: 'app-audit-log-for-model',\n templateUrl: './audit-log-for-model.component.html',\n styleUrls: ['./audit-log-for-model.component.scss']\n})\nexport class AuditLogForModelComponent implements OnInit {\n\n @Input() modelType: string;\n @Input() modelId: any;\n @Input() logView: 'recent' | 'all' = 'recent';\n\n constructor(\n private dialog: MatDialog,\n ) { }\n\n ngOnInit(): void {\n\n }\n\n getLogView() {\n const dialogRef = this.dialog.open(AuditLogViewModelComponent, {\n width: '800px',\n autoFocus: false,\n data: {\n modelType: this.modelType,\n modelId: this.modelId\n } // Any data passed here will be injected into the model\n });\n }\n\n getLogsView() {\n const dialogRef = this.dialog.open(AuditLogsViewModelComponent, {\n width: '95%',\n maxWidth: 'unset',\n autoFocus: false,\n data: {\n modelType: this.modelType,\n modelId: this.modelId\n } // Any data passed here will be injected into the model\n });\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nconst routes: Routes = [];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class AuditLogForModelRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nconst routes: Routes = [];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class AuditLogViewModelRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { AuditLogViewModelRoutingModule } from './audit-log-view-model-routing.module';\nimport { AuditLogViewModelComponent } from './audit-log-view-model.component';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { MaterialModule } from '../../material.module';\n\n\n@NgModule({\n declarations: [AuditLogViewModelComponent],\n imports: [\n CommonModule,\n AuditLogViewModelRoutingModule,\n FlexLayoutModule,\n MaterialModule\n ],\n exports: [AuditLogViewModelComponent]\n})\nexport class AuditLogViewModelModule { }\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nconst routes: Routes = [];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class AuditLogsViewModelRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nconst routes: Routes = [];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class AuditLogListRoutingModule { }\n","import { Component, OnInit, OnDestroy, Input, ViewChild } from '@angular/core';\n\n\nimport { Router } from '@angular/router';\nimport { MatSort } from '@angular/material/sort';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { PageEvent } from '../../data-table/data-table.model';\nimport { DataManager } from '../../core/dataManager.service';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@UntilDestroy()\n@Component({\n selector: 'app-audit-log-list',\n templateUrl: './audit-log-list.component.html',\n styleUrls: ['./audit-log-list.component.scss'],\n})\nexport class AuditLogListComponent implements OnInit, OnDestroy {\n\n auditLogList: any[] = [];\n @Input() objectId: any;\n @Input() objectType: any;\n @Input() showFilter: boolean = true;\n @Input() showExportButtons: boolean = true;\n @Input() userId: any;\n\n pageEvent: PageEvent = { page: 1, perPage: 25, lastPage: 1 };\n filters: any = { sort_by: 'created_at|desc' };\n displayedColumns: any[] = ['index', 'id', 'object_type', 'object_id', 'action', 'changes', 'created_at', 'user.email'];\n\n @ViewChild(MatSort, { static: true }) sort: MatSort;\n\n constructor(\n private dataManager: DataManager,\n private router: Router,\n public sanitizer: DomSanitizer\n ) { }\n\n ngOnInit() {\n\n this.initializeData();\n\n if (this.sort) {\n this.sort.sortChange.pipe(untilDestroyed(this))\n .subscribe((value: any) => {\n this.changeSort(value);\n })\n }\n\n }\n\n get excelData(): any[] {\n if (this.auditLogList.length > 0) {\n return this.auditLogList.map(item => {\n return {\n 'Type': item?.object_type,\n 'Action': item?.action,\n 'Data': JSON.stringify(item?.data || {}),\n 'Object': JSON.stringify(item?.object || {}),\n 'Pre-Object': JSON.stringify(item?.pre_object || {}),\n 'Created At': new Date(item?.created_at).toDateString(),\n 'Created By': item?.user?.email\n };\n });\n }\n return [];\n }\n\n changeSort(event: any) {\n if (event.direction) {\n this.filters.sort_by = `${event.active}|${event.direction}`;\n this.reload();\n }\n }\n\n logClicked(log: any) {\n this.router.navigate(['/system/audit-logs/log-view', log.id]);\n }\n\n\n async initializeData() {\n if (this.objectType) {\n this.filters = { ...this.filters, object_type: this.objectType }\n }\n if (this.objectId) {\n this.filters = { ...this.filters, object_id: this.objectId }\n }\n if (this.userId) {\n this.filters = { ...this.filters, user_id: this.userId }\n }\n const result = await this.dataManager.GET(`api/audit-logs`, { ...this.filters, ...this.pageEvent });\n this.auditLogList = this.auditLogList.concat(result.data);\n this.pageEvent.page = result.current_page;\n this.pageEvent.lastPage = result.last_page;\n }\n\n filterChange(event: any) {\n if (this.showFilter) {\n this.filters = {\n ...this.filters,\n ...event,\n object_type: this.objectType || event?.object_type || '',\n object_id: this.objectId || '',\n };\n this.reload();\n }\n }\n\n onScroll() {\n if (this.pageEvent.lastPage > this.pageEvent.page) {\n this.pageEvent.page += 1;\n this.initializeData();\n }\n }\n\n reload() {\n this.auditLogList = [];\n this.pageEvent = { page: 1, perPage: 25, lastPage: 1 };\n this.initializeData();\n }\n\n getTransformedChanges(log: any) {\n if (log?.data?.changes) {\n const changes = Object.keys(log?.data?.changes) || [];\n let value = '<div>';\n changes.forEach((key: any) => {\n const displayAttribute = (key as string).split('_').map(x => x.charAt(0).toUpperCase() + x.slice(1)).join(' ');\n value = `${value} <div><b>${displayAttribute}:</b> <span id=\"old-value\">${log?.pre_object[key] ?? ''}</span><span id=\"new-value\">${log?.object[key] ?? ''}</span></div>`;\n });\n value = `${value} </div>`;\n return value;\n }\n return '';\n }\n\n ngOnDestroy() {\n // Needed for automatic unsubscribe with untilDestroyed\n }\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nconst routes: Routes = [];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class AuditLogListFilterRoutingModule { }\n","import { FormControl } from \"@angular/forms\";\n\nexport function DateValidator(): any {\n return (control: FormControl): { [key: string]: any } => {\n\n const val: any = new Date(control.value);\n if (!!control.value && val == 'Invalid Date') {\n return { invalidDate: true };\n }\n return null;\n };\n}","import { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';\nimport { FormGroup, FormBuilder } from '@angular/forms';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { FormValidatorService } from '../../core/form-validator.service';\nimport { DateValidator } from '../../date-validator';\n\n@UntilDestroy()\n@Component({\n selector: 'app-audit-log-list-filter',\n templateUrl: './audit-log-list-filter.component.html',\n styleUrls: ['./audit-log-list-filter.component.scss']\n})\nexport class AuditLogListFilterComponent implements OnInit {\n\n auditLogFilterForm: FormGroup;\n\n @Input() objectId: any;\n @Input() objectType: any;\n\n @Output() valueChange = new EventEmitter();\n\n constructor(private fb: FormBuilder, private formValidatorService: FormValidatorService) {\n this.createForm();\n }\n\n get showObjectFilter() {\n return !(this.objectId || this.objectType);\n }\n\n private createForm() {\n\n //TODO: Finialize and add more validations.\n this.auditLogFilterForm = this.fb.group({\n object_type: [''],\n action: [''],\n data: [''],\n date_to: ['', DateValidator()],\n date_from: ['', DateValidator()]\n });\n }\n\n ngOnInit(): void {\n\n this.auditLogFilterForm.valueChanges.pipe(\n debounceTime(500),\n distinctUntilChanged(),\n untilDestroyed(this)\n ).subscribe((value: any) => {\n value.date_from = value.date_from ? (value.date_from as Date).toISOString() : '';\n value.date_to = value.date_to ? (value.date_to as Date).toISOString() : '';\n this.valueChange.emit(value);\n })\n }\n\n\n resetFieldValue(field: string) {\n this.auditLogFilterForm.get(field).setValue('');\n }\n\n getFieldValue(field: string) {\n return this.auditLogFilterForm.get(field).value;\n }\n\n isFieldValid(field: string) {\n return this.formValidatorService.isFieldValid(field, this.auditLogFilterForm, true);\n }\n\n\n ngOnDestroy() {\n\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { AuditLogListFilterRoutingModule } from './audit-log-list-filter-routing.module';\nimport { AuditLogListFilterComponent } from './audit-log-list-filter.component';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MaterialModule } from '../../material.module';\nimport { SearchableSelectorModule } from '../../searchable-selector/searchable-selector.module';\n\n\n@NgModule({\n declarations: [AuditLogListFilterComponent],\n imports: [\n CommonModule,\n AuditLogListFilterRoutingModule,\n FlexLayoutModule,\n ReactiveFormsModule,\n MaterialModule,\n SearchableSelectorModule,\n ],\n exports: [AuditLogListFilterComponent]\n})\nexport class AuditLogListFilterModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { AuditLogListRoutingModule } from './audit-log-list-routing.module';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { AuditLogListComponent } from './audit-log-list.component';\nimport { AuditLogListFilterModule } from '../audit-log-list-filter/audit-log-list-filter.module';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { ExportExcelModule } from '../../export-excel/export-excel.module';\nimport { MaterialModule } from '../../material.module';\n\n\n@NgModule({\n declarations: [AuditLogListComponent],\n imports: [\n CommonModule,\n AuditLogListRoutingModule,\n ExportExcelModule,\n FlexLayoutModule,\n ReactiveFormsModule,\n MaterialModule,\n InfiniteScrollModule,\n AuditLogListFilterModule\n ],\n exports: [AuditLogListComponent]\n})\nexport class AuditLogListModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { AuditLogsViewModelRoutingModule } from './audit-logs-view-model-routing.module';\nimport { AuditLogsViewModelComponent } from './audit-logs-view-model.component';\nimport { AuditLogListModule } from '../audit-log-list/audit-log-list.module';\nimport { FlexLayoutModule } from '@angular/flex-layout';\n\n\n@NgModule({\n declarations: [AuditLogsViewModelComponent],\n imports: [\n CommonModule,\n AuditLogsViewModelRoutingModule,\n FlexLayoutModule,\n AuditLogListModule\n ],\n exports: [AuditLogsViewModelComponent]\n})\nexport class AuditLogsViewModelModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { AuditLogForModelRoutingModule } from './audit-log-for-model-routing.module';\nimport { AuditLogForModelComponent } from './audit-log-for-model.component';\nimport { AuditLogViewModelModule } from '../audit-log-view-model/audit-log-view-model.module';\nimport { AuditLogsViewModelModule } from '../audit-logs-view-model/audit-logs-view-model.module';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { MaterialModule } from '../../material.module';\n\n\n@NgModule({\n declarations: [AuditLogForModelComponent],\n imports: [\n AuditLogViewModelModule,\n AuditLogsViewModelModule,\n CommonModule,\n AuditLogForModelRoutingModule,\n FlexLayoutModule,\n MaterialModule,\n ],\n exports: [AuditLogForModelComponent]\n})\nexport class AuditLogForModelModule { }\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Location } from '@angular/common';\nimport * as jsondiffpatch from \"jsondiffpatch\"\nimport { DataManager } from '../../core/dataManager.service';\n\n@Component({\n selector: 'app-audit-log-view',\n templateUrl: './audit-log-view.component.html',\n styleUrls: ['./audit-log-view.component.scss']\n})\nexport class AuditLogViewComponent implements OnInit {\n\n logInfo: any;\n showDeltaChanges: boolean = false;\n changeList: any[] = [];\n\n constructor(\n private dataManager: DataManager,\n private route: ActivatedRoute,\n private location: Location\n ) { }\n\n ngOnInit(): void {\n this.route.paramMap.subscribe(params => {\n if (params.get('id')) {\n this.fetchLogDetail(params.get('id'));\n } else {\n this.location.back();\n }\n });\n }\n\n getTransformedChanges() {\n const changes = ((this.logInfo?.action === 'deleted') ? Object.keys(this.logInfo?.object) : Object.keys(this.logInfo?.data?.changes)) || [];\n changes.forEach((key: any) => {\n const displayAttribute = (key as string).split('_').map(x => x.charAt(0).toUpperCase() + x.slice(1)).join(' ');\n this.changeList.push({ displayAttribute: displayAttribute, attribute: key, newValue: (this.logInfo?.action === 'deleted') ? '' : (this.logInfo?.object[key] ?? ''), oldValue: this.logInfo?.pre_object[key] ?? '' });\n });\n }\n\n async fetchLogDetail(logId: any) {\n const result = await this.dataManager.GET(`api/audit-logs/${logId}`);\n this.logInfo = result.item;\n this.getTransformedChanges();\n this.patchDelta();\n }\n\n patchDelta() {\n const delta = jsondiffpatch.diff(this.logInfo?.pre_object, this.logInfo?.object);\n document.getElementById('jsondiff').innerHTML = jsondiffpatch.formatters.html.format(delta, this.logInfo?.pre_object);\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nconst routes: Routes = [];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class AuditLogViewRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { AuditLogViewRoutingModule } from './audit-log-view-routing.module';\nimport { AuditLogViewComponent } from './audit-log-view.component';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { MaterialModule } from '../../material.module';\n\n\n@NgModule({\n declarations: [AuditLogViewComponent],\n imports: [\n CommonModule,\n AuditLogViewRoutingModule,\n FlexLayoutModule,\n MaterialModule\n ],\n exports: [AuditLogViewComponent]\n})\nexport class AuditLogViewModule { }\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { AuthenticationGuard } from '../core/authentication.guard';\nimport { AuditLogListComponent } from './audit-log-list/audit-log-list.component';\nimport { AuditLogViewComponent } from './audit-log-view/audit-log-view.component';\n\n\nconst routes: Routes = [\n { path: 'log-list', component: AuditLogListComponent, canActivate: [AuthenticationGuard] },\n { path: 'log-view/:id', component: AuditLogViewComponent, canActivate: [AuthenticationGuard] },\n { path: '**', redirectTo: 'log-list', pathMatch: 'full' }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class AuditLogRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { AuditLogRoutingModule } from './audit-log-routing.module';\nimport { AuditLogListModule } from './audit-log-list/audit-log-list.module';\nimport { AuditLogViewModule } from './audit-log-view/audit-log-view.module';\n\n\n@NgModule({\n declarations: [\n ],\n imports: [\n CommonModule,\n AuditLogRoutingModule,\n AuditLogListModule,\n AuditLogViewModule\n ],\n exports: []\n})\nexport class AuditLogModule { }\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ImportCsvConfig } from '../import-csv-config';\n\n@Component({\n selector: 'app-import-success',\n templateUrl: './import-success.component.html',\n styleUrls: ['./import-success.component.scss']\n})\nexport class ImportSuccessComponent implements OnInit {\n @Input() data: any;\n @Input() config: ImportCsvConfig;\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { ErrorHandlerService } from './../../core/error-handler.service';\nimport { PageEvent } from './../../data-table/data-table.model';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { ImportCsvConfig } from '../import-csv-config';\nimport { HttpService } from '../../core/http.service';\n\n@Component({\n selector: 'app-import-history-list',\n templateUrl: './import-history-list.component.html',\n styleUrls: ['./import-history-list.component.scss']\n})\nexport class ImportHistoryListComponent implements OnInit {\n\n @Input() config: ImportCsvConfig;\n histories: any[] = [];\n displayedColumns: string[] = [\n 'index',\n 'imported_by',\n 'date',\n 'no_of_records'\n ];\n isWorking: boolean = false;\n filter: any;\n pageEvent: PageEvent = { page: 1, perPage: 25, lastPage: 1 };\n\n constructor(\n private errorHandler: ErrorHandlerService,\n private http: HttpService,\n ) {\n }\n\n ngOnInit() {\n if (this.config.importHistory.isEnabled) {\n this.filter = {\n model_type: this.config.importHistory.type,\n };\n }\n this.loadData();\n }\n\n loadData() {\n try {\n this.isWorking = true;\n this.http.get(this.config.importHistory.apiUrl, { params: { ...this.filter, ...this.pageEvent } }).subscribe((result: any) => {\n this.histories = this.histories.concat(result.data);\n this.pageEvent.page = result.current_page;\n this.pageEvent.lastPage = result.last_page;\n });\n } catch (error) {\n this.errorHandler.handleError(error);\n }\n finally {\n this.isWorking = false;\n }\n }\n\n onScroll() {\n if (this.pageEvent.lastPage > this.pageEvent.page) {\n this.pageEvent.page += 1;\n this.loadData();\n }\n }\n\n reload() {\n this.histories = [];\n this.pageEvent = { page: 1, perPage: 25, lastPage: 1 };\n this.loadData();\n }\n\n ngOnDestroy() {\n //Until destroyed uses it\n }\n\n}\n","import { FormValidatorService } from '../../core/form-validator.service';\nimport { ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { Location } from '@angular/common';\nimport { ImportCsvConfig } from '../import-csv-config';\n\nconst errorMessages: any = {\n property: {\n required: \"Property is required\",\n unavailable: \"Duplicate entry\"\n },\n};\n\n@Component({\n selector: 'app-field-mapping',\n templateUrl: './field-mapping.component.html',\n styleUrls: ['./field-mapping.component.scss']\n})\nexport class FieldMappingComponent implements OnInit {\n\n importMappingForm: FormGroup;\n @Input() data: any[];\n @Input() config: ImportCsvConfig;\n firstDataArray: any[] = [];\n properties: any[] = [];\n @Output() onSave = new EventEmitter();\n @Output() onReUpload= new EventEmitter();\n\n constructor(\n private fb: FormBuilder,\n private formValidatorService: FormValidatorService,\n private changeDetectorRef: ChangeDetectorRef,\n public location: Location\n ) {\n this.createImportMappingForm();\n }\n\n ngOnInit() {\n this.properties = this.config.properties;;\n this.reFectorAttributes(this.data[0]);\n }\n\n createImportMappingForm() {\n this.importMappingForm = this.fb.group({\n fields: this.fb.array([]),\n });\n }\n\n get fieldsArray(): FormArray {\n return this.importMappingForm.get('fields') as FormArray;\n }\n\n createField(field: any): FormGroup {\n var fieldForm: FormGroup = this.fb.group({\n id: new FormControl(field.id),\n label: new FormControl(field.label),\n value: new FormControl(field.value),\n property: new FormControl(field.property,\n Validators.compose(\n [\n Validators.required\n ]\n )\n ),\n propertyType: new FormControl(field.propertyType)\n });\n return fieldForm;\n }\n\n reFectorAttributes(data) {\n for (var k in data) {\n if (data.hasOwnProperty(k)) {\n var dataValue = {\n id: '',\n label: k,\n value: data[k],\n property: '',\n propertyType: ''\n };\n this.firstDataArray.push(dataValue);\n }\n }\n this.firstDataArray.forEach((element: any, mainIndex: any) => {\n element.id = mainIndex;\n this.properties.find((property: any, index: any) => {\n if (property.label.toLowerCase().includes(element.label.toLowerCase())) {\n element.property = property.value;\n element.propertyType = property.type;\n return element;\n }\n });\n });\n }\n\n next() {\n this.importMappingForm.markAllAsTouched();\n if (!this.importMappingForm.valid) {\n return;\n }\n this.onSave.emit(this.importMappingForm.value);\n }\n\n /** Method to evaluate form fields*/\n isFieldValid(field: string, form: any) {\n return this.formValidatorService.isFieldValid(field, form);\n }\n\n /** Method to find error in form fields*/\n getErrorMessage(field: string, form: any) {\n return this.formValidatorService.getErrorMessage(field, form, errorMessages);\n }\n\n ngAfterViewInit(): void {\n //Called after ngAfterContentInit when the component's view has been initialized. Applies to components only.\n //Add 'implements AfterViewInit' to the class.\n setTimeout(x => {\n this.firstDataArray.forEach((element: any) => {\n this.fieldsArray.push(this.createField(element));\n });\n this.changeDetectorRef.detectChanges();\n }, 500);\n }\n\n updatePropertyType(event: any, index: any): void {\n var field = this.properties.find((field: any) => field.value == event.value);\n if (field) {\n this.fieldsArray.controls[index].get('propertyType').setValue(field.type);\n this.uniqueValidator();\n }\n }\n\n uniqueValidator() {\n this.fieldsArray.value.forEach((field: any, index: any) => {\n var control = this.fieldsArray.controls[index].get('property');\n const isNameUnique = this.fieldsArray.value.find(propertyData =>\n propertyData.property === control.value\n && propertyData.id != this.fieldsArray.controls[index].get('id').value\n )\n ? false\n : true;\n if (!isNameUnique) {\n control.setErrors({ unavailable: true });\n }\n else {\n control.setErrors(null);\n }\n });\n }\n\n removeField(index: number) {\n if (index == -1) {\n return;\n }\n this.fieldsArray.removeAt(index);\n }\n\n reUpload() {\n this.onReUpload.emit(true);\n }\n\n}\n","import { Location } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n selector: 'app-failed-items-list',\n templateUrl: './failed-items-list.component.html',\n styleUrls: ['./failed-items-list.component.scss']\n})\nexport class FailedItemsListComponent implements OnInit {\n @Input() failedItems: any[];\n @Input() selectedFields: any[];\n @Output() onReUpload = new EventEmitter();\n\n constructor(\n public location: Location\n ) { }\n\n ngOnInit() {\n }\n\n isValidDate(d: any): boolean {\n var date = new Date(d);\n return date instanceof Date && !isNaN(date.getTime());\n }\n\n reUpload() {\n this.onReUpload.emit(true);\n }\n\n}\n","import { ViewerConfig } from '../document-viewer/viewer-config.model';\nimport { FileDropperConfig } from '../file-dropper/file-dropper.model';\nimport { HttpService } from '../core/http.service';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { AlertService } from '../core/alert.service';\nimport { ErrorHandlerService } from '../core/error-handler.service';\nimport * as XLSX from 'xlsx';\nimport { ImportCsvConfig } from './import-csv-config';\n@UntilDestroy()\n\n@Component({\n selector: 'app-import-csv',\n templateUrl: './import-csv.component.html',\n styleUrls: ['./import-csv.component.scss']\n})\nexport class ImportCsvComponent implements OnInit {\n result: any;\n @Input() config: ImportCsvConfig;\n filesConfig: FileDropperConfig;\n filesList: any[] = [];\n data: any[] = [];\n isUploaded: boolean = false;\n isImportTypeSelected: boolean = false;\n viewerConfig: ViewerConfig;\n fileData: any[] = [];\n failedItems: any[] = [];\n selectedFields: any[] = [];\n importSteps: any = [\n {\n id: 1,\n step: 1,\n title: 'Upload',\n progressTitle: '',\n progressDescription: ''\n },\n {\n id: 2,\n step: 2,\n title: 'Field Mappings',\n progressTitle: '',\n progressDescription: ''\n },\n {\n id: 3,\n step: 3,\n title: 'Data Validation',\n progressTitle: 'Data Being Validated',\n progressDescription: 'The data is currently being validated and checked for errors, please do not navigate away from this page. '\n },\n {\n id: 4,\n step: 3,\n title: 'Data Validation & Errors',\n progressTitle: '',\n progressDescription: ''\n },\n {\n id: 5,\n step: 4,\n title: 'Data Importing',\n progressTitle: 'Data Being Imported',\n progressDescription: 'The data is currently being imported and saved, please do not navigate away from this page. After the import is completed, you will be redirected to a page with the imported records.'\n },\n {\n id: 6,\n step: 5,\n title: 'Success Page & Data Preview',\n progressTitle: '',\n progressDescription: ''\n },\n ];\n currentStep: any = 1;\n\n constructor(\n private alertService: AlertService,\n private errorHandler: ErrorHandlerService,\n private http: HttpService,\n ) {\n this.filesConfig = {\n fileId: \"file\",\n containerId: \"fileContainer\",\n styles: {\n height: \"200px\"\n },\n acceptFile: '.csv',\n multiple: false,\n maxSize: 10,\n acceptFileText: \".csv\"\n };\n }\n\n ngOnInit() {\n }\n\n get step() {\n return this.importSteps.find(step => step.id == this.currentStep);\n }\n\n async fileChanged(event: any) {\n this.currentStep = 2;\n this.filesList = event;\n\n let selectedFile = null;\n let jsonData = null;\n const reader = new FileReader();\n const file = this.filesList[0];\n reader.onload = (event) => {\n const data = reader.result;\n selectedFile = XLSX.read(data, {\n type: 'binary',\n cellDates: true,\n });\n jsonData = selectedFile.SheetNames.reduce((initial, name) => {\n const sheet = selectedFile.Sheets[name];\n initial = XLSX.utils.sheet_to_json(sheet, {\n header: 0,\n defval: \"\",\n });\n return initial;\n }, {});\n this.fileData = jsonData;\n }\n reader.readAsBinaryString(file);\n return;\n }\n\n mappingProcessed(event: any) {\n this.currentStep = 3;\n setTimeout(x => {\n this.selectedFields = event.fields;\n const tempFileData = JSON.parse(JSON.stringify(this.fileData));\n tempFileData.forEach(data => {\n for (var key in data) {\n var field = event.fields.find((field: any) => field.label == key);\n if (field) {\n if ((field.propertyType == 'date' || field.propertyType == 'dateTime') && this.isValidDate(new Date(data[field.label]))) {\n data[field.property] = (new Date(data[field.label]) as Date).toISOString();\n }\n else {\n data[field.property] = data[field.label];\n }\n delete data[key];\n }\n else {\n delete data[key];\n }\n }\n });\n this.save(tempFileData);\n }, 2000);\n }\n\n async save(tempFileData: any) {\n try {\n this.http.post(this.config.apiUrl, { data: tempFileData })\n .pipe(\n untilDestroyed(this)\n ).subscribe((result: any) => {\n\n this.failedItems = result.failed_items;\n if (this.failedItems.length) {\n this.alertService.addAlert(result.msg, 'warn');\n }\n if (!(this.failedItems.length > 0)) {\n this.currentStep = 5;\n setTimeout(x => {\n this.currentStep = 6;\n this.result = result;\n }, 2000);\n }\n else {\n this.currentStep = 4;\n }\n });\n } catch (error) {\n if ((error.status === 422 || error.status === 400) && error.msg) {\n this.alertService.addAlert(error.msg, \"warning\");\n }\n this.errorHandler.handleError(error);\n this.reUpload();\n }\n }\n\n isValidDate(d: any) {\n return d instanceof Date && !isNaN(d.getTime());\n }\n\n reUpload() {\n this.data = [];\n this.fileData = [];\n this.filesList = [];\n this.failedItems = [];\n this.selectedFields = [];\n this.currentStep = 1;\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-data-import',\n templateUrl: './data-import.component.html',\n styleUrls: ['./data-import.component.scss']\n})\nexport class DataImportComponent implements OnInit {\n @Input() step: any;\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { DocumentViewerModule } from './../document-viewer/document-viewer.module';\nimport { FileDropperModule } from './../file-dropper/file-dropper.module';\nimport { MaterialModule } from './../material.module';\nimport { ImportSuccessComponent } from './import-success/import-success.component';\nimport { ImportHistoryListComponent } from './import-history-list/import-history-list.component';\nimport { FieldMappingComponent } from './field-mapping/field-mapping.component';\nimport { FailedItemsListComponent } from './failed-items-list/failed-items-list.component';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { ImportCsvComponent } from './import-csv.component';\nimport { RouterModule } from '@angular/router';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { DataImportComponent } from './data-import/data-import.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n FlexLayoutModule,\n RouterModule,\n MaterialModule,\n FlexLayoutModule,\n FileDropperModule,\n DocumentViewerModule,\n InfiniteScrollModule\n ],\n declarations: [\n ImportCsvComponent,\n FieldMappingComponent,\n FailedItemsListComponent,\n ImportHistoryListComponent,\n ImportSuccessComponent,\n DataImportComponent\n ],\n providers: [],\n exports: [\n ImportCsvComponent\n ],\n})\nexport class ImportCsvModule { }\n","import { Component, Input, OnInit } from '@angular/core';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { PageEvent } from '../data-table/data-table.model';\nimport { HttpService } from '../core/http.service';\nimport { TimelineValue } from '../timeline-filter';\n\n@UntilDestroy()\n@Component({\n selector: 'app-login-history-for-user',\n templateUrl: './login-history-for-user.component.html',\n styleUrls: ['./login-history-for-user.component.scss']\n})\nexport class LoginHistoryForUserComponent implements OnInit {\n\n loginHistoryList: any[] = [];\n pageEvent: PageEvent = { page: 1, perPage: 25, lastPage: 1 };\n filters: any = {\n sort_by: 'created_at|desc',\n };\n historyFilterForm: FormGroup;\n displayedColumns: any[] = ['index', 'created_at'];\n @Input() userId: any;\n\n constructor(\n private http: HttpService,\n private fb: FormBuilder,\n ) {\n this.historyFilterForm = this.fb.group({\n 'duration': [''],\n 'date_from': [''],\n 'date_to': ['']\n });\n }\n\n ngOnInit() {\n this.filters.user_id = this.userId;\n this.historyFilterForm.valueChanges\n .pipe(debounceTime(500), distinctUntilChanged(), untilDestroyed(this))\n .subscribe((value: any) => {\n value.date_from = value.date_from ? (value.date_from as Date).toISOString() : '';\n value.date_to = value.date_to ? (value.date_to as Date).toISOString() : '';\n this.filterChange(value);\n });\n this.initializeData();\n }\n\n onTimelineChange(range: TimelineValue) {\n let date_from = range?.date_from ? new Date(range.date_from) : '';\n let date_to = range?.date_to ? new Date(range.date_to) : '';\n this.historyFilterForm.patchValue({\n date_from,\n date_to\n });\n }\n\n initializeData() {\n this.http.get(`api/user-login-history`, { params: { ...this.filters, ...this.pageEvent } })\n .pipe(untilDestroyed(this))\n .subscribe((result: any) => {\n this.loginHistoryList = this.loginHistoryList.concat(result.data);\n this.pageEvent.page = result.current_page;\n this.pageEvent.lastPage = result.last_page;\n });\n }\n\n filterChange(event: any) {\n this.filters = {\n ...this.filters,\n ...event\n };\n this.reload();\n }\n\n onScroll() {\n if (this.pageEvent.lastPage > this.pageEvent.page) {\n this.pageEvent.page += 1;\n this.initializeData();\n }\n }\n\n\n reload() {\n this.loginHistoryList = [];\n this.pageEvent = { page: 1, perPage: 25, lastPage: 1 };\n this.initializeData();\n }\n\n ngOnDestroy() {\n //Until destroyed uses it\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { AuthenticationGuard } from '../core/authentication.guard';\nimport { LoginHistoryForUserComponent } from './login-history-for-user.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: LoginHistoryForUserComponent,\n canActivate: [AuthenticationGuard]\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class LoginHistoryForUserRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { LoginHistoryForUserRoutingModule } from './login-history-for-user-routing.module';\nimport { LoginHistoryForUserComponent } from './login-history-for-user.component';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MaterialModule } from '../material.module';\nimport { TimelineFilterModule } from '../timeline-filter/timeline-filter.module';\n\n\n@NgModule({\n declarations: [LoginHistoryForUserComponent],\n imports: [\n CommonModule,\n LoginHistoryForUserRoutingModule,\n InfiniteScrollModule,\n MaterialModule,\n FlexLayoutModule,\n ReactiveFormsModule,\n TimelineFilterModule\n ],\n exports: [LoginHistoryForUserComponent]\n})\nexport class LoginHistoryForUserModule { }\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Component, ElementRef, OnInit, Input, OnDestroy, Inject, Optional, Self } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\nimport { MatFormField, MatFormFieldControl, MAT_FORM_FIELD } from '@angular/material/form-field';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { HttpService } from '../core/http.service';\n\n@UntilDestroy()\n@Component({\n selector: 'app-techlify-tagger-tag-selector',\n templateUrl: './techlify-tagger-tag-selector.component.html',\n styleUrls: ['./techlify-tagger-tag-selector.component.scss'],\n providers: [{ provide: MatFormFieldControl, useExisting: TechlifyTaggerTagSelectorComponent }],\n})\nexport class TechlifyTaggerTagSelectorComponent implements OnInit, ControlValueAccessor, MatFormFieldControl<any>, OnDestroy {\n\n /**Pass the Categories to filter for a model */\n @Input() categories: string[] = [];\n @Input() multiple: boolean = false;\n @Input() enableSearch: boolean = true;\n tagSelectorCtrl = new FormControl();\n @Input() showAllTags: boolean = false;\n @Input() useSelectButtonStyle: boolean = false;\n\n tags: any[] = [];\n\n static nextId = 0;\n stateChanges = new Subject<void>();\n focused = false;\n controlType = 'techlify-tagger-selector';\n id = `techlify-tagger-selector-${TechlifyTaggerTagSelectorComponent.nextId++}`;\n\n onChange = (_: any) => { };\n onTouched = () => { };\n\n get apiUrl() {\n if (this.showAllTags) {\n return 'api/techlify-tagger-tags'\n }\n else if (this.categories?.length > 0) {\n return 'api/techlify-tagger-tags?categories=' + this.categories.join(',');\n }\n else {\n return '';\n }\n }\n\n //Default Getter and Setters for a Form Field Implementation\n get empty() {\n return this.value.length == 0;\n }\n\n get shouldLabelFloat() {\n return this.focused || !this.empty;\n }\n\n @Input()\n get required(): boolean {\n return this._required;\n }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n private _required = false;\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n this._disabled ? this.tagSelectorCtrl.disable() : this.tagSelectorCtrl.enable();\n this.stateChanges.next();\n }\n private _disabled = false;\n\n\n private _value: any;\n @Input()\n get value(): any {\n return this._value;\n }\n set value(val: any) {\n this._value = val;\n this.tagSelectorCtrl.setValue(val);\n this.stateChanges.next();\n }\n\n get errorState(): boolean {\n return this.tagSelectorCtrl.dirty && this.required && (this.value.length == 0);\n }\n\n @Input()\n get placeholder(): string {\n return this._placeholder;\n }\n set placeholder(value: string) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n private _placeholder: string;\n\n\n ngOnInit(): void {\n if (this.useSelectButtonStyle) {\n this.httpService.get(this.apiUrl)\n .pipe(untilDestroyed(this))\n .subscribe((res: any) => {\n this.tags = res.data;\n })\n }\n }\n\n selectionChange(value: any) {\n this.value = value;\n this._handleInput();\n }\n\n constructor(\n private _focusMonitor: FocusMonitor,\n private _elementRef: ElementRef<HTMLElement>,\n private httpService: HttpService,\n @Optional() @Inject(MAT_FORM_FIELD) public _formField: MatFormField,\n @Optional() @Self() public ngControl: NgControl) {\n\n //Set Focus Monitor\n _focusMonitor.monitor(_elementRef, true).subscribe(origin => {\n if (this.focused && !origin) {\n this.onTouched();\n }\n this.focused = !!origin;\n this.stateChanges.next();\n });\n\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n setDescribedByIds(ids: string[]) {\n // Just a empty implementation for Mat Form Field Interface\n }\n\n onContainerClick() {\n // Just a empty implementation for Mat Form Field Interface\n }\n\n writeValue(val: any): void {\n this.value = val;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n _handleInput(): void {\n this.onChange(this.value);\n }\n\n static ngAcceptInputType_disabled: BooleanInput;\n static ngAcceptInputType_required: BooleanInput;\n\n ngOnDestroy() {\n this.stateChanges.complete();\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TechlifyTaggerTagSelectorComponent } from './techlify-tagger-tag-selector.component';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MaterialModule } from '../material.module';\nimport { SearchableSelectorModule } from '../searchable-selector/searchable-selector.module';\n\n\n\n@NgModule({\n declarations: [\n TechlifyTaggerTagSelectorComponent\n ],\n imports: [\n CommonModule,\n MaterialModule,\n FlexLayoutModule,\n MatAutocompleteModule,\n ReactiveFormsModule,\n SearchableSelectorModule,\n MatButtonToggleModule\n ],\n exports: [TechlifyTaggerTagSelectorComponent]\n})\nexport class TechlifyTaggerTagSelectorModule { }\n","import { DataManager } from './../core/dataManager.service';\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TechlifyFeatureService {\n\n constructor(private dataManager: DataManager) { }\n\n getFeatures() {\n return this.dataManager.GET(`api/features`);\n }\n\n disableFeature(id: any) {\n return this.dataManager.GET(`api/feature/${id}/disable`);\n }\n\n enableFeature(id: any) {\n return this.dataManager.GET(`api/feature/${id}/enable`);\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { TechlifyFeatureService } from './techlify-feature.service';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { debounceTime } from 'rxjs/operators';\nimport { ActionPopup, ActionPopupComponent } from '../action-popup';\nimport { DataManager } from '../core/dataManager.service';\nimport { ErrorHandlerService } from '../core/error-handler.service';\nimport { AlertService } from '../core/alert.service';\nimport { StorageService } from '../core/storage.service';\n@UntilDestroy()\n@Component({\n selector: 'app-techlify-listing-feature',\n templateUrl: './techlify-feature-listing.component.html',\n styleUrls: ['./techlify-feature-listing.component.scss']\n})\nexport class TechlifyFeatureListingComponent implements OnInit {\n\n features: any[] = []\n displayedColumns: string[] = [\n 'index',\n 'feature',\n 'description',\n 'actions',\n ]\n\n dataSource = new MatTableDataSource()\n\n page: number = 1;\n lastPage: number;\n perPage: number = 25;\n\n isWorking: boolean = false\n filterFormGroup: FormGroup;\n featureToggleForm: FormGroup;\n\n constructor(\n private dataManager: DataManager,\n private errorHandler: ErrorHandlerService,\n private fb: FormBuilder,\n private alertService: AlertService,\n private dialog: MatDialog,\n private storage: StorageService,\n private featureService: TechlifyFeatureService\n ) {\n this.filterFormGroup = this.fb.group({\n num_items: [\"\"]\n })\n }\n\n ngOnInit() {\n this.loadData()\n this.listenForChanges()\n }\n\n listenForChanges() {\n this.filterFormGroup.valueChanges\n .pipe(debounceTime(500), untilDestroyed(this))\n .subscribe((changes) => {\n this.reload()\n })\n }\n\n async loadData() {\n let result;\n try {\n this.isWorking = true\n var filter = this.filterFormGroup.value\n filter.page = this.page;\n filter.perPage = this.perPage;\n result = await this.dataManager.GET(`api/features`, filter);\n this.features = this.features.concat(result.data);\n this.dataSource = new MatTableDataSource(this.features);\n\n if (!this.storage.getItem('features')) {\n this.setStorage(this.features);\n }\n\n this.isWorking = false\n } catch (error) {\n this.errorHandler.handleError(error);\n } finally {\n this.isWorking = false;\n }\n }\n\n async toggeleFeature(element, feature) {\n let status = element ? 'Off' : \"On\";\n let data;\n const dialogRef = this.dialog.open(ActionPopupComponent, {\n width: \"400px\",\n data: <ActionPopup>{\n title: `Turn this feature ${status}?`,\n message: `Would you like to turn ${feature.title} feature ${status}`\n }\n })\n\n dialogRef.afterClosed().subscribe(async result => {\n if (result) {\n try {\n data = element\n ? await this.featureService.disableFeature(feature.id)\n : await this.featureService.enableFeature(feature.id);\n } catch (error) {\n this.errorHandler.handleError(error);\n } finally {\n this.alertService.addAlert(`You have just turned ${status} the feature ${feature.title}`, 'success');\n this.reload();\n this.storage.removeItem('features');\n this.setStorage(this.features);\n this.isWorking = false;\n }\n } else {\n this.reload();\n }\n })\n }\n\n setStorage(features) {\n let localFeatures = [];\n for (let feature of features) {\n if (!feature.client_feature) {\n if (feature.is_enabled_default) {\n localFeatures.push(feature.code);\n }\n } else {\n if (feature.client_feature.is_enabled) {\n localFeatures.push(feature.code);\n }\n }\n\n }\n this.storage.setItem(\"features\", localFeatures);\n }\n\n reload() {\n this.features = [];\n this.page = 1;\n if (!this.isWorking) {\n this.loadData();\n }\n }\n\n onScroll() {\n if (!this.isWorking && this.page < this.lastPage) {\n this.page += 1;\n this.loadData();\n }\n }\n\n sortColumn(event) {\n var direction = event.direction.toString().toUpperCase()\n this.assignFilter(event.active, direction)\n this.reload()\n }\n\n assignFilter(column, direction) {\n switch (column) {\n case 'name': {\n return this.filterFormGroup\n .get('sort_by')\n .setValue('first_name|' + direction)\n }\n case 'added_on': {\n return this.filterFormGroup\n .get('sort_by')\n .setValue('created_at|' + direction)\n }\n }\n }\n\n}\n","import { AuthenticationGuard } from './../core/authentication.guard';\nimport { Routes, RouterModule } from '@angular/router';\nimport { TechlifyFeatureListingComponent } from './techlify-feature-listing.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: TechlifyFeatureListingComponent,\n canActivate: [AuthenticationGuard]\n },\n];\n\nexport const TechlifyFeatureRoutes = RouterModule.forChild(routes);\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\n\n@Component({\n selector: 'app-on-off-switch',\n templateUrl: './on-off-switch.component.html',\n styleUrls: ['./on-off-switch.component.scss']\n})\n\nexport class OnOffSwitchComponent implements OnInit {\n\n @Input() value: boolean;\n slideToggle: FormGroup;\n\n constructor(private fb: FormBuilder) {\n this.slideToggle = this.fb.group({\n toggle: [\"\"]\n })\n }\n\n ngOnInit() {\n this.slideToggle.get('toggle').setValue(this.value);\n }\n\n}\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { ErrorHandlerService } from '../core/error-handler.service';\nimport { StorageService } from '../core/storage.service';\nimport { TechlifyFeatureService } from './techlify-feature.service';\n\n@Directive({\n selector: '[techlifyFeatureEnabled]'\n})\nexport class TechlifyFeatureEnabledDirective {\n\n features: any;\n localFeatures: any[] = [];\n @Input('techlifyFeatureEnabled') enabledFeature: any;\n\n constructor(\n private el: ElementRef,\n private featureService: TechlifyFeatureService,\n private errorHandler: ErrorHandlerService,\n private storage: StorageService) {\n\n }\n\n ngOnInit(): void {\n if (!this.storage.getItem('features')) {\n this.getFeatures();\n } else {\n this.checkForFeatureEnabled();\n }\n }\n\n async getFeatures() {\n try {\n let features = await this.featureService.getFeatures();\n\n for (let feature of features.data) {\n if (!feature.client_feature) {\n if (feature.is_enabled_default) {\n this.localFeatures.push(feature.code);\n }\n } else {\n if (feature.client_feature.is_enabled) {\n this.localFeatures.push(feature.code);\n }\n }\n\n }\n this.storage.setItem(\"features\", this.localFeatures);\n } catch (error) {\n this.errorHandler.handleError(error);\n } finally {\n this.checkForFeatureEnabled()\n }\n }\n\n checkForFeatureEnabled() {\n try {\n let features = this.storage.getItem('features');\n let features_split = features.split(',');\n\n if (features_split.includes(this.enabledFeature)) {\n this.el.nativeElement.style.display = \"show\";\n } else {\n this.el.nativeElement.remove();\n }\n\n } catch (error) {\n this.errorHandler.handleError(error);\n }\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TechlifyFeatureListingComponent } from './techlify-feature-listing.component';\n\nimport { TechlifyFeatureRoutes } from './techlify-feature.routing';\nimport { OnOffSwitchComponent } from './on-off-switch/on-off-switch.component';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { TechlifyFeatureEnabledDirective } from './techlify-feature-enabled.directive';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MaterialModule } from '../material.module';\n\n@NgModule({\n imports: [\n CommonModule,\n MaterialModule,\n FlexLayoutModule,\n TechlifyFeatureRoutes,\n MatSlideToggleModule,\n FormsModule,\n ReactiveFormsModule,\n InfiniteScrollModule\n ],\n declarations: [TechlifyFeatureListingComponent, OnOffSwitchComponent, TechlifyFeatureEnabledDirective],\n exports: [TechlifyFeatureListingComponent, TechlifyFeatureEnabledDirective]\n})\nexport class TechlifyFeatureModule { }\n","/*\n * Public API Surface of ngx-techlify-core\n */\n\nimport { from } from 'rxjs';\n\nexport * from './lib/action-popup';\nexport * from './lib/base-model';\nexport * from './lib/data-table';\nexport * from './lib/document-viewer';\nexport * from './lib/entity-files';\nexport * from './lib/file-dropper';\nexport * from './lib/note';\nexport * from './lib/searchable-selector';\nexport * from './lib/utility';\nexport * from './lib/timeline-filter';\nexport * from './lib/loader';\nexport * from './lib/core';\n\nexport * from './lib/material.module';\nexport * from './lib/core/core.module';\nexport * from './lib/action-popup/action-popup.module';\nexport * from './lib/data-table/data-table.module';\nexport * from './lib/document-viewer/document-viewer.module';\nexport * from './lib/entity-files/entity-files-view-all.module';\nexport * from './lib/file-dropper/file-dropper.module';\nexport * from './lib/note/note.module';\nexport * from './lib/searchable-selector/searchable-selector.module';\nexport * from './lib/utility/utility.module';\nexport * from './lib/timeline-filter/timeline-filter.module';\nexport * from './lib/loader/loader.module';\n\nexport * from './lib/email-subscription/email-subscription.module';\nexport * from './lib/email-subscription/email-subscription-routing.module';\n\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user.module';\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-routing.module';\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module';\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module';\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module';\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module';\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module';\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module';\n\nexport * from './lib/email-subscription/email-subscription-type/email-subscription-type-routing.module';\nexport * from './lib/email-subscription/email-subscription-type/email-subscription-type.module';\nexport * from './lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module';\nexport * from './lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module';\nexport * from './lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module';\nexport * from './lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module';\n\nexport * from './lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module';\nexport * from './lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module';\n\nexport * from './lib/email-subscription/email-subscription-for-user';\nexport * from './lib/email-subscription/email-subscription-type/email-subscription-type-form';\nexport * from './lib/email-subscription/email-subscription-type/email-subscription-type-list';\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-form';\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-list';\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-list-filter';\n\nexport * from './lib/techlify-update/techlify-update.module';\nexport * from './lib/techlify-update/techlify-update-history/techlify-update-history.module';\nexport * from './lib/techlify-update/update-notifier/update-notifier.module';\nexport * from './lib/techlify-update/update-notifier/update-notifier.component';\n\nexport * from './lib/export-excel/export-excel-button/export-excel-button.component';\nexport * from './lib/export-excel/export-excel.module';\n\n\nexport * from './lib/audit-log/audit-log-for-model/audit-log-for-model.component';\nexport * from './lib/audit-log/audit-log-for-model/audit-log-for-model.module';\nexport * from './lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module';\n\nexport * from './lib/audit-log/audit-log-list/audit-log-list.component';\nexport * from './lib/audit-log/audit-log-list/audit-log-list.module';\nexport * from './lib/audit-log/audit-log-list/audit-log-list-routing.module';\n\nexport * from './lib/audit-log/audit-log-list-filter/audit-log-list-filter.component';\nexport * from './lib/audit-log/audit-log-list-filter/audit-log-list-filter.module';\nexport * from './lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module';\n\nexport * from './lib/audit-log/audit-log-view/audit-log-view.component';\nexport * from './lib/audit-log/audit-log-view/audit-log-view.module';\nexport * from './lib/audit-log/audit-log-view/audit-log-view-routing.module';\n\nexport * from './lib/audit-log/audit-log-view-model/audit-log-view-model.component';\nexport * from './lib/audit-log/audit-log-view-model/audit-log-view-model.module';\nexport * from './lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module';\n\nexport * from './lib/audit-log/audit-logs-view-model/audit-logs-view-model.component';\nexport * from './lib/audit-log/audit-logs-view-model/audit-logs-view-model.module';\nexport * from './lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module';\n\nexport * from './lib/audit-log/audit-log.module';\nexport * from './lib/audit-log/audit-log-routing.module';\n\nexport * from './lib/date-validator';\n\nexport * from './lib/import-csv/import-csv.module';\nexport * from './lib/import-csv/import-csv.component';\nexport * from './lib/import-csv/import-csv-config';\n\nexport * from './lib/login-history-for-user/login-history-for-user.module';\nexport * from './lib/login-history-for-user/login-history-for-user-routing.module';\nexport * from './lib/login-history-for-user/login-history-for-user.component';\n\nexport * from './lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-config.model';\nexport * from './lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component';\nexport * from './lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.module';\n\nexport * from './lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.module';\nexport * from './lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component';\n\nexport * from './lib/read-more/read-more.module';\nexport * from './lib/read-more/read-more.component';\n\nexport * from './lib/techlify-feature/techlify-feature.module';\nexport * from './lib/techlify-feature/techlify-feature.routing';\nexport * from './lib/techlify-feature/techlify-feature-listing.component';\nexport * from './lib/techlify-feature/techlify-feature-enabled.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {ActionPopupComponent as ɵg} from './lib/action-popup/action-popup.component';\nexport {ActionPopup as ɵh} from './lib/action-popup/action-popup.model';\nexport {AlertService as ɵn} from './lib/core/alert.service';\nexport {AuthenticationGuard as ɵbg} from './lib/core/authentication.guard';\nexport {ConfigService as ɵx} from './lib/core/config.service';\nexport {CredentialsService as ɵw} from './lib/core/credentials.service';\nexport {DataManager as ɵbv} from './lib/core/dataManager.service';\nexport {ErrorHandlerService as ɵbw} from './lib/core/error-handler.service';\nexport {FormValidatorService as ɵl} from './lib/core/form-validator.service';\nexport {HTTP_DYNAMIC_INTERCEPTORS as ɵd,HttpService as ɵe} from './lib/core/http.service';\nexport {RouteReusableStrategy as ɵf} from './lib/core/route-reusable-strategy';\nexport {ErrorSnackComponent as ɵc,SuccessSnackComponent as ɵb} from './lib/core/snack/snack.component';\nexport {SnackModule as ɵa} from './lib/core/snack/snack.module';\nexport {StorageService as ɵcc} from './lib/core/storage.service';\nexport {TechlifyConfig as ɵy} from './lib/core/techlify-config.model';\nexport {DataTableComponent as ɵi} from './lib/data-table/data-table.component';\nexport {DocumentViewerComponent as ɵj} from './lib/document-viewer/document-viewer.component';\nexport {EmailSubscriptionForUserComponent as ɵbk} from './lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component';\nexport {EmailSubscriptionTypeFormComponent as ɵbi} from './lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component';\nexport {EmailSubscriptionTypeListComponent as ɵbj} from './lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component';\nexport {EmailSubscriptionUserFormComponent as ɵbe} from './lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component';\nexport {EmailSubscriptionUserListFilterComponent as ɵbh} from './lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component';\nexport {EmailSubscriptionUserListComponent as ɵbf} from './lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component';\nexport {EntityFileFormComponent as ɵk} from './lib/entity-files/entity-file-form/entity-file-form.component';\nexport {EntityFileService as ɵm} from './lib/entity-files/entity-file.service';\nexport {EntityFilesViewAllComponent as ɵo} from './lib/entity-files/entity-files-view-all.component';\nexport {FileDropperComponent as ɵp} from './lib/file-dropper/file-dropper.component';\nexport {DataImportComponent as ɵcb} from './lib/import-csv/data-import/data-import.component';\nexport {FailedItemsListComponent as ɵby} from './lib/import-csv/failed-items-list/failed-items-list.component';\nexport {FieldMappingComponent as ɵbx} from './lib/import-csv/field-mapping/field-mapping.component';\nexport {ImportHistoryListComponent as ɵbz} from './lib/import-csv/import-history-list/import-history-list.component';\nexport {ImportSuccessComponent as ɵca} from './lib/import-csv/import-success/import-success.component';\nexport {LoaderComponent as ɵbd} from './lib/loader/loader.component';\nexport {CommentFormComponent as ɵv} from './lib/note/comment-form/comment-form.component';\nexport {NoteFormComponent as ɵu} from './lib/note/note-form/note-form.component';\nexport {NoteListComponent as ɵs} from './lib/note/note-list/note-list.component';\nexport {NoteService as ɵt} from './lib/note/note.service';\nexport {MatSelectInfiniteScrollDirective as ɵr} from './lib/searchable-selector/mat-select-infinite-scroll.directive';\nexport {SearchableSelectorComponent as ɵq} from './lib/searchable-selector/searchable-selector.component';\nexport {OnOffSwitchComponent as ɵce} from './lib/techlify-feature/on-off-switch/on-off-switch.component';\nexport {TechlifyFeatureService as ɵcd} from './lib/techlify-feature/techlify-feature.service';\nexport {TechlifyUpdateFormComponent as ɵbp} from './lib/techlify-update/techlify-update-form/techlify-update-form.component';\nexport {TechlifyUpdateFormModule as ɵbo} from './lib/techlify-update/techlify-update-form/techlify-update-form.module';\nexport {TechlifyUpdateHistoryRoutingModule as ɵbq} from './lib/techlify-update/techlify-update-history/techlify-update-history-routing.module';\nexport {TechlifyUpdateHistoryComponent as ɵbr} from './lib/techlify-update/techlify-update-history/techlify-update-history.component';\nexport {TechlifyUpdateRoutingModule as ɵbn} from './lib/techlify-update/techlify-update-routing.module';\nexport {TechlifyUpdateService as ɵbm} from './lib/techlify-update/techlify-update.service';\nexport {TechlifyUpdatesListComponent as ɵbl} from './lib/techlify-update/techlify-updates-list/techlify-updates-list.component';\nexport {UpdateNotifierSnackComponent as ɵbs} from './lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component';\nexport {UpdateViewComponent as ɵbu} from './lib/techlify-update/update-view/update-view.component';\nexport {UpdateViewModule as ɵbt} from './lib/techlify-update/update-view/update-view.module';\nexport {TimelineFilterRoutingModule as ɵbc} from './lib/timeline-filter/timeline-filter-routing.module';\nexport {TimelineFilterComponent as ɵbb} from './lib/timeline-filter/timeline-filter.component';\nexport {NumItemsSelector as ɵz} from './lib/utility/num-items-selector.component';\nexport {NumberSelector as ɵba} from './lib/utility/number-selector.component';"],"names":["Component","MatDialogRef","Inject","MAT_DIALOG_DATA","DataTableComponent","MatTableDataSource","EventEmitter","untilDestroyed","Input","Output","ViewChild","MatSort","UntilDestroy","LogLevel","Injectable","MAT_SNACK_BAR_DATA","MatSnackBar","catchError","throwError","log","Observable","HttpResponse","InjectionToken","HttpClient","HttpHandler","Injector","Optional","Validators","FormBuilder","EntityFilesViewAllComponent","debounceTime","Location","MatDialog","errorMessages","SearchableSelectorComponent","Subject","coerceBooleanProperty","distinctUntilChanged","of","startWith","switchMap","from","finalize","MatFormFieldControl","FocusMonitor","ElementRef","NgControl","Self","SELECT_ITEM_HEIGHT_EM","takeUntil","fromEvent","tap","Directive","MatSelect","NgZone","moment_","TimelineFilterComponent","FormControl","DatePipe","NgModule","CommonModule","MatSnackBarModule","MatIconModule","Router","concatMap","RouteReuseStrategy","MatButtonModule","MatCheckboxModule","MatCommonModule","MatDialogModule","MatFormFieldModule","MatInputModule","MatLineModule","MatMenuModule","MatNativeDateModule","MatOptionModule","MatProgressSpinnerModule","MatPseudoCheckboxModule","MatRippleModule","MatSelectModule","MatSortModule","MatTableModule","MatCardModule","MatDividerModule","MatChipsModule","MatDatepickerModule","MatListModule","MatTooltipModule","MatButtonToggleModule","HttpClientModule","RouterModule","SkipSelf","FlexLayoutModule","InfiniteScrollModule","NgxDocViewerModule","ENTER","COMMA","TechlifyTaggerTagFormFieldComponent","MatFormField","MAT_FORM_FIELD","MatAutocompleteModule","ReactiveFormsModule","FormsModule","routes","EmailSubscriptionUserFormComponent","EmailSubscriptionUserListComponent","EmailSubscriptionUserListFilterComponent","EmailSubscriptionTypeFormComponent","EmailSubscriptionTypeListComponent","EmailSubscriptionForUserComponent","Editor","NgxEditorModule","TechlifyUpdatesListComponent","TechlifyUpdateHistoryComponent","MatSnackBarRef","XLSX.utils","XLSX.writeFile","AuditLogViewModelComponent","AuditLogsViewModelComponent","filter","NavigationEnd","AuditLogListComponent","DomSanitizer","AuditLogListFilterComponent","jsondiffpatch.diff","jsondiffpatch.formatters","ActivatedRoute","ChangeDetectorRef","ImportCsvComponent","XLSX.read","LoginHistoryForUserComponent","TechlifyTaggerTagSelectorComponent","TechlifyFeatureListingComponent","MatSlideToggleModule"],"mappings":"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"}