nuxeo-development-framework 0.0.2 → 0.0.6

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 (433) hide show
  1. package/README.md +24 -24
  2. package/bundles/nuxeo-development-framework.umd.js +18534 -50
  3. package/bundles/nuxeo-development-framework.umd.js.map +1 -1
  4. package/esm2015/lib/Core/adapters/adapter.service.js +50 -0
  5. package/esm2015/lib/Core/core.module.js +104 -0
  6. package/esm2015/lib/Core/enums/language.enum.js +6 -0
  7. package/esm2015/lib/Core/models/component.model.js +8 -0
  8. package/esm2015/lib/Core/services/callApi/call-api.service.js +33 -0
  9. package/esm2015/lib/Core/services/initialization/initialization.service.js +57 -0
  10. package/esm2015/lib/Core/services/localStorag/local-storag.service.js +123 -0
  11. package/esm2015/lib/Core/services/nuxeo/nuxeo-override.js +82 -0
  12. package/esm2015/lib/Core/services/nuxeo/nuxeo.service.js +120 -0
  13. package/esm2015/lib/Core/services/roles/roles.service.js +103 -0
  14. package/esm2015/lib/Core/services/translation/translate-loader.service.js +150 -0
  15. package/esm2015/lib/Core/services/translation/translation.service.js +171 -0
  16. package/esm2015/lib/Core/services/user/user-preferences.service.js +153 -0
  17. package/esm2015/lib/Core/utilities/moment-date-adapter.js +178 -0
  18. package/esm2015/lib/Core/utilities/utility.service.js +81 -0
  19. package/esm2015/lib/components/activity/activity/activity.component.js +28 -0
  20. package/esm2015/lib/components/activity/activity.module.js +37 -0
  21. package/esm2015/lib/components/avatar/avatar/avatar.component.js +55 -0
  22. package/esm2015/lib/components/avatar/avatar.module.js +32 -0
  23. package/esm2015/lib/components/card/card.component.js +48 -0
  24. package/esm2015/lib/components/card/card.module.js +23 -0
  25. package/esm2015/lib/components/comments/comments.module.js +76 -0
  26. package/esm2015/lib/components/comments/components/comment-item/comment-item.component.js +33 -0
  27. package/esm2015/lib/components/comments/components/comments-dashlet/comments-dashlet.component.js +78 -0
  28. package/esm2015/lib/components/comments/components/comments-list/comments-list.component.js +68 -0
  29. package/esm2015/lib/components/comments/constants/comment.js +25 -0
  30. package/esm2015/lib/components/comments/services/comment-api.service.js +49 -0
  31. package/esm2015/lib/components/confirm-caller/confirm-caller.dialog.js +73 -0
  32. package/esm2015/lib/components/confirm-caller/confirm-caller.module.js +27 -0
  33. package/esm2015/lib/components/confirm-caller/confirm-dialog/confirm-dialog.component.js +29 -0
  34. package/esm2015/lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component.js +134 -0
  35. package/esm2015/lib/components/correspondence-relation/components/correspondence-relation-create-form/correspondence-relation-create-form.component.js +133 -0
  36. package/esm2015/lib/components/correspondence-relation/components/correspondence-relation-list/correspondence-relation-list.component.js +110 -0
  37. package/esm2015/lib/components/correspondence-relation/components/correspondence-relation-reply/correspondence-relation-reply.component.js +49 -0
  38. package/esm2015/lib/components/correspondence-relation/components/versions/versions.component.js +61 -0
  39. package/esm2015/lib/components/correspondence-relation/correspondence-relation.module.js +111 -0
  40. package/esm2015/lib/components/correspondence-relation/services/correspondence-realation.service.js +115 -0
  41. package/esm2015/lib/components/correspondence-relation/services/viewer-files.service.js +50 -0
  42. package/esm2015/lib/components/create-entity/create-entity/create-entity.component.js +62 -0
  43. package/esm2015/lib/components/create-entity/create-entity.module.js +36 -0
  44. package/esm2015/lib/components/cts-tags/components/correspondence-tags/correspondence-tags.component.js +73 -0
  45. package/esm2015/lib/components/cts-tags/cts-tags.module.js +65 -0
  46. package/esm2015/lib/components/cts-tags/services/tags-api.service.js +61 -0
  47. package/esm2015/lib/components/custom-toastr/components/custom-toastr/custom-toastr.component.js +82 -0
  48. package/esm2015/lib/components/custom-toastr/custom-toastr.module.js +36 -0
  49. package/esm2015/lib/components/custom-toastr/interfaces/toast-type.interface.js +2 -0
  50. package/esm2015/lib/components/custom-toastr/services/custom-toastr.service.js +41 -0
  51. package/esm2015/lib/components/documents/components/attachments-list/attachments-list.component.js +156 -0
  52. package/esm2015/lib/components/documents/components/attachments-page-provider/attachments-page-provider.component.js +72 -0
  53. package/esm2015/lib/components/documents/components/document-list/documents-list.component.js +255 -0
  54. package/esm2015/lib/components/documents/components/document-scan/document-scan.component.js +929 -0
  55. package/esm2015/lib/components/documents/components/document-upload/document-upload.component.js +159 -0
  56. package/esm2015/lib/components/documents/components/documents/documents.component.js +61 -0
  57. package/esm2015/lib/components/documents/constants/document-templates.js +32 -0
  58. package/esm2015/lib/components/documents/constants/documents.js +86 -0
  59. package/esm2015/lib/components/documents/documents.module.js +123 -0
  60. package/esm2015/lib/components/documents/services/document-templates.service.js +115 -0
  61. package/esm2015/lib/components/documents/services/documents.service.js +217 -0
  62. package/esm2015/lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component.js +342 -0
  63. package/esm2015/lib/components/dynamic-chart/dynamic-chart.module.js +34 -0
  64. package/esm2015/lib/components/dynamic-chart/dynamic-single-chart/dynamic-single-chart.component.js +164 -0
  65. package/esm2015/lib/components/dynamic-chart/services/chart-data.service.js +542 -0
  66. package/esm2015/lib/components/dynamic-filter/dynamic-filter/dynamic-filter.component.js +106 -0
  67. package/esm2015/lib/components/dynamic-filter/dynamic-filter.module.js +26 -0
  68. package/esm2015/lib/components/dynamic-form/components/department-form/department-form.component.js +124 -0
  69. package/esm2015/lib/components/dynamic-form/components/dynamic-form/dynamic-form.component.js +94 -0
  70. package/esm2015/lib/components/dynamic-form/components/dynamic-form/fields.adapter.js +127 -0
  71. package/esm2015/lib/components/dynamic-form/components/dynamic-form/form-builder.service.js +102 -0
  72. package/esm2015/lib/components/dynamic-form/components/dynamic-form-boolitem/dynamic-form-boolitem.component.js +35 -0
  73. package/esm2015/lib/components/dynamic-form/components/dynamic-form-builder/dynamic-form-builder.component.js +165 -0
  74. package/esm2015/lib/components/dynamic-form/components/dynamic-form-checkbox-item/dynamic-form-checkbox-item.component.js +71 -0
  75. package/esm2015/lib/components/dynamic-form/components/dynamic-form-dateitem/dynamic-form-dateitem.component.js +202 -0
  76. package/esm2015/lib/components/dynamic-form/components/dynamic-form-dateitem/owlDateTimeIntl.js +78 -0
  77. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/constants/department.js +13 -0
  78. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.js +185 -0
  79. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/services/department-api.service.js +207 -0
  80. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/services/department-management.service.js +94 -0
  81. package/esm2015/lib/components/dynamic-form/components/dynamic-form-field/dynamic-form-field.component.js +85 -0
  82. package/esm2015/lib/components/dynamic-form/components/dynamic-form-hijri-dateitem/dynamic-form-hijri-dateitem.component.js +128 -0
  83. package/esm2015/lib/components/dynamic-form/components/dynamic-form-item-dispatcher/dynamic-form-item-dispatcher.component.js +81 -0
  84. package/esm2015/lib/components/dynamic-form/components/dynamic-form-mapitem/dynamic-form-mapitem.component.js +36 -0
  85. package/esm2015/lib/components/dynamic-form/components/dynamic-form-options/dynamic-form-options.component.js +106 -0
  86. package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-tag/dynamic-form-select-tag.component.js +93 -0
  87. package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-user-filter/dynamic-form-select-user-filter.component.js +207 -0
  88. package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-users/dynamic-form-select-users.component.js +302 -0
  89. package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-users/services/user-api.service.js +44 -0
  90. package/esm2015/lib/components/dynamic-form/components/dynamic-form-selectitem/dynamic-form-selectitem.component.js +176 -0
  91. package/esm2015/lib/components/dynamic-form/components/dynamic-form-slide-toggleitem/dynamic-form-slide-toggleitem.component.js +76 -0
  92. package/esm2015/lib/components/dynamic-form/components/dynamic-form-textarea/dynamic-form-textarea.component.js +180 -0
  93. package/esm2015/lib/components/dynamic-form/components/dynamic-form-textitem/dynamic-form-textitem.component.js +250 -0
  94. package/esm2015/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select-i18n.js +63 -0
  95. package/esm2015/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select.component.js +269 -0
  96. package/esm2015/lib/components/dynamic-form/components/dynamic-form-viewer/dynamic-form-viewer.component.js +47 -0
  97. package/esm2015/lib/components/dynamic-form/components/dynamic-form-vocabulary-item/dynamic-form-vocabulary-item.component.js +172 -0
  98. package/esm2015/lib/components/dynamic-form/components/form-wrappers/base-edit-form/base-edit-form.js +768 -0
  99. package/esm2015/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.component.js +35 -0
  100. package/esm2015/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.formio.js +17 -0
  101. package/esm2015/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.component.js +34 -0
  102. package/esm2015/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.formio.js +17 -0
  103. package/esm2015/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.component.js +38 -0
  104. package/esm2015/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.formio.js +30 -0
  105. package/esm2015/lib/components/dynamic-form/directives/dynamic-form-content-proxy.directive.js +17 -0
  106. package/esm2015/lib/components/dynamic-form/dynamic-form.module.js +289 -0
  107. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-boolitem-properties.interface.js +2 -0
  108. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-dateitem-properties.interface.js +2 -0
  109. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-item-properties.interface.js +2 -0
  110. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-item-validator.interface.js +2 -0
  111. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-item.interface.js +2 -0
  112. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-keyvaluepairsitem-properties.interface.js +2 -0
  113. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-selectitem-properties.interface.js +2 -0
  114. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-textitem-pipe-property.interface.js +2 -0
  115. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-textitem-properties.interface.js +2 -0
  116. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form.interfaces.js +10 -0
  117. package/esm2015/lib/components/dynamic-form/models/dynamic-form-baseitem.model.js +63 -0
  118. package/esm2015/lib/components/dynamic-form/models/dynamic-form-boolitem.model.js +20 -0
  119. package/esm2015/lib/components/dynamic-form/models/dynamic-form-dateitem.model.js +24 -0
  120. package/esm2015/lib/components/dynamic-form/models/dynamic-form-datetimeitem.model.js +12 -0
  121. package/esm2015/lib/components/dynamic-form/models/dynamic-form-mapitem.model.js +16 -0
  122. package/esm2015/lib/components/dynamic-form/models/dynamic-form-selectitem.model.js +17 -0
  123. package/esm2015/lib/components/dynamic-form/models/dynamic-form-textitem.model.js +32 -0
  124. package/esm2015/lib/components/dynamic-form/models/dynamic-form.models.js +8 -0
  125. package/esm2015/lib/components/dynamic-form/services/card-item-types.service.js +46 -0
  126. package/esm2015/lib/components/dynamic-form/services/dynamic-component-mapper.service.js +60 -0
  127. package/esm2015/lib/components/dynamic-form/services/dynamic-form-update.service.js +74 -0
  128. package/esm2015/lib/components/dynamic-form/validators/length-validator.js +15 -0
  129. package/esm2015/lib/components/dynamic-form/validators/regex-validator.js +15 -0
  130. package/esm2015/lib/components/dynamic-form/validators/required-validator.js +9 -0
  131. package/esm2015/lib/components/dynamic-form/validators/value-validator.js +15 -0
  132. package/esm2015/lib/components/dynamic-search/dynamic-search/dynamic-search.component.js +148 -0
  133. package/esm2015/lib/components/dynamic-search/dynamic-search.module.js +57 -0
  134. package/esm2015/lib/components/dynamic-table/dynamic-table/dynamic-table.component.js +204 -0
  135. package/esm2015/lib/components/dynamic-table/dynamic-table.module.js +44 -0
  136. package/esm2015/lib/components/dynamic-table/services/dynamic-table.service.js +16 -0
  137. package/esm2015/lib/components/dynamic-view/boolean-viewer/boolean-viewer.component.js +36 -0
  138. package/esm2015/lib/components/dynamic-view/data-viewer/data-viewer.component.js +32 -0
  139. package/esm2015/lib/components/dynamic-view/date-viewer/date-viewer.component.js +49 -0
  140. package/esm2015/lib/components/dynamic-view/department-viewer/department-viewer.component.js +71 -0
  141. package/esm2015/lib/components/dynamic-view/dropdown-viewer/dropdown-viewer.component.js +60 -0
  142. package/esm2015/lib/components/dynamic-view/dynamic-view.module.js +54 -0
  143. package/esm2015/lib/components/dynamic-view/list-viewer/list-viewer.component.js +40 -0
  144. package/esm2015/lib/components/filter/filter/filter.component.js +94 -0
  145. package/esm2015/lib/components/filter/filter.module.js +45 -0
  146. package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/gregorian-datepicker/gregorian-datepicker.component.js +114 -0
  147. package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-datepicker/hijri-datepicker.component.js +111 -0
  148. package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-gregorian-datepicker.component.js +165 -0
  149. package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/provide-parent-form.directive.js +32 -0
  150. package/esm2015/lib/components/hijri-gregorian-datepicker/ngx-hijri-gregorian-datepicker.module.js +54 -0
  151. package/esm2015/lib/components/hijri-gregorian-datepicker/services/date-formatter.service.js +71 -0
  152. package/esm2015/lib/components/hijri-gregorian-datepicker/services/date-helper.service.js +25 -0
  153. package/esm2015/lib/components/hijri-gregorian-datepicker/utils/CustomNgbDateParserFormatter.js +43 -0
  154. package/esm2015/lib/components/hijri-gregorian-datepicker/utils/IslamicI18n.js +26 -0
  155. package/esm2015/lib/components/hijri-gregorian-datepicker/utils/consts.js +5 -0
  156. package/esm2015/lib/components/latest-activity/components/activity-line/activity-line.component.js +75 -0
  157. package/esm2015/lib/components/latest-activity/components/latest-activity/latest-activity.component.js +70 -0
  158. package/esm2015/lib/components/latest-activity/components/single-activity/single-activity.component.js +27 -0
  159. package/esm2015/lib/components/latest-activity/constants/activitylog.js +80 -0
  160. package/esm2015/lib/components/latest-activity/latest-activity.module.js +53 -0
  161. package/esm2015/lib/components/latest-activity/services/activity-log.service.js +33 -0
  162. package/esm2015/lib/components/notifications/components/notification-item/notification-item.component.js +69 -0
  163. package/esm2015/lib/components/notifications/components/notification-options/notification-options.component.js +22 -0
  164. package/esm2015/lib/components/notifications/components/notification-toast/notification-toast.component.js +57 -0
  165. package/esm2015/lib/components/notifications/components/notifications-button/notifications-button.component.js +129 -0
  166. package/esm2015/lib/components/notifications/components/notifications-list/notifications-list.component.js +149 -0
  167. package/esm2015/lib/components/notifications/notifications.module.js +109 -0
  168. package/esm2015/lib/components/notifications/notifications.service.js +277 -0
  169. package/esm2015/lib/components/pagination/pagination/pagination.component.js +123 -0
  170. package/esm2015/lib/components/pagination/pagination.module.js +32 -0
  171. package/esm2015/lib/components/pdf-tron/pdf-tron.module.js +24 -0
  172. package/esm2015/lib/components/pdf-tron/pdftron/pdftron.component.js +228 -0
  173. package/esm2015/lib/components/pdf-tron/pdftron/pdftron.service.js +181 -0
  174. package/esm2015/lib/components/select/select/select.component.js +130 -0
  175. package/esm2015/lib/components/select/select.module.js +37 -0
  176. package/esm2015/lib/components/table/table/table.component.js +174 -0
  177. package/esm2015/lib/components/table/table.module.js +57 -0
  178. package/esm2015/lib/components/users-card/users-card.component.js +43 -0
  179. package/esm2015/lib/components/users-card/users-card.module.js +28 -0
  180. package/esm2015/lib/components/viewer-log/components/viewer-log/viewer-log.component.js +33 -0
  181. package/esm2015/lib/components/viewer-log/viewer-log.module.js +20 -0
  182. package/esm2015/lib/components/vocabulary/interfaces/op-type.interface.js +2 -0
  183. package/esm2015/lib/components/vocabulary/services/vocabulary-api.service.js +49 -0
  184. package/esm2015/lib/components/vocabulary/vocabulary/vocabulary.component.js +106 -0
  185. package/esm2015/lib/components/vocabulary/vocabulary.module.js +34 -0
  186. package/esm2015/lib/configuration/app-config.service.js +26 -0
  187. package/esm2015/lib/configuration/helpers/app-initializer.js +4 -0
  188. package/esm2015/lib/directive/app-has-role/app-has-role.directive.js +61 -0
  189. package/esm2015/lib/directive/clickOutSide/click-outside.directive.js +29 -0
  190. package/esm2015/lib/directive/directive.module.js +48 -0
  191. package/esm2015/lib/directive/permissions/evaluators.service.js +118 -0
  192. package/esm2015/lib/directive/permissions/permissions.directive.js +106 -0
  193. package/esm2015/lib/directive/rtl/set-dir-rtl.directive.js +28 -0
  194. package/esm2015/lib/directive/rtl/set-rtl.directive.js +29 -0
  195. package/esm2015/lib/nuxeo-development-framework.component.js +26 -18
  196. package/esm2015/lib/nuxeo-development-framework.module.js +45 -16
  197. package/esm2015/lib/nuxeo-development-framework.service.js +14 -13
  198. package/esm2015/lib/pipes/file-size.pipe.js +57 -0
  199. package/esm2015/lib/pipes/hijri-date.pipe.js +46 -0
  200. package/esm2015/lib/pipes/localized-date.pipe.js +81 -0
  201. package/esm2015/lib/pipes/multi-value.pipe.js +42 -0
  202. package/esm2015/lib/pipes/pipes.module.js +29 -0
  203. package/esm2015/lib/pipes/secure-html.pipe.js +34 -0
  204. package/esm2015/lib/pipes/secure.pipe.js +40 -0
  205. package/esm2015/lib/pipes/time-ago.pipe.js +68 -0
  206. package/esm2015/lib/shared/components/button/button.component.js +87 -0
  207. package/esm2015/lib/shared/components/item-list/item-list.component.js +76 -0
  208. package/esm2015/lib/shared/components/no-data/no-data.component.js +37 -0
  209. package/esm2015/lib/shared/components/read-more/read-more.component.js +107 -0
  210. package/esm2015/lib/shared/components/search-autocomplete/search-autocomplete.component.js +144 -0
  211. package/esm2015/lib/shared/components/spinner/spinner.component.js +29 -0
  212. package/esm2015/lib/shared/components/user-card/user-card.component.js +49 -0
  213. package/esm2015/lib/shared/libraryShared.module.js +80 -0
  214. package/esm2015/nuxeo-development-framework.js +4 -4
  215. package/esm2015/public-api.js +156 -7
  216. package/fesm2015/nuxeo-development-framework.js +17027 -49
  217. package/fesm2015/nuxeo-development-framework.js.map +1 -1
  218. package/lib/Core/adapters/adapter.service.d.ts +11 -0
  219. package/lib/Core/core.module.d.ts +14 -0
  220. package/lib/Core/enums/language.enum.d.ts +4 -0
  221. package/lib/Core/models/component.model.d.ts +6 -0
  222. package/lib/Core/services/callApi/call-api.service.d.ts +11 -0
  223. package/lib/Core/services/initialization/initialization.service.d.ts +14 -0
  224. package/lib/Core/services/localStorag/local-storag.service.d.ts +41 -0
  225. package/lib/Core/services/nuxeo/nuxeo-override.d.ts +8 -0
  226. package/lib/Core/services/nuxeo/nuxeo.service.d.ts +33 -0
  227. package/lib/Core/services/roles/roles.service.d.ts +11 -0
  228. package/lib/Core/services/translation/translate-loader.service.d.ts +26 -0
  229. package/lib/Core/services/translation/translation.service.d.ts +71 -0
  230. package/lib/Core/services/user/user-preferences.service.d.ts +80 -0
  231. package/lib/Core/utilities/moment-date-adapter.d.ts +37 -0
  232. package/lib/Core/utilities/utility.service.d.ts +11 -0
  233. package/lib/components/activity/activity/activity.component.d.ts +13 -0
  234. package/lib/components/activity/activity.module.d.ts +13 -0
  235. package/lib/components/avatar/avatar/avatar.component.d.ts +23 -0
  236. package/lib/components/avatar/avatar.module.d.ts +13 -0
  237. package/lib/components/card/card.component.d.ts +32 -0
  238. package/lib/components/card/card.module.d.ts +12 -0
  239. package/lib/components/comments/comments.module.d.ts +25 -0
  240. package/lib/components/comments/components/comment-item/comment-item.component.d.ts +13 -0
  241. package/lib/components/comments/components/comments-dashlet/comments-dashlet.component.d.ts +45 -0
  242. package/lib/components/comments/components/comments-list/comments-list.component.d.ts +26 -0
  243. package/lib/components/comments/constants/comment.d.ts +25 -0
  244. package/lib/components/comments/services/comment-api.service.d.ts +14 -0
  245. package/lib/components/confirm-caller/confirm-caller.dialog.d.ts +46 -0
  246. package/lib/components/confirm-caller/confirm-caller.module.d.ts +16 -0
  247. package/lib/components/confirm-caller/confirm-dialog/confirm-dialog.component.d.ts +12 -0
  248. package/lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component.d.ts +34 -0
  249. package/lib/components/correspondence-relation/components/correspondence-relation-create-form/correspondence-relation-create-form.component.d.ts +42 -0
  250. package/lib/components/correspondence-relation/components/correspondence-relation-list/correspondence-relation-list.component.d.ts +31 -0
  251. package/lib/components/correspondence-relation/components/correspondence-relation-reply/correspondence-relation-reply.component.d.ts +18 -0
  252. package/lib/components/correspondence-relation/components/versions/versions.component.d.ts +31 -0
  253. package/lib/components/correspondence-relation/correspondence-relation.module.d.ts +30 -0
  254. package/lib/components/correspondence-relation/services/correspondence-realation.service.d.ts +24 -0
  255. package/lib/components/correspondence-relation/services/viewer-files.service.d.ts +18 -0
  256. package/lib/components/create-entity/create-entity/create-entity.component.d.ts +17 -0
  257. package/lib/components/create-entity/create-entity.module.d.ts +11 -0
  258. package/lib/components/cts-tags/components/correspondence-tags/correspondence-tags.component.d.ts +28 -0
  259. package/lib/components/cts-tags/cts-tags.module.d.ts +21 -0
  260. package/lib/components/cts-tags/services/tags-api.service.d.ts +15 -0
  261. package/lib/components/custom-toastr/components/custom-toastr/custom-toastr.component.d.ts +30 -0
  262. package/lib/components/custom-toastr/custom-toastr.module.d.ts +12 -0
  263. package/lib/components/custom-toastr/interfaces/toast-type.interface.d.ts +1 -0
  264. package/lib/components/custom-toastr/services/custom-toastr.service.d.ts +18 -0
  265. package/lib/components/documents/components/attachments-list/attachments-list.component.d.ts +54 -0
  266. package/lib/components/documents/components/attachments-page-provider/attachments-page-provider.component.d.ts +37 -0
  267. package/lib/components/documents/components/document-list/documents-list.component.d.ts +81 -0
  268. package/lib/components/documents/components/document-scan/document-scan.component.d.ts +103 -0
  269. package/lib/components/documents/components/document-upload/document-upload.component.d.ts +58 -0
  270. package/lib/components/documents/components/documents/documents.component.d.ts +27 -0
  271. package/lib/components/documents/constants/document-templates.d.ts +33 -0
  272. package/lib/components/documents/constants/documents.d.ts +95 -0
  273. package/lib/components/documents/documents.module.d.ts +33 -0
  274. package/lib/components/documents/services/document-templates.service.d.ts +24 -0
  275. package/lib/components/documents/services/documents.service.d.ts +36 -0
  276. package/lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component.d.ts +63 -0
  277. package/lib/components/dynamic-chart/dynamic-chart.module.d.ts +16 -0
  278. package/lib/components/dynamic-chart/dynamic-single-chart/dynamic-single-chart.component.d.ts +33 -0
  279. package/lib/components/dynamic-chart/services/chart-data.service.d.ts +37 -0
  280. package/lib/components/dynamic-filter/dynamic-filter/dynamic-filter.component.d.ts +45 -0
  281. package/lib/components/dynamic-filter/dynamic-filter.module.d.ts +16 -0
  282. package/lib/components/dynamic-form/components/department-form/department-form.component.d.ts +28 -0
  283. package/lib/components/dynamic-form/components/dynamic-form/dynamic-form.component.d.ts +26 -0
  284. package/lib/components/dynamic-form/components/dynamic-form/fields.adapter.d.ts +6 -0
  285. package/lib/components/dynamic-form/components/dynamic-form/form-builder.service.d.ts +21 -0
  286. package/lib/components/dynamic-form/components/dynamic-form-boolitem/dynamic-form-boolitem.component.d.ts +17 -0
  287. package/lib/components/dynamic-form/components/dynamic-form-builder/dynamic-form-builder.component.d.ts +57 -0
  288. package/lib/components/dynamic-form/components/dynamic-form-checkbox-item/dynamic-form-checkbox-item.component.d.ts +35 -0
  289. package/lib/components/dynamic-form/components/dynamic-form-dateitem/dynamic-form-dateitem.component.d.ts +70 -0
  290. package/lib/components/dynamic-form/components/dynamic-form-dateitem/owlDateTimeIntl.d.ts +52 -0
  291. package/lib/components/dynamic-form/components/dynamic-form-department/constants/department.d.ts +12 -0
  292. package/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.d.ts +65 -0
  293. package/lib/components/dynamic-form/components/dynamic-form-department/services/department-api.service.d.ts +29 -0
  294. package/lib/components/dynamic-form/components/dynamic-form-department/services/department-management.service.d.ts +21 -0
  295. package/lib/components/dynamic-form/components/dynamic-form-field/dynamic-form-field.component.d.ts +30 -0
  296. package/lib/components/dynamic-form/components/dynamic-form-hijri-dateitem/dynamic-form-hijri-dateitem.component.d.ts +61 -0
  297. package/lib/components/dynamic-form/components/dynamic-form-item-dispatcher/dynamic-form-item-dispatcher.component.d.ts +25 -0
  298. package/lib/components/dynamic-form/components/dynamic-form-mapitem/dynamic-form-mapitem.component.d.ts +15 -0
  299. package/lib/components/dynamic-form/components/dynamic-form-options/dynamic-form-options.component.d.ts +45 -0
  300. package/lib/components/dynamic-form/components/dynamic-form-select-tag/dynamic-form-select-tag.component.d.ts +41 -0
  301. package/lib/components/dynamic-form/components/dynamic-form-select-user-filter/dynamic-form-select-user-filter.component.d.ts +65 -0
  302. package/lib/components/dynamic-form/components/dynamic-form-select-users/dynamic-form-select-users.component.d.ts +83 -0
  303. package/lib/components/dynamic-form/components/dynamic-form-select-users/services/user-api.service.d.ts +13 -0
  304. package/lib/components/dynamic-form/components/dynamic-form-selectitem/dynamic-form-selectitem.component.d.ts +79 -0
  305. package/lib/components/dynamic-form/components/dynamic-form-slide-toggleitem/dynamic-form-slide-toggleitem.component.d.ts +37 -0
  306. package/lib/components/dynamic-form/components/dynamic-form-textarea/dynamic-form-textarea.component.d.ts +71 -0
  307. package/lib/components/dynamic-form/components/dynamic-form-textitem/dynamic-form-textitem.component.d.ts +86 -0
  308. package/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select-i18n.d.ts +19 -0
  309. package/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select.component.d.ts +88 -0
  310. package/lib/components/dynamic-form/components/dynamic-form-viewer/dynamic-form-viewer.component.d.ts +16 -0
  311. package/lib/components/dynamic-form/components/dynamic-form-vocabulary-item/dynamic-form-vocabulary-item.component.d.ts +76 -0
  312. package/lib/components/dynamic-form/components/form-wrappers/base-edit-form/base-edit-form.d.ts +599 -0
  313. package/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.component.d.ts +13 -0
  314. package/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.formio.d.ts +2 -0
  315. package/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.component.d.ts +13 -0
  316. package/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.formio.d.ts +2 -0
  317. package/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.component.d.ts +16 -0
  318. package/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.formio.d.ts +2 -0
  319. package/lib/components/dynamic-form/directives/dynamic-form-content-proxy.directive.d.ts +9 -0
  320. package/lib/components/dynamic-form/dynamic-form.module.d.ts +64 -0
  321. package/lib/components/dynamic-form/interfaces/dynamic-form-boolitem-properties.interface.d.ts +5 -0
  322. package/lib/components/dynamic-form/interfaces/dynamic-form-dateitem-properties.interface.d.ts +5 -0
  323. package/lib/components/dynamic-form/interfaces/dynamic-form-item-properties.interface.d.ts +15 -0
  324. package/lib/components/dynamic-form/interfaces/dynamic-form-item-validator.interface.d.ts +4 -0
  325. package/lib/components/dynamic-form/interfaces/dynamic-form-item.interface.d.ts +12 -0
  326. package/lib/components/dynamic-form/interfaces/dynamic-form-keyvaluepairsitem-properties.interface.d.ts +8 -0
  327. package/lib/components/dynamic-form/interfaces/dynamic-form-selectitem-properties.interface.d.ts +10 -0
  328. package/lib/components/dynamic-form/interfaces/dynamic-form-textitem-pipe-property.interface.d.ts +5 -0
  329. package/lib/components/dynamic-form/interfaces/dynamic-form-textitem-properties.interface.d.ts +8 -0
  330. package/lib/components/dynamic-form/interfaces/dynamic-form.interfaces.d.ts +9 -0
  331. package/lib/components/dynamic-form/models/dynamic-form-baseitem.model.d.ts +21 -0
  332. package/lib/components/dynamic-form/models/dynamic-form-boolitem.model.d.ts +11 -0
  333. package/lib/components/dynamic-form/models/dynamic-form-dateitem.model.d.ts +13 -0
  334. package/lib/components/dynamic-form/models/dynamic-form-datetimeitem.model.d.ts +9 -0
  335. package/lib/components/dynamic-form/models/dynamic-form-mapitem.model.d.ts +8 -0
  336. package/lib/components/dynamic-form/models/dynamic-form-selectitem.model.d.ts +11 -0
  337. package/lib/components/dynamic-form/models/dynamic-form-textitem.model.d.ts +15 -0
  338. package/lib/components/dynamic-form/models/dynamic-form.models.d.ts +7 -0
  339. package/lib/components/dynamic-form/services/card-item-types.service.d.ts +13 -0
  340. package/lib/components/dynamic-form/services/dynamic-component-mapper.service.d.ts +36 -0
  341. package/lib/components/dynamic-form/services/dynamic-form-update.service.d.ts +30 -0
  342. package/lib/components/dynamic-form/validators/length-validator.d.ts +7 -0
  343. package/lib/components/dynamic-form/validators/regex-validator.d.ts +7 -0
  344. package/lib/components/dynamic-form/validators/required-validator.d.ts +5 -0
  345. package/lib/components/dynamic-form/validators/value-validator.d.ts +7 -0
  346. package/lib/components/dynamic-search/dynamic-search/dynamic-search.component.d.ts +71 -0
  347. package/lib/components/dynamic-search/dynamic-search.module.d.ts +19 -0
  348. package/lib/components/dynamic-table/dynamic-table/dynamic-table.component.d.ts +96 -0
  349. package/lib/components/dynamic-table/dynamic-table.module.d.ts +16 -0
  350. package/lib/components/dynamic-table/services/dynamic-table.service.d.ts +8 -0
  351. package/lib/components/dynamic-view/boolean-viewer/boolean-viewer.component.d.ts +13 -0
  352. package/lib/components/dynamic-view/data-viewer/data-viewer.component.d.ts +12 -0
  353. package/lib/components/dynamic-view/date-viewer/date-viewer.component.d.ts +17 -0
  354. package/lib/components/dynamic-view/department-viewer/department-viewer.component.d.ts +29 -0
  355. package/lib/components/dynamic-view/dropdown-viewer/dropdown-viewer.component.d.ts +37 -0
  356. package/lib/components/dynamic-view/dynamic-view.module.d.ts +20 -0
  357. package/lib/components/dynamic-view/list-viewer/list-viewer.component.d.ts +20 -0
  358. package/lib/components/filter/filter/filter.component.d.ts +31 -0
  359. package/lib/components/filter/filter.module.d.ts +15 -0
  360. package/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/gregorian-datepicker/gregorian-datepicker.component.d.ts +34 -0
  361. package/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-datepicker/hijri-datepicker.component.d.ts +32 -0
  362. package/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-gregorian-datepicker.component.d.ts +39 -0
  363. package/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/provide-parent-form.directive.d.ts +9 -0
  364. package/lib/components/hijri-gregorian-datepicker/ngx-hijri-gregorian-datepicker.module.d.ts +14 -0
  365. package/lib/components/hijri-gregorian-datepicker/services/date-formatter.service.d.ts +15 -0
  366. package/lib/components/hijri-gregorian-datepicker/services/date-helper.service.d.ts +8 -0
  367. package/lib/components/hijri-gregorian-datepicker/utils/CustomNgbDateParserFormatter.d.ts +11 -0
  368. package/lib/components/hijri-gregorian-datepicker/utils/IslamicI18n.d.ts +10 -0
  369. package/lib/components/hijri-gregorian-datepicker/utils/consts.d.ts +4 -0
  370. package/lib/components/latest-activity/components/activity-line/activity-line.component.d.ts +19 -0
  371. package/lib/components/latest-activity/components/latest-activity/latest-activity.component.d.ts +22 -0
  372. package/lib/components/latest-activity/components/single-activity/single-activity.component.d.ts +10 -0
  373. package/lib/components/latest-activity/constants/activitylog.d.ts +82 -0
  374. package/lib/components/latest-activity/latest-activity.module.d.ts +19 -0
  375. package/lib/components/latest-activity/services/activity-log.service.d.ts +12 -0
  376. package/lib/components/notifications/components/notification-item/notification-item.component.d.ts +15 -0
  377. package/lib/components/notifications/components/notification-options/notification-options.component.d.ts +10 -0
  378. package/lib/components/notifications/components/notification-toast/notification-toast.component.d.ts +19 -0
  379. package/lib/components/notifications/components/notifications-button/notifications-button.component.d.ts +25 -0
  380. package/lib/components/notifications/components/notifications-list/notifications-list.component.d.ts +45 -0
  381. package/lib/components/notifications/notifications.module.d.ts +24 -0
  382. package/lib/components/notifications/notifications.service.d.ts +61 -0
  383. package/lib/components/pagination/pagination/pagination.component.d.ts +46 -0
  384. package/lib/components/pagination/pagination.module.d.ts +13 -0
  385. package/lib/components/pdf-tron/pdf-tron.module.d.ts +8 -0
  386. package/lib/components/pdf-tron/pdftron/pdftron.component.d.ts +54 -0
  387. package/lib/components/pdf-tron/pdftron/pdftron.service.d.ts +30 -0
  388. package/lib/components/select/select/select.component.d.ts +43 -0
  389. package/lib/components/select/select.module.d.ts +12 -0
  390. package/lib/components/table/table/table.component.d.ts +89 -0
  391. package/lib/components/table/table.module.d.ts +18 -0
  392. package/lib/components/users-card/users-card.component.d.ts +22 -0
  393. package/lib/components/users-card/users-card.module.d.ts +17 -0
  394. package/lib/components/viewer-log/components/viewer-log/viewer-log.component.d.ts +12 -0
  395. package/lib/components/viewer-log/viewer-log.module.d.ts +10 -0
  396. package/lib/components/vocabulary/interfaces/op-type.interface.d.ts +1 -0
  397. package/lib/components/vocabulary/services/vocabulary-api.service.d.ts +16 -0
  398. package/lib/components/vocabulary/vocabulary/vocabulary.component.d.ts +37 -0
  399. package/lib/components/vocabulary/vocabulary.module.d.ts +11 -0
  400. package/lib/configuration/app-config.service.d.ts +11 -0
  401. package/lib/configuration/helpers/app-initializer.d.ts +2 -0
  402. package/lib/directive/app-has-role/app-has-role.directive.d.ts +18 -0
  403. package/lib/directive/clickOutSide/click-outside.directive.d.ts +11 -0
  404. package/lib/directive/directive.module.d.ts +16 -0
  405. package/lib/directive/permissions/evaluators.service.d.ts +26 -0
  406. package/lib/directive/permissions/permissions.directive.d.ts +46 -0
  407. package/lib/directive/rtl/set-dir-rtl.directive.d.ts +13 -0
  408. package/lib/directive/rtl/set-rtl.directive.d.ts +13 -0
  409. package/lib/nuxeo-development-framework.component.d.ts +8 -5
  410. package/lib/nuxeo-development-framework.module.d.ts +12 -2
  411. package/lib/nuxeo-development-framework.service.d.ts +6 -3
  412. package/lib/pipes/file-size.pipe.d.ts +34 -0
  413. package/lib/pipes/hijri-date.pipe.d.ts +32 -0
  414. package/lib/pipes/localized-date.pipe.d.ts +44 -0
  415. package/lib/pipes/multi-value.pipe.d.ts +32 -0
  416. package/lib/pipes/pipes.module.d.ts +18 -0
  417. package/lib/pipes/secure-html.pipe.d.ts +26 -0
  418. package/lib/pipes/secure.pipe.d.ts +29 -0
  419. package/lib/pipes/time-ago.pipe.d.ts +34 -0
  420. package/lib/shared/components/button/button.component.d.ts +38 -0
  421. package/lib/shared/components/item-list/item-list.component.d.ts +45 -0
  422. package/lib/shared/components/no-data/no-data.component.d.ts +21 -0
  423. package/lib/shared/components/read-more/read-more.component.d.ts +37 -0
  424. package/lib/shared/components/search-autocomplete/search-autocomplete.component.d.ts +49 -0
  425. package/lib/shared/components/spinner/spinner.component.d.ts +18 -0
  426. package/lib/shared/components/user-card/user-card.component.d.ts +30 -0
  427. package/lib/shared/libraryShared.module.d.ts +25 -0
  428. package/nuxeo-development-framework.d.ts +5 -4
  429. package/package.json +57 -16
  430. package/public-api.d.ts +145 -3
  431. package/bundles/nuxeo-development-framework.umd.min.js +0 -2
  432. package/bundles/nuxeo-development-framework.umd.min.js.map +0 -1
  433. package/nuxeo-development-framework.metadata.json +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"nuxeo-development-framework.js","sources":["../../../projects/nuxeo-development-framework/src/lib/nuxeo-development-framework.service.ts","../../../projects/nuxeo-development-framework/src/lib/nuxeo-development-framework.component.ts","../../../projects/nuxeo-development-framework/src/lib/nuxeo-development-framework.module.ts","../../../projects/nuxeo-development-framework/src/public-api.ts","../../../projects/nuxeo-development-framework/src/nuxeo-development-framework.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NuxeoDevelopmentFrameworkService {\n\n constructor() { }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-nuxeo-development-framework',\n template: `\n <p>\n nuxeo-development-framework works!\n </p>\n `,\n styles: [\n ]\n})\nexport class NuxeoDevelopmentFrameworkComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { NuxeoDevelopmentFrameworkComponent } from './nuxeo-development-framework.component';\n\n\n\n@NgModule({\n declarations: [\n NuxeoDevelopmentFrameworkComponent\n ],\n imports: [\n ],\n exports: [\n NuxeoDevelopmentFrameworkComponent\n ]\n})\nexport class NuxeoDevelopmentFrameworkModule { }\n","/*\n * Public API Surface of nuxeo-development-framework\n */\n\nexport * from './lib/nuxeo-development-framework.service';\nexport * from './lib/nuxeo-development-framework.component';\nexport * from './lib/nuxeo-development-framework.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;MAKa,gCAAgC;IAE3C,iBAAiB;;;;YALlB,UAAU,SAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;;MCQY,kCAAkC;IAE7C,iBAAiB;IAEjB,QAAQ;KACP;;;YAfF,SAAS,SAAC;gBACT,QAAQ,EAAE,iCAAiC;gBAC3C,QAAQ,EAAE;;;;GAIT;aAGF;;;;MCIY,+BAA+B;;;YAV3C,QAAQ,SAAC;gBACR,YAAY,EAAE;oBACZ,kCAAkC;iBACnC;gBACD,OAAO,EAAE,EACR;gBACD,OAAO,EAAE;oBACP,kCAAkC;iBACnC;aACF;;;ACdD;;;;ACAA;;;;;;"}
1
+ {"version":3,"file":"nuxeo-development-framework.js","sources":["../../../projects/nuxeo-development-framework/src/lib/nuxeo-development-framework.service.ts","../../../projects/nuxeo-development-framework/src/lib/nuxeo-development-framework.component.ts","../../../projects/nuxeo-development-framework/src/lib/Core/models/component.model.ts","../../../projects/nuxeo-development-framework/src/lib/Core/services/translation/translate-loader.service.ts","../../../projects/nuxeo-development-framework/src/lib/Core/services/localStorag/local-storag.service.ts","../../../projects/nuxeo-development-framework/src/lib/Core/services/user/user-preferences.service.ts","../../../projects/nuxeo-development-framework/src/lib/Core/enums/language.enum.ts","../../../projects/nuxeo-development-framework/src/lib/Core/services/nuxeo/nuxeo-override.ts","../../../projects/nuxeo-development-framework/src/lib/Core/services/roles/roles.service.ts","../../../projects/nuxeo-development-framework/src/lib/Core/services/nuxeo/nuxeo.service.ts","../../../projects/nuxeo-development-framework/src/lib/Core/services/translation/translation.service.ts","../../../projects/nuxeo-development-framework/src/lib/configuration/helpers/app-initializer.ts","../../../projects/nuxeo-development-framework/src/lib/configuration/app-config.service.ts","../../../projects/nuxeo-development-framework/src/lib/Core/core.module.ts","../../../projects/nuxeo-development-framework/src/lib/nuxeo-development-framework.module.ts","../../../projects/nuxeo-development-framework/src/lib/pipes/secure.pipe.ts","../../../projects/nuxeo-development-framework/src/lib/components/avatar/avatar/avatar.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/avatar/avatar/avatar.component.html","../../../projects/nuxeo-development-framework/src/lib/pipes/localized-date.pipe.ts","../../../projects/nuxeo-development-framework/src/lib/pipes/secure-html.pipe.ts","../../../projects/nuxeo-development-framework/src/lib/pipes/time-ago.pipe.ts","../../../projects/nuxeo-development-framework/src/lib/pipes/multi-value.pipe.ts","../../../projects/nuxeo-development-framework/src/lib/pipes/file-size.pipe.ts","../../../projects/nuxeo-development-framework/src/lib/pipes/hijri-date.pipe.ts","../../../projects/nuxeo-development-framework/src/lib/pipes/pipes.module.ts","../../../projects/nuxeo-development-framework/src/lib/components/avatar/avatar.module.ts","../../../projects/nuxeo-development-framework/src/lib/components/hijri-gregorian-datepicker/utils/CustomNgbDateParserFormatter.ts","../../../projects/nuxeo-development-framework/src/lib/components/hijri-gregorian-datepicker/services/date-formatter.service.ts","../../../projects/nuxeo-development-framework/src/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/provide-parent-form.directive.ts","../../../projects/nuxeo-development-framework/src/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/gregorian-datepicker/gregorian-datepicker.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/gregorian-datepicker/gregorian-datepicker.component.html","../../../projects/nuxeo-development-framework/src/lib/components/hijri-gregorian-datepicker/utils/IslamicI18n.ts","../../../projects/nuxeo-development-framework/src/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-datepicker/hijri-datepicker.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-datepicker/hijri-datepicker.component.html","../../../projects/nuxeo-development-framework/src/lib/components/hijri-gregorian-datepicker/utils/consts.ts","../../../projects/nuxeo-development-framework/src/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-gregorian-datepicker.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-gregorian-datepicker.component.html","../../../projects/nuxeo-development-framework/src/lib/components/hijri-gregorian-datepicker/ngx-hijri-gregorian-datepicker.module.ts","../../../projects/nuxeo-development-framework/src/lib/directive/clickOutSide/click-outside.directive.ts","../../../projects/nuxeo-development-framework/src/lib/directive/rtl/set-rtl.directive.ts","../../../projects/nuxeo-development-framework/src/lib/directive/permissions/evaluators.service.ts","../../../projects/nuxeo-development-framework/src/lib/directive/permissions/permissions.directive.ts","../../../projects/nuxeo-development-framework/src/lib/directive/rtl/set-dir-rtl.directive.ts","../../../projects/nuxeo-development-framework/src/lib/directive/app-has-role/app-has-role.directive.ts","../../../projects/nuxeo-development-framework/src/lib/directive/directive.module.ts","../../../projects/nuxeo-development-framework/src/lib/Core/services/callApi/call-api.service.ts","../../../projects/nuxeo-development-framework/src/lib/components/correspondence-relation/services/correspondence-realation.service.ts","../../../projects/nuxeo-development-framework/src/lib/shared/components/search-autocomplete/search-autocomplete.component.ts","../../../projects/nuxeo-development-framework/src/lib/shared/components/search-autocomplete/search-autocomplete.component.html","../../../projects/nuxeo-development-framework/src/lib/shared/components/read-more/read-more.component.ts","../../../projects/nuxeo-development-framework/src/lib/shared/components/user-card/user-card.component.ts","../../../projects/nuxeo-development-framework/src/lib/shared/components/user-card/user-card.component.html","../../../projects/nuxeo-development-framework/src/lib/shared/components/button/button.component.ts","../../../projects/nuxeo-development-framework/src/lib/shared/components/button/button.component.html","../../../projects/nuxeo-development-framework/src/lib/shared/components/no-data/no-data.component.ts","../../../projects/nuxeo-development-framework/src/lib/shared/components/no-data/no-data.component.html","../../../projects/nuxeo-development-framework/src/lib/shared/components/spinner/spinner.component.ts","../../../projects/nuxeo-development-framework/src/lib/shared/components/spinner/spinner.component.html","../../../projects/nuxeo-development-framework/src/lib/Core/utilities/utility.service.ts","../../../projects/nuxeo-development-framework/src/lib/Core/adapters/adapter.service.ts","../../../projects/nuxeo-development-framework/src/lib/components/correspondence-relation/services/viewer-files.service.ts","../../../projects/nuxeo-development-framework/src/lib/shared/components/item-list/item-list.component.ts","../../../projects/nuxeo-development-framework/src/lib/shared/components/item-list/item-list.component.html","../../../projects/nuxeo-development-framework/src/lib/shared/libraryShared.module.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/services/dynamic-form-update.service.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-boolitem/dynamic-form-boolitem.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-boolitem/dynamic-form-boolitem.component.html","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/form-wrappers/base-edit-form/base-edit-form.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-builder/dynamic-form-builder.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-builder/dynamic-form-builder.component.html","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-checkbox-item/dynamic-form-checkbox-item.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-checkbox-item/dynamic-form-checkbox-item.component.html","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-dateitem/dynamic-form-dateitem.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-dateitem/dynamic-form-dateitem.component.html","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-dateitem/owlDateTimeIntl.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-department/constants/department.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-department/services/department-api.service.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select-i18n.ts","../../../projects/nuxeo-development-framework/src/lib/components/custom-toastr/components/custom-toastr/custom-toastr.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/custom-toastr/components/custom-toastr/custom-toastr.component.html","../../../projects/nuxeo-development-framework/src/lib/components/custom-toastr/services/custom-toastr.service.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-textitem/dynamic-form-textitem.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-textitem/dynamic-form-textitem.component.html","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-selectitem/dynamic-form-selectitem.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-selectitem/dynamic-form-selectitem.component.html","../../../projects/nuxeo-development-framework/src/lib/components/vocabulary/services/vocabulary-api.service.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-vocabulary-item/dynamic-form-vocabulary-item.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-vocabulary-item/dynamic-form-vocabulary-item.component.html","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-slide-toggleitem/dynamic-form-slide-toggleitem.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-slide-toggleitem/dynamic-form-slide-toggleitem.component.html","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/department-form/department-form.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/department-form/department-form.component.html","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-department/services/department-management.service.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-treeview-select/dynamic-form-treeview-select.component.html","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.html","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-hijri-dateitem/dynamic-form-hijri-dateitem.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-hijri-dateitem/dynamic-form-hijri-dateitem.component.html","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/directives/dynamic-form-content-proxy.directive.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-mapitem/dynamic-form-mapitem.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-mapitem/dynamic-form-mapitem.component.html","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/services/dynamic-component-mapper.service.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/services/card-item-types.service.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-item-dispatcher/dynamic-form-item-dispatcher.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-options/dynamic-form-options.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-options/dynamic-form-options.component.html","../../../projects/nuxeo-development-framework/src/lib/components/cts-tags/services/tags-api.service.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-select-tag/dynamic-form-select-tag.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-select-tag/dynamic-form-select-tag.component.html","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-select-users/services/user-api.service.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-select-user-filter/dynamic-form-select-user-filter.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-select-user-filter/dynamic-form-select-user-filter.component.html","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-select-users/dynamic-form-select-users.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-select-users/dynamic-form-select-users.component.html","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-textarea/dynamic-form-textarea.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-textarea/dynamic-form-textarea.component.html","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form/fields.adapter.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form/form-builder.service.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form/dynamic-form.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form/dynamic-form.component.html","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.component.html","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.formio.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.component.html","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.formio.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-field/dynamic-form-field.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-field/dynamic-form-field.component.html","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.component.html","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.formio.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-viewer/dynamic-form-viewer.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/components/dynamic-form-viewer/dynamic-form-viewer.component.html","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-form/dynamic-form.module.ts","../../../projects/nuxeo-development-framework/src/lib/components/card/card.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/card/card.component.html","../../../projects/nuxeo-development-framework/src/lib/components/card/card.module.ts","../../../projects/nuxeo-development-framework/src/lib/components/custom-toastr/custom-toastr.module.ts","../../../projects/nuxeo-development-framework/src/lib/components/confirm-caller/confirm-caller.dialog.ts","../../../projects/nuxeo-development-framework/src/lib/components/confirm-caller/confirm-caller.dialog.html","../../../projects/nuxeo-development-framework/src/lib/components/confirm-caller/confirm-dialog/confirm-dialog.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/confirm-caller/confirm-dialog/confirm-dialog.component.html","../../../projects/nuxeo-development-framework/src/lib/components/confirm-caller/confirm-caller.module.ts","../../../projects/nuxeo-development-framework/src/lib/components/pagination/pagination/pagination.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/pagination/pagination/pagination.component.html","../../../projects/nuxeo-development-framework/src/lib/components/pagination/pagination.module.ts","../../../projects/nuxeo-development-framework/src/lib/components/documents/constants/documents.ts","../../../projects/nuxeo-development-framework/src/lib/components/documents/services/documents.service.ts","../../../projects/nuxeo-development-framework/src/lib/components/documents/components/document-list/documents-list.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/documents/components/document-list/documents-list.component.html","../../../projects/nuxeo-development-framework/src/lib/components/documents/components/document-scan/document-scan.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/documents/components/document-scan/document-scan.component.html","../../../projects/nuxeo-development-framework/src/lib/components/documents/components/document-upload/document-upload.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/documents/components/document-upload/document-upload.component.html","../../../projects/nuxeo-development-framework/src/lib/components/documents/components/documents/documents.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/documents/components/documents/documents.component.html","../../../projects/nuxeo-development-framework/src/lib/components/documents/components/attachments-list/attachments-list.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/documents/components/attachments-list/attachments-list.component.html","../../../projects/nuxeo-development-framework/src/lib/components/documents/components/attachments-page-provider/attachments-page-provider.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/documents/components/attachments-page-provider/attachments-page-provider.component.html","../../../projects/nuxeo-development-framework/src/lib/components/documents/documents.module.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-view/data-viewer/data-viewer.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-view/data-viewer/data-viewer.component.html","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-view/boolean-viewer/boolean-viewer.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-view/boolean-viewer/boolean-viewer.component.html","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-view/dropdown-viewer/dropdown-viewer.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-view/dropdown-viewer/dropdown-viewer.component.html","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-view/date-viewer/date-viewer.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-view/date-viewer/date-viewer.component.html","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-view/list-viewer/list-viewer.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-view/list-viewer/list-viewer.component.html","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-view/department-viewer/department-viewer.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-view/department-viewer/department-viewer.component.html","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-view/dynamic-view.module.ts","../../../projects/nuxeo-development-framework/src/lib/components/documents/constants/document-templates.ts","../../../projects/nuxeo-development-framework/src/lib/components/documents/services/document-templates.service.ts","../../../projects/nuxeo-development-framework/src/lib/components/hijri-gregorian-datepicker/services/date-helper.service.ts","../../../projects/nuxeo-development-framework/src/lib/components/table/table/table.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/table/table/table.component.html","../../../projects/nuxeo-development-framework/src/lib/components/table/table.module.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-filter/dynamic-filter/dynamic-filter.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-filter/dynamic-filter/dynamic-filter.component.html","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-filter/dynamic-filter.module.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-table/services/dynamic-table.service.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-table/dynamic-table/dynamic-table.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-table/dynamic-table/dynamic-table.component.html","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-table/dynamic-table.module.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-search/dynamic-search/dynamic-search.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-search/dynamic-search/dynamic-search.component.html","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-search/dynamic-search.module.ts","../../../projects/nuxeo-development-framework/src/lib/components/select/select/select.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/select/select/select.component.html","../../../projects/nuxeo-development-framework/src/lib/components/select/select.module.ts","../../../projects/nuxeo-development-framework/src/lib/components/vocabulary/vocabulary/vocabulary.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/vocabulary/vocabulary/vocabulary.component.html","../../../projects/nuxeo-development-framework/src/lib/components/vocabulary/vocabulary.module.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-chart/services/chart-data.service.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component.html","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-chart/dynamic-single-chart/dynamic-single-chart.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-chart/dynamic-single-chart/dynamic-single-chart.component.html","../../../projects/nuxeo-development-framework/src/lib/components/dynamic-chart/dynamic-chart.module.ts","../../../projects/nuxeo-development-framework/src/lib/components/users-card/users-card.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/users-card/users-card.component.html","../../../projects/nuxeo-development-framework/src/lib/components/users-card/users-card.module.ts","../../../projects/nuxeo-development-framework/src/lib/components/notifications/components/notification-item/notification-item.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/notifications/components/notification-item/notification-item.component.html","../../../projects/nuxeo-development-framework/src/lib/components/notifications/components/notification-options/notification-options.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/notifications/components/notification-options/notification-options.component.html","../../../projects/nuxeo-development-framework/src/lib/components/notifications/components/notification-toast/notification-toast.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/notifications/components/notification-toast/notification-toast.component.html","../../../projects/nuxeo-development-framework/src/lib/components/notifications/notifications.service.ts","../../../projects/nuxeo-development-framework/src/lib/components/notifications/components/notifications-list/notifications-list.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/notifications/components/notifications-list/notifications-list.component.html","../../../projects/nuxeo-development-framework/src/lib/components/notifications/components/notifications-button/notifications-button.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/notifications/components/notifications-button/notifications-button.component.html","../../../projects/nuxeo-development-framework/src/lib/components/notifications/notifications.module.ts","../../../projects/nuxeo-development-framework/src/lib/components/filter/filter/filter.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/filter/filter/filter.component.html","../../../projects/nuxeo-development-framework/src/lib/components/filter/filter.module.ts","../../../projects/nuxeo-development-framework/src/lib/components/comments/components/comment-item/comment-item.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/comments/components/comment-item/comment-item.component.html","../../../projects/nuxeo-development-framework/src/lib/components/comments/constants/comment.ts","../../../projects/nuxeo-development-framework/src/lib/components/comments/services/comment-api.service.ts","../../../projects/nuxeo-development-framework/src/lib/components/comments/components/comments-list/comments-list.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/comments/components/comments-list/comments-list.component.html","../../../projects/nuxeo-development-framework/src/lib/components/comments/components/comments-dashlet/comments-dashlet.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/comments/components/comments-dashlet/comments-dashlet.component.html","../../../projects/nuxeo-development-framework/src/lib/components/comments/comments.module.ts","../../../projects/nuxeo-development-framework/src/lib/components/create-entity/create-entity/create-entity.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/create-entity/create-entity/create-entity.component.html","../../../projects/nuxeo-development-framework/src/lib/components/create-entity/create-entity.module.ts","../../../projects/nuxeo-development-framework/src/lib/components/cts-tags/components/correspondence-tags/correspondence-tags.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/cts-tags/components/correspondence-tags/correspondence-tags.component.html","../../../projects/nuxeo-development-framework/src/lib/components/cts-tags/cts-tags.module.ts","../../../projects/nuxeo-development-framework/src/lib/components/activity/activity/activity.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/activity/activity/activity.component.html","../../../projects/nuxeo-development-framework/src/lib/components/activity/activity.module.ts","../../../projects/nuxeo-development-framework/src/lib/components/latest-activity/components/activity-line/activity-line.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/latest-activity/components/activity-line/activity-line.component.html","../../../projects/nuxeo-development-framework/src/lib/components/latest-activity/constants/activitylog.ts","../../../projects/nuxeo-development-framework/src/lib/components/latest-activity/services/activity-log.service.ts","../../../projects/nuxeo-development-framework/src/lib/components/latest-activity/components/single-activity/single-activity.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/latest-activity/components/single-activity/single-activity.component.html","../../../projects/nuxeo-development-framework/src/lib/components/latest-activity/components/latest-activity/latest-activity.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/latest-activity/components/latest-activity/latest-activity.component.html","../../../projects/nuxeo-development-framework/src/lib/components/latest-activity/latest-activity.module.ts","../../../projects/nuxeo-development-framework/src/lib/components/viewer-log/components/viewer-log/viewer-log.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/viewer-log/components/viewer-log/viewer-log.component.html","../../../projects/nuxeo-development-framework/src/lib/components/viewer-log/viewer-log.module.ts","../../../projects/nuxeo-development-framework/src/lib/components/correspondence-relation/components/correspondence-relation-list/correspondence-relation-list.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/correspondence-relation/components/correspondence-relation-list/correspondence-relation-list.component.html","../../../projects/nuxeo-development-framework/src/lib/components/correspondence-relation/components/correspondence-relation-create-form/correspondence-relation-create-form.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/correspondence-relation/components/correspondence-relation-create-form/correspondence-relation-create-form.component.html","../../../projects/nuxeo-development-framework/src/lib/components/correspondence-relation/components/correspondence-relation-reply/correspondence-relation-reply.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/correspondence-relation/components/correspondence-relation-reply/correspondence-relation-reply.component.html","../../../projects/nuxeo-development-framework/src/lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component.html","../../../projects/nuxeo-development-framework/src/lib/components/correspondence-relation/components/versions/versions.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/correspondence-relation/components/versions/versions.component.html","../../../projects/nuxeo-development-framework/src/lib/components/correspondence-relation/correspondence-relation.module.ts","../../../projects/nuxeo-development-framework/src/lib/components/pdf-tron/pdftron/pdftron.service.ts","../../../projects/nuxeo-development-framework/src/lib/components/pdf-tron/pdftron/pdftron.component.ts","../../../projects/nuxeo-development-framework/src/lib/components/pdf-tron/pdftron/pdftron.component.html","../../../projects/nuxeo-development-framework/src/lib/components/pdf-tron/pdf-tron.module.ts","../../../projects/nuxeo-development-framework/src/lib/Core/services/initialization/initialization.service.ts","../../../projects/nuxeo-development-framework/src/lib/Core/utilities/moment-date-adapter.ts","../../../projects/nuxeo-development-framework/src/public-api.ts","../../../projects/nuxeo-development-framework/src/nuxeo-development-framework.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NuxeoDevelopmentFrameworkService {\r\n\r\n constructor() { }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-nuxeo-development-framework',\r\n template: `\r\n <p>\r\n nuxeo-development-framework works!\r\n </p>\r\n `,\r\n styles: [\r\n ]\r\n})\r\nexport class NuxeoDevelopmentFrameworkComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","export class ComponentTranslationModel {\r\n name: string;\r\n path: string;\r\n json: string [];\r\n\r\n constructor(obj?: any) {\r\n this.name = obj && obj.name;\r\n this.path = obj && obj.path;\r\n this.json = obj && obj.json || [];\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { TranslateLoader } from '@ngx-translate/core';\r\nimport { Observable, forkJoin, throwError, of } from 'rxjs';\r\nimport { ComponentTranslationModel } from '../../models/component.model';\r\nimport { map, catchError, retry } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TranslateLoaderService implements TranslateLoader {\r\n\r\n private prefix: string = 'i18n';\r\n private suffix: string = '.json';\r\n private providers: ComponentTranslationModel[] = [];\r\n private queue: string[][] = [];\r\n private defaultLang: string = 'en';\r\n\r\n constructor(private http: HttpClient) {\r\n }\r\n\r\n setDefaultLang(value: string) {\r\n this.defaultLang = value || 'en';\r\n }\r\n\r\n registerProvider(name: string, path: string) {\r\n const registered = this.providers.find((provider) => provider.name === name);\r\n if (registered) {\r\n registered.path = path;\r\n } else {\r\n this.providers.push(new ComponentTranslationModel({ name: name, path: path }));\r\n }\r\n }\r\n\r\n providerRegistered(name: string): boolean {\r\n return this.providers.find((x) => x.name === name) ? true : false;\r\n }\r\n\r\n fetchLanguageFile(lang: string, component: ComponentTranslationModel, fallbackUrl?: string): Observable<void> {\r\n const translationUrl = fallbackUrl || `${component.path}/${this.prefix}/${lang}${this.suffix}?v=${Date.now()}`;\r\n\r\n return this.http.get(translationUrl).pipe(\r\n map((res: any) => {\r\n component.json[lang] = res;\r\n }),\r\n retry(3),\r\n catchError(() => {\r\n if (!fallbackUrl && lang.includes('-')) {\r\n const [langId] = lang.split('-');\r\n\r\n if (langId && langId !== this.defaultLang) {\r\n const url = `${component.path}/${this.prefix}/${langId}${this.suffix}?v=${Date.now()}`;\r\n\r\n return this.fetchLanguageFile(lang, component, url);\r\n }\r\n }\r\n return throwError(`Failed to load ${translationUrl}`);\r\n })\r\n );\r\n }\r\n\r\n getComponentToFetch(lang: string): Array<Observable<any>> {\r\n const observableBatch = [];\r\n if (!this.queue[lang]) {\r\n this.queue[lang] = [];\r\n }\r\n this.providers.forEach((component) => {\r\n\r\n if (!this.isComponentInQueue(lang, component.name)) {\r\n this.queue[lang].push(component.name);\r\n observableBatch.push(\r\n this.fetchLanguageFile(lang, component)\r\n );\r\n }\r\n });\r\n\r\n return observableBatch;\r\n }\r\n\r\n init(lang: string) {\r\n if (this.queue[lang] === undefined) {\r\n this.queue[lang] = [];\r\n }\r\n }\r\n\r\n isComponentInQueue(lang: string, name: string) {\r\n return (this.queue[lang] || []).find((x) => x === name) ? true : false;\r\n }\r\n\r\n getFullTranslationJSON(lang: string): any {\r\n let result = {};\r\n\r\n this.providers\r\n .slice(0)\r\n .sort((a, b) => {\r\n if (a.name === 'app') {\r\n return 1;\r\n }\r\n if (b.name === 'app') {\r\n return -1;\r\n }\r\n return a.name.localeCompare(b.name);\r\n })\r\n .forEach((model) => {\r\n if (model.json && model.json[lang]) {\r\n result = this.merge(result, model.json[lang]);\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n getTranslation(lang: string): Observable<any> {\r\n let hasFailures = false;\r\n const batch = [\r\n ...this.getComponentToFetch(lang).map((observable) => {\r\n return observable.pipe(\r\n catchError((error) => {\r\n console.warn(error);\r\n hasFailures = true;\r\n return of(error);\r\n })\r\n );\r\n })\r\n ];\r\n\r\n return new Observable((observer) => {\r\n\r\n if (batch.length > 0) {\r\n forkJoin(batch).subscribe(\r\n () => {\r\n const fullTranslation = this.getFullTranslationJSON(lang);\r\n if (fullTranslation) {\r\n observer.next(fullTranslation);\r\n }\r\n if (hasFailures) {\r\n observer.error('Failed to load some resources');\r\n } else {\r\n observer.complete();\r\n }\r\n },\r\n () => {\r\n observer.error('Failed to load some resources');\r\n });\r\n } else {\r\n const fullTranslation = this.getFullTranslationJSON(lang);\r\n if (fullTranslation) {\r\n observer.next(fullTranslation);\r\n observer.complete();\r\n }\r\n }\r\n });\r\n }\r\n\r\n merge(...objects): any {\r\n const result = {};\r\n\r\n objects.forEach((source) => {\r\n Object.keys(source).forEach((prop) => {\r\n if (prop in result && Array.isArray(result[prop])) {\r\n result[prop] = result[prop].concat(source[prop]);\r\n } else if (prop in result && typeof result[prop] === 'object') {\r\n result[prop] = this.merge(result[prop], source[prop]);\r\n } else {\r\n result[prop] = source[prop];\r\n }\r\n });\r\n });\r\n\r\n return result;\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LocalStoragService {\r\n\r\n private memoryStore: { [key: string]: any } = {};\r\n private readonly useLocalStorage: boolean = false;\r\n private _prefix: string = '';\r\n\r\n get prefix() {\r\n return this._prefix;\r\n }\r\n\r\n set prefix(prefix: string) {\r\n this._prefix = prefix ? prefix + '_' : '';\r\n }\r\n\r\n constructor() {\r\n this.useLocalStorage = this.storageAvailable('localStorage');\r\n }\r\n\r\n\r\n /**\r\n * Gets an item.\r\n * @param key Key to identify the item\r\n * @returns The item (if any) retrieved by the key\r\n */\r\n getItem(key: string): string | null {\r\n if (this.useLocalStorage) {\r\n return localStorage.getItem(this.prefix + key);\r\n } else {\r\n return this.memoryStore.hasOwnProperty(this.prefix + key) ? this.memoryStore[this.prefix + key] : null;\r\n }\r\n }\r\n\r\n /**\r\n * Stores an item\r\n * @param key Key to identify the item\r\n * @param data Data to store\r\n */\r\n setItem(key: string, data: string) {\r\n if (this.useLocalStorage) {\r\n localStorage.setItem(this.prefix + key, data);\r\n } else {\r\n this.memoryStore[this.prefix + key] = data.toString();\r\n }\r\n }\r\n\r\n /** Removes all currently stored items. */\r\n clear() {\r\n if (this.useLocalStorage) {\r\n localStorage.clear();\r\n } else {\r\n this.memoryStore = {};\r\n }\r\n }\r\n\r\n /**\r\n * Removes a single item.\r\n * @param key Key to identify the item\r\n */\r\n removeItem(key: string) {\r\n if (this.useLocalStorage) {\r\n localStorage.removeItem(this.prefix + key);\r\n } else {\r\n delete this.memoryStore[this.prefix + key];\r\n }\r\n }\r\n\r\n /**\r\n * Is any item currently stored under `key`?\r\n * @param key Key identifying item to check\r\n * @returns True if key retrieves an item, false otherwise\r\n */\r\n hasItem(key: string): boolean {\r\n if (this.useLocalStorage) {\r\n return localStorage.getItem(this.prefix + key) ? true : false;\r\n } else {\r\n return this.memoryStore.hasOwnProperty(key);\r\n }\r\n }\r\n\r\n private storageAvailable(type: string): boolean {\r\n try {\r\n const storage = window[type];\r\n const key = '__storage_test__';\r\n storage.setItem(key, key);\r\n storage.removeItem(key, key);\r\n return true;\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n getLocal(key: string): any {\r\n const ijsKey = 'cts' + key;\r\n const data = window.localStorage.getItem(ijsKey);\r\n if (data) {\r\n return JSON.parse(data);\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n setLocal(key: string, value: any): void {\r\n const ijsKey = 'cts' + key;\r\n const data = value === undefined ? '' : JSON.stringify(value);\r\n window.localStorage.setItem(ijsKey, data);\r\n }\r\n\r\n removeLocal(key: string): void {\r\n const ijsKey = 'cts' + key;\r\n window.localStorage.removeItem(ijsKey);\r\n }\r\n\r\n removeAllLocals(): void {\r\n for (const key in window.localStorage) {\r\n if (window.localStorage.hasOwnProperty(key)) {\r\n window.localStorage.removeItem(key);\r\n }\r\n }\r\n }\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Observable, BehaviorSubject } from 'rxjs';\r\nimport { distinctUntilChanged, map, filter } from 'rxjs/operators';\r\nimport { LocalStoragService } from '../localStorag/local-storag.service';\r\n\r\nexport enum UserPreferenceValues {\r\n Locale = 'locale',\r\n ExpandedSideNavStatus = 'expandedSidenav'\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserPreferencesService {\r\n\r\n defaults = {\r\n locale: 'en',\r\n expandedSidenav: true\r\n };\r\n\r\n private userPreferenceStatus: any = this.defaults;\r\n private onChangeSubject: BehaviorSubject<any>;\r\n onChange: Observable<any>;\r\n\r\n constructor(public translate: TranslateService,\r\n private storage: LocalStoragService) {\r\n this.onChangeSubject = new BehaviorSubject(this.userPreferenceStatus);\r\n this.onChange = this.onChangeSubject.asObservable();\r\n }\r\n\r\n private initUserPreferenceStatus() {\r\n this.initUserLanguage();\r\n }\r\n\r\n private async initUserLanguage() {\r\n if (this.locale) {\r\n const locale = this.locale || this.getDefaultLocale();\r\n\r\n this.set(UserPreferenceValues.Locale, locale);\r\n this.set('textOrientation', (await this.getLanguageByKey(locale)).dir || 'ltr');\r\n } else {\r\n const locale = this.locale || this.getDefaultLocale();\r\n\r\n this.setWithoutStore(UserPreferenceValues.Locale, locale);\r\n this.setWithoutStore('textOrientation', (await this.getLanguageByKey(locale)).dir || 'ltr');\r\n }\r\n }\r\n\r\n /**\r\n * Sets up a callback to notify when a property has changed.\r\n * @param property The property to watch\r\n * @returns Notification callback\r\n */\r\n select(property: string): Observable<any> {\r\n return this.onChange\r\n .pipe(\r\n map((userPreferenceStatus) => userPreferenceStatus[property]),\r\n distinctUntilChanged()\r\n );\r\n }\r\n\r\n /**\r\n * Gets a preference property.\r\n * @param property Name of the property\r\n * @param defaultValue Default to return if the property is not found\r\n * @returns Preference property\r\n */\r\n get(property: string, defaultValue?: string): string {\r\n const key = this.getPropertyKey(property);\r\n const value = this.storage.getItem(key);\r\n if (value === undefined || value === null) {\r\n return defaultValue;\r\n }\r\n return value;\r\n }\r\n\r\n /**\r\n * Sets a preference property.\r\n * @param property Name of the property\r\n * @param value New value for the property\r\n */\r\n set(property: string, value: any) {\r\n if (!property) {\r\n return;\r\n }\r\n this.storage.setItem(\r\n this.getPropertyKey(property),\r\n value\r\n );\r\n this.userPreferenceStatus[property] = value;\r\n this.onChangeSubject.next(this.userPreferenceStatus);\r\n }\r\n\r\n /**\r\n * Sets a preference property.\r\n * @param property Name of the property\r\n * @param value New value for the property\r\n */\r\n setWithoutStore(property: string, value: any) {\r\n if (!property) {\r\n return;\r\n }\r\n this.userPreferenceStatus[property] = value;\r\n this.onChangeSubject.next(this.userPreferenceStatus);\r\n }\r\n\r\n /**\r\n * Check if an item is present in the storage\r\n * @param property Name of the property\r\n * @returns True if the item is present, false otherwise\r\n */\r\n hasItem(property: string): boolean {\r\n if (!property) {\r\n return false;\r\n }\r\n return this.storage.hasItem(\r\n this.getPropertyKey(property)\r\n );\r\n }\r\n\r\n /**\r\n * Gets the active storage prefix for preferences.\r\n * @returns Storage prefix\r\n */\r\n getStoragePrefix(): string {\r\n return this.storage.getItem('USER_PROFILE') || 'GUEST';\r\n }\r\n\r\n /**\r\n * Sets the active storage prefix for preferences.\r\n * @param value Name of the prefix\r\n */\r\n setStoragePrefix(value: string) {\r\n this.storage.setItem('USER_PROFILE', value || 'GUEST');\r\n this.initUserPreferenceStatus();\r\n }\r\n\r\n /**\r\n * Gets the full property key with prefix.\r\n * @param property The property name\r\n * @returns Property key\r\n */\r\n getPropertyKey(property: string): string {\r\n return `${this.getStoragePrefix()}__${property}`;\r\n }\r\n\r\n\r\n\r\n /** Current locale setting. */\r\n get locale(): string {\r\n return this.get(UserPreferenceValues.Locale);\r\n }\r\n\r\n set locale(value: string) {\r\n this.set(UserPreferenceValues.Locale, value);\r\n }\r\n\r\n /**\r\n * Gets the default locale.\r\n * @returns Default locale language code\r\n */\r\n public getDefaultLocale(): string {\r\n return this.translate.getBrowserCultureLang() || 'en';\r\n }\r\n\r\n private async getLanguageByKey(key: string) {\r\n const translation = await this.translate.getTranslation(key).toPromise();\r\n return translation;\r\n }\r\n}\r\n","export enum Lang {\r\n Arabic = 'ar',\r\n English = 'en'\r\n}\r\n","import { KeycloakService } from \"keycloak-angular\";\r\n\r\nconst Nuxeo = require('nuxeo');\r\nconst doFetch = require('nuxeo/lib/deps/fetch');\r\nconst Unmarshallers = require('nuxeo/lib/unmarshallers/unmarshallers');\r\nconst Authentication = require('nuxeo/lib/auth/auth');\r\nexport class NuxeoOverride extends Nuxeo {\r\n constructor(opts = {}, private keycloak: KeycloakService) {\r\n super(opts);\r\n }\r\n http(opts: any = {}) {\r\n const options = this._computeFetchOptions(opts);\r\n return new this.Promise((resolve, reject) => {\r\n this._activeRequests += 1;\r\n\r\n const fetchOptions: any = {\r\n method: options.method,\r\n headers: options.headers,\r\n body: options.body,\r\n signal: options.signal,\r\n };\r\n if (opts.credentials) {\r\n fetchOptions.credentials = opts.credentials;\r\n } else if (!this._auth) {\r\n fetchOptions.credentials = 'include';\r\n }\r\n\r\n doFetch(options.url, fetchOptions)\r\n .then((res) => {\r\n this._activeRequests -= 1;\r\n if (res.status === 401 && !opts.refreshedAuthentication) {\r\n // try re-authenticate\r\n opts.refreshedAuthentication = true;\r\n return this.keycloak.updateToken()\r\n .then((didRefresh) => {\r\n if (didRefresh) {\r\n this.keycloak.getToken().then(refreshedAuth => {\r\n this._auth = refreshedAuth;\r\n this._notifyAuthenticationRefreshed(refreshedAuth);\r\n return resolve(this.http(opts));\r\n });\r\n } else {\r\n this.keycloak.logout();\r\n throw res;\r\n }\r\n })\r\n .catch(() => {\r\n throw res;\r\n });\r\n }\r\n\r\n if (!(/^2/.test(`${res.status}`))) {\r\n const error = new Error(res);\r\n throw res;\r\n }\r\n\r\n if (options.resolveWithFullResponse || res.status === 204) {\r\n return resolve(res);\r\n }\r\n\r\n const contentType = res.headers.get('content-type');\r\n if (contentType && contentType.indexOf('application/json') === 0) {\r\n options.nuxeo = this;\r\n return resolve(res.json().then((json) => Unmarshallers.unmarshall(json, options, res)));\r\n }\r\n return resolve(res);\r\n }).catch((error) => {\r\n this._activeRequests -= 1;\r\n error.text().then(data => {\r\n let ret = {};\r\n try {\r\n ret = data ? JSON.parse(data) : {};\r\n } catch (e) {\r\n ret = {};\r\n }\r\n return reject({\r\n status: error.status,\r\n ret\r\n });\r\n });\r\n });\r\n });\r\n }\r\n\r\n\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RolesService {\r\n\r\n constructor(@Inject('environment') private environment) { }\r\n\r\n getRoleName(role, code = null): string {\r\n if (this.environment.RolesConstants[role]) {\r\n return code\r\n ? this.environment.RolesConstants[role].replace('{departmentTitle}', code)\r\n : `^${this.environment.RolesConstants[role].replace('{departmentTitle}', '.*.')}$`;\r\n } else {\r\n console.warn(`role: ${role} does not exist in roles config`);\r\n return role;\r\n }\r\n }\r\n\r\n isUserInRole(user, role, code = null): boolean {\r\n let hasRole = false;\r\n const groups = user ? user.extendedGroups || user.groups : [];\r\n if (groups && groups.length > 0) {\r\n if (Array.isArray(role)) {\r\n role.forEach((r) => {\r\n if (\r\n groups.filter((item) => {\r\n if (code) {\r\n return (\r\n (item.name || item) === this.getRoleName(r, code)\r\n );\r\n } else {\r\n const regex = new RegExp(this.getRoleName(r));\r\n return regex.test(item.name || item);\r\n }\r\n }).length > 0\r\n ) {\r\n hasRole = true;\r\n return;\r\n }\r\n });\r\n } else {\r\n hasRole =\r\n groups.filter((item) => {\r\n if (code) {\r\n return (\r\n (item.name || item) === this.getRoleName(role, code)\r\n );\r\n } else {\r\n const regex = new RegExp(this.getRoleName(role));\r\n return regex.test(item.name || item);\r\n }\r\n }).length > 0;\r\n }\r\n }\r\n return hasRole;\r\n }\r\n\r\n getUserRoleName(user, code) {\r\n let found = null;\r\n const groups = user ? user.extendedGroups || user.groups : [];\r\n\r\n if (groups && groups.length) {\r\n Object.keys(this.environment.RolesConstants).forEach((key) => {\r\n const roleWCode = this.environment.RolesConstants[key].replace(\r\n '{departmentTitle}',\r\n code\r\n );\r\n groups.forEach((group) => {\r\n if (group.name || group === roleWCode) {\r\n found = key;\r\n }\r\n });\r\n });\r\n }\r\n return found;\r\n }\r\n\r\n isUserManagerInDepartment(user, code) {\r\n let filteredRoles = Object.values(this.environment.RolesConstants).filter((role : any) =>\r\n role.includes('{departmentTitle}')\r\n );\r\n let departmentRoles = [];\r\n let isUserInDepartment: boolean = false;\r\n const groups = user ? user.extendedGroups || user.groups : [];\r\n if (groups && groups.length) {\r\n filteredRoles.forEach((key : any) => {\r\n const roleWCode = key.replace('{departmentTitle}', code);\r\n departmentRoles.push(roleWCode);\r\n });\r\n }\r\n departmentRoles = departmentRoles.filter((role:string) => {\r\n return role.includes(\"Manager\")\r\n })\r\n groups.forEach((group) => {\r\n const groupName = group.name || group;\r\n const departmentIsIncluded: boolean = departmentRoles.includes(groupName);\r\n if (departmentIsIncluded) {\r\n isUserInDepartment = true;\r\n }\r\n });\r\n return isUserInDepartment;\r\n }\r\n\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport {Inject, Injectable} from '@angular/core';\r\nimport { KeycloakService } from 'keycloak-angular';\r\nimport { from, Observable } from 'rxjs';\r\nimport { catchError, map, share, tap } from 'rxjs/operators';\r\nimport { NuxeoOverride as Nuxeo } from './nuxeo-override';\r\nimport {APP_BASE_HREF} from '@angular/common';\r\nimport { RolesService } from '../roles/roles.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NuxeoService {\r\n nuxeoClient;\r\n excludedUrls = [];\r\n enableBearerInterceptor = true;\r\n authenticated = false;\r\n token;\r\n tokenObservable;\r\n constructor(private http: HttpClient, private keycloak: KeycloakService, \r\n @Inject(APP_BASE_HREF) private baseHref: string, \r\n @Inject('environment') private environment,\r\n private rolesService : RolesService) {\r\n\r\n }\r\n init(): Promise<any> {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n this.keycloak.getToken().then(token => {\r\n\r\n this.createTokenClient(token);\r\n this.nuxeoClient.connect()\r\n .then((client) => {\r\n this.authenticated = true;\r\n resolve(client);\r\n this.checkForRoles();\r\n })\r\n .catch((error) => {\r\n reject(error);\r\n });\r\n\r\n })\r\n } catch (error) {\r\n reject(error);\r\n }\r\n });\r\n\r\n }\r\n createTokenClient(token) {\r\n this.nuxeoClient = new Nuxeo({\r\n baseURL: this.environment.nuxeo,\r\n auth: {\r\n method: 'bearerToken',\r\n token\r\n }\r\n }, this.keycloak);\r\n }\r\n\r\n getToken() {\r\n return this.keycloak.getToken();\r\n }\r\n\r\n doLogout() {\r\n this.keycloak.logout(window.location.origin + this.baseHref);\r\n }\r\n\r\n\r\n isUserInRole(role: any, committeeCode = null): Observable<any> {\r\n const simpleObservable = new Observable(observer => {\r\n this.keycloak.isLoggedIn().then(logged => {\r\n if (!logged) {\r\n observer.next(false);\r\n } else {\r\n const hasRole = this.rolesService.isUserInRole(this.nuxeoClient.user, role, committeeCode);\r\n observer.next(hasRole);\r\n }\r\n\r\n });\r\n });\r\n\r\n return simpleObservable;\r\n }\r\n createBlob(file): any {\r\n return new Nuxeo.Blob({\r\n content: file\r\n });\r\n }\r\n\r\n getDuplicates(params = {}, body = {}): Observable<any> {\r\n return from(\r\n this.nuxeoClient\r\n .operation('AC_Get_Duplicates', {\r\n url: `${this.environment.nuxeo}${this.environment.customAutomation}`,\r\n })\r\n .params(params)\r\n .context(body)\r\n .execute()\r\n ).pipe(\r\n catchError((err) => {\r\n console.log(err);\r\n throw err;\r\n })\r\n );\r\n }\r\n\r\n checkForRoles(){\r\n this.isCtsUser();\r\n this.isCtsManger();\r\n }\r\n\r\n ctsUser = false;\r\n isCtsUser(){\r\n this.isUserInRole('ctsSecretary', '').subscribe(data => {\r\n this.ctsUser = data;\r\n })\r\n }\r\n ctsManger= false;\r\n isCtsManger(){\r\n this.isUserInRole('ctsManger', '').subscribe(data => {\r\n this.ctsManger = data;\r\n })\r\n }\r\n}\r\n","import {\r\n Inject,\r\n Injectable,\r\n InjectionToken,\r\n Optional,\r\n Renderer2,\r\n RendererFactory2,\r\n} from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { BehaviorSubject, forkJoin, from, Observable } from 'rxjs';\r\nimport { TranslateLoaderService } from './translate-loader.service';\r\nimport {\r\n UserPreferencesService,\r\n UserPreferenceValues,\r\n} from '../user/user-preferences.service';\r\nimport { LocalStoragService } from '../localStorag/local-storag.service';\r\nimport { Lang } from '../../enums/language.enum';\r\nimport { NuxeoService } from '../nuxeo/nuxeo.service';\r\nimport { catchError, map } from 'rxjs/operators';\r\n\r\nexport const TRANSLATION_PROVIDER = new InjectionToken(\r\n 'Injection token for translation providers.'\r\n);\r\n\r\nexport interface TranslationProvider {\r\n name: string;\r\n source: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TranslationService {\r\n public arabicFile;\r\n public englishFile;\r\n defaultLang: string;\r\n userLang: string;\r\n customLoader: TranslateLoaderService;\r\n lang: string;\r\n private renderer: Renderer2;\r\n isArabic = new BehaviorSubject<boolean>(false);\r\n isArabic$ = this.isArabic.asObservable();\r\n constructor(\r\n public translate: TranslateService,\r\n private rendererFactory: RendererFactory2,\r\n private localStorage: LocalStoragService,\r\n userPreferencesService: UserPreferencesService,\r\n private nuxeoService: NuxeoService, \r\n @Inject('environment') private environment,\r\n @Optional() @Inject(TRANSLATION_PROVIDER) providers: TranslationProvider[]\r\n ) {\r\n this.customLoader = <TranslateLoaderService>this.translate.currentLoader;\r\n this.renderer = rendererFactory.createRenderer(null, null);\r\n\r\n this.defaultLang = 'en';\r\n translate.setDefaultLang(this.defaultLang);\r\n this.customLoader.setDefaultLang(this.defaultLang);\r\n\r\n if (providers && providers.length > 0) {\r\n for (const provider of providers) {\r\n this.addTranslationFolder(provider.name, provider.source);\r\n }\r\n }\r\n userPreferencesService\r\n .select(UserPreferenceValues.Locale)\r\n .subscribe((locale) => {\r\n if (locale) {\r\n this.userLang = locale.split('-')[0];\r\n }\r\n if (this.userLang) {\r\n this.loadTranslation(this.userLang, this.defaultLang);\r\n } else {\r\n this.loadTranslation(this.defaultLang);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Adds a new folder of translation source files.\r\n * @param name Name for the translation provider\r\n * @param path Path to the folder\r\n */\r\n addTranslationFolder(name: string = '', path: string = '') {\r\n if (!this.customLoader.providerRegistered(name)) {\r\n this.customLoader.registerProvider(name, path);\r\n }\r\n }\r\n\r\n /**\r\n * Loads a translation file.\r\n * @param lang Language code for the language to load\r\n * @param fallback Language code to fall back to if the first one was unavailable\r\n */\r\n loadTranslation(lang: string, fallback?: string) {\r\n if (lang === Lang.Arabic) {\r\n this.renderer.addClass(document.body, 'rtl');\r\n this.isArabic.next(true);\r\n } else {\r\n this.renderer.removeClass(document.body, 'rtl');\r\n this.isArabic.next(false);\r\n }\r\n const arabicFile$ = this.getOrCreateTranslationFile('ar');\r\n const englishFile$ = this.getOrCreateTranslationFile('en');\r\n\r\n forkJoin([\r\n arabicFile$,\r\n englishFile$,\r\n this.translate.getTranslation(lang),\r\n ]).subscribe(\r\n (res: any) => {\r\n this.arabicFile = res[0];\r\n this.englishFile = res[1];\r\n this.translate.use(lang);\r\n let ArorEnFile =\r\n lang === 'en'\r\n ? JSON.parse(res[1].properties['note:note'])\r\n : JSON.parse(res[0].properties['note:note']);\r\n this.translate.setTranslation(\r\n this.translate.currentLang,\r\n { ...ArorEnFile },\r\n true\r\n );\r\n\r\n this.onTranslationChanged(lang);\r\n },\r\n () => {\r\n if (fallback && fallback !== lang) {\r\n this.loadTranslation(fallback);\r\n }\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Triggers a notification callback when the translation language changes.\r\n * @param lang The new language code\r\n */\r\n onTranslationChanged(lang: string): void {\r\n this.translate.onTranslationChange.next({\r\n lang: lang,\r\n translations: this.customLoader.getFullTranslationJSON(lang),\r\n });\r\n }\r\n\r\n /**\r\n * Sets the target language for translations.\r\n * @param lang Code name for the language\r\n * @returns Translations available for the language\r\n */\r\n use(lang: string): Observable<any> {\r\n this.customLoader.init(lang);\r\n return this.translate.use(lang);\r\n }\r\n\r\n /**\r\n * Gets the translation for the supplied key.\r\n * @param key Key to translate\r\n * @param interpolateParams String(s) to be interpolated into the main message\r\n * @returns Translated text\r\n */\r\n get(\r\n key: string | Array<string>,\r\n interpolateParams?: Object\r\n ): Observable<string | any> {\r\n return this.translate.get(key, interpolateParams);\r\n }\r\n\r\n /**\r\n * Directly returns the translation for the supplied key.\r\n * @param key Key to translate\r\n * @param interpolateParams String(s) to be interpolated into the main message\r\n * @returns Translated text\r\n */\r\n instant(\r\n key: string | Array<string>,\r\n interpolateParams?: Object\r\n ): string | any {\r\n return key ? this.translate.instant(key, interpolateParams) : '';\r\n }\r\n\r\n getOrCreateTranslationFile(lang) {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .operation('AC_UA_Translation_GetOrCreate', {\r\n url: `${this.environment.nuxeo}${this.environment.customAutomation}`,\r\n })\r\n .params({ language: lang })\r\n .execute({\r\n headers: {\r\n properties: '*',\r\n },\r\n })\r\n ).pipe(\r\n catchError((err) => {\r\n console.log(err);\r\n throw err;\r\n })\r\n );\r\n }\r\n updateTranslationFile(doc, params = {}) {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .repository()\r\n .headers({\r\n properties: '*',\r\n })\r\n .update(doc, params)\r\n ).pipe(\r\n map((data: any) => {\r\n return data;\r\n }),\r\n catchError((err) => {\r\n throw err;\r\n })\r\n );\r\n }\r\n}\r\n","import { AppConfigService } from '../app-config.service';\r\n\r\nexport function appInitializer(appConfigService : AppConfigService) : Function {\r\n return () => appConfigService.load();\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AppConfigService {\r\n\r\n constructor(private http: HttpClient) { }\r\n myConfiguration;\r\n conditons;\r\n // load my config file from my assets\r\n\r\n load(){\r\n this.http.get('assets/configs/configuration.json').subscribe(res => {\r\n this.myConfiguration = res;\r\n });\r\n this.http.get('assets/configs/conditions.json').subscribe(res => {\r\n this.conditons = res;\r\n })\r\n }\r\n}\r\n","import { CommonModule, registerLocaleData } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { APP_INITIALIZER, NgModule } from '@angular/core';\r\nimport {\r\n TranslateLoader,\r\n TranslateModule,\r\n TranslateService,\r\n TranslateStore,\r\n} from '@ngx-translate/core';\r\nimport { KeycloakAngularModule, KeycloakService } from 'keycloak-angular';\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { NuxeoService } from './services/nuxeo/nuxeo.service';\r\nimport { TranslateLoaderService } from './services/translation/translate-loader.service';\r\nimport { TRANSLATION_PROVIDER } from './services/translation/translation.service';\r\nimport { UserPreferencesService } from './services/user/user-preferences.service';\r\nimport { RxReactiveFormsModule } from '@rxweb/reactive-form-validators';\r\n\r\nimport localeAr from '@angular/common/locales/ar';\r\nimport localeEn from '@angular/common/locales/en';\r\nimport { TreeviewModule } from 'ngx-treeview';\r\nimport { appInitializer } from '../configuration/helpers/app-initializer';\r\nimport { AppConfigService } from '../configuration/app-config.service';\r\nregisterLocaleData(localeAr);\r\nregisterLocaleData(localeEn);\r\n/** @ignore */\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n TreeviewModule.forRoot(),\r\n HttpClientModule,\r\n TranslateModule.forRoot(),\r\n ToastrModule.forRoot({\r\n preventDuplicates: true,\r\n }),\r\n KeycloakAngularModule,\r\n RxReactiveFormsModule\r\n ],\r\n exports: [\r\n TranslateModule,\r\n TreeviewModule,\r\n ToastrModule,\r\n RxReactiveFormsModule\r\n ],\r\n providers: [\r\n TranslateStore,\r\n TranslateService,\r\n { provide: TranslateLoader, useClass: TranslateLoaderService },\r\n {\r\n provide: TRANSLATION_PROVIDER,\r\n multi: true,\r\n useValue: {\r\n name: 'app',\r\n source: 'assets',\r\n },\r\n } ,\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: appInitializer,\r\n deps: [AppConfigService],\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class CoreModule {}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { NuxeoDevelopmentFrameworkComponent } from './nuxeo-development-framework.component';\r\nimport {CommonModule} from '@angular/common';\r\nimport {HttpClientModule} from '@angular/common/http';\r\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\r\nimport {TranslateModule} from '@ngx-translate/core';\r\nimport { CoreModule } from '../lib/Core/core.module';\r\n@NgModule({\r\n declarations: [\r\n NuxeoDevelopmentFrameworkComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n HttpClientModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n TranslateModule,\r\n CoreModule,\r\n ],\r\n exports: [\r\n NuxeoDevelopmentFrameworkComponent,\r\n ]\r\n})\r\nexport class NuxeoDevelopmentFrameworkModule { \r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\r\nimport { map } from 'rxjs/operators';\r\nimport { Observable } from 'rxjs';\r\n\r\n/**\r\n * Transforms URL into async safe URL to be rendered in the view\r\n *\r\n * ### In template example:\r\n * ~~~html\r\n * <!-- in template -->\r\n * <img [attr.src]=\"user.avatar | secure | async\" />\r\n * ~~~\r\n * @title\r\n * Safe URL\r\n */\r\n@Pipe({\r\n name: 'secure'\r\n})\r\nexport class SecurePipe implements PipeTransform {\r\n\r\n constructor(private http: HttpClient, private sanitizer: DomSanitizer) { }\r\n\r\n /**\r\n *\r\n * @param url Resource URL\r\n * @returns Safe URL\r\n */\r\n transform(url): Observable<SafeUrl> {\r\n return this.http\r\n .get(url, { responseType: 'blob' }).pipe(\r\n map(val => this.sanitizer.bypassSecurityTrustUrl(URL.createObjectURL(val)))\r\n );\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n/**\r\n * A component to display user avatar if exists, or initials if not\r\n *\r\n * ![Screenshot-1](../screenshots/avatar1.png) ![Screenshot-2](../screenshots/avatar2.png)\r\n * @title\r\n * User Avatar\r\n * @example\r\n *\r\n * <cts-avatar [user]=\"user\"></cts-avatar>\r\n */\r\n@Component({\r\n selector: 'cts-avatar',\r\n templateUrl: './avatar.component.html',\r\n styleUrls: ['./avatar.component.scss']\r\n})\r\nexport class AvatarComponent implements OnInit {\r\n /** Nuxeo user object */\r\n @Input() user: any;\r\n backgroundColor;\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.stringToHslColor(`${this.user?.properties?.firstName} ${this.user?.properties?.lastName}`, 30, 80);\r\n }\r\n\r\n stringToHslColor(str, s, l) {\r\n var hash = 0;\r\n for (var i = 0; i < str.length; i++) {\r\n hash = str.charCodeAt(i) + ((hash << 5) - hash);\r\n }\r\n\r\n var h = hash % 360;\r\n this.backgroundColor = 'hsl(' + h + ', ' + s + '%, ' + l + '%)';\r\n }\r\n\r\n getInitials(): string {\r\n return this.user?.properties\r\n ? (this.user.properties.initials = [\r\n this.user.properties.firstName\r\n ? this.user.properties.firstName[0].toUpperCase()\r\n : '',\r\n this.user.properties.lastName\r\n ? this.user.properties.lastName[0].toUpperCase()\r\n : '',\r\n ].join(''))\r\n : '';\r\n }\r\n}\r\n","<div class=\"avatar-wrapper\">\r\n <ng-container *ngIf=\"user?.avatar?.length; else initials\">\r\n <img *ngIf=\"user.avatar | secure | async as obs; else initials\" [attr.src]=\"obs\" alt=\"user image\" />\r\n </ng-container>\r\n\r\n <ng-template #initials>\r\n <div class=\"avatar-name \" [ngStyle]=\"{ 'background-color': backgroundColor }\">\r\n <span>{{\r\n this.getInitials()\r\n }}</span>\r\n </div>\r\n </ng-template>\r\n</div>\r\n","import { DatePipe } from '@angular/common';\r\nimport { OnDestroy, Pipe, PipeTransform } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { UserPreferencesService, UserPreferenceValues } from '../core/services/user/user-preferences.service';\r\n\r\n/**\r\n * Transforms date to localized date string\r\n *\r\n * ### In template example:\r\n * ~~~html\r\n * <!-- in template -->\r\n * <p>\r\n * {{ dateObject | localizedDate: \"EEEE, MMMM dd, yyyy\" }}\r\n * </p>\r\n * ~~~\r\n * @title\r\n * Localized Date\r\n *\r\n * @example\r\n * ...\r\n * constructor(... private LocalizedDatePipe: localizedDatePipe ...){\r\n * const localizedDateString = this.localizedDatePipe.transform(dateObject, 'EEEE, MMMM dd, yyyy');\r\n * }\r\n * ...\r\n */\r\n@Pipe({\r\n name: 'localizedDate',\r\n pure: false\r\n})\r\nexport class LocalizedDatePipe implements PipeTransform, OnDestroy {\r\n\r\n static DEFAULT_LOCALE = 'en-US';\r\n static DEFAULT_DATE_FORMAT = 'dd MMMM yyyy hh:mm a';\r\n\r\n defaultLocale: string = LocalizedDatePipe.DEFAULT_LOCALE;\r\n defaultFormat: string = LocalizedDatePipe.DEFAULT_DATE_FORMAT;\r\n\r\n private onDestroy$ = new Subject<boolean>();\r\n\r\n constructor(public userPreferenceService?: UserPreferencesService) {\r\n\r\n if (this.userPreferenceService) {\r\n this.userPreferenceService\r\n .select(UserPreferenceValues.Locale)\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe(locale => {\r\n if (locale) {\r\n this.defaultLocale = locale;\r\n }\r\n });\r\n }\r\n\r\n\r\n }\r\n /**\r\n *\r\n * @param value date object\r\n * @param format format\r\n * @param locale locale to convert to\r\n * @returns localized date string\r\n */\r\n transform(value: any, format?: string, locale?: string): any {\r\n try {\r\n const actualFormat = format || this.defaultFormat;\r\n const actualLocale = locale || this.defaultLocale;\r\n const datePipe: DatePipe = new DatePipe(actualLocale);\r\n return datePipe.transform(value, actualFormat, 'GMT+3');\r\n } catch (e) {\r\n console.warn(e);\r\n return value;\r\n }\r\n }\r\n /** @ignore */\r\n ngOnDestroy(): any {\r\n this.onDestroy$.next(true);\r\n this.onDestroy$.complete();\r\n }\r\n\r\n}\r\n","import { DomSanitizer } from '@angular/platform-browser';\r\nimport { PipeTransform, Pipe } from '@angular/core';\r\n\r\n\r\n/**\r\n * Transforms html string into safe html to be rendered in the view\r\n *\r\n * ### In template example:\r\n * ~~~html\r\n * <!-- in template -->\r\n * <span [innerHTML]=\"htmlString | safeHtml\"></span>\r\n * ~~~\r\n * @title\r\n * Safe HTML\r\n */\r\n@Pipe({ name: 'safeHtml' })\r\nexport class SafeHtmlPipe implements PipeTransform {\r\n constructor(private sanitized: DomSanitizer) { }\r\n /**\r\n *\r\n * @param value HTML String\r\n * @returns Safe HTML\r\n */\r\n transform(value): any {\r\n return this.sanitized.bypassSecurityTrustHtml(value);\r\n }\r\n}\r\n","\r\nimport { OnDestroy, Pipe, PipeTransform } from '@angular/core';\r\nimport moment from 'moment-es6';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { UserPreferencesService, UserPreferenceValues } from '../core/services/user/user-preferences.service';\r\n\r\n/**\r\n * Converts date into how long time ago string\r\n *\r\n * ### In template example:\r\n * ~~~html\r\n * <!-- in template -->\r\n * <span>{{ dateObject | timeAgo }}</span>\r\n * ~~~\r\n * @title\r\n * Time Ago\r\n */\r\n@Pipe({\r\n name: 'timeAgo'\r\n})\r\nexport class TimeAgoPipe implements PipeTransform, OnDestroy {\r\n\r\n static DEFAULT_LOCALE = 'en-US';\r\n static DEFAULT_DATE_TIME_FORMAT = 'dd/MM/yyyy HH:mm';\r\n\r\n defaultLocale: string;\r\n defaultDateTimeFormat: string;\r\n\r\n private onDestroy$ = new Subject<boolean>();\r\n\r\n constructor(public userPreferenceService: UserPreferencesService) {\r\n this.userPreferenceService\r\n .select(UserPreferenceValues.Locale)\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe(locale => {\r\n this.defaultLocale = locale || TimeAgoPipe.DEFAULT_LOCALE;\r\n });\r\n this.defaultDateTimeFormat = TimeAgoPipe.DEFAULT_DATE_TIME_FORMAT;\r\n }\r\n /**\r\n *\r\n * @param value date object\r\n * @param locale locale to be transformed to\r\n * @returns Time ago string (15 minutes ago)\r\n */\r\n transform(value: Date, locale?: string) {\r\n if (value !== null && value !== undefined) {\r\n const actualLocale = locale || this.defaultLocale;\r\n const then = moment(value);\r\n //const diff = moment().locale(actualLocale).diff(then, 'days');\r\n return then.locale(actualLocale).fromNow();\r\n // if ( diff > 7) {\r\n // const datePipe: DatePipe = new DatePipe(actualLocale);\r\n // return datePipe.transform(value, this.defaultDateTimeFormat);\r\n // } else {\r\n // return then.locale(actualLocale).fromNow();\r\n // }\r\n }\r\n return '';\r\n }\r\n\r\n /** @ignore */\r\n ngOnDestroy(): any {\r\n this.onDestroy$.next(true);\r\n this.onDestroy$.complete();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n/**\r\n * Transforms array of strings to single string seperated with seperator\r\n *\r\n * ### In template example:\r\n * ~~~html\r\n * <!-- in template -->\r\n * <p>{{ ['string 1','string 2', 'string 3'] | multiValue : {valueSeparator:', '}}}</p>\r\n * ~~~\r\n * @title\r\n * Multi Value\r\n *\r\n * @example\r\n * ...\r\n * constructor(... private MultiValuePipe: multiValuePipe ...){\r\n * const MultiValueString = this.multiValuePipe.transform(['string 1','string 2', 'string 3'], ', ');\r\n * }\r\n * ...\r\n */\r\n@Pipe({ name: 'multiValue' })\r\nexport class MultiValuePipe implements PipeTransform {\r\n\r\n static DEFAULT_SEPARATOR = ', ';\r\n\r\n /**\r\n *\r\n * @param values array of strings\r\n * @param valueSeparator seperator to place between elements\r\n * @returns the joining of all array items seperated with seperator\r\n */\r\n transform(values: any | any[], valueSeparator: string = MultiValuePipe.DEFAULT_SEPARATOR): string {\r\n\r\n if (values && values instanceof Array) {\r\n return values.join(valueSeparator);\r\n }\r\n\r\n return values;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { TranslationService } from '../core/services/translation/translation.service';\r\n\r\n/**\r\n * transforms file size into translated appropriate units\r\n *\r\n * ### In template example:\r\n * ~~~html\r\n * <!-- in template -->\r\n * <p>{{ file.sizeInBytes | FileSize}}</p>\r\n * ~~~\r\n * @title\r\n * File Size\r\n *\r\n * @example\r\n * ...\r\n * constructor(... private FileSizePipe: fileSizePiple ...){\r\n * const sizeString = this.fileSizePiple.transform(sizeInBytes);\r\n * }\r\n * ...\r\n */\r\n@Pipe({\r\n name: 'FileSize',\r\n pure: false\r\n})\r\nexport class FileSizePipe implements PipeTransform {\r\n\r\n constructor(private translation: TranslationService) {\r\n }\r\n\r\n /**\r\n *\r\n * @param paramByte Size in Bytes\r\n * @optional @param decimals Decimals to show\r\n * @returns translated size string\r\n */\r\n transform(paramByte: any, decimals: number = 2): string {\r\n if (paramByte == null) {\r\n return '';\r\n }\r\n\r\n const bytes = parseInt(paramByte, 10);\r\n if (isNaN(bytes)) {\r\n return '';\r\n }\r\n\r\n if (bytes === 0) {\r\n return '0 ' + this.translation.instant('FILE_SIZE.BYTES');\r\n }\r\n\r\n const k = 1024,\r\n dm = decimals || 2,\r\n sizes = ['BYTES', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],\r\n i = Math.floor(Math.log(bytes) / Math.log(k));\r\n\r\n const i18nSize = this.translation.instant(`FILE_SIZE.${sizes[i]}`);\r\n\r\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + i18nSize;\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport * as moment_ from 'moment-hijri';\r\n\r\n/**\r\n * Transforms and formats date into hijri\r\n *\r\n * ### In template example:\r\n * ~~~html\r\n * <!-- in template -->\r\n * <p>{{ dateObject | hijriDate : {format:'iYYYY iMMMM iD'}}}</p>\r\n * ~~~\r\n * @title\r\n * Hijri Date\r\n *\r\n * @example\r\n * ...\r\n * constructor(... private HijriDatePipe: hijriDatePipe ...){\r\n * const formattedHijriDate = this.hijriDatePipe.transform(dateObject, 'iYYYY iMMMM iD');\r\n * }\r\n * ...\r\n */\r\n@Pipe({\r\n name: 'hijriDate'\r\n})\r\nexport class HijriDatePipe implements PipeTransform {\r\n\r\n defaultFormat=\"iYYYY iMMMM iD\";\r\n /**\r\n *\r\n * @param value Date object\r\n * @param format Format\r\n * @returns formatted hijri date string\r\n */\r\n transform(value: any, format?: string): any {\r\n const actualFormat = format || this.defaultFormat;\r\n const m = moment_(value , 'iYYYY/iM/iD'); // Parse a Hijri date.\r\n return m.format(\"iD iMMMM iYYYY\");\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SecurePipe } from './secure.pipe';\r\nimport { LocalizedDatePipe } from './localized-date.pipe';\r\nimport { SafeHtmlPipe } from './secure-html.pipe';\r\nimport { TimeAgoPipe } from './time-ago.pipe';\r\nimport { MultiValuePipe } from './multi-value.pipe';\r\nimport { FileSizePipe } from './file-size.pipe';\r\nimport { HijriDatePipe } from './hijri-date.pipe';\r\n/**\r\n * @title\r\n * Pipes Module\r\n */\r\n@NgModule({\r\n declarations: [SecurePipe, LocalizedDatePipe, SafeHtmlPipe, TimeAgoPipe, MultiValuePipe, FileSizePipe, HijriDatePipe],\r\n imports: [CommonModule],\r\n exports: [SecurePipe, LocalizedDatePipe, SafeHtmlPipe, TimeAgoPipe, MultiValuePipe, FileSizePipe, HijriDatePipe],\r\n providers: [TimeAgoPipe, MultiValuePipe],\r\n})\r\nexport class PipesModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AvatarComponent } from './avatar/avatar.component';\r\nimport { PipesModule } from '../../pipes/pipes.module';\r\n\r\n\r\n/**\r\n * @title\r\n * Avatar Module\r\n */\r\n@NgModule({\r\n declarations: [AvatarComponent],\r\n imports: [\r\n CommonModule,\r\n PipesModule\r\n ],\r\n exports: [\r\n AvatarComponent\r\n ]\r\n})\r\nexport class AvatarModule { }\r\n","import { NgbDateParserFormatter, NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';\r\nimport { DatePipe } from '@angular/common';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class CustomNgbDateParserFormatter extends NgbDateParserFormatter {\r\n datePipe = new DatePipe('en-US');\r\n constructor() {\r\n super();\r\n }\r\n format(date: NgbDateStruct): string {\r\n if (date === null) {\r\n return '';\r\n }\r\n try {\r\n return this.datePipe.transform(new Date(date.year, date.month - 1, date.day), 'd/M/yyyy');\r\n } catch (e) {\r\n return '';\r\n }\r\n }\r\n parse(value: string): NgbDateStruct {\r\n let returnVal: NgbDateStruct;\r\n if (!value) {\r\n returnVal = null;\r\n } else {\r\n try {\r\n let dateParts = this.datePipe.transform(value, 'M-d-y').split('-');\r\n returnVal = { year: parseInt(dateParts[2]), month: parseInt(dateParts[0]), day: parseInt(dateParts[1]) };\r\n } catch (e) {\r\n returnVal = null;\r\n }\r\n }\r\n return returnVal;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { NgbDateStruct, NgbDateParserFormatter, NgbDate } from '@ng-bootstrap/ng-bootstrap';\r\n\r\nimport * as momentjs from 'moment';\r\nconst moment = momentjs;\r\n\r\n\r\nimport * as moment_ from 'moment-hijri';\r\nconst momentHijri = moment_;\r\n\r\n@Injectable()\r\nexport class DateFormatterService {\r\n\r\n constructor(private parserFormatter: NgbDateParserFormatter) { }\r\n\r\n ToString(date: NgbDateStruct): string {\r\n const dateStr = this.parserFormatter.format(date);\r\n return dateStr;\r\n }\r\n\r\n ToHijriDateStruct(hijriDate: string, format: string): NgbDate {\r\n\r\n const hijriMomentDate = momentHijri(hijriDate , format); // Parse a Hijri date based on format.\r\n\r\n const day = hijriMomentDate.iDate();\r\n const month = +hijriMomentDate.iMonth() + 1 ;\r\n const year = hijriMomentDate.iYear();\r\n\r\n const ngDate = new NgbDate(+year, month, +day);\r\n return ngDate;\r\n }\r\n\r\n\r\n ToGregorianDateStruct(gregorianDate: string, format: string): NgbDate {\r\n\r\n const momentDate = moment(gregorianDate, format); // Parse a Gregorian date based on format.\r\n\r\n const day = momentDate.date();\r\n const month = +momentDate.month() + 1;\r\n const year = momentDate.year();\r\n\r\n const ngDate = new NgbDate(+year, +month, +day);\r\n return ngDate;\r\n }\r\n\r\n ToHijri(date: NgbDateStruct): NgbDateStruct {\r\n if (!date) {\r\n return null;\r\n }\r\n const dateStr = this.ToString(date);\r\n\r\n const momentDate = momentHijri(dateStr, 'D/M/YYYY');\r\n\r\n const day = momentDate.iDate();\r\n const month = +momentDate.iMonth() + 1 ;\r\n const year = momentDate.iYear();\r\n\r\n const ngDate = new NgbDate(+year, month, +day);\r\n return ngDate;\r\n }\r\n\r\n ToGregorian(date: NgbDateStruct) {\r\n if (!date) {\r\n return null;\r\n }\r\n\r\n const dateStr = this.ToString(date);\r\n\r\n const momentDate = momentHijri(dateStr, 'iD/iM/iYYYY');\r\n\r\n const day = momentDate.locale('en').format('D');\r\n const month = momentDate.locale('en').format('M') ;\r\n const year = momentDate.locale('en').format('Y');\r\n\r\n const ngDate = new NgbDate(+year, +month, +day);\r\n return ngDate;\r\n }\r\n\r\n GetTodayHijri(): NgbDateStruct {\r\n\r\n const todayHijri = momentHijri().locale('en').format('iYYYY/iM/iD');\r\n\r\n return this.ToHijriDateStruct(todayHijri, 'iYYYY/iM/iD') ;\r\n\r\n }\r\n\r\n GetTodayGregorian(): NgbDateStruct {\r\n\r\n const todayGregorian = moment().locale('en').format('YYYY/M/D');\r\n\r\n return this.ToGregorianDateStruct(todayGregorian, 'YYYY/M/D') ;\r\n }\r\n\r\n}\r\n","import { Directive, Optional, SkipSelf } from '@angular/core';\r\nimport { ControlContainer, NgForm } from '@angular/forms';\r\n\r\nexport function test(form: NgForm) {\r\n return form;\r\n}\r\n\r\n/** @ignore */\r\n@Directive({\r\n selector: '[provideParentForm]',\r\n providers: [\r\n {\r\n provide: ControlContainer,\r\n useFactory: test ,\r\n deps: [[new Optional(), new SkipSelf(), NgForm]]\r\n }\r\n]\r\n})\r\nexport class ProvideParentFormDirective {\r\n\r\n constructor() { }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { NgbCalendar, NgbDate, NgbDateParserFormatter, NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'gregorian-date-picker',\r\n templateUrl: './gregorian-datepicker.component.html',\r\n styleUrls: [\r\n './gregorian-date-picker.component.scss'\r\n ],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class GregorianDatepickerComponent {\r\n\r\n @ViewChild('d') datePicker: any;\r\n\r\n @Input() selectedDate: any;\r\n @Output() selectedDateChange: EventEmitter<any> = new EventEmitter();\r\n\r\n @Input() readonly = false;\r\n @Input() isRequired = false;\r\n @Input() disabled = false;\r\n @Input() min: NgbDateStruct;\r\n @Input() max: NgbDateStruct;\r\n @Input() name: string;\r\n @Input() range = false;\r\n @Input() vertical = false;\r\n hoveredDate: NgbDate | null = null;\r\n fromDate;\r\n toDate;\r\n @Input() placeHolder: string;\r\n\r\n constructor(public calendar: NgbCalendar, public formatter: NgbDateParserFormatter) {\r\n // this.selectedDate.from = calendar.getToday();\r\n }\r\n\r\n isHovered(date: NgbDate) {\r\n return this.selectedDate && (this.selectedDate.from && !this.selectedDate.to && this.hoveredDate && date.after(this.selectedDate.from) && date.before(this.hoveredDate));\r\n }\r\n\r\n isInside(date: NgbDate) {\r\n return this.selectedDate && (this.selectedDate.to && date.after(this.selectedDate.from) && date.before(this.selectedDate.to));\r\n }\r\n\r\n isRange(date: NgbDate) {\r\n if (this.range) {\r\n return this.selectedDate && (date.equals(this.selectedDate.from) || (this.selectedDate.to && date.equals(this.selectedDate.to)) || this.isInside(date) || this.isHovered(date));\r\n } else {\r\n return false;\r\n }\r\n }\r\n isSelectedDate(date) {\r\n return this.selectedDate && !this.range && date.equals(this.selectedDate);\r\n }\r\n isToday(date) {\r\n return date.equals(this.calendar.getToday());\r\n }\r\n onDateSelection(date) {\r\n if (this.range) {\r\n if (!this.selectedDate.from && !this.selectedDate.to) {\r\n this.selectedDate.from = date;\r\n } else if (this.selectedDate.from && !this.selectedDate.to && date && date.after(this.selectedDate.from)) {\r\n this.selectedDate.to = date;\r\n } else {\r\n this.selectedDate.to = null;\r\n this.selectedDate.from = date;\r\n }\r\n if (this.selectedDate.from && this.selectedDate.to) {\r\n\r\n this.selectedDateChange.emit(this.selectedDate);\r\n\r\n }\r\n } else {\r\n this.selectedDateChange.emit(this.selectedDate);\r\n }\r\n }\r\n validateInput(currentValue: NgbDate | null, input: string): NgbDate | null {\r\n const parsed = this.formatter.parse(input);\r\n return parsed && this.calendar.isValid(NgbDate.from(parsed)) ? NgbDate.from(parsed) : currentValue;\r\n }\r\n onBlur() {\r\n if (!this.selectedDate) {\r\n this.selectedDateChange.emit(null);\r\n }\r\n }\r\n\r\n clear() {\r\n this.selectedDate = this.range ? { from: undefined, to: undefined } : undefined;\r\n this.datePicker.close();\r\n this.selectedDateChange.emit(null);\r\n }\r\n\r\n}\r\n","<div provideParentForm>\r\n <input class=\"form-control\" [ngClass]=\"{'hidden':range, 'input-filled' : selectedDate}\" [ngModel]=\"!range && selectedDate\"\r\n (ngModelChange)=\"!range && selectedDate=$event\"\r\n [placeholder]=\"placeHolder ?placeHolder : 'd/M/yyyy'\" ngbDatepicker (click)=\"d.toggle()\"\r\n (dateSelect)=\"onDateSelection($event)\" #d=\"ngbDatepicker\" firstDayOfWeek=\"7\" [readonly]=\"readonly\"\r\n [autoClose]=\"range ? 'outside' : true\" [minDate]=\"min\" [maxDate]=\"max\" [required]=\"isRequired\"\r\n [displayMonths]=\"range ? 2 : 1\" [name]=\"name\" [startDate]=\"range ? selectedDate.from! : selectedDate!\" [dayTemplate]=\"t\"\r\n (blur)=\"onBlur()\" [footerTemplate]=\"footerTemplate\" [disabled]=\"disabled\" />\r\n <ng-container *ngIf=\"range\">\r\n <div class=\"form-group ranger\" [ngClass]=\"{'vertical':vertical}\">\r\n <div class=\"input-group\">\r\n <input #dpFromDate class=\"form-control\" (click)=\"d.toggle()\" [placeholder]=\"placeHolder ?placeHolder : 'd/M/yyyy'\" name=\"dpFromDate\"\r\n [value]=\"formatter.format(selectedDate.from)\" (input)=\"fromDate = validateInput(selectedDate.from, dpFromDate.value)\">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary\" (click)=\"d.toggle()\" type=\"button\">\r\n <i class=\"bi bi-calendar-week icon\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group ranger\" [ngClass]=\"{'vertical':vertical}\">\r\n <div class=\"input-group\">\r\n <input #dpToDate class=\"form-control\" (click)=\"d.toggle()\" [placeholder]=\"placeHolder ?placeHolder : 'd/M/yyyy'\" name=\"dpToDate\"\r\n [value]=\"formatter.format(selectedDate.to)\" (input)=\"selectedDate.to = validateInput(selectedDate.to, dpToDate.value)\">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary\" (click)=\"d.toggle()\" type=\"button\">\r\n <i class=\"bi bi-calendar-week icon\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n<ng-template #t let-date let-focused=\"focused\">\r\n <span class=\"custom-day\" [class.focused]=\"focused || isToday(date)\" [class.range]=\"isRange(date) || isSelectedDate(date)\"\r\n [class.faded]=\"isHovered(date) || (isInside(date) && range)\" (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\">\r\n {{ date.day }}\r\n </span>\r\n</ng-template>\r\n\r\n\r\n<ng-template #footerTemplate>\r\n <hr class=\"my-0\">\r\n <button class=\"btn btn-secondary btn-sm m-2 float-right\" type=\"button\" (click)=\"d.close()\">Close</button>\r\n <button class=\"btn btn-primary btn-sm m-2 float-left\" type=\"button\" (click)=\"clear()\">Clear</button>\r\n</ng-template>\r\n","import { Injectable } from '@angular/core';\r\nimport { NgbDatepickerI18n, NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';\r\n\r\nconst WEEKDAYS = ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'];\r\nconst MONTHS = ['محرم', 'صفر', 'ربيع الأول', 'ربيع الآخر', 'جمادى الأولى', 'جمادى الآخرة', 'رجب', 'شعبان', 'رمضان', 'شوال',\r\n 'ذو القعدة', 'ذو الحجة'];\r\n\r\n@Injectable()\r\nexport class IslamicI18n extends NgbDatepickerI18n {\r\n\r\n getWeekdayShortName(weekday: number) {\r\n return WEEKDAYS[weekday - 1];\r\n }\r\n\r\n getMonthShortName(month: number) {\r\n return MONTHS[month - 1];\r\n }\r\n\r\n getMonthFullName(month: number) {\r\n return MONTHS[month - 1];\r\n }\r\n\r\n getDayAriaLabel(date: NgbDateStruct): string {\r\n return `${date.day}-${date.month}-${date.year}`;\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { NgbCalendar, NgbCalendarIslamicUmalqura, NgbDate, NgbDateParserFormatter, NgbDatepickerI18n, NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';\r\nimport { IslamicI18n } from '../../utils/IslamicI18n';\r\n\r\n@Component({\r\n selector: 'hijri-date-picker',\r\n templateUrl: './hijri-datepicker.component.html',\r\n providers: [\r\n { provide: NgbCalendar, useClass: NgbCalendarIslamicUmalqura },\r\n { provide: NgbDatepickerI18n, useClass: IslamicI18n }\r\n ],\r\n styleUrls: [\r\n './hijri-date-picker.component.scss'\r\n ],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class HijriDatepickerComponent {\r\n\r\n\r\n @ViewChild('d') datePicker: any;\r\n\r\n @Input() selectedDate;\r\n @Output() selectedDateChange: EventEmitter<any> = new EventEmitter();\r\n\r\n @Input() readonly = false;\r\n @Input() isRequired = false;\r\n @Input() disabled = false;\r\n @Input() min: NgbDateStruct;\r\n @Input() max: NgbDateStruct;\r\n @Input() name: string;\r\n @Input() range = false;\r\n @Input() vertical = false;\r\n hoveredDate: NgbDate | null = null;\r\n fromDate;\r\n toDate;\r\n @Input() placeHolder: string;\r\n\r\n constructor(public calendar: NgbCalendar, public formatter: NgbDateParserFormatter) {\r\n // this.fromDate = calendar.getToday();\r\n }\r\n\r\n isHovered(date: NgbDate) {\r\n return this.selectedDate && (this.selectedDate.from && !this.selectedDate.to && this.hoveredDate && date.after(this.selectedDate.from) && date.before(this.hoveredDate));\r\n }\r\n\r\n isInside(date: NgbDate) {\r\n return this.selectedDate && (this.selectedDate.to && date.after(this.selectedDate.from) && date.before(this.selectedDate.to));\r\n }\r\n\r\n isRange(date: NgbDate) {\r\n return this.selectedDate && (date.equals(this.selectedDate.from) || (this.selectedDate.to && date.equals(this.selectedDate.to)) || this.isInside(date) || this.isHovered(date));\r\n }\r\n onDateSelection(date) {\r\n if (this.range) {\r\n if (!this.selectedDate.from && !this.selectedDate.to) {\r\n this.selectedDate.from = date;\r\n } else if (this.selectedDate.from && !this.selectedDate.to && date && date.after(this.selectedDate.from)) {\r\n this.selectedDate.to = date;\r\n } else {\r\n this.selectedDate.to = null;\r\n this.selectedDate.from = date;\r\n }\r\n if (this.selectedDate.from && this.selectedDate.to) {\r\n\r\n this.selectedDateChange.emit(this.selectedDate);\r\n\r\n }\r\n } else {\r\n this.selectedDateChange.emit(this.selectedDate);\r\n }\r\n }\r\n validateInput(currentValue: NgbDate | null, input: string): NgbDate | null {\r\n const parsed = this.formatter.parse(input);\r\n return parsed && this.calendar.isValid(NgbDate.from(parsed)) ? NgbDate.from(parsed) : currentValue;\r\n }\r\n onBlur() {\r\n if (!this.selectedDate) {\r\n this.selectedDateChange.emit(null);\r\n }\r\n }\r\n\r\n clear() {\r\n this.selectedDate = this.range ? { from: undefined, to: undefined } : undefined;\r\n this.datePicker.close();\r\n this.selectedDateChange.emit(null);\r\n }\r\n}\r\n","<div provideParentForm>\r\n <input class=\"form-control\" [ngClass]=\"{'hidden':range, 'input-filled' : selectedDate}\" [ngModel]=\"!range && selectedDate\"\r\n (ngModelChange)=\"!range && selectedDate=$event\"\r\n [placeholder]=\"placeHolder ?placeHolder : 'd/M/yyyy'\" ngbDatepicker (click)=\"d.toggle()\"\r\n (dateSelect)=\"onDateSelection($event)\" #d=\"ngbDatepicker\" firstDayOfWeek=\"7\" [readonly]=\"readonly\"\r\n [autoClose]=\"range ? 'outside' : true\" [minDate]=\"min\" [maxDate]=\"max\" [required]=\"isRequired\"\r\n [displayMonths]=\"range ? 2 : 1\" [name]=\"name\" [startDate]=\"range ? selectedDate.from! : selectedDate!\" [dayTemplate]=\"t\"\r\n (blur)=\"onBlur()\" [footerTemplate]=\"footerTemplate\" [disabled]=\"disabled\" />\r\n <ng-container *ngIf=\"range\">\r\n <div class=\"form-group ranger\" [ngClass]=\"{'vertical':vertical}\">\r\n <div class=\"input-group\">\r\n <input #dpFromDate class=\"form-control\" (click)=\"d.toggle()\" [placeholder]=\"placeHolder ?placeHolder : 'd/M/yyyy'\" name=\"dpFromDate\"\r\n [value]=\"formatter.format(selectedDate.from)\" (input)=\"fromDate = validateInput(selectedDate.from, dpFromDate.value)\">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary\" (click)=\"d.toggle()\" type=\"button\">\r\n <i class=\"bi bi-calendar-week icon\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group ranger\" [ngClass]=\"{'vertical':vertical}\">\r\n <div class=\"input-group\">\r\n <input #dpToDate class=\"form-control\" (click)=\"d.toggle()\" [placeholder]=\"placeHolder ?placeHolder : 'd/M/yyyy'\" name=\"dpToDate\"\r\n [value]=\"formatter.format(selectedDate.to)\" (input)=\"selectedDate.to = validateInput(selectedDate.to, dpToDate.value)\">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary\" (click)=\"d.toggle()\" type=\"button\">\r\n <i class=\"bi bi-calendar-week icon\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n<ng-template #t let-date let-focused=\"focused\">\r\n <span class=\"custom-day\" [class.focused]=\"focused && range\" [class.range]=\"isRange(date) && range\"\r\n [class.faded]=\"isHovered(date) || (isInside(date) && range)\" (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\">\r\n {{ date.day }}\r\n </span>\r\n</ng-template>\r\n\r\n\r\n<ng-template #footerTemplate>\r\n <hr class=\"my-0\">\r\n <button class=\"btn btn-secondary btn-sm m-2 float-right\" type=\"button\" (click)=\"d.close()\">Close</button>\r\n <button class=\"btn btn-primary btn-sm m-2 float-left\" type=\"button\" (click)=\"clear()\">Clear</button>\r\n</ng-template>\r\n","export class DateType {\r\n public static Hijri = 1;\r\n public static Gregorian = 2;\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter, ViewChild, OnChanges } from '@angular/core';\r\nimport { NgbDateStruct, NgbDatepicker } from '@ng-bootstrap/ng-bootstrap';\r\n\r\nimport * as momentjs from 'moment';\r\nconst moment = momentjs;\r\n\r\n\r\nimport * as moment_ from 'moment-hijri';\r\nimport { NgForm, ControlContainer } from '@angular/forms';\r\nimport { DateType } from '../utils/consts';\r\nimport { DateFormatterService } from '../services/date-formatter.service';\r\nconst momentHijri = moment_;\r\n\r\n\r\n@Component({\r\n selector: 'hijri-gregorian-datepicker',\r\n templateUrl: './hijri-gregorian-datepicker.component.html'\r\n})\r\nexport class HijriGregorianDatepickerComponent implements OnInit,OnChanges {\r\n\r\n @ViewChild('d') datePicker: any;\r\n\r\n\r\n @Input() selectedDateType: DateType;\r\n @Input() selectedDate;\r\n @Output() selectedDateChange: EventEmitter<NgbDateStruct> = new EventEmitter();\r\n\r\n @Input() label: string;\r\n @Input() showLabel = true;\r\n\r\n\r\n @Input() readonly = false;\r\n @Input() isRequired = false;\r\n @Input() disabled = false;\r\n @Input() disabledbtn = false \r\n\r\n @Input() minHijri: NgbDateStruct;\r\n @Input() maxHijri: NgbDateStruct;\r\n @Input() minGreg: NgbDateStruct;\r\n @Input() maxGreg: NgbDateStruct;\r\n\r\n @Input() hijriLabel: string;\r\n @Input() GregLabel: string;\r\n\r\n @Input() placeHolder: string;\r\n @Input() range = false;\r\n @Input() vertical = false;\r\n\r\n get DateType() {\r\n return DateType;\r\n }\r\n\r\n constructor(private dateFormatterService: DateFormatterService) { }\r\n\r\n ngOnInit() {\r\n setTimeout(() => {\r\n // this.selectedDate = null;\r\n }, 5000);\r\n if (!this.selectedDateType) {\r\n this.selectedDateType = DateType.Hijri;\r\n }\r\n }\r\n ngOnChanges() {\r\n if (this.range && !this.selectedDate) {\r\n this.selectedDate = { from: undefined, to: undefined };\r\n }\r\n }\r\n\r\n close() {\r\n this.datePicker.close();\r\n }\r\n\r\n clear() {\r\n this.selectedDate = undefined;\r\n this.close();\r\n this.selectedDateChange.emit(null);\r\n }\r\n getSelectedDate(): any {\r\n\r\n if (this.range) {\r\n let formattedFrom = this.dateFormatterService.ToString(this.selectedDate.from);\r\n let formattedTo = this.dateFormatterService.ToString(this.selectedDate.to);\r\n\r\n if (this.selectedDateType == DateType.Hijri) {\r\n\r\n return {\r\n from: momentHijri(formattedFrom, 'iD/iM/iYYYY').locale('en').format(),\r\n to: momentHijri(formattedTo, 'iD/iM/iYYYY').locale('en').format()\r\n };\r\n }\r\n\r\n if (this.selectedDateType == DateType.Gregorian) {\r\n return {\r\n from: moment(formattedFrom, 'D/M/YYYY').locale('en').format(),\r\n to: moment(formattedTo, 'D/M/YYYY').locale('en').format()\r\n };\r\n\r\n }\r\n } else {\r\n let formattedDate = this.dateFormatterService.ToString(this.selectedDate);\r\n\r\n if (this.selectedDateType == DateType.Hijri) {\r\n return momentHijri(formattedDate, 'iD/iM/iYYYY').locale('en').format();\r\n }\r\n\r\n if (this.selectedDateType == DateType.Gregorian) {\r\n return moment(formattedDate, 'D/M/YYYY').locale('en').format();\r\n }\r\n }\r\n }\r\n\r\n dateSelected(value) {\r\n if (this.range) {\r\n this.selectedDate = value;\r\n }\r\n this.selectedDateChange.emit(this.selectedDate);\r\n }\r\n\r\n hijriClick() {\r\n if (this.selectedDateType == DateType.Hijri) {\r\n return;\r\n }\r\n this.selectedDateType = DateType.Hijri;\r\n //to hijri\r\n if (this.range) {\r\n this.selectedDate = {\r\n from: this.dateFormatterService.ToHijri(this.selectedDate.from || null),\r\n to: this.dateFormatterService.ToHijri(this.selectedDate.to || null)\r\n };\r\n } else {\r\n this.selectedDate = this.dateFormatterService.ToHijri(this.selectedDate);\r\n\r\n }\r\n this.selectedDateChange.emit(this.selectedDate);\r\n }\r\n gregClick() {\r\n if (this.selectedDateType == DateType.Gregorian) {\r\n return;\r\n }\r\n this.selectedDateType = DateType.Gregorian;\r\n //to Gregorian\r\n if (this.range) {\r\n this.selectedDate = {\r\n from: this.dateFormatterService.ToGregorian(this.selectedDate.from || null),\r\n to: this.dateFormatterService.ToGregorian(this.selectedDate.to || null)\r\n };\r\n } else {\r\n this.selectedDate = this.dateFormatterService.ToGregorian(this.selectedDate);\r\n }\r\n this.selectedDateChange.emit(this.selectedDate);\r\n }\r\n}\r\n","<div class=\"form-group\" provideParentForm>\r\n <label class=\"requiredInput\" *ngIf=\"showLabel\" for=\"input-birth-Date\">{{ label }} </label>\r\n\r\n <div class=\"input-group\">\r\n <gregorian-date-picker [vertical]=\"vertical\" *ngIf=\"selectedDateType == DateType.Gregorian\" [range]=\"range\"\r\n [(selectedDate)]=\"selectedDate\" (selectedDateChange)=\"dateSelected($event)\" [readonly]=\"readonly\" [min]=\"minGreg\"\r\n [max]=\"maxGreg\" style=\"flex: 1 1 auto;\" [name]=\"label\" [isRequired]=\"isRequired\" [placeHolder]=\"placeHolder\"\r\n [disabled]=\"disabled\">\r\n </gregorian-date-picker>\r\n <hijri-date-picker [vertical]=\"vertical\" *ngIf=\"selectedDateType == DateType.Hijri\" [range]=\"range\"\r\n [(selectedDate)]=\"selectedDate\" (selectedDateChange)=\"dateSelected($event)\" [readonly]=\"readonly\" [min]=\"minHijri\"\r\n [max]=\"maxHijri\" style=\"flex: 1 1 auto;\" [name]=\"label\" [isRequired]=\"isRequired\" [placeHolder]=\"placeHolder\"\r\n [disabled]=\"disabled\">\r\n </hijri-date-picker>\r\n\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-sm {{selectedDateType == DateType.Hijri ? 'btn-info focus active' : 'btn-outline-info'}}\"\r\n (click)=\"hijriClick()\" [disabled]=\"disabledbtn\" type=\"button\">\r\n {{hijriLabel ? hijriLabel : 'Hijri' }}\r\n </button>\r\n <button\r\n class=\"btn btn-sm {{selectedDateType == DateType.Gregorian ? 'btn-info focus active' : 'btn-outline-info'}}\"\r\n (click)=\"gregClick()\" [disabled]=\"disabledbtn\" type=\"button\">\r\n {{GregLabel ? GregLabel : 'Gregorian' }}\r\n </button>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { NgbDateParserFormatter, NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { CustomNgbDateParserFormatter } from './utils/CustomNgbDateParserFormatter';\r\nimport { DateFormatterService } from './services/date-formatter.service';\r\nimport { GregorianDatepickerComponent } from './hijri-gregorian-datepicker/gregorian-datepicker/gregorian-datepicker.component';\r\nimport { HijriDatepickerComponent } from './hijri-gregorian-datepicker/hijri-datepicker/hijri-datepicker.component';\r\nimport { HijriGregorianDatepickerComponent } from './hijri-gregorian-datepicker/hijri-gregorian-datepicker.component';\r\nimport { ProvideParentFormDirective } from './hijri-gregorian-datepicker/provide-parent-form.directive';\r\n\r\n\r\n/** @ignore */\r\n@NgModule({\r\n declarations: [\r\n HijriGregorianDatepickerComponent,\r\n HijriDatepickerComponent,\r\n GregorianDatepickerComponent,\r\n ProvideParentFormDirective\r\n ],\r\n imports: [\r\n CommonModule ,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n NgbModule\r\n ],\r\n providers: [\r\n {provide: NgbDateParserFormatter, useClass: CustomNgbDateParserFormatter},\r\n DateFormatterService\r\n ],\r\n exports: [ HijriGregorianDatepickerComponent]\r\n})\r\nexport class NgxHijriGregorianDatepickerModule { }\r\n","import { Directive, ElementRef, EventEmitter, HostListener, Output } from '@angular/core';\r\n\r\n/** @ignore */\r\n@Directive({\r\n selector: '[clickOutside]'\r\n})\r\nexport class ClickOutsideDirective {\r\n\r\n @Output() public clickOutside = new EventEmitter<void>();\r\n\r\n constructor(private elementRef: ElementRef) { }\r\n\r\n @HostListener('window:click', ['$event.target']) onClick(target) {\r\n const clickedInside = this.elementRef.nativeElement.contains(target);\r\n if (!clickedInside) {\r\n this.clickOutside.emit(target);\r\n }\r\n }\r\n\r\n}\r\n","import { Directive, ElementRef, Renderer2 } from '@angular/core';\r\nimport { TranslationService } from '../../Core/services/translation/translation.service';\r\n\r\n/** @ignore */\r\n\r\n@Directive({\r\n selector: '[SetRtl]',\r\n})\r\nexport class SetRtlDirective {\r\n constructor(\r\n private elRef: ElementRef,\r\n private renderer: Renderer2,\r\n private translation: TranslationService\r\n ) {\r\n this.switchClassBasedOnLanguage();\r\n }\r\n\r\n /*Switch rtl class based on the chosen language from Translation Service*/\r\n switchClassBasedOnLanguage() {\r\n this.translation.isArabic.subscribe((arabic) => {\r\n arabic\r\n ? this.renderer.addClass(this.elRef.nativeElement, 'rtl')\r\n : this.renderer.removeClass(this.elRef.nativeElement, 'rtl');\r\n });\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { first } from \"rxjs/operators\";\r\nimport {\r\n NuxeoService,\r\n} from '../../Core/services/nuxeo/nuxeo.service';\r\n@Injectable({ providedIn: \"root\" })\r\nexport class EvaluatorsService {\r\n \r\n constructor(private nuxeoService: NuxeoService) {}\r\n asyncEvery = async (arr, predicate) => {\r\n for (let e of arr) {\r\n if (!await predicate(e)) { return false; }\r\n }\r\n return true;\r\n }\r\n asyncSome = async (arr, predicate) => {\r\n for (let e of arr) {\r\n if (await predicate(e)) { return true; }\r\n }\r\n return false;\r\n };\r\n // tslint:disable-next-line:member-ordering\r\n evaluators = {\r\n AND: async (context, args: any[]): Promise<boolean> => {\r\n if (!args || args.length === 0) {\r\n return false;\r\n }\r\n return await this.asyncEvery(args, async (arg) => {\r\n const evaluator = await context.getEvaluator(arg.value);\r\n if (!evaluator) {\r\n console.warn('evaluator not found: ' + arg.value);\r\n return false;\r\n }\r\n return await evaluator(context, (arg.parameters || []));\r\n });\r\n },\r\n OR: async (context, args: any[]): Promise<boolean> => {\r\n if (!args || args.length === 0) {\r\n return false;\r\n }\r\n return await this.asyncSome\r\n (args, async (arg) => {\r\n const evaluator = await context.getEvaluator(arg.value);\r\n if (!evaluator) {\r\n console.warn('evaluator not found: ' + arg.value);\r\n return false;\r\n }\r\n const res = await evaluator(context, (arg.parameters || []));\r\n return res;\r\n });\r\n },\r\n isStatus: async (context, args) => {\r\n if (args.indexOf(context.entity.state) > -1) {\r\n return true\r\n } else {\r\n return false\r\n }\r\n },\r\n isCreator: async (context, args) => {\r\n //check if user loged in is the creator of that corresp\r\n let owner;\r\n if (context.entity.properties.owner?.properties?.username) {\r\n owner = context.entity.properties.owner?.properties?.username;\r\n } else if (\r\n context.entity.properties['corr:owner']?.properties?.username\r\n ) {\r\n owner = context.entity.properties['corr:owner']?.properties?.username;\r\n } else if (context.entity.properties.owner) {\r\n owner = context.entity.properties.owner;\r\n } else if (context.entity.properties['corr:owner']) {\r\n owner = context.entity.properties['corr:owner'];\r\n }\r\n\r\n if (owner === context.user.properties.username) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n },\r\n isUserInrole : async (context, args) => {\r\n const result = await this.nuxeoService\r\n .isUserInRole(args, '')\r\n .pipe(first())\r\n .toPromise();\r\n return result;\r\n }\r\n };\r\n\r\n\r\n getEvaluator = async (key: string) => {\r\n const eva = this.evaluators;\r\n if (key && key.startsWith(\"!\")) {\r\n const fn = eva[key.substring(1)];\r\n return async (context, args): Promise<boolean> => {\r\n const result = await fn(context, ...args);\r\n return !result;\r\n };\r\n }\r\n return eva[key];\r\n };\r\n\r\n setEvaluators(evaluators) {\r\n this.evaluators = { ...this.evaluators, ...evaluators };\r\n }\r\n getEvaluators() {\r\n return this.evaluators;\r\n }\r\n}\r\n","import { Directive, ElementRef, Input, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { first , switchMap} from 'rxjs/operators';\r\n import { AppConfigService } from '../../configuration/app-config.service';\r\nimport { NuxeoService } from '../../Core/services/nuxeo/nuxeo.service';\r\n\r\nimport { EvaluatorsService } from './evaluators.service';\r\n/**\r\n * Permission directive shows or hides an element,\r\n * based on a predefined structured condition object in the [conditions.json]{@link ../additional-documentation/conditions-file.html} file.\r\n * it will evaluate the rule and shows or hides an element based on the result.\r\n * this directive can evaluate rules against a document object as well,\r\n * check [conditions.json]{@link ../additional-documentation/conditions-file.html} for more information\r\n * @example\r\n * <div *permission=\"{ name: 'conditionKey', entity: nuxeoDocumentObject }\">\r\n * Element with permissions\r\n * </duv>\r\n * <div *permission=\"{ name: 'conditionKey2' }\">\r\n * Element with permissions 2\r\n * </duv>\r\n * @title\r\n * Permission\r\n */\r\n@Directive({\r\n selector: '[permission]'\r\n})\r\nexport class PermissionsDirective implements OnInit {\r\n\r\n\r\n constructor(private nuxeoService: NuxeoService, private eltRef: ElementRef, private viewContainerRef: ViewContainerRef,\r\n private templateRef: TemplateRef<any>, private appConfigService : AppConfigService,\r\n private evaluatorsService : EvaluatorsService,\r\n \r\n\r\n ) {\r\n\r\n\r\n }\r\n /** permission object */\r\n @Input() permission;\r\n conditions;\r\n\r\n isVisible = false;\r\n context = { entity: null, getEvaluator: null, user: null };\r\n \r\n getEvaluator = async (key: string) => {\r\n const eva = this.evaluatorsService.evaluators;\r\n if (key && key.startsWith('!')) {\r\n const fn = eva[key.substring(1)];\r\n return async (context, args): Promise<boolean> => {\r\n const result = await fn(context, ...args);\r\n return !result;\r\n };\r\n }\r\n return eva[key];\r\n }\r\n\r\n ngOnInit() {\r\n this.getAllRules();\r\n this.context.getEvaluator = this.evaluatorsService.getEvaluator;\r\n if (!this.permission.name) {\r\n\r\n if (!this.isVisible) {\r\n this.isVisible = true;\r\n this.viewContainerRef.createEmbeddedView(this.templateRef);\r\n }\r\n } else {\r\n this.context.entity = this.permission.entity;\r\n this.context.user = this.permission.user || this.nuxeoService.nuxeoClient.user;\r\n this.evaluateRule(this.permission.name, this.context).then((result) => {\r\n if (result) {\r\n if (!this.isVisible) {\r\n this.isVisible = true;\r\n this.viewContainerRef.createEmbeddedView(this.templateRef);\r\n }\r\n } else {\r\n this.isVisible = false;\r\n this.viewContainerRef.clear();\r\n }\r\n });\r\n }\r\n }\r\n\r\n async evaluateRule(ruleId, context?): Promise<boolean> {\r\n const ruleRef = this.getRuleById(ruleId);\r\n context = context || this.context;\r\n\r\n if (ruleRef) {\r\n const evaluator = await this.evaluatorsService.getEvaluator(ruleRef.type);\r\n if (evaluator) {\r\n return await evaluator(context, ruleRef.parameters);\r\n }\r\n } else {\r\n const evaluator = await this.evaluatorsService.getEvaluator(ruleId);\r\n if (evaluator) {\r\n return await evaluator(context);\r\n }\r\n }\r\n }\r\n\r\n getRuleById(id: string) {\r\n return this.conditions[id] ? { ...this.conditions[id] } : null;\r\n }\r\n\r\n getAllRules() {\r\n this.conditions = this.appConfigService.conditons;\r\n \r\n }\r\n\r\n}\r\n","import { Directive, ElementRef, Renderer2 } from '@angular/core';\r\nimport { TranslationService } from '../../Core/services/translation/translation.service';\r\n\r\n/** @ignore */\r\n\r\n@Directive({\r\n selector: '[SetDirRtl]',\r\n})\r\nexport class SetDirRtlDirective {\r\n constructor(\r\n private elRef: ElementRef,\r\n private renderer: Renderer2,\r\n private translation: TranslationService\r\n ) {\r\n this.switchDirBasedOnLanguage();\r\n }\r\n\r\n switchDirBasedOnLanguage() {\r\n this.translation.isArabic.subscribe((arabic) => {\r\n arabic\r\n ? this.renderer.setAttribute(this.elRef.nativeElement, 'dir', 'rtl')\r\n : this.renderer.setAttribute(this.elRef.nativeElement, 'dir', 'ltr');\r\n });\r\n }\r\n}\r\n","import {\n Directive,\n Input,\n OnChanges,\n OnInit,\n TemplateRef,\n ViewContainerRef\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { NuxeoService } from '../../Core/services/nuxeo/nuxeo.service';\n@Directive({\n selector: '[appHasRole]'\n})\nexport class AppHasRoleDirective implements OnInit, OnChanges {\n /** the role the user must have */\n @Input() appHasRole;\n\n stop$ = new Subject();\n\n isVisible = false;\n\n constructor(\n private viewContainerRef: ViewContainerRef,\n private templateRef: TemplateRef<any>,\n private nuxeoService: NuxeoService\n ) { }\n\n ngOnInit(): void {\n if (this.appHasRole?.role) {\n this.nuxeoService.isUserInRole(this.appHasRole.role, this.appHasRole.code).subscribe(data => {\n if (data || !this.appHasRole) {\n // If it is already visible (which can happen if\n // his roles changed) we do not need to add it a second time\n if (!this.isVisible) {\n // We update the `isVisible` property and add the\n // templateRef to the view using the\n // 'createEmbeddedView' method of the viewContainerRef\n this.isVisible = true;\n this.viewContainerRef.createEmbeddedView(this.templateRef);\n }\n } else {\n // If the user does not have the role,\n // we update the `isVisible` property and clear\n // the contents of the viewContainerRef\n this.isVisible = false;\n this.viewContainerRef.clear();\n }\n });\n } else {\n if (!this.isVisible) {\n // We update the `isVisible` property and add the\n // templateRef to the view using the\n // 'createEmbeddedView' method of the viewContainerRef\n this.isVisible = true;\n this.viewContainerRef.createEmbeddedView(this.templateRef);\n }\n }\n }\n ngOnChanges(){\n this.ngOnInit();\n }\n}\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ClickOutsideDirective } from './clickOutSide/click-outside.directive';\r\nimport { SetRtlDirective } from './rtl/set-rtl.directive';\r\nimport { PermissionsDirective } from './permissions/permissions.directive';\r\nimport { SetDirRtlDirective } from './rtl/set-dir-rtl.directive';\r\nimport { TranslationService } from '../core/services/translation/translation.service';\r\nimport { AppHasRoleDirective } from '../directive/app-has-role/app-has-role.directive';\r\n\r\n/**\r\n * @title\r\n * Directives Module\r\n */\r\n@NgModule({\r\n declarations: [\r\n ClickOutsideDirective,\r\n SetRtlDirective,\r\n PermissionsDirective,\r\n SetDirRtlDirective,\r\n AppHasRoleDirective,\r\n ],\r\n imports: [CommonModule],\r\n exports: [\r\n ClickOutsideDirective,\r\n SetRtlDirective,\r\n PermissionsDirective,\r\n SetDirRtlDirective, \r\n AppHasRoleDirective\r\n ],\r\n providers: [TranslationService]\r\n})\r\nexport class DirectiveModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { from, Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { NuxeoService } from '../nuxeo/nuxeo.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class CallApiService {\r\n constructor(private nuxeoService: NuxeoService) {}\r\n\r\n query(queryOptions, options): Observable<any> {\r\n return this.inerQuery(queryOptions, options);\r\n }\r\n\r\n private inerQuery(queryOptions, options): Observable<any> {\r\n return from(\r\n this.nuxeoService.nuxeoClient.repository().query(queryOptions, options)\r\n ).pipe(\r\n map((res: any) => {\r\n if (res.entries.length > 0) {\r\n res.entries.forEach((data) => {\r\n delete data._nuxeo;\r\n delete data._repository;\r\n });\r\n }\r\n return res;\r\n })\r\n );\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { from, Observable, ReplaySubject } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { AppConfigService } from '../../../configuration/app-config.service';\r\nimport { AdapterService } from '../../../Core/adapters/adapter.service';\r\nimport { CallApiService } from '../../../Core/services/callApi/call-api.service';\r\nimport { NuxeoService } from '../../../Core/services/nuxeo/nuxeo.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n })\r\n export class CorrespondenceRelationService {\r\n relationConstants : any ;\r\n public getUpdatedRelation = new ReplaySubject();\r\n incomingConstant;\r\n constructor(\r\n private nuxeoService: NuxeoService,\r\n private configService: AppConfigService,\r\n private callApi: CallApiService, @Inject('environment') private environment\r\n ) {\r\n this.relationConstants = this.configService.myConfiguration['files']['correspondenceRelation'];\r\n this.incomingConstant =\r\n this.configService.myConfiguration.correspondance.incoming;\r\n }\r\n\r\n get_Correspondence_Relation(corr_id,pageprovider,context = {}){\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .operation(pageprovider, {\r\n url: `${this.environment.nuxeo}${this.environment.customAutomation}`,\r\n })\r\n .context(context)\r\n .input(corr_id)\r\n .execute({\r\n headers: {\r\n properties: '*',\r\n },\r\n })\r\n ).pipe(\r\n catchError((err) => {\r\n console.log(err);\r\n throw err;\r\n })\r\n );\r\n }\r\n get_Correspondence_Reply_Relation(corr_id) : Observable<any>{\r\n return this.get_Correspondence_Relation(corr_id,this.relationConstants['Operations']['get_reply_relation'], {\"relationName\" : \"reply\"});\r\n }\r\n\r\n \r\n get_Correspondence_Reply_Relation_Reverse(corr_id) : Observable<any>{\r\n return this.get_Correspondence_Relation(corr_id,this.relationConstants['Operations']['get_reply_relation_reverse']);\r\n}\r\n\r\n get_Correspondence_Relation_WithoutReply(corr_id) : Observable<any>{\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .operation(this.relationConstants['Operations']['get_without_reply_both_direction'], {\r\n url: `${this.environment.nuxeo}${this.environment.customAutomation}`,\r\n })\r\n .context({})\r\n .input(corr_id)\r\n .execute()\r\n ).pipe(\r\n catchError((err) => {\r\n console.log(err);\r\n throw err;\r\n })\r\n );\r\n }\r\n\r\n create_Named_Relation(corr_id : string,relationname : string,targets : []) : Observable<any>{\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .operation(this.relationConstants['Operations']['create_named_relation'], {\r\n url: `${this.environment.nuxeo}${this.environment.customAutomation}`,\r\n })\r\n .context({\r\n relationName : relationname,\r\n targets: targets\r\n })\r\n .input(corr_id)\r\n .execute()\r\n ).pipe(\r\n catchError((err) => {\r\n console.log(err);\r\n throw err;\r\n })\r\n );\r\n }\r\n\r\n Delete_Named_Relation(corr_id : string,relationname : string,target : string) : Observable<any>{\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .operation(this.relationConstants['Operations']['delete_named_relation'], {\r\n url: `${this.environment.nuxeo}${this.environment.customAutomation}`,\r\n })\r\n .context({\r\n relationName : relationname,\r\n target: target\r\n })\r\n .input(corr_id)\r\n .execute()\r\n ).pipe(\r\n catchError((err) => {\r\n console.log(err);\r\n throw err;\r\n })\r\n );\r\n}\r\n\r\nsearch(val: string,query : any = ''): Observable<any> {\r\n return this.callApi\r\n .query(\r\n {\r\n pageProvider: 'PP_Correspondences_Elastic',\r\n currentPageIndex: 0,\r\n offset: 0,\r\n pageSize: 1000,\r\n system_fulltext: val,\r\n ...query\r\n },\r\n {\r\n headers: { 'X-NXproperties': '*' },\r\n }\r\n )\r\n .pipe(\r\n map((data) => {\r\n let results = [];\r\n data.entries.map((item) => {\r\n results.push({\r\n // title: item.title,\r\n title: item.properties[\"corr:referenceNumber\"] !== null ? item.properties[\"corr:referenceNumber\"] + \" - \" + item.properties[\"corr:subject\"] : item.properties[\"corr:subject\"],\r\n id: item.uid,\r\n filter: item.title,\r\n number: item.properties[\"corr:referenceNumber\"],\r\n subject: item.properties[\"corr:subject\"]\r\n });\r\n });\r\n return results;\r\n })\r\n );\r\n}\r\n }","import {\r\n Component, EventEmitter, Input, OnInit, Output, ViewChild, ViewEncapsulation,\r\n Optional,\r\n Self,OnChanges,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\r\nimport { CorrespondenceRelationService } from '../../../components/correspondence-relation/services/correspondence-realation.service';\r\n\r\n/** Auto complete dropdown component\r\n * @title\r\n * Search Autocomplete\r\n */\r\n@Component({\r\n selector: 'cts-search-autocomplete',\r\n templateUrl: './search-autocomplete.component.html',\r\n styleUrls: ['./search-autocomplete.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class SearchAutocompleteComponent implements ControlValueAccessor, OnChanges {\r\n\r\n @ViewChild(SearchAutocompleteComponent)\r\n searchautocomplete: SearchAutocompleteComponent;\r\n\r\n loading = false;\r\n target: any = {};\r\n @ViewChild('auto') auto;\r\n /** placeholder for the input */\r\n @Input() placeholder;\r\n /** label for the input */\r\n @Input() label;\r\n /** id of correspondance that should be exluded */\r\n @Input()\r\n correspondanceId;\r\n /** event emitter that will fire with selected item info when an item is selected */\r\n @Output() onSelecting = new EventEmitter();\r\n\r\n // function related to value accessor\r\n propagateChange: any = () => { };\r\n validateFn: any = () => { };\r\n public onTouched: any = () => {\r\n /*Empty*/\r\n };\r\n\r\n public get invalid(): boolean {\r\n return this.control ? this.control.invalid : false;\r\n }\r\n\r\n public get showError(): boolean {\r\n if (!this.control) {\r\n return false;\r\n }\r\n\r\n const { dirty, touched } = this.control;\r\n\r\n return this.invalid ? dirty || touched : false;\r\n }\r\n writeValue(value) {\r\n if (value) {\r\n this.target = value;\r\n this.auto.query = this.target?.title;\r\n }\r\n }\r\n\r\n registerOnChange(fn) {\r\n this.propagateChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any) {\r\n this.onTouched = fn;\r\n }\r\n\r\n validate(c: FormControl) {\r\n return this.validateFn(c);\r\n }\r\n isRequired() {\r\n if (!this.control || !this.control.control.validator) {\r\n return false;\r\n }\r\n\r\n const validator = this.control.control.validator({} as AbstractControl);\r\n return validator && validator.required;\r\n }\r\n hasErrors(): boolean {\r\n return this.showError;\r\n }\r\n reset() {\r\n this.inputCleared();\r\n this.searchautocomplete.reset();\r\n }\r\n\r\n constructor(private corressvc: CorrespondenceRelationService,\r\n @Self() @Optional() public control: NgControl\r\n ) {\r\n this.control.valueAccessor = this;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.correspondanceId = this.correspondanceId;\r\n console.log('id', this.correspondanceId);\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n /**ng-Autocomplete related functions */\r\n alwaysopened: boolean = false;\r\n inputCleared() {\r\n this.documentList = [];\r\n this.auto.close();\r\n this.target = {};\r\n this.propagateChange();\r\n this.onSelecting.emit();\r\n }\r\n\r\n selectItem(item) {\r\n this.target = item;\r\n this.propagateChange(item);\r\n this.onSelecting.emit(item);\r\n\r\n }\r\n isLoading: boolean = false;\r\n documentList: any[] = [];\r\n\r\n onSearchInputChange(val: string) {\r\n if (val?.length == 0) {\r\n return;\r\n }\r\n this.corressvc\r\n .search(val, {\r\n Correspondence_requireReply: true,\r\n Correspondence_replied: false,\r\n })\r\n .subscribe((data) => {\r\n this.documentList = data.filter((correspondance) => {\r\n if (this.correspondanceId) {\r\n return this.correspondanceId != correspondance.id;\r\n } else {\r\n return correspondance;\r\n }\r\n });\r\n // this.documentList = data;\r\n this.isLoading = false;\r\n return this.documentList;\r\n });\r\n }\r\n //disableFilter = (items: any[]) => items;\r\n\r\n close() { }\r\n}\r\n","<div class=\"search-container\">\r\n <ng-container>\r\n <div>\r\n <label class=\"select-label\" >{{ label | translate\r\n }}</label>\r\n </div>\r\n </ng-container>\r\n <!-- [customFilter]=\"disableFilter\" -->\r\n <ng-autocomplete #auto [data]=\"documentList\" [searchKeyword]=\"'filter'\" (selected)='selectItem($event)'\r\n (inputChanged)='onSearchInputChange($event)' (closed)=\"close()\" [itemTemplate]=\"itemTemplate\"\r\n [notFoundTemplate]=\"notFoundTemplate\" [placeholder]=\"'correspondence-relation.searchby' | translate\"\r\n [debounceTime]='1000' [isLoading]=\"isLoading\" (inputCleared)='inputCleared()'>\r\n </ng-autocomplete>\r\n\r\n <ng-template #itemTemplate let-item>\r\n <div class=\"item\">\r\n <span>{{item.title}}</span>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #notFoundTemplate>\r\n <div>{{'correspondence-relation.notfound' | translate}}</div>\r\n </ng-template>\r\n</div>","import { Component, Input, OnChanges } from '@angular/core';\r\n\r\n/**\r\n * Reusable component to truncate text, it will add '...' and a read more button if the text is longer than specified,\r\n * Conditions are word count,char count or line break count respectively\r\n * @title\r\n * Read More Component\r\n * @example\r\n *\r\n * <app-read-more\r\n * [charCount]=\"60\"\r\n * [wordCount]=\"12\"\r\n * [lineBreaks]=\"4\"\r\n * [text]=\"data?.description\"\r\n * ></app-read-more>\r\n */\r\n@Component({\r\n selector: 'app-read-more',\r\n template: `\r\n <p class='break-wrap inline' style='white-space: pre-wrap;' [ngClass]=\"{'hidden': fullText}\" [innerHTML]='rmTextShort'></p>\r\n <p class='break-wrap inline' style='white-space: pre-wrap' [ngClass]=\"{'hidden': !fullText}\" [innerHTML]='rmTextFull'></p>\r\n <p class='inline' [ngClass]=\"{'hidden': rmTextFull.length === rmTextShort.length}\">\r\n <small>\r\n <a href='javascript:;' class='text-primary underline' (click)='readMore(true)' [hidden]='!showMore'> {{'more' | translate}}</a>\r\n <a href='javascript:;' (click)='readMore(false)' class='text-primary underline' [hidden]='!showLess'> {{'less' | translate}}</a>\r\n </small>\r\n </p>`\r\n ,\r\n styles: ['p { margin-bottom:6px }']\r\n\r\n})\r\nexport class ReadMoreComponent implements OnChanges {\r\n /** text to be handled */\r\n @Input() text: string;\r\n /** Char count limit */\r\n @Input() charCount = 300;\r\n /** word count limit */\r\n @Input() wordCount = 30;\r\n /** line breaks limit */\r\n @Input() lineBreaks = 4;\r\n fullText = true;\r\n showMore = false;\r\n showLess = false;\r\n rmTextShort = '';\r\n rmTextFull = '';\r\n inputWords = [];\r\n constructor() {\r\n }\r\n\r\n readMore(flag) {\r\n if (flag) {\r\n this.showMore = false;\r\n this.fullText = true;\r\n this.rmTextFull = this.text;\r\n this.showLess = true;\r\n } else {\r\n this.showLess = false;\r\n this.showMore = true;\r\n this.fullText = false;\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n this.rmTextShort = this.text;\r\n this.rmTextFull = this.text;\r\n this.inputWords = this.text.split(' ');\r\n if (this.inputWords.length > this.wordCount) {\r\n this.fullText = false;\r\n this.showMore = true;\r\n this.rmTextShort = this.inputWords.slice(0, this.wordCount).join(' ') + '...';\r\n } else {\r\n if (this.rmTextShort.length > this.charCount) {\r\n this.fullText = false;\r\n this.showMore = true;\r\n this.rmTextShort = this.rmTextShort.substr(0, this.charCount) + '...'\r\n } else {\r\n const lineBreaks = this.rmTextShort.split(/\\n/g)\r\n if (lineBreaks.length > this.lineBreaks) {\r\n this.fullText = false\r\n this.showMore = true\r\n this.rmTextShort = lineBreaks.slice(0, this.lineBreaks).join('\\n') + '...'\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n/**\r\n * reusable user card component\r\n * @title\r\n * User Card\r\n * @example\r\n *\r\n * <app-user-card [user]=\"NuxeoUserObject\">\r\n * <div class=\"lineOne\">\r\n * Content of card first line\r\n * </div>\r\n * <div class=\"lineOnePart2\">\r\n * Content of card first line second part\r\n * </div>\r\n * <div class=\"lineTwo\">\r\n * Content of card second line\r\n * </div>\r\n * </app-user-card>\r\n */\r\n@Component({\r\n selector: 'app-user-card',\r\n templateUrl: './user-card.component.html',\r\n styleUrls: ['./user-card.component.scss'],\r\n})\r\nexport class UserCardComponent implements OnInit {\r\n /** Nuxeo user object */\r\n @Input()\r\n user;\r\n /** @deprecated diameter of avatar */\r\n @Input()\r\n diameter;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n if (screen.width <= 1536) {\r\n this.diameter = 10;\r\n } else if (screen.width > 1536) {\r\n this.diameter = 12;\r\n }\r\n }\r\n}\r\n","<ng-container *ngIf=\"user?.properties\">\r\n <div class=\"user-card\">\r\n <div class=\"p-1\">\r\n <cts-avatar class=\"card-avatar diameter\" [user]=\"user\" routerLink=\"/users/profile/{{ user.properties.username }}\"></cts-avatar>\r\n </div>\r\n <div class=\"user-content\">\r\n <div class=\"first-line-container\">\r\n <span class=\"first-line\" routerLink=\"/users/profile/{{ user.properties.username }}\">\r\n <ng-content select=\".lineOne\"></ng-content>\r\n </span>\r\n <span>\r\n <ng-content select=\".lineOnePart2 \"></ng-content>\r\n </span>\r\n </div>\r\n\r\n <span class=\"lineTwo\">\r\n <ng-content select=\".lineTwo \"></ng-content>\r\n </span>\r\n </div>\r\n </div>\r\n</ng-container>\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\n\r\n/**\r\n * reusable button with spinner component\r\n * @title\r\n * Button with spinner\r\n * @example\r\n *\r\n * <cts-button\r\n * [theme]=\"'danger'\"\r\n * [size]=\"'regular'\"\r\n * [loading]=\"false\"\r\n * [disabled]=\"false\"\r\n * (onClick)=\"executeAction()\"\r\n * >\r\n * Button Text\r\n * </cts-button>\r\n */\r\n@Component({\r\n selector: 'cts-button',\r\n templateUrl: './button.component.html',\r\n styleUrls: ['./button.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class ButtonComponent implements OnInit, OnChanges {\r\n /** is button disabled */\r\n @Input()\r\n disabled?;\r\n /** is button loading */\r\n @Input()\r\n loading?;\r\n /** button size large || regular || small */\r\n @Input()\r\n size?= 'regular';\r\n @Input()\r\n /** available themes: primary , blue , green , danger, dark, light-gray, outline-dark */\r\n theme?= 'primary';\r\n classes;\r\n /** button click event */\r\n @Output()\r\n onClick = new EventEmitter();\r\n constructor() { }\r\n\r\n emitClick(): void {\r\n this.onClick.next();\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n //Called before any other lifecycle hook. Use it to inject dependencies, but avoid any serious work here.\r\n //Add '${implements OnChanges}' to the class.\r\n this.setClasses();\r\n }\r\n ngOnInit(): void {\r\n this.setClasses();\r\n }\r\n\r\n setClasses() {\r\n let classes = {\r\n //theme\r\n primary: this.theme === 'primary',\r\n blue: this.theme === 'blue',\r\n green: this.theme === 'green',\r\n danger: this.theme === 'danger',\r\n dark: this.theme === 'dark',\r\n gray: this.theme === 'gray',\r\n 'light-gray': this.theme === 'light-gray',\r\n 'outline-dark': this.theme === 'outline-dark',\r\n //sizes\r\n large: this.size === 'large',\r\n regular: this.size === 'regular',\r\n small: this.size === 'small',\r\n //loading\r\n submitting: this.loading,\r\n //actions\r\n disabled: this.disabled,\r\n };\r\n this.classes = classes;\r\n }\r\n}\r\n","<button\r\n mat-button\r\n [disabled]=\"disabled || loading\"\r\n (click)=\"emitClick()\"\r\n [ngClass]=\"this.classes\"\r\n>\r\n <ng-content *ngIf=\"!loading; else spinner\"></ng-content>\r\n <ng-template #spinner>\r\n <mat-spinner class=\"spinner\" [diameter]=\"25\"></mat-spinner>\r\n </ng-template>\r\n</button>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n/**\r\n * Reusable Component to be shown when no data is present\r\n * @title\r\n * No Data Component\r\n * @example\r\n *\r\n * <cts-no-data\r\n * [message]=\"'PATH.TO.TRANSLATION'\"\r\n * ></cts-no-data>\r\n */\r\n@Component({\r\n selector: 'cts-no-data',\r\n templateUrl: './no-data.component.html',\r\n styleUrls: ['./no-data.component.scss'],\r\n})\r\nexport class NoDataComponent implements OnInit {\r\n /** tralsnation path to the message to be shown */\r\n @Input()\r\n message? = 'noData';\r\n @Input()\r\n border = true;\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","<div class=\"container\" [ngClass]=\"{'no-data-border':border}\">\r\n {{ message || \"noData\" | translate }}\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n/**\r\n * Basic Loading spinner component to be used in lists when loading data\r\n * @title\r\n * Spinner Component\r\n * @example\r\n *\r\n * <ng-container *ngIf=\"loading\">\r\n * <cts-spinner></cts-spinner>\r\n * </ng-container>\r\n */\r\n@Component({\r\n selector: 'cts-spinner',\r\n templateUrl: './spinner.component.html',\r\n styleUrls: ['./spinner.component.scss']\r\n})\r\nexport class SpinnerComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<div class=\"container\">\r\n <mat-spinner\r\n [value]=\"90\"\r\n [strokeWidth]=\"3\"\r\n overlay=\"true\"\r\n [diameter]=\"25\"\r\n color=\"warn\"\r\n >\r\n </mat-spinner>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UtilityService {\r\n\r\n constructor() { }\r\n\r\n // flips key value\r\n objectFlip(obj): object {\r\n const ret = {};\r\n Object.keys(obj).forEach(key => {\r\n ret[obj[key]] = key;\r\n });\r\n return ret;\r\n }\r\n\r\n parseIfJson(str): any {\r\n try {\r\n return JSON.parse(str);\r\n } catch (e) {\r\n return undefined;\r\n }\r\n }\r\n\r\n // gets value from object by composed key\r\n getValue(target: any, key: string): any {\r\n\r\n if (!target) {\r\n return undefined;\r\n }\r\n\r\n const keys = key.split('.');\r\n key = '';\r\n\r\n do {\r\n key += keys.shift();\r\n const value = target[key];\r\n if (value !== undefined && (typeof value === 'object' || !keys.length)) {\r\n target = value;\r\n key = '';\r\n } else if (!keys.length) {\r\n target = undefined;\r\n } else {\r\n key += '.';\r\n }\r\n } while (keys.length);\r\n\r\n return target;\r\n }\r\n\r\n // merges objects\r\n merge(...objects): any {\r\n const result = {};\r\n\r\n objects.forEach((source) => {\r\n Object.keys(source).forEach((prop) => {\r\n if (prop in result && Array.isArray(result[prop])) {\r\n result[prop] = result[prop].concat(source[prop]);\r\n } else if (prop in result && typeof result[prop] === 'object') {\r\n result[prop] = this.merge(result[prop], source[prop]);\r\n } else {\r\n result[prop] = source[prop];\r\n }\r\n });\r\n });\r\n\r\n return result;\r\n }\r\n\r\n getPlainText(description: string, maxLength?: number): string {\r\n if (!description || !description.length) {\r\n return '';\r\n }\r\n let result = description.replace(/<[^>]*>/g, '').replace('&nbsp;', ' ').replace(/\\r\\n|\\r|\\n/g, ' ');\r\n if (maxLength && maxLength > 4 && result.length > maxLength) {\r\n result = result.substr(0, maxLength - 4) + '...';\r\n }\r\n return result;\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { UtilityService } from '../utilities/utility.service';\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AdapterService {\r\n constructor(private utiliService: UtilityService) {}\r\n\r\n filterNullValues(formValue) {\r\n const filtered = {};\r\n for (let key in formValue) {\r\n if (formValue[key]) {\r\n filtered[key] =\r\n !Array.isArray(formValue[key]) && typeof formValue[key] === 'object'\r\n ? { ...this.filterNullValues(formValue[key]) }\r\n : formValue[key];\r\n }\r\n }\r\n return filtered;\r\n }\r\n\r\n adaptIn(item: any, fieldsobj: any) {\r\n const fields = this.utiliService.objectFlip(fieldsobj);\r\n const properties = { ...item.properties };\r\n Object.keys(fields).forEach((key) => {\r\n properties[fields[key]] = item.properties[key];\r\n delete properties[key];\r\n });\r\n item.properties = properties;\r\n return item;\r\n }\r\n\r\n adaptOut(item: any, fieldsobj: any) {\r\n const fields = fieldsobj;\r\n let properties = { ...item };\r\n Object.keys(fields).forEach((key) => {\r\n if (key) {\r\n properties[fields[key]] = item[key];\r\n delete properties[key];\r\n }\r\n });\r\n properties = { ...this.filterNullValues(properties) };\r\n\r\n return properties;\r\n }\r\n}\r\n","import { EventEmitter, Inject } from '@angular/core';\r\nimport { Injectable } from '@angular/core';\r\nimport { from, ReplaySubject } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { AppConfigService } from '../../../configuration/app-config.service';\r\nimport { AdapterService } from '../../../Core/adapters/adapter.service';\r\nimport { NuxeoService } from '../../../Core/services/nuxeo/nuxeo.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ViewerFilesService {\r\n public selectedFileId = new EventEmitter();\r\n public updateViewer = new EventEmitter();\r\n incomingConstant;\r\n constructor(\r\n private configService: AppConfigService,\r\n private adapter: AdapterService,\r\n private nuxeoService: NuxeoService,\r\n @Inject('environment') private environment\r\n ) {\r\n this.incomingConstant =\r\n this.configService.myConfiguration['correspondance']['incoming'];\r\n }\r\n\r\n createAttach(attachment, correspondenceId) {\r\n console.log(attachment);\r\n // console.log(\r\n // this.adapter.adaptOut(attachment, this.incomingConstant.attachments)\r\n // );\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .operation('AC_UA_Correspondence_Attach_Create', {\r\n url: `${this.environment.nuxeo}${this.environment.customAutomation}`,\r\n })\r\n .input(correspondenceId)\r\n .context({\r\n attachment: this.adapter.adaptOut(\r\n attachment,\r\n this.incomingConstant.attachments\r\n ),\r\n })\r\n .execute()\r\n ).pipe(\r\n catchError((err) => {\r\n console.log(err);\r\n throw err;\r\n })\r\n );\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\r\nimport { ViewerFilesService } from '../../../components/correspondence-relation/services/viewer-files.service';\r\n\r\n/**\r\n * Reusable List item component with actions menu for listing a document or a version of a document\r\n * @title\r\n * List item component\r\n * @example\r\n *\r\n * <cts-item-list\r\n * [item]=\"item\"\r\n * [title]=\"item.title\"\r\n * [iconname]=\"'link'\"\r\n * [actions]=\"menu_actions\"\r\n * (actionclicked)=\"handleAction($event)\"\r\n * (itemClicked)='handleItem()'\r\n * [moreclasses]=\"'link-relation'\"\r\n * ></cts-item-list>\r\n */\r\n@Component({\r\n selector: 'cts-item-list',\r\n templateUrl: './item-list.component.html',\r\n styleUrls: ['./item-list.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class ItemListComponent implements OnInit {\r\n selectedId;\r\n /** Document Item */\r\n @Input()\r\n item: any;\r\n /** Icon to display */\r\n @Input()\r\n iconname: string;\r\n /** title of the item */\r\n @Input()\r\n title: string;\r\n /** array of actions to be shown in actions menu */\r\n @Input()\r\n actions?: string[];\r\n /** highlight item if item is selected */\r\n @Input()\r\n isselected? = false;\r\n /** provide more classes to be assigned to the item DOM */\r\n @Input()\r\n moreclasses?;\r\n /** event Emitter that fires when item is clicked */\r\n @Output()\r\n itemClicked = new EventEmitter();\r\n /** Action Clicked event Emitter, emits action name and item object when an action is clicked */\r\n @Output()\r\n actionclicked = new EventEmitter();\r\n\r\n itemlistClick() {\r\n // this.isselected = true;\r\n this.itemClicked.next();\r\n }\r\n\r\n menuactionClicked(menu_item_name, item) {\r\n this.actionclicked.next({ action: menu_item_name, item: item });\r\n }\r\n\r\n constructor(private viewerFilesService: ViewerFilesService) { }\r\n\r\n ngOnInit(): void {\r\n this.viewerFilesService.selectedFileId.subscribe((res) => {\r\n this.selectedId = res;\r\n });\r\n }\r\n}\r\n","\r\n<mat-list-item class=\"list-item\" (click)=\"itemlistClick()\" [ngClass]=\"{\r\n 'list-item-selected': selectedId == item.uid\r\n }\">\r\n <div class=\"direction\"><i class=\"incoming bi bi-box-arrow-down\" *ngIf=\"!iconname&&item.direction?.toLowerCase() === 'incoming'\"></i></div>\r\n\r\n <div class=\"direction\"><i class=\"outcoming bi bi-box-arrow-up\" *ngIf=\"!iconname&&item.direction?.toLowerCase() === 'outgoing'\"></i></div>\r\n\r\n <mat-icon *ngIf=\"iconname\" mat-list-icon class=\"icon {{moreclasses}}\">{{\r\n iconname\r\n }}</mat-icon>\r\n\r\n <ng-content select=\".icon\"></ng-content>\r\n\r\n <div class=\"content\">\r\n <div *ngIf=\"title\" mat-line>{{ title }}</div>\r\n <div mat-line>\r\n <ng-content select=\".description\"> </ng-content>\r\n </div>\r\n</div>\r\n <button class=\"menu-item-action\" *ngIf=\"actions?.length\" (click)=\"$event.stopPropagation()\" [matMenuTriggerFor]=\"menu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n\r\n <mat-menu #menu=\"matMenu\">\r\n <ng-container *ngFor=\"let menu_item of actions\">\r\n <button mat-menu-item (click)=\"menuactionClicked(menu_item.name, item)\">\r\n {{ menu_item.title | translate }}\r\n </button>\r\n </ng-container>\r\n </mat-menu>\r\n</mat-list-item>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { ReadMoreComponent } from './components/read-more/read-more.component';\r\nimport { UserCardComponent } from './components/user-card/user-card.component';\r\nimport { AvatarModule } from '../components/avatar/avatar.module';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { ButtonComponent } from './components/button/button.component';\r\nimport { NoDataComponent } from './components/no-data/no-data.component';\r\nimport { SpinnerComponent } from './components/spinner/spinner.component';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { AutocompleteLibModule } from 'angular-ng-autocomplete';\r\nimport { ItemListComponent } from './components/item-list/item-list.component';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n/**\r\n * @title\r\n * Shared UI Components\r\n */\r\n@NgModule({\r\n declarations: [ReadMoreComponent, UserCardComponent, ButtonComponent, NoDataComponent, SpinnerComponent, ItemListComponent],\r\n imports: [\r\n AvatarModule,\r\n CommonModule,\r\n RouterModule,\r\n TranslateModule,\r\n MatProgressSpinnerModule,\r\n MatProgressSpinnerModule,\r\n MatIconModule,\r\n MatListModule,\r\n MatMenuModule,\r\n AutocompleteLibModule\r\n ],\r\n exports: [\r\n UserCardComponent,\r\n ReadMoreComponent,\r\n TranslateModule,\r\n ButtonComponent,\r\n NoDataComponent,\r\n SpinnerComponent, \r\n ItemListComponent\r\n ],\r\n})\r\nexport class LibrarySharedModule { }\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { DynamicFormBaseItemModel } from '../models/dynamic-form.models';\r\nimport { AppConfigService } from '../../../configuration/app-config.service';\r\nimport { AdapterService } from '../../../Core/adapters/adapter.service';\r\nimport { CallApiService } from '../../../Core/services/callApi/call-api.service';\r\n\r\nexport interface UpdateNotification {\r\n target: any;\r\n changed: any;\r\n}\r\n\r\nexport interface ClickNotification {\r\n target: any;\r\n}\r\n\r\nexport function transformKeyToObject(key: string, value): Object {\r\n const objectLevels: string[] = key.split('.').reverse();\r\n\r\n return objectLevels.reduce<{}>((previousValue, currentValue) => {\r\n return { [currentValue]: previousValue };\r\n }, value);\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DynamicFormUpdateService {\r\n\r\n itemUpdated$ = new Subject<UpdateNotification>();\r\n itemClicked$ = new Subject<ClickNotification>();\r\n validate$ = new Subject();\r\n fields ;\r\n\r\n constructor( private callApi: CallApiService,\r\n private adapter: AdapterService,\r\n private appConfigService : AppConfigService){\r\n this.fields = this.appConfigService.myConfiguration.tables.incomingCorespondance.fields\r\n\r\n }\r\n\r\n update(property: DynamicFormBaseItemModel, newValue: any) {\r\n this.itemUpdated$.next({\r\n target: property,\r\n changed: transformKeyToObject(property.key, newValue)\r\n });\r\n this.validate$.next({\r\n target: property,\r\n changed: newValue\r\n });\r\n }\r\n validate(property: DynamicFormBaseItemModel, newValue: any) {\r\n this.validate$.next({\r\n target: property,\r\n changed: newValue\r\n });\r\n }\r\n clicked(property: DynamicFormBaseItemModel) {\r\n this.itemClicked$.next({\r\n target: property\r\n });\r\n }\r\n\r\n getTextBoxSuggestionResults(pageProvider , params , key , autoCompleteValueKey){\r\n return this.callApi\r\n .query(\r\n {\r\n pageProvider: pageProvider,\r\n ...params,\r\n },\r\n {\r\n headers: {\r\n \"X-NXproperties\": \"*\",\r\n },\r\n }\r\n )\r\n .pipe(\r\n map((data: any) => {\r\n let results = [];\r\n let myInternalResult = data.aggregations[autoCompleteValueKey];\r\n myInternalResult.buckets.map((item) => {\r\n results.push({\r\n title : item.key\r\n });\r\n });\r\n return results;\r\n }),\r\n catchError((err) => {\r\n throw err;\r\n })\r\n )\r\n \r\n }\r\n\r\n}\r\n\r\n\r\n\r\n","import { Component, Input } from '@angular/core';\r\nimport { MatCheckboxChange } from '@angular/material/checkbox';\r\nimport { DynamicFormUpdateService } from '../../services/dynamic-form-update.service';\r\nimport { DynamicFormBoolItemModel } from '../../models/dynamic-form.models';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n/** @ignore */\r\n\r\n@Component({\r\n selector: 'app-dynamic-form-boolitem',\r\n templateUrl: './dynamic-form-boolitem.component.html',\r\n styleUrls: ['./dynamic-form-boolitem.component.scss']\r\n})\r\nexport class DynamicFormBoolItemComponent {\r\n @Input()\r\n property: DynamicFormBoolItemModel;\r\n\r\n @Input()\r\n editable: boolean;\r\n\r\n constructor(\r\n private dynamicFormUpdateService: DynamicFormUpdateService,\r\n public translate: TranslateService\r\n ) {}\r\n\r\n isEditable() {\r\n return this.editable && this.property.editable;\r\n }\r\n\r\n changed(change: MatCheckboxChange) {\r\n //this.dynamicFormUpdateService.update(this.property, change.checked);\r\n //this.property.value = change.checked;\r\n }\r\n}\r\n","<ng-container *ngIf=\"!property.isEmpty() || isEditable()\">\r\n <div class=\"row gap\">\r\n\r\n <label class=\"col-sm-3\" for=\"formGroupInputSmall\">{{\r\n property.label | translate\r\n }}<span *ngIf=\"property.mandatory\" class=\"text-danger\">*</span></label>\r\n <div class=\"col-sm-9\">\r\n <mat-checkbox [required]=\"property.mandatory\" [attr.data-automation-id]=\"'card-boolean-' + property.key\"\r\n [attr.title]=\"'CORE.METADATA.ACTIONS.TOGGLE' | translate\" [checked]=\"property.displayValue\"\r\n [disabled]=\"!isEditable()\" (change)=\"changed($event)\">\r\n </mat-checkbox>\r\n </div>\r\n </div>\r\n</ng-container>\r\n","import { Components } from 'formiojs';\r\nimport { cloneDeep, unionWith, each, filter, sortBy, isEqual } from 'lodash';\r\n\r\nexport const baseDisplay = [\r\n {\r\n weight: 0,\r\n type: 'textfield',\r\n input: true,\r\n hidden: true,\r\n key: 'key',\r\n label: 'Property Name',\r\n tooltip: 'The name of this field in the API endpoint.',\r\n validate: {\r\n pattern: '(\\\\w|\\\\w[\\\\w-.]*\\\\w)',\r\n patternMessage: 'The property name must only contain alphanumeric characters, underscores, dots and dashes and should not be ended by dash or dot.',\r\n required: true\r\n }\r\n },\r\n {\r\n weight: 0,\r\n type: 'textfield',\r\n input: true,\r\n key: 'label',\r\n label: 'Label - English',\r\n placeholder: 'Field Label',\r\n tooltip: 'The label for this field that will appear next to it.',\r\n validate: {\r\n required: true\r\n }\r\n },\r\n {\r\n weight: 10,\r\n type: 'textfield',\r\n input: true,\r\n key: 'labelAr',\r\n label: 'Label - Arabic',\r\n placeholder: 'Field Label',\r\n tooltip: 'The label for this field that will appear next to it.',\r\n validate: {\r\n required: true\r\n }\r\n },\r\n {\r\n type: 'select',\r\n input: true,\r\n key: 'labelPosition',\r\n label: 'Label Position',\r\n tooltip: 'Position for the label for this field.',\r\n weight: 20,\r\n defaultValue: 'top',\r\n dataSrc: 'values',\r\n data: {\r\n values: [\r\n {\r\n label: 'Top',\r\n value: 'top'\r\n },\r\n {\r\n label: 'Left (Left-aligned)',\r\n value: 'left-left'\r\n },\r\n {\r\n label: 'Left (Right-aligned)',\r\n value: 'left-right'\r\n },\r\n {\r\n label: 'Right (Left-aligned)',\r\n value: 'right-left'\r\n },\r\n {\r\n label: 'Right (Right-aligned)',\r\n value: 'right-right'\r\n },\r\n {\r\n label: 'Bottom',\r\n value: 'bottom'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'number',\r\n input: true,\r\n key: 'labelWidth',\r\n label: 'Label Width',\r\n tooltip: 'The width of label on line in percentages.',\r\n clearOnHide: false,\r\n weight: 30,\r\n placeholder: '30',\r\n suffix: '%',\r\n validate: {\r\n min: 0,\r\n max: 100\r\n },\r\n conditional: {\r\n json: {\r\n and: [\r\n {\r\n '!==': [\r\n {\r\n var: 'data.labelPosition'\r\n },\r\n 'top'\r\n ]\r\n },\r\n {\r\n '!==': [\r\n {\r\n var: 'data.labelPosition'\r\n },\r\n 'bottom'\r\n ]\r\n }\r\n ]\r\n }\r\n }\r\n },\r\n {\r\n type: 'number',\r\n input: true,\r\n key: 'labelMargin',\r\n label: 'Label Margin',\r\n tooltip: 'The width of label margin on line in percentages.',\r\n clearOnHide: false,\r\n weight: 30,\r\n placeholder: '3',\r\n suffix: '%',\r\n validate: {\r\n min: 0,\r\n max: 100\r\n },\r\n conditional: {\r\n json: {\r\n and: [\r\n {\r\n '!==': [\r\n {\r\n var: 'data.labelPosition'\r\n },\r\n 'top'\r\n ]\r\n },\r\n {\r\n '!==': [\r\n {\r\n var: 'data.labelPosition'\r\n },\r\n 'bottom'\r\n ]\r\n }\r\n ]\r\n }\r\n }\r\n },\r\n {\r\n weight: 200,\r\n type: 'textarea',\r\n input: true,\r\n key: 'description',\r\n label: 'Description - English',\r\n placeholder: 'Description for this field.',\r\n tooltip: 'The description is text that will appear below the input field.',\r\n editor: 'ace',\r\n as: 'html',\r\n wysiwyg: {\r\n minLines: 3,\r\n isUseWorkerDisabled: true\r\n }\r\n },\r\n {\r\n weight: 200,\r\n type: 'textarea',\r\n input: true,\r\n key: 'descriptionAr',\r\n label: 'Description - Arabic',\r\n placeholder: 'Description for this field.',\r\n tooltip: 'The description is text that will appear below the input field.',\r\n editor: 'ace',\r\n as: 'html',\r\n wysiwyg: {\r\n minLines: 3,\r\n isUseWorkerDisabled: true\r\n }\r\n },\r\n {\r\n weight: 300,\r\n type: 'textarea',\r\n input: true,\r\n key: 'tooltip',\r\n label: 'Tooltip - English',\r\n placeholder: 'To add a tooltip to this field, enter text here.',\r\n tooltip: 'Adds a tooltip to the side of this field.',\r\n editor: 'ace',\r\n as: 'html',\r\n wysiwyg: {\r\n minLines: 3,\r\n isUseWorkerDisabled: true\r\n }\r\n },\r\n {\r\n weight: 300,\r\n type: 'textarea',\r\n input: true,\r\n key: 'tooltipAr',\r\n label: 'Tooltip - Arabic',\r\n placeholder: 'To add a tooltip to this field, enter text here.',\r\n tooltip: 'Adds a tooltip to the side of this field.',\r\n editor: 'ace',\r\n as: 'html',\r\n wysiwyg: {\r\n minLines: 3,\r\n isUseWorkerDisabled: true\r\n }\r\n },\r\n {\r\n weight: 410,\r\n type: 'textfield',\r\n input: true,\r\n key: 'inputMask',\r\n label: 'Input Mask',\r\n tooltip: 'An input mask helps the user with input by ensuring a predefined format.<br><br>9: numeric<br>a: alphabetical<br>*: alphanumeric<br><br>Example telephone mask: (999) 999-9999<br><br>See the <a target=\\'_blank\\' href=\\'https://github.com/RobinHerbots/jquery.inputmask\\'>jquery.inputmask documentation</a> for more information.</a>'\r\n },\r\n {\r\n weight: 411,\r\n type: 'textfield',\r\n input: true,\r\n key: 'inputMaskPlaceholderChar',\r\n label: 'Input Mask Placeholder Char',\r\n tooltip: 'You can specify a char which will be used as a placeholder in the field. <br>E.g., ˍ<br>Make note that placeholder char will be replaced by a space if it is used inside the mask',\r\n validation: {\r\n maxLength: 1\r\n }\r\n },\r\n\r\n {\r\n weight: 1100,\r\n type: 'checkbox',\r\n label: 'Hidden',\r\n tooltip: 'A hidden field is still a part of the form, but is hidden from view.',\r\n key: 'hidden',\r\n input: true\r\n },\r\n {\r\n weight: 1200,\r\n type: 'checkbox',\r\n label: 'Hide Label',\r\n tooltip: 'Hide the label (title, if no label) of this component. This allows you to show the label in the form builder, but not when it is rendered.',\r\n key: 'hideLabel',\r\n input: true\r\n },\r\n\r\n {\r\n weight: 1400,\r\n type: 'checkbox',\r\n label: 'Disabled',\r\n tooltip: 'Disable the form input.',\r\n key: 'disabled',\r\n input: true\r\n }\r\n\r\n];\r\nexport const baseData = [\r\n {\r\n weight: 0,\r\n type: 'checkbox',\r\n label: 'Multiple Values',\r\n tooltip: 'Allows multiple values to be entered for this field.',\r\n key: 'multiple',\r\n input: true\r\n },\r\n {\r\n type: 'textfield',\r\n label: 'Default Value',\r\n key: 'defaultValue',\r\n weight: 5,\r\n placeholder: 'Default Value',\r\n tooltip: 'The will be the value for this field, before user interaction. Having a default value will override the placeholder text.',\r\n input: true\r\n },\r\n\r\n {\r\n type: 'select',\r\n input: true,\r\n key: 'redrawOn',\r\n label: 'Redraw On',\r\n weight: 600,\r\n tooltip: 'Redraw this component if another component changes. This is useful if interpolating parts of the component like the label.',\r\n dataSrc: 'custom',\r\n valueProperty: 'value',\r\n data: {},\r\n conditional: {\r\n json: {\r\n '!': [\r\n {\r\n var: 'data.dataSrc'\r\n }\r\n ]\r\n }\r\n }\r\n },\r\n {\r\n weight: 700,\r\n type: 'checkbox',\r\n label: 'Clear Value When Hidden',\r\n key: 'clearOnHide',\r\n defaultValue: true,\r\n tooltip: 'When a field is hidden, clear the value.',\r\n input: true\r\n },\r\n {\r\n type: 'panel',\r\n title: 'Custom Default Value',\r\n theme: 'default',\r\n collapsible: true,\r\n collapsed: true,\r\n key: 'customDefaultValuePanel',\r\n weight: 1000,\r\n components: [\r\n {\r\n type: 'htmlelement',\r\n tag: 'div',\r\n content: '<p>The following variables are available in all scripts.</p><table class=\"table table-bordered table-condensed table-striped\"><tr><th>form</th><td>The complete form JSON object</td></tr><tr><th>submission</th><td>The complete submission object.</td></tr><tr><th>data</th><td>The complete submission data object.</td></tr><tr><th>row</th><td>Contextual \"row\" data, used within DataGrid, EditGrid, and Container components</td></tr><tr><th>component</th><td>The current component JSON</td></tr><tr><th>instance</th><td>The current component instance.</td></tr><tr><th>value</th><td>The current value of the component.</td></tr><tr><th>moment</th><td>The moment.js library for date manipulation.</td></tr><tr><th>_</th><td>An instance of <a href=\"https://lodash.com/docs/\" target=\"_blank\">Lodash</a>.</td></tr><tr><th>utils</th><td>An instance of the <a href=\"http://formio.github.io/formio.js/docs/identifiers.html#utils\" target=\"_blank\">FormioUtils</a> object.</td></tr><tr><th>util</th><td>An alias for \"utils\".</td></tr></table><br/>'\r\n },\r\n {\r\n type: 'panel',\r\n title: 'JavaScript',\r\n collapsible: true,\r\n collapsed: false,\r\n style: {\r\n 'margin-bottom': '10px'\r\n },\r\n key: 'customDefaultValue-js',\r\n components: [\r\n {\r\n type: 'textarea',\r\n key: 'customDefaultValue',\r\n rows: 5,\r\n editor: 'ace',\r\n hideLabel: true,\r\n as: 'javascript',\r\n input: true\r\n },\r\n {\r\n type: 'htmlelement',\r\n tag: 'div',\r\n content: '<p>Enter custom javascript code.</p><p><h4>Example:</h4><pre>value = data.firstName + \" \" + data.lastName;</pre></p>'\r\n }\r\n ]\r\n },\r\n {\r\n type: 'panel',\r\n title: 'JSONLogic',\r\n collapsible: true,\r\n collapsed: true,\r\n key: 'customDefaultValue-json',\r\n components: [\r\n {\r\n type: 'htmlelement',\r\n tag: 'div',\r\n content: '<p>Execute custom logic using <a href=\"http://jsonlogic.com/\" target=\"_blank\">JSONLogic</a>.</p><p>Full <a href=\"https://lodash.com/docs\" target=\"_blank\">Lodash</a> support is provided using an \"_\" before each operation, such as <code>{\"_sum\": {var: \"data.a\"}}</code></p><p><h4>Example:</h4><pre>{\"cat\": [{\"var\": \"data.firstName\"}, \" \", {\"var\": \"data.lastName\"}]}</pre>'\r\n },\r\n {\r\n type: 'textarea',\r\n key: 'customDefaultValue',\r\n rows: 5,\r\n editor: 'ace',\r\n hideLabel: true,\r\n as: 'json',\r\n input: true\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n type: 'panel',\r\n title: 'Calculated Value',\r\n theme: 'default',\r\n collapsible: true,\r\n collapsed: true,\r\n key: 'calculateValuePanel',\r\n weight: 1100,\r\n components: [\r\n {\r\n type: 'htmlelement',\r\n tag: 'div',\r\n content: '<p>The following variables are available in all scripts.</p><table class=\"table table-bordered table-condensed table-striped\"><tr><th>token</th><td>The decoded JWT token for the authenticated user.</td></tr><tr><th>form</th><td>The complete form JSON object</td></tr><tr><th>submission</th><td>The complete submission object.</td></tr><tr><th>data</th><td>The complete submission data object.</td></tr><tr><th>row</th><td>Contextual \"row\" data, used within DataGrid, EditGrid, and Container components</td></tr><tr><th>component</th><td>The current component JSON</td></tr><tr><th>instance</th><td>The current component instance.</td></tr><tr><th>value</th><td>The current value of the component.</td></tr><tr><th>moment</th><td>The moment.js library for date manipulation.</td></tr><tr><th>_</th><td>An instance of <a href=\"https://lodash.com/docs/\" target=\"_blank\">Lodash</a>.</td></tr><tr><th>utils</th><td>An instance of the <a href=\"http://formio.github.io/formio.js/docs/identifiers.html#utils\" target=\"_blank\">FormioUtils</a> object.</td></tr><tr><th>util</th><td>An alias for \"utils\".</td></tr></table><br/>'\r\n },\r\n {\r\n type: 'panel',\r\n title: 'JavaScript',\r\n collapsible: true,\r\n collapsed: false,\r\n style: {\r\n 'margin-bottom': '10px'\r\n },\r\n key: 'calculateValue-js',\r\n components: [\r\n {\r\n type: 'textarea',\r\n key: 'calculateValue',\r\n rows: 5,\r\n editor: 'ace',\r\n hideLabel: true,\r\n as: 'javascript',\r\n input: true\r\n },\r\n {\r\n type: 'htmlelement',\r\n tag: 'div',\r\n content: '<p>Enter custom javascript code.</p><p><h4>Example:</h4><pre>value = data.a + data.b + data.c;</pre></p>'\r\n }\r\n ]\r\n },\r\n {\r\n type: 'panel',\r\n title: 'JSONLogic',\r\n collapsible: true,\r\n collapsed: true,\r\n key: 'calculateValue-json',\r\n components: [\r\n {\r\n type: 'htmlelement',\r\n tag: 'div',\r\n content: '<p>Execute custom logic using <a href=\"http://jsonlogic.com/\" target=\"_blank\">JSONLogic</a>.</p><p>Full <a href=\"https://lodash.com/docs\" target=\"_blank\">Lodash</a> support is provided using an \"_\" before each operation, such as <code>{\"_sum\": {var: \"data.a\"}}</code></p><p><h4>Example:</h4><pre>{\"+\": [{\"var\": \"data.a\"}, {\"var\": \"data.b\"}, {\"var\": \"data.c\"}]}</pre><p><a target=\"_blank\" href=\"http://formio.github.io/formio.js/app/examples/calculated.html\">Click here for an example</a></p>'\r\n },\r\n {\r\n type: 'textarea',\r\n key: 'calculateValue',\r\n rows: 5,\r\n editor: 'ace',\r\n hideLabel: true,\r\n as: 'json',\r\n input: true\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n\r\n {\r\n type: 'checkbox',\r\n input: true,\r\n weight: 1200,\r\n key: 'allowCalculateOverride',\r\n label: 'Allow Manual Override of Calculated Value',\r\n tooltip: 'When checked, this will allow the user to manually override the calculated value.'\r\n }\r\n];\r\nexport const baseValidation = [\r\n {\r\n weight: 0,\r\n type: 'select',\r\n key: 'validateOn',\r\n defaultValue: 'change',\r\n input: true,\r\n label: 'Validate On',\r\n tooltip: 'Determines when this component should trigger front-end validation.',\r\n dataSrc: 'values',\r\n data: {\r\n values: [\r\n {\r\n label: 'Change',\r\n value: 'change'\r\n },\r\n {\r\n label: 'Blur',\r\n value: 'blur'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n weight: 10,\r\n type: 'checkbox',\r\n label: 'Required',\r\n tooltip: 'A required field must be filled in before the form can be submitted.',\r\n key: 'validate.required',\r\n input: true\r\n },\r\n {\r\n weight: 110,\r\n key: 'validate.minLength',\r\n label: 'Minimum Length',\r\n placeholder: 'Minimum Length',\r\n type: 'number',\r\n tooltip: 'The minimum length requirement this field must meet.',\r\n input: true\r\n },\r\n {\r\n weight: 120,\r\n key: 'validate.maxLength',\r\n label: 'Maximum Length',\r\n placeholder: 'Maximum Length',\r\n type: 'number',\r\n tooltip: 'The maximum length requirement this field must meet.',\r\n input: true\r\n },\r\n {\r\n weight: 125,\r\n key: 'validate.minWords',\r\n label: 'Minimum Word Length',\r\n placeholder: 'Minimum Word Length',\r\n type: 'number',\r\n tooltip: 'The minimum amount of words that can be added to this field.',\r\n input: true\r\n },\r\n {\r\n weight: 126,\r\n key: 'validate.maxWords',\r\n label: 'Maximum Word Length',\r\n placeholder: 'Maximum Word Length',\r\n type: 'number',\r\n tooltip: 'The maximum amount of words that can be added to this field.',\r\n input: true\r\n },\r\n {\r\n weight: 130,\r\n key: 'validate.pattern',\r\n label: 'Regular Expression Pattern',\r\n placeholder: 'Regular Expression Pattern',\r\n type: 'textfield',\r\n tooltip: 'The regular expression pattern test that the field value must pass before the form can be submitted.',\r\n input: true\r\n },\r\n\r\n {\r\n weight: 200,\r\n key: 'validate.customMessage',\r\n label: 'Custom Error Message',\r\n placeholder: 'Custom Error Message',\r\n type: 'textfield',\r\n tooltip: 'Error message displayed if any error occurred.',\r\n input: true\r\n },\r\n {\r\n type: 'panel',\r\n title: 'Custom Validation',\r\n collapsible: true,\r\n collapsed: true,\r\n style: {\r\n 'margin-bottom': '10px'\r\n },\r\n key: 'custom-validation-js',\r\n weight: 300,\r\n components: [\r\n {\r\n type: 'htmlelement',\r\n tag: 'div',\r\n content: '<p>The following variables are available in all scripts.</p><table class=\"table table-bordered table-condensed table-striped\"><tr><th>input</th><td>The value that was input into this component</td></tr><tr><th>form</th><td>The complete form JSON object</td></tr><tr><th>submission</th><td>The complete submission object.</td></tr><tr><th>data</th><td>The complete submission data object.</td></tr><tr><th>row</th><td>Contextual \"row\" data, used within DataGrid, EditGrid, and Container components</td></tr><tr><th>component</th><td>The current component JSON</td></tr><tr><th>instance</th><td>The current component instance.</td></tr><tr><th>value</th><td>The current value of the component.</td></tr><tr><th>moment</th><td>The moment.js library for date manipulation.</td></tr><tr><th>_</th><td>An instance of <a href=\"https://lodash.com/docs/\" target=\"_blank\">Lodash</a>.</td></tr><tr><th>utils</th><td>An instance of the <a href=\"http://formio.github.io/formio.js/docs/identifiers.html#utils\" target=\"_blank\">FormioUtils</a> object.</td></tr><tr><th>util</th><td>An alias for \"utils\".</td></tr></table><br/>'\r\n },\r\n {\r\n type: 'textarea',\r\n key: 'validate.custom',\r\n rows: 5,\r\n editor: 'ace',\r\n hideLabel: true,\r\n as: 'javascript',\r\n input: true\r\n },\r\n {\r\n type: 'htmlelement',\r\n tag: 'div',\r\n content: '\\n <small>\\n <p>Enter custom validation code.</p>\\n <p>You must assign the <strong>valid</strong> variable as either <strong>true</strong> or an error message if validation fails.</p>\\n <h5>Example:</h5>\\n <pre>valid = (input === \\'Joe\\') ? true : \\'Your name must be \"Joe\"\\';</pre>\\n </small>'\r\n }\r\n ]\r\n },\r\n {\r\n type: 'panel',\r\n title: 'JSONLogic Validation',\r\n collapsible: true,\r\n collapsed: true,\r\n key: 'json-validation-json',\r\n weight: 400,\r\n components: [\r\n {\r\n type: 'htmlelement',\r\n tag: 'div',\r\n content: '<p>Execute custom logic using <a href=\"http://jsonlogic.com/\" target=\"_blank\">JSONLogic</a>.</p><h5>Example:</h5><pre>{\\n \"if\": [\\n {\\n \"===\": [\\n {\\n \"var\": \"input\"\\n },\\n \"Bob\"\\n ]\\n },\\n true,\\n \"Your name must be \\'Bob\\'!\"\\n ]\\n}</pre>'\r\n },\r\n {\r\n type: 'textarea',\r\n key: 'validate.json',\r\n hideLabel: true,\r\n rows: 5,\r\n editor: 'ace',\r\n as: 'json',\r\n input: true\r\n }\r\n ]\r\n }\r\n];\r\nexport const baseConditional = [\r\n {\r\n type: 'panel',\r\n title: 'Simple',\r\n key: 'simple-conditional',\r\n theme: 'default',\r\n components: [\r\n {\r\n type: 'select',\r\n input: true,\r\n label: 'This component should Display:',\r\n key: 'conditional.show',\r\n dataSrc: 'values',\r\n data: {\r\n values: [\r\n {\r\n label: 'True',\r\n value: 'true'\r\n },\r\n {\r\n label: 'False',\r\n value: 'false'\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n type: 'select',\r\n input: true,\r\n label: 'When the form component:',\r\n key: 'conditional.when',\r\n dataSrc: 'custom',\r\n valueProperty: 'value',\r\n data: {}\r\n },\r\n {\r\n type: 'textfield',\r\n input: true,\r\n label: 'Has the value:',\r\n key: 'conditional.eq'\r\n }\r\n ]\r\n },\r\n {\r\n type: 'panel',\r\n title: 'Advanced Conditions',\r\n theme: 'default',\r\n collapsible: true,\r\n collapsed: true,\r\n key: 'customConditionalPanel',\r\n weight: 110,\r\n components: [\r\n {\r\n type: 'htmlelement',\r\n tag: 'div',\r\n content: '<p>The following variables are available in all scripts.</p><table class=\"table table-bordered table-condensed table-striped\"><tr><th>form</th><td>The complete form JSON object</td></tr><tr><th>submission</th><td>The complete submission object.</td></tr><tr><th>data</th><td>The complete submission data object.</td></tr><tr><th>row</th><td>Contextual \"row\" data, used within DataGrid, EditGrid, and Container components</td></tr><tr><th>component</th><td>The current component JSON</td></tr><tr><th>instance</th><td>The current component instance.</td></tr><tr><th>value</th><td>The current value of the component.</td></tr><tr><th>moment</th><td>The moment.js library for date manipulation.</td></tr><tr><th>_</th><td>An instance of <a href=\"https://lodash.com/docs/\" target=\"_blank\">Lodash</a>.</td></tr><tr><th>utils</th><td>An instance of the <a href=\"http://formio.github.io/formio.js/docs/identifiers.html#utils\" target=\"_blank\">FormioUtils</a> object.</td></tr><tr><th>util</th><td>An alias for \"utils\".</td></tr></table><br/>'\r\n },\r\n {\r\n type: 'panel',\r\n title: 'JavaScript',\r\n collapsible: true,\r\n collapsed: false,\r\n style: {\r\n 'margin-bottom': '10px'\r\n },\r\n key: 'customConditional-js',\r\n components: [\r\n {\r\n type: 'textarea',\r\n key: 'customConditional',\r\n rows: 5,\r\n editor: 'ace',\r\n hideLabel: true,\r\n as: 'javascript',\r\n input: true\r\n },\r\n {\r\n type: 'htmlelement',\r\n tag: 'div',\r\n content: '<p>Enter custom javascript code.</p><p>You must assign the <strong>show</strong> variable a boolean result.</p><p><strong>Note: Advanced Conditional logic will override the results of the Simple Conditional logic.</strong></p><h5>Example</h5><pre>show = !!data.showMe;</pre>'\r\n }\r\n ]\r\n },\r\n {\r\n type: 'panel',\r\n title: 'JSONLogic',\r\n collapsible: true,\r\n collapsed: true,\r\n key: 'customConditional-json',\r\n components: [\r\n {\r\n type: 'htmlelement',\r\n tag: 'div',\r\n content: '<p>Execute custom logic using <a href=\"http://jsonlogic.com/\" target=\"_blank\">JSONLogic</a>.</p><p>Full <a href=\"https://lodash.com/docs\" target=\"_blank\">Lodash</a> support is provided using an \"_\" before each operation, such as <code>{\"_sum\": {var: \"data.a\"}}</code></p><p><a href=\"http://formio.github.io/formio.js/app/examples/conditions.html\" target=\"_blank\">Click here for an example</a></p>'\r\n },\r\n {\r\n type: 'textarea',\r\n key: 'conditional.json',\r\n rows: 5,\r\n editor: 'ace',\r\n hideLabel: true,\r\n as: 'json',\r\n input: true\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n];\r\nconst sortAndFilterComponents = (components) => {\r\n return filter(sortBy(components, 'weight'), (item) => !item.ignore);\r\n};\r\nconst unifyComponents = (objValue, srcValue) => {\r\n if (objValue.key && srcValue.key) {\r\n if (objValue.skipMerge || srcValue.skipMerge) {\r\n return false;\r\n }\r\n if (objValue.key === srcValue.key) {\r\n // Create complete objects by including missing keys.\r\n each(objValue, (value, prop) => {\r\n if (objValue.overrideEditForm || !srcValue.hasOwnProperty(prop)) {\r\n srcValue[prop] = value;\r\n }\r\n });\r\n each(srcValue, (value, prop) => {\r\n if (srcValue.overrideEditForm || !objValue.hasOwnProperty(prop)) {\r\n objValue[prop] = value;\r\n }\r\n });\r\n\r\n if (objValue.components) {\r\n srcValue.components = sortAndFilterComponents(\r\n unionWith(objValue.components, srcValue.components, unifyComponents)\r\n );\r\n }\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n return isEqual(objValue, srcValue);\r\n};\r\nexport const baseEditForm = (...extend) => {\r\n\r\n const components = cloneDeep([\r\n {\r\n type: 'tabs',\r\n key: 'tabs',\r\n components: [{\r\n key: 'display',\r\n components: baseDisplay,\r\n label: 'Display',\r\n weight: 0\r\n },\r\n {\r\n key: 'data',\r\n components: baseData,\r\n label: 'Data',\r\n weight: 10\r\n },\r\n {\r\n key: 'validation',\r\n components: baseValidation,\r\n label: 'Validation',\r\n weight: 20\r\n },\r\n {\r\n label: 'Conditional',\r\n key: 'conditional',\r\n weight: 40,\r\n components: baseConditional\r\n }\r\n ]\r\n }\r\n ]).concat(extend.map((items) => ({\r\n type: 'tabs',\r\n key: 'tabs',\r\n components: cloneDeep(items),\r\n })));\r\n return {\r\n components: unionWith(components, unifyComponents).concat({\r\n type: 'hidden',\r\n key: 'type'\r\n })\r\n };\r\n};\r\n","import {\r\n Component, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, ViewChild, ViewEncapsulation\r\n} from '@angular/core';\r\nimport { Components, FormBuilderComponent } from 'angular-formio';\r\nimport { Utils } from 'formiojs';\r\nimport { cloneDeep } from 'lodash';\r\nimport { baseEditForm } from '../form-wrappers/base-edit-form/base-edit-form';\r\n@Component({\r\n selector: 'app-dynamic-form-builder',\r\n templateUrl: './dynamic-form-builder.component.html',\r\n styleUrls: ['./dynamic-form-builder.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class DynamicFormBuilderComponent implements OnChanges, OnInit {\r\n @ViewChild('json') jsonElement?: ElementRef;\r\n @Input()\r\n form: any = {};\r\n @Input()\r\n builder: any = {};\r\n @Input()\r\n builderComponents = {};\r\n @Output()\r\n formUpdated = new EventEmitter();\r\n saving = false;\r\n @ViewChild(FormBuilderComponent, { static: false }) FormBuilderComponent: FormBuilderComponent;\r\n builderOptions = {\r\n noDefaultSubmitButton: true,\r\n builder: {\r\n basic: false,\r\n advanced: false,\r\n data: false,\r\n premium: false,\r\n layout: {\r\n components: {\r\n htmlelement: false,\r\n content: false\r\n }\r\n },\r\n customBasic: {\r\n title: 'Basic Components',\r\n default: true,\r\n weight: 0,\r\n components: {}\r\n }\r\n },\r\n editForm: {\r\n textfield: [\r\n\r\n {\r\n key: 'api',\r\n ignore: true\r\n },\r\n {\r\n key: 'logic',\r\n ignore: true\r\n },\r\n {\r\n key: 'layout',\r\n ignore: true\r\n }\r\n ],\r\n number: [\r\n {\r\n key: 'display'\r\n },\r\n {\r\n key: 'api',\r\n ignore: true\r\n },\r\n {\r\n key: 'logic',\r\n ignore: true\r\n },\r\n {\r\n key: 'layout',\r\n ignore: true\r\n }\r\n ]\r\n }\r\n };\r\n refresher = new EventEmitter();\r\n deletedComponents = {};\r\n // tslint:disable-next-line:variable-name\r\n private _form: any = {};\r\n\r\n constructor() {\r\n const numberEditForm = Components.components.number.editForm();\r\n const textEditForm = Components.components.textfield.editForm();\r\n textEditForm.components[0].components[1].components = textEditForm.components[0].components[1].components.filter(item => !['persistent', 'protected', 'dbIndex', 'encrypted', 'calculateServer'].includes(item.key));\r\n numberEditForm.components[0].components[1].components = numberEditForm.components[0].components[1].components.filter(item => !['persistent', 'protected', 'dbIndex', 'encrypted', 'calculateServer'].includes(item.key));\r\n Components.components.textfield.editForm = () =>\r\n baseEditForm([textEditForm.components[0].components[1]]);\r\n Components.components.number.editForm = () =>\r\n baseEditForm([numberEditForm.components[0].components[1]]);\r\n this._form = this.form;\r\n }\r\n ngOnInit() {\r\n\r\n }\r\n ngOnChanges(changes) {\r\n if (changes.form || changes.builderComponents) {\r\n if (this.form.components) {\r\n Utils.eachComponent(this.form.components, (comp) => {\r\n if (this.builderComponents[comp.key]) {\r\n this.deletedComponents[comp.key] = cloneDeep(this.builderComponents[comp.key]);\r\n delete this.builderComponents[comp.key];\r\n } else if (Object.keys(this.builderComponents).length) {\r\n Utils.findComponent(this.form.components, comp.key, null, (found, path) => {\r\n Utils.removeComponent(this.form.components, path);\r\n this._form = cloneDeep(this.form);\r\n });\r\n }\r\n });\r\n }\r\n this.builderOptions.builder.customBasic.components = cloneDeep(this.builderComponents);\r\n\r\n\r\n this.refresher.next();\r\n }\r\n }\r\n save() {\r\n this.saving = true;\r\n this.form = cloneDeep(this._form);\r\n this.formUpdated.next(this.form);\r\n setTimeout(() => {\r\n this.saving = false;\r\n }, 500);\r\n }\r\n onChange(event: any) {\r\n this.handleComponentChange(event.component, event.type);\r\n\r\n if (['addComponent', 'saveComponent', 'deleteComponent'].indexOf(event.type) > -1) {\r\n this._form = cloneDeep(event.form);\r\n }\r\n\r\n }\r\n\r\n handleComponentChange(component, eventType): void {\r\n if (component.fixedKey) {\r\n component.key = component.fixedKey;\r\n if (component.fixedKey && this.builderOptions.builder.customBasic.components[component.fixedKey] && eventType === 'addComponent') {\r\n this.deletedComponents[component.fixedKey] =\r\n { ...this.builderOptions.builder.customBasic.components[component.fixedKey] };\r\n this.builderOptions.builder.customBasic.components[component.fixedKey] = false;\r\n }\r\n if (component.fixedKey && this.deletedComponents[component.fixedKey] && eventType === 'deleteComponent') {\r\n this.builderOptions.builder.customBasic.components[component.fixedKey] =\r\n { ... this.deletedComponents[component.fixedKey] };\r\n delete this.deletedComponents[component.fixedKey];\r\n }\r\n this.refresher.next();\r\n\r\n } else {\r\n Utils.eachComponent([component], (comp) => {\r\n this.handleComponentChange(comp, eventType);\r\n });\r\n }\r\n }\r\n\r\n\r\n}\r\n","<div class=\"container-fluid\" dir=\"ltr\">\r\n <form-builder [form]=\"form\" [options]=\"builderOptions\" [rebuild]=\"refresher\" (change)=\"onChange($event)\"></form-builder>\r\n <!-- <button class=\"save-form\" (click)=\"save()\">SAVE</button> -->\r\n <div class=\"mx-2 save-form\">\r\n <cts-button\r\n [loading]=\"saving\"\r\n [theme]=\"'primary'\"\r\n [size]=\"'regular'\"\r\n (onClick)=\"save()\"\r\n \r\n >\r\n {{ \"BUTTONS.SAVE\" | translate }}\r\n </cts-button>\r\n </div>\r\n</div>\r\n","import {\r\n Component,\r\n Input,\r\n Optional,\r\n Self,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NgControl,\r\n} from '@angular/forms';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n/**\r\n * A checkbox input that can be used inside reactive or template driven forms\r\n * @title\r\n * Checkbox\r\n * @example\r\n * <cts-dynamic-form-checkbox-item\r\n * [label]=\"'test slide'\"\r\n * formControlName=\"checkbox\"\r\n * ></cts-dynamic-form-checkbox-item>\r\n */\r\n@Component({\r\n selector: 'cts-dynamic-form-checkbox-item',\r\n templateUrl: './dynamic-form-checkbox-item.component.html',\r\n styleUrls: ['./dynamic-form-checkbox-item.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class DynamicFormCheckboxItemComponent implements ControlValueAccessor {\r\n value;\r\n /** Input Label */\r\n @Input()\r\n label;\r\n /** set input to disabled */\r\n @Input()\r\n disabled: boolean = false;\r\n /** is checkbox checked */\r\n @Input()\r\n checked: boolean = false;\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n constructor(\r\n public translate: TranslateService,\r\n @Self() @Optional() private control: NgControl\r\n ) {\r\n this.control.valueAccessor = this;\r\n }\r\n writeValue(obj: boolean): void {\r\n this.value = obj;\r\n }\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n isRequired() {\r\n if (!this.control.control.validator) {\r\n return false;\r\n }\r\n\r\n const validator = this.control.control.validator({} as AbstractControl);\r\n return validator && validator.required;\r\n }\r\n setValue(event) {\r\n this.onChange(event.target.checked);\r\n }\r\n}\r\n","<div class=\"checkbox-container\">\r\n <input\r\n [checked]=\"checked\"\r\n [disabled]=\"disabled\"\r\n [(ngModel)]=\"value\"\r\n (change)=\"setValue($event)\"\r\n type=\"checkbox\"\r\n />\r\n <label class=\"checkbox-lable\">{{ label | translate }}</label>\r\n</div>\r\n","import { Component, Input, OnDestroy, OnInit, Optional, Self, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, NgControl } from '@angular/forms';\r\nimport { DateAdapter } from '@angular/material/core';\r\nimport { OWL_DATE_TIME_FORMATS } from '@busacca/ng-pick-datetime';\r\nimport { MatDatetimepicker } from '@mat-datetimepicker/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Moment } from 'moment';\r\nimport moment from 'moment-es6';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { UserPreferencesService, UserPreferenceValues } from '../../../../Core/services/user/user-preferences.service';\r\nimport { MomentDateAdapter } from '../../../../Core/utilities/moment-date-adapter';\r\nimport { DynamicFormDateItemModel } from '../../models/dynamic-form.models';\r\nimport { DynamicFormUpdateService } from '../../services/dynamic-form-update.service';\r\n\r\nexport const MY_MOMENT_FORMATS = {\r\n parseInput: 'l LT',\r\n fullPickerInput: 'l LT',\r\n datePickerInput: 'l',\r\n timePickerInput: 'LT',\r\n monthYearLabel: 'MMM YYYY',\r\n dateA11yLabel: 'LL',\r\n monthYearA11yLabel: 'MMMM YYYY',\r\n};\r\n/** @ignore */\r\n@Component({\r\n providers: [\r\n { provide: OWL_DATE_TIME_FORMATS, useValue: MY_MOMENT_FORMATS }\r\n ],\r\n selector: 'app-dynamic-form-dateitem',\r\n templateUrl: './dynamic-form-dateitem.component.html',\r\n styleUrls: ['./dynamic-form-dateitem.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n\r\n})\r\nexport class DynamicFormDateItemComponent implements OnInit, OnDestroy, ControlValueAccessor {\r\n\r\n\r\n @Input()\r\n label;\r\n\r\n @Input()\r\n disabled = false;\r\n\r\n inEdit = false;\r\n editedValue: string;\r\n errorMessages: string[];\r\n valueSeparator: string;\r\n @Input()\r\n property: DynamicFormDateItemModel;\r\n\r\n @Input()\r\n editable: boolean = true;\r\n\r\n @Input()\r\n displayEmpty: boolean = true;\r\n\r\n @Input()\r\n min = null;\r\n @Input()\r\n max = null;\r\n @Input()\r\n startAt = null;\r\n\r\n @Input()\r\n displayClearAction: boolean = true;\r\n @Input() pickerType: string = 'both';\r\n @Input() selectMode: string = 'single';\r\n @ViewChild('datetimePicker')\r\n public datepicker: MatDatetimepicker<any>;\r\n\r\n valueDate;\r\n dateFormat: string;\r\n @Input() isfilter= false; // showed error when building lib that this property is not exist \r\n @Input() placeholder= ''; // showed error when building lib that this property is not exist \r\n private onDestroy$ = new Subject<boolean>();\r\n\r\n constructor(\r\n private dynamicFormUpdateService: DynamicFormUpdateService,\r\n private dateAdapter: DateAdapter<Moment>,\r\n private userPreferencesService: UserPreferencesService,\r\n public translate: TranslateService,\r\n @Self() @Optional() public control: NgControl\r\n\r\n ) {\r\n this.control.valueAccessor = this;\r\n this.dateFormat = 'mediumDate';\r\n }\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n\r\n isRequired() {\r\n if (!this.control.control.validator) {\r\n return false;\r\n }\r\n\r\n const validator = this.control.control.validator({} as AbstractControl);\r\n return (validator && validator.required);\r\n }\r\n writeValue(obj: any): void {\r\n if (this.selectMode === 'single') {\r\n this.valueDate = moment(obj);\r\n } else {\r\n this.valueDate = obj;\r\n }\r\n\r\n // this.property.value = obj;\r\n\r\n // throw new Error('Method not implemented.');\r\n }\r\n public get invalid(): boolean {\r\n return this.control ? this.control.invalid : false;\r\n }\r\n\r\n public get showError(): boolean {\r\n if (!this.control) {\r\n return false;\r\n }\r\n\r\n const { dirty, touched } = this.control;\r\n\r\n return this.invalid ? (dirty || touched) : false;\r\n }\r\n registerOnChange(fn: any) {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any) {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n hasErrors(): boolean {\r\n return this.showError;\r\n }\r\n\r\n ngOnInit() {\r\n this.userPreferencesService\r\n .select(UserPreferenceValues.Locale)\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe(locale => {\r\n // this.dateAdapter.setLocale(locale);\r\n // this.property.locale = locale;\r\n });\r\n\r\n (<MomentDateAdapter>this.dateAdapter).overrideDisplayFormat = 'DD/MM/YYYY';\r\n\r\n /* if (this.property.value) {\r\n this.valueDate = moment(this.property.value);\r\n } */\r\n }\r\n\r\n ngOnDestroy() {\r\n this.onDestroy$.next(true);\r\n this.onDestroy$.complete();\r\n }\r\n\r\n showProperty(): boolean {\r\n return this.displayEmpty || !this.property.isEmpty();\r\n }\r\n\r\n showClearAction(): boolean {\r\n return (\r\n this.displayClearAction &&\r\n (!this.property.isEmpty() || !!this.property.default)\r\n );\r\n }\r\n\r\n isEditable(): boolean {\r\n return this.editable;\r\n }\r\n isDisabled(): boolean {\r\n return this.disabled;\r\n }\r\n showDatePicker() {\r\n this.datepicker.open();\r\n }\r\n\r\n onDateChanged(newDateValue) {\r\n if (this.valueDate) {\r\n if (this.selectMode === 'single') {\r\n const momentDate = moment(this.valueDate, this.dateFormat, true);\r\n if (momentDate.isValid()) {\r\n //this.property.value = momentDate.toDate();\r\n this.onChange(momentDate.toDate());\r\n this.onTouched();\r\n // this.dynamicFormUpdateService.update(this.property, momentDate.toDate());\r\n }\r\n } else {\r\n this.onChange(this.valueDate);\r\n this.onTouched();\r\n }\r\n\r\n } else {\r\n this.onChange(null);\r\n this.onTouched();\r\n }\r\n }\r\n\r\n onDateClear() {\r\n this.valueDate = null;\r\n this.onChange(this.valueDate);\r\n this.onTouched();\r\n // this.dynamicFormUpdateService.update(this.property, null);\r\n //this.property.value = null;\r\n this.property.default = null;\r\n }\r\n}\r\n","<div class=\"app-property-value\">\r\n <div class=\"app-input-wrapper\">\r\n <ng-container *ngIf=\"label\">\r\n <label class=\"\" for=\"formGroupInputSmall\"\r\n >{{ label | translate\r\n }}<span *ngIf=\"isRequired()\" class=\"text-danger m-1\">*</span>\r\n </label>\r\n </ng-container>\r\n <div class=\"input-container\">\r\n <ng-container *ngIf=\"isEditable(); else readOnly\">\r\n\r\n <button *ngIf=\"!isfilter\" type=\"button\" class=\"claendar-icon\" [owlDateTimeTrigger]=\"dt3\">\r\n <i class=\"bi bi-calendar-week icon\"></i> </button>\r\n <input\r\n class=\"form-control\"\r\n [disabled]=\"isDisabled() || null\"\r\n (blur)=\"onTouched($event)\"\r\n [min]=\"min\"\r\n [max]=\"max\"\r\n [selectMode]=\"selectMode\"\r\n [required]=\"isRequired\"\r\n [(ngModel)]=\"valueDate\"\r\n (ngModelChange)=\"onDateChanged($event)\"\r\n autocomplete=\"false\"\r\n [owlDateTimeTrigger]=\"dt3\"\r\n [owlDateTime]=\"dt3\"\r\n placeholder=\"{{ placeholder }}\"\r\n />\r\n <button type=\"button\" *ngIf=\"valueDate\" (click)=\"onDateClear()\" class=\"relative mx-1 clear-date-btn\"\r\n [ngClass]=\"{'d-none': isDisabled()}\">\r\n <i class=\"clear-date-icon material-icons flex mr-1\">&#xE14C;</i>\r\n </button>\r\n <owl-date-time\r\n [startAt]=\"startAt\"\r\n [pickerType]=\"pickerType\"\r\n #dt3\r\n ></owl-date-time>\r\n\r\n <mat-error\r\n [attr.data-automation-id]=\"'card-textitem-error-'\"\r\n class=\"app-textitem-editable-error\"\r\n *ngIf=\"hasErrors()\"\r\n >\r\n <ul>\r\n <li *ngIf=\"control.errors.required\">\r\n {{ \"VALIDATORS.REQUIRED\" | translate }}\r\n </li>\r\n </ul>\r\n </mat-error>\r\n </ng-container>\r\n <ng-template #readOnly>\r\n {{ valueDate | date }}\r\n </ng-template>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { DateTimeAdapter, OwlDateTimeIntl } from '@busacca/ng-pick-datetime';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { UserPreferencesService } from '../../../../Core/services/user/user-preferences.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class owlDateTimeIntl extends OwlDateTimeIntl {\r\n cancelBtnLabel = 'Cancel';\r\n setBtnLabel = 'Set';\r\n\r\n private currentLang;\r\n\r\n /** A label for the up second button (used by screen readers). */\r\n upSecondLabel = 'Add a second';\r\n\r\n /** A label for the down second button (used by screen readers). */\r\n downSecondLabel = 'Minus a second';\r\n\r\n /** A label for the up minute button (used by screen readers). */\r\n upMinuteLabel = 'Add a minute';\r\n\r\n /** A label for the down minute button (used by screen readers). */\r\n downMinuteLabel = 'Minus a minute';\r\n\r\n /** A label for the up hour button (used by screen readers). */\r\n upHourLabel = 'Add a hour';\r\n\r\n /** A label for the down hour button (used by screen readers). */\r\n downHourLabel = 'Minus a hour';\r\n\r\n /** A label for the previous month button (used by screen readers). */\r\n prevMonthLabel = 'Previous month';\r\n\r\n /** A label for the next month button (used by screen readers). */\r\n nextMonthLabel = 'Next month';\r\n\r\n /** A label for the previous year button (used by screen readers). */\r\n prevYearLabel = 'Previous year';\r\n\r\n /** A label for the next year button (used by screen readers). */\r\n nextYearLabel = 'Next year';\r\n\r\n /** A label for the previous multi-year button (used by screen readers). */\r\n prevMultiYearLabel = 'Previous 21 years';\r\n\r\n /** A label for the next multi-year button (used by screen readers). */\r\n nextMultiYearLabel = 'Next 21 years';\r\n\r\n /** A label for the 'switch to month view' button (used by screen readers). */\r\n switchToMonthViewLabel = 'Change to month view';\r\n\r\n /** A label for the 'switch to year view' button (used by screen readers). */\r\n switchToMultiYearViewLabel = 'Choose month and year';\r\n\r\n /** A label for the range 'from' in picker info */\r\n rangeFromLabel = 'From';\r\n\r\n /** A label for the range 'to' in picker info */\r\n rangeToLabel = 'To';\r\n\r\n /** A label for the hour12 button (AM) */\r\n hour12AMLabel = 'AM';\r\n\r\n /** A label for the hour12 button (PM) */\r\n hour12PMLabel = 'PM';\r\n\r\n constructor(\r\n private translate: TranslateService,\r\n private userPreference: UserPreferencesService,\r\n private dateTimeAdapter: DateTimeAdapter<any>\r\n ) {\r\n super();\r\n this.getLang();\r\n this.translate.onLangChange.subscribe((lang) => {\r\n this.getLang();\r\n });\r\n }\r\n\r\n public getLang() {\r\n this.currentLang = this.userPreference.locale;\r\n this.dateTimeAdapter.setLocale(this.currentLang);\r\n const properties = Object.getOwnPropertyNames(this);\r\n properties.forEach((property) => {\r\n if (typeof this[property] !== 'string') {\r\n return;\r\n }\r\n this.translate.get('DATETIME_OWL.' + property).subscribe((text) => {\r\n this[property] = text;\r\n });\r\n });\r\n }\r\n}\r\n","export class DepartmentConstants {\r\n public static fields = {\r\n title: 'dc:title',\r\n description: 'dc:description',\r\n agencyCode: 'dept:agencyCode',\r\n arabicName: 'dept:arabicName',\r\n englishName: 'dept:englishName',\r\n deptTypee: 'dept:deptTypee',\r\n isAllowRecExternal: 'dept:isAllowRecExternal',\r\n manager: 'dept:manager',\r\n };\r\n}\r\n","import { EventEmitter, Inject, Injectable } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { TreeviewItem } from 'ngx-treeview';\r\nimport { from, Observable, Subject } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { AdapterService } from '../../../../../Core/adapters/adapter.service';\r\nimport { CallApiService } from '../../../../../Core/services/callApi/call-api.service';\r\nimport { NuxeoService } from '../../../../../Core/services/nuxeo/nuxeo.service';\r\nimport { TranslationService } from '../../../../../Core/services/translation/translation.service';\r\nimport { DepartmentConstants } from '../constants/department';\r\nimport { Cacheable, CacheBuster, LocalStorageStrategy } from 'ts-cacheable';\r\nexport const departmentCacheBuster$ = new Subject<void>();\r\nexport const minute = 60000;\r\n/** @ignore */\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class DepartmentApiService {\r\n arabic;\r\n constructor(\r\n private CallApiService: CallApiService,\r\n private translation: TranslationService,\r\n private nuxeoService: NuxeoService,\r\n private adapter: AdapterService, \r\n @Inject('environment') private environment\r\n ) {\r\n this.translation.isArabic.subscribe((res) => {\r\n this.arabic = res;\r\n });\r\n }\r\n\r\n @Cacheable({\r\n cacheBusterObserver: departmentCacheBuster$,\r\n storageStrategy: LocalStorageStrategy,\r\n maxAge: 60 * minute,\r\n })\r\n getDepartmentTree(): Observable<any> {\r\n return this.CallApiService.query(\r\n {\r\n pageProvider: 'PP_Department',\r\n currentPageIndex: 0,\r\n offset: 0,\r\n pageSize: 40,\r\n quickFilters: 'Parent Dept',\r\n },\r\n {\r\n headers: {\r\n 'X-NXproperties': '*',\r\n 'enrichers-document': 'children',\r\n depth: 'max',\r\n },\r\n }\r\n );\r\n }\r\n\r\n @Cacheable({\r\n maxCacheCount: 200,\r\n storageStrategy: LocalStorageStrategy,\r\n cacheBusterObserver: departmentCacheBuster$,\r\n maxAge: 120 * minute,\r\n })\r\n getDepartmentDetails(code){\r\n return this.CallApiService.query(\r\n {\r\n pageProvider: 'PP_Department_With_ElasticSearch',\r\n currentPageIndex: 0,\r\n offset: 0,\r\n pageSize: 40,\r\n dublincore_title: code,\r\n },\r\n {\r\n headers: {\r\n 'X-NXproperties': '*',\r\n 'enrichers-document': 'children',\r\n depth: 'max',\r\n },\r\n }\r\n );\r\n }\r\n\r\n @Cacheable({\r\n maxCacheCount: 200,\r\n cacheBusterObserver: departmentCacheBuster$,\r\n storageStrategy: LocalStorageStrategy,\r\n maxAge: 60 * minute,\r\n })\r\n getDepartmentNestedTree(code): Observable<any> {\r\n return this.CallApiService.query(\r\n {\r\n pageProvider: 'PP_Department',\r\n currentPageIndex: 0,\r\n offset: 0,\r\n pageSize: 40,\r\n department_parentDepartmentCode: code,\r\n },\r\n {\r\n headers: {\r\n 'X-NXproperties': '*',\r\n 'enrichers-document': 'children',\r\n depth: 'max',\r\n },\r\n }\r\n );\r\n }\r\n\r\n getDepartment(uid) {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .repository()\r\n .headers({\r\n 'X-NXproperties': '*',\r\n })\r\n .fetch(uid)\r\n ).pipe(\r\n map((data: any) => {\r\n return this.adapter.adaptIn(data, DepartmentConstants.fields);\r\n }),\r\n catchError((err) => {\r\n throw err;\r\n })\r\n );\r\n }\r\n // testing\r\n @CacheBuster({\r\n cacheBusterNotifier: departmentCacheBuster$,\r\n })\r\n createDepartment(Department, parentId) {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .operation('AC_UA_Depatrment_Create', {\r\n url: `${this.environment.nuxeo}${this.environment.customAutomation}`,\r\n })\r\n .input(parentId)\r\n .context({\r\n department: this.adapter.adaptOut(\r\n Department,\r\n DepartmentConstants.fields\r\n ),\r\n })\r\n .execute()\r\n ).pipe(\r\n catchError((err) => {\r\n console.log(err);\r\n throw err;\r\n })\r\n );\r\n }\r\n\r\n @CacheBuster({\r\n cacheBusterNotifier: departmentCacheBuster$,\r\n })\r\n createDepartmentInRoot(Department) {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .operation('AC_UA_Depatrment_Create_InRoot', {\r\n url: `${this.environment.nuxeo}${this.environment.customAutomation}`,\r\n })\r\n .context({\r\n department: this.adapter.adaptOut(\r\n Department,\r\n DepartmentConstants.fields\r\n ),\r\n })\r\n .execute()\r\n ).pipe(\r\n catchError((err) => {\r\n console.log(err);\r\n throw err;\r\n })\r\n );\r\n }\r\n @CacheBuster({\r\n cacheBusterNotifier: departmentCacheBuster$,\r\n })\r\n updateDepartment(Department, departmentId) {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .operation('AC_UA_Department_Update', {\r\n url: `${this.environment.nuxeo}${this.environment.customAutomation}`,\r\n })\r\n .input(departmentId)\r\n .context({\r\n department: this.adapter.adaptOut(\r\n Department,\r\n DepartmentConstants.fields\r\n ),\r\n })\r\n .execute()\r\n ).pipe(\r\n catchError((err) => {\r\n console.log(err);\r\n throw err;\r\n })\r\n );\r\n }\r\n recursiveFill(\r\n entries,\r\n level = 0,\r\n treeview = true,\r\n collapsed = true\r\n ): TreeviewItem[] {\r\n return entries.map((item) => {\r\n let treeViewObj = treeview\r\n ? {\r\n text: this.arabic\r\n ? item.properties\r\n ? item.properties['dept:arabicName']\r\n : '--'\r\n : item.properties\r\n ? item.properties['dept:englishName']\r\n : '--',\r\n value: { ...item, level },\r\n }\r\n : {\r\n text: this.arabic\r\n ? item.properties\r\n ? item.properties['dept:arabicName']\r\n : '--'\r\n : item.properties\r\n ? item.properties['dept:englishName']\r\n : '--',\r\n value: item.title,\r\n };\r\n const treeItem = new TreeviewItem({\r\n ...treeViewObj,\r\n collapsed: level >= 2 && collapsed ? true : false,\r\n });\r\n if (\r\n item.contextParameters &&\r\n item.contextParameters.children.entries.length\r\n ) {\r\n treeItem.children = this.recursiveFill(\r\n item.contextParameters.children.entries,\r\n level + 1\r\n );\r\n }\r\n return treeItem;\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n TreeviewItem,\r\n TreeviewSelection,\r\n DefaultTreeviewI18n,\r\n} from 'ngx-treeview';\r\nimport { TranslationService } from '../../../../Core/services/translation/translation.service';\r\n\r\n/** @ignore */\r\n@Injectable()\r\nexport class DropdownTreeviewSelectI18n extends DefaultTreeviewI18n {\r\n constructor(private translation: TranslationService) {\r\n super();\r\n }\r\n private internalSelectedItem: TreeviewItem;\r\n private internalSelectionLength: number;\r\n\r\n set selectedItem(value: TreeviewItem) {\r\n this.internalSelectedItem = value;\r\n }\r\n\r\n get selectedItem(): TreeviewItem {\r\n return this.internalSelectedItem;\r\n }\r\n\r\n // for multiple\r\n set selectionLength(value: number) {\r\n this.internalSelectionLength = value;\r\n }\r\n get selectionLength(): number {\r\n return this.internalSelectionLength;\r\n }\r\n getFilterPlaceholder(): string {\r\n let placeHolder;\r\n this.translation.isArabic.subscribe((arabic) => {\r\n arabic\r\n ? (placeHolder = 'أدخل رمز القسم للتصفية')\r\n : (placeHolder = 'Type Department Code To Filter ');\r\n });\r\n return placeHolder;\r\n }\r\n getText(selection: TreeviewSelection): string {\r\n let placeHolder;\r\n let suffix;\r\n this.translation.isArabic.subscribe((arabic) => {\r\n arabic\r\n ? (placeHolder = 'الرجاء إختيار القسم')\r\n : (placeHolder = 'Please select Department');\r\n\r\n arabic ? (suffix = 'أقسام مختارة') : (suffix = 'Departments Selected');\r\n });\r\n return this.internalSelectedItem\r\n ? this.internalSelectedItem.text\r\n : this.internalSelectionLength\r\n ? `${this.internalSelectionLength} ${suffix}`\r\n : placeHolder;\r\n }\r\n getFilterNoItemsFoundText(): string {\r\n let noItemText: string;\r\n this.translation.isArabic.subscribe((arabic) => {\r\n arabic\r\n ? (noItemText = 'لايوجد أقسام للعرض')\r\n : (noItemText = 'No Departments Found');\r\n });\r\n return noItemText;\r\n }\r\n}\r\n","import {\r\n trigger,\r\n state,\r\n style,\r\n transition,\r\n animate,\r\n} from '@angular/animations';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { ToastrService, ToastPackage, Toast } from 'ngx-toastr';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport {\r\n UserPreferencesService,\r\n UserPreferenceValues,\r\n} from '../../../../Core/services/user/user-preferences.service';\r\nimport { ToastType } from '../../interfaces/toast-type.interface';\r\n\r\n@Component({\r\n selector: 'cts-custom-toastr',\r\n templateUrl: './custom-toastr.component.html',\r\n styleUrls: ['./custom-toastr.component.scss'],\r\n animations: [\r\n // the fade-in/fade-out animation.\r\n trigger('simpleFadeAnimation', [\r\n // the \"in\" style determines the \"resting\" state of the element when it is visible.\r\n state('in', style({ opacity: 1 })),\r\n\r\n // fade in when created. this could also be written as transition('void => *')\r\n transition(':enter', [style({ opacity: 0 }), animate(200)]),\r\n\r\n // fade out when destroyed. this could also be written as transition('void => *')\r\n transition(':leave', animate(400, style({ opacity: 0 }))),\r\n ]),\r\n ],\r\n})\r\nexport class CustomToastrComponent extends Toast implements OnInit {\r\n lang;\r\n type: ToastType;\r\n value:any\r\n private onDestroy$ = new Subject<boolean>();\r\n constructor(\r\n protected toastrService: ToastrService,\r\n public toastPackage: ToastPackage,\r\n private translate: TranslateService,\r\n public userPreferenceService?: UserPreferencesService\r\n ) {\r\n super(toastrService, toastPackage);\r\n }\r\n ngOnInit(): void {\r\n this.type = this.toastPackage.toastRef.componentInstance.type;\r\n this.value = this.toastPackage.toastRef.componentInstance.customMsg;\r\n if (this.userPreferenceService) {\r\n this.userPreferenceService\r\n .select(UserPreferenceValues.Locale)\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe((locale) => {\r\n this.lang = this.translate.currentLang === 'ar' ? 'rtl' : 'ltr';\r\n });\r\n }\r\n }\r\n setbBackgroundColor() {\r\n let classes = {\r\n success: this.type === 'success',\r\n error: this.type === 'error',\r\n notification: this.type === 'notification',\r\n };\r\n\r\n return classes;\r\n }\r\n setTextColor() {\r\n let classes = {\r\n 'msg-success': this.type === 'success',\r\n 'msg-error': this.type === 'error',\r\n 'msg-notification': this.type === 'notification',\r\n };\r\n return classes;\r\n }\r\n}\r\n","<div\r\n class=\"toast-container\"\r\n [style.display]=\"state.value === 'inactive' ? 'none' : ''\"\r\n [dir]=\"lang\"\r\n [@simpleFadeAnimation]=\"'in'\"\r\n>\r\n <div class=\"icon-container rounded-s-md\" [ngClass]=\"setbBackgroundColor()\">\r\n <ng-container [ngSwitch]=\"type\">\r\n <ng-container *ngSwitchCase=\"'success'\">\r\n <span class=\"bi bi-check2 toast-icon\"></span>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'error'\">\r\n <span class=\"bi bi-x toast-icon\"></span>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'notification'\">\r\n <span class=\"bi bi-bell-fill notification-icon\"></span>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <div class=\"toast-content-container\">\r\n <div\r\n *ngIf=\"title\"\r\n [class]=\"options.titleClass\"\r\n [attr.aria-label]=\"title\"\r\n class=\"toast-content\"\r\n >\r\n {{ title | translate }}\r\n </div>\r\n <div\r\n *ngIf=\"message\"\r\n role=\"alert\"\r\n aria-live=\"polite\"\r\n [class]=\"options.messageClass\"\r\n [attr.aria-label]=\"message\"\r\n class=\"message\"\r\n [ngClass]=\"setTextColor()\"\r\n >\r\n {{ message | translate : { value:value } }}\r\n </div>\r\n </div>\r\n <div *ngIf=\"options.closeButton\" (click)=\"remove()\" class=\"remove\">\r\n <span style=\"font-size: 26px; color: gray\" aria-hidden=\"true\">&times;</span>\r\n </div>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { ActiveToast, IndividualConfig, ToastrService } from 'ngx-toastr';\r\nimport { CustomToastrComponent } from '../components/custom-toastr/custom-toastr.component';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport {\r\n UserPreferencesService,\r\n UserPreferenceValues,\r\n} from '../../../Core/services/user/user-preferences.service';\r\nimport { ToastType } from '../interfaces/toast-type.interface';\r\nimport { TranslationService } from '../../../Core/services/translation/translation.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class CustomToastrService {\r\n private onDestroy$ = new Subject<boolean>();\r\n isArabic: boolean;\r\n constructor(\r\n private translation: TranslationService,\r\n private toastr: ToastrService,\r\n public userPreferenceService?: UserPreferencesService\r\n ) {\r\n this.setDirection();\r\n }\r\n setDirection(): void {\r\n this.translation.isArabic.subscribe((arabic) => {\r\n arabic\r\n ? (this.toastr.toastrConfig.positionClass = 'toast-bottom-left')\r\n : (this.toastr.toastrConfig.positionClass = 'toast-bottom-right');\r\n });\r\n }\r\n show(\r\n type: ToastType,\r\n title,\r\n message,\r\n customOptions?: Partial<IndividualConfig>,\r\n customMsg?\r\n ): ActiveToast<any> {\r\n const activeToast = this.toastr.show(message, title, {\r\n toastComponent: CustomToastrComponent,\r\n closeButton: true,\r\n timeOut: 5000,\r\n enableHtml: true,\r\n toastClass: '',\r\n ...customOptions,\r\n });\r\n activeToast.toastRef.componentInstance.type = type;\r\n activeToast.toastRef.componentInstance.customMsg = customMsg;\r\n return activeToast;\r\n }\r\n \r\n ngOnDestroy(): void {\r\n this.onDestroy$.unsubscribe();\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n OnChanges,\r\n Optional,\r\n Self,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NgControl,\r\n} from '@angular/forms';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { DynamicFormTextItemModel } from '../../models/dynamic-form.models';\r\nimport { DynamicFormUpdateService } from '../../services/dynamic-form-update.service';\r\n\r\n/**\r\n * A text field input that can be used inside reactive or template driven forms\r\n * @title\r\n * Text Field\r\n * @example\r\n * <app-dynamic-form-textitem\r\n * [horizontalAlign]=\"false\"\r\n * formControlName=\"controlName\"\r\n * [placeholder]=\"'PATH.TO.PLACEHOLDER.STRING'\"\r\n * ></app-dynamic-form-textitem>\r\n */\r\n\r\n@Component({\r\n selector: 'app-dynamic-form-textitem',\r\n templateUrl: './dynamic-form-textitem.component.html',\r\n styleUrls: ['./dynamic-form-textitem.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class DynamicFormTextItemComponent\r\n implements OnChanges, ControlValueAccessor\r\n{\r\n static DEFAULT_SEPARATOR = ', ';\r\n\r\n @Input() autoComplete = false; // to get suggestions from backend when user type some letters\r\n @Input() autoComplete_pageProvider = '';\r\n @Input() autoComplete_propertyName = '';\r\n @Input() autoComplete_propertyKey = '';\r\n @Input() autoCompleteValueKey = '';\r\n\r\n /** input type */\r\n @Input()\r\n type = 'text';\r\n /** @deprecated */\r\n @Input()\r\n property: DynamicFormTextItemModel;\r\n /** Field Label */\r\n @Input()\r\n label;\r\n /** is Editable */\r\n @Input()\r\n editable = true;\r\n /** Placeholder string */\r\n @Input() placeholder = '';\r\n /** is disabled */\r\n @Input()\r\n disabled = false;\r\n /** @deprecated */\r\n @Input()\r\n displayEmpty = true;\r\n /** should prevent space */\r\n @Input()\r\n preventSpace = false;\r\n /** DOM element Id */\r\n @Input()\r\n id;\r\n\r\n @ViewChild('editorInput')\r\n private editorInput: any;\r\n\r\n inEdit = false;\r\n editedValue: string;\r\n errorMessages: string[];\r\n valueSeparator: string;\r\n showsuggestedOptions = false;\r\n\r\n constructor(\r\n private dynamicFormUpdateService: DynamicFormUpdateService,\r\n public translate: TranslateService,\r\n @Self() @Optional() public control: NgControl\r\n ) {\r\n this.control.valueAccessor = this;\r\n this.valueSeparator = DynamicFormTextItemComponent.DEFAULT_SEPARATOR;\r\n }\r\n onChange: any = () => {};\r\n onTouched: any = () => {};\r\n\r\n isRequired() {\r\n if (!this.control.control.validator) {\r\n return false;\r\n }\r\n\r\n const validator = this.control.control.validator({} as AbstractControl);\r\n return validator && validator.required;\r\n }\r\n writeValue(obj: any): void {\r\n this.editedValue = obj;\r\n //this.property.value = obj;\r\n\r\n // throw new Error('Method not implemented.');\r\n }\r\n public get invalid(): boolean {\r\n return this.control ? this.control.invalid : false;\r\n }\r\n\r\n public get showError(): boolean {\r\n if (!this.control) {\r\n return false;\r\n }\r\n\r\n const { dirty, touched } = this.control;\r\n\r\n return this.invalid ? dirty || touched : false;\r\n }\r\n registerOnChange(fn: any) {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any) {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n ngOnChanges(): void {\r\n /*this.editedValue = this.property.multiline\r\n ? this.property.displayValue\r\n : this.property.value;*/\r\n }\r\n\r\n showProperty(): boolean {\r\n return this.displayEmpty || !this.property.isEmpty();\r\n }\r\n\r\n showClickableIcon(): boolean {\r\n return this.hasIcon() && this.editable;\r\n }\r\n\r\n isEditable(): boolean {\r\n return this.editable;\r\n }\r\n isDisabled(): boolean {\r\n return this.disabled;\r\n }\r\n\r\n isClickable(): boolean {\r\n return !!this.property.clickable;\r\n }\r\n\r\n hasIcon(): boolean {\r\n return !!this.property.icon;\r\n }\r\n\r\n hasErrors(): boolean {\r\n return this.showError;\r\n }\r\n allowSpace(e) {\r\n if (this.preventSpace) {\r\n e.preventDefault();\r\n }\r\n }\r\n setEditMode(editStatus: boolean): void {\r\n this.inEdit = editStatus;\r\n setTimeout(() => {\r\n if (this.editorInput) {\r\n this.editorInput?.nativeElement?.click();\r\n }\r\n }, 0);\r\n }\r\n\r\n reset(event: MouseEvent | KeyboardEvent): void {\r\n // event.stopPropagation();\r\n\r\n /*this.editedValue = this.property.multiline\r\n ? this.property.displayValue\r\n : this.property.value;*/\r\n this.setEditMode(false);\r\n this.resetErrorMessages();\r\n }\r\n\r\n private resetErrorMessages() {\r\n this.errorMessages = [];\r\n }\r\n\r\n update(event: MouseEvent | KeyboardEvent): void {\r\n // event.stopPropagation();\r\n const updatedValue = this.prepareValueForUpload(\r\n this.property,\r\n this.editedValue\r\n );\r\n // this.property.value = updatedValue;\r\n this.onChange(updatedValue);\r\n this.onTouched();\r\n // this.dynamicFormUpdateService.update(this.property, updatedValue);\r\n this.setEditMode(false);\r\n this.resetErrorMessages();\r\n }\r\n\r\n prepareValueForUpload(\r\n property: DynamicFormTextItemModel,\r\n value: string\r\n ): string | string[] {\r\n return value;\r\n }\r\n\r\n onTextAreaInputChange() {\r\n this.errorMessages = this.property.getValidationErrors(this.editedValue);\r\n }\r\n\r\n clicked(): void {\r\n if (typeof this.property.clickCallBack === 'function') {\r\n this.property.clickCallBack();\r\n } else {\r\n this.dynamicFormUpdateService.clicked(this.property);\r\n }\r\n }\r\n\r\n selectItem(title) {\r\n this.editedValue = title;\r\n this.update(null);\r\n this.showsuggestedOptions = false;\r\n this.documentList = [];\r\n }\r\n\r\n documentList: any[] = [];\r\n delayedAction;\r\n waitUntilUserFinishTyping() {\r\n if (this.delayedAction) {\r\n clearTimeout(this.delayedAction);\r\n this.delayedAction = setTimeout(() => {\r\n this.onSearchInputChange();\r\n }, 1500);\r\n } else {\r\n this.delayedAction = setTimeout(() => {\r\n this.onSearchInputChange;\r\n }, 1500);\r\n }\r\n }\r\n\r\n onSearchInputChange() {\r\n if (this.autoComplete) {\r\n let val = this.editorInput.nativeElement.value;\r\n if (val?.length == 0) {\r\n return;\r\n }\r\n let params = {\r\n currentPageIndex: 0,\r\n offset: 0,\r\n pageSize: 40,\r\n pageProvider: this.autoComplete_pageProvider,\r\n };\r\n params[this.autoComplete_propertyName] = val;\r\n this.dynamicFormUpdateService\r\n .getTextBoxSuggestionResults(\r\n this.autoComplete_pageProvider,\r\n params,\r\n this.autoComplete_propertyKey,\r\n this.autoCompleteValueKey\r\n )\r\n .subscribe((data) => {\r\n this.documentList = data.filter((option) =>\r\n option.title.toLowerCase().includes(val.toLowerCase())\r\n );\r\n this.showsuggestedOptions = true;\r\n return this.documentList;\r\n });\r\n }\r\n }\r\n\r\n openOptions(value) {\r\n if (this.autoComplete) {\r\n this.showsuggestedOptions = value;\r\n }\r\n }\r\n}\r\n","<div class=\"app-property-value\">\r\n <div class=\"app-input-wrapper\">\r\n <label *ngIf=\"label\" for=\"formGroupInputSmall\"\r\n >{{ label | translate\r\n }}<span *ngIf=\"isRequired()\" class=\"text-danger m-1\">*</span></label\r\n >\r\n <div class=\"\">\r\n <ng-container *ngIf=\"isEditable(); else readOnly\">\r\n <div class=\"new-one\" (clickOutside)=\"openOptions(false)\">\r\n <input\r\n [id]=\"id\"\r\n [attr.disabled]=\"isDisabled() || null\"\r\n [type]=\"type\"\r\n class=\"form-control\"\r\n [ngClass]=\"{'input-filled' : editedValue }\"\r\n (keydown.space)=\"allowSpace($event)\"\r\n #editorInput\r\n [required]=\"isRequired()\"\r\n [(ngModel)]=\"editedValue\"\r\n (ngModelChange)=\"update($event)\"\r\n (keyup)=\"waitUntilUserFinishTyping()\"\r\n [attr.data-automation-id]=\"'card-textitem-editinput-'\"\r\n placeholder=\"{{ placeholder | translate }}\"\r\n (focus)=\"openOptions(true)\"\r\n />\r\n <div *ngIf=\"documentList.length !== 0\" id=\"suggestedoptions\">\r\n <div\r\n class=\"suggestions-wrapper\"\r\n [ngClass]=\"{ 'd-block': showsuggestedOptions }\"\r\n >\r\n <div\r\n class=\"option\"\r\n id=\"suggestedoptions\"\r\n *ngFor=\"let option of documentList\"\r\n (click)=\"selectItem(option.title)\"\r\n >\r\n {{ option.title }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mat-error\r\n [attr.data-automation-id]=\"'card-textitem-error-'\"\r\n class=\"app-textitem-editable-error\"\r\n *ngIf=\"hasErrors()\"\r\n >\r\n <ul>\r\n <li *ngIf=\"control.errors.required\">\r\n {{ label | translate }} {{ \"VALIDATORS.REQUIRED\" | translate }}\r\n </li>\r\n <li *ngIf=\"control.errors.pattern\">\r\n {{ \"wrong pattern\" | translate }}\r\n </li>\r\n </ul>\r\n </mat-error>\r\n </ng-container>\r\n <ng-template #readOnly>\r\n {{ editedValue }}\r\n </ng-template>\r\n </div>\r\n </div>\r\n</div>\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n Optional,\r\n Output,\r\n Self,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n FormControl,\r\n NgControl,\r\n} from '@angular/forms';\r\nimport { NgSelectComponent } from '@ng-select/ng-select';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Observable } from 'rxjs';\r\n/**\r\n * A dropdown input that can be used inside reactive or template driven forms\r\n * @title\r\n * Dropdown\r\n * @example\r\n * <app-dynamic-form-selectitem\r\n * [data]=\"arrayOfItems\"\r\n * [bindLabel]=\"'bindLabelPropertyName'\"\r\n * [label]=\"'PATH.TO.LABEL.TRANSLATION'\"\r\n * placeholder=\"PATH.TO.PLACEHOLDER.TRANSLATION\"\r\n * [closeOnSelect]=\"true\"\r\n * formControlName=\"controlName\"\r\n * >\r\n * </app-dynamic-form-selectitem>\r\n */\r\n@Component({\r\n selector: 'app-dynamic-form-selectitem',\r\n templateUrl: './dynamic-form-selectitem.component.html',\r\n styleUrls: ['./dynamic-form-selectitem.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class DynamicFormSelectItemComponent\r\n implements OnChanges, ControlValueAccessor {\r\n @ViewChild(NgSelectComponent) ngSelectComponent: NgSelectComponent;\r\n /** Field Label */\r\n @Input() label: string;\r\n /** Property name to bind value to */\r\n @Input() bindValue;\r\n /** Property name to bind label to */\r\n @Input() bindLabel;\r\n /** Items array */\r\n @Input() data;\r\n /** Placeholder string */\r\n @Input() placeholder;\r\n /** can select multiple */\r\n @Input() multiple = false;\r\n /** is searchable */\r\n @Input() searchable = false;\r\n /** should close on select */\r\n @Input() closeOnSelect = true;\r\n /** should hide selected items */\r\n @Input() hideSelectedItems = false;\r\n /** is disabled */\r\n @Input() disabled = false;\r\n /** should show clear action */\r\n @Input() clear = true;\r\n /** is vocabulary select */\r\n @Input() voc = false;\r\n /** vocabulary id for translation (for vocabulary select only) */\r\n @Input() vocId: string;\r\n /** Should show loading indicator */\r\n @Input() loading = false;\r\n /** event emitted with selected items */\r\n @Output() onSelectItems = new EventEmitter();\r\n selection = [];\r\n\r\n buffer = [];\r\n bufferSize = 50;\r\n numberOfItemsFromEndBeforeFetchingMore = 10;\r\n\r\n propagateChange: any = () => { };\r\n validateFn: any = () => { };\r\n\r\n public onTouched: any = () => {\r\n /*Empty*/\r\n };\r\n public get invalid(): boolean {\r\n return this.control ? this.control.invalid : false;\r\n }\r\n\r\n public get showError(): boolean {\r\n if (!this.control) {\r\n return false;\r\n }\r\n\r\n const { dirty, touched } = this.control;\r\n\r\n return this.invalid ? dirty || touched : false;\r\n }\r\n constructor(\r\n public translate: TranslateService,\r\n @Self() @Optional() public control: NgControl\r\n ) {\r\n if (this.control) {\r\n this.control.valueAccessor = this;\r\n }\r\n }\r\n\r\n emitSelection(event) {\r\n this.propagateChange(this.selection);\r\n this.onSelectItems.emit(event);\r\n }\r\n\r\n onScrollToEnd() {\r\n this.fetchMore();\r\n }\r\n\r\n private fetchMore() {\r\n this.loading = true;\r\n const len = this.buffer.length;\r\n const more = this.data.slice(len, this.bufferSize + len);\r\n this.buffer = this.data.concat(more);\r\n this.loading = false;\r\n }\r\n\r\n ngOnChanges(changes): void {\r\n if (\r\n changes.data &&\r\n changes.data.currentValue &&\r\n changes.data.previousValue\r\n ) {\r\n this.data = [...changes.data.currentValue];\r\n this.buffer = this.data.slice(0, this.bufferSize);\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.buffer = (this.data || []).slice(0, this.bufferSize);\r\n this.buffer.map((item) => {\r\n item.isSelected = false;\r\n });\r\n }\r\n\r\n writeValue(value) {\r\n if (value) {\r\n this.selection = value;\r\n }else{ //added to allow reseting ui when resetting form\r\n this.selection = [];\r\n }\r\n }\r\n registerOnChange(fn) {\r\n this.propagateChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any) {\r\n this.onTouched = fn;\r\n }\r\n\r\n validate(c: FormControl) {\r\n return this.validateFn(c);\r\n }\r\n isRequired() {\r\n if (!this.control || !this.control.control.validator) {\r\n return false;\r\n }\r\n\r\n const validator = this.control.control.validator({} as AbstractControl);\r\n return validator && validator.required;\r\n }\r\n hasErrors(): boolean {\r\n return this.showError;\r\n }\r\n reset() {\r\n this.ngSelectComponent.handleClearClick();\r\n }\r\n}\r\n","<ng-container *ngIf=\"label\">\r\n <div>\r\n <label class=\"select-label\"\r\n >{{ label | translate\r\n }}<span *ngIf=\"isRequired()\" class=\"text-danger m-1\">*</span></label\r\n >\r\n </div>\r\n</ng-container>\r\n<ng-select\r\n [items]=\"buffer\"\r\n [bindLabel]=\"bindLabel\"\r\n [bindValue]=\"bindValue\"\r\n [placeholder]=\"placeholder\"\r\n [multiple]=\"multiple\"\r\n [clearable]=\"clear\"\r\n [searchable]=\"searchable\"\r\n [closeOnSelect]=\"closeOnSelect\"\r\n [hideSelected]=\"hideSelectedItems\"\r\n [loading]=\"loading\"\r\n (scrollToEnd)=\"onScrollToEnd()\"\r\n (change)=\"emitSelection($event)\"\r\n [disabled]=\"disabled\"\r\n [(ngModel)]=\"selection\"\r\n>\r\n <!-- template for viewing options in single and multi select -->\r\n <ng-template\r\n ng-option-tmp\r\n let-item=\"item\"\r\n let-item$=\"item$\"\r\n let-index=\"index\"\r\n >\r\n <div class=\"option-wrapper\">\r\n <span class=\"check-box-wrapper\" *ngIf=\"multiple\">\r\n <input\r\n id=\"item-{{ index }}\"\r\n type=\"checkbox\"\r\n [ngModel]=\"item$.selected\"\r\n />\r\n <span class=\"icon-wrapper\">\r\n <span class=\"bi bi-check2 icon\"></span>\r\n </span>\r\n </span>\r\n <span *ngIf=\"!voc\" class=\"label-wrapper\">\r\n {{ item[bindLabel] | translate }}\r\n </span>\r\n <span *ngIf=\"voc\" class=\"label-wrapper\">\r\n {{ \"vocabulary.\" + vocId + \".\" + item[bindValue] | translate }}\r\n </span>\r\n </div>\r\n </ng-template>\r\n\r\n <!-- template for viewing single select selected value -->\r\n <ng-template ng-label-tmp let-item=\"item\">\r\n <span *ngIf=\"!voc\">\r\n {{ (bindLabel ? item[bindLabel] : item) | translate }}\r\n </span>\r\n <span *ngIf=\"voc\">\r\n {{ \"vocabulary.\" + vocId + \".\" + item[bindValue] | translate }}\r\n </span>\r\n </ng-template>\r\n\r\n <!-- template for viewing multi select selected values -->\r\n <ng-template ng-multi-label-tmp let-items=\"items\" let-clear=\"clear\">\r\n <div class=\"ng-value\" *ngFor=\"let item of items ? items : []\">\r\n <span class=\"ng-value-label\">\r\n {{ (bindLabel ? item[bindLabel] : item) | translate }}\r\n </span>\r\n <span\r\n *ngIf=\"clear\"\r\n class=\"ng-value-icon right\"\r\n (click)=\"clear(item)\"\r\n aria-hidden=\"true\"\r\n >×</span\r\n >\r\n </div>\r\n </ng-template>\r\n</ng-select>\r\n<mat-error\r\n [attr.data-automation-id]=\"'card-textitem-error-'\"\r\n class=\"app-textitem-editable-error\"\r\n *ngIf=\"hasErrors()\"\r\n>\r\n <ul>\r\n <li *ngIf=\"control.errors.required\">\r\n {{ \"VALIDATORS.REQUIRED\" | translate }}\r\n </li>\r\n </ul>\r\n</mat-error>\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { from, Observable, of } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { NuxeoService } from '../../../Core/services/nuxeo/nuxeo.service';\r\nimport { opType } from '../interfaces/op-type.interface';\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class VocabularyApiService {\r\n vocabular = {};\r\n constructor(\r\n private nuxeoService: NuxeoService,\r\n private translate: TranslateService, @Inject('environment') private environment\r\n ) {}\r\n\r\n getVocabularyList(listName): Observable<any> {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .operation('Directory.SuggestEntries', {})\r\n .params({\r\n directoryName: listName,\r\n dbl10n: false,\r\n localize: true,\r\n lang: this.translate.currentLang,\r\n searchTerm: '',\r\n })\r\n .execute()\r\n );\r\n }\r\n vocabularyOperations(opName: opType, body) {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .operation(opName, {\r\n url: `${this.environment.nuxeo}${this.environment.customAutomation}`,\r\n })\r\n .context({ vocabulary: body })\r\n .execute()\r\n ).pipe(\r\n catchError((err) => {\r\n console.log(err);\r\n throw err;\r\n })\r\n );\r\n }\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Optional,\r\n Output,\r\n Self,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n FormControl,\r\n NgControl,\r\n} from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { VocabularyApiService } from '../../../vocabulary/services/vocabulary-api.service';\r\nimport { Cacheable, LocalStorageStrategy } from 'ts-cacheable';\r\nimport { DynamicFormSelectItemComponent } from '../dynamic-form-selectitem/dynamic-form-selectitem.component';\r\n\r\n/**\r\n * A vocabulary dropdown input integrated with nuxeo vocabulary API,\r\n * that can be used inside reactive or template driven forms\r\n * @title\r\n * vocabulary dropdown\r\n * @example\r\n * <app-dynamic-form-vocabulary-item\r\n * [label]=\"'PATH.TO.LABEL.TRANSLATION'\"\r\n * [bindLabel]=\"'bindLabelPropertyName'\"\r\n * [bindValue]=\"'bindValuePropertyName'\"\r\n * placeholder=\"'PATH.TO.PLACEHOLDER.TRANSLATION'\"\r\n * [multiple]=\"false\"\r\n * [searchable]=\"false\"\r\n * [closeOnSelect]=\"true\"\r\n * [hideSelectedItems]=\"false\"\r\n * [vocabularyType]=\"'VocabularyKey'\"\r\n * formControlName=\"controlName\"\r\n * >\r\n * </app-dynamic-form-vocabulary-item>\r\n */\r\n@Component({\r\n selector: 'app-dynamic-form-vocabulary-item',\r\n templateUrl: './dynamic-form-vocabulary-item.component.html',\r\n styleUrls: ['./dynamic-form-vocabulary-item.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class DynamicFormVocabularyItemComponent\r\n implements ControlValueAccessor {\r\n @ViewChild(DynamicFormSelectItemComponent)\r\n DynamicFormSelectItemComponent: DynamicFormSelectItemComponent;\r\n\r\n data = [];\r\n /** Bind value to property name */\r\n @Input() bindValue;\r\n /** Bind label to property name */\r\n @Input() bindLabel;\r\n /** Placeholder string */\r\n @Input() placeholder;\r\n /** Can select multiple */\r\n @Input() multiple = false;\r\n /** Is searchable */\r\n @Input() searchable = true;\r\n /** Should close on select */\r\n @Input() closeOnSelect = true;\r\n /** Should hide selected items */\r\n @Input() hideSelectedItems = false;\r\n /** Vocabulary list API Key */\r\n @Input() vocabularyType = '';\r\n /** Field Label */\r\n @Input() label;\r\n @Input() cacheable = true;\r\n @Input() shwoAllValues = true\r\n /** Event emitted on value is selected */\r\n @Output() onSelecting = new EventEmitter();\r\n loading = false;\r\n selection;\r\n\r\n // function related to value accessor\r\n propagateChange: any = () => { };\r\n validateFn: any = () => { };\r\n public onTouched: any = () => {\r\n /*Empty*/\r\n };\r\n public get invalid(): boolean {\r\n return this.control ? this.control.invalid : false;\r\n }\r\n\r\n public get showError(): boolean {\r\n if (!this.control) {\r\n return false;\r\n }\r\n\r\n const { dirty, touched } = this.control;\r\n\r\n return this.invalid ? dirty || touched : false;\r\n }\r\n constructor(\r\n private vocabularyApi: VocabularyApiService,\r\n @Self() @Optional() public control: NgControl\r\n ) {\r\n this.control.valueAccessor = this;\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.vocabularyType) {\r\n this.getLisOfOptions(this.vocabularyType);\r\n }\r\n }\r\n\r\n getLisOfOptions(type) {\r\n this.loading = true;\r\n const callApi = this.cacheable\r\n ? this.getCacheableVocabularyList(type)\r\n : this.getVocabularyList(type);\r\n callApi.subscribe((res) => {\r\n this.loading = false;\r\n this.data = !this.shwoAllValues ? res.filter(item => !item.id.includes('archived') && !item.id.includes('draft')) : res;\r\n });\r\n }\r\n\r\n @Cacheable({\r\n maxCacheCount: 1000,\r\n storageStrategy: LocalStorageStrategy,\r\n maxAge: 20000,\r\n })\r\n getCacheableVocabularyList(type) {\r\n return this.vocabularyApi.getVocabularyList(type);\r\n }\r\n getVocabularyList(type) {\r\n return this.vocabularyApi.getVocabularyList(type);\r\n }\r\n getSelecteditems(selectedItems) {\r\n this.propagateChange(this.selection);\r\n this.onSelecting.emit(this.selection);\r\n }\r\n\r\n writeValue(value) {\r\n // if (value) { removed to allow reseting ui when resetting form\r\n this.selection = value;\r\n // }\r\n }\r\n\r\n registerOnChange(fn) {\r\n this.propagateChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any) {\r\n this.onTouched = fn;\r\n }\r\n\r\n validate(c: FormControl) {\r\n return this.validateFn(c);\r\n }\r\n isRequired() {\r\n if (!this.control || !this.control.control.validator) {\r\n return false;\r\n }\r\n\r\n const validator = this.control.control.validator({} as AbstractControl);\r\n return validator && validator.required;\r\n }\r\n hasErrors(): boolean {\r\n return this.showError;\r\n }\r\n reset() {\r\n this.DynamicFormSelectItemComponent.reset();\r\n }\r\n}\r\n","<ng-container *ngIf=\"label\">\r\n <div>\r\n <label class=\"select-label\"\r\n >{{ label | translate\r\n }}<span *ngIf=\"isRequired()\" class=\"text-danger m-1\">*</span></label\r\n >\r\n </div>\r\n</ng-container>\r\n<app-dynamic-form-selectitem\r\n [voc]=\"true\"\r\n [vocId]=\"vocabularyType\"\r\n [data]=\"data\"\r\n [bindLabel]=\"bindLabel\"\r\n [bindValue]=\"bindValue\"\r\n [placeholder]=\"placeholder\"\r\n [multiple]=\"multiple\"\r\n [searchable]=\"searchable\"\r\n [closeOnSelect]=\"closeOnSelect\"\r\n [hideSelectedItems]=\"hideSelectedItems\"\r\n [loading]=\"loading\"\r\n (onSelectItems)=\"getSelecteditems($event)\"\r\n [(ngModel)]=\"selection\"\r\n></app-dynamic-form-selectitem>\r\n<mat-error\r\n [attr.data-automation-id]=\"'card-textitem-error-'\"\r\n class=\"app-textitem-editable-error\"\r\n *ngIf=\"hasErrors()\"\r\n>\r\n <ul>\r\n <li *ngIf=\"control.errors.required\">\r\n {{ \"VALIDATORS.REQUIRED\" | translate }}\r\n </li>\r\n </ul>\r\n</mat-error>\r\n","import {\r\n Component,\r\n Input,\r\n Optional,\r\n SkipSelf,\r\n Self,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NgControl,\r\n NG_VALUE_ACCESSOR,\r\n} from '@angular/forms';\r\n\r\n/**\r\n * A toggle input that can be used inside reactive or template driven forms\r\n * @title\r\n * Sliding Toggle\r\n * @example\r\n * <cts-dynamic-form-slide-toggleitem\r\n * [label]=\"'PATH.TO.LABEL.TRANSLATION'\"\r\n * formControlName=\"controlname\"\r\n * >\r\n * </cts-dynamic-form-slide-toggleitem>\r\n */\r\n@Component({\r\n selector: 'cts-dynamic-form-slide-toggleitem',\r\n templateUrl: './dynamic-form-slide-toggleitem.component.html',\r\n styleUrls: ['./dynamic-form-slide-toggleitem.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class DynamicFormSlideToggleitemComponent\r\n implements ControlValueAccessor\r\n{\r\n value;\r\n /** Field label */\r\n @Input()\r\n label;\r\n /** is disabled */\r\n @Input()\r\n disabled: boolean = false;\r\n /** is checked */\r\n @Input()\r\n checked: boolean = false;\r\n /** @deprecated Not used */\r\n @Input()\r\n theme: String;\r\n onChange: any = () => {};\r\n onTouched: any = () => {};\r\n constructor(@Self() @Optional() private control: NgControl) {\r\n this.control.valueAccessor = this;\r\n }\r\n writeValue(obj: boolean): void {\r\n this.value = obj;\r\n }\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n isRequired() {\r\n if (!this.control.control.validator) {\r\n return false;\r\n }\r\n\r\n const validator = this.control.control.validator({} as AbstractControl);\r\n return validator && validator.required;\r\n }\r\n setValue(event) {\r\n this.onChange(event.checked);\r\n }\r\n\r\n ngOnInit(): void {}\r\n}\r\n","<div class=\"dynamic-toggle\">\r\n <mat-slide-toggle\r\n [checked]=\"checked\"\r\n [disabled]=\"disabled\"\r\n [(ngModel)]=\"value\"\r\n (change)=\"setValue($event)\"\r\n >{{ label | translate\r\n }}<span *ngIf=\"isRequired()\" class=\"text-danger m-1\"\r\n >*</span\r\n ></mat-slide-toggle\r\n >\r\n</div>\r\n<!-- [required]=\"isRequired()\" -->\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { TreeviewItem } from 'ngx-treeview';\r\nimport { CustomToastrService } from '../../../custom-toastr/services/custom-toastr.service';\r\nimport { DocumentsService } from '../../../documents/services/documents.service';\r\nimport { DepartmentManagementService } from '../dynamic-form-department/services/department-management.service';\r\nimport { DepartmentApiService } from '../dynamic-form-department/services/department-api.service';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'cts-department-form',\r\n templateUrl: './department-form.component.html',\r\n styleUrls: ['./department-form.component.scss'],\r\n})\r\nexport class DepartmentFormComponent implements OnInit {\r\n loading = false;\r\n depId;\r\n updateMode = false;\r\n depCode;\r\n item: TreeviewItem;\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data,\r\n public dialogRef: MatDialogRef<DepartmentFormComponent>,\r\n private toastr: CustomToastrService,\r\n private departmentManagementService: DepartmentApiService,\r\n ) {}\r\n departmentForm = new FormGroup({\r\n title: new FormControl(null, [Validators.required ,Validators.pattern(new RegExp(\"^\\\\S*$\"))]),\r\n agencyCode: new FormControl('tdf', Validators.required),\r\n arabicName: new FormControl(null, Validators.required),\r\n englishName: new FormControl(null, Validators.required),\r\n deptTypee: new FormControl(null, Validators.required),\r\n description: new FormControl(null),\r\n isAllowRecExternal: new FormControl(false),\r\n // manager: new FormControl(null),\r\n });\r\n\r\n ngOnInit(): void {\r\n this.depId = this.data.depId;\r\n this.updateMode = this.data.updateMode;\r\n this.depCode = this.data.depCode;\r\n this.item = this.data.item;\r\n if (this.updateMode) {\r\n this.getDepartment();\r\n }\r\n }\r\n\r\n filterNullValues(formValue) {\r\n const filtered = {};\r\n for (let key in formValue) {\r\n if (formValue[key]) {\r\n filtered[key] = formValue[key];\r\n }\r\n }\r\n return filtered;\r\n }\r\n save() {\r\n this.loading = true;\r\n const depObj = this.filterNullValues(this.departmentForm.value);\r\n if (this.depId === 'root') {\r\n this.departmentManagementService.createDepartmentInRoot(depObj).subscribe(\r\n (res) => {\r\n this.loading = false;\r\n this.dialogRef.close(true);\r\n this.toastr.show('success', 'success', 'success');\r\n },\r\n (err) => {\r\n this.loading = false;\r\n this.dialogRef.close(false);\r\n this.toastr.show('error', 'error', 'error');\r\n }\r\n );\r\n } else {\r\n this.departmentManagementService\r\n .createDepartment(depObj, this.depId)\r\n .subscribe(\r\n (res) => {\r\n this.loading = false;\r\n this.dialogRef.close(true);\r\n this.toastr.show('success', 'success', 'success');\r\n },\r\n (err) => {\r\n this.loading = false;\r\n this.toastr.show('error', 'error', 'error');\r\n }\r\n );\r\n }\r\n }\r\n departmentFormPopulate(department) {\r\n this.departmentForm.patchValue({\r\n title: department.title,\r\n arabicName: department.arabicName,\r\n englishName: department.englishName,\r\n deptTypee: department.deptTypee,\r\n description: department.description,\r\n isAllowRecExternal: department.isAllowRecExternal,\r\n });\r\n }\r\n getDepartment() {\r\n this.departmentManagementService\r\n .getDepartment(this.depId)\r\n .subscribe((res) => {\r\n this.departmentFormPopulate(res.properties);\r\n });\r\n }\r\n update() {\r\n this.loading = true;\r\n this.departmentManagementService\r\n .updateDepartment(this.departmentForm.value, this.depId)\r\n .subscribe(\r\n (res) => {\r\n this.loading = false;\r\n this.dialogRef.close(true);\r\n this.toastr.show('success', 'success', 'success');\r\n },\r\n (err) => {\r\n this.loading = false;\r\n this.toastr.show('error', 'error', 'error');\r\n }\r\n );\r\n }\r\n}\r\n","<div SetDirRtl class=\"voc-form\">\r\n <div class=\"voc-form-hedaer\">\r\n {{\r\n \"department_management.form.\" + (updateMode ? \"updateHeader\" : \"header\")\r\n | translate\r\n }}\r\n </div>\r\n <form [formGroup]=\"departmentForm\" class=\"row voc-form-body\">\r\n <div class=\"col-lg-6 col-12\">\r\n <app-dynamic-form-textitem\r\n formControlName=\"title\"\r\n [label]=\"'department_management.form.title'\"\r\n [disabled]=\"updateMode\"\r\n [preventSpace]=\"true\"\r\n ></app-dynamic-form-textitem>\r\n <div class=\"hint-msg\">{{ \"department_management.form.hintMsg\" | translate }}</div>\r\n </div>\r\n <!-- <app-dynamic-form-textitem\r\n class=\"col-lg-6 col-12\"\r\n formControlName=\"agencyCode\"\r\n [label]=\"'department_management.form.AgencyCode'\"\r\n ></app-dynamic-form-textitem> -->\r\n <app-dynamic-form-textitem\r\n class=\"col-lg-6 col-12\"\r\n formControlName=\"arabicName\"\r\n [label]=\"'department_management.form.ArabicName'\"\r\n ></app-dynamic-form-textitem>\r\n <app-dynamic-form-textitem\r\n class=\"col-lg-6 col-12\"\r\n formControlName=\"englishName\"\r\n [label]=\"'department_management.form.EnglishName'\"\r\n ></app-dynamic-form-textitem>\r\n <app-dynamic-form-vocabulary-item\r\n class=\"col-lg-6 col-12\"\r\n [label]=\"'department_management.form.deptTypee'\"\r\n [bindLabel]=\"'label'\"\r\n [bindValue]=\"'id'\"\r\n placeholder=\"{{ 'VOCABULARY.SELECT_ITEM' | translate }}\"\r\n [multiple]=\"false\"\r\n [searchable]=\"false\"\r\n [closeOnSelect]=\"true\"\r\n [hideSelectedItems]=\"false\"\r\n [vocabularyType]=\"'VOC_DepartmentType'\"\r\n formControlName=\"deptTypee\"\r\n >\r\n </app-dynamic-form-vocabulary-item>\r\n <app-dynamic-form-textitem\r\n class=\"col-lg-6 col-12\"\r\n formControlName=\"description\"\r\n [label]=\"'department_management.form.Description'\"\r\n ></app-dynamic-form-textitem>\r\n <!-- <cts-dynamic-form-select-users\r\n class=\"col-lg-6 col-12\"\r\n formControlName=\"manager\"\r\n [bindValue]=\"\"\r\n [bindLabel]=\"\"\r\n [label]=\"'department_management.form.Manager'\"\r\n [deptTitle]=\"'all'\"\r\n [bindValue]=\"'properties.username'\"\r\n ></cts-dynamic-form-select-users> -->\r\n\r\n <cts-dynamic-form-slide-toggleitem\r\n class=\"col-lg-6 col-12 isAllowRecExternal\"\r\n formControlName=\"isAllowRecExternal\"\r\n [label]=\"'department_management.form.isAllowRecExternal'\"\r\n ></cts-dynamic-form-slide-toggleitem>\r\n </form>\r\n <div class=\"button-group d-flex flex-row-reverse\">\r\n <cts-button\r\n [theme]=\"'danger'\"\r\n size=\"'regular'\"\r\n class=\"voc-form-close\"\r\n mat-dialog-close\r\n >\r\n {{ \"BUTTONS.CLOSE\" | translate }}\r\n </cts-button>\r\n <cts-button\r\n *ngIf=\"!updateMode\"\r\n [loading]=\"loading\"\r\n size=\"'regular'\"\r\n [theme]=\"'primary'\"\r\n class=\"voc-form-submit\"\r\n (onClick)=\"save()\"\r\n [disabled]=\"departmentForm.invalid\"\r\n >\r\n {{ \"BUTTONS.SAVE\" | translate }}\r\n </cts-button>\r\n <cts-button\r\n *ngIf=\"updateMode\"\r\n [loading]=\"loading\"\r\n size=\"'regular'\"\r\n [theme]=\"'primary'\"\r\n class=\"voc-form-submit\"\r\n (onClick)=\"update()\"\r\n [disabled]=\"departmentForm.invalid\"\r\n >\r\n {{ \"BUTTONS.UPDATE\" | translate }}\r\n </cts-button>\r\n </div>\r\n</div>\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { TreeviewItem } from 'ngx-treeview';\r\nimport { from } from 'rxjs';\r\nimport { catchError, map, take } from 'rxjs/operators';\r\nimport { AppConfigService } from '../../../../../configuration/app-config.service';\r\nimport { AdapterService } from '../../../../../Core/adapters/adapter.service';\r\nimport { NuxeoService } from '../../../../../Core/services/nuxeo/nuxeo.service';\r\nimport { DepartmentFormComponent } from '../../department-form/department-form.component';\r\nimport { DepartmentConstants } from '../constants/department';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class DepartmentManagementService {\r\n constructor(\r\n private nuxeoService: NuxeoService,\r\n private adapter: AdapterService,\r\n private myConfigService: AppConfigService,\r\n private dialog: MatDialog, @Inject('environment') private environment\r\n ) {}\r\n createDepartment(Department, parentId) {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .operation('AC_UA_Depatrment_Create', {\r\n url: `${this.environment.nuxeo}${this.environment.customAutomation}`,\r\n })\r\n .input(parentId)\r\n .context({\r\n department: this.adapter.adaptOut(\r\n Department,\r\n DepartmentConstants.fields\r\n ),\r\n })\r\n .execute()\r\n ).pipe(\r\n catchError((err) => {\r\n console.log(err);\r\n throw err;\r\n })\r\n );\r\n }\r\n createDepartmentInRoot(Department) {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .operation('AC_UA_Depatrment_Create_InRoot', {\r\n url: `${this.environment.nuxeo}${this.environment.customAutomation}`,\r\n })\r\n .context({\r\n department: this.adapter.adaptOut(\r\n Department,\r\n DepartmentConstants.fields\r\n ),\r\n })\r\n .execute()\r\n ).pipe(\r\n catchError((err) => {\r\n console.log(err);\r\n throw err;\r\n })\r\n );\r\n }\r\n updateDepartment(Department, departmentId) {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .operation('AC_UA_Department_Update', {\r\n url: `${this.environment.nuxeo}${this.environment.customAutomation}`,\r\n })\r\n .input(departmentId)\r\n .context({\r\n department: this.adapter.adaptOut(\r\n Department,\r\n DepartmentConstants.fields\r\n ),\r\n })\r\n .execute()\r\n ).pipe(\r\n catchError((err) => {\r\n console.log(err);\r\n throw err;\r\n })\r\n );\r\n }\r\n getDepartment(uid) {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .repository()\r\n .headers({\r\n 'X-NXproperties': '*',\r\n })\r\n .fetch(uid)\r\n ).pipe(\r\n map((data: any) => {\r\n return this.adapter.adaptIn(data, DepartmentConstants.fields);\r\n }),\r\n catchError((err) => {\r\n throw err;\r\n })\r\n );\r\n }\r\n openFormDialog(\r\n e: string = 'root',\r\n update: boolean = false,\r\n depCode?,\r\n item?: TreeviewItem\r\n ) {\r\n return this.dialog\r\n .open(DepartmentFormComponent, {\r\n width: '55%',\r\n panelClass: 'department-dialog-container',\r\n data: { depId: e, updateMode: update, depCode: depCode, item: item },\r\n })\r\n .afterClosed()\r\n .pipe(take(1));\r\n }\r\n}\r\n// .subscribe((data) => {\r\n// if (data) {\r\n// if (typeof data === 'object' && data.item.value.level == 2) {\r\n// return;\r\n// } else {\r\n// // this.department.getLisOfOptions();\r\n// }\r\n// }\r\n// });\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewChild,\r\n OnChanges,\r\n ViewEncapsulation,\r\n OnInit,\r\n OnDestroy,\r\n} from '@angular/core';\r\nimport { isNil } from 'lodash';\r\nimport {\r\n TreeviewI18n,\r\n TreeviewItem,\r\n TreeviewConfig,\r\n DropdownTreeviewComponent,\r\n TreeviewHelper,\r\n} from 'ngx-treeview';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { TranslationService } from '../../../../Core/services/translation/translation.service';\r\nimport { DepartmentManagementService } from '../dynamic-form-department/services/department-management.service';\r\nimport { DepartmentApiService } from '../dynamic-form-department/services/department-api.service';\r\nimport { DropdownTreeviewSelectI18n } from './dropdown-treeview-select-i18n';\r\n/**\r\n * A tree view selector component that can be used in reactive and template driven forms,\r\n * it can be a flat tree or a dropdown\r\n * @title\r\n * Tree view selector\r\n *\r\n * @example\r\n * <app-dynamic-form-treeview-select\r\n * [treeview]=\"false\"\r\n * [multiple]=\"false\"\r\n * [items]=\"itemsTree\"\r\n * (valueChange)=\"onValueChange($event)\"\r\n * [(value)]=\"selectedValue\"\r\n * >\r\n * </app-dynamic-form-treeview-select>\r\n */\r\n@Component({\r\n selector: 'app-dynamic-form-treeview-select',\r\n templateUrl: './dynamic-form-treeview-select.component.html',\r\n styleUrls: ['./dynamic-form-treeview-select.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [{ provide: TreeviewI18n, useClass: DropdownTreeviewSelectI18n }],\r\n})\r\nexport class TreeviewSelectComponent implements OnInit, OnChanges, OnDestroy {\r\n multipleSelection = [];\r\n selectedItem;\r\n selectedParentWithChild = [];\r\n showPlus = false;\r\n preSelected = [];\r\n /** is tree View or dropdown view */\r\n @Input()\r\n treeview = false;\r\n /** use tree view inside form */\r\n @Input()\r\n treeViewAsFormControl = false;\r\n /** Config object */\r\n @Input() config: TreeviewConfig;\r\n /** Items tree */\r\n @Input() items: TreeviewItem[];\r\n /** Selected value */\r\n @Input() value: any;\r\n /** can select multiple */\r\n @Input() multiple: boolean = false;\r\n /** event emitted on value change */\r\n @Output() valueChange = new EventEmitter<any>();\r\n /** event emitted on plus button clicked (for department management) */\r\n @Output() plusClicked = new EventEmitter<any>();\r\n /** event emitted on plus button clicked (for department management) */\r\n @Output() actionClicked = new EventEmitter<any>();\r\n @ViewChild(DropdownTreeviewComponent, { static: false })\r\n dropdownTreeviewComponent: DropdownTreeviewComponent;\r\n filterText: string;\r\n arabic = false;\r\n languageSubscription: Subscription;\r\n onDestroy$: Subject<boolean> = new Subject<boolean>();\r\n\r\n private dropdownTreeviewSelectI18n: DropdownTreeviewSelectI18n;\r\n\r\n // this component is used in two places the flag is this.treeview\r\n\r\n constructor(\r\n public i18n: TreeviewI18n,\r\n private translation: TranslationService,\r\n private departmentApiService: DepartmentApiService,\r\n private departmentManagment: DepartmentManagementService\r\n ) {\r\n this.config = TreeviewConfig.create({\r\n hasAllCheckBox: false,\r\n hasCollapseExpand: false,\r\n hasFilter: true,\r\n maxHeight: 200,\r\n decoupleChildFromParent: true,\r\n });\r\n this.dropdownTreeviewSelectI18n = i18n as DropdownTreeviewSelectI18n;\r\n }\r\n\r\n ngOnInit() {\r\n this.translation.isArabic\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe((res) => {\r\n this.arabic = res;\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.onDestroy$.complete();\r\n }\r\n\r\n ngOnChanges(): void {\r\n if (this.items && this.treeview) {\r\n this.updateSelectedItem();\r\n }\r\n if (!this.treeview && !this.multiple) {\r\n // this. function is to set ui with pre selected value\r\n // delay to make sure that page get the value and send it to here\r\n // we use the value sent to here and search for its item on our items and set it as the selected item\r\n this.items.map((item) => {\r\n this.setPreSeletedItem(item);\r\n });\r\n }\r\n if (\r\n !this.treeview &&\r\n this.multiple &&\r\n this.value &&\r\n this.value.length > 0\r\n ) {\r\n // this.preSelected = this.value;\r\n this.multipleSelection = this.value;\r\n this.dropdownTreeviewSelectI18n.selectionLength =\r\n this.multipleSelection.length;\r\n this.dropdownTreeviewComponent.onSelectedChange([\r\n this.multipleSelection.length,\r\n ]);\r\n }\r\n }\r\n\r\n setPreSeletedItem(item) {\r\n if (item.value === this.value) {\r\n this.select(item);\r\n return;\r\n } else {\r\n if (item.internalChildren) {\r\n item.internalChildren.map((child) => {\r\n this.setPreSeletedItem(child);\r\n });\r\n } else {\r\n return;\r\n }\r\n }\r\n }\r\n\r\n select(item: TreeviewItem): void {\r\n // if (!item.children) {\r\n this.selectItem(item);\r\n // }\r\n }\r\n\r\n private updateSelectedItem(): void {\r\n if (!isNil(this.items)) {\r\n const selectedItem = TreeviewHelper.findItemInList(\r\n this.items,\r\n this.value\r\n );\r\n this.selectItem(selectedItem);\r\n }\r\n }\r\n\r\n private selectItem(item: TreeviewItem): void {\r\n document.body.click();\r\n if (this.dropdownTreeviewSelectI18n.selectedItem !== item) {\r\n this.dropdownTreeviewSelectI18n.selectedItem = item;\r\n if (this.dropdownTreeviewComponent) {\r\n this.dropdownTreeviewComponent.onSelectedChange([item]);\r\n }\r\n\r\n if (item) {\r\n if (this.treeview) {\r\n this.selectedItem = item.value;\r\n // this.valueChange.emit(item.value.title);\r\n this.valueChange.emit(item);\r\n } else {\r\n this.valueChange.emit(item.value);\r\n }\r\n }\r\n }\r\n }\r\n selectMultiple(e, item: TreeviewItem) {\r\n this.selectedParentWithChild = [];\r\n this.getChildernValues(item);\r\n if (e) {\r\n this.multipleSelection = this.multipleSelection.concat(\r\n this.selectedParentWithChild\r\n );\r\n } else {\r\n this.multipleSelection = this.multipleSelection.filter((e) => {\r\n return this.selectedParentWithChild.indexOf(e) < 0;\r\n });\r\n }\r\n\r\n this.dropdownTreeviewSelectI18n.selectionLength =\r\n this.multipleSelection.length;\r\n this.dropdownTreeviewComponent.onSelectedChange([\r\n this.multipleSelection.length,\r\n ]);\r\n this.valueChange.emit(this.multipleSelection);\r\n }\r\n getChildernValues(item: TreeviewItem) {\r\n this.selectedParentWithChild.push(item.value);\r\n if (item.children) {\r\n item.children.forEach((item) => {\r\n this.getChildernValues(item);\r\n });\r\n } else return;\r\n }\r\n\r\n onPlusClicked(e: MouseEvent, item: TreeviewItem): void {\r\n e.stopPropagation();\r\n if (item) {\r\n this.plusClicked.emit(item.value.uid);\r\n }\r\n }\r\n /**\r\n * \r\n * @param e click event \r\n * @param action name of action (add , update)\r\n * @param item TreeviewItem\r\n */\r\n onAction(e: MouseEvent, action: string, item: TreeviewItem) {\r\n e.stopPropagation();\r\n if (item) {\r\n if (action === 'add') {\r\n this.departmentManagment\r\n .openFormDialog(item.value.uid, false, item.value.title, item)\r\n .subscribe((res) => {\r\n this.update(item);\r\n });\r\n }\r\n if (action === 'update') {\r\n this.departmentManagment\r\n .openFormDialog(item.value.uid, true)\r\n .subscribe((res) => {\r\n // this.update(item);\r\n this.departmentApiService.getDepartmentTree().subscribe((res) => {\r\n this.items = this.departmentApiService.recursiveFill(res.entries);\r\n });\r\n });\r\n }\r\n }\r\n }\r\n /**\r\n *due to the business requirements which stated that more than 3 levels will existed the current api support only 3 levels so *we have to inject 3 new levels on each tree end\r\n * @param item TreeviewItem\r\n */\r\n onCollapsed(item: TreeviewItem) {\r\n item.collapsed = !item.collapsed;\r\n if (item.value.level === 2) {\r\n this.departmentApiService\r\n .getDepartmentNestedTree(item.value.title)\r\n .subscribe(\r\n (res) => {\r\n item.children = this.departmentApiService.recursiveFill(\r\n res.entries\r\n );\r\n },\r\n (err) => {}\r\n );\r\n }\r\n }\r\n /**\r\n *due to the business requirements which stated that more than 3 levels will existed the current api support only 3 levels so *we have to inject 3 new levels on each tree end\r\n * @param item TreeviewItem\r\n */\r\n update(item) {\r\n this.departmentApiService\r\n .getDepartmentNestedTree(item.value.title)\r\n .subscribe(\r\n (data) => {\r\n item.children = this.departmentApiService.recursiveFill(\r\n data.entries,\r\n 0,\r\n true,\r\n true\r\n );\r\n },\r\n (err) => {}\r\n );\r\n }\r\n}\r\n","<ng-template\r\n #itemTemplate\r\n let-item=\"item\"\r\n let-onCollapseExpand=\"onCollapseExpand\"\r\n let-onCheckedChange=\"onCheckedChange\"\r\n>\r\n <!-- single -->\r\n <div *ngIf=\"!treeview && !multiple\">\r\n <div\r\n class=\"text-nowrap row-item\"\r\n [ngClass]=\"{ active: item.value === this.value }\"\r\n >\r\n <i\r\n *ngIf=\"item.children\"\r\n (click)=\"onCollapseExpand()\"\r\n aria-hidden=\"true\"\r\n [ngSwitch]=\"item.collapsed\"\r\n >\r\n <span\r\n *ngSwitchCase=\"true\"\r\n class=\"bi bi-caret-{{ arabic ? 'left' : 'right' }}-fill caret-icon\"\r\n ></span>\r\n <span\r\n *ngSwitchCase=\"false\"\r\n class=\"bi bi-caret-down-fill caret-icon\"\r\n ></span>\r\n </i>\r\n <label class=\"form-check-label\" (click)=\"select(item)\">{{\r\n item.text\r\n }}</label>\r\n </div>\r\n </div>\r\n <!-- Multiple -->\r\n <div *ngIf=\"!treeview && multiple\">\r\n <div\r\n class=\"text-nowrap row-item\"\r\n [ngClass]=\"{ active: item.value === this.value }\"\r\n >\r\n <i\r\n *ngIf=\"item.children\"\r\n (click)=\"onCollapseExpand()\"\r\n aria-hidden=\"true\"\r\n [ngSwitch]=\"item.collapsed\"\r\n >\r\n <span\r\n *ngSwitchCase=\"true\"\r\n class=\"bi bi-caret-{{ arabic ? 'left' : 'right' }}-fill caret-icon\"\r\n ></span>\r\n <span\r\n *ngSwitchCase=\"false\"\r\n class=\"bi bi-caret-down-fill caret-icon\"\r\n ></span>\r\n </i>\r\n <!-- <input\r\n class=\"multiple-checkBox\"\r\n type=\"checkbox\"\r\n [checked]=\"multipleSelection.includes(item.value)\"\r\n (change)=\"selectMultiple($event.target.checked, item)\"\r\n />\r\n\r\n <label class=\"form-check-label\">{{ item.text }}</label> -->\r\n <div class=\"multiple-treeview\">\r\n <mat-checkbox\r\n [checked]=\"multipleSelection.includes(item.value)\"\r\n (change)=\"selectMultiple($event.checked, item)\"\r\n >\r\n <span> {{ item.text }} </span>\r\n </mat-checkbox>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- treeView -->\r\n <div *ngIf=\"treeview && !treeViewAsFormControl\" class=\"tree-view-container\">\r\n <div\r\n (mouseenter)=\"hoverField.style.display = 'flex'\"\r\n (mouseleave)=\"hoverField.style.display = 'none'\"\r\n class=\"text-nowrap row-item treeview-row\"\r\n [ngClass]=\"{ selected: item.value == selectedItem }\"\r\n >\r\n <i\r\n *ngIf=\"item.children\"\r\n (click)=\"onCollapsed(item)\"\r\n aria-hidden=\"true\"\r\n [ngSwitch]=\"item.collapsed\"\r\n >\r\n <span\r\n *ngSwitchCase=\"true\"\r\n class=\"bi bi-caret-{{ arabic ? 'left' : 'right' }}-fill caret-icon\"\r\n ></span>\r\n\r\n <span\r\n *ngSwitchCase=\"false\"\r\n class=\"bi bi-caret-down-fill caret-icon\"\r\n ></span>\r\n </i>\r\n <label class=\"form-check-label-treeview\" (click)=\"select(item)\"\r\n >{{ item.text }}\r\n <span #hoverField class=\"hoverField\">\r\n <span\r\n type=\"button\"\r\n matTooltip=\"{{ 'department_management.form.edit' | translate }}\"\r\n (click)=\"onAction($event, 'update', item)\"\r\n >\r\n <li class=\"bi bi-pencil\"></li>\r\n </span>\r\n\r\n <span\r\n type=\"button\"\r\n matTooltip=\"{{\r\n 'department_management.form.toolTip_message' | translate\r\n }}\"\r\n (click)=\"onAction($event, 'add', item)\"\r\n >\r\n <li class=\"bi bi-plus\"></li>\r\n </span>\r\n </span>\r\n </label>\r\n </div>\r\n </div>\r\n <!-- treeView as form control -->\r\n <div *ngIf=\"treeview && treeViewAsFormControl\" class=\"tree-view-container\">\r\n <div\r\n class=\"text-nowrap row-item treeview-row-form-control\"\r\n [ngClass]=\"{ 'selected-form-control': item.value == selectedItem }\"\r\n >\r\n <i\r\n *ngIf=\"item.children\"\r\n (click)=\"onCollapsed(item)\"\r\n aria-hidden=\"true\"\r\n [ngSwitch]=\"item.collapsed\"\r\n >\r\n <span\r\n *ngSwitchCase=\"true\"\r\n class=\"bi bi-caret-{{ arabic ? 'left' : 'right' }}-fill caret-icon\"\r\n ></span>\r\n \r\n <span\r\n *ngSwitchCase=\"false\"\r\n class=\"bi bi-caret-down-fill caret-icon\"\r\n ></span>\r\n </i>\r\n <label class=\"form-check-label-treeview\" (click)=\"select(item)\"\r\n >{{ item.text }}\r\n </label>\r\n </div>\r\n </div>\r\n</ng-template>\r\n<ng-template\r\n #headerTemplate\r\n let-config=\"config\"\r\n let-item=\"item\"\r\n let-onCollapseExpand=\"onCollapseExpand\"\r\n let-onCheckedChange=\"onCheckedChange\"\r\n let-onFilterTextChange=\"onFilterTextChange\"\r\n>\r\n <div *ngIf=\"config.hasFilter\" class=\"row row-filter\">\r\n <div class=\"col-12\">\r\n <input\r\n class=\"form-control\"\r\n type=\"text\"\r\n [placeholder]=\"i18n.getFilterPlaceholder()\"\r\n [(ngModel)]=\"filterText\"\r\n (ngModelChange)=\"onFilterTextChange($event)\"\r\n />\r\n </div>\r\n </div>\r\n <div *ngIf=\"config.hasAllCheckBox || config.hasCollapseExpand\" class=\"row\">\r\n <div class=\"col-12\">\r\n <label *ngIf=\"config.hasAllCheckBox\" (click)=\"select(item)\">\r\n <strong>{{ i18n.getAllCheckboxText() }}</strong>\r\n </label>\r\n <label\r\n *ngIf=\"config.hasCollapseExpand\"\r\n class=\"float-right\"\r\n (click)=\"onCollapseExpand()\"\r\n >\r\n <i\r\n [title]=\"i18n.getTooltipCollapseExpandText(item.collapsed)\"\r\n aria-hidden=\"true\"\r\n [ngSwitch]=\"item.collapsed\"\r\n >\r\n <span *ngSwitchCase=\"true\" class=\"bi bi-arrows-angle-expand\"></span>\r\n <span\r\n *ngSwitchCase=\"false\"\r\n class=\"bi bi-arrows-angle-contract\"\r\n ></span>\r\n </i>\r\n </label>\r\n </div>\r\n </div>\r\n <div *ngIf=\"config.hasDivider\" class=\"dropdown-divider\"></div>\r\n</ng-template>\r\n\r\n<ng-container *ngIf=\"!treeview && !multiple\">\r\n <ngx-dropdown-treeview\r\n [config]=\"config\"\r\n [headerTemplate]=\"headerTemplate\"\r\n [items]=\"items\"\r\n [itemTemplate]=\"itemTemplate\"\r\n >\r\n </ngx-dropdown-treeview\r\n></ng-container>\r\n<ng-container *ngIf=\"!treeview && multiple\">\r\n <div class=\"multiple-tree-view\">\r\n <ngx-dropdown-treeview\r\n [config]=\"config\"\r\n [items]=\"items\"\r\n [itemTemplate]=\"itemTemplate\"\r\n >\r\n </ngx-dropdown-treeview>\r\n </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"treeview && !treeViewAsFormControl\">\r\n <div class=\"tree-view\">\r\n <ngx-treeview\r\n [config]=\"config\"\r\n [headerTemplate]=\"headerTemplate\"\r\n [items]=\"items\"\r\n [itemTemplate]=\"itemTemplate\"\r\n >\r\n </ngx-treeview>\r\n </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"treeview && treeViewAsFormControl\">\r\n <div class=\"tree-view-form-control\">\r\n <ngx-treeview\r\n [config]=\"config\"\r\n [headerTemplate]=\"headerTemplate\"\r\n [items]=\"items\"\r\n [itemTemplate]=\"itemTemplate\"\r\n >\r\n </ngx-treeview>\r\n </div>\r\n</ng-container>\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Optional,\r\n Output,\r\n Self,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n FormControl,\r\n NgControl,\r\n} from '@angular/forms';\r\nimport { TreeviewItem } from 'ngx-treeview';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { first } from 'rxjs/operators';\r\nimport { TranslationService } from '../../../../Core/services/translation/translation.service';\r\nimport { DepartmentApiService } from './services/department-api.service';\r\n\r\n/**\r\n * A department tree dropdown input already with departments backend,\r\n * that can be used inside reactive or template driven forms\r\n * @title\r\n * Department tree dropdown\r\n * @example\r\n * <app-dynamic-form-department\r\n * label=\"Field Label\"\r\n * placeholder=\"Placeholder text\"\r\n * formControlName=\"controlName\"\r\n * >\r\n * </app-dynamic-form-department>\r\n */\r\n@Component({\r\n selector: 'app-dynamic-form-department',\r\n templateUrl: './dynamic-form-department.component.html',\r\n styleUrls: ['./dynamic-form-department.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class DynamicFormDepartmentComponent\r\n implements ControlValueAccessor, OnInit, OnDestroy\r\n{\r\n data = [];\r\n /** is tree View or dropdown view */\r\n @Input() treeview = false;\r\n /** use tree view inside form */\r\n @Input()\r\n treeViewAsFormControl = false;\r\n /** Placeholder text */\r\n @Input() placeholder;\r\n /** Can select multiple */\r\n @Input() multiple = false;\r\n /** is tree searchable */\r\n @Input() searchable = true;\r\n /** Input Field label */\r\n @Input() label;\r\n /** emitted when item is selected */\r\n @Output() onSelecting = new EventEmitter();\r\n /** emitted when action is clicked */\r\n @Output() actionClicked = new EventEmitter();\r\n loading = false;\r\n selection;\r\n arabic = false;\r\n languageSubscription: Subscription;\r\n // function related to value accessor\r\n propagateChange: any = () => {};\r\n validateFn: any = () => {};\r\n public onTouched: any = () => {\r\n /*Empty*/\r\n };\r\n public get invalid(): boolean {\r\n return this.control ? this.control.invalid : false;\r\n }\r\n\r\n public get showError(): boolean {\r\n if (!this.control) {\r\n return false;\r\n }\r\n\r\n const { dirty, touched } = this.control;\r\n\r\n return this.invalid ? dirty || touched : false;\r\n }\r\n constructor(\r\n private translation: TranslationService,\r\n private departmentApi: DepartmentApiService,\r\n @Self() @Optional() public control: NgControl\r\n ) {\r\n this.control.valueAccessor = this;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.languageSubscription = this.translation.isArabic.subscribe(\r\n async (res) => {\r\n this.arabic = res;\r\n await this.getLisOfOptions();\r\n this.writeValue(this.selection);\r\n }\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.languageSubscription ? this.languageSubscription.unsubscribe() : '';\r\n }\r\n\r\n async recursiveFill(entries, level = 0): Promise<TreeviewItem[]> {\r\n return await Promise.all(\r\n entries.map(async (item) => {\r\n let treeViewObj = this.treeview\r\n ? {\r\n text: this.arabic\r\n ? item.properties\r\n ? item.properties['dept:arabicName']\r\n : '--'\r\n : item.properties\r\n ? item.properties['dept:englishName']\r\n : '--',\r\n value: { ...item, level },\r\n }\r\n : {\r\n text: this.arabic\r\n ? item.properties\r\n ? item.properties['dept:arabicName']\r\n : '--'\r\n : item.properties\r\n ? item.properties['dept:englishName']\r\n : '--',\r\n value: this.multiple ? item.uid : item.title,\r\n };\r\n\r\n const treeItem = new TreeviewItem({\r\n ...treeViewObj,\r\n collapsed: level >= 2 && this.treeview ? true : false,\r\n ...(this.multiple && { checked: false }),\r\n });\r\n if (\r\n item.contextParameters &&\r\n item.contextParameters.children.entries.length\r\n ) {\r\n if (\r\n !this.treeview &&\r\n (level == 2 || (level > 2 && (level + 1) % 3 == 0))\r\n ) {\r\n const extended = await this.departmentApi\r\n .getDepartmentNestedTree(item.title)\r\n .pipe(first())\r\n .toPromise();\r\n treeItem.children = await this.recursiveFill(\r\n extended.entries,\r\n level + 1\r\n );\r\n } else {\r\n treeItem.children = await this.recursiveFill(\r\n item.contextParameters.children.entries,\r\n level + 1\r\n );\r\n }\r\n }\r\n return treeItem;\r\n })\r\n );\r\n }\r\n async getLisOfOptions() {\r\n this.departmentApi.getDepartmentTree().subscribe(async (res) => {\r\n this.loading = false;\r\n this.data = await this.recursiveFill(res.entries);\r\n });\r\n }\r\n\r\n getSelecteditems(selectedItems): void {\r\n this.propagateChange(selectedItems);\r\n this.onSelecting.emit(selectedItems);\r\n }\r\n\r\n writeValue(value): void {\r\n if (value) {\r\n this.selection = value;\r\n }\r\n }\r\n\r\n registerOnChange(fn): void {\r\n this.propagateChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n validate(c: FormControl): any {\r\n return this.validateFn(c);\r\n }\r\n isRequired(): boolean {\r\n if (!this.control || !this.control.control.validator) {\r\n return false;\r\n }\r\n\r\n const validator = this.control.control.validator({} as AbstractControl);\r\n return validator && validator.required;\r\n }\r\n hasErrors(): boolean {\r\n return this.showError;\r\n }\r\n // onPlusClicked(e) {\r\n // this.plusClicked.next(e);\r\n // }\r\n // onAction(e) {\r\n // this.actionClicked.emit(e);\r\n // }\r\n}\r\n","<ng-container *ngIf=\"label\">\r\n <div>\r\n <label class=\"select-label\"\r\n >{{ label | translate\r\n }}<span *ngIf=\"isRequired()\" class=\"text-danger m-1\">*</span></label\r\n >\r\n </div>\r\n</ng-container>\r\n<app-dynamic-form-treeview-select\r\n [treeview]=\"treeview\"\r\n [treeViewAsFormControl]=\"treeViewAsFormControl\"\r\n [multiple]=\"multiple\"\r\n [items]=\"data\"\r\n (valueChange)=\"getSelecteditems($event)\"\r\n [(value)]=\"selection\"\r\n class=\"dropdown-wrapper\"\r\n [ngClass]=\"{'input-filled' : selection && selection.length > 0 }\"\r\n>\r\n</app-dynamic-form-treeview-select>\r\n<mat-error\r\n [attr.data-automation-id]=\"'card-textitem-error-'\"\r\n class=\"app-textitem-editable-error\"\r\n *ngIf=\"hasErrors()\"\r\n>\r\n <ul>\r\n <li *ngIf=\"control.errors.required\">\r\n {{ \"VALIDATORS.REQUIRED\" | translate }}\r\n </li>\r\n </ul>\r\n</mat-error>\r\n","import {\r\n Component,\r\n ViewChild,\r\n OnInit,\r\n Optional,\r\n Self,\r\n Input,\r\n ViewEncapsulation,\r\n EventEmitter,\r\n Output,\r\n} from '@angular/core';\r\nimport { NgbDate, NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';\r\n\r\nimport * as momentjs from 'moment';\r\nconst moment = momentjs;\r\n\r\nimport * as moment_ from 'moment-hijri';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NgControl,\r\n} from '@angular/forms';\r\nimport { DateType } from '../../../hijri-gregorian-datepicker/utils/consts';\r\nimport { DateFormatterService } from '../../../hijri-gregorian-datepicker/services/date-formatter.service';\r\nconst momentHijri = moment_;\r\n/**\r\n * A Hijri and gregorian datepicker\r\n * that can be used inside reactive or template driven forms\r\n * @title\r\n * Hijri Gregorian Datepicker\r\n *\r\n * @example\r\n * <cts-dynamic-form-hijri-dateitem\r\n * formControlName=\"controlName\"\r\n * label=\"PATH.TO.LABEL.TRANSLATION\"\r\n * [minGreg]=\"maxDate\"\r\n * >\r\n * </cts-dynamic-form-hijri-dateitem>\r\n */\r\n@Component({\r\n selector: 'cts-dynamic-form-hijri-dateitem',\r\n templateUrl: './dynamic-form-hijri-dateitem.component.html',\r\n styleUrls: ['./dynamic-form-hijri-dateitem.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class DynamicFormHijriDateitemComponent\r\n implements OnInit, ControlValueAccessor {\r\n /** Minimum Hijri Date */\r\n @Input()\r\n minHijri: NgbDate;\r\n /** Max Hijri Date */\r\n @Input()\r\n maxHijri: NgbDate;\r\n /** Minimum Gregorian Date */\r\n @Input()\r\n minGreg: NgbDate;\r\n /** Max Gregorian Date */\r\n @Input()\r\n maxGreg: NgbDate;\r\n /** Field Label */\r\n @Input()\r\n label;\r\n /** Is input disabled */\r\n @Input()\r\n isDisabled: boolean;\r\n /** is input a range picker */\r\n @Input()\r\n range: boolean;\r\n /** list inputs vertically (for range only) */\r\n @Input()\r\n vertical = false;\r\n /** Sets picker to readonly mode */\r\n @Input()\r\n isReadOnly: boolean = true;\r\n /** Emitted when the value changes */\r\n @Output()\r\n valueChanged: EventEmitter<any> = new EventEmitter();\r\n date: any;\r\n dateString: string;\r\n selectedDateType = DateType.Gregorian;\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n\r\n @ViewChild('datePicker') startDatePicker: any;\r\n\r\n constructor(\r\n private dateFormatterService: DateFormatterService,\r\n @Self() @Optional() private control: NgControl\r\n ) {\r\n this.control.valueAccessor = this;\r\n if (!this.range) {\r\n // this.date = this.dateFormatterService.GetTodayGregorian();\r\n }\r\n }\r\n writeValue(obj: any): void {\r\n if (obj) {\r\n if (!this.range) {\r\n this.date = this.dateFormatterService.ToGregorianDateStruct(obj, '');\r\n } else if (obj.from && obj.to) {\r\n this.date = {\r\n from: this.dateFormatterService.ToGregorianDateStruct(obj.from, ''),\r\n to: this.dateFormatterService.ToGregorianDateStruct(obj.to, '')\r\n\r\n }\r\n }\r\n }else{\r\n this.date = null; // to reset ui too\r\n }\r\n }\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState?(isDisabled: boolean): void { }\r\n ngOnInit(): void { }\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 // console.log('startDatePicker', this.startDatePicker);\r\n }\r\n\r\n removelable() { }\r\n\r\n setValue(event) {\r\n this.dateString = this.startDatePicker.getSelectedDate();\r\n if (this.dateString !== 'Invalid date') {\r\n this.onChange(this.dateString);\r\n }\r\n }\r\n isRequired() {\r\n if (!this.control?.control || !this.control.control.validator) {\r\n return false;\r\n }\r\n\r\n const validator = this.control.control.validator({} as AbstractControl);\r\n return validator && validator.required;\r\n }\r\n}\r\n","<ng-container *ngIf=\"label\">\r\n <div>\r\n <label class=\"hijri-date-lable\"\r\n >{{ label | translate\r\n }}<span *ngIf=\"isRequired()\" class=\"text-danger m-1\">*</span></label\r\n >\r\n </div>\r\n</ng-container>\r\n<div class=\"hijri-date-container\">\r\n <hijri-gregorian-datepicker\r\n [placeHolder]=\"'datePlaceHolder' | translate\"\r\n [(selectedDate)]=\"date\"\r\n [isRequired]=\"true\"\r\n [GregLabel]=\"'gregorian' | translate\"\r\n [hijriLabel]=\"'hijri' |translate\"\r\n [selectedDateType]=\"selectedDateType\"\r\n [disabled]=\"isDisabled\"\r\n [readonly]=\"isReadOnly\"\r\n [minHijri]=\"minHijri\"\r\n [maxHijri]=\"maxHijri\"\r\n [minGreg]=\"minGreg\"\r\n [maxGreg]=\"maxGreg\"\r\n [range]=\"range\"\r\n [vertical]=\"vertical\"\r\n (selectedDateChange)=\"setValue($event)\"\r\n #datePicker\r\n >\r\n </hijri-gregorian-datepicker>\r\n</div>\r\n","import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n/** @ignore */\r\n\r\n@Directive({\r\n selector: '[appDynamicFormContentProxy]'\r\n})\r\nexport class DynamicFormContentProxyDirective {\r\n constructor(public viewContainerRef: ViewContainerRef) {}\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { DynamicFormUpdateService } from '../../services/dynamic-form-update.service';\r\nimport { DynamicFormMapItemModel } from '../../models/dynamic-form.models';\r\n\r\n/** @ignore */\r\n\r\n@Component({\r\n selector: 'app-dynamic-form-mapitem',\r\n templateUrl: './dynamic-form-mapitem.component.html',\r\n styleUrls: ['./dynamic-form-mapitem.component.scss']\r\n})\r\nexport class DynamicFormMapItemComponent {\r\n @Input()\r\n property: DynamicFormMapItemModel;\r\n\r\n @Input()\r\n displayEmpty: boolean = true;\r\n\r\n constructor(private dynamicFormUpdateService: DynamicFormUpdateService) {}\r\n\r\n showProperty() {\r\n return this.displayEmpty || !this.property.isEmpty();\r\n }\r\n\r\n isClickable() {\r\n return this.property.clickable;\r\n }\r\n\r\n clicked(): void {\r\n this.dynamicFormUpdateService.clicked(this.property);\r\n }\r\n}\r\n","<div\r\n [attr.data-automation-id]=\"'card-mapitem-label-' + property.key\"\r\n class=\"app-property-label\"\r\n *ngIf=\"showProperty()\"\r\n>\r\n {{ property.label | translate }}\r\n</div>\r\n<div class=\"app-property-value\">\r\n <div>\r\n <span\r\n *ngIf=\"!isClickable(); else elseBlock\"\r\n [attr.data-automation-id]=\"'card-mapitem-value-' + property.key\"\r\n >\r\n <span *ngIf=\"showProperty()\">{{ property.displayValue }}</span>\r\n </span>\r\n <ng-template #elseBlock>\r\n <span\r\n class=\"app-mapitem-clickable-value\"\r\n (click)=\"clicked()\"\r\n [attr.data-automation-id]=\"'card-mapitem-value-' + property.key\"\r\n >\r\n <span *ngIf=\"showProperty(); else elseEmptyValueBlock\">{{\r\n property.displayValue\r\n }}</span>\r\n </span>\r\n </ng-template>\r\n </div>\r\n <ng-template #elseEmptyValueBlock>\r\n {{ property.default | translate }}\r\n </ng-template>\r\n</div>\r\n","import { Type } from '@angular/core';\r\n\r\nexport function getType(type: any): any {\r\n const res = () => type;\r\n return res;\r\n}\r\nexport interface DynamicComponentModel {\r\n type: string;\r\n}\r\nexport type DynamicComponentResolveFunction = (\r\n model: DynamicComponentModel\r\n) => Type<{}>;\r\nexport class DynamicComponentResolver {\r\n static fromType(type: Type<{}>): DynamicComponentResolveFunction {\r\n return getType(type);\r\n }\r\n}\r\n\r\nexport abstract class DynamicComponentMapper {\r\n protected defaultValue: Type<{}> = undefined;\r\n protected types: { [key: string]: DynamicComponentResolveFunction } = {};\r\n\r\n /**\r\n * Gets the currently active DynamicComponentResolveFunction for a field type.\r\n * @param type The type whose resolver you want\r\n * @param defaultValue Default type returned for types that are not yet mapped\r\n * @returns Resolver function\r\n */\r\n getComponentTypeResolver(\r\n type: string,\r\n defaultValue: Type<{}> = this.defaultValue\r\n ): DynamicComponentResolveFunction {\r\n if (type) {\r\n return (\r\n this.types[type] || DynamicComponentResolver.fromType(defaultValue)\r\n );\r\n }\r\n return DynamicComponentResolver.fromType(defaultValue);\r\n }\r\n\r\n /**\r\n * Sets or optionally replaces a DynamicComponentResolveFunction for a field type.\r\n * @param type The type whose resolver you want to set\r\n * @param resolver The new resolver function\r\n * @param override The new resolver will only replace an existing one if this parameter is true\r\n */\r\n setComponentTypeResolver(\r\n type: string,\r\n resolver: DynamicComponentResolveFunction,\r\n override: boolean = true\r\n ) {\r\n if (!type) {\r\n throw new Error(`type is null or not defined`);\r\n }\r\n\r\n if (!resolver) {\r\n throw new Error(`resolver is null or not defined`);\r\n }\r\n\r\n const existing = this.types[type];\r\n if (existing && !override) {\r\n throw new Error(\r\n `already mapped, use override option if you intend replacing existing mapping.`\r\n );\r\n }\r\n\r\n this.types[type] = resolver;\r\n }\r\n\r\n /**\r\n * Finds the component type that is needed to render a form field.\r\n * @param model Form field model for the field to render\r\n * @param defaultValue Default type returned for field types that are not yet mapped.\r\n * @returns Component type\r\n */\r\n resolveComponentType(\r\n model: DynamicComponentModel,\r\n defaultValue: Type<{}> = this.defaultValue\r\n ): Type<{}> {\r\n if (model) {\r\n const resolver = this.getComponentTypeResolver(model.type, defaultValue);\r\n return resolver(model);\r\n }\r\n return defaultValue;\r\n }\r\n}\r\n","import { Injectable, Type } from '@angular/core';\r\nimport { DynamicFormDateItemComponent } from '../components/dynamic-form-dateitem/dynamic-form-dateitem.component';\r\nimport { DynamicFormMapItemComponent } from '../components/dynamic-form-mapitem/dynamic-form-mapitem.component';\r\nimport { DynamicFormTextItemComponent } from '../components/dynamic-form-textitem/dynamic-form-textitem.component';\r\nimport { DynamicFormSelectItemComponent } from '../components/dynamic-form-selectitem/dynamic-form-selectitem.component';\r\nimport { DynamicFormBoolItemComponent } from '../components/dynamic-form-boolitem/dynamic-form-boolitem.component';\r\n\r\n\r\nimport {\r\n DynamicComponentMapper,\r\n DynamicComponentModel,\r\n DynamicComponentResolver,\r\n DynamicComponentResolveFunction\r\n} from './dynamic-component-mapper.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CardItemTypeService extends DynamicComponentMapper {\r\n protected defaultValue: Type<{}> = DynamicFormTextItemComponent;\r\n\r\n protected types: { [key: string]: DynamicComponentResolveFunction } = {\r\n text: DynamicComponentResolver.fromType(DynamicFormTextItemComponent),\r\n select: DynamicComponentResolver.fromType(DynamicFormSelectItemComponent),\r\n int: DynamicComponentResolver.fromType(DynamicFormTextItemComponent),\r\n float: DynamicComponentResolver.fromType(DynamicFormTextItemComponent),\r\n date: DynamicComponentResolver.fromType(DynamicFormDateItemComponent),\r\n datetime: DynamicComponentResolver.fromType(DynamicFormDateItemComponent),\r\n bool: DynamicComponentResolver.fromType(DynamicFormBoolItemComponent),\r\n map: DynamicComponentResolver.fromType(DynamicFormMapItemComponent),\r\n\r\n };\r\n\r\n getComponentTypeResolver(\r\n type: string,\r\n defaultValue: Type<{}> = this.defaultValue\r\n ): DynamicComponentResolveFunction {\r\n if (type) {\r\n return (\r\n this.types[type] || DynamicComponentResolver.fromType(defaultValue)\r\n );\r\n }\r\n return DynamicComponentResolver.fromType(defaultValue);\r\n }\r\n resolveComponentType(\r\n model: DynamicComponentModel,\r\n defaultValue: Type<{}> = this.defaultValue\r\n ): Type<{}> {\r\n if (model) {\r\n const resolver = this.getComponentTypeResolver(model.type, defaultValue);\r\n return resolver(model);\r\n }\r\n return defaultValue;\r\n }\r\n}\r\n","import {\r\n Component,\r\n ComponentFactoryResolver,\r\n Input,\r\n OnChanges,\r\n SimpleChange,\r\n SimpleChanges,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { CardItemTypeService } from '../../services/card-item-types.service';\r\nimport { DynamicFormContentProxyDirective } from '../../directives/dynamic-form-content-proxy.directive';\r\nimport { DynamicFormItem } from '../../interfaces/dynamic-form-item.interface';\r\n\r\n/** @ignore */\r\n@Component({\r\n selector: 'app-dynamic-form-item-dispatcher',\r\n template: '<ng-template appDynamicFormContentProxy></ng-template>',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class DynamicFormItemDispatcherComponent implements OnChanges {\r\n @Input()\r\n property: DynamicFormItem;\r\n\r\n @Input()\r\n editable: boolean;\r\n\r\n @Input()\r\n displayEmpty: boolean = true;\r\n\r\n @Input()\r\n displayNoneOption: boolean = true;\r\n\r\n @Input()\r\n displayClearAction: boolean = true;\r\n\r\n @ViewChild(DynamicFormContentProxyDirective, { static: true })\r\n private content: DynamicFormContentProxyDirective;\r\n\r\n private loaded: boolean = false;\r\n private componentReference: any = null;\r\n\r\n public ngOnInit;\r\n public ngDoCheck;\r\n\r\n constructor(\r\n private cardItemTypeService: CardItemTypeService,\r\n private resolver: ComponentFactoryResolver\r\n ) {\r\n const dynamicLifeCycleMethods = [\r\n 'ngOnInit',\r\n 'ngDoCheck',\r\n 'ngAfterContentInit',\r\n 'ngAfterContentChecked',\r\n 'ngAfterViewInit',\r\n 'ngAfterViewChecked',\r\n 'ngOnDestroy'\r\n ];\r\n\r\n dynamicLifeCycleMethods.forEach(method => {\r\n this[method] = this.proxy.bind(this, method);\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (!this.loaded) {\r\n this.loadComponent();\r\n this.loaded = true;\r\n }\r\n\r\n Object.keys(changes)\r\n .map(changeName => [changeName, changes[changeName]])\r\n .forEach(([inputParamName, simpleChange]: [string, SimpleChange]) => {\r\n this.componentReference.instance[inputParamName] =\r\n simpleChange.currentValue;\r\n });\r\n\r\n this.proxy('ngOnChanges', changes);\r\n }\r\n\r\n private loadComponent() {\r\n const factoryClass = this.cardItemTypeService.resolveComponentType(\r\n this.property\r\n );\r\n\r\n const factory = this.resolver.resolveComponentFactory(factoryClass);\r\n this.componentReference = this.content.viewContainerRef.createComponent(\r\n factory\r\n );\r\n this.componentReference.instance.editable = this.editable;\r\n this.componentReference.instance.property = this.property;\r\n this.componentReference.instance.displayEmpty = this.displayEmpty;\r\n this.componentReference.instance.displayNoneOption = this.displayNoneOption;\r\n this.componentReference.instance.displayClearAction = this.displayClearAction;\r\n }\r\n\r\n private proxy(methodName, ...args) {\r\n if (this.componentReference.instance[methodName]) {\r\n this.componentReference.instance[methodName].apply(\r\n this.componentReference.instance,\r\n args\r\n );\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Optional,\r\n Output,\r\n Self,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NgControl,\r\n} from '@angular/forms';\r\nimport { json } from '@rxweb/reactive-form-validators';\r\n/**\r\n * Options group input that can be used inside reactive or template driven forms\r\n * @title\r\n * Options Group\r\n * @example\r\n * <cts-dynamic-form-options\r\n * [label]=\"'Choose an item'\"\r\n * [data]=\"arrayOfItems\"\r\n * [bindLabel]=\"'name'\"\r\n * [bindValue]=\"'id'\"\r\n * [multiple]=\"false\"\r\n * formControlName=\"option\">\r\n * </cts-dynamic-form-options>\r\n */\r\n@Component({\r\n selector: 'cts-dynamic-form-options',\r\n templateUrl: './dynamic-form-options.component.html',\r\n styleUrls: ['./dynamic-form-options.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class DynamicFormOptionsComponent implements ControlValueAccessor {\r\n /** Radio group label */\r\n @Input()\r\n label;\r\n /** array of options */\r\n @Input()\r\n data;\r\n /** bind label to option object property */\r\n @Input() bindLabel: string;\r\n /** bind value to option object property */\r\n @Input() bindValue: string;\r\n /** can select multiple (checkboxes) or (radios) */\r\n @Input() multiple = false;\r\n // @Output() onSelectItems = new EventEmitter();\r\n\r\n selection = [];\r\n selectedItem: any;\r\n onChange: any = () => {};\r\n onTouched: any = () => {};\r\n constructor(@Self() @Optional() private control: NgControl) {\r\n this.control.valueAccessor = this;\r\n }\r\n ngOnInit(): void { }\r\n\r\n writeValue(value) {\r\n if (value && this.multiple) {\r\n this.selection = [...value];\r\n }\r\n if (value && !this.multiple) {\r\n this.selectedItem = value;\r\n }\r\n }\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n throw new Error('Method not implemented.');\r\n }\r\n isRequired() {\r\n if (!this.control || !this.control.control.validator) {\r\n return false;\r\n }\r\n\r\n const validator = this.control.control.validator({} as AbstractControl);\r\n return validator && validator.required;\r\n }\r\n\r\n //multiple functions\r\n emitSelection(value, isChecked: boolean) {\r\n if (isChecked) {\r\n this.selection.push(value);\r\n } else {\r\n this.selection = this.selection.filter((item) => {\r\n return typeof value === 'object'\r\n ? JSON.stringify(value) != JSON.stringify(item)\r\n : value != item;\r\n });\r\n }\r\n this.onChange(this.selection);\r\n }\r\n containsValue(value, list: any[]) {\r\n return typeof value === 'object'\r\n ? list.some((elem) => JSON.stringify(elem) === JSON.stringify(value))\r\n : list.includes(value);\r\n }\r\n\r\n // !multiple functions\r\n onSelectedItemChanged(event) {\r\n this.onChange(this.selectedItem);\r\n }\r\n}\r\n","<!-- template for viewing single select selected value -->\r\n<ng-container *ngIf=\"multiple\">\r\n <ng-container *ngIf=\"label\">\r\n <div>\r\n <label class=\"radio-label\"\r\n >{{ label | translate\r\n }}<span *ngIf=\"isRequired()\" class=\"text-danger m-1\">*</span></label\r\n >\r\n </div>\r\n </ng-container>\r\n <div class=\"option-wrapper\" *ngFor=\"let item of data ; let i = index\">\r\n <span>\r\n <input\r\n id=\"item-{{ i }}\"\r\n type=\"checkbox\"\r\n (change)=\"\r\n emitSelection(\r\n bindValue ? item[bindValue] : item,\r\n $event.target.checked\r\n )\r\n \"\r\n [checked]=\"containsValue(bindValue ? item[bindValue] : item, selection)\"\r\n />\r\n </span>\r\n <span class=\"label-wrapper\">\r\n {{ (bindLabel ? item[bindLabel] : item) | translate }}\r\n </span>\r\n </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"!multiple\">\r\n <ng-container *ngIf=\"label\">\r\n <div>\r\n <label class=\"radio-label\"\r\n >{{ label | translate\r\n }}<span *ngIf=\"isRequired()\" class=\"text-danger m-1\">*</span></label\r\n >\r\n </div>\r\n </ng-container>\r\n <div class=\"radio-option\">\r\n <mat-radio-group\r\n [(ngModel)]=\"selectedItem\"\r\n (ngModelChange)=\"onSelectedItemChanged($event)\"\r\n class=\"radio-group\"\r\n >\r\n <mat-radio-button\r\n class=\"radio-button\"\r\n *ngFor=\"let item of data\"\r\n [value]=\"bindValue ? item[bindValue] : item\"\r\n >\r\n {{ (bindLabel ? item[bindLabel] : item) | translate }}\r\n </mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n</ng-container>\r\n<!-- template for viewing multi select selected values -->\r\n<!-- [checked]=\"containsValue(bindValue ? item[bindValue] : item,selectedItem)\" -->\r\n","import { EventEmitter, Inject, Injectable } from '@angular/core';\r\nimport { from, Observable, ReplaySubject } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { NuxeoService } from '../../../Core/services/nuxeo/nuxeo.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TagsApiService {\r\n public getUpdatedFile = new EventEmitter();\r\n\r\n constructor(private nuxeoService: NuxeoService, @Inject('environment') private environment) {}\r\n\r\n addTagsToCorrespondence(correspondenceId, tags: string[]) {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .operation('AC_UA_Correspondence_Tag_Create', {\r\n url: `${this.environment.nuxeo}${this.environment.customAutomation}`,\r\n })\r\n .input(correspondenceId)\r\n .context({\r\n tags: tags.toString(),\r\n })\r\n .execute()\r\n ).pipe(\r\n catchError((err) => {\r\n throw err;\r\n })\r\n );\r\n }\r\n deleteTagsToCorrespondence(correspondenceId, tag) {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .operation('AC_UA_Correspondence_Tag_Delete', {\r\n url: `${this.environment.nuxeo}${this.environment.customAutomation}`,\r\n })\r\n .input(correspondenceId)\r\n .context({\r\n tags: tag,\r\n })\r\n .execute()\r\n ).pipe(\r\n catchError((err) => {\r\n throw err;\r\n })\r\n );\r\n }\r\n tagsSuggestion(term: string): Observable<any> {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .operation('Tag.Suggestion', {\r\n url: `${this.environment.nuxeo}${this.environment.customAutomation}`,\r\n })\r\n .params({\r\n searchTerm: term,\r\n })\r\n .context({})\r\n .execute()\r\n );\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n OnInit,\r\n Optional,\r\n Self,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NgControl,\r\n} from '@angular/forms';\r\nimport { concat, Observable, of, Subject } from 'rxjs';\r\nimport {\r\n debounceTime,\r\n distinctUntilChanged,\r\n tap,\r\n switchMap,\r\n catchError,\r\n} from 'rxjs/operators';\r\nimport { TagsApiService } from '../../../cts-tags/services/tags-api.service';\r\n\r\n/**\r\n * A tags dropdown input integrated with tags API,\r\n * that can be used inside reactive or template driven forms\r\n * @title\r\n * tags dropdown\r\n * @example\r\n * <cts-dynamic-form-select-tag\r\n * formControlName=\"controlName\"\r\n * [label]=\"'PATH.TO.TRANSLATION'\"\r\n * ></cts-dynamic-form-select-tag>\r\n */\r\n@Component({\r\n selector: 'cts-dynamic-form-select-tag',\r\n templateUrl: './dynamic-form-select-tag.component.html',\r\n styleUrls: ['./dynamic-form-select-tag.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class DynamicFormSelectTagComponent\r\n implements OnInit, ControlValueAccessor\r\n{\r\n /** Field Label */\r\n @Input() label: string;\r\n\r\n tags$: Observable<any[]>;\r\n tagsLoading = false;\r\n tagsInput$ = new Subject<string>();\r\n selectedTags;\r\n tagsList: any[];\r\n onChange: any = () => {};\r\n onTouched: any = () => {};\r\n constructor(\r\n @Self() @Optional() private control: NgControl,\r\n private tagsApiService: TagsApiService\r\n ) {\r\n if (this.control) {\r\n this.control.valueAccessor = this;\r\n }\r\n }\r\n writeValue(value) {\r\n if (value) {\r\n this.selectedTags = this.buildTagObj(value);\r\n }\r\n }\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState?(isDisabled: boolean): void {}\r\n\r\n ngOnInit(): void {\r\n this.loadTags();\r\n }\r\n emitSelection(event) {\r\n let tags = [];\r\n this.selectedTags.forEach((tagObj) => {\r\n tags.push(tagObj.id || tagObj.displayLabel);\r\n });\r\n this.onChange(tags);\r\n }\r\n private loadTags() {\r\n this.tags$ = concat(\r\n of([]), // default items\r\n this.tagsInput$.pipe(\r\n debounceTime(200),\r\n distinctUntilChanged(),\r\n tap(() => (this.tagsLoading = true)),\r\n switchMap((term) =>\r\n this.tagsApiService.tagsSuggestion(term).pipe(\r\n catchError(() => of([])), // empty list on error\r\n tap(() => (this.tagsLoading = false))\r\n )\r\n )\r\n )\r\n );\r\n }\r\n isRequired() {\r\n if (!this.control || !this.control.control.validator) {\r\n return false;\r\n }\r\n\r\n const validator = this.control.control.validator({} as AbstractControl);\r\n return validator && validator.required;\r\n }\r\n buildTagObj(value) {\r\n let arrayOfTags = [];\r\n value.forEach((tag) => {\r\n arrayOfTags.push({ id: tag, displayLabel: tag });\r\n });\r\n console.log(\"arrayOfTags\",arrayOfTags)\r\n return arrayOfTags;\r\n }\r\n}\r\n","<ng-container *ngIf=\"label\">\r\n <div>\r\n <label class=\"select-label\"\r\n >{{ label | translate\r\n }}<span *ngIf=\"isRequired()\" class=\"text-danger m-1\">*</span></label\r\n >\r\n </div>\r\n</ng-container>\r\n<div class=\"tags\">\r\n <ng-select\r\n [items]=\"tags$ | async\"\r\n bindLabel=\"displayLabel\"\r\n [addTag]=\"true\"\r\n [addTagText]=\"'Tags.add' | translate\"\r\n [multiple]=\"true\"\r\n [hideSelected]=\"true\"\r\n [minTermLength]=\"2\"\r\n [loading]=\"tagsLoading\"\r\n [typeToSearchText]=\"'Tags.typeToSearchText' | translate\"\r\n [typeahead]=\"tagsInput$\"\r\n [(ngModel)]=\"selectedTags\"\r\n (change)=\"emitSelection($event)\"\r\n required\r\n [placeholder]=\"'Tags.placeholder' | translate\"\r\n >\r\n </ng-select>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { from, Observable } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { NuxeoService } from '../../../../../Core/services/nuxeo/nuxeo.service';\r\n\r\n\r\n/** @ignore */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UsersInDepartmentsApiService {\r\n constructor(private nuxeoService: NuxeoService) {}\r\n getAllUsers(params = {}): Observable<any> {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .request('user/search')\r\n .queryParams({ q: '*', ...params })\r\n .get()\r\n ).pipe(\r\n catchError((err) => {\r\n throw err;\r\n })\r\n );\r\n }\r\n getUsersSuggestions(username: string, params = {}): Observable<any> {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .request('user/search')\r\n .queryParams({ q: username, ...params })\r\n .get()\r\n ).pipe(\r\n catchError((err) => {\r\n throw err;\r\n })\r\n );\r\n }\r\n getCtsUsers(deptTitle, params = {}): Observable<any> {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .request(`group-members/all-members/cts_role_${deptTitle}`)\r\n .queryParams({ q: '*', ...params })\r\n .get()\r\n ).pipe(\r\n catchError((err) => {\r\n throw err;\r\n })\r\n );\r\n }\r\n}\r\n// .request(`cts_role_${deptTitle}`)\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Optional,\r\n Output,\r\n Self,\r\n SimpleChanges,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n NgControl,\r\n FormControl,\r\n AbstractControl,\r\n} from '@angular/forms';\r\nimport { NgSelectComponent } from '@ng-select/ng-select';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Observable } from 'rxjs';\r\nimport { UsersInDepartmentsApiService } from '../dynamic-form-select-users/services/user-api.service';\r\n\r\n/**\r\n * @ignore\r\n * User selector\r\n */\r\n@Component({\r\n selector: 'cts-dynamic-form-select-user-filter',\r\n templateUrl: './dynamic-form-select-user-filter.component.html',\r\n styleUrls: ['./dynamic-form-select-user-filter.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class DynamicFormSelectUserFilterComponent\r\n implements OnChanges, ControlValueAccessor\r\n{\r\n @ViewChild('ngSelectComponent') ngSelectComponent: NgSelectComponent;\r\n data = [];\r\n @Input() deptTitle: string;\r\n @Input() label: string;\r\n @Input() bindValue;\r\n @Input() bindLabel;\r\n @Input() placeholder;\r\n @Input() multiple = false;\r\n @Input() searchable = false;\r\n @Input() closeOnSelect = true;\r\n @Input() hideSelectedItems = false;\r\n @Input() preSelectedValues;\r\n @Input() isAsync = false;\r\n @Input() attachSource = false;\r\n @Input() source$: Observable<any>;\r\n @Input() hideLoaded = false;\r\n @Input() loading = false;\r\n @Input() disabled = false;\r\n @Input() filter: string[];\r\n @Output() onSelectItems = new EventEmitter();\r\n selection;\r\n buffer = [];\r\n bufferSize = 50;\r\n numberOfItemsFromEndBeforeFetchingMore = 10;\r\n\r\n propagateChange: any = () => {};\r\n validateFn: any = () => {};\r\n\r\n public onTouched: any = () => {\r\n /*Empty*/\r\n };\r\n pageIndex: number = 0;\r\n isNextPageAvailable: boolean;\r\n public get invalid(): boolean {\r\n return this.control ? this.control.invalid : false;\r\n }\r\n\r\n public get showError(): boolean {\r\n if (!this.control) {\r\n return false;\r\n }\r\n\r\n const { dirty, touched } = this.control;\r\n\r\n return this.invalid ? dirty || touched : false;\r\n }\r\n constructor(\r\n private userApiService: UsersInDepartmentsApiService,\r\n public translate: TranslateService,\r\n @Self() @Optional() public control: NgControl\r\n ) {\r\n if (this.control) {\r\n this.control.valueAccessor = this;\r\n }\r\n }\r\n\r\n emitSelection(event) {\r\n this.propagateChange(this.selection);\r\n this.onSelectItems.emit(event);\r\n }\r\n\r\n onScrollToEnd() {\r\n this.fetchMore();\r\n if (this.isNextPageAvailable) {\r\n this.getDepartments(++this.pageIndex);\r\n }\r\n }\r\n\r\n private fetchMore() {\r\n this.loading = true;\r\n const len = this.buffer.length;\r\n const more = this.data.slice(len, this.bufferSize + len);\r\n this.buffer = this.data.concat(more);\r\n this.loading = false;\r\n }\r\n x = ['imad12', 'rasha'];\r\n y = 'imad12';\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const isFirstChange = Object.values(changes).some((c) => c.isFirstChange());\r\n if (!isFirstChange) {\r\n this.getDepartments();\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.getDepartments();\r\n setTimeout(() => {\r\n // to make select render selected values to were send from out side\r\n //delay to allow outside to get data and send it to here\r\n if (this.preSelectedValues) {\r\n this.selection = this.preSelectedValues;\r\n }\r\n }, 10000);\r\n }\r\n\r\n writeValue(value) {\r\n if (value) {\r\n this.selection = value;\r\n }\r\n }\r\n registerOnChange(fn) {\r\n this.propagateChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any) {\r\n this.onTouched = fn;\r\n }\r\n\r\n validate(c: FormControl) {\r\n return this.validateFn(c);\r\n }\r\n isRequired() {\r\n if (!this.control || !this.control.control.validator) {\r\n return false;\r\n }\r\n\r\n const validator = this.control.control.validator({} as AbstractControl);\r\n return validator && validator.required;\r\n }\r\n hasErrors(): boolean {\r\n return this.showError;\r\n }\r\n getDepartments(page = 0) {\r\n if (this.deptTitle === 'all') {\r\n this.userApiService\r\n .getAllUsers({\r\n currentPageIndex: page,\r\n pageSize: 20,\r\n })\r\n .subscribe((data) => {\r\n let filterData = data.entries.filter((user) => {\r\n const includedInFilter = this.filter.includes(user.id);\r\n return !includedInFilter;\r\n });\r\n this.data = this.data.concat(filterData);\r\n this.isNextPageAvailable = data.isNextPageAvailable;\r\n this.buffer = (this.data || []).slice(0, this.bufferSize);\r\n this.buffer.map((item) => {\r\n item.isSelected = false;\r\n });\r\n });\r\n } else {\r\n this.userApiService\r\n .getCtsUsers(this.deptTitle, {\r\n currentPageIndex: page,\r\n pageSize: 20,\r\n })\r\n .subscribe((data) => {\r\n this.data = this.data.concat(data.users);\r\n this.isNextPageAvailable = data.isNextPageAvailable;\r\n this.buffer = (this.data || []).slice(0, this.bufferSize);\r\n this.buffer.map((item) => {\r\n item.isSelected = false;\r\n });\r\n });\r\n }\r\n }\r\n\r\n reset() {\r\n this.ngSelectComponent.handleClearClick();\r\n }\r\n}\r\n","<ng-container *ngIf=\"label\">\r\n <div>\r\n <label class=\"select-label\"\r\n >{{ label | translate\r\n }}<span *ngIf=\"isRequired()\" class=\"text-danger m-1\">*</span></label\r\n >\r\n </div>\r\n</ng-container>\r\n<div class=\"user-select\" [ngClass]=\"{ 'multiple-wrapper': multiple }\" SetRtl>\r\n <ng-select\r\n #ngSelectComponent\r\n [items]=\"buffer\"\r\n [bindLabel]=\"bindLabel\"\r\n [bindValue]=\"bindValue\"\r\n [placeholder]=\"placeholder\"\r\n [multiple]=\"multiple\"\r\n [searchable]=\"searchable\"\r\n [closeOnSelect]=\"closeOnSelect\"\r\n [hideSelected]=\"hideSelectedItems\"\r\n [loading]=\"loading\"\r\n (scrollToEnd)=\"onScrollToEnd()\"\r\n [disabled]=\"disabled\"\r\n [(ngModel)]=\"selection\"\r\n (change)=\"emitSelection($event)\"\r\n >\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <span\r\n style=\"\r\n display: flex;\r\n align-items: center;\r\n column-gap: 4px;\r\n font-size: 16px;\r\n \"\r\n >\r\n <div style=\"width: 30px; height: 30px\">\r\n <cts-avatar [user]=\"item\"></cts-avatar>\r\n </div>\r\n <div class=\"user-name\">\r\n {{ item.properties.firstName }} {{ item.properties.lastName }}\r\n </div>\r\n <div>\r\n <span\r\n class=\"ng-value-icon right\"\r\n (click)=\"clear(item)\"\r\n aria-hidden=\"true\"\r\n >×</span\r\n >\r\n </div>\r\n </span>\r\n </ng-template>\r\n\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <span\r\n style=\"\r\n display: flex;\r\n align-items: center;\r\n column-gap: 4px;\r\n font-size: 16px;\r\n \"\r\n >\r\n <div style=\"width: 30px; height: 30px\">\r\n <cts-avatar [user]=\"item\"></cts-avatar>\r\n </div>\r\n <div>\r\n {{ item.properties.firstName }} {{ item.properties.lastName }}\r\n </div>\r\n\r\n <div></div>\r\n </span>\r\n </ng-template>\r\n </ng-select>\r\n</div>\r\n<mat-error\r\n [attr.data-automation-id]=\"'card-textitem-error-'\"\r\n class=\"app-textitem-editable-error\"\r\n *ngIf=\"hasErrors()\"\r\n>\r\n <ul>\r\n <li *ngIf=\"control.errors.required\">\r\n {{ \"VALIDATORS.REQUIRED\" | translate }}\r\n </li>\r\n </ul>\r\n</mat-error>\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Optional,\r\n Output,\r\n Self,\r\n SimpleChanges,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n FormControl,\r\n NgControl,\r\n} from '@angular/forms';\r\nimport { NgSelectComponent } from '@ng-select/ng-select';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Observable, of, Subject } from 'rxjs';\r\nimport {\r\n catchError,\r\n debounceTime,\r\n distinctUntilChanged,\r\n switchMap,\r\n tap,\r\n} from 'rxjs/operators';\r\nimport { TranslationService } from '../../../../Core/services/translation/translation.service';\r\nimport { UsersInDepartmentsApiService } from './services/user-api.service';\r\nimport * as _ from 'lodash';\r\nimport { Cacheable } from 'ts-cacheable';\r\n/**\r\n * Users dropdown input integrated with users API,\r\n * that can be used inside reactive or template driven forms\r\n * @title\r\n * Users dropdown\r\n * @example\r\n * <cts-dynamic-form-select-users\r\n * formControlName=\"controlName\"\r\n * [bindValue]=\"bindToProperty\"\r\n * [bindLabel]=\"'bindToLabel'\"\r\n * [searchable]=\"true\"\r\n * [label]=\"'PATH.TO.TRANSLATION'\"\r\n * [deptTitle]=\"'all'\"\r\n * ></cts-dynamic-form-select-users>\r\n */\r\nconst minute = 60000;\r\n@Component({\r\n selector: 'cts-dynamic-form-select-users',\r\n templateUrl: './dynamic-form-select-users.component.html',\r\n styleUrls: ['./dynamic-form-select-users.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class DynamicFormSelectUsersComponent\r\n implements OnChanges, OnDestroy, ControlValueAccessor\r\n{\r\n @ViewChild('ngSelectComponent') ngSelectComponent: NgSelectComponent;\r\n selectionstrg: string;\r\n data = [];\r\n allUsers: boolean;\r\n userNameInput$ = new Subject<string>();\r\n /** filter users by department (departmentName | all) */\r\n @Input() deptTitle: string;\r\n /** Field Label */\r\n @Input() label: string;\r\n /** Bind value to object property */\r\n @Input() bindValue;\r\n /** Bind label to object property */\r\n @Input() bindLabel;\r\n /** Placeholder text */\r\n @Input() placeholder;\r\n /** Can select multiple */\r\n @Input() multiple = false;\r\n /** is dropdown searchable */\r\n @Input() searchable = false;\r\n /** should close dropdown on value selection */\r\n @Input() closeOnSelect = true;\r\n /** should hide selected items */\r\n @Input() hideSelectedItems = false;\r\n /** Pre Selected values */\r\n @Input() preSelectedValues;\r\n /** is Disabled */\r\n @Input() disabled = false;\r\n /** List of usernames that should be exluded */\r\n @Input() filter: string[] = [];\r\n /** event emitted when item is selected */\r\n @Output() onSelectItems = new EventEmitter();\r\n loading = false;\r\n selection;\r\n buffer = [];\r\n bufferSize = 1000;\r\n numberOfItemsFromEndBeforeFetchingMore = 10;\r\n suffix;\r\n\r\n propagateChange: any = () => {};\r\n validateFn: any = () => {};\r\n\r\n public onTouched: any = () => {\r\n /*Empty*/\r\n };\r\n pageIndex: number = 0;\r\n isNextPageAvailable: boolean;\r\n public get invalid(): boolean {\r\n return this.control ? this.control.invalid : false;\r\n }\r\n\r\n public get showError(): boolean {\r\n if (!this.control) {\r\n return false;\r\n }\r\n\r\n const { dirty, touched } = this.control;\r\n\r\n return this.invalid ? dirty || touched : false;\r\n }\r\n constructor(\r\n private userApiService: UsersInDepartmentsApiService,\r\n public translate: TranslateService,\r\n private translation: TranslationService,\r\n @Self() @Optional() public control: NgControl\r\n ) {\r\n if (this.control) {\r\n this.control.valueAccessor = this;\r\n }\r\n }\r\n\r\n emitSelection(event) {\r\n if (this.multiple) {\r\n this.selectionstrg = `${this.selection.length} ${this.suffix}`;\r\n }\r\n this.propagateChange(this.selection);\r\n this.onSelectItems.emit(event);\r\n }\r\n\r\n onScrollToEnd() {\r\n this.fetchMore();\r\n ++this.pageIndex;\r\n if (this.isNextPageAvailable && this.allUsers) {\r\n this.getDepartments(this.pageIndex);\r\n }\r\n }\r\n\r\n private fetchMore() {\r\n this.loading = true;\r\n const len = this.buffer.length;\r\n const more = this.data.slice(len, this.bufferSize + len);\r\n this.buffer = this.data.concat(more);\r\n this.loading = false;\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.deptTitle && !changes.deptTitle?.firstChange) {\r\n this.data = [];\r\n this.buffer = [];\r\n this.getDepartments();\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.allUsers = this.deptTitle === 'all' ? true : false;\r\n this.selection = this.multiple ? [] : undefined;\r\n if (this.allUsers) {\r\n this.loadUsers();\r\n }\r\n this.getDepartments();\r\n this.translation.isArabic.subscribe((ar) => {\r\n ar\r\n ? (this.suffix = 'مستخدم تم إختياره')\r\n : (this.suffix = 'Users Selected');\r\n if (this.multiple) {\r\n this.selectionstrg = `${this.selection.length} ${this.suffix}`;\r\n }\r\n });\r\n }\r\n writeValue(value) {\r\n if (value) {\r\n this.selection = value;\r\n if (this.multiple) {\r\n this.selectionstrg = `${this.selection.length} ${this.suffix}`;\r\n }\r\n }\r\n }\r\n\r\n compareFn(item, selected) {\r\n console.log(\"item 1\", item);\r\n console.log(\"Item 2\", selected);\r\n return item.id === selected.id;\r\n }\r\n registerOnChange(fn) {\r\n this.propagateChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any) {\r\n this.onTouched = fn;\r\n }\r\n\r\n validate(c: FormControl) {\r\n return this.validateFn(c);\r\n }\r\n isRequired() {\r\n if (!this.control || !this.control.control.validator) {\r\n return false;\r\n }\r\n\r\n const validator = this.control.control.validator({} as AbstractControl);\r\n return validator && validator.required;\r\n }\r\n hasErrors(): boolean {\r\n return this.showError;\r\n }\r\n getDepartments(page = 0) {\r\n if (this.deptTitle) {\r\n if (this.allUsers) {\r\n this.getAllUsers(page).subscribe((data) => {\r\n let newData = this.constructUserArray(data.entries, 'id');\r\n this.data = this.data.concat(newData);\r\n this.isNextPageAvailable = data.isNextPageAvailable;\r\n this.buffer = (this.data || []).slice(0, this.bufferSize);\r\n this.buffer.map((item) => {\r\n item.isSelected = false;\r\n });\r\n this.loading = false; // for loading spinner\r\n });\r\n } else {\r\n this.getCtsUsers(this.deptTitle).subscribe((data) => {\r\n let newData = this.constructUserArray(\r\n data.users,\r\n 'properties.username'\r\n );\r\n this.data = this.data.concat(newData);\r\n this.isNextPageAvailable = data.isNextPageAvailable;\r\n this.buffer = (this.data || []).slice(0, this.bufferSize);\r\n this.buffer.map((item) => {\r\n item.isSelected = false;\r\n });\r\n });\r\n }\r\n }\r\n }\r\n\r\n // @Cacheable({\r\n // maxCacheCount: 1000,\r\n // maxAge: 20000,\r\n // })\r\n getAllUsers(page = 0): Observable<any> {\r\n return this.userApiService.getAllUsers({\r\n currentPageIndex: page,\r\n pageSize: 20,\r\n });\r\n }\r\n\r\n getCtsUsers(deptTitle): Observable<any> {\r\n return this.userApiService.getCtsUsers(deptTitle);\r\n }\r\n\r\n @Cacheable({\r\n maxCacheCount: 1000,\r\n maxAge: 5 * minute,\r\n })\r\n getUsersSuggestions(term): Observable<any> {\r\n return this.userApiService.getUsersSuggestions(term);\r\n }\r\n private loadUsers() {\r\n this.userNameInput$\r\n .pipe(\r\n debounceTime(200),\r\n distinctUntilChanged(),\r\n tap(() => (this.loading = true)),\r\n switchMap((term) => {\r\n if (term && term.length) {\r\n return this.getUsersSuggestions(term);\r\n } else {\r\n return this.getAllUsers();\r\n }\r\n })\r\n )\r\n .subscribe(\r\n (data: any) => {\r\n if (data.entries.length) {\r\n let newData = this.constructUserArray(data.entries, 'id');\r\n this.buffer = (newData || []).slice(0, this.bufferSize);\r\n this.isNextPageAvailable = data.isNextPageAvailable;\r\n this.loading = false;\r\n } else {\r\n this.buffer = [];\r\n this.loading = false;\r\n }\r\n },\r\n (err) => {\r\n this.loading = false;\r\n this.buffer = [];\r\n }\r\n );\r\n }\r\n private constructUserArray(data, filterValue: string) {\r\n let ConstructedData: any[];\r\n ConstructedData = this.insertFUllName(data);\r\n ConstructedData = this.filterUsers(data, filterValue);\r\n return ConstructedData;\r\n }\r\n\r\n private insertFUllName(data) {\r\n return data.map((user) => {\r\n user.fullName = `${user.properties.firstName} ${user.properties.lastName}`;\r\n });\r\n }\r\n private filterUsers(data, path: string) {\r\n let filterData = data.filter((user) => {\r\n const includedInFilter =\r\n this.filter.includes(_.get(user, path)) ||\r\n _.get(user, path) === 'Administrator';\r\n return !includedInFilter;\r\n });\r\n return filterData;\r\n }\r\n\r\n reset() {\r\n this.ngSelectComponent.handleClearClick();\r\n }\r\n ngOnDestroy(): void {\r\n this.userNameInput$.unsubscribe();\r\n }\r\n}\r\n","<ng-container *ngIf=\"label\">\r\n <div>\r\n <label class=\"select-label\"\r\n >{{ label | translate\r\n }}<span *ngIf=\"isRequired()\" class=\"text-danger m-1\">*</span></label\r\n >\r\n </div>\r\n</ng-container>\r\n<div class=\"user-select\" [ngClass]=\"{ 'multiple-wrapper': multiple }\" SetRtl>\r\n <ng-select\r\n #ngSelectComponent\r\n [items]=\"buffer\"\r\n [bindLabel]=\"bindLabel\"\r\n [placeholder]=\"\r\n multiple && selection.length > 0 ? selectionstrg : placeholder\r\n \"\r\n [multiple]=\"multiple\"\r\n [searchable]=\"searchable\"\r\n [closeOnSelect]=\"closeOnSelect\"\r\n [hideSelected]=\"hideSelectedItems\"\r\n [loading]=\"loading\"\r\n (scrollToEnd)=\"onScrollToEnd()\"\r\n [disabled]=\"disabled\"\r\n [typeahead]=\"userNameInput$\"\r\n [compareWith]=\"compareFn\"\r\n [(ngModel)]=\"selection\"\r\n (change)=\"emitSelection($event)\"\r\n >\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <span\r\n style=\"\r\n display: flex;\r\n align-items: center;\r\n column-gap: 4px;\r\n font-size: 16px;\r\n \"\r\n >\r\n <div style=\"width: 30px; height: 30px\">\r\n <cts-avatar [user]=\"item\"></cts-avatar>\r\n </div>\r\n <div class=\"user-name\">\r\n {{ item.properties.firstName }} {{ item.properties.lastName }}\r\n </div>\r\n <div>\r\n <span\r\n class=\"ng-value-icon right\"\r\n (click)=\"clear(item)\"\r\n aria-hidden=\"true\"\r\n >×</span\r\n >\r\n </div>\r\n </span>\r\n </ng-template>\r\n\r\n <ng-template\r\n ng-option-tmp\r\n let-item=\"item\"\r\n let-item$=\"item$\"\r\n let-index=\"index\"\r\n >\r\n <span\r\n style=\"\r\n display: flex;\r\n align-items: center;\r\n column-gap: 4px;\r\n font-size: 16px;\r\n \"\r\n >\r\n <mat-checkbox\r\n *ngIf=\"multiple\"\r\n id=\"item-{{ index }}\"\r\n [ngModel]=\"item$.selected\"\r\n (click)=\"(false)\"\r\n ></mat-checkbox>\r\n <div style=\"width: 30px; height: 30px\">\r\n <cts-avatar [user]=\"item\"></cts-avatar>\r\n </div>\r\n <div>\r\n {{ item.properties.firstName }} {{ item.properties.lastName }}\r\n </div>\r\n\r\n <div></div>\r\n </span>\r\n </ng-template>\r\n </ng-select>\r\n</div>\r\n<mat-error\r\n [attr.data-automation-id]=\"'card-textitem-error-'\"\r\n class=\"app-textitem-editable-error\"\r\n *ngIf=\"hasErrors()\"\r\n>\r\n <ul>\r\n <li *ngIf=\"control.errors.required\">\r\n {{ \"VALIDATORS.REQUIRED\" | translate }}\r\n </li>\r\n </ul>\r\n</mat-error>\r\n","import {\r\n Component,\r\n Input,\r\n OnChanges,\r\n Optional,\r\n Self,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NgControl,\r\n} from '@angular/forms';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { DynamicFormTextItemModel } from '../../models/dynamic-form.models';\r\nimport { DynamicFormUpdateService } from '../../services/dynamic-form-update.service';\r\n\r\n/**\r\n * A textarea input that can be used inside reactive or template driven forms\r\n * @title\r\n * Textarea\r\n * @example\r\n * <app-dynamic-form-textarea\r\n * [horizontalAlign]=\"false\"\r\n * formControlName=\"controlName\"\r\n * [placeholder]=\"'PATH.TO.PLACEHOLDER.STRING'\"\r\n * ></app-dynamic-form-textarea>\r\n */\r\n@Component({\r\n selector: 'app-dynamic-form-textarea',\r\n templateUrl: './dynamic-form-textarea.component.html',\r\n styleUrls: ['./dynamic-form-textarea.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class DynamicFormTextareaComponent\r\n implements OnChanges, ControlValueAccessor\r\n{\r\n static DEFAULT_SEPARATOR = ', ';\r\n /** @deprecated */\r\n @Input()\r\n property: DynamicFormTextItemModel;\r\n\r\n /** Field Label */\r\n @Input()\r\n label;\r\n /** is editable */\r\n @Input()\r\n editable = true;\r\n /** is dsisabled */\r\n @Input()\r\n disabled = false;\r\n /** DOM element Id */\r\n @Input()\r\n id;\r\n /** Input placeholder */\r\n @Input() placeholder = '';\r\n /** @deprecated */\r\n @Input()\r\n displayEmpty = true;\r\n\r\n /** make label and control side by side not vertical */\r\n @Input() horizontalAlign = true;\r\n\r\n @ViewChild('editorInput')\r\n private editorInput: any;\r\n\r\n inEdit = false;\r\n editedValue: string;\r\n errorMessages: string[];\r\n valueSeparator: string;\r\n\r\n constructor(\r\n private dynamicFormUpdateService: DynamicFormUpdateService,\r\n public translate: TranslateService,\r\n @Self() @Optional() public control: NgControl\r\n ) {\r\n this.control.valueAccessor = this;\r\n this.valueSeparator = DynamicFormTextareaComponent.DEFAULT_SEPARATOR;\r\n }\r\n onChange: any = () => {};\r\n onTouched: any = () => {};\r\n\r\n isRequired() {\r\n if (!this.control.control.validator) {\r\n return false;\r\n }\r\n\r\n const validator = this.control.control.validator({} as AbstractControl);\r\n return validator && validator.required;\r\n }\r\n writeValue(obj: any): void {\r\n this.editedValue = obj;\r\n // this.property.value = obj;\r\n\r\n // throw new Error('Method not implemented.');\r\n }\r\n public get invalid(): boolean {\r\n return this.control ? this.control.invalid : false;\r\n }\r\n\r\n public get showError(): boolean {\r\n if (!this.control) {\r\n return false;\r\n }\r\n\r\n const { dirty, touched } = this.control;\r\n\r\n return this.invalid ? dirty || touched : false;\r\n }\r\n registerOnChange(fn: any) {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any) {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n ngOnChanges(): void {\r\n // this.editedValue = this.property.multiline\r\n // ? this.property.displayValue\r\n // : this.property.value;\r\n }\r\n\r\n showProperty(): boolean {\r\n return this.displayEmpty || !this.property.isEmpty();\r\n }\r\n\r\n showClickableIcon(): boolean {\r\n return this.hasIcon() && this.editable;\r\n }\r\n\r\n isEditable(): boolean {\r\n return this.editable;\r\n }\r\n isDisabled(): boolean {\r\n return this.disabled;\r\n }\r\n\r\n isClickable(): boolean {\r\n return !!this.property.clickable;\r\n }\r\n\r\n hasIcon(): boolean {\r\n return !!this.property.icon;\r\n }\r\n\r\n hasErrors(): boolean {\r\n return this.showError;\r\n }\r\n\r\n setEditMode(editStatus: boolean): void {\r\n this.inEdit = editStatus;\r\n setTimeout(() => {\r\n if (this.editorInput) {\r\n this.editorInput.nativeElement.click();\r\n }\r\n }, 0);\r\n }\r\n\r\n reset(event: MouseEvent | KeyboardEvent): void {\r\n event.stopPropagation();\r\n\r\n /*\r\n this.editedValue = this.property.multiline\r\n ? this.property.displayValue\r\n : this.property.value; */\r\n this.setEditMode(false);\r\n this.resetErrorMessages();\r\n }\r\n\r\n private resetErrorMessages() {\r\n this.errorMessages = [];\r\n }\r\n\r\n update(event: MouseEvent | KeyboardEvent): void {\r\n event.stopPropagation();\r\n const updatedValue = this.prepareValueForUpload(\r\n this.property,\r\n this.editedValue\r\n );\r\n // this.property.value = updatedValue;\r\n this.onChange(updatedValue);\r\n this.onTouched();\r\n // this.dynamicFormUpdateService.update(this.property, updatedValue);\r\n this.setEditMode(false);\r\n this.resetErrorMessages();\r\n }\r\n\r\n prepareValueForUpload(\r\n property: DynamicFormTextItemModel,\r\n value: string\r\n ): string | string[] {\r\n return value;\r\n }\r\n\r\n onTextAreaInputChange() {\r\n if (this.property) {\r\n this.errorMessages = this.property.getValidationErrors(this.editedValue);\r\n }\r\n }\r\n\r\n clicked(): void {\r\n if (typeof this.property.clickCallBack === 'function') {\r\n this.property.clickCallBack();\r\n } else {\r\n this.dynamicFormUpdateService.clicked(this.property);\r\n }\r\n }\r\n}\r\n","<div class=\"app-property-value\">\r\n <div class=\"app-input-wrapper\" [ngClass]=\"{'row' : horizontalAlign}\">\r\n\r\n <label *ngIf=\"label\" for=\"formGroupInputSmall\" [ngClass]=\"{'col-3' : horizontalAlign}\">{{\r\n label | translate\r\n }}<span *ngIf=\"isRequired()\" class=\"text-danger\">*</span></label>\r\n <div [ngClass]=\"{'col-9' : horizontalAlign}\">\r\n <ng-container *ngIf=\"isEditable(); else readOnly\">\r\n <textarea [id]='id' class=\"form-control \" placeholder=\"{{placeholder | translate}}\" [attr.disabled]=\"isDisabled() || null\" #editorInput matTextareaAutosize\r\n matAutosizeMinRows=\"3\" matAutosizeMaxRows=\"5\" [(ngModel)]=\"editedValue\" (input)=\"onTextAreaInputChange()\"\r\n (keyup)=\"update($event)\" [attr.data-automation-id]=\"'card-textitem-edittextarea-' \"></textarea>\r\n <mat-error [attr.data-automation-id]=\"'card-textitem-error-'\" class=\"app-textitem-editable-error\"\r\n *ngIf=\"hasErrors()\">\r\n <ul>\r\n <li *ngIf=\"control.errors.required\">\r\n {{ 'VALIDATORS.REQUIRED' | translate }}\r\n </li>\r\n </ul>\r\n </mat-error>\r\n </ng-container>\r\n <ng-template #readOnly>\r\n {{editedValue}}\r\n </ng-template>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FieldsAdapterService {\r\n\r\n /* this.builderComponents = {\r\n VOC_CorrespondenceCategory: {\r\n title: 'Category',\r\n icon: 'terminal',\r\n schema: {\r\n 'customOptions.vocId': 'VOC_CorrespondenceCategory',\r\n label: 'Category',\r\n type: 'vocabulary',\r\n fixedKey: 'VOC_CorrespondenceCategory',\r\n input: true\r\n }\r\n },\r\n VOC_CorrespondenceClass: {\r\n title: 'Correspondence Class',\r\n icon: 'terminal',\r\n schema: {\r\n 'customOptions.vocId': 'VOC_CorrespondenceClass',\r\n label: 'Correspondence Class',\r\n type: 'vocabulary',\r\n fixedKey: 'VOC_CorrespondenceClass',\r\n input: true\r\n }\r\n },\r\n VOC_CorrespondenceClassfication: {\r\n title: 'Correspondence Classfication',\r\n icon: 'terminal',\r\n schema: {\r\n 'customOptions.vocId': 'VOC_CorrespondenceClassfication',\r\n label: 'Correspondence Classfication',\r\n type: 'vocabulary',\r\n fixedKey: 'VOC_CorrespondenceClassfication',\r\n input: true\r\n }\r\n },\r\n VOC_CorrespondenceDeliveryType: {\r\n title: 'Correspondence Delivery Type',\r\n icon: 'terminal',\r\n schema: {\r\n 'customOptions.vocId': 'VOC_CorrespondenceDeliveryType',\r\n label: 'Correspondence Delivery Type',\r\n type: 'vocabulary',\r\n fixedKey: 'VOC_CorrespondenceDeliveryType',\r\n input: true\r\n }\r\n },\r\n VOC_CorrespondencePriority: {\r\n title: 'Correspondence Priority',\r\n icon: 'terminal',\r\n schema: {\r\n 'customOptions.vocId': 'VOC_CorrespondencePriority',\r\n label: 'Correspondence Priority',\r\n type: 'vocabulary',\r\n fixedKey: 'VOC_CorrespondencePriority',\r\n input: true\r\n }\r\n },\r\n VOC_CorrespondenceSecrecyLevel: {\r\n title: 'Correspondence Secrecy Level',\r\n icon: 'terminal',\r\n schema: {\r\n 'customOptions.vocId': 'VOC_CorrespondenceSecrecyLevel',\r\n label: 'Correspondence Secrecy Level',\r\n type: 'vocabulary',\r\n fixedKey: 'VOC_CorrespondenceSecrecyLevel',\r\n input: true\r\n }\r\n }\r\n };*/\r\n adapt(fields): any {\r\n const builderComponents = {};\r\n fields = Object.keys(fields).map(fieldKey => {\r\n const constraints = fields[fieldKey].constraints;\r\n const vocabularySearch = constraints.filter(item => item.name === 'directoryResolver');\r\n const vocabulary = vocabularySearch.length ? vocabularySearch[0].parameters.directory : null;\r\n const adaptedField = {\r\n title: fieldKey,\r\n icon: 'terminal',\r\n schema: {\r\n // 'validate.required': constraints.filter(item => item.name === 'NotNullConstraint').length > 0,\r\n label: fieldKey,\r\n type: '',\r\n fixedKey: fieldKey,\r\n input: true\r\n }\r\n };\r\n\r\n switch (fields[fieldKey].type) {\r\n case 'string':\r\n adaptedField.schema.type = 'textfield';\r\n if (vocabulary) {\r\n adaptedField.schema.type = 'vocabulary';\r\n adaptedField.schema['customOptions.vocId'] = vocabulary;\r\n }\r\n break;\r\n case 'boolean':\r\n adaptedField.schema.type = 'toggle';\r\n break;\r\n case 'string[]':\r\n adaptedField.schema.type = 'textfield';\r\n // tslint:disable-next-line:no-string-literal\r\n adaptedField.schema['multiple'] = true;\r\n break;\r\n case 'long':\r\n adaptedField.schema.type = 'number';\r\n break;\r\n case 'date':\r\n adaptedField.schema.type = 'customdate';\r\n }\r\n return adaptedField;\r\n });\r\n fields.forEach(field => {\r\n builderComponents[field.schema.fixedKey] = field;\r\n });\r\n return builderComponents;\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { from, Observable } from 'rxjs';\r\nimport { catchError, map, tap } from 'rxjs/operators';\r\nimport { AppConfigService } from '../../../../configuration/app-config.service';\r\nimport { NuxeoService } from '../../../../Core/services/nuxeo/nuxeo.service';\r\nimport { FieldsAdapterService } from './fields.adapter';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class FormBuilderService {\r\n dynamicFieldsOperations;\r\n myPrefix = '';\r\n constructor(\r\n private nuxeoService: NuxeoService,\r\n private configService: AppConfigService,\r\n private fieldsAdapter: FieldsAdapterService, @Inject('environment') private environment) {\r\n\r\n this.dynamicFieldsOperations = this.configService.myConfiguration.dynamicForms.operations;\r\n }\r\n\r\n // getSchema(schema): Observable<any> {\r\n // return from(this.nuxeoService.nuxeoClient.request(`/config/schemas/${schema}`)\r\n // .get({\r\n // headers: {\r\n // 'fetch.schema': 'fields'\r\n // }\r\n // })).pipe(\r\n // map((data: any) => this.fieldsAdapter.adapt(data.fields))\r\n // );\r\n // }\r\n\r\n getSchemaComponents(type){\r\n return from(this.nuxeoService.nuxeoClient.request(`config/facets/${type}`)\r\n .get({\r\n headers: {\r\n 'fetch.schema': 'fields'\r\n }\r\n })).pipe(\r\n map((data: any) => {\r\n this.myPrefix = data.schemas[0].prefix;\r\n return this.fieldsAdapter.adapt(data.schemas[0].fields)\r\n })\r\n );\r\n }\r\n\r\n createFormJson(type , jsonObject){\r\n jsonObject['prefix']=this.myPrefix;\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .operation('AC_UA_DynamicForm_Create', {\r\n url: `${this.environment.nuxeo}${this.environment.customAutomation}`,\r\n })\r\n .context({\r\n \"schema\":type,\r\n \"json\":jsonObject\r\n })\r\n .execute()\r\n ).pipe(\r\n catchError((err) => {\r\n console.log(err);\r\n throw err;\r\n }))\r\n \r\n }\r\n\r\n getDynamicForm(type) {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .operation(this.dynamicFieldsOperations.getFormJson, {\r\n url: `${this.environment.nuxeo}${this.environment.customAutomation}`,\r\n })\r\n .context({\r\n \"schema\": type\r\n })\r\n .execute({\r\n headers: {\r\n properties: '*',\r\n },\r\n })\r\n ).pipe(\r\n map(res => {\r\n let myData = JSON.parse(res['entries'][0]['properties']['note:note']);\r\n this.myPrefix = myData.prefix;\r\n return myData;\r\n }),\r\n catchError((err) => {\r\n console.log(err);\r\n throw err;\r\n })\r\n );\r\n }\r\n\r\n adaptOutDynamicFields(data) {\r\n let myAdaptedData = {};\r\n\r\n Object.keys({...data}).map(key => {\r\n myAdaptedData[this.myPrefix + ':' + key] = data[key];\r\n })\r\n\r\n return myAdaptedData;\r\n }\r\n \r\n adaptInDynamicFields(data) {\r\n let myAdaptedData = {};\r\n\r\n Object.keys({...data}).map(key => {\r\n if(key.includes(this.myPrefix + ':')){\r\n myAdaptedData[key.replace(this.myPrefix+':','')] = data[key];\r\n }\r\n })\r\n\r\n return myAdaptedData;\r\n }\r\n}\r\n","import {\r\n Component, EventEmitter, Input, OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output, ViewEncapsulation\r\n} from '@angular/core';\r\nimport { FormBuilderService } from './form-builder.service';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Utils } from 'formiojs';\r\nimport { Subscription } from 'rxjs';\r\n\r\n/** @ignore */\r\n\r\n@Component({\r\n selector: 'app-dynamic-form',\r\n templateUrl: './dynamic-form.component.html',\r\n styleUrls: ['./dynamic-form.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class DynamicFormComponent implements OnChanges, OnInit , OnDestroy{\r\n @Input()\r\n form: any = {};\r\n @Input()\r\n data: any = null;\r\n @Input()\r\n readOnly = false;\r\n @Output()\r\n change = new EventEmitter();\r\n submission = {};\r\n translations: {};\r\n // tslint:disable-next-line:no-output-native\r\n renderOptions = {};\r\n refresher = new EventEmitter();\r\nlangSubscription : Subscription;\r\n\r\n constructor(private formBuilderServic: FormBuilderService, public translate: TranslateService) { }\r\n\r\n\r\n\r\n ngOnInit(): void {\r\n this.langSubscription = this.translate.onLangChange.subscribe(event => {\r\n this.refresher.emit(event.lang);\r\n });\r\n }\r\n ngOnChanges(changes) {\r\n if (this.data) {\r\n this.submission = {\r\n data: this.formBuilderServic.adaptInDynamicFields(this.data)\r\n }\r\n }\r\n\r\n const translations = {};\r\n const translationsAr = {};\r\n Utils.eachComponent(this.form.components, (comp) => {\r\n translations[comp.label] = comp.label;\r\n translations[comp.description] = comp.description;\r\n translations[comp.tooltip] = comp.tooltip;\r\n translationsAr[comp.label] = comp.labelAr;\r\n translationsAr[comp.description] = comp.descriptionAr;\r\n translationsAr[comp.tooltip] = comp.tooltipAr;\r\n });\r\n this.renderOptions = {\r\n\r\n language: this.translate.currentLang,\r\n i18n: {\r\n ar: translationsAr,\r\n en: translations\r\n }\r\n };\r\n }\r\n\r\n ngOnDestroy(){\r\n this.langSubscription ? this.langSubscription.unsubscribe() : '';\r\n }\r\n excuteFunction(event) {\r\n // this.FormBuilderService.adaptOutDynamicFields(formChange.data);\r\n // let data = event.data;\r\n // let p = this.formBuilderServic.myPrefix;\r\n // let myAdaptedData = {};\r\n // // for ( let key in data){\r\n // // data[this.formBuilderServic.myPrefix + key] = data[key];\r\n // // delete data[key];\r\n // // }\r\n // Object.keys({...data}).map(key => {\r\n // myAdaptedData[p + ':' + key] = data[key];\r\n // })\r\n // this.change.emit(myAdaptedData);\r\n\r\n if (event.data) {\r\n let myformValue = {\r\n valid : event.isValid,\r\n data : this.formBuilderServic.adaptOutDynamicFields(event.data)\r\n }\r\n this.change.emit(myformValue)\r\n }\r\n }\r\n}\r\n","<div class=\"container-fluid\">\r\n <formio [form]=\"form\" (change)=\"excuteFunction($event)\" [renderOptions]=\"renderOptions\" [language]=\"refresher\" [submission]=\"submission\"></formio>\r\n</div>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FormioCustomComponent } from 'angular-formio';\r\n\r\n@Component({\r\n selector: 'app-date-wrapper',\r\n templateUrl: './date-wrapper.component.html',\r\n styleUrls: ['./date-wrapper.component.scss']\r\n})\r\nexport class DateWrapperComponent implements FormioCustomComponent<any> {\r\n @Input()\r\n value: number;\r\n\r\n\r\n @Input()\r\n fixedKey: string;\r\n\r\n @Output()\r\n valueChange = new EventEmitter<any>();\r\n\r\n @Input()\r\n disabled: boolean;\r\n\r\n constructor() {\r\n }\r\n\r\n excuteFunction(event){\r\n // set timout to fix issue of date reading with null in page ( since value still be with undefined when emitting)\r\n setTimeout(() => {\r\n console.log(this.value)\r\n this.valueChange.emit(event);\r\n }, 1000);\r\n }\r\n}\r\n","<cts-dynamic-form-hijri-dateitem [(ngModel)]=\"value\" (valueChanged)=\"excuteFunction($event)\">\r\n</cts-dynamic-form-hijri-dateitem>\r\n","import { Injector } from '@angular/core';\r\nimport { FormioCustomComponentInfo, registerCustomFormioComponent } from 'angular-formio';\r\nimport { Components } from 'formiojs';\r\nimport { DateWrapperComponent } from './date-wrapper.component';\r\nimport { baseEditForm } from '../base-edit-form/base-edit-form';\r\n\r\nconst editForm = () => baseEditForm();\r\n\r\nconst COMPONENT_OPTIONS: FormioCustomComponentInfo = {\r\n type: 'customdate',\r\n selector: 'customdate-selector',\r\n title: 'customdate',\r\n group: 'basic',\r\n icon: 'fa fa-star',\r\n fieldOptions: ['customOptions', 'fixedKey'],\r\n editForm\r\n};\r\n\r\n\r\nexport function registerDateComponent(injector: Injector) {\r\n registerCustomFormioComponent(COMPONENT_OPTIONS, DateWrapperComponent, injector);\r\n}\r\n","import { ThrowStmt } from '@angular/compiler';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FormioCustomComponent } from 'angular-formio';\r\n\r\n@Component({\r\n selector: 'app-vocabulary-wrapper',\r\n templateUrl: './vocabulary-wrapper.component.html',\r\n styleUrls: ['./vocabulary-wrapper.component.scss']\r\n})\r\nexport class VocabularyWrapperComponent implements FormioCustomComponent<number> {\r\n @Input()\r\n value: number;\r\n\r\n @Input()\r\n vocId: string;\r\n\r\n @Input()\r\n fixedKey: string;\r\n\r\n @Input()\r\n someField: string;\r\n @Input()\r\n customOptions: string;\r\n\r\n @Output()\r\n valueChange = new EventEmitter<number>();\r\n\r\n @Input()\r\n disabled: boolean;\r\n\r\n constructor() {\r\n }\r\n\r\n executeFunction(event){\r\n this.valueChange.emit(event);\r\n }\r\n}\r\n","<app-dynamic-form-vocabulary-item *ngIf=\"vocId\"\r\n[bindLabel]=\"'displayLabel'\"\r\n[bindValue]=\"'displayLabel'\"\r\n[(ngModel)]=\"value\"\r\n(onSelecting)=\"executeFunction($event)\"\r\n[vocabularyType]=\"vocId\">\r\n</app-dynamic-form-vocabulary-item>\r\n","import { Injector } from '@angular/core';\r\nimport { FormioCustomComponentInfo, registerCustomFormioComponent } from 'angular-formio';\r\nimport { Components } from 'formiojs';\r\nimport { VocabularyWrapperComponent } from './vocabulary-wrapper.component';\r\nimport { baseEditForm } from '../base-edit-form/base-edit-form';\r\n\r\nconst editForm = () => baseEditForm([\r\n {\r\n key: 'display',\r\n components: [\r\n {\r\n type: 'textfield',\r\n label: 'vocabulary key',\r\n key: 'customOptions.vocId',\r\n disabled: true,\r\n weight: -1\r\n }\r\n ]\r\n }\r\n]);\r\nconst COMPONENT_OPTIONS: FormioCustomComponentInfo = {\r\n type: 'vocabulary',\r\n selector: 'vocabulary-selector',\r\n title: 'vocabulary',\r\n group: 'basic',\r\n icon: 'fa fa-star',\r\n fieldOptions: ['customOptions', 'customOptions.vocId', 'fixedKey'],\r\n editForm\r\n};\r\n\r\n\r\nexport function registerVocabularyComponent(injector: Injector) {\r\n registerCustomFormioComponent(COMPONENT_OPTIONS, VocabularyWrapperComponent, injector);\r\n}\r\n","import { AfterViewInit, ChangeDetectionStrategy, Component, Input, OnDestroy, OnInit, Optional, Self } from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, NgControl } from '@angular/forms';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'cts-dynamic-form-field',\r\n templateUrl: './dynamic-form-field.component.html',\r\n styleUrls: ['./dynamic-form-field.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DynamicFormFieldComponent implements OnInit, OnDestroy, ControlValueAccessor {\r\n @Input() disabled = false;\r\n @Input() field;\r\n value: any;\r\n private onDestroy$ = new Subject<boolean>();\r\n\r\n constructor(\r\n public translate: TranslateService,\r\n @Self() @Optional() private control: NgControl\r\n\r\n ) {\r\n this.control.valueAccessor = this;\r\n\r\n }\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n public get invalid(): boolean {\r\n return this.control ? this.control.invalid : false;\r\n }\r\n\r\n public get showError(): boolean {\r\n if (!this.control) {\r\n return false;\r\n }\r\n\r\n const { dirty, touched } = this.control;\r\n\r\n return this.invalid ? (dirty || touched) : false;\r\n }\r\n Validator = (control: AbstractControl): { [key: string]: boolean } | null => {\r\n\r\n if (!this.value.isValid) {\r\n return { formValidator: true };\r\n }\r\n return null;\r\n }\r\n isRequired(): boolean {\r\n if (!this.control.control.validator) {\r\n return false;\r\n }\r\n\r\n const validator = this.control.control.validator({} as AbstractControl);\r\n return (validator && validator.required);\r\n }\r\n writeValue(value: any): void {\r\n\r\n this.value = value;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.control.control.setValidators([this.Validator]);\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 setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n\r\n\r\n ngOnDestroy(): void {\r\n this.onDestroy$.next(true);\r\n this.onDestroy$.complete();\r\n }\r\n\r\n\r\n onChanged(value): void {\r\n console.log(value);\r\n this.value = value;\r\n this.onChange(value);\r\n this.onTouched();\r\n\r\n }\r\n\r\n}\r\n","<formio [form]=\"field\" (change)=\"onChanged($event)\"></formio>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cts-toggle-wrapper',\r\n templateUrl: './toggle-wrapper.component.html',\r\n styleUrls: ['./toggle-wrapper.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ToggleWrapperComponent {\r\n @Input()\r\n value: number;\r\n\r\n @Input()\r\n fixedKey: string;\r\n\r\n @Input()\r\n customOptions: string;\r\n\r\n @Output()\r\n valueChange = new EventEmitter<number>();\r\n\r\n @Input()\r\n disabled: boolean;\r\n\r\n constructor() {\r\n }\r\n\r\n executeFunction(event) {\r\n this.valueChange.emit(event);\r\n }\r\n}\r\n\r\n","<cts-dynamic-form-slide-toggleitem [disabled]=\"disabled\" [(ngModel)]=\"value\" (ngModelChange)=\"executeFunction($event)\"></cts-dynamic-form-slide-toggleitem>\r\n","import { Injector } from '@angular/core';\r\nimport { FormioCustomComponentInfo, registerCustomFormioComponent } from 'angular-formio';\r\nimport { baseEditForm } from '../base-edit-form/base-edit-form';\r\nimport { ToggleWrapperComponent } from './toggle-wrapper.component';\r\n\r\nconst editForm = () => baseEditForm();\r\nconst COMPONENT_OPTIONS: FormioCustomComponentInfo = {\r\n type: 'toggle',\r\n selector: 'toggle-selector',\r\n title: 'toggle',\r\n group: 'basic',\r\n icon: 'fa fa-star',\r\n fieldOptions: ['customOptions', 'fixedKey'],\r\n editForm\r\n};\r\n\r\n\r\nexport function registerToggleComponent(injector: Injector) {\r\n registerCustomFormioComponent(COMPONENT_OPTIONS, ToggleWrapperComponent, injector);\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { Utils } from 'formiojs';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { TranslationService } from '../../../../Core/services/translation/translation.service';\r\n\r\n@Component({\r\n selector: 'cts-dynamic-form-viewer',\r\n templateUrl: './dynamic-form-viewer.component.html',\r\n styleUrls: ['./dynamic-form-viewer.component.scss']\r\n})\r\nexport class DynamicFormViewerComponent implements OnInit {\r\n @Input()\r\n form: any = {};\r\n @Input()\r\n data: any = null;\r\n list = [];\r\n isArabic = false;\r\n constructor( private translate: TranslateService, private translation : TranslationService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.translation.isArabic.subscribe(res => {\r\n this.isArabic = res ;\r\n const translations = {};\r\n const translationsAr = {};\r\n Utils.eachComponent(this.form.components, (comp) => {\r\n this.list.push({\r\n labelAr : comp.labelAr,\r\n labelEn : comp.label,\r\n customOptions: comp.customOptions,\r\n value : this.data[this.form.prefix + ':' + comp.key],\r\n type : comp.type\r\n })\r\n \r\n });\r\n })\r\n \r\n }\r\n}\r\n","<div class=\"dynamic-fields-values\">\r\n <div class=\"fields-title\">\r\n {{ \"CREATE.CORRESP_FORM_VIEWER\" | translate }}\r\n </div>\r\n <div class=\"values-wrapper\">\r\n <div class=\"single-field-value\" *ngFor=\"let item of list\">\r\n <div class=\"title\" *ngIf=\"!isArabic\">{{ item.labelEn }}</div>\r\n <div class=\"title\" *ngIf=\"isArabic\">{{ item.labelAr }}</div>\r\n <ng-container [ngSwitch]=\"item?.type\">\r\n <ng-container *ngSwitchCase=\"'vocabulary'\">\r\n <div class=\"value\">{{ 'vocabulary.' + item.customOptions.vocId + '.' + item.value | translate}}</div> \r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'toggle'\">\r\n <div class=\"value\">{{ '' + item.value | translate}}</div> \r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <div class=\"value\">{{ item.value}}</div> \r\n </ng-container>\r\n </ng-container>\r\n \r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Injector, NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport {\r\n OwlDateTimeIntl, OwlDateTimeModule, OwlMomentDateTimeModule\r\n} from '@busacca/ng-pick-datetime';\r\nimport {\r\n MatDatetimepickerModule,\r\n MatNativeDatetimeModule\r\n} from '@mat-datetimepicker/core';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { FormioModule } from 'angular-formio';\r\nimport { AutocompleteLibModule } from 'angular-ng-autocomplete';\r\nimport { TreeviewModule } from 'ngx-treeview';\r\nimport { DirectiveModule } from '../../directive/directive.module';\r\nimport { SearchAutocompleteComponent } from '../../shared/components/search-autocomplete/search-autocomplete.component';\r\nimport { LibrarySharedModule } from '../../shared/libraryShared.module';\r\n// import { AvatarModule } from '../avatar/avatar.module';\r\nimport { AvatarModule } from '../avatar/avatar.module';\r\nimport { NgxHijriGregorianDatepickerModule } from '../hijri-gregorian-datepicker/ngx-hijri-gregorian-datepicker.module';\r\nimport { DynamicFormBoolItemComponent } from './components/dynamic-form-boolitem/dynamic-form-boolitem.component';\r\nimport { DynamicFormBuilderComponent } from './components/dynamic-form-builder/dynamic-form-builder.component';\r\nimport { DynamicFormCheckboxItemComponent } from './components/dynamic-form-checkbox-item/dynamic-form-checkbox-item.component';\r\nimport { DynamicFormDateItemComponent } from './components/dynamic-form-dateitem/dynamic-form-dateitem.component';\r\nimport { owlDateTimeIntl } from './components/dynamic-form-dateitem/owlDateTimeIntl';\r\nimport { DynamicFormDepartmentComponent } from './components/dynamic-form-department/dynamic-form-department.component';\r\nimport { DynamicFormHijriDateitemComponent } from './components/dynamic-form-hijri-dateitem/dynamic-form-hijri-dateitem.component';\r\nimport { DynamicFormItemDispatcherComponent } from './components/dynamic-form-item-dispatcher/dynamic-form-item-dispatcher.component';\r\nimport { DynamicFormMapItemComponent } from './components/dynamic-form-mapitem/dynamic-form-mapitem.component';\r\nimport { DynamicFormOptionsComponent } from './components/dynamic-form-options/dynamic-form-options.component';\r\nimport { DynamicFormSelectTagComponent } from './components/dynamic-form-select-tag/dynamic-form-select-tag.component';\r\nimport { DynamicFormSelectUserFilterComponent } from './components/dynamic-form-select-user-filter/dynamic-form-select-user-filter.component';\r\nimport { DynamicFormSelectUsersComponent } from './components/dynamic-form-select-users/dynamic-form-select-users.component';\r\nimport { DynamicFormSelectItemComponent } from './components/dynamic-form-selectitem/dynamic-form-selectitem.component';\r\nimport { DynamicFormSlideToggleitemComponent } from './components/dynamic-form-slide-toggleitem/dynamic-form-slide-toggleitem.component';\r\nimport { DynamicFormTextareaComponent } from './components/dynamic-form-textarea/dynamic-form-textarea.component';\r\nimport { DynamicFormTextItemComponent } from './components/dynamic-form-textitem/dynamic-form-textitem.component';\r\nimport { TreeviewSelectComponent } from './components/dynamic-form-treeview-select/dropdown-treeview-select.component';\r\nimport { DynamicFormVocabularyItemComponent } from './components/dynamic-form-vocabulary-item/dynamic-form-vocabulary-item.component';\r\nimport { DynamicFormComponent } from './components/dynamic-form/dynamic-form.component';\r\nimport { DateWrapperComponent } from './components/form-wrappers/date-wrapper/date-wrapper.component';\r\nimport { registerDateComponent } from './components/form-wrappers/date-wrapper/date-wrapper.formio';\r\nimport { VocabularyWrapperComponent } from './components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.component';\r\nimport { registerVocabularyComponent } from './components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.formio';\r\nimport { DynamicFormContentProxyDirective } from './directives/dynamic-form-content-proxy.directive';\r\nimport { DynamicFormFieldComponent } from './components/dynamic-form-field/dynamic-form-field.component';\r\nimport { ToggleWrapperComponent } from './components/form-wrappers/toggle-wrapper/toggle-wrapper.component';\r\nimport { registerToggleComponent } from './components/form-wrappers/toggle-wrapper/toggle-wrapper.formio';\r\nimport { DynamicFormViewerComponent } from './components/dynamic-form-viewer/dynamic-form-viewer.component';\r\nimport { DepartmentFormComponent } from './components/department-form/department-form.component';\r\n\r\n/**\r\n * @title\r\n * Dynamic Form Module\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n TreeviewModule,\r\n FormsModule,\r\n LibrarySharedModule,\r\n OwlDateTimeModule,\r\n OwlMomentDateTimeModule,\r\n ReactiveFormsModule,\r\n MatDatepickerModule,\r\n MatNativeDateModule,\r\n MatCheckboxModule,\r\n MatInputModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatMenuModule,\r\n MatDatetimepickerModule,\r\n MatNativeDatetimeModule,\r\n NgSelectModule,\r\n MatSlideToggleModule,\r\n NgxHijriGregorianDatepickerModule,\r\n MatRadioModule,\r\n AvatarModule,\r\n DirectiveModule,\r\n MatTooltipModule,\r\n TranslateModule,\r\n AutocompleteLibModule,\r\n FormioModule\r\n ],\r\n declarations: [\r\n DynamicFormComponent,\r\n TreeviewSelectComponent,\r\n DynamicFormDepartmentComponent,\r\n DynamicFormBoolItemComponent,\r\n DynamicFormDateItemComponent,\r\n DynamicFormMapItemComponent,\r\n DynamicFormTextItemComponent,\r\n DynamicFormSelectItemComponent,\r\n DynamicFormItemDispatcherComponent,\r\n DynamicFormContentProxyDirective,\r\n DynamicFormTextareaComponent,\r\n DynamicFormSlideToggleitemComponent,\r\n DynamicFormVocabularyItemComponent,\r\n DynamicFormHijriDateitemComponent,\r\n DynamicFormCheckboxItemComponent,\r\n DynamicFormOptionsComponent,\r\n DynamicFormSelectUsersComponent,\r\n DynamicFormSelectUserFilterComponent,\r\n DynamicFormSelectTagComponent,\r\n SearchAutocompleteComponent,\r\n VocabularyWrapperComponent,\r\n DateWrapperComponent,\r\n DynamicFormComponent,\r\n DynamicFormBuilderComponent,\r\n DynamicFormFieldComponent,\r\n ToggleWrapperComponent,\r\n DynamicFormViewerComponent,\r\n DepartmentFormComponent\r\n\r\n ],\r\n entryComponents: [\r\n TreeviewSelectComponent,\r\n DynamicFormDepartmentComponent,\r\n DynamicFormBoolItemComponent,\r\n DynamicFormDateItemComponent,\r\n DynamicFormMapItemComponent,\r\n DynamicFormTextItemComponent,\r\n DynamicFormSelectItemComponent,\r\n DynamicFormTextareaComponent,\r\n DynamicFormSlideToggleitemComponent,\r\n DynamicFormHijriDateitemComponent,\r\n DynamicFormVocabularyItemComponent,\r\n SearchAutocompleteComponent,\r\n VocabularyWrapperComponent,\r\n DateWrapperComponent\r\n ],\r\n exports: [\r\n TreeviewSelectComponent,\r\n DynamicFormDepartmentComponent,\r\n DynamicFormComponent,\r\n DynamicFormBoolItemComponent,\r\n DynamicFormDateItemComponent,\r\n DynamicFormMapItemComponent,\r\n DynamicFormTextItemComponent,\r\n DynamicFormSelectItemComponent,\r\n DynamicFormTextareaComponent,\r\n DynamicFormSlideToggleitemComponent,\r\n DynamicFormVocabularyItemComponent,\r\n DynamicFormHijriDateitemComponent,\r\n DynamicFormCheckboxItemComponent,\r\n DynamicFormOptionsComponent,\r\n DynamicFormSelectUsersComponent,\r\n DynamicFormSelectUserFilterComponent,\r\n DynamicFormSelectTagComponent,\r\n SearchAutocompleteComponent,\r\n DynamicFormComponent,\r\n DynamicFormBuilderComponent,\r\n DynamicFormFieldComponent,\r\n DynamicFormViewerComponent,\r\n TranslateModule,\r\n DepartmentFormComponent\r\n ],\r\n providers: [{ provide: OwlDateTimeIntl, useClass: owlDateTimeIntl }],\r\n})\r\nexport class DynamicFormModule {\r\n formioRegisters = () => ([\r\n registerVocabularyComponent,\r\n registerDateComponent,\r\n registerToggleComponent\r\n ])\r\n constructor(injector: Injector) {\r\n this.formioRegisters().forEach(registerar => {\r\n try {\r\n registerar(injector);\r\n } catch (e) {\r\n\r\n }\r\n });\r\n }\r\n}\r\n","import { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\r\n/**\r\n * A reusable card component to display various types of contents\r\n *\r\n * ![Screenshot-1](../screenshots/card.png)\r\n * @title\r\n * Card\r\n * @example\r\n *\r\n * <app-card>\r\n * <h3 class=\"title\">\r\n * Card title\r\n * </h3>\r\n * <div class=\"toolbar\">\r\n * <button class=\"btn-primary\"> Action Button </button>\r\n * </div>\r\n * <div class=\"body\">\r\n * </div>\r\n * </app-card>\r\n */\r\n@Component({\r\n selector: 'app-card',\r\n templateUrl: './card.component.html',\r\n styleUrls: ['./card.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class CardComponent implements OnInit {\r\n /** card has no body */\r\n @Input()\r\n noBody?= false;\r\n /** is card dark */\r\n @Input()\r\n dark?= false;\r\n /** enable/disable shadow */\r\n constructor() { }\r\n\r\n ngOnInit(): void { }\r\n}\r\n","<div\r\n class=\"app-card\"\r\n [ngClass]=\"{\r\n 'dark-app-card ': dark\r\n }\"\r\n>\r\n <div class=\"card-inner\">\r\n <div\r\n [ngClass]=\"{\r\n hidden: title.childNodes.length == 0 && toolbar.childNodes.length == 0\r\n }\"\r\n class=\"card-title\"\r\n >\r\n <div class=\"title-padder\">\r\n <!-- title Area -->\r\n <span #title>\r\n <ng-content select=\".title\"></ng-content>\r\n </span>\r\n <!-- toolbar Area -->\r\n <div class=\"toolbar\" #toolbar>\r\n <ng-content select=\".toolbar\"></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- body area -->\r\n <div class=\"card-body\" *ngIf=\"!noBody\">\r\n <ng-content select=\".body\"></ng-content>\r\n </div>\r\n <div class=\"no-items\">\r\n <p class=\"message\">\r\n <ng-content select=\".no-content\"></ng-content>\r\n </p>\r\n </div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CardComponent } from './card.component';\r\n\r\n/**\r\n * @title\r\n * Card Module\r\n */\r\n@NgModule({\r\n declarations: [CardComponent],\r\n imports: [CommonModule],\r\n exports: [CardComponent],\r\n providers: [],\r\n})\r\nexport class CardModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { CustomToastrComponent } from './components/custom-toastr/custom-toastr.component';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { ToastrModule} from 'ngx-toastr'\r\n/** @ignore */\r\n@NgModule({\r\n declarations: [CustomToastrComponent],\r\n imports: [\r\n CommonModule, \r\n MatIconModule , \r\n TranslateModule , \r\n ToastrModule.forRoot({preventDuplicates: true})\r\n ],\r\n entryComponents: [CustomToastrComponent],\r\n exports:[TranslateModule , ToastrModule]\r\n})\r\nexport class CustomToastrModule {}\r\n","import { Component, Inject, ViewEncapsulation } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { CustomToastrService } from '../custom-toastr/services/custom-toastr.service';\r\nimport { ConfirmDialogComponent } from './confirm-dialog/confirm-dialog.component';\r\n\r\n/**\r\n * A material dialog confirm component that will ask the user for confirmation,\r\n * then shows a loader and execute a function and only close the dialog after the action is complete\r\n *\r\n *\r\n * ![screenshot-1](../screenshots/dialog.png)\r\n *\r\n * ### Usage Example\r\n * ~~~ts\r\n * let actionFunction = () => {\r\n * return this.someService.observableFunction();\r\n * };\r\n * return this.dialog\r\n * .open(ConfirmCallerDialogComponent, {\r\n * data: {\r\n * call: actionFunction,\r\n * title: 'path.to.title.translation',\r\n * toastrTitle: 'path.to.success.title',\r\n * toastrMsg: 'path.to.success.message',\r\n * },\r\n * })\r\n * .afterClosed()\r\n * .pipe(take(1))\r\n * .subscribe((data) => {\r\n * if (data) {\r\n * // do something on success\r\n * }\r\n * });\r\n * ~~~\r\n * @title\r\n * Confirm dialog\r\n */\r\n@Component({\r\n templateUrl: './confirm-caller.dialog.html',\r\n encapsulation: ViewEncapsulation.None,\r\n styleUrls: ['./confirm-caller.dialog.scss'],\r\n host: { class: 'confirm-caller' },\r\n})\r\nexport class ConfirmCallerDialogComponent {\r\n calling = false;\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data,\r\n public dialogRef: MatDialogRef<ConfirmDialogComponent>,\r\n private toastr: CustomToastrService\r\n ) {}\r\n makeCall() {\r\n this.calling = true;\r\n this.data.call(this.data).subscribe(\r\n (data) => {\r\n this.calling = false;\r\n this.dialogRef.close(data);\r\n this.toastr.show('success', this.data.toastrTitle, this.data.toastrMsg);\r\n },\r\n (error) => {\r\n this.calling = false;\r\n this.toastr.show('error', 'Error', 'genericError');\r\n }\r\n );\r\n }\r\n}\r\n","<div [dir]=\"'dir' | translate\">\r\n <h1 class=\"dialog-title\">{{data.title | translate}}</h1>\r\n <div>\r\n <div>{{data.message | translate}}</div>\r\n </div>\r\n\r\n <div mat-dialog-actions>\r\n <!-- <cts-button\r\n [theme]=\"'primary'\"\r\n [size]=\"'regular'\"\r\n [disabled]=\"calling\"\r\n (onClick)=\"makeCall()\"\r\n >\r\n {{ 'Yes' | translate}}\r\n </cts-button> -->\r\n\r\n <button class=\"btn confirm\" [disabled]=\"calling\"\r\n (click)=\"makeCall()\">\r\n {{ 'Yes' | translate}}\r\n </button>\r\n\r\n <button class=\"btn btn-light\" [mat-dialog-close]=\"false\">\r\n {{'Cancel' | translate}}\r\n </button>\r\n </div>\r\n</div>\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\n\r\n/** @ignore */\r\n@Component({\r\n selector: 'app-confirm-dialog',\r\n templateUrl: './confirm-dialog.component.html',\r\n styleUrls: ['./confirm-dialog.component.scss']\r\n})\r\nexport class ConfirmDialogComponent implements OnInit {\r\n\r\n constructor(@Inject(MAT_DIALOG_DATA) public data, public dialogRef: MatDialogRef<ConfirmDialogComponent>) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n\r\n}\r\n","<div dir=\"{{'dir' | translate}}\">\r\n <div class=\"content-container\">\r\n <span class=\"content-span full-width\">{{ data.message | translate }}</span>\r\n </div>\r\n <div class=\"button-group\">\r\n <button mat-flat-button id=\"no-button\" [mat-dialog-close]=\"false\">\r\n {{ 'No' | translate}}\r\n </button>\r\n <button mat-flat-button id=\"yes-button\" [mat-dialog-close]=\"true\">\r\n {{ 'Yes' | translate}}\r\n </button>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ConfirmCallerDialogComponent } from './confirm-caller.dialog';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { ConfirmDialogComponent } from './confirm-dialog/confirm-dialog.component';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { LibrarySharedModule } from '../../shared/libraryShared.module';\r\n\r\n/**\r\n * @title\r\n * Confirm Dialog Module\r\n */\r\n@NgModule({\r\n declarations: [ConfirmCallerDialogComponent, ConfirmDialogComponent],\r\n imports: [MatDialogModule, CommonModule,LibrarySharedModule, TranslateModule],\r\n exports: [TranslateModule,ConfirmCallerDialogComponent, ConfirmDialogComponent],\r\n providers: [],\r\n})\r\nexport class ConfirmCallerModule { }\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n/**\r\n * you can use this component for any pagination\r\n *\r\n * ![Screenshot-1](../screenshots/pagination.png)\r\n * @title\r\n * Pagination\r\n *\r\n * @example\r\n * <cts-pagination\r\n * [page]=\"pageNumber\"\r\n * (change)=\"PaginationChange($event)\"\r\n * [size]=\"PageSize\"\r\n * [count]=\"totalRecords\">\r\n * </cts-pagination>\r\n */\r\n@Component({\r\n selector: 'cts-pagination',\r\n templateUrl: './pagination.component.html',\r\n styleUrls: ['./pagination.component.scss']\r\n})\r\nexport class PaginationComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n /** Page Size */\r\n @Input()\r\n set size(val: number) {\r\n this._size = val;\r\n this.pages = this.calcPages();\r\n }\r\n\r\n get size(): number {\r\n return this._size;\r\n }\r\n\r\n /** Total records count */\r\n @Input()\r\n set count(val: number) {\r\n this._count = val;\r\n this.pages = this.calcPages();\r\n }\r\n\r\n get count(): number {\r\n return this._count;\r\n }\r\n /** Page Number */\r\n @Input()\r\n set page(val: number) {\r\n this._page = val;\r\n this.pages = this.calcPages();\r\n }\r\n\r\n get page(): number {\r\n return this._page;\r\n }\r\n /** Pages Count */\r\n get totalPages(): number {\r\n const count = this.size < 1 ? 1 : Math.ceil(this.count / this.size);\r\n return Math.max(count || 0, 1);\r\n }\r\n /** Page changed event */\r\n @Output() change: EventEmitter<any> = new EventEmitter();\r\n\r\n _count: number = 0;\r\n _page: number = 1;\r\n _size: number = 0;\r\n pages: any;\r\n\r\n canPrevious(): boolean {\r\n return this.page > 1;\r\n }\r\n\r\n canNext(): boolean {\r\n return this.page < this.totalPages;\r\n }\r\n\r\n prevPage(): void {\r\n this.selectPage(this.page - 1);\r\n }\r\n\r\n nextPage(): void {\r\n this.selectPage(this.page + 1);\r\n }\r\n\r\n selectPage(page: number): void {\r\n if (page > 0 && page <= this.totalPages && page !== this.page) {\r\n this.page = page;\r\n\r\n this.change.emit(\r\n page\r\n );\r\n }\r\n }\r\n\r\n calcPages(page?: number): any[] {\r\n const pages = [];\r\n let startPage = 1;\r\n let endPage = this.totalPages;\r\n const maxSize = 5;\r\n const isMaxSized = maxSize < this.totalPages;\r\n\r\n page = page || this.page;\r\n\r\n if (isMaxSized) {\r\n startPage = page - Math.floor(maxSize / 2);\r\n endPage = page + Math.floor(maxSize / 2);\r\n\r\n if (startPage < 1) {\r\n startPage = 1;\r\n endPage = Math.min(startPage + maxSize - 1, this.totalPages);\r\n } else if (endPage > this.totalPages) {\r\n startPage = Math.max(this.totalPages - maxSize + 1, 1);\r\n endPage = this.totalPages;\r\n }\r\n }\r\n\r\n for (let num = startPage; num <= endPage; num++) {\r\n pages.push({\r\n number: num,\r\n text: <string>(<any>num)\r\n });\r\n }\r\n\r\n return pages;\r\n }\r\n}\r\n","<ul class=\"pagination\" SetRtl *ngIf=\"pages.length > 1\">\r\n <li class=\"rotat-icon\" [class.disabled]=\"!canPrevious()\">\r\n <a\r\n role=\"button\"\r\n aria-label=\"go to previous page\"\r\n href=\"javascript:void(0)\"\r\n (click)=\"prevPage()\"\r\n >\r\n <i class=\"bi bi-caret-left\"></i>\r\n </a>\r\n </li>\r\n <li\r\n role=\"button\"\r\n [attr.aria-label]=\"'page ' + pg.number\"\r\n class=\"pages\"\r\n *ngFor=\"let pg of pages\"\r\n [class.active]=\"pg.number === page\"\r\n >\r\n <a href=\"javascript:void(0)\" (click)=\"selectPage(pg.number)\">\r\n {{ pg.text }}\r\n </a>\r\n </li>\r\n <li class=\"rotat-icon\" [class.disabled]=\"!canNext()\">\r\n <a\r\n role=\"button\"\r\n aria-label=\"go to next page\"\r\n href=\"javascript:void(0)\"\r\n (click)=\"nextPage()\"\r\n >\r\n <i class=\"bi bi-caret-right\"></i>\r\n </a>\r\n </li>\r\n</ul>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PaginationComponent } from './pagination/pagination.component';\r\nimport { DirectiveModule } from '../../directive/directive.module';\r\n\r\n\r\n/**\r\n * @title\r\n * Pagination Module\r\n */\r\n@NgModule({\r\n declarations: [PaginationComponent],\r\n imports: [\r\n CommonModule,\r\n DirectiveModule\r\n ],\r\n exports:[\r\n PaginationComponent\r\n ]\r\n})\r\nexport class PaginationModule { }\r\n","export class DocumentsConstants {\r\n public static pageProvider = {\r\n meeting: {\r\n name: 'PP_Meeting_CTDocuments',\r\n headers: { 'X-NXproperties': '*' },\r\n },\r\n committee: {\r\n name: 'PP_Committee_CTDocuments',\r\n headers: {\r\n 'X-NXproperties': '*',\r\n 'X-NXfetch-document': 'dc:creator,dc:lastContributor',\r\n },\r\n },\r\n agendaItem: {\r\n name: 'PP_AgendaItem_CTDocuments',\r\n headers: { 'X-NXproperties': '*' },\r\n },\r\n meetingAgenda: {\r\n name: 'PP_Meeting_AgendaDocuments',\r\n headers: { 'X-NXproperties': '*' },\r\n },\r\n meetingMom: {\r\n name: 'PP_Meeting_MoMDocuments',\r\n headers: { 'X-NXproperties': '*' },\r\n },\r\n documentAttachments: {\r\n name: 'PP_Document_Attachments',\r\n headers: { 'X-NXproperties': '*' },\r\n },\r\n documentAttachmentsWithAggregation: {\r\n name: 'PP_CTAttachment',\r\n headers: {\r\n 'properties': '*',\r\n 'fetch-document': 'properties',\r\n 'fetch-aggregate': 'key',\r\n 'translate-directoryEntry':'label'\r\n },\r\n },\r\n correspondenceAttachments: {\r\n name: 'PP_CorrespondenceAttachments',\r\n headers: {\r\n 'properties': '*',\r\n 'fetch-document': 'properties',\r\n 'fetch-aggregate': 'key',\r\n 'translate-directoryEntry':'label'\r\n },\r\n },\r\n };\r\n public static documentTypes = {\r\n attachment: 'CTAttachment',\r\n agendaDocument: 'AgendaDocument',\r\n MoMDocument: 'MoMDocument',\r\n };\r\n public static operations = {\r\n createVersion: 'AC_UA_CTS_Version_Create',\r\n createMemoVersion : 'AC_UA_Version_Create',\r\n getVersions: 'Document.GetVersions',\r\n lock: 'AC_UA_Document_Lock',\r\n lockMemo: 'Document.Lock',\r\n unlock: 'AC_UA_Document_Unlock',\r\n unlockMemo: 'Document.Unlock'\r\n };\r\n public static quickFilters = {\r\n resolution: 'Resolution',\r\n committee: 'Committee',\r\n task: 'Workflow',\r\n };\r\n public static vocabulary = {};\r\n public static fields = {\r\n creator: 'dc:creator',\r\n content: 'file:content',\r\n title: 'dc:title',\r\n created: 'dc:created',\r\n docRefId: 'ct_attach:docRefId',\r\n docRefTypes: 'ct_attach:docRefTypes',\r\n committeeName: 'comm:committeeName',\r\n meetingId: 'comm:meetingId',\r\n committeeId: 'comm:committeeId',\r\n committeeCode: 'comm:committeeCode',\r\n meetingCode: 'comm:meetingCode',\r\n thumbnail: 'thumb:thumbnail',\r\n major_version: 'uid:major_version',\r\n minor_version: 'uid:minor_version',\r\n };\r\n}\r\n","import { EventEmitter, Inject, Injectable } from '@angular/core';\r\nimport { combineLatest, from, Observable, ReplaySubject, Subject } from 'rxjs';\r\nimport { catchError, map, switchMap } from 'rxjs/operators';\r\nimport { AppConfigService } from '../../../configuration/app-config.service';\r\nimport { AdapterService } from '../../../Core/adapters/adapter.service';\r\nimport { NuxeoService } from '../../../Core/services/nuxeo/nuxeo.service';\r\nimport { DocumentsConstants } from '../constants/documents';\r\n\r\n/** @ignore */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class DocumentsService {\r\n value = new ReplaySubject(1);\r\n public getupdatedDocument = new EventEmitter();\r\n\r\n reFetch = new Subject<boolean>();\r\n incomingConstant;\r\n constructor(\r\n private nuxeoService: NuxeoService,\r\n private documentsAdapter: AdapterService,\r\n private configService: AppConfigService, @Inject('environment') private environment\r\n ) {\r\n // setTimeout(() => {\r\n this.incomingConstant =\r\n this.configService.myConfiguration['correspondance']['incoming'];\r\n // }, 2000);\r\n }\r\n\r\n informValue(value) {\r\n let arr = [];\r\n arr.push(value);\r\n this.value.next(value);\r\n }\r\n getDocument(uid) {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .repository()\r\n .headers({\r\n ...DocumentsConstants.pageProvider.committee.headers,\r\n 'X-NXfetch-document': 'lock,dc:creator,corr:cc,cts_common:department,corr:owner',\r\n 'X-NXenrichers-document': 'tags,permissions',\r\n })\r\n .fetch(uid)\r\n ).pipe(\r\n map((data: any) => {\r\n // i commented this since i am adapting in data coming inside the page not here\r\n // return this.documentsAdapter.adaptIn(data, DocumentsConstants.fields);\r\n delete data._nuxeo;\r\n delete data._repository;\r\n return data;\r\n }),\r\n catchError((err) => {\r\n throw err;\r\n })\r\n );\r\n }\r\n getDocumentAttachmentsWithAggregation(params = {}): Observable<any> {\r\n return from(\r\n this.nuxeoService.nuxeoClient.repository().query(\r\n {\r\n pageProvider:\r\n DocumentsConstants.pageProvider.documentAttachmentsWithAggregation\r\n .name,\r\n ...params,\r\n },\r\n {\r\n headers:\r\n DocumentsConstants.pageProvider.documentAttachmentsWithAggregation\r\n .headers,\r\n }\r\n )\r\n ).pipe(\r\n map((data: any) => {\r\n data.entries.map((item) =>\r\n this.documentsAdapter.adaptIn(item, DocumentsConstants.fields)\r\n );\r\n return data;\r\n }),\r\n catchError((err) => {\r\n throw err;\r\n })\r\n );\r\n }\r\n updateDocument(doc, params = {}) {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .repository()\r\n .headers({\r\n ...DocumentsConstants.pageProvider.committee.headers,\r\n 'fetch-document': 'lock,comm:committeeId,comm:meetingId',\r\n })\r\n .update(doc, params)\r\n ).pipe(\r\n map((data: any) => {\r\n return this.documentsAdapter.adaptIn(data, DocumentsConstants.fields);\r\n }),\r\n catchError((err) => {\r\n throw err;\r\n })\r\n );\r\n }\r\n createVersion(docId, version = 'major'): Observable<any> {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .operation(DocumentsConstants.operations.createVersion, {\r\n url: `${this.environment.nuxeo}${this.environment.customAutomation}`,\r\n })\r\n .input(docId)\r\n .params({\r\n version,\r\n })\r\n .execute()\r\n ).pipe(\r\n catchError((err) => {\r\n console.log(err);\r\n throw err;\r\n })\r\n );\r\n }\r\n\r\n createMemoVersion(docId, version = 'major'): Observable<any> {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .operation(DocumentsConstants.operations.createMemoVersion, {\r\n url: `${this.environment.nuxeo}${this.environment.customAutomation}`,\r\n })\r\n .input(docId)\r\n .params({\r\n version,\r\n })\r\n .execute()\r\n ).pipe(\r\n catchError((err) => {\r\n console.log(err);\r\n throw err;\r\n })\r\n );\r\n }\r\n\r\n getVersions(docId): Observable<any> {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .operation(DocumentsConstants.operations.getVersions)\r\n .input(docId)\r\n .params()\r\n .execute({\r\n headers: DocumentsConstants.pageProvider.committee.headers,\r\n })\r\n ).pipe(\r\n map((data: any) => {\r\n data.entries.map((item) =>\r\n this.documentsAdapter.adaptIn(item, this.incomingConstant.attachments)\r\n );\r\n return data;\r\n }),\r\n catchError((err) => {\r\n console.log(err);\r\n throw err;\r\n })\r\n );\r\n }\r\n lockDocument(docId, mode): Observable<any> {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .operation(DocumentsConstants.operations.lock)\r\n .input(docId)\r\n .params({\r\n mode: mode,\r\n })\r\n .execute({\r\n headers: {\r\n ...DocumentsConstants.pageProvider.committee.headers,\r\n 'X-NXfetch-document': 'lock,dc:creator',\r\n 'X-NXenrichers-document': 'tags',\r\n },\r\n })\r\n ).pipe(\r\n map((item) =>\r\n this.documentsAdapter.adaptIn(item, DocumentsConstants.fields)\r\n ),\r\n catchError((err) => {\r\n console.log(err);\r\n throw err;\r\n })\r\n );\r\n }\r\n lockMemoDocument(docId): Observable<any> {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .operation(DocumentsConstants.operations.lockMemo)\r\n .input(docId)\r\n .params()\r\n .execute({\r\n headers: {\r\n ...DocumentsConstants.pageProvider.committee.headers,\r\n 'X-NXfetch-document': 'lock,dc:creator',\r\n 'X-NXenrichers-document': 'tags',\r\n },\r\n })\r\n ).pipe(\r\n map(item => {return item}),\r\n catchError((err) => {\r\n console.log(err);\r\n throw err;\r\n })\r\n );\r\n }\r\n unlockDocument(docId): Observable<any> {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .operation(DocumentsConstants.operations.unlock)\r\n .input(docId)\r\n .params()\r\n .execute({\r\n headers: {\r\n ...DocumentsConstants.pageProvider.committee.headers,\r\n 'X-NXfetch-document': 'lock,dc:creator',\r\n 'X-NXenrichers-document': 'tags',\r\n },\r\n })\r\n ).pipe(\r\n map((item) =>\r\n this.documentsAdapter.adaptIn(item, DocumentsConstants.fields)\r\n ),\r\n catchError((err) => {\r\n console.log(err);\r\n throw err;\r\n })\r\n );\r\n }\r\n\r\n unlockMemoDocument(docId): Observable<any> {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .operation(DocumentsConstants.operations.unlockMemo)\r\n .input(docId)\r\n .params()\r\n .execute({\r\n headers: {\r\n ...DocumentsConstants.pageProvider.committee.headers,\r\n 'X-NXfetch-document': 'lock,dc:creator',\r\n 'X-NXenrichers-document': 'tags',\r\n },\r\n })\r\n ).pipe(\r\n map(item => {return item}),\r\n catchError((err) => {\r\n console.log(err);\r\n throw err;\r\n })\r\n );\r\n }\r\n\r\n deleteDocument(path: any) {\r\n return from(this.nuxeoService.nuxeoClient.repository().delete(path)).pipe(\r\n catchError((err) => {\r\n throw err;\r\n })\r\n );\r\n }\r\n uploadBatch(files): Observable<any> {\r\n return combineLatest([\r\n ...files.map((file) => {\r\n const nuxeoBlob = this.nuxeoService.createBlob(file);\r\n return from(\r\n this.nuxeoService.nuxeoClient.batchUpload().upload(nuxeoBlob)\r\n );\r\n }),\r\n ]).pipe(\r\n map((uploadedFiles: any) => {\r\n files.forEach((file, i) => {\r\n uploadedFiles[i].title = file.name;\r\n });\r\n return uploadedFiles;\r\n })\r\n );\r\n }\r\n createDoc(uploadedFile, path, params, docParams = {}) {\r\n const doc = {\r\n 'entity-type': 'document',\r\n name: uploadedFile.title,\r\n type: 'file',\r\n ...docParams,\r\n properties: {\r\n title: uploadedFile.title,\r\n content: uploadedFile.blob,\r\n ...params,\r\n },\r\n };\r\n\r\n const repo = this.nuxeoService.nuxeoClient.repository();\r\n return from(\r\n repo.create(`${path}`, {\r\n ...doc,\r\n properties: this.documentsAdapter.adaptOut(\r\n doc.properties,\r\n DocumentsConstants.fields\r\n ),\r\n })\r\n );\r\n }\r\n uploadDocument(file, path, params, docParams = {}): Observable<any> {\r\n return this.uploadBatch(file).pipe(\r\n switchMap((uploadedFile) => {\r\n return this.createDoc(uploadedFile, path, params, docParams).pipe(\r\n map((createdDocument) => createdDocument),\r\n catchError((err) => {\r\n throw err;\r\n })\r\n );\r\n }),\r\n catchError((err) => {\r\n throw err;\r\n })\r\n );\r\n }\r\n getDocuments(ancestorId, provider, params = {}): Observable<any> {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .repository()\r\n // .enricher('document', 'acls')\r\n .query(\r\n {\r\n pageProvider: DocumentsConstants.pageProvider[provider].name,\r\n // ct_attachment_docRefId: ancestorId,\r\n CtsCommon_correspondence: ancestorId,\r\n ...params,\r\n },\r\n {\r\n headers: DocumentsConstants.pageProvider[provider].headers,\r\n }\r\n )\r\n ).pipe(\r\n map((data: any) => {\r\n data.entries.map((item) =>\r\n this.documentsAdapter.adaptIn(item, this.incomingConstant.attachments)\r\n );\r\n return data;\r\n }),\r\n catchError((err) => {\r\n throw err;\r\n })\r\n );\r\n }\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n} from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { delay, take, takeUntil } from 'rxjs/operators';\r\nimport { NuxeoService } from '../../../../Core/services/nuxeo/nuxeo.service';\r\nimport { ConfirmCallerDialogComponent } from '../../../confirm-caller/confirm-caller.dialog';\r\nimport { CustomToastrService } from '../../../custom-toastr/services/custom-toastr.service';\r\nimport { DocumentsConstants } from '../../constants/documents';\r\nimport { DocumentsService } from '../../services/documents.service';\r\n\r\n/**\r\n * A reusable component to list attachments,\r\n * attachments can be provided as input, or can be queried using providerName and/or ancestorId\r\n * @title\r\n * Documents list\r\n *\r\n * @example\r\n *\r\n * <app-documents-list\r\n * [items]=\"ArrayOfDocumentsOrBatch\"\r\n * [disablePagination]=\"false\"\r\n * [batchList]=\"true\"\r\n * [canPreview]=\"false\"\r\n * (deleteSuccess)=\"onDelete($event)\"\r\n * ></app-documents-list>\r\n */\r\n@Component({\r\n selector: 'app-documents-list',\r\n templateUrl: './documents-list.component.html',\r\n styleUrls: ['./documents-list.component.scss'],\r\n})\r\nexport class DocumentsListComponent implements OnInit, OnChanges, OnDestroy {\r\n /** Ancestor ID */\r\n @Input()\r\n ancestorId;\r\n /** Attachments provider name */\r\n @Input()\r\n provider;\r\n @Input()\r\n /** Should disable Pagination */\r\n disablePagination = false;\r\n /** @deprecated not used */\r\n @Input()\r\n containerClasses: string;\r\n /** @deprecated not used */\r\n @Input()\r\n itemsClasses: string;\r\n /** documents or batch items array */\r\n @Input()\r\n items = [];\r\n /** Event emitter if provided and emitted will cause the list to refresh the list */\r\n @Input()\r\n notifier = null;\r\n /** Can open in viewer */\r\n @Input()\r\n canPreview = true;\r\n /** Wether items input is documents or batchList */\r\n @Input()\r\n batchList = false;\r\n /** Wether to delete actual document on Delete button click or to just emit delete event */\r\n @Input()\r\n dontDelete = false;\r\n /** wether to show or hide delete action */\r\n @Input()\r\n canDelete = true;\r\n /** Provider quick filters */\r\n @Input()\r\n quickFilters;\r\n /** added to diffrentiate between memo view and correspondance view */\r\n @Input() memoView = false;\r\n /** Emitted on delete action */\r\n @Output()\r\n deleteSuccess = new EventEmitter();\r\n /** Emitted on delete action */\r\n @Output()\r\n /** Emitted on documents load with count information */\r\n documentsCount = new EventEmitter<number>();\r\n p = 1;\r\n count = 5;\r\n totalRecords;\r\n isNextPageAvailable = true;\r\n isFetching = false;\r\n onDestroy$: Subject<boolean> = new Subject<boolean>();\r\n /** Emitted when a document is selected */\r\n @Output()\r\n documentSelect: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n constructor(\r\n private documentsApi: DocumentsService,\r\n private nuxeoApi: NuxeoService,\r\n private toastr: CustomToastrService,\r\n private dialog: MatDialog,\r\n private router: Router\r\n ) { }\r\n\r\n getDocuments() {\r\n if (this.provider) {\r\n this.isFetching = true;\r\n this.documentsApi\r\n .getDocuments(this.ancestorId, this.provider, {\r\n currentPageIndex: this.p - 1,\r\n pageSize: this.count,\r\n quickFilters: DocumentsConstants.quickFilters[this.quickFilters],\r\n })\r\n .subscribe((data) => {\r\n this.totalRecords = data.totalSize;\r\n this.isNextPageAvailable = data.isNextPageAvailable;\r\n this.items = data.entries;\r\n this.documentsCount.emit(this.totalRecords);\r\n this.isFetching = false;\r\n });\r\n }\r\n }\r\n isCreator(item) {\r\n return !this.batchList\r\n ? item.properties.creator === this.nuxeoApi.nuxeoClient.user.id\r\n : true;\r\n }\r\n deleteDocument(event, item) {\r\n let deleteDocument = () => {\r\n return this.documentsApi.deleteDocument(item.path);\r\n };\r\n event.stopPropagation();\r\n if (this.canDelete) {\r\n if (!this.batchList) {\r\n this.dialog\r\n .open(ConfirmCallerDialogComponent, {\r\n width: '400px',\r\n data: {\r\n call: deleteDocument,\r\n title: 'genericConfirm',\r\n toastrTitle: '',\r\n toastrMsg: 'documents.deleteSuccess',\r\n },\r\n })\r\n .afterClosed()\r\n .pipe(take(1))\r\n .subscribe((data) => {\r\n if (data) {\r\n if (!this.dontDelete) {\r\n this.deleteSuccess.next(item);\r\n this.items.length == 1 ? (this.p = this.p - 1) : this.p;\r\n if (this.p === 0) {\r\n this.p = 1;\r\n }\r\n this.getDocuments();\r\n } else {\r\n this.deleteSuccess.next(item);\r\n this.items.splice(this.items.indexOf(item), 1);\r\n }\r\n }\r\n });\r\n } else {\r\n this.deleteSuccess.next(item);\r\n }\r\n }\r\n\r\n // this.confirmationDialog\r\n // .openConfirmDialog('genericConfirm')\r\n // .afterClosed()\r\n // .subscribe((data) => {\r\n // if (data) {\r\n // if (!this.dontDelete) {\r\n // this.documentsApi\r\n // .deleteDocument(item.path)\r\n // .subscribe((data) => {\r\n // this.toastr\r\n // .success('documents.deleteSuccess', 'success')\r\n // .onShown.pipe(take(1))\r\n // .subscribe(() => {\r\n // this.deleteSuccess.next(item);\r\n // this.getDocuments();\r\n // });\r\n // });\r\n // } else {\r\n // this.deleteSuccess.next(item);\r\n // this.items.splice(this.items.indexOf(item), 1);\r\n // }\r\n // }\r\n // });\r\n }\r\n onChange(event) {\r\n this.p = event;\r\n this.getDocuments();\r\n }\r\n\r\n preview(docId) {\r\n if (this.canPreview) {\r\n if (this.memoView) {\r\n this.router.navigate([{ outlets: { viewer: ['memo', docId] } }], {\r\n queryParams: { location: this.router.url },\r\n });\r\n } else {\r\n this.router.navigate([{ outlets: { viewer: ['view', docId] } }], {\r\n queryParams: { location: this.router.url },\r\n });\r\n }\r\n } else {\r\n this.documentsApi.getDocument(docId).subscribe(\r\n (file) => {\r\n this.documentSelect.emit({\r\n urlFileContent: file.properties.content.data,\r\n docId: '' + docId,\r\n title: file.title,\r\n });\r\n },\r\n (error) => {\r\n console.error(error);\r\n this.toastr\r\n .show('error', 'error', error.message)\r\n .onShown.subscribe(() => { });\r\n }\r\n );\r\n }\r\n }\r\n ngOnInit(): void {\r\n this.getDocuments();\r\n if (this.notifier) {\r\n this.notifier.pipe(takeUntil(this.onDestroy$)).subscribe(() => {\r\n this.getDocuments();\r\n });\r\n }\r\n this.documentsApi.reFetch.subscribe((value) => {\r\n if (value) {\r\n this.getDocuments();\r\n }\r\n });\r\n }\r\n ngOnChanges(): void {\r\n this.getDocuments();\r\n }\r\n ngOnDestroy(): void {\r\n this.onDestroy$.next(true);\r\n this.onDestroy$.complete();\r\n }\r\n}\r\n","<ng-container *ngIf=\"!isFetching; else spinner\">\r\n <div *ngIf=\"items.length; else noEntry\">\r\n <div class=\"doc-list\">\r\n <div class=\"doc-item\" (click)=\"preview(item.uid)\" *ngFor=\"\r\n let item of items\r\n ;\r\n let last = last\r\n \">\r\n <div class=\"item-content\">\r\n <mat-icon class=\"file-icon\">file_copy</mat-icon>\r\n {{ item.title }}\r\n </div>\r\n <button *ngIf=\"canDelete && isCreator(item)\" (click)=\"deleteDocument($event, item)\"\r\n class=\"btn btn-outline-danger btn-no-border\">\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"{ 'hidden': disablePagination }\" class=\"wrapping-pagination my-3\">\r\n <cts-pagination [page]=\"p\" (change)=\"onChange($event)\"\r\n [size]=\"count\" [count]=\"totalRecords\">\r\n </cts-pagination>\r\n </div>\r\n </div>\r\n <ng-template #noEntry>\r\n <!-- <app-no-entry [msg]=\"'documents.noEntry'\"></app-no-entry> -->\r\n <cts-no-data\r\n [message]=\"'documents.noEntry'\"\r\n ></cts-no-data>\r\n </ng-template>\r\n</ng-container>\r\n<ng-template #spinner>\r\n <mat-spinner class=\"centered-spinner\"></mat-spinner>\r\n</ng-template>\r\n","import { APP_BASE_HREF, DatePipe } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n EventEmitter, Inject,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport Dynamsoft from 'dwt';\r\nimport { DocumentsService } from '../../services/documents.service';\r\n\r\n/**\r\n * Document Scan is a reusable nuxeo API & Scanner integrated component,\r\n * that utilizes the scanner to create and upload PDF file as a batch, then provide\r\n * that batch for consumption\r\n *\r\n * @title\r\n * Document Scan\r\n *\r\n * @example\r\n *\r\n * <app-document-scan\r\n * (file)=\"onSuccess($event)\"\r\n * ></app-document-scan>\r\n */\r\n@Component({\r\n selector: 'app-document-scan',\r\n templateUrl: './document-scan.component.html',\r\n styleUrls: ['./document-scan.component.scss'],\r\n host: { class: 'scanner' },\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class ScanComponent implements OnInit, AfterViewInit {\r\n uploadedFile;\r\n /** Event emitted when a batch is uploaded */\r\n @Output()\r\n file: EventEmitter<any> = new EventEmitter();\r\n\r\n DWObject;\r\n selectSources: HTMLSelectElement;\r\n DWTSourceCount = 0;\r\n filename = '';\r\n containerId = 'dwtcontrolContainer';\r\n bWASM = Dynamsoft.Lib.env.bMobile || Dynamsoft.DWT.UseLocalService;\r\n _iLeft;\r\n _iTop;\r\n _iRight;\r\n _iBottom;\r\n _strTempStr = '';\r\n re = /^\\d+$/;\r\n strre = /^[\\s\\w]+$/;\r\n refloat = /^\\d+\\.*\\d*$/i;\r\n innerHTML: string;\r\n constructor(\r\n public translate: TranslateService,\r\n public documentsService: DocumentsService,\r\n public datePipe: DatePipe,\r\n @Inject(APP_BASE_HREF) private baseHref: string\r\n ) { }\r\n ngOnInit(): void {\r\n Dynamsoft.DWT.ResourcesPath = this.baseHref + '/assets/dwt-resources';\r\n ///\r\n Dynamsoft.DWT.AutoLoad = true;\r\n ///\r\n // const width = window.outerWidth * 0.3;\r\n // const height = window.outerHeight * 0.3;\r\n Dynamsoft.DWT.Containers = [\r\n {\r\n WebTwainId: 'DWTObject',\r\n ContainerId: 'dwtcontrolContainer',\r\n Width: '100%',\r\n Height: '100%'\r\n }\r\n ];\r\n\r\n Dynamsoft.DWT.ProductKey =\r\n 't0152KQMAAHbz+p2tyQK8lJZ+mCg1fSy4YcR37VyB9/xWDyO5Crr9vh18RXW7loYCSa4V+f+toPCW8QmoZunsU/sV6vlByVobCbYhOgaxiJA7peIaw928i9FqcNPnNGXWnflg/xj0aQwnjNqm7GdsupmPHbKfuTWcMGqbbubG9Pcc0hD3U8hWM8vIcMKobWrmq6FGkmv8A0T7orc=';\r\n // Dynamsoft.DWT.Trial = false;\r\n // Dynamsoft.DWT.Debug = false; // only for debugger output\r\n\r\n ///\r\n Dynamsoft.DWT.IfAddMD5InUploadHeader = false;\r\n\r\n ///\r\n Dynamsoft.DWT.IfConfineMaskWithinTheViewer = false;\r\n Dynamsoft.MSG = {\r\n ConvertingToBase64: this.translate.instant(\r\n 'scanner.ConvertingToBase64'\r\n ),\r\n ConvertingToBlob: this.translate.instant(\r\n 'scanner.ConvertingToBlob'\r\n ),\r\n Downloading: this.translate.instant('scanner.Downloading'),\r\n Encoding: this.translate.instant('scanner.Encoding'),\r\n Err_BrowserNotSupportWasm: this.translate.instant(\r\n 'scanner.Err_BrowserNotSupportWasm'\r\n ),\r\n Init_AllJsLoaded: Dynamsoft.MSG.Init_AllJsLoaded,\r\n Init_CheckDWT: Dynamsoft.MSG.Init_CheckDWT,\r\n Init_CheckDWTVersion: Dynamsoft.MSG.Init_CheckDWTVersion,\r\n Init_CheckingLicense: Dynamsoft.MSG.Init_CheckingLicense,\r\n Init_CompilingWasm: Dynamsoft.MSG.Init_CompilingWasm,\r\n Init_ConfiguringDWT: Dynamsoft.MSG.Init_ConfiguringDWT,\r\n Init_CreatingDWT: Dynamsoft.MSG.Init_CreatingDWT,\r\n Init_DownloadingWasm: Dynamsoft.MSG.Init_DownloadingWasm,\r\n Init_FireBeforeInitEvt: Dynamsoft.MSG.Init_FireBeforeInitEvt,\r\n Init_GetLicenseInfoForDWT: Dynamsoft.MSG.Init_GetLicenseInfoForDWT,\r\n Init_InitActiveX: Dynamsoft.MSG.Init_InitActiveX,\r\n Init_InitDynamsoftService: Dynamsoft.MSG.Init_InitDynamsoftService,\r\n Init_InitH5: Dynamsoft.MSG.Init_InitH5,\r\n Init_InitWasm: Dynamsoft.MSG.Init_InitWasm,\r\n Init_LoadingViewerJs: Dynamsoft.MSG.Init_LoadingViewerJs,\r\n Init_LookingLicense: Dynamsoft.MSG.Init_LookingLicense,\r\n Init_SetLicenseForDWT: Dynamsoft.MSG.Init_SetLicenseForDWT,\r\n Loading: this.translate.instant('scanner.Loading'),\r\n LoadingPdf: this.translate.instant('scanner.LoadingPdf'),\r\n LoadingTiff: this.translate.instant('scanner.LoadingTiff'),\r\n SavingPdf: this.translate.instant('scanner.SavingPdf'),\r\n SavingTiff: this.translate.instant('scanner.SavingTiff'),\r\n Uploading: this.translate.instant('scanner.Uploading')\r\n };\r\n Dynamsoft.DWT.CustomizableDisplayInfo = {\r\n errorMessages: this.translate.instant('scanner.errorMessages'),\r\n\r\n // launch\r\n generalMessages: this.translate.instant('scanner.generalMessages'),\r\n\r\n customProgressText: this.translate.instant(\r\n 'scanner.customProgressText'\r\n ),\r\n\r\n // image editor\r\n buttons: this.translate.instant('scanner.buttons'),\r\n\r\n dialogText: this.translate.instant('scanner.dialogText')\r\n };\r\n\r\n Dynamsoft.DWT.OnWebTwainReady = (): any => {\r\n this.pageonload();\r\n this.Dynamsoft_OnReady();\r\n };\r\n Dynamsoft.DWT.Load();\r\n }\r\n ngAfterViewInit() {\r\n this.pageonload();\r\n }\r\n\r\n pageonload() {\r\n this.HideLoadImageForLinux();\r\n const twainsource: any = document.getElementById('source');\r\n if (twainsource) {\r\n twainsource.options.length = 0;\r\n twainsource.options.add(\r\n new Option(this.translate.instant('scanner.pleaseWait'), '0')\r\n );\r\n twainsource.options[0].selected = true;\r\n }\r\n\r\n this.initiateInputs();\r\n }\r\n\r\n HideLoadImageForLinux() {\r\n const o = document.getElementById('liLoadImage');\r\n if (o) {\r\n if (Dynamsoft.Lib.env.bLinux) { o.style.display = 'none'; }\r\n else { o.style.display = ''; }\r\n }\r\n }\r\n\r\n initiateInputs() {\r\n const allinputs = document.getElementsByTagName('input');\r\n for (let i = 0; i < allinputs.length; i++) {\r\n if (allinputs[i].type === 'checkbox') {\r\n allinputs[i].checked = false;\r\n } else if (allinputs[i].type === 'text') {\r\n allinputs[i].value = '';\r\n }\r\n }\r\n\r\n if (Dynamsoft.Lib.env.bIE === true && Dynamsoft.Lib.env.bWin64 === true) {\r\n let o = document.getElementById('samplesource64bit');\r\n if (o) { o.style.display = 'inline'; }\r\n\r\n o = document.getElementById('samplesource32bit');\r\n if (o) { o.style.display = 'none'; }\r\n }\r\n }\r\n\r\n initDllForChangeImageSize() {\r\n const vInterpolationMethod: any = document.getElementById(\r\n 'InterpolationMethod'\r\n );\r\n vInterpolationMethod.options.length = 0;\r\n vInterpolationMethod.options.add(new Option('NearestNeighbor', '1'));\r\n vInterpolationMethod.options.add(new Option('Bilinear', '2'));\r\n vInterpolationMethod.options.add(new Option('Bicubic', '3'));\r\n }\r\n\r\n setDefaultValue() {\r\n const vGray: any = document.getElementById('Gray');\r\n if (vGray) { vGray.checked = true; }\r\n\r\n const varImgTypepng2: any = document.getElementById('imgTypepng2');\r\n if (varImgTypepng2) { varImgTypepng2.checked = true; }\r\n const varImgTypepng: any = document.getElementById('imgTypepng');\r\n if (varImgTypepng) { varImgTypepng.checked = true; }\r\n\r\n const _strDefaultSaveImageName = 'WebTWAINImage';\r\n const _txtFileNameforSave: any = document.getElementById(\r\n 'txt_fileNameforSave'\r\n );\r\n if (_txtFileNameforSave) {\r\n _txtFileNameforSave.value = _strDefaultSaveImageName;\r\n }\r\n\r\n const _txtFileName: any = document.getElementById('txt_fileName');\r\n if (_txtFileName) { _txtFileName.value = _strDefaultSaveImageName; }\r\n\r\n const _chkMultiPageTIFF_save: any = document.getElementById(\r\n 'MultiPageTIFF_save'\r\n );\r\n if (_chkMultiPageTIFF_save) { _chkMultiPageTIFF_save.disabled = true; }\r\n const _chkMultiPagePDF_save: any = document.getElementById(\r\n 'MultiPagePDF_save'\r\n );\r\n if (_chkMultiPagePDF_save) { _chkMultiPagePDF_save.disabled = true; }\r\n const _chkMultiPageTIFF: any = document.getElementById('MultiPageTIFF');\r\n if (_chkMultiPageTIFF) { _chkMultiPageTIFF.disabled = true; }\r\n const _chkMultiPagePDF: any = document.getElementById('MultiPagePDF');\r\n if (_chkMultiPagePDF) { _chkMultiPagePDF.disabled = true; }\r\n }\r\n\r\n // Check if the control is fully loaded.\r\n Dynamsoft_OnReady() {\r\n const liNoScanner = document.getElementById('pNoScanner');\r\n // If the ErrorCode is 0, it means everything is fine for the control. It is fully loaded.\r\n this.DWObject = Dynamsoft.DWT.GetWebTwain('dwtcontrolContainer');\r\n if (this.DWObject) {\r\n if (this.DWObject.ErrorCode === 0) {\r\n this.DWObject.LogLevel = 0;\r\n this.DWObject.IfAllowLocalCache = true;\r\n this.DWObject.ImageCaptureDriverType = 4;\r\n this.setDefaultValue();\r\n\r\n this.DWObject.RegisterEvent(\r\n 'OnTopImageInTheViewChanged',\r\n this.Dynamsoft_OnTopImageInTheViewChanged\r\n );\r\n this.DWObject.RegisterEvent(\r\n 'OnMouseClick',\r\n this.Dynamsoft_OnMouseClick\r\n );\r\n\r\n let twainsource: any = document.getElementById('source');\r\n if (!twainsource) {\r\n twainsource = document.getElementById('webcamsource');\r\n }\r\n\r\n const vCount = this.DWObject.SourceCount;\r\n this.DWTSourceCount = vCount;\r\n\r\n if (twainsource) {\r\n twainsource.options.length = 0;\r\n for (let i = 0; i < vCount; i++) {\r\n twainsource.options.add(\r\n new Option(this.DWObject.GetSourceNameItems(i), i.toString())\r\n );\r\n }\r\n }\r\n\r\n // If source list need to be displayed, fill in the source items.\r\n if (vCount === 0) {\r\n if (liNoScanner) {\r\n if (Dynamsoft.Lib.env.bWin) {\r\n liNoScanner.style.display = 'block';\r\n liNoScanner.style.textAlign = 'center';\r\n } else { liNoScanner.style.display = 'none'; }\r\n }\r\n }\r\n\r\n if (vCount > 0) {\r\n this.source_onchange();\r\n }\r\n\r\n if (Dynamsoft.Lib.env.bWin) { this.DWObject.MouseShape = false; }\r\n\r\n const btnScan: any = document.getElementById('btnScan');\r\n if (btnScan) {\r\n if (vCount === 0) { btnScan.disabled = true; }\r\n else {\r\n btnScan.disabled = false;\r\n }\r\n }\r\n\r\n if (!Dynamsoft.Lib.env.bWin && vCount > 0) {\r\n if (document.getElementById('lblShowUI')) {\r\n document.getElementById('lblShowUI').style.display = 'none';\r\n }\r\n if (document.getElementById('ShowUI')) {\r\n document.getElementById('ShowUI').style.display = 'none';\r\n }\r\n } else {\r\n if (document.getElementById('lblShowUI')) {\r\n document.getElementById('lblShowUI').style.display = '';\r\n }\r\n if (document.getElementById('ShowUI')) {\r\n document.getElementById('ShowUI').style.display = '';\r\n }\r\n }\r\n\r\n this.initDllForChangeImageSize();\r\n\r\n this._iLeft = 0;\r\n this._iTop = 0;\r\n this._iRight = 0;\r\n this._iBottom = 0;\r\n\r\n for (let i = 0; i < document.links.length; i++) {\r\n if (document.links[i].className === 'ShowtblLoadImage') {\r\n document.links[i].onclick = this.showtblLoadImage_onclick;\r\n }\r\n if (document.links[i].className === 'ClosetblLoadImage') {\r\n document.links[i].onclick = this.closetblLoadImage_onclick;\r\n }\r\n }\r\n if (vCount === 0) {\r\n if (Dynamsoft.Lib.env.bWin) {\r\n if (\r\n document.getElementById('aNoScanner') &&\r\n window['bDWTOnlineDemo']\r\n ) {\r\n if (document.getElementById('div_ScanImage').style.display === '') {\r\n this.showtblLoadImage_onclick();\r\n }\r\n }\r\n if (document.getElementById('Resolution')) {\r\n document.getElementById('Resolution').style.display = 'none';\r\n }\r\n }\r\n } else {\r\n const divBlank = document.getElementById('divBlank');\r\n if (divBlank) { divBlank.style.display = 'none'; }\r\n }\r\n\r\n this.updatePageInfo();\r\n const ua = navigator.userAgent.toLowerCase();\r\n if (!ua.indexOf('msie 6.0')) {\r\n }\r\n\r\n this.DWObject.RegisterEvent(\r\n 'OnPostTransfer',\r\n this.Dynamsoft_OnPostTransfer\r\n );\r\n this.DWObject.RegisterEvent(\r\n 'OnPostLoad',\r\n this.Dynamsoft_OnPostLoadfunction\r\n );\r\n this.DWObject.RegisterEvent(\r\n 'OnPostAllTransfers',\r\n this.Dynamsoft_OnPostAllTransfers\r\n );\r\n this.DWObject.RegisterEvent(\r\n 'OnImageAreaSelected',\r\n this.Dynamsoft_OnImageAreaSelected\r\n );\r\n this.DWObject.RegisterEvent(\r\n 'OnImageAreaDeSelected',\r\n this.Dynamsoft_OnImageAreaDeselected\r\n );\r\n this.DWObject.RegisterEvent(\r\n 'OnGetFilePath',\r\n this.Dynamsoft_OnGetFilePath\r\n );\r\n }\r\n }\r\n }\r\n\r\n showtblLoadImage_onclick() {\r\n switch (document.getElementById('tblLoadImage').style.visibility) {\r\n case 'hidden':\r\n document.getElementById('tblLoadImage').style.visibility = 'visible';\r\n document.getElementById('Resolution').style.visibility = 'hidden';\r\n break;\r\n case 'visible':\r\n document.getElementById('tblLoadImage').style.visibility = 'hidden';\r\n document.getElementById('Resolution').style.visibility = 'visible';\r\n break;\r\n default:\r\n break;\r\n }\r\n if (document.getElementById('pNoScanner')) {\r\n // document.getElementById(\"tblLoadImage\").style.top = ds_gettop(document.getElementById(\"pNoScanner\")) + pNoScanner.offsetHeight + \"px\";\r\n // document.getElementById(\"tblLoadImage\").style.left = ds_getleft(document.getElementById(\"pNoScanner\")) + 0 + \"px\";\r\n }\r\n return false;\r\n }\r\n\r\n closetblLoadImage_onclick() {\r\n document.getElementById('tblLoadImage').style.visibility = 'hidden';\r\n document.getElementById('Resolution').style.visibility = 'visible';\r\n return false;\r\n }\r\n\r\n // --------------------------------------------------------------------------------------\r\n // ************************** Used a lot *****************************\r\n // --------------------------------------------------------------------------------------\r\n updatePageInfo() {\r\n const totalImage: any = document.getElementById('DW_TotalImage');\r\n const currentImage: any = document.getElementById('DW_CurrentImage');\r\n if (totalImage) { totalImage.value = this.DWObject.HowManyImagesInBuffer; }\r\n if (currentImage) {\r\n currentImage.value = this.DWObject.CurrentImageIndexInBuffer + 1;\r\n }\r\n }\r\n\r\n appendMessage(strMessage) {\r\n this._strTempStr += strMessage;\r\n const _divMessageContainer = document.getElementById('DWTemessage');\r\n if (_divMessageContainer) {\r\n _divMessageContainer.innerHTML = this._strTempStr;\r\n _divMessageContainer.scrollTop = _divMessageContainer.scrollHeight;\r\n }\r\n }\r\n\r\n checkIfImagesInBuffer() {\r\n if (this.DWObject.HowManyImagesInBuffer === 0) {\r\n this.appendMessage('There is no image in buffer.<br />');\r\n return false;\r\n } else { return true; }\r\n }\r\n\r\n checkErrorString() {\r\n return this.checkErrorStringWithErrorCode(\r\n this.DWObject.ErrorCode,\r\n this.DWObject.ErrorString\r\n );\r\n }\r\n\r\n checkErrorStringWithErrorCode(errorCode, errorString, responseString = null) {\r\n if (errorCode === 0) {\r\n this.appendMessage(\r\n '<span style=\\'color:#cE5E04\\'><b>' + errorString + '</b></span><br />'\r\n );\r\n\r\n return true;\r\n }\r\n if (errorCode === -2115) {\r\n // Cancel file dialog\r\n return true;\r\n }\r\n else {\r\n if (errorCode === -2003) {\r\n const ErrorMessageWin = window.open(\r\n '',\r\n 'ErrorMessage',\r\n 'height=500,width=750,top=0,left=0,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no'\r\n );\r\n ErrorMessageWin.document.writeln(responseString); // this.DWObject.HTTPPostResponseString);\r\n }\r\n this.appendMessage(\r\n '<span style=\\'color:#cE5E04\\'><b>' + errorString + '</b></span><br />'\r\n );\r\n return false;\r\n }\r\n }\r\n // --------------------------------------------------------------------------------------\r\n // ************************** Used a lot *****************************\r\n // --------------------------------------------------------------------------------------\r\n ds_getleft(el) {\r\n let tmp = el.offsetLeft;\r\n el = el.offsetParent;\r\n while (el) {\r\n tmp += el.offsetLeft;\r\n el = el.offsetParent;\r\n }\r\n return tmp;\r\n }\r\n ds_gettop(el) {\r\n let tmp = el.offsetTop;\r\n el = el.offsetParent;\r\n while (el) {\r\n tmp += el.offsetTop;\r\n el = el.offsetParent;\r\n }\r\n return tmp;\r\n }\r\n\r\n Over_Out_DemoImage(obj, url) {\r\n obj.src = url;\r\n }\r\n source_onchange() {\r\n if (document.getElementById('divTwainType')) {\r\n document.getElementById('divTwainType').style.display = '';\r\n }\r\n\r\n if (document.getElementById('source')) {\r\n const cIndex = (document.getElementById('source') as HTMLSelectElement)\r\n .selectedIndex;\r\n if (Dynamsoft.Lib.env.bMac) {\r\n const strSourceName = this.DWObject.GetSourceNameItems(cIndex);\r\n if (strSourceName.indexOf('ICA') === 0) {\r\n if (document.getElementById('lblShowUI')) {\r\n document.getElementById('lblShowUI').style.display = 'none';\r\n }\r\n if (document.getElementById('ShowUI')) {\r\n document.getElementById('ShowUI').style.display = 'none';\r\n }\r\n } else {\r\n if (document.getElementById('lblShowUI')) {\r\n document.getElementById('lblShowUI').style.display = '';\r\n }\r\n if (document.getElementById('ShowUI')) {\r\n document.getElementById('ShowUI').style.display = '';\r\n }\r\n }\r\n } else { this.DWObject.SelectSourceByIndex(cIndex); }\r\n }\r\n }\r\n\r\n mediaType_onchange() {\r\n const MediaType: any = document.getElementById('MediaType');\r\n if (MediaType && MediaType.options.length > 0) {\r\n const valueMediaType = MediaType.options[MediaType.selectedIndex].text;\r\n if (valueMediaType !== '') {\r\n if (!this.DWObject.Addon.Webcam.SetMediaType(valueMediaType)) {\r\n this.appendMessage('<b>Error setting MediaType value: </b>');\r\n this.appendMessage(\r\n '<span style=\\'color:#cE5E04\\'><b>' +\r\n this.DWObject.ErrorString +\r\n '</b></span><br />'\r\n );\r\n return;\r\n }\r\n }\r\n }\r\n\r\n const ResolutionWebcam: any = document.getElementById('ResolutionWebcam');\r\n if (ResolutionWebcam) {\r\n ResolutionWebcam.options.length = 0;\r\n const aryResolution = this.DWObject.Addon.Webcam.GetResolution();\r\n const countResolution = aryResolution.GetCount();\r\n for (let i = 0; i < countResolution; i++) {\r\n const value = aryResolution.Get(i);\r\n ResolutionWebcam.options.add(new Option(value, value));\r\n }\r\n }\r\n }\r\n\r\n /*-----------------Acquire Image---------------------*/\r\n\r\n acquireImage() {\r\n const cIndex = (document.getElementById('source') as HTMLSelectElement)\r\n .selectedIndex;\r\n if (cIndex < 0) { return; }\r\n\r\n this.DWObject.SelectSourceByIndex(cIndex);\r\n this.DWObject.CloseSource();\r\n this.DWObject.OpenSource();\r\n this.DWObject.IfShowUI = (document.getElementById(\r\n 'ShowUI'\r\n ) as HTMLInputElement).checked;\r\n\r\n let i;\r\n for (i = 0; i < 3; i++) {\r\n if (\r\n (document.getElementsByName('PixelType').item(i) as HTMLInputElement)\r\n .checked === true\r\n ) {\r\n this.DWObject.PixelType = i;\r\n }\r\n }\r\n if (this.DWObject.ErrorCode !== 0) {\r\n this.appendMessage('<b>Error setting PixelType value: </b>');\r\n this.appendMessage(\r\n '<span style=\\'color:#cE5E04\\'><b>' +\r\n this.DWObject.ErrorString +\r\n '</b></span><br />'\r\n );\r\n }\r\n this.DWObject.Resolution = (document.getElementById(\r\n 'Resolution'\r\n ) as HTMLInputElement).value;\r\n if (this.DWObject.ErrorCode !== 0) {\r\n this.appendMessage('<b>Error setting Resolution value: </b>');\r\n this.appendMessage(\r\n '<span style=\\'color:#cE5E04\\'><b>' +\r\n this.DWObject.ErrorString +\r\n '</b></span><br />'\r\n );\r\n }\r\n\r\n const bADFChecked = (document.getElementById('ADF') as HTMLInputElement)\r\n .checked;\r\n this.DWObject.IfFeederEnabled = bADFChecked;\r\n if (bADFChecked === true && this.DWObject.ErrorCode !== 0) {\r\n this.appendMessage('<b>Error setting ADF value: </b>');\r\n this.appendMessage(\r\n '<span style=\\'color:#cE5E04\\'><b>' +\r\n this.DWObject.ErrorString +\r\n '</b></span><br />'\r\n );\r\n }\r\n\r\n const bDuplexChecked = (document.getElementById(\r\n 'Duplex'\r\n ) as HTMLInputElement).checked;\r\n this.DWObject.IfDuplexEnabled = bDuplexChecked;\r\n if (bDuplexChecked === true && this.DWObject.ErrorCode !== 0) {\r\n this.appendMessage('<b>Error setting Duplex value: </b>');\r\n this.appendMessage(\r\n '<span style=\\'color:#cE5E04\\'><b>' +\r\n this.DWObject.ErrorString +\r\n '</b></span><br />'\r\n );\r\n }\r\n if (\r\n Dynamsoft.Lib.env.bWin ||\r\n (!Dynamsoft.Lib.env.bWin && this.DWObject.ImageCaptureDriverType === 0)\r\n ) {\r\n this.appendMessage(\r\n 'Pixel Type: ' +\r\n this.DWObject.PixelType +\r\n '<br />Resolution: ' +\r\n this.DWObject.Resolution +\r\n '<br />'\r\n );\r\n }\r\n this.DWObject.IfDisableSourceAfterAcquire = true;\r\n this.DWObject.AcquireImage();\r\n }\r\n\r\n /*-----------------Load Image---------------------*/\r\n btnLoadImagesOrPDFs_onclick() {\r\n const OnPDFSuccess = () => {\r\n this.appendMessage('Loaded an image successfully.<br/>');\r\n this.updatePageInfo();\r\n };\r\n\r\n const OnPDFFailure = (errorCode, errorString) => {\r\n this.checkErrorStringWithErrorCode(errorCode, errorString);\r\n };\r\n\r\n this.DWObject.IfShowFileDialog = true;\r\n this.DWObject.Addon.PDF.SetResolution(200);\r\n this.DWObject.Addon.PDF.SetConvertMode(\r\n Dynamsoft.DWT.EnumDWT_ConvertMode.CM_RENDERALL\r\n );\r\n this.DWObject.LoadImageEx(\r\n '',\r\n Dynamsoft.DWT.EnumDWT_ImageType.IT_ALL,\r\n OnPDFSuccess,\r\n OnPDFFailure\r\n );\r\n }\r\n\r\n // --------------------------------------------------------------------------------------\r\n // ************************** Edit Image ******************************\r\n\r\n // --------------------------------------------------------------------------------------\r\n btnShowImageEditor_onclick() {\r\n if (!this.checkIfImagesInBuffer()) {\r\n return;\r\n }\r\n this.DWObject.ShowImageEditor();\r\n }\r\n\r\n btnRotateRight_onclick() {\r\n if (!this.checkIfImagesInBuffer()) {\r\n return;\r\n }\r\n this.DWObject.RotateRight(this.DWObject.CurrentImageIndexInBuffer);\r\n this.appendMessage('<b>Rotate right: </b>');\r\n if (this.checkErrorString()) {\r\n return;\r\n }\r\n }\r\n btnRotateLeft_onclick() {\r\n if (!this.checkIfImagesInBuffer()) {\r\n return;\r\n }\r\n this.DWObject.RotateLeft(this.DWObject.CurrentImageIndexInBuffer);\r\n this.appendMessage('<b>Rotate left: </b>');\r\n if (this.checkErrorString()) {\r\n return;\r\n }\r\n }\r\n\r\n btnRotate180_onclick() {\r\n if (!this.checkIfImagesInBuffer()) {\r\n return;\r\n }\r\n this.DWObject.Rotate(this.DWObject.CurrentImageIndexInBuffer, 180, true);\r\n this.appendMessage('<b>Rotate 180: </b>');\r\n if (this.checkErrorString()) {\r\n return;\r\n }\r\n }\r\n\r\n btnMirror_onclick() {\r\n if (!this.checkIfImagesInBuffer()) {\r\n return;\r\n }\r\n this.DWObject.Mirror(this.DWObject.CurrentImageIndexInBuffer);\r\n this.appendMessage('<b>Mirror: </b>');\r\n if (this.checkErrorString()) {\r\n return;\r\n }\r\n }\r\n btnFlip_onclick() {\r\n if (!this.checkIfImagesInBuffer()) {\r\n return;\r\n }\r\n this.DWObject.Flip(this.DWObject.CurrentImageIndexInBuffer);\r\n this.appendMessage('<b>Flip: </b>');\r\n if (this.checkErrorString()) {\r\n return;\r\n }\r\n }\r\n\r\n /*----------------------Crop Method---------------------*/\r\n btnCrop_onclick() {\r\n if (!this.checkIfImagesInBuffer()) {\r\n return;\r\n }\r\n if (\r\n this._iLeft !== 0 ||\r\n this._iTop !== 0 ||\r\n this._iRight !== 0 ||\r\n this._iBottom !== 0\r\n ) {\r\n this.DWObject.Crop(\r\n this.DWObject.CurrentImageIndexInBuffer,\r\n this._iLeft,\r\n this._iTop,\r\n this._iRight,\r\n this._iBottom\r\n );\r\n this._iLeft = 0;\r\n this._iTop = 0;\r\n this._iRight = 0;\r\n this._iBottom = 0;\r\n this.appendMessage('<b>Crop: </b>');\r\n if (this.checkErrorString()) {\r\n return;\r\n }\r\n return;\r\n } else {\r\n this.appendMessage(\r\n '<b>Crop: </b>failed. Please first select the area you\\'d like to crop.<br />'\r\n );\r\n }\r\n }\r\n /*----------------Change Image Size--------------------*/\r\n btnChangeImageSize_onclick() {\r\n if (!this.checkIfImagesInBuffer()) {\r\n return;\r\n }\r\n switch (document.getElementById('ImgSizeEditor').style.visibility) {\r\n case 'visible':\r\n document.getElementById('ImgSizeEditor').style.visibility = 'hidden';\r\n break;\r\n case 'hidden':\r\n document.getElementById('ImgSizeEditor').style.visibility = 'visible';\r\n break;\r\n default:\r\n break;\r\n }\r\n // document.getElementById(\"ImgSizeEditor\").style.top = ds_gettop(document.getElementById(\"btnChangeImageSize\")) + document.getElementById(\"btnChangeImageSize\").offsetHeight + 15 + \"px\";\r\n // document.getElementById(\"ImgSizeEditor\").style.left = ds_getleft(document.getElementById(\"btnChangeImageSize\")) - 14 + \"px\";\r\n\r\n const iWidth = this.DWObject.GetImageWidth(\r\n this.DWObject.CurrentImageIndexInBuffer\r\n );\r\n if (iWidth !== -1) {\r\n (document.getElementById('img_width') as HTMLInputElement).value = iWidth;\r\n }\r\n const iHeight = this.DWObject.GetImageHeight(\r\n this.DWObject.CurrentImageIndexInBuffer\r\n );\r\n if (iHeight !== -1) {\r\n (document.getElementById(\r\n 'img_height'\r\n ) as HTMLInputElement).value = iHeight;\r\n }\r\n }\r\n btnCancelChange_onclick() {\r\n document.getElementById('ImgSizeEditor').style.visibility = 'hidden';\r\n }\r\n\r\n btnChangeImageSizeOK_onclick() {\r\n document.getElementById('img_height').className = '';\r\n document.getElementById('img_width').className = '';\r\n if (\r\n !this.re.test(\r\n (document.getElementById('img_height') as HTMLInputElement).value\r\n )\r\n ) {\r\n document.getElementById('img_height').className += ' invalid';\r\n document.getElementById('img_height').focus();\r\n this.appendMessage('Please input a valid <b>height</b>.<br />');\r\n return;\r\n }\r\n if (\r\n !this.re.test(\r\n (document.getElementById('img_width') as HTMLInputElement).value\r\n )\r\n ) {\r\n document.getElementById('img_width').className += ' invalid';\r\n document.getElementById('img_width').focus();\r\n this.appendMessage('Please input a valid <b>width</b>.<br />');\r\n return;\r\n }\r\n this.DWObject.ChangeImageSize(\r\n this.DWObject.CurrentImageIndexInBuffer,\r\n (document.getElementById('img_width') as HTMLInputElement).value,\r\n (document.getElementById('img_height') as HTMLInputElement).value,\r\n (document.getElementById('InterpolationMethod') as HTMLSelectElement)\r\n .selectedIndex + 1\r\n );\r\n this.appendMessage('<b>Change Image Size: </b>');\r\n if (this.checkErrorString()) {\r\n document.getElementById('ImgSizeEditor').style.visibility = 'hidden';\r\n return;\r\n }\r\n }\r\n // --------------------------------------------------------------------------------------\r\n // ************************** Save Image***********************************\r\n // --------------------------------------------------------------------------------------\r\n\r\n\r\n btnSave_onclick() {\r\n if (!this.checkIfImagesInBuffer()) {\r\n return;\r\n }\r\n const strimgType_save = 'pdf';\r\n\r\n this.DWObject.IfShowFileDialog = true;\r\n const _txtFileNameforSave: any = document.getElementById('txt_fileName');\r\n if (_txtFileNameforSave) { _txtFileNameforSave.className = ''; }\r\n let bSave: any = false;\r\n\r\n const strFilePath = _txtFileNameforSave.value + '.' + strimgType_save;\r\n\r\n const OnSuccess = () => {\r\n this.appendMessage('<b>Save Image: </b>');\r\n this.checkErrorStringWithErrorCode(0, 'Successful.');\r\n };\r\n\r\n const OnFailure = (errorCode, errorString) => {\r\n this.checkErrorStringWithErrorCode(errorCode, errorString);\r\n };\r\n\r\n bSave = this.DWObject.SaveAllAsPDF(strFilePath, OnSuccess, OnFailure);\r\n\r\n if (bSave) { this.appendMessage('<b>Save Image: </b>'); }\r\n if (this.checkErrorString()) {\r\n return;\r\n }\r\n }\r\n // --------------------------------------------------------------------------------------\r\n // ************************** Upload Image***********************************\r\n // --------------------------------------------------------------------------------------\r\n makeid(length) {\r\n let result = '';\r\n const characters =\r\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\r\n const charactersLength = characters.length;\r\n for (let i = 0; i < length; i++) {\r\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\r\n }\r\n return result;\r\n }\r\n\r\n convertToBlob() {\r\n const pages = [];\r\n for (let index = 0; index < this.DWObject?.HowManyImagesInBuffer; index++) {\r\n pages.push(index);\r\n }\r\n this.DWObject.ConvertToBlob(\r\n pages,\r\n Dynamsoft.DWT.EnumDWT_ImageType.IT_PDF,\r\n (result, indices, type) => {\r\n result.lastModifiedDate = new Date();\r\n result.name = 'scan-' + this.datePipe.transform(result.lastModifiedDate, 'dd-MM-yyyy') + '.pdf';\r\n this.documentsService.uploadBatch([result]).subscribe((batch) => {\r\n batch.forEach(doc => {\r\n this.file.next(doc);\r\n });\r\n });\r\n },\r\n function (errorCode, errorString) {\r\n console.log(errorString);\r\n }\r\n );\r\n }\r\n\r\n\r\n // --------------------------------------------------------------------------------------\r\n // ************************** Navigator functions***********************************\r\n // --------------------------------------------------------------------------------------\r\n\r\n btnFirstImage_onclick() {\r\n if (!this.checkIfImagesInBuffer()) {\r\n return;\r\n }\r\n this.DWObject.CurrentImageIndexInBuffer = 0;\r\n this.updatePageInfo();\r\n }\r\n\r\n btnPreImage_wheel() {\r\n if (this.DWObject.HowManyImagesInBuffer !== 0) { this.btnPreImage_onclick(); }\r\n }\r\n\r\n btnNextImage_wheel() {\r\n if (this.DWObject.HowManyImagesInBuffer !== 0) { this.btnNextImage_onclick(); }\r\n }\r\n\r\n btnPreImage_onclick() {\r\n if (!this.checkIfImagesInBuffer()) {\r\n return;\r\n } else if (this.DWObject.CurrentImageIndexInBuffer === 0) {\r\n return;\r\n }\r\n this.DWObject.CurrentImageIndexInBuffer =\r\n this.DWObject.CurrentImageIndexInBuffer - 1;\r\n this.updatePageInfo();\r\n }\r\n btnNextImage_onclick() {\r\n if (!this.checkIfImagesInBuffer()) {\r\n return;\r\n } else if (\r\n this.DWObject.CurrentImageIndexInBuffer ===\r\n this.DWObject.HowManyImagesInBuffer - 1\r\n ) {\r\n return;\r\n }\r\n this.DWObject.CurrentImageIndexInBuffer =\r\n this.DWObject.CurrentImageIndexInBuffer + 1;\r\n this.updatePageInfo();\r\n }\r\n\r\n btnLastImage_onclick() {\r\n if (!this.checkIfImagesInBuffer()) {\r\n return;\r\n }\r\n this.DWObject.CurrentImageIndexInBuffer =\r\n this.DWObject.HowManyImagesInBuffer - 1;\r\n this.updatePageInfo();\r\n }\r\n\r\n btnRemoveCurrentImage_onclick() {\r\n if (!this.checkIfImagesInBuffer()) {\r\n return;\r\n }\r\n this.DWObject.RemoveAllSelectedImages();\r\n if (this.DWObject.HowManyImagesInBuffer === 0) {\r\n (document.getElementById(\r\n 'DW_TotalImage'\r\n ) as HTMLInputElement).value = this.DWObject.HowManyImagesInBuffer;\r\n (document.getElementById('DW_CurrentImage') as HTMLInputElement).value =\r\n '';\r\n return;\r\n } else {\r\n this.updatePageInfo();\r\n }\r\n }\r\n\r\n btnRemoveAllImages_onclick() {\r\n if (!this.checkIfImagesInBuffer()) {\r\n return;\r\n }\r\n this.DWObject.RemoveAllImages();\r\n (document.getElementById('DW_TotalImage') as HTMLInputElement).value = '0';\r\n (document.getElementById('DW_CurrentImage') as HTMLInputElement).value = '';\r\n }\r\n setlPreviewMode() {\r\n const varNum = parseInt(\r\n (\r\n (document.getElementById('DW_PreviewMode') as HTMLSelectElement)\r\n .selectedIndex + 1\r\n ).toString(),\r\n 10\r\n );\r\n const btnCrop: any = document.getElementById('btnCrop');\r\n if (btnCrop) {\r\n let tmpstr = btnCrop.src;\r\n if (varNum > 1) {\r\n tmpstr = tmpstr.replace('Crop.', 'Crop_gray.');\r\n btnCrop.src = tmpstr;\r\n btnCrop.onclick = function () { };\r\n } else {\r\n tmpstr = tmpstr.replace('Crop_gray.', 'Crop.');\r\n btnCrop.src = tmpstr;\r\n btnCrop.onclick = () => {\r\n this.btnCrop_onclick();\r\n };\r\n }\r\n }\r\n\r\n this.DWObject.SetViewMode(varNum, varNum);\r\n if (Dynamsoft.Lib.env.bMac || Dynamsoft.Lib.env.bLinux) {\r\n return;\r\n } else if (\r\n (document.getElementById('DW_PreviewMode') as HTMLSelectElement)\r\n .selectedIndex !== 0\r\n ) {\r\n this.DWObject.MouseShape = true;\r\n } else {\r\n this.DWObject.MouseShape = false;\r\n }\r\n }\r\n\r\n // --------------------------------------------------------------------------------------\r\n // *********************************radio response***************************************\r\n // --------------------------------------------------------------------------------------\r\n rdTIFF_onclick() {\r\n const _chkMultiPageTIFF: any = document.getElementById('MultiPageTIFF');\r\n _chkMultiPageTIFF.disabled = false;\r\n _chkMultiPageTIFF.checked = false;\r\n\r\n const _chkMultiPagePDF: any = document.getElementById('MultiPagePDF');\r\n _chkMultiPagePDF.checked = false;\r\n _chkMultiPagePDF.disabled = true;\r\n }\r\n\r\n rdPDF_onclick() {\r\n const _chkMultiPageTIFF: any = document.getElementById('MultiPageTIFF');\r\n _chkMultiPageTIFF.checked = false;\r\n _chkMultiPageTIFF.disabled = true;\r\n\r\n const _chkMultiPagePDF: any = document.getElementById('MultiPagePDF');\r\n _chkMultiPagePDF.disabled = false;\r\n _chkMultiPagePDF.checked = true;\r\n }\r\n\r\n rd_onclick() {\r\n const _chkMultiPageTIFF: any = document.getElementById('MultiPageTIFF');\r\n _chkMultiPageTIFF.checked = false;\r\n _chkMultiPageTIFF.disabled = true;\r\n\r\n const _chkMultiPagePDF: any = document.getElementById('MultiPagePDF');\r\n _chkMultiPagePDF.checked = false;\r\n _chkMultiPagePDF.disabled = true;\r\n }\r\n\r\n // --------------------------------------------------------------------------------------\r\n // ************************** Dynamic Web TWAIN Events***********************************\r\n // --------------------------------------------------------------------------------------\r\n\r\n Dynamsoft_OnPostTransfer = () => {\r\n this.updatePageInfo();\r\n }\r\n\r\n Dynamsoft_OnPostLoadfunction = (path, name, type) => {\r\n this.updatePageInfo();\r\n }\r\n\r\n Dynamsoft_OnPostAllTransfers = () => {\r\n this.DWObject.CloseSource();\r\n this.updatePageInfo();\r\n this.checkErrorString();\r\n }\r\n\r\n Dynamsoft_OnMouseClick = index => {\r\n this.updatePageInfo();\r\n }\r\n\r\n Dynamsoft_OnMouseRightClick = index => {\r\n // To add\r\n }\r\n\r\n Dynamsoft_OnImageAreaSelected = (index, left, top, right, bottom) => {\r\n this._iLeft = left;\r\n this._iTop = top;\r\n this._iRight = right;\r\n this._iBottom = bottom;\r\n }\r\n\r\n Dynamsoft_OnImageAreaDeselected = index => {\r\n this._iLeft = 0;\r\n this._iTop = 0;\r\n this._iRight = 0;\r\n this._iBottom = 0;\r\n }\r\n\r\n Dynamsoft_OnMouseDoubleClick() {\r\n return;\r\n }\r\n\r\n Dynamsoft_OnTopImageInTheViewChanged = index => {\r\n this._iLeft = 0;\r\n this._iTop = 0;\r\n this._iRight = 0;\r\n this._iBottom = 0;\r\n this.DWObject.CurrentImageIndexInBuffer = index;\r\n this.updatePageInfo();\r\n }\r\n\r\n Dynamsoft_OnGetFilePath = (bSave, count, index, path, name) => { };\r\n}\r\n","<div id=\"DWTcontainer\">\r\n <div id=\"DWTcontainerTop\">\r\n <div id=\"divEdit\">\r\n <ul class=\"operateGrp\">\r\n <li>\r\n <img src=\"./assets/dwt-resources/Images/ShowEditor.png\" [title]=\"'scanner.showImageEditor' | translate\"\r\n [alt]=\"'scanner.showImageEditor' | translate\" id=\"btnEditor\" (click)=\"btnShowImageEditor_onclick()\" />\r\n </li>\r\n <li>\r\n <img src=\"./assets/dwt-resources/Images/RotateLeft.png\" [title]=\"'scanner.rotateLeft' | translate\"\r\n [alt]=\"'scanner.rotateLeft' | translate\" id=\"btnRotateL\" (click)=\"btnRotateLeft_onclick()\" />\r\n </li>\r\n <li>\r\n <img src=\"./assets/dwt-resources/Images/RotateRight.png\" [title]=\"'scanner.rotateRight' | translate\"\r\n [alt]=\"'scanner.rotateRight' | translate\" id=\"btnRotateR\" (click)=\"btnRotateRight_onclick()\" />\r\n </li>\r\n <li>\r\n <img src=\"./assets/dwt-resources/Images/Rotate180.png\" [alt]=\"'scanner.rotate180' | translate\"\r\n [title]=\"'scanner.rotate180' | translate\" (click)=\"btnRotate180_onclick()\" />\r\n </li>\r\n <li>\r\n <img src=\"./assets/dwt-resources/Images/Mirror.png\" [title]=\"'scanner.mirror' | translate\"\r\n [alt]=\"'scanner.mirror' | translate\" id=\"btnMirror\" (click)=\"btnMirror_onclick()\" />\r\n </li>\r\n <li>\r\n <img src=\"./assets/dwt-resources/Images/Flip.png\" [title]=\"'scanner.flip' | translate\"\r\n [alt]=\"'scanner.flip' | translate\" id=\"btnFlip\" (click)=\"btnFlip_onclick()\" />\r\n </li>\r\n <li>\r\n <img src=\"./assets/dwt-resources/Images/RemoveSelectedImages.png\"\r\n [title]=\"'scanner.removeSelected' | translate\" [alt]=\"'scanner.removeSelected' | translate\"\r\n id=\"DW_btnRemoveCurrentImage\" (click)=\"btnRemoveCurrentImage_onclick()\" />\r\n </li>\r\n <li>\r\n <img src=\"./assets/dwt-resources/Images/RemoveAllImages.png\" [title]=\"'scanner.removeAll' | translate\"\r\n [alt]=\"'scanner.removeAll' | translate\" id=\"DW_btnRemoveAllImages\" (click)=\"btnRemoveAllImages_onclick()\" />\r\n </li>\r\n <li>\r\n <img src=\"./assets/dwt-resources/Images/ChangeSize.png\" [title]=\"'scanner.resize' | translate\"\r\n [alt]=\"'scanner.resize' | translate\" id=\"btnChangeImageSize\" (click)=\"btnChangeImageSize_onclick()\" />\r\n </li>\r\n <li>\r\n <img src=\"./assets/dwt-resources/Images/Crop.png\" [title]=\"'scanner.crop' | translate\"\r\n [alt]=\"'scanner.crop' | translate\" id=\"btnCrop\" (click)=\"btnCrop_onclick()\" />\r\n </li>\r\n </ul>\r\n <div id=\"ImgSizeEditor\" style=\"visibility:hidden\">\r\n <ul>\r\n <li>\r\n <label for=\"img_height\">{{ 'scanner.newHeight' | translate }} :\r\n <input type=\"text\" id=\"img_height\" style=\"width:50%;\" size=\"10\" />\r\n {{ 'scanner.pixel' | translate }}</label>\r\n </li>\r\n <li>\r\n <label for=\"img_width\">{{ 'scanner.newWidth' | translate }} :&nbsp;\r\n <input type=\"text\" id=\"img_width\" style=\"width:50%;\" size=\"10\" />\r\n {{ 'scanner.pixel' | translate }}</label>\r\n </li>\r\n <li>\r\n {{ 'scanner.InterpolationMethod' | translate }}:\r\n <select size=\"1\" id=\"InterpolationMethod\">\r\n <option value=\"\"></option>\r\n </select>\r\n </li>\r\n <li style=\"text-align:center;\">\r\n <input type=\"button\" value=\" OK \" id=\"btnChangeImageSizeOK\" (click)=\"btnChangeImageSizeOK_onclick()\" />\r\n <input type=\"button\" value=\" Cancel \" id=\"btnCancelChange\" (click)=\"btnCancelChange_onclick()\" />\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n <div id=\"dwtcontrolContainer\"></div>\r\n <div id=\"btnGroupBtm\">\r\n <div class=\"ct-lt\">\r\n {{ 'scanner.page' | translate }}:\r\n <input id=\"DW_btnFirstImage\" (click)=\"btnFirstImage_onclick()\" type=\"button\" value=\" |< \" />&nbsp;\r\n <input id=\"DW_btnPreImage\" (click)=\"btnPreImage_onclick()\" type=\"button\" value=\" < \" />&nbsp;&nbsp;\r\n <input type=\"text\" size=\"2\" id=\"DW_CurrentImage\" readonly=\"readonly\" />\r\n /\r\n <input type=\"text\" size=\"2\" id=\"DW_TotalImage\" readonly=\"readonly\" />&nbsp;&nbsp;\r\n <input id=\"DW_btnNextImage\" (click)=\"btnNextImage_onclick()\" type=\"button\" value=\"> \" />&nbsp;\r\n <input id=\"DW_btnLastImage\" (click)=\"btnLastImage_onclick()\" type=\"button\" value=\">| \" />\r\n </div>\r\n <div class=\"ct-rt\">\r\n {{ 'scanner.preview' | translate }}:\r\n <select size=\"1\" id=\"DW_PreviewMode\" (change)=\"setlPreviewMode()\">\r\n <option value=\"0\">1X1</option>\r\n <option value=\"1\">2X2</option>\r\n <option value=\"2\">3X3</option>\r\n <option value=\"3\">4X4</option>\r\n <option value=\"4\">5X5</option>\r\n </select><br />\r\n </div>\r\n </div>\r\n </div>\r\n <div id=\"ScanWrapper\">\r\n <div id=\"divScanner\" class=\"divinput\">\r\n <div id=\"div_ScanImage\" class=\"divTableStyle\">\r\n <ul id=\"ulScaneImageHIDE\">\r\n <li>\r\n <label for=\"source\">\r\n <p>{{ 'scanner.source' | translate }}:</p>\r\n </label>\r\n <select size=\"1\" id=\"source\" style=\"position:relative;\" (change)=\"source_onchange()\">\r\n <option value=\"\"></option>\r\n </select>\r\n </li>\r\n <li style=\"display:none;\" id=\"pNoScanner\">\r\n <a href=\"javascript: void(0)\" class=\"ShowtblLoadImage\" style=\"color:#fe8e14\" id=\"aNoScanner\">(No TWAIN\r\n compatible drivers detected)</a>\r\n </li>\r\n <li id=\"divProductDetail\">\r\n <ul id=\"divTwainType\">\r\n <li>\r\n <label id=\"lblShowUI\" for=\"ShowUI\">\r\n <input type=\"checkbox\" id=\"ShowUI\" />{{\r\n 'scanner.ShowUI' | translate\r\n }}&nbsp;</label>\r\n <label for=\"ADF\">\r\n <input type=\"checkbox\" id=\"ADF\" />{{\r\n 'scanner.AutoFeeder' | translate\r\n }}&nbsp;</label>\r\n <label for=\"Duplex\">\r\n <input type=\"checkbox\" id=\"Duplex\" />{{\r\n 'scanner.Duplex' | translate\r\n }}</label>\r\n </li>\r\n <li>\r\n {{ 'scanner.PixelType' | translate }}:\r\n <label for=\"BW\" style=\"margin-left:5px;\">\r\n <input type=\"radio\" id=\"BW\" name=\"PixelType\" />{{\r\n 'scanner.B&W' | translate\r\n }}</label>\r\n <label for=\"Gray\">\r\n <input type=\"radio\" id=\"Gray\" name=\"PixelType\" />{{\r\n 'scanner.Gray' | translate\r\n }}</label>\r\n <label for=\"RGB\">\r\n <input type=\"radio\" id=\"RGB\" name=\"PixelType\" />{{\r\n 'scanner.Color' | translate\r\n }}</label>\r\n </li>\r\n <li>\r\n <span>{{ 'scanner.Resolution' | translate }}:&nbsp;</span><select size=\"1\" id=\"Resolution\">\r\n <option value=\"100\">100</option>\r\n <option value=\"150\">150</option>\r\n <option value=\"200\">200</option>\r\n <option value=\"300\" selected>300</option>\r\n </select>\r\n </li>\r\n </ul>\r\n </li>\r\n\r\n <button (click)=\"btnLoadImagesOrPDFs_onclick()\" type=\"button\" class=\"btn\">\r\n <i class=\"bi bi-upload icon\"></i>\r\n <span> {{ 'scanner.load' | translate }}</span>\r\n </button>\r\n <button id=\"btnScan\" disabled=\"disabled\" (click)=\"acquireImage()\" type=\"button\" class=\"btn mx-2\">\r\n <i class=\"bi bi-upc-upload icon\"></i>\r\n <span> {{ 'scanner.scan' | translate }}</span>\r\n </button>\r\n </ul>\r\n </div>\r\n\r\n <div class=\"row gap\">\r\n <div class=\"col-12 mt-2\">\r\n <button class=\"btn\" [disabled]=\"DWObject?.HowManyImagesInBuffer === 0\" color=\"primary\"\r\n (click)=\"convertToBlob()\">\r\n {{ 'scanner.upload' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Component, EventEmitter, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { combineLatest } from 'rxjs';\r\nimport { CustomToastrService } from '../../../custom-toastr/services/custom-toastr.service';\r\nimport { DocumentsService } from '../../services/documents.service';\r\n\r\n/**\r\n * Document upload is a reusable API integrated upload button component,\r\n * that can be configured to suit the needs of required implementation,\r\n * it is possible to upload batch and create a document, or just upload a batch and\r\n * consume it any other way.\r\n *\r\n * @title\r\n * Document Upload\r\n *\r\n * @example\r\n *\r\n * <app-document-upload\r\n * [allowedTypes]=\"'application/pdf'\"\r\n * [createDocument]=\"false\"\r\n * (uploadSuccess)=\"onUploadSuccess($event)\"\r\n * (uploadError)=\"onUploadError($event)\"\r\n * >\r\n * <button> UPLOAD FILE </button>\r\n * </app-document-upload>\r\n */\r\n@Component({\r\n selector: 'app-document-upload',\r\n templateUrl: './document-upload.component.html',\r\n styleUrls: ['./document-upload.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class DocumentUploadComponent {\r\n /** Allowed Upload Types */\r\n @Input()\r\n allowedTypes = 'application/pdf,application/vnd.ms-powerpoint,application/vnd.openxmlformats-officedocument.presentationml.presentation';\r\n /** Params to be sent with properties when creating a document */\r\n @Input()\r\n params = {};\r\n /** Path in witch a document will be created */\r\n @Input()\r\n path;\r\n /** Max allowed upload size */\r\n @Input()\r\n maxSize = 1145728;\r\n /** Params to be sent with body when creating a document */\r\n @Input()\r\n docParams = {};\r\n /** Can upload multiple files at once */\r\n @Input()\r\n multiple = false;\r\n /** should create document after batch upload */\r\n @Input()\r\n createDocument = true;\r\n /** Max allowed number of files size */\r\n @Input()\r\n allowedMaxNumberOfFiles = 10;\r\n /** Event emitted on document upload success, it will have document or batch object based on configuration */\r\n @Output()\r\n uploadSuccess = new EventEmitter();\r\n /** Event emitted when an error occurs while attempting upload */\r\n @Output()\r\n uploadError = new EventEmitter();\r\n uploading = false;\r\n @ViewChild('fileInput') fileInput;\r\n\r\n constructor(\r\n private documentsApi: DocumentsService,\r\n private customToastrService: CustomToastrService\r\n ) { }\r\n\r\n triggerUpload(): void {\r\n this.fileInput.nativeElement.click();\r\n }\r\n\r\n isSizeChecked(file) {\r\n if (file.size <= this.maxSize) {\r\n return true;\r\n }\r\n else\r\n this.customToastrService.show(\r\n 'error',\r\n 'error',\r\n 'ERRORS.SIZE',\r\n {},\r\n `${(this.maxSize / (1024 * 1024)).toFixed(2)}MB` \r\n );\r\n this.uploadError.next('errors.size');\r\n return false;\r\n }\r\n\r\n isTypeChecked(file) {\r\n let arr = this.allowedTypes.split(',');\r\n if (arr.indexOf(file.type) > -1)\r\n return true\r\n else {\r\n this.customToastrService.show(\r\n 'error',\r\n 'error',\r\n 'ERRORS.TYPE',\r\n {},\r\n this.allowedTypes.replace(/image|application/gi, '').replace(/[/]/g, '').toUpperCase()\r\n );\r\n this.uploadError.next('errors.type');\r\n return false;\r\n }\r\n }\r\n\r\n isMaxNumberOfFiles(selectedFiles) {\r\n if (selectedFiles.length <= this.allowedMaxNumberOfFiles)\r\n return true\r\n else {\r\n this.customToastrService.show(\r\n 'error',\r\n 'error',\r\n 'ERRORS.MAX_NUMBER_OF_FILES',\r\n {},\r\n this.allowedMaxNumberOfFiles\r\n );\r\n this.uploadError.next('errors.maxNumberOfFiles');\r\n return false;\r\n }\r\n }\r\n\r\n uploadDocument(files): void {\r\n let selectedFiles = Object.keys(files).map(key => files[key]);\r\n selectedFiles = selectedFiles.filter(file => {\r\n if (this.isMaxNumberOfFiles(selectedFiles)) {\r\n if (this.isSizeChecked(file) && this.isTypeChecked(file)) {\r\n return file;\r\n }\r\n }\r\n });\r\n if (selectedFiles.length) {\r\n this.uploading = true;\r\n\r\n this.documentsApi.uploadBatch(selectedFiles)\r\n .subscribe((files) => {\r\n if (this.createDocument) {\r\n combineLatest([\r\n ...files.map((file) => this.documentsApi.createDoc(file, this.path, this.params, this.docParams))\r\n ]).subscribe(docs => {\r\n docs.forEach(doc => {\r\n this.uploadSuccess.next(doc);\r\n });\r\n this.uploading = false;\r\n this.fileInput.nativeElement.value = '';\r\n });\r\n } else {\r\n files.forEach(doc => {\r\n this.uploadSuccess.next(doc);\r\n });\r\n this.uploading = false;\r\n this.fileInput.nativeElement.value = '';\r\n }\r\n\r\n\r\n }, (err) => {\r\n this.uploadError.next(err);\r\n this.uploading = false;\r\n this.fileInput.nativeElement.value = '';\r\n });\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n}\r\n","<input type=\"file\" class=\"hidden\" #fileInput [accept]=\"allowedTypes\" [multiple]=\"multiple\"\r\n (change)=\"uploadDocument($event.target.files)\">\r\n<div #template [ngClass]=\"{'hidden': template.childNodes.length == 0}\" (click)=\"triggerUpload()\"\r\n class=\"upload-container\">\r\n <ng-content></ng-content>\r\n</div>\r\n<div *ngIf=\"template.childNodes.length == 0\" class=\"default-upload\" (click)=\"triggerUpload()\">\r\n <div class=\"upload-section\" style=\"color:#465573;\">\r\n <mat-icon class=\"upload-icon\">upload</mat-icon>\r\n <h3 class=\"upload-title\">\r\n {{'documents.uploadDocuments'| translate }}</h3>\r\n <p class=\"upload-desc\">\r\n {{'documents.maxSize'| translate }} {{maxSize | FileSize}}</p>\r\n </div>\r\n <div>\r\n <mat-icon class=\"m-2\" style=\"color:#465573;\">file_copy</mat-icon>\r\n </div>\r\n</div>\r\n<mat-progress-bar mode=\"indeterminate\" *ngIf=\"uploading\"></mat-progress-bar>\r\n","import { Component, EventEmitter, Input } from '@angular/core';\r\nimport { delay, take } from 'rxjs/operators';\r\nimport { CustomToastrService } from '../../../custom-toastr/services/custom-toastr.service';\r\nimport { DocumentsConstants } from '../../constants/documents';\r\n\r\n/** @ignore */\r\n@Component({\r\n selector: 'app-documents',\r\n templateUrl: './documents.component.html',\r\n styleUrls: ['./documents.component.scss'],\r\n})\r\nexport class DocumentsComponent {\r\n @Input()\r\n ancestorId;\r\n @Input()\r\n quickFilters;\r\n @Input()\r\n params = {};\r\n @Input()\r\n provider;\r\n @Input()\r\n path;\r\n @Input()\r\n canUploadRoles = null;\r\n @Input()\r\n multiple = false;\r\n @Input()\r\n maxSize = 3145728;\r\n items = [];\r\n isFetching = false;\r\n uploading = false;\r\n notifier = new EventEmitter();\r\n documentConstants = DocumentsConstants;\r\n constructor(private toastr: CustomToastrService) {}\r\n\r\n onError(error): void {\r\n this.toastr.show('error', 'error', error ? error : 'genericError');\r\n }\r\n onSuccess(files): void {\r\n this.toastr.show('success', 'success', 'documents.addSuccess');\r\n this.notifier.next();\r\n }\r\n onDelete(event): void {\r\n this.toastr.show('success', 'success', 'documents.deleteSuccess');\r\n }\r\n}\r\n","<app-card>\r\n <h3 class=\"title text-lg font-bold\">\r\n {{ \"documents.title\" | translate }}\r\n </h3>\r\n\r\n\r\n <div class=\"body\">\r\n <app-document-upload [multiple]=\"multiple\" *appHasRole=\"canUploadRoles\" [docParams]=\"{type:documentConstants.documentTypes.attachment}\"\r\n [path]=\"this.path\" [params]=\"this.params\" (uploadSuccess)=\"onSuccess($event)\" (uploadError)=\"onError($event)\">\r\n </app-document-upload>\r\n <app-documents-list [quickFilters]=\"quickFilters\" [notifier]=\"notifier\" [ancestorId]=\"ancestorId\"\r\n [provider]=\"provider\" (deleteSuccess)=\"onDelete($event)\">\r\n </app-documents-list>\r\n\r\n </div>\r\n</app-card>\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n} from '@angular/core';\r\nimport { FormArray, FormControl, FormGroup } from '@angular/forms';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { take, takeUntil } from 'rxjs/operators';\r\nimport { NuxeoService } from '../../../../Core/services/nuxeo/nuxeo.service';\r\nimport { ConfirmCallerDialogComponent } from '../../../confirm-caller/confirm-caller.dialog';\r\nimport { CustomToastrService } from '../../../custom-toastr/services/custom-toastr.service';\r\nimport { DocumentsConstants } from '../../constants/documents';\r\nimport { DocumentsService } from '../../services/documents.service';\r\n\r\n/**\r\n * A component that will list attachments batch with edit form for each item\r\n * @title\r\n * Batch attachments List\r\n *\r\n * @example\r\n *\r\n * <cts-attachments-list\r\n * [items]=\"files\"\r\n * [disablePagination]=\"true\"\r\n * [batchList]=\"true\"\r\n * [canPreview]=\"false\"\r\n * [item]=\"file\"\r\n * (documentsCount)=\"getAttachmentsCount($event)\"\r\n * (deleteSuccess)=\"onDeleteNewAttachment($event)\"\r\n * >\r\n * </cts-attachments-list>\r\n */\r\n@Component({\r\n selector: 'cts-attachments-list',\r\n templateUrl: './attachments-list.component.html',\r\n styleUrls: ['./attachments-list.component.scss'],\r\n})\r\nexport class AttachmentsListComponent implements OnInit, OnChanges, OnDestroy {\r\n /** @deprecated */\r\n @Input()\r\n ancestorId;\r\n /** @deprecated */\r\n @Input()\r\n provider;\r\n /** Batch list */\r\n @Input()\r\n items = [];\r\n @Input()\r\n batchList = false;\r\n @Input()\r\n dontDelete = false;\r\n @Input()\r\n canDelete = true;\r\n @Input()\r\n item;\r\n @Output()\r\n deleteSuccess = new EventEmitter();\r\n @Output()\r\n documentsCount = new EventEmitter<number>();\r\n\r\n onDestroy$: Subject<boolean> = new Subject<boolean>();\r\n @Output()\r\n documentSelect: EventEmitter<any> = new EventEmitter<any>();\r\n public attachmentForm = new FormGroup({\r\n attachmentCard: new FormArray([]),\r\n });\r\n\r\n constructor(private nuxeoApi: NuxeoService) {}\r\n\r\n ngOnInit(): void {\r\n this.attachmentForm.valueChanges.subscribe((res) => {\r\n console.log('form value', this.attachmentForm.value.attachmentCard);\r\n });\r\n }\r\n ngOnChanges(): void {\r\n // (this.attachmentForm.controls['attachmentCard'] as FormArray).clear();\r\n // this.fillForm(this.items);\r\n if (this.item) {\r\n this.transformItem(this.item);\r\n }\r\n }\r\n\r\n isCreator(item) {\r\n return !this.batchList\r\n ? item.properties.creator.id === this.nuxeoApi.nuxeoClient.user.id\r\n : true;\r\n }\r\n deleteDocument(event, item) {\r\n event.stopPropagation();\r\n this.deleteSuccess.next(item);\r\n }\r\n\r\n fillForm(items: any[]) {\r\n items.forEach((item) => {\r\n let fileFormGroup = new FormGroup({\r\n item: new FormControl(item),\r\n attachmentId: new FormControl('abc123'),\r\n barcode: new FormControl('123454332'),\r\n classification: new FormControl(null),\r\n category: new FormControl(null),\r\n type: new FormControl('PDF'),\r\n title: new FormControl(item.title.split('.').slice(0, -1).join('.')),\r\n remarks: new FormControl(null),\r\n // isObject: new FormControl(false),\r\n extension: new FormControl(item.title.split('.').pop()),\r\n content: new FormControl({\r\n 'upload-batch': item.blob['upload-batch'],\r\n 'upload-fileId': item.blob['upload-fileId'],\r\n 'mime-type': 'application/pdf',\r\n }),\r\n });\r\n this.addAttachmentCard(fileFormGroup);\r\n });\r\n }\r\n\r\n transformItem(item) {\r\n let fileFormGroup = new FormGroup({\r\n item: new FormControl(item),\r\n attachmentId: new FormControl('abc123'),\r\n barcode: new FormControl('123454332'),\r\n classification: new FormControl(null),\r\n category: new FormControl(null),\r\n type: new FormControl('PDF'),\r\n title: new FormControl(item.title.split('.').slice(0, -1).join('.')),\r\n remarks: new FormControl(null),\r\n // isObject: new FormControl(false),\r\n extension: new FormControl(item.title.split('.').pop()),\r\n content: new FormControl({\r\n 'upload-batch': item.blob['upload-batch'],\r\n 'upload-fileId': item.blob['upload-fileId'],\r\n 'mime-type': 'application/pdf',\r\n }),\r\n });\r\n this.addAttachmentCard(fileFormGroup);\r\n }\r\n addAttachmentCard(formGroup: FormGroup) {\r\n const arrayControl = <FormArray>(\r\n this.attachmentForm.controls['attachmentCard']\r\n );\r\n arrayControl.push(formGroup);\r\n }\r\n delInput(index: number): void {\r\n const arrayControl = <FormArray>(\r\n this.attachmentForm.controls['attachmentCard']\r\n );\r\n arrayControl.removeAt(index);\r\n }\r\n ngOnDestroy(): void {\r\n this.onDestroy$.next(true);\r\n this.onDestroy$.complete();\r\n }\r\n\r\n getControls() {\r\n return (this.attachmentForm.get('attachmentCard') as FormArray).controls;\r\n }\r\n}\r\n","<ng-container>\r\n <div class=\"doc-list\">\r\n <ng-container>\r\n <form [formGroup]=\"attachmentForm\">\r\n <div formArrayName=\"attachmentCard\">\r\n <div\r\n class=\"doc-item\"\r\n *ngFor=\"\r\n let attachmentCardControl of attachmentForm.get('attachmentCard')[\r\n 'controls'\r\n ];\r\n let i = index\r\n \"\r\n >\r\n <!-- (click)=\"preview(item.uid)\" -->\r\n <div class=\"file-icon\">\r\n <mat-icon>file_copy</mat-icon>\r\n </div>\r\n <div\r\n [formGroupName]=\"i\"\r\n class=\"attachmentForm-container row no-gutters\"\r\n >\r\n <div class=\"formControl-wrapper col-12 col-xl-6\">\r\n <app-dynamic-form-textitem\r\n placeholder=\"{{ 'Title' | translate }}\"\r\n class=\"textitem\"\r\n formControlName=\"title\"\r\n \r\n >\r\n </app-dynamic-form-textitem>\r\n <app-dynamic-form-textitem\r\n placeholder=\"{{\r\n 'CREATE.ATTACHMENTS.REMARKS_PLACE_HOLDER' | translate\r\n }}\"\r\n class=\"textitem\"\r\n formControlName=\"remarks\"\r\n >\r\n </app-dynamic-form-textitem>\r\n </div>\r\n <div class=\"formControl-wrapper col-12 col-xl-6\">\r\n <app-dynamic-form-vocabulary-item\r\n class=\"voc-form-control\"\r\n [bindLabel]=\"'label'\"\r\n [bindValue]=\"'id'\"\r\n placeholder=\"{{ 'VOCABULARY.TYPE' | translate }}\"\r\n [multiple]=\"false\"\r\n [searchable]=\"false\"\r\n [closeOnSelect]=\"true\"\r\n [hideSelectedItems]=\"false\"\r\n [vocabularyType]=\"'VOC_CorrespondenceAttachmentType'\"\r\n formControlName=\"category\"\r\n >\r\n </app-dynamic-form-vocabulary-item>\r\n <app-dynamic-form-vocabulary-item\r\n class=\"voc-form-control\"\r\n [bindLabel]=\"'label'\"\r\n [bindValue]=\"'id'\"\r\n placeholder=\"{{ 'VOCABULARY.CLASSIFICATION' | translate }}\"\r\n [multiple]=\"false\"\r\n [searchable]=\"false\"\r\n [closeOnSelect]=\"true\"\r\n [hideSelectedItems]=\"false\"\r\n [vocabularyType]=\"'VOC_CorrespondenceAttachClassification'\"\r\n formControlName=\"classification\"\r\n >\r\n </app-dynamic-form-vocabulary-item>\r\n </div>\r\n <!-- <div class=\"formControl-toggleitem col-2 col-xl-2\">\r\n <cts-dynamic-form-slide-toggleitem\r\n label=\"{{ 'CREATE.ATTACHMENTS.ISOBJECT' | translate }}\"\r\n formControlName=\"isObject\"\r\n ></cts-dynamic-form-slide-toggleitem>\r\n </div> -->\r\n </div>\r\n <div class=\"btn-wrapper\">\r\n <button\r\n (click)=\"delInput(i)\"\r\n class=\"btn btn-outline-danger btn-no-border\"\r\n >\r\n <!-- deleteDocument($event, attachmentCardControl.value.item) -->\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </ng-container>\r\n </div>\r\n</ng-container>\r\n<ng-template #spinner>\r\n <mat-spinner class=\"centered-spinner\"></mat-spinner>\r\n</ng-template>\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { DocumentsService } from '../../services/documents.service';\r\n\r\n/**\r\n * A component that will list specific correspondence attachments with edit form for each item\r\n * @title\r\n * Attachments List\r\n *\r\n * @example\r\n *\r\n * <cts-attachments-page-provider\r\n * [provider]=\"'providerName'\"\r\n * [ancestorId]=\"ancestorId\"\r\n * (deleteSuccess)=\"onDeleteAttachment($event)\"\r\n * >\r\n * </cts-attachments-page-provider>\r\n */\r\n@Component({\r\n selector: 'cts-attachments-page-provider',\r\n templateUrl: './attachments-page-provider.component.html',\r\n styleUrls: ['./attachments-page-provider.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class AttachmentsPageProviderComponent implements OnInit {\r\n /** Provider name */\r\n @Input()\r\n provider;\r\n /** Ancestor ID */\r\n @Input()\r\n ancestorId;\r\n /** Emitted on attachment delete */\r\n @Output()\r\n deleteSuccess = new EventEmitter();\r\n /** Emits total documents count when they're loaded */\r\n @Output()\r\n documentsCount = new EventEmitter<number>();\r\n isFetching: boolean;\r\n attachments = [];\r\n totalRecords: number;\r\n constructor(private documentsApi: DocumentsService) { }\r\n\r\n ngOnInit(): void {\r\n this.getAttachments();\r\n }\r\n\r\n getAttachments() {\r\n if (this.provider) {\r\n this.isFetching = true;\r\n this.documentsApi\r\n .getDocuments(this.ancestorId, this.provider, {})\r\n .subscribe((data) => {\r\n this.totalRecords = data.totalSize;\r\n this.attachments = data.entries;\r\n this.documentsCount.emit(this.totalRecords);\r\n this.isFetching = false;\r\n });\r\n }\r\n }\r\n deleteDocument(event, attachment) {\r\n event.stopPropagation();\r\n this.attachments = this.attachments.filter((item) => {\r\n return attachment.uid != item.uid;\r\n });\r\n this.deleteSuccess.emit(attachment.uid);\r\n }\r\n}\r\n","<div *ngIf=\"attachments.length !== 0\" class=\"doc-list\">\r\n <div *ngFor=\"let Attachment of attachments\" class=\"doc-item\">\r\n <div class=\"file-icon\">\r\n <mat-icon>file_copy</mat-icon>\r\n </div>\r\n <div class=\"attachment-container row no-gutters\">\r\n <div class=\"attachment-wrapper col-10 col-xl-6\">\r\n <div>\r\n {{ Attachment.title }}\r\n </div>\r\n <div>\r\n {{ Attachment.properties.remarks }}\r\n </div>\r\n </div>\r\n <div class=\"attachment-wrapper col-10 col-xl-4\">\r\n <div>\r\n {{ Attachment.properties.classification ? Attachment.properties.classification.properties.label : '--'}}\r\n </div>\r\n <div>\r\n {{ Attachment.properties.category ?Attachment.properties.category.properties.label :'--' }}\r\n </div>\r\n </div>\r\n <!-- <div class=\"attachment-wrapper isObject col-10 col-xl-2\">\r\n {{ Attachment.properties.isObject }}\r\n </div> -->\r\n </div>\r\n <div>\r\n <button\r\n (click)=\"deleteDocument($event, Attachment)\"\r\n class=\"btn btn-outline-danger btn-no-border\"\r\n >\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { RouterModule } from '@angular/router';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { DirectiveModule } from '../../directive/directive.module';\r\nimport { PipesModule } from '../../pipes/pipes.module';\r\nimport { CardModule } from '../card/card.module';\r\nimport { ConfirmCallerModule } from '../confirm-caller/confirm-caller.module';\r\nimport { PaginationModule } from '../pagination/pagination.module';\r\nimport { DocumentsListComponent } from './components/document-list/documents-list.component';\r\nimport { ScanComponent } from './components/document-scan/document-scan.component';\r\nimport { DocumentUploadComponent } from './components/document-upload/document-upload.component';\r\nimport { DocumentsComponent } from './components/documents/documents.component';\r\nimport { AttachmentsListComponent } from './components/attachments-list/attachments-list.component';\r\nimport { DynamicFormModule } from '../dynamic-form/dynamic-form.module';\r\nimport { AttachmentsPageProviderComponent } from './components/attachments-page-provider/attachments-page-provider.component';\r\nimport { LibrarySharedModule } from '../../shared/libraryShared.module';\r\n\r\n/**\r\n * @title\r\n * Documents Module\r\n */\r\n@NgModule({\r\n declarations: [\r\n DocumentsComponent,\r\n DocumentsListComponent,\r\n DocumentUploadComponent,\r\n ScanComponent,\r\n AttachmentsListComponent,\r\n AttachmentsPageProviderComponent\r\n ],\r\n imports: [\r\n MatButtonModule,\r\n CommonModule,\r\n TranslateModule,\r\n PaginationModule,\r\n ConfirmCallerModule,\r\n RouterModule,\r\n MatProgressBarModule,\r\n MatProgressSpinnerModule,\r\n MatIconModule,\r\n MatDialogModule,\r\n DirectiveModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n PipesModule,\r\n CardModule,\r\n DynamicFormModule,\r\n LibrarySharedModule\r\n ],\r\n exports: [\r\n DocumentsComponent,\r\n DocumentsListComponent,\r\n DocumentUploadComponent,\r\n ScanComponent,\r\n AttachmentsListComponent,\r\n AttachmentsPageProviderComponent\r\n ],\r\n providers: [],\r\n})\r\nexport class DocumentsModule { }\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cts-data-viewer',\r\n templateUrl: './data-viewer.component.html',\r\n styleUrls: ['./data-viewer.component.scss']\r\n})\r\nexport class DataViewerComponent implements OnInit {\r\n @Input() label = '';\r\n @Input() value = '';\r\n @Input() vertical = false;\r\n @Input() customClass;\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<div class=\"my-dynamic-viewer {{customClass}}\" \r\n[ngClass]=\"{'vertical' : vertical === true}\">\r\n <div class=\"my-label\">{{label | translate}}</div>\r\n <div class=\"my-value\"> \r\n <span class=\"direction-img\">\r\n <i class=\"bi bi-box-arrow-down incoming\"></i>\r\n <i class=\"bi bi-box-arrow-up outgoing\"></i>\r\n </span>\r\n <span class=\"text\">\r\n {{value ? value : '-'}}\r\n </span>\r\n \r\n </div> \r\n</div>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cts-boolean-viewer',\r\n templateUrl: './boolean-viewer.component.html',\r\n styleUrls: ['./boolean-viewer.component.scss']\r\n})\r\nexport class BooleanViewerComponent implements OnInit {\r\n @Input() label = '';\r\n @Input() value = false;\r\n @Input() trueValue = 'Yes';\r\n @Input() falseValue = 'No';\r\n @Input() vertical = false;\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<div class=\"my-dynamic-viewer\" [ngClass]=\"{'vertical' : vertical === true}\">\r\n <div class=\"my-label\">{{label | translate}}</div>\r\n <div class=\"my-value\"> {{value ? (trueValue | translate) : (falseValue | translate)}}</div>\r\n</div>","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n/**\r\n * A component to display a dropdown value\r\n * @title\r\n * Vocabulary Viewer\r\n */\r\n@Component({\r\n selector: 'cts-dropdown-viewer',\r\n templateUrl: './dropdown-viewer.component.html',\r\n styleUrls: ['./dropdown-viewer.component.scss']\r\n})\r\nexport class DropdownViewerComponent implements OnInit {\r\n /** Label of field */\r\n @Input() label = '';\r\n /** Value of field */\r\n @Input() value = '';\r\n /** Vocabulary Key */\r\n @Input() dropdownId = '';\r\n /** is vertical */\r\n @Input() vertical = false;\r\n /** hide the label */\r\n @Input() withOutLabel = false;\r\n vocabularyIds = {\r\n \"category\":\"VOC_CorrespondenceCategory\",\r\n \"class\":\"VOC_CorrespondenceClass\",\r\n \"classfication\":\"VOC_CorrespondenceClassfication\",\r\n \"deliveryType\":\"VOC_CorrespondenceDeliveryType\",\r\n \"direction\":\"VOC_CorrespondenceDirection\",\r\n \"priority\":\"VOC_CorrespondencePriority\",\r\n \"secrecyLevel\":\"VOC_CorrespondenceSecrecyLevel\",\r\n \"correspondenceType\":\"VOC_CorrespondenceType\",\r\n \"departmentType\":\"VOC_DepartmentType\",\r\n \"incCorrespondenceStatus\":\"VOC_IncCorrespondenceStatus\",\r\n \"rejectionCode\":\"VOC_NCARejectionCode\",\r\n \"outCorrespondenceStatus\":\"VOC_OutCorrespondenceStatus\"\r\n }\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<div class=\"my-dynamic-viewer\" [ngClass]=\"{'vertical' : vertical === true , 'with-out-label': withOutLabel}\">\r\n <div class=\"my-label\" *ngIf=\"!withOutLabel\">{{label | translate}}</div>\r\n <div class=\"my-value\"> {{value ? (\"vocabulary.\" + vocabularyIds[dropdownId] + \".\" + value| translate ): '-'}}</div>\r\n</div>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport * as moment_ from 'moment-hijri';\r\nimport { AppConfigService } from '../../../configuration/app-config.service';\r\n\r\n@Component({\r\n selector: 'cts-date-viewer',\r\n templateUrl: './date-viewer.component.html',\r\n styleUrls: ['./date-viewer.component.scss']\r\n})\r\nexport class DateViewerComponent implements OnInit {\r\n @Input() label = '';\r\n @Input() value = '';\r\n @Input() vertical = false;\r\n @Input() formate = \"EEEE, MMMM d, y\";\r\n @Input() hijri = false;\r\n @Input() withOutLabel = false;\r\n hijriDate;\r\n constructor(private appConfig : AppConfigService) { \r\n this.formate = this.appConfig.myConfiguration['dateFormate'];\r\n }\r\n\r\n ngOnInit(): void {\r\n // if(this.hijri){\r\n // let m = moment_('1442-11-7T12:00:00.000+02:00', 'iYYYY/iM/iD'); // Parse a Hijri date.\r\n // this.hijriDate = m.format(\"iYYYY iMMMM iD\"); // 1410/8/28 is 1990/3/25\r\n // // this.hijriDate = moment(this.value).format('iYYYY-iM-iD');\r\n // }\r\n }\r\n\r\n}\r\n","<div class=\"my-dynamic-viewer\" [ngClass]=\"{'vertical' : vertical === true , 'with-out-label': withOutLabel}\">\r\n <div class=\"my-label\" *ngIf=\"!withOutLabel\">{{label | translate}}</div>\r\n <div class=\"my-value\" *ngIf=\"!hijri\"> {{value | localizedDate : formate}}</div>\r\n <div class=\"my-value\" *ngIf=\"hijri\">{{value | hijriDate}}</div>\r\n</div>","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n/**\r\n * A component to display a list of users\r\n * @title\r\n * List Viewer\r\n */\r\n@Component({\r\n selector: 'cts-list-viewer',\r\n templateUrl: './list-viewer.component.html',\r\n styleUrls: ['./list-viewer.component.scss']\r\n})\r\nexport class ListViewerComponent implements OnInit {\r\n /** label to be shown */\r\n @Input() label = '';\r\n /** list of CC user */\r\n @Input() data = [];\r\n /** Further info required */\r\n @Input() vertical = false;\r\n show = false;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<div class=\"container\">\r\n <div>{{label | translate}}</div>\r\n <span class=\"title\" (click)=\"show = !show\" *ngIf=\"data.length > 2\">\r\n {{\r\n (show ? \"CREATE.SHOW_LESS\" : \"CREATE.SHOW_MORE\")\r\n | translate\r\n }}\r\n </span>\r\n</div>\r\n<div class=\"two-columns\" [class.show]=\"show\" *ngIf=\"data.length \">\r\n <ng-container *ngFor=\"let elem of data\">\r\n <div class=\"wrapper\">\r\n <span class=\"avatar-wrapper\">\r\n <cts-avatar [user]=\"elem\"></cts-avatar>\r\n </span>\r\n <span class=\"fullName\">\r\n {{ elem?.properties?.firstName }} {{ elem?.properties?.lastName }}\r\n </span>\r\n </div>\r\n </ng-container>\r\n</div>\r\n<div class=\"no-data-section\" *ngIf=\"data.length === 0\">\r\n {{\"CREATE.NO_USERS\" | translate}}\r\n</div>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { switchMap, tap } from 'rxjs/operators';\r\nimport { TranslationService } from '../../../Core/services/translation/translation.service';\r\nimport { Cacheable, LocalStorageStrategy } from 'ts-cacheable';\r\nimport { DocumentsService } from '../../documents/services/documents.service';\r\nimport {\r\n DepartmentApiService,\r\n departmentCacheBuster$,\r\n minute,\r\n} from '../../../components/dynamic-form/components/dynamic-form-department/services/department-api.service';\r\n\r\n@Component({\r\n selector: 'cts-department-viewer',\r\n templateUrl: './department-viewer.component.html',\r\n styleUrls: ['./department-viewer.component.scss'],\r\n})\r\nexport class DepartmentViewerComponent implements OnInit {\r\n departmentName: string;\r\n isArabic: boolean;\r\n loading: boolean;\r\n /** Label of field */\r\n @Input() label = '';\r\n /** Value of field */\r\n @Input() value = '';\r\n /** Vocabulary Key */\r\n @Input() dropdownId = '';\r\n /** is vertical */\r\n @Input() vertical = false;\r\n /** hide the label */\r\n @Input() withOutLabel = false;\r\n /**only text*/\r\n @Input() noStyle = false;\r\n constructor(\r\n private translation: TranslationService,\r\n private DepartmentApiService: DepartmentApiService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.translation.isArabic\r\n .pipe(\r\n tap((res) => (this.isArabic = res)),\r\n switchMap((res) => {\r\n return this.getDepartment(this.value);\r\n })\r\n )\r\n .subscribe(\r\n (res) => {\r\n console.log('results', res);\r\n if (res.entries.length > 0) {\r\n this.departmentName = this.isArabic\r\n ? res.entries[0].properties['dept:arabicName']\r\n : res.entries[0].properties['dept:englishName'];\r\n } else {\r\n this.departmentName = this.value;\r\n }\r\n },\r\n (err) => {\r\n this.departmentName = this.value;\r\n }\r\n );\r\n }\r\n\r\n getDepartment(id): Observable<any> {\r\n // return this.documentsService.getDocument(id);\r\n return this.DepartmentApiService.getDepartmentDetails(id);\r\n }\r\n}\r\n","<ng-container *ngIf=\"!noStyle\">\r\n <div\r\n class=\"my-dynamic-viewer\"\r\n [ngClass]=\"{ vertical: vertical === true, 'with-out-label': withOutLabel }\"\r\n >\r\n <div class=\"my-label\" *ngIf=\"!withOutLabel\">{{ label | translate }}</div>\r\n <div *ngIf=\"departmentName\" class=\"my-value\">\r\n {{ departmentName }}\r\n </div>\r\n </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"noStyle\">\r\n {{ departmentName }}\r\n</ng-container>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AvatarModule } from '../avatar/avatar.module';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { DataViewerComponent } from './data-viewer/data-viewer.component';\r\nimport { BooleanViewerComponent } from './boolean-viewer/boolean-viewer.component';\r\nimport { DropdownViewerComponent } from './dropdown-viewer/dropdown-viewer.component';\r\nimport { DateViewerComponent } from './date-viewer/date-viewer.component';\r\nimport { PipesModule } from '../../pipes/pipes.module';\r\nimport { ListViewerComponent } from './list-viewer/list-viewer.component';\r\nimport { DepartmentViewerComponent } from './department-viewer/department-viewer.component';\r\n/**\r\n * @title\r\n * Dynamic view module\r\n */\r\n@NgModule({\r\n declarations: [\r\n DataViewerComponent,\r\n BooleanViewerComponent,\r\n DropdownViewerComponent,\r\n DateViewerComponent,\r\n ListViewerComponent,\r\n DepartmentViewerComponent,\r\n ],\r\n imports: [CommonModule, TranslateModule, PipesModule, AvatarModule],\r\n exports: [\r\n DataViewerComponent,\r\n BooleanViewerComponent,\r\n DateViewerComponent,\r\n DropdownViewerComponent,\r\n ListViewerComponent,\r\n DepartmentViewerComponent\r\n ],\r\n})\r\nexport class DynamicViewModule {}\r\n","export class DocumentTemplatesConstants {\r\n public static pageProvider = {\r\n documentTemplates: {\r\n name: 'PP_CTDocumentTemplates',\r\n headers: {\r\n 'X-NXproperties': '*'\r\n },\r\n constants: {\r\n systemPathParamName: 'system_path',\r\n systemPathParamDefaultValue: '/default-domain/workspaces/CTS/CTS Templates',\r\n }\r\n },\r\n };\r\n public static operations = {\r\n parse: 'AC_UA_ParseTemplateDocument',\r\n render: 'AC_UA_RenderTemplateDocument',\r\n mergeAndParse: 'AC_UA_MergeAndParseTemplateDocument',\r\n mergeAndRender: 'AC_UA_MergeAndRenderTemplateDocument',\r\n reflectTemplateToCorrespondence: 'AC_UA_ReflectTemplateToCorrespondence'\r\n };\r\n public static quickFilters = {\r\n };\r\n public static vocabulary = {editorSidebarVoc: 'VOC_DocumentEditorCorrespondenceFields'};\r\n public static fields = {\r\n creator: 'dc:creator',\r\n content: 'file:content',\r\n title: 'dc:title',\r\n created: 'dc:created',\r\n major_version: 'uid:major_version',\r\n minor_version: 'uid:minor_version',\r\n };\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { combineLatest, from, Observable, ReplaySubject, Subject } from 'rxjs';\r\nimport { catchError, map, switchMap } from 'rxjs/operators';\r\nimport { AppConfigService } from '../../../configuration/app-config.service';\r\nimport { AdapterService } from '../../../Core/adapters/adapter.service';\r\nimport { NuxeoService } from '../../../Core/services/nuxeo/nuxeo.service';\r\nimport {DocumentTemplatesConstants} from '../constants/document-templates';\r\nimport {DocumentsConstants} from '../constants/documents';\r\nimport {HttpClient} from '@angular/common/http';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class DocumentTemplatesService {\r\n value = new ReplaySubject(1);\r\n reFetch = new Subject<boolean>();\r\n // templatesRootPath = '';\r\n constructor(\r\n private nuxeoService: NuxeoService,\r\n private documentsAdapter: AdapterService,\r\n private httpClient: HttpClient,\r\n @Inject('environment') private environment\r\n ) {\r\n }\r\n\r\n informValue(value): void {\r\n const arr = [];\r\n arr.push(value);\r\n this.value.next(value);\r\n }\r\n getDocumentTemplate(uid): Observable<any> {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .repository()\r\n .headers({\r\n ...DocumentTemplatesConstants.pageProvider.documentTemplates.headers,\r\n 'X-NXfetch-document': 'lock,dc:creator',\r\n 'X-NXenrichers-document': 'tags',\r\n })\r\n .fetch(uid)\r\n ).pipe(\r\n map((data: any) => {\r\n return this.documentsAdapter.adaptIn(data, DocumentTemplatesConstants.fields);\r\n }),\r\n catchError((err) => {\r\n throw err;\r\n })\r\n );\r\n }\r\n getDocumentTemplatesWithAggregation(params = {}): Observable<any> {\r\n if (!params) {\r\n params = {};\r\n }\r\n if (!params[DocumentTemplatesConstants.pageProvider.documentTemplates.constants.systemPathParamName]) {\r\n params[DocumentTemplatesConstants.pageProvider.documentTemplates.constants.systemPathParamName]\r\n = DocumentTemplatesConstants.pageProvider.documentTemplates.constants.systemPathParamDefaultValue;\r\n }\r\n return from(\r\n this.nuxeoService.nuxeoClient.repository().query(\r\n {\r\n pageProvider:\r\n DocumentTemplatesConstants.pageProvider.documentTemplates.name,\r\n ...params,\r\n },\r\n {\r\n headers:\r\n DocumentTemplatesConstants.pageProvider.documentTemplates.headers,\r\n }\r\n )\r\n ).pipe(\r\n map((data: any) => {\r\n data.entries.map((item) =>\r\n this.documentsAdapter.adaptIn(item, DocumentTemplatesConstants.fields)\r\n );\r\n return data;\r\n }),\r\n catchError((err) => {\r\n throw err;\r\n })\r\n );\r\n }\r\n parseTemplate(templateId): Observable<any> {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .operation(DocumentTemplatesConstants.operations.parse, {\r\n url: `${this.environment.nuxeo}${this.environment.customAutomation}`,\r\n })\r\n .input(templateId)\r\n .params({})\r\n .execute()\r\n ).pipe(\r\n catchError((err) => {\r\n console.log(err);\r\n throw err;\r\n })\r\n );\r\n }\r\n renderTemplate(templateId): Observable<any> {\r\n return this.httpClient.post(`${this.environment.nuxeo}${this.environment.customAutomation}/${DocumentTemplatesConstants.operations.render}`,\r\n {input: templateId}, {responseType: 'blob'}\r\n ).pipe(\r\n catchError((err) => {\r\n console.log(err);\r\n throw err;\r\n })\r\n );\r\n }\r\n mergeAndParseTemplate(templateId, mergeDocumentId): Observable<any> {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .operation(DocumentTemplatesConstants.operations.mergeAndParse, {\r\n url: `${this.environment.nuxeo}${this.environment.customAutomation}`,\r\n })\r\n .input(templateId)\r\n .params({})\r\n .context({\r\n mergeDocumentId\r\n })\r\n .execute()\r\n ).pipe(\r\n catchError((err) => {\r\n console.log(err);\r\n throw err;\r\n })\r\n );\r\n }\r\n mergeAndRenderTemplate(templateId, mergeDocumentId): Observable<any> {\r\n return this.httpClient.post(`${this.environment.nuxeo}${this.environment.customAutomation}/${DocumentTemplatesConstants.operations.mergeAndRender}`,\r\n {input: templateId, context: {mergeDocumentId}}, {responseType: 'blob'}\r\n ).pipe(\r\n catchError((err) => {\r\n console.log(err);\r\n throw err;\r\n })\r\n );\r\n }\r\n reflectTemplateToCorrespondence(correspondenceId): Observable<any> {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .operation(DocumentTemplatesConstants.operations.reflectTemplateToCorrespondence, {\r\n url: `${this.environment.nuxeo}${this.environment.customAutomation}`,\r\n })\r\n .input(correspondenceId)\r\n .params({})\r\n .context({\r\n })\r\n .execute()\r\n ).pipe(\r\n catchError((err) => {\r\n console.log(err);\r\n throw err;\r\n })\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as momentjs from 'moment';\r\nimport * as moment_ from 'moment-hijri';\r\nconst moment = momentjs;\r\nconst momentHijri = moment_;\r\n\r\n@Injectable(\r\n {\r\n providedIn: 'root'\r\n }\r\n)\r\nexport class DateHelperService {\r\n constructor() {\r\n\r\n }\r\n gregorianToHijri(dateString, format = 'iYYYY-iMM-iD') {\r\n return momentHijri(dateString, '').locale('en').format(format)\r\n }\r\n hijriToGregorian(dateString, format = 'YYYY-MM-DDThh:mm:ss.000Z') {\r\n return momentHijri(dateString, 'iYYYY-iM-iDThh:mm:ss.000Z').locale('en').format(format)\r\n }\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { ColumnMode, SelectionType } from '@swimlane/ngx-datatable/public-api';\r\nimport { NuxeoService } from '../../../Core/services/nuxeo/nuxeo.service';\r\n/**\r\n * this component is a multi-purpose dynamically generated dumb data table that can be configured to show any list of data,\r\n * for more information on configuring the table\r\n * and the json structure for the inputs please check [Configuration File]{@link ../additional-documentation/config-file.html}\r\n * ![Screenshot-1](../screenshots/dynamicTable.png)\r\n *\r\n * ### related Links:\r\n * - [Pagination Component]{@link PaginationComponent}\r\n * - [Dynamic Table]{@link DynamicTableComponent}\r\n * - [Configuration File]{@link ../additional-documentation/config-file.html}\r\n *\r\n * @title\r\n * Data Table\r\n *\r\n * @example\r\n *\r\n * <cts-table\r\n * [rows]=\"rows\"\r\n * [columns]=\"columns\"\r\n * [responsiveColumns]=\"responsiveColumns\"\r\n * [rowCursor]=\"rowCursor\"\r\n * [fullWidth]=\"fullWidth\"\r\n * [entityType]=\"entityType\"\r\n * [prefix]=\"prefix\"\r\n * [totalRecords]=\"totalRecords\"\r\n * [tableMode]=\"tableMode\"\r\n * [tableActions]=\"tableActions\"\r\n * (onRowSelected)=\"rowDetails($event)\"\r\n * (actionOnRow)=\"performAction($event)\"\r\n * (onSorting)=\"onSort($event)\"\r\n * ></cts-table>\r\n *\r\n */\r\n@Component({\r\n selector: 'cts-table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class TableComponent implements OnInit {\r\n /** event to emit when selecting single row */\r\n @Output() onRowSelected = new EventEmitter();\r\n /** event to emit when selecting single row Icon */\r\n @Output() onIconSelected = new EventEmitter();\r\n /** event to emit when perform action on row (delte, edit, ... ) */\r\n @Output() actionOnRow = new EventEmitter();\r\n /** event t emit when sorting table */\r\n @Output() onSorting = new EventEmitter();\r\n /** aray of rows passed from out side the component */\r\n @Input() rows;\r\n /** array of columns paased from out side the component */\r\n @Input() columns;\r\n /** array of columns paased from out side the component for smaller screens */\r\n @Input() responsiveColumns;\r\n /** to define the page in which table is being used */\r\n @Input() entityType: string;\r\n /** static path for translation passed from out side according to each page translation path */\r\n @Input() prefix = '';\r\n /** @deprecated */\r\n @Input() pageCount;\r\n /** Total Recordscount */\r\n @Input() totalRecords;\r\n /** @deprecated */\r\n @Input() rowCursor = false;\r\n /** Max full width in PX | auto */\r\n @Input() fullWidth = 'auto';\r\n /** Vocabulary Translation prefix */\r\n @Input() vocItemTranslationPrefix;\r\n /** Table Mode: list | card */\r\n @Input() tableMode = 'list';\r\n /** action to be in card mode */\r\n @Input() tableActions;\r\n @Input() defultSort = null;\r\n tableWidth = 'auto';\r\n tableColumns = [];\r\n currentRow;\r\n selected = [];\r\n pageNumber = 1;\r\n\r\n constructor(public nuxeoService : NuxeoService) { }\r\n\r\n ngOnInit(): void {\r\n this.onResize(window.innerWidth);\r\n }\r\n\r\n // function to be executed when clicking on single row\r\n rowDetails(event) {\r\n if (event.type !== 'mouseenter') {\r\n if (event.type === 'click' && event.column.prop !== '') {\r\n this.currentRow = event.row;\r\n this.onRowSelected.emit(this.currentRow);\r\n }\r\n }\r\n }\r\n iconSelected(event: MouseEvent, row) {\r\n event.stopPropagation();\r\n this.onIconSelected.emit(row);\r\n }\r\n\r\n //function to handle all operations on single row (delete , edit , ...)\r\n performAction(singleRow, actionType) {\r\n this.actionOnRow.emit({\r\n type: actionType,\r\n row: singleRow,\r\n });\r\n }\r\n\r\n // handle checkbox if table has ones\r\n onSelect(event) {\r\n // console.log('on select row click');\r\n }\r\n\r\n // handle sorting functionality of the table\r\n onSort(event) {\r\n let sort = {\r\n sortBy: event.column.headerClass,\r\n sortOrder: event.newValue,\r\n };\r\n this.onSorting.emit(sort);\r\n }\r\n\r\n assignTableColumns(event) {\r\n this.onResize(event.target.innerWidth);\r\n }\r\n\r\n onResize(width) {\r\n if (width > 1400) {\r\n this.tableWidth = 'auto';\r\n } else {\r\n this.tableWidth = this.fullWidth;\r\n }\r\n if (width < 768) {\r\n this.tableColumns = [];\r\n this.tableColumns = this.responsiveColumns;\r\n } else {\r\n this.tableColumns = [];\r\n this.tableColumns = this.columns;\r\n }\r\n }\r\n\r\n cardSelected(card) {\r\n this.onRowSelected.emit(card);\r\n }\r\n}\r\n","<div [style]=\"'width:' + tableWidth\" *ngIf=\"tableMode === 'list'\">\r\n <ngx-datatable\r\n class=\"large-table\"\r\n [rows]=\"rows\"\r\n [columnMode]=\"'force'\"\r\n [externalSorting]=\"true\"\r\n (activate)=\"rowDetails($event)\"\r\n (select)=\"onSelect($event)\"\r\n (sort)=\"onSort($event)\"\r\n (window:resize)=\"assignTableColumns($event)\"\r\n [rowHeight]=\"'auto'\"\r\n [selected]=\"selected\"\r\n [selectionType]=\"'single'\"\r\n [sorts]=\"[{ prop: defultSort?.name, dir: defultSort?.dir }]\"\r\n >\r\n <!-- | translate -->\r\n <ng-container *ngFor=\"let column of tableColumns; let i = index\">\r\n <ngx-datatable-column\r\n *ngIf=\"column.display\"\r\n [sortable]=\"column.sortable\"\r\n [name]=\"prefix + column.name | translate\"\r\n [prop]=\"column.prop\"\r\n [resizeable]=\"false\"\r\n [draggable]=\"false\"\r\n [maxWidth]=\"column.size\"\r\n [headerClass]=\"column.headerClass ? column.headerClass : ''\"\r\n >\r\n <ng-template\r\n let-row=\"row\"\r\n let-value=\"value\"\r\n let-index=\"index\"\r\n ngx-datatable-cell-template\r\n >\r\n <ng-container *ngIf=\"column.type === 'text'\">\r\n <div class=\"cell-text-wrapper\">\r\n {{ value ? value : \"--\" }}\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"column.type === 'vocabulary'\">\r\n <div class=\"cell-text-wrapper\">\r\n <cts-dropdown-viewer\r\n [withOutLabel]=\"true\"\r\n [value]=\"value\"\r\n [dropdownId]=\"column.vocabularyId\"\r\n ></cts-dropdown-viewer>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"column.type === 'VocCell'\">\r\n <div class=\"cell-text-wrapper\">\r\n {{ (value ? column.vocabularyId + '.' + value : \"--\") | translate }}\r\n </div>\r\n </ng-container>\r\n \r\n <ng-container *ngIf=\"column.type === 'VocItem'\">\r\n <div class=\"cell-text-wrapper\">\r\n {{ vocItemTranslationPrefix + value | translate }}\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"column.type === 'department'\">\r\n <div class=\"cell-text-wrapper\">\r\n <cts-department-viewer\r\n [noStyle]=\"true\"\r\n [value]=\"value\"\r\n >\r\n </cts-department-viewer>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"column.type === 'status'\">\r\n <div class=\"status-wrapper\">\r\n <span class=\"value {{ value }}\">{{\r\n \"STATS.\" + value | translate\r\n }}</span>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"column.type === 'role'\">\r\n <div class=\"cell-text-wrapper\">\r\n {{ \"role.\" + (value ? value : \"--\") | translate }}\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"column.type === 'direction'\">\r\n <div\r\n (click)=\"iconSelected($event, row)\"\r\n class=\"status-wrapper {{ value }} {{ row.state }}\"\r\n >\r\n <span matTooltip=\"{{ 'STATS.' + row.state | translate }}\">\r\n <i\r\n class=\"bi bi-box-arrow-down\"\r\n *ngIf=\"row.type === 'IncomingCorrespondence'\"\r\n ></i>\r\n <i\r\n class=\"bi bi-box-arrow-up outgoing\"\r\n *ngIf=\"row.type === 'OutgoingCorrespondence'\"\r\n ></i>\r\n </span>\r\n <!-- <span class=\"value {{ value }}\">{{ \"STATS.\" + value | translate }}</span> -->\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"column.type === 'actions' && rows.length !== 0\">\r\n <div class=\"actions-wrapper\">\r\n <!-- <span class=\"bi bi-trash delete-icon\" (click)=\"performAction(row , 'delete')\"></span> -->\r\n <i\r\n class=\"bi bi-pencil-square edit-icon\"\r\n matTooltip=\"{{ 'UPDATE' | translate }}\"\r\n (click)=\"performAction(row, 'edit')\"\r\n *ngIf=\"entityType === 'voc-table'\"\r\n ></i>\r\n <i\r\n class=\"bi bi-trash\"\r\n matTooltip=\"{{ 'delete' | translate }}\"\r\n (click)=\"performAction(row, 'delete')\"\r\n *ngIf=\"\r\n entityType === 'voc-table' || entityType === 'department' ||\r\n entityType === 'signers'\r\n \"\r\n ></i>\r\n\r\n <i\r\n class=\"bi bi-plus-square\"\r\n matTooltip=\"{{ 'USER_MANGMENT.addToDepartment' | translate }}\"\r\n (click)=\"performAction(row, 'delete')\"\r\n *ngIf=\"entityType === 'users' && row.isInitial\"\r\n ></i>\r\n \r\n <span *ngFor=\"let action of column.actions\">\r\n <i\r\n *permission=\"{ name: action.permission, entity: row , user: nuxeoService.nuxeoClient.user}\"\r\n class=\"{{ action.icon }}\"\r\n matTooltip=\"{{ action.tooltip | translate }}\"\r\n (click)=\"performAction(row, action.actionName)\"\r\n ></i>\r\n </span>\r\n\r\n <!-- <i\r\n *permission=\"{ name: 'registerCorrespondance', entity: row }\"\r\n class=\"bi bi-box-arrow-in-right\"\r\n matTooltip=\"{{ 'LISTING.REGISTER' | translate }}\"\r\n (click)=\"performAction(row, 'register')\"\r\n ></i>\r\n <i\r\n *permission=\"{ name: 'sendCorrespondance', entity: row }\"\r\n class=\"bi bi-envelope\"\r\n matTooltip=\"{{ 'LISTING.SEND' | translate }}\"\r\n (click)=\"performAction(row, 'send')\"\r\n ></i>\r\n <i\r\n *permission=\"{ name: 'closeCorrespondance', entity: row }\"\r\n class=\"bi bi-x-circle\"\r\n matTooltip=\"{{ 'LISTING.CLOSE' | translate }}\"\r\n (click)=\"performAction(row, 'close')\"\r\n ></i>\r\n <i\r\n *permission=\"{ name: 'archiveCorrespondance', entity: row }\"\r\n class=\"bi bi-folder-symlink\"\r\n matTooltip=\"{{ 'LISTING.ARCHIVE' | translate }}\"\r\n (click)=\"performAction(row, 'archive')\"\r\n ></i> -->\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"column.type === 'date'\">\r\n <div class=\"cell-text-wrapper\">\r\n <cts-date-viewer\r\n [withOutLabel]=\"true\"\r\n [value]=\"value\"\r\n ></cts-date-viewer>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n </ng-container>\r\n </ngx-datatable>\r\n</div>\r\n\r\n<div *ngIf=\"tableMode === 'card'\">\r\n <div class=\"cards-container\">\r\n <div class=\"single-card\" *ngFor=\"let row of rows\">\r\n <div class=\"memo-title\">\r\n <span>\r\n {{ row.properties.referenceNumber }}\r\n </span>\r\n <span class=\"action-wrap\">\r\n <span class=\"action\" *ngFor=\"let action of tableActions\">\r\n <i\r\n *permission=\"{ name: action.permission, entity: row , user: nuxeoService.nuxeoClient.user}\"\r\n class=\"{{ action.icon }}\"\r\n matTooltip=\"{{ action.tooltip | translate }}\"\r\n (click)=\"performAction(row, action.actionName)\"\r\n ></i>\r\n </span>\r\n <button\r\n *permission=\"{ name: 'deleteMemo', entity: row , user: nuxeoService.nuxeoClient.user}\"\r\n (click)=\"performAction(row, 'deleteMemo')\"\r\n >\r\n <i\r\n class=\"bi bi-trash\"\r\n matTooltip=\"{{ 'LISTING.ONLY_DELETE' | translate }}\"\r\n ></i>\r\n </button>\r\n <span\r\n class=\"publish-state\"\r\n *permission=\"{ name: 'memoPublished', entity: row , user: nuxeoService.nuxeoClient.user}\"\r\n >\r\n {{ \"MEMOS.PUBLISHED\" | translate }}\r\n </span>\r\n </span>\r\n </div>\r\n <div\r\n class=\"memo-body\"\r\n *ngFor=\"let property of columns\"\r\n (click)=\"cardSelected(row)\"\r\n >\r\n <div class=\"key\">{{ prefix + property.key | translate }}</div>\r\n <div class=\"value\">\r\n <div class=\"text\" *ngIf=\"property.type === 'text'\">\r\n {{ row.properties[property.value] }}\r\n </div>\r\n <div class=\"text\" *ngIf=\"property.type === 'date'\">\r\n {{ row.properties[property.value] | localizedDate: \"MMMM d, y\" }}\r\n <!-- <cts-date-viewer [withOutLabel]=\"true\" [value]=\"row.properties[property.value]\" ></cts-date-viewer> -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { NgxDatatableModule } from '@swimlane/ngx-datatable';\r\nimport { PipesModule } from '../../pipes/pipes.module';\r\nimport { TableComponent } from './table/table.component';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { DirectiveModule } from '../../directive/directive.module';\r\nimport { DynamicViewModule } from '../dynamic-view/dynamic-view.module';\r\n\r\n/**\r\n * @title\r\n * Table Module\r\n */\r\n@NgModule({\r\n declarations: [TableComponent],\r\n imports: [\r\n CommonModule,\r\n NgxDatatableModule,\r\n PipesModule,\r\n TranslateModule,\r\n MatTooltipModule,\r\n DirectiveModule,\r\n DynamicViewModule,\r\n MatTooltipModule\r\n ],\r\n exports:[\r\n TableComponent,\r\n NgxDatatableModule\r\n ]\r\n})\r\nexport class TableModule { }\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\n\r\n/**\r\n * Dyanamic filter is a component that leverages Nuxeo Elastic search aggregation buckets data to dynamically\r\n * generate data filtering checkbox groups & emits checkbox selection for consumption\r\n * @title\r\n * Dynamic Filter\r\n *\r\n * @example\r\n *\r\n * <cts-dynamic-filter\r\n * [entityType]=\"entityType\"\r\n * [filters]=\"aggregationBuckets\"\r\n * [id]=\"aggregationId\"\r\n * [selections]=\"aggregationSelection\"\r\n * [title]=\"aggregationField\"\r\n * [prefix]=\"'search'\"\r\n * (onFilterSelected)=\"FilterSelected($event)\">\r\n * </cts-dynamic-filter>\r\n */\r\n@Component({\r\n selector: 'cts-dynamic-filter',\r\n templateUrl: './dynamic-filter.component.html',\r\n styleUrls: ['./dynamic-filter.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class DynamicFilterComponent implements OnInit {\r\n /** emits array of filters */\r\n @Output() onFilterSelected = new EventEmitter();\r\n public _selections;\r\n\r\n /** title of the filters group */\r\n @Input()\r\n title = '';\r\n @Input()\r\n /** filters group */\r\n filters;\r\n /** new filters coming from the backend based on the selection */\r\n @Input()\r\n set selections(val) {\r\n this._selections = val;\r\n }\r\n /** Aggregation ID */\r\n @Input()\r\n id;\r\n @Input()\r\n entityType;\r\n /** static path for translation passed from out side according to each page translation path */\r\n @Input()\r\n prefix;\r\n /** special type for department */\r\n @Input()\r\n department: boolean = false;\r\n more = false;\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n\r\n onFilterSelect(committeeName, e) {\r\n if (e) {\r\n this._selections.push(committeeName);\r\n this.onFilterSelected.emit({\r\n filter: {\r\n [this.id]: JSON.stringify([...this._selections]),\r\n },\r\n type: this.entityType,\r\n });\r\n } else {\r\n this._selections = this._selections.filter((e) => {\r\n return e != committeeName;\r\n });\r\n this.onFilterSelected.emit({\r\n filter: {\r\n [this.id]: JSON.stringify([...this._selections]),\r\n },\r\n type: this.entityType,\r\n });\r\n }\r\n }\r\n\r\n EntityType(fetchedKey) {\r\n if (!this.department) {\r\n const typeObj = typeof fetchedKey === 'object' && fetchedKey !== null;\r\n if (typeObj) {\r\n return fetchedKey['entity-type'];\r\n } else {\r\n return false;\r\n }\r\n }else {\r\n return 'department'\r\n }\r\n }\r\n}\r\n","<div class=\"aggregation-container\">\r\n <div class=\"search-title\">\r\n {{ prefix + \".\" + title | translate }}\r\n </div>\r\n <ng-container *ngIf=\"filters\">\r\n <ng-container *ngFor=\"let group of filters; index as i\">\r\n <div *ngIf=\"i < 5 || more\" class=\"search-checkbox\">\r\n <!-- <input\r\n [checked]=\"_selections.includes(group.key)\"\r\n type=\"checkbox\"\r\n (change)=\"onFilterSelect(group.key, $event.target.checked)\"\r\n /> -->\r\n <!-- <div class=\"mx-8\">\r\n <span [ngSwitch]=\"EntityType(group.fetchedKey)\">\r\n <span *ngSwitchCase=\"'directoryEntry'\">\r\n {{\r\n \"vocabulary.\" + group.fetchedKey.directoryName + \".\" + group.key\r\n | translate\r\n }}\r\n </span>\r\n <span *ngSwitchCase=\"'user'\">\r\n {{\r\n group.fetchedKey.properties.firstName +\r\n \" \" +\r\n group.fetchedKey.properties.lastName\r\n }}\r\n </span>\r\n <span *ngSwitchDefault>\r\n {{ prefix + \".\" + \"buckets.\" + group.key | translate }}\r\n </span>\r\n </span>\r\n <bdi>({{ group.docCount }})</bdi>\r\n </div> -->\r\n <mat-checkbox\r\n [checked]=\"_selections.includes(group.key)\"\r\n (change)=\"onFilterSelect(group.key, $event.checked)\"\r\n >\r\n <span [ngSwitch]=\"EntityType(group.fetchedKey)\">\r\n <span *ngSwitchCase=\"'directoryEntry'\">\r\n {{\r\n \"vocabulary.\" + group.fetchedKey.directoryName + \".\" + group.key\r\n | translate\r\n }}\r\n </span>\r\n <span *ngSwitchCase=\"'user'\">\r\n {{\r\n group.fetchedKey.properties.firstName +\r\n \" \" +\r\n group.fetchedKey.properties.lastName\r\n }}\r\n </span>\r\n <span *ngSwitchCase=\"'department'\">\r\n <cts-department-viewer\r\n [noStyle]=\"true\"\r\n [value]=\"group.key\"\r\n >\r\n </cts-department-viewer>\r\n <!-- {{group.key}} -->\r\n </span>\r\n <span *ngSwitchDefault>\r\n {{ prefix + \".\" + \"buckets.\" + group.key | translate }}\r\n </span>\r\n </span>\r\n <bdi>({{ group.docCount }})</bdi></mat-checkbox\r\n >\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"filters.length > 5\" class=\"more\">\r\n <button class=\"btn-more\" (click)=\"more = !more\">\r\n {{\r\n more\r\n ? (prefix + \".\" + \"viewless\" | translate)\r\n : (prefix + \".\" + \"viewmore\" | translate)\r\n }}\r\n </button>\r\n </div>\r\n </ng-container>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DynamicFilterComponent } from './dynamic-filter/dynamic-filter.component';\r\nimport { PipesModule } from '../../pipes/pipes.module';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { DynamicViewModule } from '../dynamic-view/dynamic-view.module';\r\n\r\n/**\r\n * @title\r\n * Dynamic Filter Module\r\n */\r\n@NgModule({\r\n declarations: [DynamicFilterComponent],\r\n imports: [CommonModule, PipesModule, TranslateModule, MatCheckboxModule , DynamicViewModule],\r\n exports: [DynamicFilterComponent],\r\n})\r\nexport class DynamicFilterModule {}\r\n","import { Injectable , EventEmitter} from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DynamicTableService {\r\n refreshData = new EventEmitter();\r\n constructor() { }\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { from, Subscription } from 'rxjs';\r\nimport { catchError, filter, map } from 'rxjs/operators';\r\nimport { CallApiService } from '../../../Core/services/callApi/call-api.service';\r\nimport { AdapterService } from '../../../Core/adapters/adapter.service';\r\nimport { DynamicTableService } from '../services/dynamic-table.service';\r\n/**\r\n * this component is an additional layer that uses [Table Component]{@link TableComponent} internally,\r\n * you can use this component to configure a page provider listing out of the box easily,\r\n * and it will handle all of the basic features such as getting data from API, Listing, Pagination, sorting and filtering\r\n * ![Screenshot-1](../screenshots/dynamicTable.png)\r\n * @title\r\n * Dynamic Table\r\n * @example\r\n *\r\n * <cts-dynamic-table\r\n * [columns]=\"columns\"\r\n * [responsiveColumns]=\"responsiveColumns\"\r\n * [fullWidth]=\"fullWidth\"\r\n * [pageSize]=\"PageSize\"\r\n * [pageProvider]=\"pageProvider\"\r\n * [quickFilter]=\"filter\"\r\n * [sortingBy]=\"sortingBy\"\r\n * [entityType]=\"'all'\"\r\n * [fields]=\"fields\"\r\n * [prefix]=\"prefix\"\r\n * [rowCursor]=\"true\"\r\n * [queryParam]=\"queryParam\"\r\n * [headers]=\"headers\"\r\n * (onRowSelected)=\"openViewer($event)\"\r\n * (actionOnRow)=\"performAction($event)\">\r\n * </cts-dynamic-table>\r\n */\r\n@Component({\r\n selector: 'cts-dynamic-table',\r\n templateUrl: './dynamic-table.component.html',\r\n styleUrls: ['./dynamic-table.component.scss'],\r\n})\r\n\r\nexport class DynamicTableComponent implements OnInit, OnDestroy {\r\n /** event to emit when selecting single row */\r\n @Output() onRowSelected = new EventEmitter();\r\n /** event to emit when perform action on row (delte, edit, ... ) */\r\n @Output() actionOnRow = new EventEmitter();\r\n /** event to emit to the higher level when getting data from api is finished */\r\n @Output() onGettingData = new EventEmitter();\r\n /** Array of columns */\r\n @Input() columns;\r\n /** Array of columns on smaller screens */\r\n @Input() responsiveColumns?;\r\n /** Defines the page in which table is being used */\r\n @Input() entityType: string;\r\n /** Translations prefix */\r\n @Input() prefix = '';\r\n /** Headers to be sent with API Request */\r\n @Input() headers;\r\n /** Fields keymap to be mapped in the adapter */\r\n @Input() fields;\r\n /** Page Provider name that will be used to retrieve data */\r\n @Input() pageProvider;\r\n /** Controls number of items per page in table */\r\n @Input() pageSize;\r\n /** Sorting column */\r\n @Input() sortingBy?= {};\r\n @Input() queryParam?= {};\r\n @Input() quickFilter?;\r\n /** Controls if it report page */\r\n @Input() report;\r\n /** to make cursor when hover on row or not */\r\n @Input() rowCursor?;\r\n @Input() fullWidth?= 'auto';\r\n /** 'list' for noraml table 'card' for cards mode like in memos */\r\n @Input() tableMode = 'list';\r\n /** action to be used in case of card mode */\r\n @Input() tableActions;\r\n @Input() defultSort = [{ prop: 'properties.createdAt' , dir: 'desc' }];\r\n @Input() range;\r\n filterParams = {};\r\n pageNum = 1;\r\n rows = [];\r\n totalRecords = 0;\r\n myDataSubscription: Subscription;\r\n loading;\r\n sorting = false;\r\n constructor(\r\n private adapter: AdapterService,\r\n private callApi: CallApiService,\r\n private dynamicTableService: DynamicTableService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.myDataSubscription = this.dynamicTableService.refreshData.subscribe(filterData => {\r\n if (filterData) {\r\n this.filterParams = { ...filterData };\r\n // reset page number when start new filtering\r\n this.pageNum = 1;\r\n }\r\n this.getData();\r\n });\r\n this.getData();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.myDataSubscription ? this.myDataSubscription.unsubscribe() : '';\r\n }\r\n\r\n ngOnChanges(simpleChange: SimpleChanges) {\r\n const isFirstChange = Object.values(simpleChange).some((c) =>\r\n c.isFirstChange()\r\n );\r\n if (isFirstChange) {\r\n return;\r\n }\r\n if (\r\n (simpleChange.queryParam &&\r\n simpleChange.queryParam.previousValue !==\r\n simpleChange.queryParam.currentValue) ||\r\n (simpleChange.quickFilter &&\r\n simpleChange.quickFilter.previousValue !==\r\n simpleChange.quickFilter.currentValue)\r\n ) {\r\n this.pageNum = 1; // reset page number befor recalling api with filters\r\n this.getData();\r\n }\r\n }\r\n\r\n getData() {\r\n this.loading = true;\r\n let params = {\r\n ...this.filterParams, // used to get filter data and set it in our params\r\n ...this.queryParam, // used to get params from our config\r\n ...this.sortingBy,\r\n ...this.quickFilter,\r\n currentPageIndex: this.pageNum - 1,\r\n pageSize: this.pageSize,\r\n offset: 0,\r\n dublincore_created_agg: this.range\r\n };\r\n\r\n // don't refresh all table in case of sorting only\r\n if (!this.sorting) { // used to not refreshing all table in case of sorting since table lose sorting state when refresh all table\r\n this.rows = []; // used to refresh table to feel changes in actions when perform action and need to refresh actions\r\n }\r\n this.sorting = false; // reset sorting status to false and for next sorting func sorting set it to true again\r\n this.callApi\r\n .query(\r\n {\r\n pageProvider: this.pageProvider,\r\n ...params,\r\n },\r\n {\r\n headers: this.headers,\r\n }\r\n )\r\n .pipe(\r\n map((data: any) => {\r\n data.entries.map((item) => this.adapter.adaptIn(item, this.fields));\r\n return data;\r\n }),\r\n catchError((err) => {\r\n throw err;\r\n })\r\n )\r\n .subscribe((res) => {\r\n this.loading = false;\r\n res.entries.forEach((element) => {\r\n console.log(\"element\", element);\r\n if (element.properties && element.properties?.creator && element.properties.creator?.properties) {\r\n element.properties.creator =\r\n element.properties.creator?.properties?.firstName +\r\n ' ' +\r\n element.properties.creator?.properties?.lastName;\r\n }\r\n if (element.properties && element.properties?.assignee) {\r\n element.properties.assignee = element.properties?.assignee.fullName\r\n }\r\n });\r\n this.totalRecords = res.resultsCount;\r\n this.rows = res.entries;\r\n console.log(\"data\", res.entries)\r\n this.onGettingData.emit(res);\r\n });\r\n }\r\n\r\n // function to be executed when clicking on single row\r\n rowDetails(event) {\r\n this.onRowSelected.emit(event);\r\n }\r\n\r\n //function to handle all operations on single row (delete , edit , ...)\r\n performAction(action) {\r\n this.actionOnRow.emit(action);\r\n }\r\n\r\n // handle sorting functionality of the table\r\n onSort(sortObject) {\r\n this.sortingBy = sortObject;\r\n this.sorting = true;\r\n this.getData();\r\n }\r\n\r\n public PaginationChange(event) {\r\n this.pageNum = event;\r\n this.getData();\r\n }\r\n}\r\n","<div class=\"wrapping\">\r\n <div class=\"table-reposition\">\r\n <cts-table\r\n *ngIf=\"rows.length\"\r\n [rows]=\"rows\"\r\n [columns]=\"columns\"\r\n [responsiveColumns]=\"responsiveColumns\"\r\n [rowCursor]=\"rowCursor\"\r\n [fullWidth]=\"fullWidth\"\r\n [entityType]=\"entityType\"\r\n [prefix]=\"prefix\"\r\n [totalRecords]=\"totalRecords\"\r\n [tableMode]=\"tableMode\"\r\n [tableActions]=\"tableActions\"\r\n [defultSort]=\"defultSort\"\r\n (onRowSelected)=\"rowDetails($event)\"\r\n (actionOnRow)=\"performAction($event)\"\r\n (onSorting)=\"onSort($event)\"\r\n ></cts-table>\r\n </div>\r\n <ng-container *ngIf=\"loading\">\r\n <cts-spinner></cts-spinner>\r\n </ng-container>\r\n <div\r\n class=\"d-flex justify-content-center align-items-center my-3\"\r\n *ngIf=\"rows.length\"\r\n >\r\n <cts-pagination\r\n [page]=\"pageNum\"\r\n (change)=\"PaginationChange($event)\"\r\n [size]=\"pageSize\"\r\n [count]=\"totalRecords\"\r\n ></cts-pagination>\r\n </div>\r\n\r\n <div class=\"empty-state\" *ngIf=\"rows.length === 0\">\r\n <div class=\"text\">{{ 'noData' | translate}}</div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DynamicTableComponent } from './dynamic-table/dynamic-table.component';\r\nimport { TableModule } from '../table/table.module';\r\nimport { PaginationModule } from '../../components/pagination/pagination.module';\r\nimport { LibrarySharedModule } from '../../shared/libraryShared.module';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n\r\n/**\r\n * @title\r\n * Dynamic Table API\r\n */\r\n@NgModule({\r\n declarations: [DynamicTableComponent],\r\n imports: [\r\n CommonModule,\r\n TableModule,\r\n PaginationModule,\r\n LibrarySharedModule,\r\n TranslateModule\r\n ],\r\n exports:[\r\n DynamicTableComponent\r\n ]\r\n})\r\nexport class DynamicTableModule { }\r\n","import { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { FormGroup, FormControl } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { DocumentsConstants } from '../../../components/documents/constants/documents';\r\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\r\nimport * as _ from 'lodash';\r\n\r\n/**\r\n * Dynamic search component uses [Dynamic Table]{@link DynamicTableComponent} & [Dynamic Filter]{@link DynamicFilterComponent} internally,\r\n * and utilizes its inputs to perform advanced search and filtering on any nuxeo Provider\r\n * @title\r\n * Dynamic Search\r\n *\r\n * @example\r\n * <cts-dynamic-search\r\n * [pageProvider]=\"'pageProviderName'\"\r\n * [columns]=\"columnsArray\"\r\n * [responsiveColumns]=\"responsiveColumnsArray\"\r\n * [entityType]=\"'documents'\"\r\n * [prefix]=\"prefix\"\r\n * [fields]=\"fields\"\r\n * [headers]=\"headers\"\r\n * [sortingBy]=\"sortingBy\"\r\n * [pageSize]=\"PageSize\"\r\n * >\r\n * </cts-dynamic-search>\r\n */\r\n@Component({\r\n selector: 'cts-dynamic-search',\r\n templateUrl: './dynamic-search.component.html',\r\n styleUrls: ['./dynamic-search.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class DynamicSearchComponent implements OnInit {\r\n text: string;\r\n aggregations;\r\n /** Array of columns */\r\n @Input() columns;\r\n /** Array of columns on smaller screens */\r\n @Input() responsiveColumns?;\r\n /** Defines the page in which table is being used */\r\n @Input() entityType: string;\r\n /** Translations prefix */\r\n @Input() prefix = '';\r\n /** Headers to be sent with API Request */\r\n @Input() headers;\r\n /** Fields keymap to be mapped in the adapter */\r\n @Input() fields;\r\n /** Page Provider name that will be used to retrieve data */\r\n @Input() pageProvider;\r\n /** Controls number of items per page in table */\r\n @Input() pageSize;\r\n /** Sorting column */\r\n @Input() sortingBy?= {};\r\n\r\n queryParams = {};\r\n filter;\r\n filters;\r\n searchForm = new FormGroup({\r\n text: new FormControl(null),\r\n });\r\n loading = false;\r\n totalRecords;\r\n openFilter: boolean;\r\n @Input()\r\n sortingArray;\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n public breakpointObserver: BreakpointObserver\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.text = this.route.snapshot.queryParams['search_query'];\r\n this.searchInputPopulate();\r\n this.updateQueryParams({ system_fulltext: this.text });\r\n this.route.queryParams.subscribe((params) => {\r\n if (\r\n (this.text !== params['search_query'] && params['search_query']) ||\r\n (params['search_query']?.length == 0 &&\r\n this.text !== params['search_query'])\r\n ) {\r\n this.text = params['search_query'];\r\n this.searchInputPopulate();\r\n this.updateQueryParams({ system_fulltext: this.text });\r\n }\r\n });\r\n this.breakpoint();\r\n }\r\n\r\n updateQueryParams(newQueryparams: object) {\r\n this.queryParams = {\r\n ...this.queryParams,\r\n ...newQueryparams,\r\n };\r\n }\r\n\r\n searchInputPopulate() {\r\n this.searchForm.patchValue({\r\n text: this.text,\r\n });\r\n }\r\n FilterSelected(val: any) {\r\n this.loading = true;\r\n this.filters = { ...this.filters, ...val.filter }; //store filters\r\n this.updateQueryParams(this.filters);\r\n }\r\n\r\n paginationChange(event) { }\r\n\r\n getTableData(data) {\r\n this.loading = false;\r\n this.aggregations = Object.entries(data.aggregations).map((item) => {\r\n return item[1];\r\n });\r\n this.aggregations = this.aggregations.filter((item) =>\r\n this.sortingArray.includes(item.id)\r\n );\r\n this.aggregations = _.sortBy(this.aggregations, (item) => {\r\n return this.sortingArray.indexOf(item.id);\r\n });\r\n console.log('aggregations', this.aggregations);\r\n this.totalRecords = data.totalSize;\r\n }\r\n submitForm() {\r\n this.router.navigate(['.'], {\r\n relativeTo: this.route,\r\n queryParams: {\r\n search_query: this.searchForm.controls.text.value,\r\n },\r\n });\r\n }\r\n\r\n openViewer(row) {\r\n this.router.navigate([{ outlets: { viewer: ['view', row['uid']] } }], {\r\n queryParams: { location: this.router.url },\r\n });\r\n }\r\n onOpenFilter() {\r\n this.openFilter = !this.openFilter;\r\n }\r\n\r\n breakpoint() {\r\n this.breakpointObserver\r\n .observe(['(min-width: 1200px)'])\r\n .subscribe((result) => {\r\n if (result.matches) {\r\n this.openFilter = false;\r\n }\r\n });\r\n }\r\n}\r\n","<div class=\"search-toolbar d-md-flex d-xl-none\">\r\n <button (click)=\"onOpenFilter()\" class=\"my-button\">\r\n <span> {{ \"FILTER\" | translate }}</span>\r\n <i class=\"bi bi-filter\" *ngIf=\"!openFilter\"></i>\r\n <i class=\"bi bi-x\" *ngIf=\"openFilter\"></i>\r\n </button>\r\n <div *ngIf=\"openFilter\">\r\n <i class=\"bi bi-caret-up-fill arrow-up\"></i>\r\n </div>\r\n</div>\r\n<div class=\"row wrapper\">\r\n <div class=\"popup-filter px-3 d-flex d-xl-none\" *ngIf=\"openFilter\">\r\n <form\r\n [formGroup]=\"searchForm\"\r\n class=\"search-form\"\r\n (ngSubmit)=\"submitForm()\"\r\n >\r\n <input\r\n class=\"search-input\"\r\n type=\"text\"\r\n formControlName=\"text\"\r\n [placeholder]=\"'search.search' | translate\"\r\n />\r\n <div (click)=\"submitForm()\" class=\"search-icon bi bi-search\"></div>\r\n </form>\r\n <ng-container *ngIf=\"aggregations; else progressSpinner\">\r\n <div *ngFor=\"let aggregation of aggregations\">\r\n <ng-container *ngIf=\"aggregation.buckets.length > 0\">\r\n <cts-dynamic-filter\r\n [entityType]=\"entityType\"\r\n [filters]=\"aggregation.buckets\"\r\n [id]=\"aggregation.id\"\r\n [selections]=\"aggregation.selection\"\r\n [title]=\"aggregation.field\"\r\n [prefix]=\"'search'\"\r\n [department]=\"aggregation.field === 'corr:to' ||aggregation.field === 'corr:from'\"\r\n (onFilterSelected)=\"FilterSelected($event)\"\r\n ></cts-dynamic-filter>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-xl-3 search-sideMenu d-none d-xl-block\">\r\n <form\r\n [formGroup]=\"searchForm\"\r\n class=\"search-form\"\r\n (ngSubmit)=\"submitForm()\"\r\n >\r\n <input\r\n class=\"search-input\"\r\n type=\"text\"\r\n formControlName=\"text\"\r\n [placeholder]=\"'search.search' | translate\"\r\n />\r\n <div (click)=\"submitForm()\" class=\"search-icon bi bi-search\"></div>\r\n </form>\r\n <ng-container *ngIf=\"aggregations; else progressSpinner\">\r\n <div *ngFor=\"let aggregation of aggregations\">\r\n <ng-container *ngIf=\"aggregation.buckets.length > 0\">\r\n <cts-dynamic-filter\r\n [entityType]=\"entityType\"\r\n [filters]=\"aggregation.buckets\"\r\n [id]=\"aggregation.id\"\r\n [selections]=\"aggregation.selection\"\r\n [title]=\"aggregation.field\"\r\n [prefix]=\"'search'\"\r\n [department]=\"aggregation.field === 'corr:to' ||aggregation.field === 'corr:from'\"\r\n (onFilterSelected)=\"FilterSelected($event)\"\r\n ></cts-dynamic-filter>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-12 col-xl-9\">\r\n <app-card>\r\n <div class=\"title\">\r\n <h3>\r\n {{ \"search.header\" | translate }}\r\n </h3>\r\n </div>\r\n <div class=\"body\">\r\n <div *ngIf=\"aggregations\" class=\"table-toolbar\">\r\n <div class=\"result-count\">\r\n <span>\r\n {{\r\n \"search.\" + \"resultsNumber\"\r\n | translate: { value: totalRecords ? totalRecords : 0 }\r\n }}\r\n </span>\r\n </div>\r\n <!-- <form\r\n [formGroup]=\"searchForm\"\r\n class=\"search-form\"\r\n (ngSubmit)=\"submitForm()\"\r\n >\r\n <input\r\n class=\"search-input\"\r\n type=\"text\"\r\n formControlName=\"text\"\r\n [placeholder]=\"'search.search' | translate\"\r\n />\r\n <div (click)=\"submitForm()\" class=\"search-icon bi bi-search\"></div>\r\n </form> -->\r\n </div>\r\n <cts-dynamic-table\r\n [pageSize]=\"pageSize\"\r\n [columns]=\"columns\"\r\n [responsiveColumns]=\"responsiveColumns\"\r\n [pageProvider]=\"pageProvider\"\r\n [quickFilter]=\"filter\"\r\n [entityType]=\"entityType\"\r\n [fields]=\"fields\"\r\n [queryParam]=\"queryParams\"\r\n [headers]=\"headers\"\r\n [prefix]=\"prefix\"\r\n [sortingBy]=\"sortingBy\"\r\n (onRowSelected)=\"openViewer($event)\"\r\n (onGettingData)=\"getTableData($event)\"\r\n ></cts-dynamic-table>\r\n </div>\r\n </app-card>\r\n </div>\r\n <ng-template #progressSpinner>\r\n <div class=\"progress-spinner\">\r\n <mat-spinner color=\"warn\" [diameter]=\"25\"></mat-spinner>\r\n </div>\r\n </ng-template>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { CardModule } from '../card/card.module';\r\nimport { DynamicFilterModule } from '../dynamic-filter/dynamic-filter.module';\r\nimport { DynamicFormModule } from '../dynamic-form/dynamic-form.module';\r\nimport { DynamicTableModule } from '../dynamic-table/dynamic-table.module';\r\nimport { DynamicSearchComponent } from './dynamic-search/dynamic-search.component';\r\n\r\n/**\r\n * @title\r\n * Dynamic Search Module\r\n */\r\n@NgModule({\r\n declarations: [DynamicSearchComponent],\r\n imports: [\r\n CommonModule,\r\n CardModule,\r\n DynamicTableModule,\r\n DynamicFilterModule,\r\n DynamicFormModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n TranslateModule,\r\n MatProgressSpinnerModule,\r\n ],\r\n exports: [DynamicSearchComponent],\r\n})\r\nexport class DynamicSearchModule {}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'cts-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SelectComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class SelectComponent implements OnInit, OnChanges {\r\n // @Input() addTag = false;\r\n // @Input() groupBy;\r\n // @Input() searchFn = null;\r\n // @Input() trackByFn = null;\r\n // @Input() required;\r\n // @Input() disabled = false;\r\n @Input() label: string;\r\n @Input() bindValue;\r\n @Input() bindLabel;\r\n @Input() data;\r\n @Input() placeholder;\r\n @Input() multiple = false;\r\n @Input() searchable = false;\r\n @Input() closeOnSelect = true;\r\n @Input() hideSelectedItems = false;\r\n @Input() isAsync = false;\r\n @Input() attachSource = false;\r\n @Input() source$: Observable<any>;\r\n @Input() hideLoaded = false;\r\n @Input() loading = false;\r\n @Input() disabled = false;\r\n @Output() onSelectItems = new EventEmitter();\r\n selection = [];\r\n buffer = [];\r\n bufferSize = 50;\r\n numberOfItemsFromEndBeforeFetchingMore = 10;\r\n\r\n propagateChange: any = () => {};\r\n validateFn: any = () => {};\r\n\r\n public onTouched: any = () => {\r\n /*Empty*/\r\n };\r\n\r\n constructor(public translate: TranslateService) {}\r\n\r\n emitSelection(event) {\r\n this.propagateChange(this.selection);\r\n this.onSelectItems.emit(event);\r\n }\r\n\r\n onScrollToEnd() {\r\n this.fetchMore();\r\n }\r\n\r\n private fetchMore() {\r\n this.loading = true;\r\n const len = this.buffer.length;\r\n const more = this.data.slice(len, this.bufferSize + len);\r\n this.buffer = this.data.concat(more);\r\n this.loading = false;\r\n }\r\n\r\n ngOnChanges(changes): void {\r\n if (\r\n changes.data &&\r\n changes.data.currentValue &&\r\n changes.data.previousValue\r\n ) {\r\n this.data = [...changes.data.currentValue];\r\n this.buffer = this.data.slice(0, this.bufferSize);\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.buffer = (this.data || []).slice(0, this.bufferSize);\r\n this.buffer.map((item) => {\r\n item.isSelected = false;\r\n });\r\n }\r\n\r\n writeValue(value) {\r\n if (value) {\r\n this.selection = value;\r\n }\r\n }\r\n registerOnChange(fn) {\r\n this.propagateChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any) {\r\n this.onTouched = fn;\r\n }\r\n\r\n validate(c: FormControl) {\r\n return this.validateFn(c);\r\n }\r\n}\r\n","<ng-container *ngIf=\"label\">\r\n <div>\r\n <label class=\"select-label\"\r\n >{{ label | translate\r\n }}<span *ngIf=\"false\" class=\"text-danger m-1\">*</span></label\r\n >\r\n </div>\r\n</ng-container>\r\n<ng-select\r\n [items]=\"buffer\"\r\n [bindLabel]=\"bindLabel\"\r\n [bindValue]=\"bindValue\"\r\n [placeholder]=\"placeholder\"\r\n [multiple]=\"multiple\"\r\n [searchable]=\"searchable\"\r\n [closeOnSelect]=\"closeOnSelect\"\r\n [hideSelected]=\"hideSelectedItems\"\r\n [loading]=\"loading\"\r\n (scrollToEnd)=\"onScrollToEnd()\"\r\n (change)=\"emitSelection($event)\"\r\n [disabled]=\"disabled\"\r\n [(ngModel)]=\"selection\"\r\n>\r\n <!-- template for viewing options in single and multi select -->\r\n <ng-template\r\n ng-option-tmp\r\n let-item=\"item\"\r\n let-item$=\"item$\"\r\n let-index=\"index\"\r\n >\r\n <div class=\"option-wrapper\">\r\n <span class=\"check-box-wrapper\" *ngIf=\"multiple\">\r\n <input\r\n id=\"item-{{ index }}\"\r\n type=\"checkbox\"\r\n [ngModel]=\"item$.selected\"\r\n />\r\n <span class=\"icon-wrapper\">\r\n <span class=\"bi bi-check2 icon\"></span>\r\n </span>\r\n </span>\r\n <span class=\"label-wrapper\">\r\n {{ item[bindLabel] | translate }}\r\n </span>\r\n </div>\r\n </ng-template>\r\n\r\n <!-- template for viewing single select selected value -->\r\n <ng-template ng-label-tmp let-item=\"item\">\r\n {{ (bindLabel ? item[bindLabel] : item) | translate }}\r\n </ng-template>\r\n\r\n <!-- template for viewing multi select selected values -->\r\n <ng-template ng-multi-label-tmp let-items=\"items\" let-clear=\"clear\">\r\n <div class=\"ng-value\" *ngFor=\"let item of items ? items : []\">\r\n <span class=\"ng-value-label\">\r\n {{ (bindLabel ? item[bindLabel] : item) | translate }}\r\n </span>\r\n <span class=\"ng-value-icon right\" (click)=\"clear(item)\" aria-hidden=\"true\"\r\n >×</span\r\n >\r\n </div>\r\n </ng-template>\r\n</ng-select>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SelectComponent } from './select/select.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n\r\n/** @ignore */\r\n@NgModule({\r\n declarations: [SelectComponent],\r\n imports: [\r\n CommonModule,\r\n NgSelectModule,\r\n FormsModule,\r\n TranslateModule\r\n ],\r\n exports: [\r\n SelectComponent\r\n ]\r\n})\r\nexport class SelectModule {}\r\n","import { Component, EventEmitter, forwardRef, Input, OnInit, Output } from '@angular/core';\r\nimport { FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { VocabularyApiService } from '../services/vocabulary-api.service';\r\n@Component({\r\n selector: 'cts-vocabulary',\r\n templateUrl: './vocabulary.component.html',\r\n styleUrls: ['./vocabulary.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => VocabularyComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class VocabularyComponent implements OnInit {\r\n data = [];\r\n @Input() bindValue;\r\n @Input() bindLabel;\r\n @Input() placeholder;\r\n @Input() multiple = false;\r\n @Input() searchable = true;\r\n @Input() closeOnSelect = true;\r\n @Input() hideSelectedItems = false;\r\n @Input() isAsync = false;\r\n @Input() attachSource = false;\r\n @Input() source$: Observable<any>;\r\n @Input() hideLoaded = false;\r\n @Input() vocabularyType = '';\r\n\r\n @Output() onSelecting = new EventEmitter();\r\n loading= false;\r\n selection=[];\r\n\r\n // function related to value accessor\r\n propagateChange: any = () => { };\r\n validateFn: any = () => { };\r\n public onTouched: any = () => { /*Empty*/ }\r\n\r\n constructor(private vocabularyApi : VocabularyApiService) { }\r\n\r\n ngOnInit(): void {\r\n if(this.vocabularyType){\r\n this.getLisOfOptions(this.vocabularyType);\r\n }\r\n }\r\n\r\n getLisOfOptions(type){\r\n this.loading = true;\r\n this.vocabularyApi.getVocabularyList(type).subscribe(res => {\r\n this.loading = false;\r\n this.data = res;\r\n });\r\n }\r\n\r\n getSelecteditems(selectedItems){\r\n this.propagateChange(selectedItems);\r\n this.onSelecting.emit(selectedItems);\r\n }\r\n\r\n writeValue(value) {\r\n if (value) {\r\n this.selection = value;\r\n }\r\n }\r\n\r\n registerOnChange(fn) {\r\n this.propagateChange = fn;\r\n }\r\n\r\n registerOnTouched(fn : any) {\r\n this.onTouched = fn;\r\n }\r\n\r\n validate(c: FormControl) {\r\n return this.validateFn(c);\r\n }\r\n\r\n}\r\n","<app-dynamic-form-selectitem\r\n [data]=\"data\"\r\n [bindLabel]=\"bindLabel\"\r\n [bindValue]=\"bindValue\"\r\n [placeholder]=\"placeholder\"\r\n [multiple]=\"multiple\"\r\n [searchable]=\"searchable\"\r\n [closeOnSelect]=\"closeOnSelect\"\r\n [hideSelectedItems]=\"hideSelectedItems\"\r\n [loading]=\"loading\"\r\n (onSelectItems)=\"getSelecteditems($event)\"\r\n></app-dynamic-form-selectitem>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { VocabularyComponent } from './vocabulary/vocabulary.component';\r\nimport { SelectModule } from '../select/select.module';\r\nimport { DynamicFormModule } from '../dynamic-form/dynamic-form.module';\r\n// import { CoreModule } from '../../core/core.module';\r\n\r\n/** @ignore */\r\n@NgModule({\r\n declarations: [VocabularyComponent],\r\n imports: [\r\n CommonModule,\r\n SelectModule,\r\n DynamicFormModule\r\n ],\r\n exports : [\r\n VocabularyComponent\r\n ]\r\n})\r\nexport class VocabularyModule { }\r\n","import { EventEmitter, Injectable } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { TranslationService } from '../../../Core/services/translation/translation.service';\r\nimport moment from 'moment-es6';\r\ninterface ChartData {\r\n chartData: {};\r\n options: {};\r\n}\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ChartDataService {\r\n refreshData = new EventEmitter();\r\n private prefix = 'STATS.';\r\n private isArabic: boolean;\r\n private size: number = 8;\r\n \r\n private totalNumber = [\r\n {\r\n beforeDraw: (chart) => {\r\n if (chart.config.options.elements.center) {\r\n // Get ctx from string\r\n var ctx = chart.chart.ctx;\r\n\r\n // Get options from the center object in options\r\n var centerConfig = chart.config.options.elements.center;\r\n var fontStyle = centerConfig.fontStyle || 'Arial';\r\n var txt = centerConfig.text;\r\n var color = centerConfig.color || '#000';\r\n var maxFontSize = centerConfig.maxFontSize || 75;\r\n var sidePadding = centerConfig.sidePadding || 20;\r\n var sidePaddingCalculated =\r\n (sidePadding / 100) * (chart.innerRadius * 2);\r\n // Start with a base font of 30px\r\n ctx.font = '30px ' + fontStyle;\r\n\r\n // Get the width of the string and also the width of the element minus 10 to give it 5px side padding\r\n var stringWidth = ctx.measureText(txt).width;\r\n var elementWidth = chart.innerRadius * 2 - sidePaddingCalculated;\r\n\r\n // Find out how much the font can grow in width.\r\n var widthRatio = elementWidth / stringWidth;\r\n var newFontSize = Math.floor(30 * widthRatio);\r\n var elementHeight = chart.innerRadius * 2;\r\n\r\n // Pick a new font size so it will not be larger than the height of label.\r\n var fontSizeToUse = Math.min(newFontSize, elementHeight, maxFontSize);\r\n var minFontSize = centerConfig.minFontSize;\r\n var lineHeight = centerConfig.lineHeight || 25;\r\n var wrapText = false;\r\n\r\n if (minFontSize === undefined) {\r\n minFontSize = 20;\r\n }\r\n\r\n if (minFontSize && fontSizeToUse < minFontSize) {\r\n fontSizeToUse = minFontSize;\r\n wrapText = true;\r\n }\r\n\r\n // Set font settings to draw it correctly.\r\n ctx.textAlign = 'center';\r\n ctx.textBaseline = 'middle';\r\n var centerX = (chart.chartArea.left + chart.chartArea.right) / 2;\r\n var centerY = (chart.chartArea.top + chart.chartArea.bottom) / 2;\r\n ctx.font = '14' + 'px ' + fontStyle;\r\n ctx.fillStyle = color;\r\n\r\n if (!wrapText) {\r\n ctx.fillText(txt, centerX, centerY);\r\n return;\r\n }\r\n\r\n var words = txt.split(' ');\r\n var line = '';\r\n var lines = [];\r\n\r\n // Break words up into multiple lines if necessary\r\n for (var n = 0; n < words.length; n++) {\r\n var testLine = line + words[n] + ' ';\r\n var metrics = ctx.measureText(testLine);\r\n var testWidth = metrics.width;\r\n if (testWidth > elementWidth && n > 0) {\r\n lines.push(line);\r\n line = words[n] + ' ';\r\n } else {\r\n line = testLine;\r\n }\r\n }\r\n\r\n // Move the center up depending on line height and number of lines\r\n centerY -= (lines.length / 2) * lineHeight;\r\n\r\n for (var n = 0; n < lines.length; n++) {\r\n ctx.fillText(lines[n], centerX, centerY);\r\n centerY += lineHeight;\r\n }\r\n //Draw text in center\r\n ctx.fillText(line, centerX, centerY);\r\n }\r\n },\r\n },\r\n ];\r\n constructor(\r\n private translate: TranslateService,\r\n private translation: TranslationService\r\n ) {\r\n this.translation.isArabic.subscribe((arabic) => {\r\n arabic ? (this.isArabic = arabic) : (this.isArabic = arabic);\r\n });\r\n }\r\n /**\r\n *\r\n * @param data data fetched from back-end\r\n * @param totalItems totalItems from the backedn\r\n * @param prefix for Translations\r\n * @returns\r\n */\r\n multiSeriesPieChart(data): ChartData {\r\n const provideColors = data.colors;\r\n const prefix = data.prefix;\r\n const totalItems = data.totalItems;\r\n let dataArr = [];\r\n let labels = [];\r\n //for aggregations\r\n let itemCount: number = 0;\r\n let otherItemsCount: number;\r\n\r\n dataArr = data.data.slice(0, this.size).map((item, index) => {\r\n const numbers = data.data.map((item1, index1) =>\r\n index === index1 ? item.count : 0\r\n );\r\n const colors = data.data.slice(0, this.size).map((item1, index1) => {\r\n return provideColors[item1.label];\r\n });\r\n numbers.push(data.totalItems - item.count);\r\n\r\n colors.push('#f7f8f9');\r\n return {\r\n data: numbers,\r\n totalItems: data.totalItems,\r\n backgroundColor: colors,\r\n };\r\n });\r\n labels = data.data\r\n .slice(0, this.size)\r\n .map(\r\n (item) =>\r\n `${this.translate.instant(prefix + item.label)} (${item.count})`\r\n );\r\n const chartData = {\r\n datasets: dataArr,\r\n labels: labels,\r\n };\r\n\r\n const options = {\r\n type: 'doughnut',\r\n data: chartData,\r\n plugins: this.totalNumber,\r\n showCount: true,\r\n countSize: '18px',\r\n options: {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n tooltips: { enabled: false },\r\n cutoutPercentage: 30,\r\n legend: {\r\n labels: {\r\n usePointStyle: true,\r\n boxWidth: 8,\r\n },\r\n position: 'left',\r\n rtl: this.isArabic ? true : false,\r\n },\r\n elements: {\r\n center: {\r\n text: `${\r\n totalItems >= 1000\r\n ? parseFloat((totalItems / 1000).toFixed(2)) + 'K'\r\n : totalItems\r\n }`,\r\n color: '#596973', // Default is #000000\r\n fontStyle: 'Arial', // Default is Arial\r\n sidePadding: 20, // Default is 20 (as a percentage)\r\n minFontSize: 20, // Default is 20 (in px), set to false and text will not wrap.\r\n lineHeight: 25, // Default is 25 (in px), used for when text wraps\r\n },\r\n },\r\n },\r\n };\r\n return { options: options, chartData: chartData };\r\n }\r\n\r\n doughnutChart(data): ChartData {\r\n const provideColors = data.colors;\r\n const prefix = data.prefix;\r\n const totalItems = data.data.totalItems;\r\n let backgroundColor = [];\r\n let dataArr = [];\r\n let labels = [];\r\n //for aggregations\r\n let itemCount: number = 0;\r\n let otherItemsCount: number;\r\n data.data.data.slice(0, this.size).forEach((item, index) => {\r\n backgroundColor.push(provideColors[item.label]);\r\n dataArr.push(item.count);\r\n itemCount = itemCount + item.count;\r\n });\r\n labels = data.data.data.slice(0, this.size).map((item, index) => {\r\n return `${this.translate.instant(prefix + item.label)} (${item.count})`;\r\n });\r\n //aggregate other data\r\n otherItemsCount = totalItems - itemCount;\r\n if (otherItemsCount > 0) {\r\n backgroundColor.push(provideColors['other']);\r\n dataArr.push(otherItemsCount);\r\n labels.push(\r\n `${this.translate.instant(prefix + 'other')} (${otherItemsCount})`\r\n );\r\n }\r\n const chartData = {\r\n datasets: [\r\n {\r\n backgroundColor: backgroundColor,\r\n data: dataArr,\r\n },\r\n ],\r\n labels: labels,\r\n };\r\n\r\n const options = {\r\n type: 'doughnut',\r\n data: chartData,\r\n showCount: true,\r\n countSize: '18px',\r\n plugins: this.totalNumber,\r\n options: {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n tooltips: { enabled: true },\r\n cutoutPercentage: 30,\r\n legend: {\r\n labels: {\r\n usePointStyle: true,\r\n boxWidth: 8,\r\n },\r\n display: true,\r\n position: this.isArabic ? 'right' : 'left',\r\n rtl: this.isArabic ? true : false,\r\n },\r\n elements: {\r\n center: {\r\n text: `${\r\n totalItems >= 1000\r\n ? parseFloat((totalItems / 1000).toFixed(2)) + 'K'\r\n : totalItems\r\n }`,\r\n color: '#596973', // Default is #000000\r\n fontStyle: 'Arial', // Default is Arial\r\n sidePadding: 20, // Default is 20 (as a percentage)\r\n minFontSize: 20, // Default is 20 (in px), set to false and text will not wrap.\r\n lineHeight: 25, // Default is 25 (in px), used for when text wraps\r\n },\r\n },\r\n },\r\n };\r\n return { options: options, chartData: chartData };\r\n }\r\n\r\n lineChart(data): ChartData {\r\n data = this.groupObjectBykeyLine(data.data);\r\n console.log('chart data', data);\r\n this.isArabic ? moment.locale('ar-sa') : moment.locale('en-us');\r\n const chartData = data;\r\n const options = {\r\n type: 'line',\r\n data: chartData,\r\n options: {\r\n maintainAspectRatio: false,\r\n scales: {\r\n xAxes: [\r\n {\r\n ticks: {\r\n autoSkip: true,\r\n maxTicksLimit: 12,\r\n source: 'labels',\r\n },\r\n type: 'time',\r\n time: {\r\n unit: 'week',\r\n displayFormats: {\r\n week: 'DD-MM-yyyy',\r\n },\r\n },\r\n },\r\n ],\r\n yAxes: [\r\n {\r\n ticks: {\r\n min: 0,\r\n precision: 0,\r\n },\r\n },\r\n ],\r\n },\r\n title: {\r\n display: true,\r\n text: '',\r\n },\r\n legend: {\r\n labels: {\r\n // usePointStyle: true,\r\n boxWidth: 12,\r\n },\r\n // position: 'bottom',\r\n rtl: this.isArabic ? true : false,\r\n },\r\n },\r\n };\r\n return { options, chartData };\r\n }\r\n\r\n GroupedBarChart(data): ChartData {\r\n data = this.groupObjectBykey(data.data);\r\n this.isArabic ? moment.locale('ar-sa') : moment.locale('en-us');\r\n const chartData = data;\r\n const options = {\r\n type: 'bar',\r\n data: chartData,\r\n options: {\r\n plugins: {\r\n outlabels: {\r\n display: false,\r\n },\r\n labels: false,\r\n },\r\n barValueSpacing: 20,\r\n scales: {\r\n yAxes: [\r\n {\r\n ticks: {\r\n min: 0,\r\n precision: 0,\r\n },\r\n },\r\n ],\r\n },\r\n legend: {\r\n // position: 'bottom',\r\n labels: {\r\n boxWidth: 12,\r\n },\r\n rtl: this.isArabic ? true : false,\r\n },\r\n },\r\n };\r\n return { options, chartData };\r\n }\r\n\r\n BarChart(data): ChartData {\r\n const provideColors = data.colors;\r\n const prefix = data.prefix;\r\n const totalItems = data.totalItems;\r\n let backgroundColor = [];\r\n let dataArr = [];\r\n let labels = [];\r\n data.data.data.forEach((item, index) => {\r\n backgroundColor.push(\"#2e62df\");\r\n dataArr.push(item.count);\r\n });\r\n labels = data.data.data.map((item, index) => {\r\n return `${item.label}`;\r\n });\r\n const chartData = {\r\n datasets: [\r\n {\r\n backgroundColor: backgroundColor,\r\n data: dataArr,\r\n barPercentage: 0.4,\r\n barThickness: 24,\r\n maxBarThickness: 30,\r\n minBarLength: 2,\r\n },\r\n ],\r\n labels: labels,\r\n };\r\n\r\n const options = {\r\n type: 'bar',\r\n data: chartData,\r\n options: {\r\n plugins: {\r\n outlabels: {\r\n display: false,\r\n },\r\n labels: false,\r\n },\r\n barValueSpacing: 20,\r\n scales: {\r\n yAxes: [\r\n {\r\n ticks: {\r\n min: 0,\r\n precision: 0,\r\n },\r\n },\r\n ],\r\n },\r\n legend: {\r\n // position: 'bottom',\r\n display: false,\r\n // labels: {\r\n // boxWidth: 12,\r\n // },\r\n // rtl: this.isArabic ? true : false,\r\n },\r\n },\r\n };\r\n return { options: options, chartData: chartData };\r\n }\r\n\r\n outlabeledPieChart(data): ChartData {\r\n const provideColors = data.colors;\r\n const prefix = data.prefix;\r\n const totalItems = data.totalItems;\r\n let backgroundColor = [];\r\n let dataArr = [];\r\n let labels = [];\r\n data.data.data.forEach((item, index) => {\r\n backgroundColor.push(provideColors[item.label]);\r\n dataArr.push(item.count);\r\n });\r\n labels = data.data.data.map((item, index) => {\r\n return `${item.label}`;\r\n });\r\n const chartData = {\r\n datasets: [\r\n {\r\n backgroundColor: backgroundColor,\r\n data: dataArr,\r\n },\r\n ],\r\n labels: labels,\r\n };\r\n\r\n const options = {\r\n type: 'outlabeledPie',\r\n data: chartData,\r\n\r\n options: {\r\n // title: {\r\n // display: true,\r\n // text: prefix.length > 0 ? `${this.translate.instant(prefix)}` : '',\r\n // },\r\n zoomOutPercentage: 55,\r\n plugins: {\r\n legend: false,\r\n outlabels: {\r\n lineWidth: 0.8,\r\n lineColor: '#b4bac6',\r\n text: '%l %p',\r\n color: 'white',\r\n stretch: 25,\r\n font: {\r\n resizable: true,\r\n minSize: 12,\r\n maxSize: 18,\r\n },\r\n },\r\n },\r\n },\r\n };\r\n return { options: options, chartData: chartData };\r\n }\r\n\r\n pieChart(data): ChartData {\r\n const provideColors = data.colors;\r\n const prefix = data.prefix;\r\n const totalItems = data.totalItems;\r\n let backgroundColor = [];\r\n let dataArr = [];\r\n let labels = [];\r\n data.data.data.forEach((item, index) => {\r\n backgroundColor.push(provideColors[item.label]);\r\n dataArr.push(item.count);\r\n });\r\n labels = data.data.data.map((item, index) => {\r\n return `${item.label}`;\r\n });\r\n const chartData = {\r\n datasets: [\r\n {\r\n backgroundColor: backgroundColor,\r\n data: dataArr,\r\n },\r\n ],\r\n labels: labels,\r\n };\r\n\r\n const options = {\r\n type: 'pie',\r\n data: chartData,\r\n\r\n options: {\r\n title: {\r\n display: true,\r\n text: prefix.length > 0 ? `${this.translate.instant(prefix)}` : '',\r\n },\r\n zoomOutPercentage: 55,\r\n legend: {\r\n labels: {\r\n usePointStyle: true,\r\n boxWidth: 8,\r\n },\r\n // position: 'left',\r\n rtl: this.isArabic ? true : false,\r\n },\r\n plugins: {\r\n outlabels: {\r\n display: false,\r\n },\r\n },\r\n },\r\n };\r\n return { options: options, chartData: chartData };\r\n }\r\n\r\n private groupObjectBykey = (data) => {\r\n let nameIndices = {};\r\n let statusHash = {};\r\n let chartData = { labels: [], datasets: [] };\r\n data.forEach((item) => {\r\n if (!(item.label in nameIndices)) {\r\n nameIndices[item.label] = chartData.labels.push(item.label) - 1;\r\n chartData.datasets.forEach((a) => {\r\n a.data.push(0);\r\n });\r\n }\r\n if (!statusHash[item.status]) {\r\n statusHash[item.status] = {\r\n label: `${this.translate.instant(item.status)} (${item.totalItems})`,\r\n ...(item.status === 'Incoming' && {\r\n backgroundColor: '#00dca5',\r\n }),\r\n ...(item.status === 'Outgoing' && {\r\n backgroundColor: '#fbb62c',\r\n }),\r\n data: chartData.labels.map(() => {\r\n return 0;\r\n }),\r\n barPercentage: 0.4,\r\n barThickness: 24,\r\n maxBarThickness: 30,\r\n minBarLength: 2,\r\n };\r\n chartData.datasets.push(statusHash[item.status]);\r\n }\r\n statusHash[item.status].data[nameIndices[item.label]] = item.count;\r\n });\r\n\r\n return chartData;\r\n };\r\n\r\n private groupObjectBykeyLine = (data) => {\r\n data.sort((left, right) => {\r\n return moment.utc(left.id).diff(moment.utc(right.id));\r\n });\r\n let nameIndices = {};\r\n let statusHash = {};\r\n let chartData = { labels: [], datasets: [] };\r\n data.forEach((item) => {\r\n if (!(item.id in nameIndices)) {\r\n nameIndices[item.id] = chartData.labels.push(item.id) - 1;\r\n chartData.datasets.forEach((a) => {\r\n a.data.push(0);\r\n });\r\n }\r\n if (!statusHash[item.status]) {\r\n statusHash[item.status] = {\r\n label: `${this.translate.instant(item.status)} (${item.totalItems})`,\r\n ...(item.status === 'Incoming' && {\r\n borderColor: '#00dca5',\r\n }),\r\n ...(item.status === 'Outgoing' && {\r\n borderColor: '#fbb62c',\r\n }),\r\n fill: false,\r\n lineTension: 0,\r\n data: chartData.labels.map(() => {\r\n return 0;\r\n }),\r\n };\r\n chartData.datasets.push(statusHash[item.status]);\r\n }\r\n statusHash[item.status].data[nameIndices[item.id]] = item.count;\r\n });\r\n\r\n return chartData;\r\n };\r\n \r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnChanges,\r\n SimpleChanges,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n} from \"@angular/core\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\nimport { Chart } from \"chart.js\";\r\nimport { Observable, Subject , Subscription, forkJoin} from \"rxjs\";\r\nimport { map, takeUntil, debounceTime } from \"rxjs/operators\";\r\nimport { CallApiService } from \"../../../Core/services/callApi/call-api.service\";\r\nimport { ChartDataService } from \"../services/chart-data.service\";\r\nimport * as _ from 'lodash';\r\nimport { Router } from '@angular/router';\r\nimport 'chartjs-plugin-piechart-outlabels';\r\nimport 'chartjs-plugin-labels';\r\n/** @ignore */\r\n@Component({\r\n selector: \"cts-dynamic-chart\",\r\n templateUrl: \"./dynamic-chart.component.html\",\r\n styleUrls: [\"./dynamic-chart.component.scss\"],\r\n})\r\nexport class DynamicChartComponent implements OnInit, OnChanges, OnDestroy {\r\n @ViewChild('revenueLineChart', { static: false }) chart: ElementRef;\r\n @Input()\r\n prefix = 'STATS.'; // for translation\r\n @Input()\r\n chartType; // functions exist inside ChartDataService\r\n @Input() randomColors: boolean = false;\r\n private chartObj;\r\n private onDestroy$ = new Subject<boolean>();\r\n creatChart = new Subject<any>();\r\n @Input() pageProvider; // define api to get the data from\r\n @Input() headers = {}; // headers in constants\r\n @Input() observable; // observable in case of call api is called from outside the component\r\n @Input() aggregations;\r\n @Input() quickFilters;\r\n @Input() systemCurrentLifeCycleState;\r\n @Input() range = '[\"from_now-7d_to_now\"]';\r\n @Input() label;\r\n @Input()\r\n selectedRange = \"week\"; // range to be filterd on\r\n @Input() colors: any = {\r\n inProgress: '#3c3cf0',\r\n registered: '#5a1496',\r\n draft: '#596973',\r\n archived: '#fbb62c',\r\n closed: '#00dca5',\r\n assigned: '#fd6670',\r\n undefined: '#f7f8f9',\r\n other: '#f17205',\r\n };\r\n data: any = [];\r\n isFetching: boolean = false;\r\n charts: [];\r\n @Input()\r\n randomColor: boolean = false;\r\n @Input()\r\n fetchedKey;\r\n @Input()\r\n pageProviderTwo;\r\n @Input()\r\n quickFilterTwo;\r\n @Input()\r\n combinedData = false;\r\n @Input()\r\n statusOne;\r\n @Input()\r\n statusTwo;\r\n @Input()\r\n min;\r\n @Input()\r\n max;\r\n @Input()\r\n width;\r\n @Input()\r\n height;\r\n @Input()\r\n card = false;\r\n @Input()\r\n cardTitle = '';\r\n myDataSubscription: Subscription;\r\n constructor(\r\n public translate: TranslateService,\r\n public changeDetector: ChangeDetectorRef,\r\n private callApi: CallApiService,private router: Router,\r\n public chartData: ChartDataService\r\n ) {\r\n Chart.defaults.global.defaultFontFamily = \"FS Albert Arabic Web\";\r\n Chart.defaults.global.defaultFontSize = 13;\r\n this.translate.onLangChange\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe((data) => {\r\n this.creatChart.next();\r\n });\r\n }\r\n createChart() {\r\n this.creatChart.pipe(debounceTime(500)).subscribe((res) => {\r\n this.getData().subscribe((data) => {\r\n this.data = data;\r\n this.changeDetector.detectChanges();\r\n let randomColors = {};\r\n if (this.randomColors) {\r\n data.data.forEach((item) => {\r\n randomColors[item.label] = this.stringToHslColor(\r\n `${item.label}`,\r\n 40,\r\n 70\r\n );\r\n });\r\n }\r\n this.colors = this.randomColors ? randomColors : this.colors;\r\n const { options, chartData } = this.chartData[this.chartType]({\r\n data: data,\r\n colors: this.colors,\r\n prefix: this.prefix,\r\n });\r\n if (data.data?.length || data.length) {\r\n if (!this.chartObj) {\r\n const ctx = this.chart.nativeElement.getContext('2d');\r\n this.chartObj = new Chart(ctx, options);\r\n } else {\r\n this.chartObj.chart.data = chartData;\r\n this.chartObj.update();\r\n }\r\n } else {\r\n // const ctx = this.chart.nativeElement.getContext('2d');\r\n // let noOptions = {\r\n // type: options.type,\r\n // data: {\r\n // datasets: [],\r\n // },\r\n // options: {},\r\n // };\r\n // this.chartObj = new Chart(ctx, noOptions);\r\n // this.chartObj.chart.data = [];\r\n }\r\n });\r\n });\r\n }\r\n\r\n updateStats() {\r\n this.createChart();\r\n }\r\n\r\n async ngOnInit() {\r\n setTimeout(() => {\r\n this.createChart();\r\n this.creatChart.next();\r\n });\r\n }\r\n ngOnChanges(changes: SimpleChanges) {\r\n const minChanged = changes.min && !changes.min?.firstChange;\r\n const maxChanged = changes.max && !changes.max?.firstChange;\r\n const rangeChanged = changes.range && !changes.range?.firstChange;\r\n if (minChanged || maxChanged || rangeChanged) {\r\n setTimeout(() => {\r\n this.creatChart.next();\r\n });\r\n }\r\n }\r\n ngOnDestroy() {\r\n this.myDataSubscription ? this.myDataSubscription.unsubscribe() : '';\r\n this.onDestroy$.next(true);\r\n this.onDestroy$.complete();\r\n this.creatChart.unsubscribe();\r\n }\r\n getData(): Observable<any> {\r\n this.isFetching = true;\r\n if (this.combinedData) {\r\n return this.getCombinedData(\r\n this.pageProvider,\r\n this.quickFilters,\r\n this.range,\r\n this.pageProviderTwo,\r\n this.quickFilterTwo,\r\n this.statusOne,\r\n this.statusTwo\r\n );\r\n } else {\r\n return this.callApi\r\n .query(\r\n {\r\n pageProvider: this.pageProvider,\r\n currentPageIndex: 0,\r\n offset: 0,\r\n pageSize: 1,\r\n dublincore_created_agg: this.range,\r\n quickFilters: this.quickFilters,\r\n dublincore_created_min: this.min,\r\n dublincore_created_max: this.max,\r\n system_currentLifeCycleState_3: JSON.stringify(\r\n this.systemCurrentLifeCycleState\r\n ),\r\n },\r\n {\r\n headers: this.headers,\r\n }\r\n )\r\n .pipe(\r\n map((data) => {\r\n const items = data.aggregations[this.aggregations].buckets\r\n ? data.aggregations[this.aggregations].buckets.map((item) => ({\r\n label: this.fetchedKey\r\n ? _.get(item, this.fetchedKey)\r\n : item.key,\r\n count: item.docCount,\r\n }))\r\n : [];\r\n this.isFetching = false;\r\n return {\r\n data: items,\r\n totalItems: data.totalSize,\r\n };\r\n })\r\n );\r\n }\r\n }\r\n\r\n getCombinedData(\r\n pageProviderOne,\r\n quickFilterOne,\r\n selectedRange,\r\n pageProviderTwo,\r\n quickFilterTwo,\r\n statusOne,\r\n statusTwo\r\n ) {\r\n const getOutgoing$ = this.callApi\r\n .query(\r\n {\r\n pageProvider: pageProviderOne,\r\n currentPageIndex: 0,\r\n offset: 0,\r\n pageSize: 1,\r\n dublincore_created_agg: selectedRange,\r\n quickFilters: quickFilterOne,\r\n dublincore_created_min: this.min,\r\n dublincore_created_max: this.max,\r\n system_currentLifeCycleState_3: JSON.stringify(\r\n this.systemCurrentLifeCycleState\r\n ),\r\n },\r\n {\r\n headers: this.headers,\r\n }\r\n )\r\n .pipe(\r\n map((data) => {\r\n const items = data.aggregations[this.aggregations].buckets\r\n ? data.aggregations[this.aggregations].buckets.map((item) => ({\r\n label: this.fetchedKey\r\n ? _.get(item, this.fetchedKey)\r\n : item.key,\r\n count: item.docCount,\r\n id: item.key,\r\n status: statusOne,\r\n totalItems: data.totalSize,\r\n }))\r\n : [];\r\n return {\r\n data: items,\r\n totalItems: data.totalSize,\r\n };\r\n })\r\n );\r\n const getIncoming$ = this.callApi\r\n .query(\r\n {\r\n pageProvider: pageProviderTwo,\r\n currentPageIndex: 0,\r\n offset: 0,\r\n pageSize: 1,\r\n dublincore_created_agg: selectedRange,\r\n quickFilters: quickFilterTwo,\r\n dublincore_created_min: this.min,\r\n dublincore_created_max: this.max,\r\n system_currentLifeCycleState_3: JSON.stringify(\r\n this.systemCurrentLifeCycleState\r\n ),\r\n },\r\n {\r\n headers: this.headers,\r\n }\r\n )\r\n .pipe(\r\n map((data) => {\r\n const items = data.aggregations[this.aggregations].buckets\r\n ? data.aggregations[this.aggregations].buckets.map((item) => ({\r\n label: this.fetchedKey\r\n ? _.get(item, this.fetchedKey)\r\n : item.key,\r\n count: item.docCount,\r\n id: item.key,\r\n status: statusTwo,\r\n totalItems: data.totalSize,\r\n }))\r\n : [];\r\n return {\r\n data: items,\r\n totalItems: data.totalSize,\r\n };\r\n })\r\n );\r\n return forkJoin([getOutgoing$, getIncoming$]).pipe(\r\n map((data) => {\r\n let combinedData = [...data[0].data, ...data[1].data];\r\n this.isFetching = false;\r\n return combinedData;\r\n })\r\n );\r\n }\r\n\r\n previewCorrespondences() {\r\n console.log(\"params\",this.systemCurrentLifeCycleState)\r\n let queryParams;\r\n if (this.combinedData) {\r\n queryParams = {\r\n combinedData: this.combinedData,\r\n pageProvider: this.pageProvider,\r\n headers: JSON.stringify(this.headers),\r\n range: this.range,\r\n aggregations: this.aggregations,\r\n quickFilterOne: this.quickFilters,\r\n quickFilterTwo: this.quickFilterTwo,\r\n systemCurrentLifeCycleState: this.systemCurrentLifeCycleState,\r\n statusOne: this.statusOne,\r\n statusTwo: this.statusTwo,\r\n min: this.min,\r\n max: this.max,\r\n };\r\n } else {\r\n queryParams = {\r\n combinedData: this.combinedData,\r\n pageProvider: this.pageProvider,\r\n quickFilterOne: this.quickFilters,\r\n headers: JSON.stringify(this.headers),\r\n range: this.range,\r\n aggregations: this.aggregations,\r\n systemCurrentLifeCycleState: this.systemCurrentLifeCycleState,\r\n min: this.min,\r\n max: this.max,\r\n };\r\n }\r\n this.router.navigate(['report', 'chart-details'], {\r\n queryParams: queryParams,\r\n });\r\n }\r\n \r\n stringToHslColor(str, s, l) {\r\n var hash = 0;\r\n for (var i = 0; i < str.length; i++) {\r\n hash = str.charCodeAt(i) + ((hash << 5) - hash);\r\n }\r\n var h = hash % 360;\r\n return 'hsl(' + h + ', ' + s + '%, ' + l + '%)';\r\n }\r\n}\r\n","<div class=\"card-continer\" *ngIf=\"card; else test\">\r\n <div class=\"chart-card-header\">\r\n <div class=\"chart-card-title\">{{ cardTitle | translate }}</div>\r\n <button class=\"chart-card-button\" (click)=\"previewCorrespondences()\">\r\n {{ \"report.Preview\" | translate }}\r\n </button>\r\n </div>\r\n <ng-container *ngIf=\"isFetching\">\r\n <cts-spinner></cts-spinner>\r\n </ng-container>\r\n <div class=\"stat\" [style.height.px]=\"height\">\r\n <div [hidden]=\"data.data?.length == 0 || data.length == 0\">\r\n <canvas #revenueLineChart [height]=\"height\" [width]=\"width\"></canvas>\r\n </div>\r\n <div class=\"no-stats\" *ngIf=\"data.data?.length == 0 || data.length == 0\">\r\n <span>{{ \"STATS.noData\" | translate }}</span>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #test>\r\n <div class=\"stat\">\r\n <canvas #revenueLineChart [height]=\"height\" [width]=\"width\"></canvas>\r\n </div>\r\n</ng-template>\r\n\r\n","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { Chart } from 'chart.js';\r\n/**\r\n * A UI doughnut chart component\r\n *\r\n * ![Screenshot-1](../screenshots/singleChart.png)\r\n * @title\r\n * doughnut chart\r\n *\r\n * @example\r\n * <cts-dynamic-single-chart\r\n * [totalItems]=\"totalItems\"\r\n * [label]=\"label\"\r\n * [count]=\"count\"\r\n * [colorCode]=\"arrayOfColors\"\r\n * ></cts-dynamic-single-chart>\r\n */\r\n@Component({\r\n selector: 'cts-dynamic-single-chart',\r\n templateUrl: './dynamic-single-chart.component.html',\r\n styleUrls: ['./dynamic-single-chart.component.scss'],\r\n})\r\nexport class DynamicSingleChartComponent implements OnInit {\r\n /** Total Items */\r\n @Input()\r\n totalItems;\r\n /** Chart count */\r\n @Input()\r\n count;\r\n /** Chart label */\r\n @Input()\r\n label: string;\r\n /** array of color codes for chart */\r\n @Input()\r\n colorCode = [];\r\n @ViewChild('myChart') chart: ElementRef;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void { }\r\n \r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n\r\n const ctx = this.chart.nativeElement.getContext('2d');\r\n let myChart = new Chart(ctx, {\r\n type: 'doughnut',\r\n data: {\r\n datasets: [\r\n {\r\n label: '# of Votes',\r\n data: [this.count, this.totalItems],\r\n backgroundColor: this.colorCode,\r\n },\r\n ],\r\n },\r\n plugins: [\r\n {\r\n beforeDraw: function (chart) {\r\n if (chart.config.options.elements.center) {\r\n // Get ctx from string\r\n var ctx = chart.chart.ctx;\r\n\r\n // Get options from the center object in options\r\n var centerConfig = chart.config.options.elements.center;\r\n var fontStyle = centerConfig.fontStyle || 'Arial';\r\n var txt = centerConfig.text;\r\n var color = centerConfig.color || '#000';\r\n var maxFontSize = centerConfig.maxFontSize || 75;\r\n var sidePadding = centerConfig.sidePadding || 20;\r\n var sidePaddingCalculated =\r\n (sidePadding / 100) * (chart.innerRadius * 2);\r\n // Start with a base font of 30px\r\n ctx.font = '30px ' + fontStyle;\r\n\r\n // Get the width of the string and also the width of the element minus 10 to give it 5px side padding\r\n var stringWidth = ctx.measureText(txt).width;\r\n var elementWidth = chart.innerRadius * 2 - sidePaddingCalculated;\r\n\r\n // Find out how much the font can grow in width.\r\n var widthRatio = elementWidth / stringWidth;\r\n var newFontSize = Math.floor(30 * widthRatio);\r\n var elementHeight = chart.innerRadius * 2;\r\n\r\n // Pick a new font size so it will not be larger than the height of label.\r\n var fontSizeToUse = Math.min(\r\n newFontSize,\r\n elementHeight,\r\n maxFontSize\r\n );\r\n var minFontSize = centerConfig.minFontSize;\r\n var lineHeight = centerConfig.lineHeight || 25;\r\n var wrapText = false;\r\n\r\n if (minFontSize === undefined) {\r\n minFontSize = 20;\r\n }\r\n\r\n if (minFontSize && fontSizeToUse < minFontSize) {\r\n fontSizeToUse = minFontSize;\r\n wrapText = true;\r\n }\r\n\r\n // Set font settings to draw it correctly.\r\n ctx.textAlign = 'center';\r\n ctx.textBaseline = 'middle';\r\n var centerX =\r\n (chart.chartArea.left + chart.chartArea.right) / 1.97;\r\n var centerY = (chart.chartArea.top + chart.chartArea.bottom) / 2;\r\n ctx.font = '14' + 'px ' + fontStyle;\r\n ctx.fillStyle = color;\r\n\r\n if (!wrapText) {\r\n ctx.fillText(txt, centerX, centerY);\r\n return;\r\n }\r\n\r\n var words = txt.split(' ');\r\n var line = '';\r\n var lines = [];\r\n\r\n // Break words up into multiple lines if necessary\r\n for (var n = 0; n < words.length; n++) {\r\n var testLine = line + words[n] + ' ';\r\n var metrics = ctx.measureText(testLine);\r\n var testWidth = metrics.width;\r\n if (testWidth > elementWidth && n > 0) {\r\n lines.push(line);\r\n line = words[n] + ' ';\r\n } else {\r\n line = testLine;\r\n }\r\n }\r\n\r\n // Move the center up depending on line height and number of lines\r\n centerY -= (lines.length / 2) * lineHeight;\r\n\r\n for (var n = 0; n < lines.length; n++) {\r\n ctx.fillText(lines[n], centerX, centerY);\r\n centerY += lineHeight;\r\n }\r\n //Draw text in center\r\n ctx.fillText(line, centerX, centerY);\r\n }\r\n },\r\n },\r\n ],\r\n options: {\r\n responsive: true,\r\n outlabels: {\r\n display: false,\r\n },\r\n plugins: {\r\n outlabels: {\r\n display: false,\r\n },\r\n labels: false\r\n },\r\n tooltips: { enabled: false },\r\n elements: {\r\n center: {\r\n text: `${\r\n this.count >= 1000\r\n ? parseFloat((this.count / 1000).toFixed(2)) + 'K'\r\n : this.count\r\n }`,\r\n color: '#596973', // Default is #000000\r\n fontStyle: 'Arial', // Default is Arial\r\n sidePadding: 20, // Default is 20 (as a percentage)\r\n minFontSize: 20, // Default is 20 (in px), set to false and text will not wrap.\r\n lineHeight: 25, // Default is 25 (in px), used for when text wraps\r\n },\r\n },\r\n },\r\n });\r\n }, 200);\r\n }\r\n}\r\n","<div class=\"chart\">\r\n <canvas width=\"70\" height=\"70\" #myChart></canvas>\r\n <label class=\"chart-lable\">{{ \"STATS.\" + label | translate }}</label>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DynamicChartComponent } from './dynamic-chart/dynamic-chart.component';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { DynamicSingleChartComponent } from './dynamic-single-chart/dynamic-single-chart.component';\r\nimport { LibrarySharedModule } from '../../shared/libraryShared.module';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n/**\r\n * @title\r\n * Chart Module\r\n */\r\n@NgModule({\r\n declarations: [\r\n DynamicChartComponent, \r\n DynamicSingleChartComponent \r\n ],\r\n imports: [CommonModule, TranslateModule , LibrarySharedModule , MatTooltipModule],\r\n exports: [\r\n DynamicChartComponent,\r\n DynamicSingleChartComponent],\r\n})\r\nexport class DynamicChartModule {}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n/**\r\n * A UI component to view an array of users\r\n *\r\n * ![Screenshot-1](../screenshots/usersCard.png)\r\n * @title\r\n * Users Card\r\n *\r\n * @example\r\n * <app-users-card [title]=\"'List of users'\" [members]=\"users\"></app-users-card>\r\n */\r\n@Component({\r\n selector: 'app-users-card',\r\n templateUrl: './users-card.component.html',\r\n styleUrls: ['./users-card.component.scss']\r\n})\r\nexport class UsersCardComponent implements OnInit {\r\n /** Array of Nuxeo user objects */\r\n @Input()\r\n members = [];\r\n /** Card title */\r\n @Input()\r\n title = '';\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n}\r\n","<app-card>\r\n <h3 class=\"title\">\r\n {{ title | translate }}\r\n </h3>\r\n\r\n <div class=\"body\">\r\n <div class=\"images-container\">\r\n <ng-container *ngFor=\"let member of members\">\r\n <cts-avatar\r\n class=\"member-avatar\"\r\n matTooltip=\"{{ member.properties.user.properties.firstName }} {{\r\n member.properties.user.properties.lastName\r\n }} - {{ member.properties.role }}\" matTooltipClass=\"tdf-tooltip\" [user]=\"member?.properties?.user\"\r\n *ngIf=\"member?.properties?.user\"\r\n [routerLink]=\"['/users', 'profile', member?.properties.user?.properties.username]\">\r\n </cts-avatar>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</app-card>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UsersCardComponent } from './users-card.component';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { CardModule } from '../card/card.module';\r\nimport { AvatarModule } from '../avatar/avatar.module';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { RouterModule } from '@angular/router';\r\n/**\r\n * @title\r\n * Users card module\r\n */\r\n@NgModule({\r\n declarations: [UsersCardComponent],\r\n imports: [CommonModule, TranslateModule, MatTooltipModule, CardModule, AvatarModule , RouterModule],\r\n exports: [UsersCardComponent , RouterModule],\r\n providers: [],\r\n})\r\nexport class UsersCardModule { }\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-notification-item',\r\n styleUrls: ['./notification-item.component.scss'],\r\n templateUrl: './notification-item.component.html',\r\n host: { class: 'notification-item' },\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class NotificationItemComponent {\r\n @Input() notification;\r\n @Output() update: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(private router: Router) {}\r\n\r\n stop(event) {\r\n event.stopPropagation();\r\n }\r\n toggleRead(event) {\r\n this.update.emit({ action: 'status', notification: this.notification });\r\n }\r\n\r\n /* async showOptions(event) {\r\n event.stopPropagation();\r\n const popover = await this.popoverCtrl.create({\r\n component: NotificationOptionsComponent,\r\n cssClass: 'notification-options',\r\n event: event,\r\n showBackdrop: false,\r\n });\r\n await popover.present();\r\n const { data } = await popover.onDidDismiss();\r\n if (data && this.notification) {\r\n this.updateNotification(data);\r\n\r\n }\r\n\r\n } */\r\n updateNotification(data) {\r\n this.update.emit({ action: data, notification: this.notification });\r\n }\r\n navigateToDetais(corrId) {\r\n if (corrId) {\r\n this.router.navigate(\r\n [\r\n {\r\n outlets: { viewer: ['view', corrId] },\r\n },\r\n ],\r\n {\r\n queryParams: { location: this.router.url },\r\n }\r\n );\r\n }\r\n }\r\n}\r\n","<mat-list-item (click)=\"navigateToDetais(notification.data.correspondenceId)\" [ngClass]=\"{ unread: notification.status != 'READ' }\">\r\n <p mat-line class=\"wrap\">{{ notification?.content }}</p>\r\n <p mat-line class=\"time-ago\">{{ notification?.sendDate | timeAgo }}</p>\r\n <button\r\n class=\"mat-icon-button\"\r\n (click)=\"stop($event)\"\r\n [matMenuTriggerFor]=\"appMenu\"\r\n mat-icon-button\r\n >\r\n <mat-icon class=\"mat-24\">more_vert</mat-icon>\r\n </button>\r\n <mat-menu #appMenu=\"matMenu\">\r\n <div (click)=\"stop($event)\">\r\n <mat-list-item\r\n (click)=\"toggleRead($event)\"\r\n class=\"user-option mat-menu-item\"\r\n >\r\n <mat-icon *ngIf=\"notification.status === 'READ'\" class=\"option-icon\"\r\n >check_circle_outline</mat-icon\r\n >\r\n <mat-icon *ngIf=\"notification.status != 'READ'\" class=\"option-icon\"\r\n >check_circle</mat-icon\r\n >\r\n {{\r\n (notification.status === \"READ\"\r\n ? \"notifications.markAsUnread\"\r\n : \"notifications.markAsRead\"\r\n ) | translate\r\n }}\r\n </mat-list-item>\r\n <mat-list-item\r\n (click)=\"updateNotification('delete')\"\r\n class=\"user-option mat-menu-item\"\r\n >\r\n <mat-icon class=\"option-icon\">remove_circle</mat-icon>\r\n {{ \"notifications.delete\" | translate }}\r\n </mat-list-item>\r\n </div>\r\n </mat-menu>\r\n</mat-list-item>\r\n","import { Component } from '@angular/core';\r\n\r\n/**\r\n * Sorting Options Popovermenu\r\n */\r\n@Component({\r\n selector: 'app-notification-options',\r\n templateUrl: './notification-options.component.html',\r\n styleUrls: ['./notification-options.component.scss']\r\n})\r\nexport class NotificationOptionsComponent {\r\n constructor() {}\r\n delete() {\r\n // this.popoverCtrl.dismiss('delete');\r\n }\r\n}\r\n","<!-- <ion-list no-padding no-margin lines=\"none\">\r\n <ion-item (click)=\"delete()\">\r\n <ion-label>\r\n {{'notifications.delete' | translate}}\r\n </ion-label>\r\n </ion-item>\r\n</ion-list> -->\r\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Toast, ToastPackage, ToastrService } from 'ngx-toastr';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport {\r\n UserPreferencesService,\r\n UserPreferenceValues,\r\n} from '../../../../Core/services/user/user-preferences.service';\r\n\r\n@Component({\r\n selector: 'app-notification-toast',\r\n templateUrl: './notification-toast.component.html',\r\n styleUrls: ['./notification-toast.component.scss'],\r\n // encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class NotificationToastComponent extends Toast implements OnInit {\r\n id;\r\n lang;\r\n private onDestroy$ = new Subject<boolean>();\r\n constructor(\r\n protected toastrService: ToastrService,\r\n public toastPackage: ToastPackage,\r\n private router: Router,\r\n public userPreferenceService?: UserPreferencesService\r\n ) {\r\n super(toastrService, toastPackage);\r\n }\r\n ngOnInit(): void {\r\n this.id = this.toastPackage.toastRef.componentInstance.id;\r\n if (this.userPreferenceService) {\r\n this.userPreferenceService\r\n .select(UserPreferenceValues.Locale)\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe((locale) => {\r\n this.lang = locale === 'ar' ? 'rtl' : 'ltr';\r\n });\r\n }\r\n }\r\n navigateToDetais() {\r\n // this.router.navigate(\r\n // [\r\n // {\r\n // outlets: { viewer: ['view', this.id] },\r\n // },\r\n // ],\r\n // {\r\n // queryParams: { location: this.router.url },\r\n // }\r\n // );\r\n }\r\n}\r\n// <div class=\"col-span-1 cursor-pointer text-lg text-gray-300 flex justify-end\">\r\n// X\r\n// </div>\r\n","<div\r\n class=\"toast-container\"\r\n [style.display]=\"state.value === 'inactive' ? 'none' : ''\"\r\n [dir]=\"lang\"\r\n>\r\n <ng-container (click)=\"navigateToDetais()\">\r\n <div class=\"icon-container rounded-s-md\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"25.667\"\r\n height=\"30\"\r\n viewBox=\"0 0 21.667 26\"\r\n >\r\n <g\r\n id=\"Group_1724\"\r\n data-name=\"Group 1724\"\r\n transform=\"translate(-1562 -49)\"\r\n >\r\n <g\r\n id=\"Group_1714\"\r\n data-name=\"Group 1714\"\r\n transform=\"translate(1562 49)\"\r\n >\r\n <path\r\n id=\"Path_6882\"\r\n data-name=\"Path 6882\"\r\n d=\"M63.661,18.322a7.256,7.256,0,0,1-2.577-5.552V9.75a7.589,7.589,0,0,0-6.5-7.5V1.083a1.083,1.083,0,1,0-2.167,0v1.17a7.589,7.589,0,0,0-6.5,7.5v3.02a7.264,7.264,0,0,1-2.587,5.561,1.9,1.9,0,0,0,1.233,3.336H62.438a1.9,1.9,0,0,0,1.223-3.344Z\"\r\n transform=\"translate(-42.667)\"\r\n fill=\"#fff\"\r\n />\r\n <path\r\n id=\"Path_6883\"\r\n data-name=\"Path 6883\"\r\n d=\"M181.6,451.25a4.069,4.069,0,0,0,3.98-3.25h-7.96A4.069,4.069,0,0,0,181.6,451.25Z\"\r\n transform=\"translate(-170.768 -425.25)\"\r\n fill=\"#fff\"\r\n />\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <div class=\"toast-content-container\">\r\n <div\r\n *ngIf=\"title\"\r\n [class]=\"options.titleClass\"\r\n [attr.aria-label]=\"title\"\r\n class=\"toast-content\"\r\n >\r\n {{ title }}\r\n </div>\r\n <div\r\n *ngIf=\"message\"\r\n role=\"alert\"\r\n aria-live=\"polite\"\r\n [class]=\"options.messageClass\"\r\n [attr.aria-label]=\"message\"\r\n class=\"message\"\r\n >\r\n {{ message }}\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"options.closeButton\" (click)=\"remove()\" class=\"remove\">\r\n <mat-icon class=\"\">close</mat-icon>\r\n </div>\r\n</div>\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { EventEmitter, Inject, Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { KeycloakService } from 'keycloak-angular';\r\nimport { from, Observable, of, ReplaySubject } from 'rxjs';\r\nimport { catchError, map, publishReplay, refCount } from 'rxjs/operators';\r\nimport * as SockJS from 'sockjs-client';\r\nimport { NuxeoService } from '../../Core/services/nuxeo/nuxeo.service';\r\nimport * as Stomp from 'webstomp-client';\r\nimport { ChartDataService } from '../dynamic-chart/services/chart-data.service';\r\n\r\n@Injectable()\r\nexport class NotificationsService {\r\n stompClient = null;\r\n subscriber = null;\r\n connection: Promise<any>;\r\n connectedPromise: any = null;\r\n listenerObserver: EventEmitter<any> = new EventEmitter();\r\n update: ReplaySubject<any> = new ReplaySubject(1);\r\n alreadyConnectedOnce = false;\r\n pageSize = 15;\r\n\r\n private subscription: Stomp.Subscription;\r\n\r\n private _notifications = [];\r\n get notifications(): any {\r\n return this._notifications;\r\n }\r\n private _notificationsCount = 0;\r\n get notificationsCount(): number {\r\n return this._notificationsCount;\r\n }\r\n base = '';\r\n profile = { id: this.nuxeoService.nuxeoClient.user.id };\r\n constructor(\r\n private http: HttpClient,\r\n public router: Router,\r\n public nuxeoService: NuxeoService,\r\n private keycloak: KeycloakService,\r\n private chartData: ChartDataService, @Inject('environment') private environment\r\n ) {\r\n if (this.profile.id) {\r\n this.getCount().subscribe(() => {\r\n this.connect();\r\n this.subscribe();\r\n });\r\n }\r\n // setInterval(() => {\r\n // this.testNotification().subscribe((res) => {\r\n // this.chartData.refreshData.emit();\r\n // });\r\n // }, 10000);\r\n }\r\n getCount() {\r\n return this.doCountNew(this.profile.id).pipe(\r\n map((data) => {\r\n this._notificationsCount = data;\r\n this.update.next();\r\n return data;\r\n })\r\n );\r\n }\r\n reset() {\r\n this._notifications = [];\r\n this._notificationsCount = 0;\r\n }\r\n\r\n fetchNotifications() {\r\n return this.getNotifications(this.profile.id, {\r\n page:\r\n this._notifications.length > 0\r\n ? Math.ceil(this._notifications.length / this.pageSize)\r\n : 0,\r\n size: this.pageSize,\r\n paged: true,\r\n sort: 'sendDate,desc',\r\n sorted: true,\r\n }).pipe(\r\n map((notifications: any) => {\r\n if (notifications.items) {\r\n this._notifications = this._notifications.concat(notifications.items);\r\n return notifications;\r\n } else {\r\n this._notifications = [];\r\n return [];\r\n }\r\n }),\r\n catchError(() => {\r\n this._notifications = [];\r\n return [];\r\n })\r\n );\r\n }\r\n resetCount() {\r\n this._notificationsCount = 0;\r\n }\r\n markAllAsRead() {\r\n this.doMarkAllAsRead(this.profile.id).subscribe(() => {\r\n this._notifications.forEach((item) => (item.status = 'READ'));\r\n });\r\n }\r\n updateStatus(notification, onOpen = false) {\r\n const bool =\r\n notification.status === 'UN_READ' ||\r\n notification.status === 'NEW' ||\r\n onOpen;\r\n if (bool) {\r\n this.doMarkAsRead(notification.id).subscribe(() => {\r\n notification.status = 'READ';\r\n this.getCount().subscribe(() => {});\r\n });\r\n } else {\r\n this.doMarkAsUnread(notification.id).subscribe(() => {\r\n notification.status = 'UN_READ';\r\n this.getCount().subscribe(() => {});\r\n });\r\n }\r\n }\r\n deleteNotification(notification) {\r\n this.doDeleteNotification(notification.id).subscribe(() => {\r\n this._notifications.filter((item, index) => {\r\n if (item.id === notification.id) {\r\n this._notifications.splice(index, 1);\r\n return;\r\n }\r\n });\r\n this.update.next();\r\n });\r\n }\r\n getNotifications(userId, queryParams = {}) {\r\n const endpoint = `${this.environment.notifications}/api/system-notifications/all/${userId}`;\r\n return this.http\r\n .get<any>(endpoint, { observe: 'response', params: queryParams })\r\n .pipe(\r\n map((resp) => ({\r\n totalCount: resp.headers.get('x-total-count'),\r\n items: resp.body.map((item) => item),\r\n })),\r\n catchError(this.handleError('getNotifications', [])),\r\n publishReplay(1),\r\n refCount()\r\n );\r\n }\r\n doCountNew(userId, queryParams = {}) {\r\n const endpoint = `${this.environment.notifications}/api/system-notifications/countNew/${userId}`;\r\n return this.http\r\n .get<any>(endpoint, { params: queryParams })\r\n .pipe(catchError(this.handleError('countNew', [])));\r\n }\r\n doResetCountNew(userId, queryParams = {}) {\r\n const endpoint = `${this.environment.notifications}/api/system-notifications/resetCount/${userId}`;\r\n return this.http\r\n .put<any>(endpoint, { params: queryParams })\r\n .pipe(catchError(this.handleError('resetCountNew', [])));\r\n }\r\n doCountUnread(userId, queryParams = {}) {\r\n const endpoint = `${this.environment.notifications}/api/system-notifications/countUnRead/${userId}`;\r\n return this.http\r\n .get<any>(endpoint, { params: queryParams })\r\n .pipe(catchError(this.handleError('countUnread', [])));\r\n }\r\n doMarkAllAsRead(userId, queryParams = {}) {\r\n const endpoint = `${this.environment.notifications}/api/system-notifications/markAllAsRead/${userId}`;\r\n return this.http\r\n .put<any>(endpoint, { params: queryParams })\r\n .pipe(catchError(this.handleError('markAllAsRead', [])));\r\n }\r\n doMarkAsRead(notificationId, queryParams = {}) {\r\n const endpoint = `${this.environment.notifications}/api/system-notifications/markAsRead/${notificationId}`;\r\n return this.http\r\n .put<any>(endpoint, { params: queryParams })\r\n .pipe(catchError(this.handleError('markAsRead', [])));\r\n }\r\n doMarkAsUnread(notificationId, queryParams = {}) {\r\n const endpoint = `${this.environment.notifications}/api/system-notifications/markAsUnRead/${notificationId}`;\r\n return this.http\r\n .put<any>(endpoint, { params: queryParams })\r\n .pipe(catchError(this.handleError('markAsUnread', [])));\r\n }\r\n doDeleteNotification(notificationId, queryParams = {}) {\r\n const endpoint = `${this.environment.notifications}/api/system-notifications/${notificationId}`;\r\n return this.http\r\n .delete<any>(endpoint, { params: queryParams })\r\n .pipe(catchError(this.handleError('deleteNotification', [])));\r\n }\r\n private handleError<T>(operation = 'operation', result?: T) {\r\n return (error: any): Observable<T> => {\r\n // TODO: send the error to remote logging infrastructure\r\n console.error(error); // log to console instead\r\n\r\n // TODO: better job of transforming error for user consumption\r\n console.log(`${operation} failed: ${error.message}`);\r\n\r\n // Let the app keep running by returning an empty result.\r\n result['status'] = error.status;\r\n if (error.error.hasOwnProperty('message')) {\r\n result['message'] = error.error.message;\r\n result['type'] = error.error.type;\r\n }\r\n\r\n return of(result as T);\r\n };\r\n }\r\n async connect() {\r\n if (this.connectedPromise === null) {\r\n this.connection = this.createConnection();\r\n }\r\n // building absolute path so that websocket doesn't fail when deploying with a context path\r\n let url;\r\n url = `${this.environment.notifications}/websocket/ekhaa`; //url\r\n const socket = new SockJS(url);\r\n this.stompClient = Stomp.over(socket);\r\n const headers = {\r\n // Upgrade: 'websocket',\r\n // Connection: 'Upgrade',\r\n token: `${await this.keycloak.getToken()}`,\r\n };\r\n if (!this.alreadyConnectedOnce) {\r\n this.stompClient.connect(headers, () => {\r\n this.alreadyConnectedOnce = true;\r\n this.connectedPromise('success');\r\n this.connectedPromise = null;\r\n });\r\n }\r\n }\r\n\r\n disconnect() {\r\n if (this.stompClient !== null && this.alreadyConnectedOnce) {\r\n this.stompClient.disconnect();\r\n this.stompClient = null;\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n this.subscription = null;\r\n }\r\n this.alreadyConnectedOnce = false;\r\n } else if (this.connectedPromise) {\r\n this.connection.then(() => {\r\n this.disconnect();\r\n });\r\n }\r\n }\r\n\r\n subscribe() {\r\n if (this.connection) {\r\n this.connection.then(() => {\r\n if (this.stompClient) {\r\n this.subscriber = this.stompClient.subscribe(\r\n '/user/topic/notification',\r\n (data) => {\r\n const notification = JSON.parse(data.body);\r\n this._notifications.unshift(notification);\r\n this.getCount().subscribe(() => {});\r\n this.listenerObserver.emit(notification);\r\n }\r\n );\r\n }\r\n });\r\n }\r\n }\r\n\r\n unsubscribe() {\r\n if (this.subscriber !== null) {\r\n this.subscriber.unsubscribe();\r\n }\r\n this.disconnect();\r\n }\r\n\r\n private createConnection(): Promise<any> {\r\n return new Promise((resolve, reject) => (this.connectedPromise = resolve));\r\n }\r\n\r\n testNotification(): Observable<any> {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .operation('System.Notification', {\r\n url: `${this.environment.nuxeo}${this.environment.customAutomation}`,\r\n })\r\n .params({\r\n applicationKey: 'ctsn',\r\n notificationKey: 'NotificationWhenOutgoingCorrespondneceApprove',\r\n apiData:\r\n '{\"id\": \"a7ed629e-c8ea-4e84-8b83-329009515878\",\"schema\": \"Correspondence\"}',\r\n data: '{}',\r\n groupsId: [],\r\n usersId: ['cts_sec'],\r\n })\r\n .input('a7ed629e-c8ea-4e84-8b83-329009515878')\r\n .execute()\r\n ).pipe(\r\n catchError((err) => {\r\n console.log(err);\r\n throw err;\r\n })\r\n );\r\n }\r\n}\r\n","import { ChangeDetectorRef, Component, OnDestroy } from '@angular/core';\r\nimport { DatePipe } from '@angular/common';\r\nimport { NotificationsService } from '../../notifications.service';\r\n\r\n/**\r\n * Notifications Modal Component\r\n */\r\n@Component({\r\n selector: 'app-notifications-list',\r\n templateUrl: './notifications-list.component.html',\r\n styleUrls: ['./notifications-list.component.scss'],\r\n host: { class: 'notification-list' }\r\n})\r\nexport class NotificationsListComponent implements OnDestroy {\r\n get notifications() {\r\n return this.notificationsService.notifications;\r\n }\r\n _itemHeight = 79;\r\n get itemHeight(): number {\r\n return this._itemHeight;\r\n }\r\n set itemHeight(value: number) {\r\n this._itemHeight = value;\r\n }\r\n _divider = true;\r\n get divider(): boolean {\r\n return this._divider;\r\n }\r\n set divider(value: boolean) {\r\n this._divider = value;\r\n }\r\n _all = true;\r\n get all(): boolean {\r\n return this._all;\r\n }\r\n set all(value: boolean) {\r\n this._all = value;\r\n }\r\n _title = 'notifications.title';\r\n get title(): string {\r\n return this._title;\r\n }\r\n set title(value: string) {\r\n this._title = value;\r\n }\r\n throttle = 300;\r\n scrollDistance = 7;\r\n scrollUpDistance = 2;\r\n loading = false;\r\n hasMore = true;\r\n constructor(\r\n public notificationsService: NotificationsService,\r\n private ref: ChangeDetectorRef,\r\n public datePipe: DatePipe\r\n ) {}\r\n\r\n markAllAsRead() {\r\n this.notificationsService.markAllAsRead();\r\n }\r\n \r\n openNotification(notification) {\r\n if (notification.status === 'UN_READ' || notification.status === 'NEW') {\r\n this.notificationsService.updateStatus(notification, true);\r\n }\r\n // do something when notification clicked\r\n }\r\n onUpdate(data) {\r\n if (data.notification) {\r\n switch (data.action) {\r\n case 'delete':\r\n this.notificationsService.deleteNotification(data.notification);\r\n break;\r\n case 'status':\r\n this.notificationsService.updateStatus(data.notification);\r\n break;\r\n }\r\n }\r\n }\r\n trackBy(index, item) {\r\n return item.id;\r\n }\r\n handleOpen(item) {\r\n // this.modalController.dismiss();\r\n this.notificationsService.updateStatus(item, true);\r\n }\r\n\r\n compareDate = (item, itemIndex, items) => {\r\n if (!this.divider) {\r\n return null;\r\n }\r\n const today = new Date();\r\n const itemDate = new Date(item.sendDate);\r\n const isToday =\r\n itemDate.getDate() === today.getDate() &&\r\n itemDate.getMonth() === today.getMonth() &&\r\n itemDate.getFullYear() === today.getFullYear();\r\n const prevItem = items[itemIndex - 1];\r\n let isPrevToday = 0;\r\n if (prevItem) {\r\n const NextItemDate = new Date(prevItem.sendDate);\r\n isPrevToday =\r\n NextItemDate.getDate() === today.getDate() &&\r\n NextItemDate.getMonth() === today.getMonth() &&\r\n NextItemDate.getFullYear() === today.getFullYear()\r\n ? 2\r\n : 1;\r\n }\r\n if (!isToday && (isPrevToday === 0 || isPrevToday === 2)) {\r\n return 'notifications.earlier';\r\n }\r\n if (isToday && (isPrevToday === 0 || isPrevToday === 1)) {\r\n return 'notifications.new';\r\n }\r\n return null;\r\n };\r\n\r\n getItemHeight = () => {\r\n return this.itemHeight;\r\n };\r\n\r\n goToDetails(notification) {}\r\n\r\n onScrollDown() {\r\n if (this.hasMore) {\r\n this.fetchMore();\r\n }\r\n }\r\n fetchMore() {\r\n this.loading = true;\r\n this.notificationsService.fetchNotifications().subscribe(data => {\r\n this.loading = false;\r\n if (\r\n data['items'].length === 0 ||\r\n data['items'].length < this.notificationsService.pageSize\r\n ) {\r\n this.hasMore = false;\r\n }\r\n this.ref.markForCheck();\r\n });\r\n }\r\n ngOnDestroy() {\r\n this.notificationsService.reset();\r\n }\r\n close() {\r\n // this.modalController.dismiss();\r\n }\r\n}\r\n","<div class=\"toolbar\">\r\n <div class=\"title\">\r\n <div>{{ \"notifications.notifications\" | translate }}</div>\r\n </div>\r\n <div class=\"flex justify-end\">\r\n <button\r\n mat-button\r\n (click)=\"markAllAsRead()\"\r\n size=\"small\"\r\n fill=\"none\"\r\n class=\"markAllAsRead-btn\"\r\n >\r\n {{ \"notifications.markAllAsRead\" | translate }}\r\n </button>\r\n </div>\r\n</div>\r\n<!-- [matTooltip]=\"'notifications.markAllAsRead' | translate\"\r\n [matTooltipPosition]=\"'before'\" -->\r\n<div *ngIf=\"!notifications?.length\" class=\"no-notifications\">\r\n <p>\r\n {{ \"notifications.noNotifications\" | translate }}\r\n </p>\r\n</div>\r\n<div\r\n infiniteScroll\r\n [scrollWindow]=\"false\"\r\n [infiniteScrollDistance]=\"scrollDistance\"\r\n [infiniteScrollThrottle]=\"throttle\"\r\n (scrolled)=\"onScrollDown()\"\r\n class=\"notifications-container scroll\"\r\n>\r\n <mat-list class=\"\">\r\n <ng-container\r\n *ngFor=\"\r\n let notification of notifications;\r\n let i = index;\r\n trackBy: trackBy\r\n \"\r\n >\r\n <!-- <mat-divider class=\"marginize\"></mat-divider> -->\r\n <app-notification-item\r\n (click)=\"openNotification(notification)\"\r\n (update)=\"onUpdate($event)\"\r\n [notification]=\"notification\"\r\n ></app-notification-item>\r\n </ng-container>\r\n <div\r\n *ngIf=\"loading\"\r\n style=\"display: grid; place-items: center; margin-top: 10px\"\r\n >\r\n <mat-spinner [diameter]=\"48\" style=\"margin: 0 auto\"></mat-spinner>\r\n </div>\r\n </mat-list>\r\n</div>\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n OnDestroy,\r\n OnInit,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { ActiveToast, ToastrService } from 'ngx-toastr';\r\nimport { take } from 'rxjs/internal/operators/take';\r\nimport { TimeAgoPipe } from '../../../../pipes/time-ago.pipe';\r\nimport { NotificationsService } from '../../notifications.service';\r\nimport { NotificationToastComponent } from '../notification-toast/notification-toast.component';\r\n\r\n@Component({\r\n selector: 'app-notifications-button',\r\n templateUrl: './notifications-button.component.html',\r\n styleUrls: ['./notifications-button.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class NotificationsButtonComponent implements OnInit, OnDestroy {\r\n get notificationsCount() {\r\n return this.notificationsService.notificationsCount;\r\n }\r\n\r\n subscription;\r\n updater;\r\n constructor(\r\n public notificationsService: NotificationsService,\r\n public translate: TranslateService,\r\n public toastr: ToastrService,\r\n public TimeAgo: TimeAgoPipe,\r\n public router: Router,\r\n private ref: ChangeDetectorRef\r\n ) {}\r\n /*\r\n async openNotifications(event) {\r\n const dir = this.translate.instant('dir');\r\n const notificationsModal = await this.modalController.create({\r\n cssClass: 'side-modal notifications',\r\n enterAnimation: dir === 'rtl' ? slideInRtl : slideIn,\r\n leaveAnimation: dir === 'rtl' ? slideOutRtl : slideOut,\r\n component: NotificationsModalComponent,\r\n showBackdrop: false\r\n });\r\n return await notificationsModal.present().then(() => {\r\n this.notificationsService.resetCount();\r\n\r\n });\r\n }\r\n */\r\n getNotifications() {\r\n this.notificationsService.fetchNotifications().subscribe(() => {\r\n this.notificationsService.resetCount();\r\n });\r\n }\r\n ngOnInit() {\r\n this.subscription = this.notificationsService.listenerObserver.subscribe(\r\n (activity) => {\r\n this.showToastr(activity)\r\n .onTap.pipe(take(1))\r\n .subscribe(() => {\r\n this.notificationsService.updateStatus(activity, true);\r\n if (activity.data?.correspondenceId) {\r\n this.router.navigate(\r\n [\r\n {\r\n outlets: {\r\n viewer: ['view', activity.data.correspondenceId],\r\n },\r\n },\r\n ],\r\n {\r\n queryParams: { location: this.router.url },\r\n }\r\n );\r\n }\r\n });\r\n this.ref.markForCheck();\r\n }\r\n );\r\n\r\n this.updater = this.notificationsService.update.subscribe((data) => {\r\n this.ref.detectChanges();\r\n });\r\n // setTimeout(() => {\r\n // this.showToastr({\r\n // sendDate:\"111\",\r\n // content:\"test\",\r\n // data:{\r\n // correspondenceId:\"f9c36fe1-7054-4f81-a89b-096ad24a03b5\"\r\n // }\r\n // }).onTap.pipe(take(1)).subscribe(() => {\r\n // // this.notificationsService.updateStatus(activity, true);\r\n // console.log(\"here\")\r\n // })\r\n // }, 1000);\r\n }\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n this.updater.unsubscribe();\r\n this.notificationsService.unsubscribe();\r\n }\r\n // test() {\r\n // this.toastr.show(`dsssdsds`, 'here is the content of the notification ', {\r\n // toastComponent: NotificationToastComponent,\r\n // closeButton: true,\r\n // // extendedTimeOut: 0,\r\n // timeOut: 10000,\r\n // // tapToDismiss: false,\r\n // enableHtml: true,\r\n // positionClass:\r\n // this.translate.instant('dir') === 'rtl'\r\n // ? 'toast-bottom-left'\r\n // : 'toast-bottom-right',\r\n // toastClass: 'notification-toast',\r\n // });\r\n // }\r\n\r\n showToastr(activity): ActiveToast<any> {\r\n const activeToast = this.toastr.show(\r\n `${this.TimeAgo.transform(activity.sendDate)}`,\r\n activity.content,\r\n {\r\n toastComponent: NotificationToastComponent,\r\n closeButton: true,\r\n timeOut: 10000,\r\n enableHtml: true,\r\n positionClass:\r\n this.translate.instant('dir') === 'rtl'\r\n ? 'toast-bottom-left'\r\n : 'toast-bottom-right',\r\n toastClass: 'notification-toast',\r\n }\r\n );\r\n activeToast.toastRef.componentInstance.id = activity.data.correspondenceId;\r\n\r\n return activeToast;\r\n }\r\n}\r\n","<div [matMenuTriggerFor]=\"langMenu\" class=\"notification\" (click)=\"getNotifications()\" class=\"search-wrapper\">\r\n <span matBadgeSize=\"small\" matBadge=\"{{ notificationsCount }}\" matBadgeColor=\"warn\" matbadgeposition=\"before\"\r\n class=\"bi bi-bell bell\"></span>\r\n</div>\r\n<mat-menu class=\"mat-menu-panel myMenu notification-list\" #langMenu=\"matMenu\">\r\n <app-notifications-list></app-notifications-list>\r\n</mat-menu>\r\n","import { CommonModule, DatePipe } from '@angular/common';\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { NotificationItemComponent } from './components/notification-item/notification-item.component';\r\nimport { NotificationOptionsComponent } from './components/notification-options/notification-options.component';\r\nimport { NotificationsButtonComponent } from './components/notifications-button/notifications-button.component';\r\nimport { NotificationsListComponent } from './components/notifications-list/notifications-list.component';\r\nimport { NotificationsService } from './notifications.service';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport {\r\n MatProgressSpinner,\r\n MatProgressSpinnerModule,\r\n} from '@angular/material/progress-spinner';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatBadgeModule } from '@angular/material/badge';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { NotificationToastComponent } from './components/notification-toast/notification-toast.component';\r\nimport { PipesModule } from '../../pipes/pipes.module';\r\n\r\n/** @ignore */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n InfiniteScrollModule,\r\n MatListModule,\r\n PipesModule,\r\n MatMenuModule,\r\n MatIconModule,\r\n TranslateModule,\r\n MatProgressSpinnerModule,\r\n MatTooltipModule,\r\n InfiniteScrollModule,\r\n MatBadgeModule,\r\n TranslateModule,\r\n MatToolbarModule\r\n ],\r\n declarations: [\r\n NotificationsListComponent,\r\n NotificationsButtonComponent,\r\n NotificationItemComponent,\r\n NotificationOptionsComponent,\r\n NotificationToastComponent,\r\n ],\r\n exports: [\r\n NotificationsListComponent,\r\n NotificationsButtonComponent,\r\n NotificationItemComponent,\r\n NotificationOptionsComponent,\r\n ],\r\n providers: [\r\n DatePipe,\r\n NotificationsService,\r\n ],\r\n entryComponents: [\r\n NotificationsListComponent,\r\n NotificationsButtonComponent,\r\n NotificationItemComponent,\r\n NotificationOptionsComponent,\r\n ],\r\n})\r\nexport class NotificationsModule {}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\n\r\n/**\r\n * A component for filtering that can be generated dynamically by providing inputs object,\r\n * which will generate a form for filtering and emit the form value on filtering.\r\n *\r\n * @title\r\n * Filter Component\r\n *\r\n * @example\r\n * <cts-filter [fields]=\"filterFields\" (onFiltering)=\"filterData($event)\"></cts-filter>\r\n */\r\n@Component({\r\n selector: 'cts-filter',\r\n templateUrl: './filter.component.html',\r\n styleUrls: ['./filter.component.scss']\r\n})\r\nexport class FilterComponent implements OnInit {\r\n /** Fields array */\r\n @Input() fields = [];\r\n /** Filter title */\r\n @Input() filterTitle = 'Filter';\r\n /** Emits values on filter button click */\r\n @Output() onFiltering = new EventEmitter();\r\n filterForm: FormGroup;\r\n constructor(private formBuilder: FormBuilder) {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n this.initiateForm();\r\n let data = JSON.parse(sessionStorage.getItem('dataSource'))\r\n this.filterForm.patchValue({\r\n subject: data?.Correspondence_subject,\r\n externalNumber: data?.Correspondence_externalCorrespondenceNumber,\r\n from: data?.Correspondence_from,\r\n refrenceNumber: data?.Correspondence_referenceNumber,\r\n secrecyLevel: data?.Correspondence_secrecyLevel,\r\n to: data?.Correspondence_to,\r\n toDate: data?.dublincore_created_max,\r\n fromDate: data?.dublincore_created_min,\r\n state: data?.system_currentLifeCycleState\r\n });\r\n }\r\n\r\n initiateForm() {\r\n let controls = {};\r\n this.fields.map(field => {\r\n controls[field.formControlName] = this.formBuilder.control('')\r\n })\r\n this.filterForm = this.formBuilder.group(controls);\r\n }\r\n\r\n constructSubmission(param: boolean = true) {\r\n let submisionObject = {};\r\n this.fields.map(field => {\r\n if (field.type === 'rang') {\r\n submisionObject[field.minQueryParamName] = this.filterForm.value[field.formControlName] ? this.filterForm.value[field.formControlName].from : null;\r\n submisionObject[field.maxQueryParamName] = this.filterForm.value[field.formControlName] ? this.filterForm.value[field.formControlName].to : null;\r\n } else {\r\n submisionObject[field.queryParamName] = this.filterForm.value[field.formControlName] ? this.filterForm.value[field.formControlName] : '';\r\n }\r\n });\r\n if (param)\r\n sessionStorage.setItem('dataSource', JSON.stringify(submisionObject));\r\n this.onFiltering.emit(submisionObject);\r\n console.log(submisionObject);\r\n }\r\n\r\n filter() {\r\n this.constructSubmission();\r\n }\r\n\r\n reset() {\r\n this.filterForm.reset();\r\n sessionStorage.removeItem('dataSource');\r\n this.constructSubmission(false);\r\n }\r\n}\r\n\r\n","<div class=\"filter-wrapper\">\r\n <div class=\"filter-title\">\r\n <!-- {{filterTitle | translate}} -->\r\n </div>\r\n <div class=\"iner-filter-wrapper\" *ngIf=\"filterForm\">\r\n <form [formGroup]=\"filterForm\">\r\n <div class=\"single-control-wrapper\" *ngFor=\"let field of fields\">\r\n\r\n <div class=\"control\" *ngIf=\"field.type === 'text'\">\r\n <app-dynamic-form-textitem\r\n [label]=\"field.label\"\r\n [formControlName]=\"field.formControlName\"\r\n placeholder=\"{{ 'CREATE.PLACE_HOLDER' | translate }} {{\r\n field.placeholder | translate\r\n }}\"\r\n >\r\n </app-dynamic-form-textitem>\r\n </div>\r\n\r\n <div class=\"control\" *ngIf=\"field.type === 'dropdown'\">\r\n <app-dynamic-form-vocabulary-item\r\n [shwoAllValues]=\"false\"\r\n [label]=\"field.label\"\r\n [bindLabel]=\"field.bindLabel\"\r\n [bindValue]=\"field.bindValue\"\r\n [placeholder]=\"field.placeholder | translate\"\r\n [multiple]=\"field.multiple\"\r\n [searchable]=\"field.searchable\"\r\n [closeOnSelect]=\"field.closeOnSelect\"\r\n [hideSelectedItems]=\"field.hideSelectedItems\"\r\n [vocabularyType]=\"field.vocabularyType\"\r\n [formControlName]=\"field.formControlName\"\r\n >\r\n </app-dynamic-form-vocabulary-item>\r\n </div>\r\n\r\n <div class=\"control\" *ngIf=\"field.type === 'rang'\">\r\n <cts-dynamic-form-hijri-dateitem [label]=\"field.label\" [formControlName]=\"field.formControlName\"[range]=\"true\" [vertical]=\"false\" >\r\n </cts-dynamic-form-hijri-dateitem>\r\n </div>\r\n\r\n <div class=\"control\" *ngIf=\"field.type === 'department'\">\r\n <app-dynamic-form-department\r\n [label]=\"field.label\"\r\n placeholder=\"{{ 'CREATE.PLACE_HOLDER' | translate }} {{\r\n field.placeholder | translate\r\n }}\"\r\n [formControlName]=\"field.formControlName\"\r\n >\r\n </app-dynamic-form-department>\r\n </div>\r\n\r\n <div class=\"control\" *ngIf=\"field.type === 'toggle'\">\r\n <cts-dynamic-form-slide-toggleitem\r\n [label]=\"field.label\"\r\n [formControlName]=\"field.formControlName\"\r\n ></cts-dynamic-form-slide-toggleitem>\r\n </div>\r\n\r\n <div class=\"control\" *ngIf=\"field.type === 'date'\">\r\n <cts-dynamic-form-hijri-dateitem\r\n [formControlName]=\"field.formControlName\"\r\n [label]=\"field.label\"\r\n >\r\n </cts-dynamic-form-hijri-dateitem>\r\n </div>\r\n \r\n\r\n </div>\r\n\r\n </form>\r\n \r\n </div>\r\n <div class=\"form-actions\">\r\n <button class=\"my-button mx-2\" type=\"button\" (click)=\"filter()\"> {{'FILTER' | translate}}</button>\r\n <button class=\"my-button reset mx-2\" type=\"button\" (click)=\"reset()\"> {{'reset' | translate}}</button>\r\n </div>\r\n</div>\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FilterComponent } from './filter/filter.component';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { DynamicFormModule } from '../dynamic-form/dynamic-form.module';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\n/**\r\n * @title\r\n * Filter Module\r\n */\r\n@NgModule({\r\n declarations: [\r\n FilterComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n TranslateModule ,\r\n DynamicFormModule,\r\n FormsModule,\r\n ReactiveFormsModule\r\n ],\r\n exports:[\r\n FilterComponent\r\n ]\r\n})\r\nexport class FilterModule { }\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@Component({\r\n selector: 'app-comment-item',\r\n templateUrl: './comment-item.component.html',\r\n styleUrls: ['./comment-item.component.scss']\r\n})\r\nexport class CommentItemComponent implements OnInit {\r\n @Input()\r\n comment;\r\n @Input()\r\n loaderType = 'scroll';\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n console.log(\"comment comment\" , this.comment)\r\n }\r\n}\r\n","<div class=\"comment-item\">\r\n <app-user-card [user]=\"comment.Commenter\" [diameter]=\"12\">\r\n <div class=\"lineOne\">\r\n {{ comment.Commenter.properties.firstName }}\r\n {{ comment.Commenter.properties.lastName }}\r\n </div>\r\n <div class=\"lineOnePart2\">\r\n <span class=\"date\" matTooltip='{{ comment?.creationDate | localizedDate:\r\n \"fullDate\"}}' matTooltipClass=\"tdf-tooltip\" TooltipPosition='below'>\r\n <span class=\"px-1\">|</span>{{ comment?.creationDate | timeAgo }}</span>\r\n </div>\r\n <div class=\"lineTwo\">\r\n <app-read-more class=\"comment-text\" [text]=\"comment?.text\" [wordCount]=\"loaderType === 'scroll' ? 20 : 60\">\r\n </app-read-more>\r\n </div>\r\n </app-user-card>\r\n</div>\r\n","export class CommentConstants {\r\n public static pageProvider = {\r\n comments: {\r\n name: 'PP_Comments', headers: {\r\n 'X-NXproperties': '*',\r\n 'X-NXenrichers-document': 'dc:contributors',\r\n 'X-NXRepository': 'default'\r\n }\r\n }\r\n\r\n };\r\n public static operations = {};\r\n public static fields = {\r\n ancestorIds: 'comment:ancestorIds',\r\n author: 'comment:author',\r\n creationDate: 'comment:creationDate',\r\n modificationDate: 'comment:modificationDate',\r\n parentId: 'comment:parentId',\r\n text: 'comment:text',\r\n contributors: 'dc:contributors',\r\n created: 'dc:created',\r\n creator: 'dc:creator',\r\n description: 'dc:description'\r\n };\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { from, Observable } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { AdapterService } from '../../../Core/adapters/adapter.service';\r\nimport { NuxeoService } from '../../../Core/services/nuxeo/nuxeo.service';\r\nimport { CommentConstants } from '../constants/comment';\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class CommentApiService {\r\n constructor(private nuxeoService: NuxeoService, private commentAdapter: AdapterService , @Inject('environment') private environment) { }\r\n\r\n getComments(parentId, params = {}): Observable<any> {\r\n\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .request(`${this.environment.commentsApi}/pp/${CommentConstants.pageProvider.comments.name}`)\r\n .queryParams({\r\n queryParams: parentId,\r\n ...params\r\n })\r\n .get({\r\n headers: CommentConstants.pageProvider.comments.headers,\r\n })\r\n ).pipe(\r\n map((data: any) => {\r\n // data.entries.map((item) => this.commentAdapter.adaptIn(item));\r\n return data;\r\n }),\r\n catchError((err) => {\r\n throw err;\r\n })\r\n );\r\n\r\n\r\n }\r\n createComment(comment, id): Observable<any> {\r\n return from(\r\n this.nuxeoService.nuxeoClient\r\n .request(`id/${id}/@comment`)\r\n .queryParams({ properties: '*' })\r\n .post({\r\n body: { 'entity-type': 'comment', ...comment },\r\n })\r\n ).pipe(\r\n catchError((err) => {\r\n throw err;\r\n })\r\n );\r\n }\r\n}\r\n","import { Component, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { browser } from 'protractor';\r\nimport { CommentApiService } from '../../services/comment-api.service';\r\n/**\r\n * @ignore\r\n */\r\n@Component({\r\n selector: 'app-comments-list',\r\n templateUrl: './comments-list.component.html',\r\n styleUrls: ['./comments-list.component.scss'],\r\n})\r\nexport class CommentsListComponent implements OnInit {\r\n @Input()\r\n entityId;\r\n @Input()\r\n pageSize = 4;\r\n @Input()\r\n loaderType = 'scroll';\r\n comments = [];\r\n throttle = 0;\r\n distance = 2;\r\n p = 0;\r\n\r\n public totalRecords;\r\n fetching = false;\r\n infiniteScrollDisabled = false;\r\n @ViewChild('scrollDiv') scrollDiv;\r\n constructor(\r\n private commentApiService: CommentApiService,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.getComments(this.p);\r\n }\r\n\r\n getComments = (page, reset = false) => {\r\n this.fetching = !reset;\r\n if (reset) {\r\n this.scrollDiv.nativeElement.scroll(0, 0);\r\n }\r\n this.commentApiService.getComments(this.entityId, {\r\n currentPageIndex: page,\r\n pageSize: this.pageSize\r\n }).subscribe((res) => {\r\n console.log('comment', res)\r\n this.fetching = false;\r\n this.totalRecords = res.resultsCount;\r\n this.comments = reset ? res.entries : this.comments.concat(res.entries);\r\n this.infiniteScrollDisabled = !res.isNextPageAvailable;\r\n });\r\n }\r\n onScroll(event): void {\r\n this.getComments(++this.p);\r\n }\r\n}\r\n","<div\r\n class=\"scroll-div overflow-auto dark-scroll\"\r\n #scrollDiv\r\n infinite-scroll\r\n [scrollWindow]=\"false\"\r\n [infiniteScrollDistance]=\"distance\"\r\n [infiniteScrollDisabled]=\"infiniteScrollDisabled\"\r\n [infiniteScrollThrottle]=\"throttle\"\r\n (scrolled)=\"onScroll($event)\"\r\n>\r\n <app-comment-item\r\n [loaderType]=\"loaderType\"\r\n class=\"mb-2\"\r\n *ngFor=\"let comment of comments\"\r\n [comment]=\"comment\"\r\n >\r\n </app-comment-item>\r\n <div *ngIf=\"fetching && loaderType === 'scroll'\">\r\n <mat-spinner [diameter]=\"30\"></mat-spinner>\r\n </div>\r\n <div\r\n class=\"button-wrapper\"\r\n *ngIf=\"!infiniteScrollDisabled && loaderType === 'button'\"\r\n >\r\n <cts-button\r\n [theme]=\"'outline-dark'\"\r\n [size]=\"'regular'\"\r\n (onClick)=\"onScroll($event)\"\r\n [loading]=\"fetching\"\r\n >\r\n {{ \"comment.loadMore\" | translate }}\r\n </cts-button>\r\n </div>\r\n</div>\r\n\r\n<div\r\n *ngIf=\"comments.length === 0 && !fetching\"\r\n class=\"No-Items flex justify-center\"\r\n>\r\n <cts-no-data [message]=\"'comment.nocomment'\"></cts-no-data>\r\n</div>\r\n","import { Component, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { browser } from 'protractor';\r\nimport { NuxeoService } from '../../../../Core/services/nuxeo/nuxeo.service';\r\nimport { CommentApiService } from '../../services/comment-api.service';\r\nimport { CommentsListComponent } from '../comments-list/comments-list.component';\r\n\r\n/**\r\n * A component to display and add comments on a nuxeo document\r\n *\r\n * ![Screenshot-1](../screenshots/comments.png)\r\n * @title\r\n * Comments dashlet\r\n * @example\r\n *\r\n * <app-comments-dashlet\r\n * [row]=\"false\"\r\n * [entityId]=\"file.uid\"\r\n * [showaddcomment]=\"true\"\r\n * ></app-comments-dashlet>\r\n */\r\n@Component({\r\n selector: 'app-comments-dashlet',\r\n templateUrl: './comments-dashlet.component.html',\r\n styleUrls: ['./comments-dashlet.component.scss'],\r\n})\r\nexport class CommentsDashletComponent implements OnInit {\r\n /** nuxeo document ID */\r\n @Input()\r\n entityId;\r\n /** toggle view mode row / column */\r\n /** Correspondance */\r\n @Input()\r\n correspondence;\r\n @Input()\r\n row?= true;\r\n /** disable/enable add comment section */\r\n @Input()\r\n showaddcomment?= true;\r\n comment;\r\n comments = [];\r\n throttle = 0;\r\n distance = 2;\r\n saving = false;\r\n totalRecords;\r\n @ViewChild(CommentsListComponent, { static: false })\r\n commentsList: CommentsListComponent;\r\n constructor(\r\n private translateService: TranslateService,\r\n private commentApiService: CommentApiService,\r\n public nuxeoService: NuxeoService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n\r\n\r\n onPost() {\r\n this.saving = true;\r\n let data = {\r\n author: this.nuxeoService.nuxeoClient.user.id,\r\n text: this.comment,\r\n };\r\n this.commentApiService.createComment(data, this.entityId).subscribe(\r\n (res) => {\r\n this.comment = '';\r\n this.saving = false;\r\n this.commentsList.p = 0;\r\n this.commentsList.getComments(0, true);\r\n },\r\n (error) => {\r\n this.saving = false;\r\n }\r\n );\r\n }\r\n}\r\n","<div class=\"comments-container\">\r\n <div class=\"comments-title\">\r\n {{ \"comment.comment\" | translate }} ({{ commentsList?.totalRecords }})\r\n </div>\r\n <div class=\"body\">\r\n <div class=\"comments-list-container\">\r\n <div *ngIf=\"showaddcomment\">\r\n <div class=\"comment-box\" *permission=\"{\r\n name: 'comments',\r\n entity: correspondence , user: nuxeoService.nuxeoClient.user\r\n }\">\r\n <div class=\"comment-input\">\r\n <textarea\r\n class=\"comment-area\"\r\n name=\"description\"\r\n id=\"description\"\r\n type=\"text\"\r\n rows=\"3\"\r\n required\r\n matTextareaAutosize\r\n matAutosizeMinRows=\"5\"\r\n matAutosizeMaxRows=\"10\"\r\n [(ngModel)]=\"comment\"\r\n [placeholder]=\"'comment.placeHolder' | translate\"\r\n #commentText=\"ngModel\"\r\n ></textarea>\r\n </div>\r\n <div class=\"add-container\">\r\n <div class=\"button-wrapper\">\r\n <cts-button\r\n [loading]=\"saving\"\r\n [theme]=\"'green'\"\r\n [size]=\"'regular'\"\r\n (click)=\"onPost()\"\r\n >\r\n {{ \"comment.add\" | translate }}\r\n </cts-button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"comment-list\"\r\n [ngClass]=\"{ 'fix-height col-6': row, 'col-12': !row }\"\r\n >\r\n <app-comments-list\r\n [loaderType]=\"row ? 'scroll' : 'button'\"\r\n [pageSize]=\"row ? 4 : 9\"\r\n [entityId]=\"entityId\"\r\n >\r\n </app-comments-list>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { RouterModule } from '@angular/router';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { DirectiveModule } from '../../directive/directive.module';\r\nimport { PipesModule } from '../../pipes/pipes.module';\r\nimport { LibrarySharedModule } from '../../shared/libraryShared.module';\r\nimport { CardModule } from '../card/card.module';\r\nimport { CommentItemComponent } from './components/comment-item/comment-item.component';\r\nimport { CommentsDashletComponent } from './components/comments-dashlet/comments-dashlet.component';\r\nimport { CommentsListComponent } from './components/comments-list/comments-list.component';\r\n\r\n/**\r\n * @title\r\n * Comments Module\r\n * \r\n */\r\n@NgModule({\r\n declarations: [\r\n CommentsDashletComponent,\r\n CommentsListComponent,\r\n CommentItemComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n LibrarySharedModule,\r\n InfiniteScrollModule,\r\n FormsModule,\r\n CardModule,\r\n PipesModule,\r\n TranslateModule,\r\n MatIconModule,\r\n MatProgressSpinnerModule,\r\n MatTooltipModule,\r\n DirectiveModule\r\n ],\r\n exports: [CommentsDashletComponent ],\r\n providers: [],\r\n})\r\nexport class CommentsModule {}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { NuxeoService } from '../../../Core/services/nuxeo/nuxeo.service';\r\n\r\n@Component({\r\n selector: 'cts-create-entity',\r\n templateUrl: './create-entity.component.html',\r\n styleUrls: ['./create-entity.component.scss']\r\n})\r\nexport class CreateEntityComponent implements OnInit {\r\n @Input() createActions: Array<any> = [\r\n {\r\n title: 'CREATE.INCOMING',\r\n link: 'create/create-incoming',\r\n iconName: 'bi bi-box-arrow-down',\r\n permission : \"entityCreateIncoming\"\r\n },\r\n {\r\n title: 'CREATE.OUTGOING',\r\n link: 'create/create-outgoing',\r\n iconName: 'bi bi-box-arrow-up',\r\n permission : \"entityCreateOutgoing\"\r\n },\r\n {\r\n title: 'MEMOS.ADD_MEMO',\r\n link: 'memos/create-memo',\r\n iconName: 'bi bi-folder2',\r\n permission : \"entityCreateMemo\"\r\n } \r\n ];\r\n openMenu = false;\r\n constructor(private router: Router , public nuxeoService: NuxeoService) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ToggleMenu(){\r\n this.openMenu = !this.openMenu;\r\n }\r\n\r\n actionCleciked(action){\r\n this.openMenu = false;\r\n this.router.navigate([action.link])\r\n }\r\n\r\n closeSideMenu(event){\r\n if(event.id !== \"trigger\") this.openMenu = false;\r\n }\r\n\r\n}\r\n","<div class=\"entity-iner-wrapper\" SetRtl (clickOutside)=\"closeSideMenu($event)\">\r\n\r\n <div class=\"entity-types\" [ngClass]=\"{'hide-menu': openMenu === false}\">\r\n <div *ngFor=\"let action of createActions\" (click)=\"actionCleciked(action)\">\r\n <div class=\"single-entity\" *permission=\"{name: action.permission , user: nuxeoService.nuxeoClient.user }\"> \r\n <div class=\"entity-name\">{{action.title | translate}}</div>\r\n <div class=\"entity-icon\">\r\n <span class=\"{{action.iconName}}\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"add-close\" (click)=\"ToggleMenu()\">\r\n <span class=\"bi bi-plus add\" id=\"trigger\" *ngIf=\"!openMenu\"></span>\r\n <span class=\"bi bi-x close-icon\" *ngIf=\"openMenu\"></span>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CreateEntityComponent } from './create-entity/create-entity.component';\r\nimport { DirectiveModule } from '../../directive/directive.module';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n\r\n/** @ignore */\r\n\r\n@NgModule({\r\n declarations: [CreateEntityComponent],\r\n imports: [\r\n CommonModule,\r\n DirectiveModule,\r\n TranslateModule,\r\n DirectiveModule\r\n ],\r\n exports:[\r\n CreateEntityComponent\r\n ]\r\n})\r\nexport class CreateEntityModule { }\r\n","import {\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n SimpleChanges,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { concat, Observable, of, Subject } from 'rxjs';\r\nimport {\r\n distinctUntilChanged,\r\n tap,\r\n switchMap,\r\n catchError,\r\n debounceTime,\r\n} from 'rxjs/operators';\r\nimport { NuxeoService } from '../../../../Core/services/nuxeo/nuxeo.service';\r\nimport { TagsApiService } from '../../services/tags-api.service';\r\n/**\r\n * a reusable component that allows to add or delete tags to a nuxeo document\r\n * ![Screenshot-1](../screenshots/tags.png)\r\n * @title\r\n * Tags\r\n */\r\n@Component({\r\n selector: 'cts-correspondence-tags',\r\n templateUrl: './correspondence-tags.component.html',\r\n styleUrls: ['./correspondence-tags.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class CorrespondenceTagsComponent implements OnInit, OnChanges {\r\n removable = false;\r\n loading = false;\r\n @Input()\r\n correspondence;\r\n correspondenceId;\r\n tagsList: any[];\r\n\r\n tagsFrom = new FormGroup({\r\n tag: new FormControl(null, Validators.required),\r\n });\r\n constructor(private tagsApiService: TagsApiService , public nuxeoService : NuxeoService) { }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.tagsList = this.correspondence.contextParameters ? this.correspondence.contextParameters.tags : [];\r\n }\r\n\r\n ngOnInit(): void {\r\n this.correspondenceId = this.correspondence.uid;\r\n this.tagsList = this.correspondence.contextParameters.tags;\r\n }\r\n\r\n addTag() {\r\n this.loading = true;\r\n if (this.tagsFrom.valid) {\r\n this.tagsApiService\r\n .addTagsToCorrespondence(this.correspondenceId, this.tagsFrom.value.tag)\r\n .subscribe(\r\n (res) => {\r\n this.loading = false;\r\n this.tagsApiService.getUpdatedFile.next(); // add > service -> vwer sub updae \r\n },\r\n (err) => {\r\n this.loading = false;\r\n }\r\n );\r\n }\r\n }\r\n deleteTag(tagId) {\r\n this.tagsApiService\r\n .deleteTagsToCorrespondence(this.correspondenceId, tagId)\r\n .subscribe(\r\n (res) => {\r\n this.tagsApiService.getUpdatedFile.next();\r\n },\r\n (err) => { }\r\n );\r\n }\r\n}\r\n","<div class=\"tags-header\">\r\n <div>{{ \"Tags.tags\" | translate }}</div>\r\n <div\r\n [matTooltip]=\"'Tags.toolTip' | translate\"\r\n class=\"allowEdit-tag-btn\"\r\n *permission=\"{ name: 'addTag', entity: correspondence, user: nuxeoService.nuxeoClient.user }\"\r\n (click)=\"removable = !removable\"\r\n >\r\n <span class=\"bi bi-pencil-fill\" *ngIf=\"!removable\"></span>\r\n <span class=\"close-icon bi bi-x\" *ngIf=\"removable\"></span>\r\n </div>\r\n</div>\r\n<div class=\"tags-wrapper\">\r\n <ng-container *ngIf=\"removable\">\r\n <div class=\"add-tag-container\">\r\n <div class=\"tag-form-container\">\r\n <form [formGroup]=\"tagsFrom\">\r\n <cts-dynamic-form-select-tag formControlName=\"tag\">\r\n </cts-dynamic-form-select-tag>\r\n </form>\r\n </div>\r\n <div class=\"add-tag-btn\">\r\n <cts-button\r\n [disabled]=\"this.tagsFrom.invalid\"\r\n [loading]=\"loading\"\r\n (onClick)=\"addTag()\"\r\n >{{ \"BUTTONS.ADD\" | translate }}</cts-button\r\n >\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"tagsList.length > 0; else noEntry\">\r\n <div class=\"tags-list-container row\">\r\n <mat-chip-list *ngFor=\"let tag of tagsList\">\r\n <mat-chip [removable]=\"removable\" (removed)=\"deleteTag(tag)\"\r\n >{{ tag }} <mat-icon matChipRemove *ngIf=\"removable\">cancel</mat-icon>\r\n </mat-chip>\r\n </mat-chip-list>\r\n </div>\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template #noEntry>\r\n <cts-no-data [message]=\"'Tags.noEntry'\" [border]=\"false\"></cts-no-data>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { CorrespondenceTagsComponent } from './components/correspondence-tags/correspondence-tags.component';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { LibrarySharedModule } from '../../shared/libraryShared.module';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { DynamicFormModule } from '../dynamic-form/dynamic-form.module';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { DirectiveModule } from '../../directive/directive.module';\r\n\r\n/**\r\n * @title\r\n * Tags Module\r\n */\r\n@NgModule({\r\n declarations: [CorrespondenceTagsComponent],\r\n imports: [\r\n CommonModule,\r\n TranslateModule,\r\n MatChipsModule,\r\n NgSelectModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n LibrarySharedModule,\r\n MatIconModule,\r\n DynamicFormModule,\r\n MatTooltipModule,\r\n DirectiveModule\r\n ],\r\n exports: [CorrespondenceTagsComponent],\r\n})\r\nexport class CtsTagsModule {}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cts-activity',\r\n templateUrl: './activity.component.html',\r\n styleUrls: ['./activity.component.scss']\r\n})\r\nexport class ActivityComponent implements OnInit {\r\n\r\n @Input()\r\n user;\r\n /** Field for something */\r\n @Input()\r\n lineOneClass: string;\r\n @Input()\r\n lineTwoClass;\r\n @Input()\r\n lineOnePart2;\r\n constructor() { }\r\n\r\n ngOnInit(): void { }\r\n\r\n}\r\n","<ng-container *ngIf=\"user?.properties\">\r\n <div class=\"avtivity-wrapper\">\r\n <div class=\"user-image-wrapper\">\r\n <cts-avatar\r\n class=\"cursor-pointer block diameter\"\r\n [user]=\"user\"\r\n routerLink=\"/users/profile/{{ user.properties.username }}\"\r\n ></cts-avatar>\r\n </div>\r\n <div class=\"user-data-wraper\">\r\n <div class=\"first-data-row\">\r\n <span\r\n class=\"data-link\"\r\n routerLink=\"/users/profile/{{ user.properties.username }}\"\r\n >\r\n <ng-content select=\".lineOne\"></ng-content>\r\n </span>\r\n <span class=\"data-link-part2 {{ lineOnePart2 }}\">\r\n <ng-content select=\".lineOnePart2 \"></ng-content>\r\n </span>\r\n </div>\r\n\r\n <span class=\"lineTwo {{ lineTwoClass }}\">\r\n <ng-content select=\".lineTwo \"></ng-content>\r\n </span>\r\n </div>\r\n </div>\r\n</ng-container>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ActivityComponent } from './activity/activity.component';\r\nimport { AvatarModule } from '../avatar/avatar.module';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n\r\n\r\n/**\r\n * @ignore\r\n */\r\n@NgModule({\r\n declarations: [ActivityComponent ],\r\n imports: [\r\n CommonModule,\r\n AvatarModule,\r\n RouterModule\r\n ],\r\n exports:[\r\n ActivityComponent,\r\n RouterModule\r\n ]\r\n})\r\nexport class ActivityModule { }\r\n","import {\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnInit,\r\n Renderer2,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Router } from '@angular/router';\r\n@Component({\r\n selector: 'cts-activity-line',\r\n templateUrl: './activity-line.component.html',\r\n styleUrls: ['./activity-line.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class ActivityLineComponent implements OnInit {\r\n @Input() item;\r\n @Input() documentTitle;\r\n @ViewChild('myParentWrapper') myParent;\r\n constructor(\r\n private element: ElementRef,\r\n private translate: TranslateService,\r\n private router: Router,\r\n private renderer: Renderer2\r\n ) {}\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n // this.translate.get('ACTIVITY_LOG.' + this.item.eventName).subscribe((translateText: string) => {\r\n // console.log(translateText)\r\n // this.element.nativeElement.innerHTML = translateText;\r\n // // this.cdRef.detectChanges();\r\n\r\n const navigationElements = Array.prototype.slice.call(\r\n this.myParent.nativeElement.getElementsByClassName('myLink')\r\n );\r\n navigationElements.forEach((elem) => {\r\n this.renderer.listen(elem, 'click', (event) => {\r\n event.preventDefault();\r\n let myClasses = event.target.className;\r\n if (this.item.eventName === 'meeting_published') {\r\n if (myClasses.includes('publishMeetingParent')) {\r\n console.log('publish Meeting parent div clicked');\r\n } else if (myClasses.includes('publishMeetingchild')) {\r\n console.log('publish Meeting child div clicked');\r\n }\r\n } else if (this.item.eventName === 'meeting_created') {\r\n if (myClasses.includes('creatMeetingParent')) {\r\n console.log('creat Meeting parent div clicked');\r\n } else if (myClasses.includes('creatMeetingChild')) {\r\n console.log('creat Meeting child div clicked');\r\n }\r\n } else if (this.item.eventName === 'meeting_resolutionAdded') {\r\n if (myClasses.includes('resolutionParent')) {\r\n console.log('Resolution parent div clicked');\r\n } else if (myClasses.includes('resolutionChild')) {\r\n console.log('Resolution child div clicked');\r\n }\r\n }\r\n });\r\n });\r\n // });\r\n }, 2000);\r\n }\r\n\r\n ngOnInit(): void {}\r\n\r\n navigateto(link) {\r\n console.log(link);\r\n }\r\n}\r\n","<div class=\"activity-line-wrapper\" #myParentWrapper>\r\n <h3\r\n [innerHTML]=\"\r\n 'ACTIVITY_LOG.' + item.eventName\r\n | translate\r\n : {\r\n creator:\r\n item.creator.properties?.firstName +\r\n ' ' +\r\n item.creator.properties?.lastName,\r\n param2: item\r\n }\r\n \"\r\n ></h3>\r\n</div>\r\n\r\n<!-- <div class=\"d-flex\">\r\n <div class=\"myLink link publishMeetingParent\">{{ creator }}</div>\r\n <div class=\"mx-1\">published the meeting</div>\r\n <div class=\"myLink link publishMeetingchild\" id=\"child1\">{{ param2 }}</div>\r\n</div> -->\r\n","export class ActivityLogConstants {\r\n public static pageProvider = {\r\n buisnesslog: {\r\n name: 'PP_BusinessLog',\r\n headers: { 'X-NXproperties': '*', 'X-NXfetch-document': 'dc:creator' },\r\n },\r\n };\r\n\r\n public static quickFilters = {\r\n meetinglogs: {\r\n name: 'meetinglogs',\r\n active: false,\r\n },\r\n committeelogs: {\r\n name: 'committeelogs',\r\n active: false,\r\n },\r\n };\r\n public static events = {\r\n meeting_created: 'meeting_created',\r\n meeting_modified: 'meeting_modified',\r\n meeting_cancelled: 'meeting_cancelled',\r\n committee_created: 'committee_created',\r\n committee_modified: 'committee_modified',\r\n committee_deleted: 'committee_deleted',\r\n committee_categoryAdded: 'committee_categoryAdded',\r\n committee_memberAdded: 'committee_memberAdded',\r\n committee_memberRemoved: 'committee_memberRemoved',\r\n meeting_published: 'meeting_published',\r\n meeting_completed: 'meeting_completed',\r\n meeting_closed: 'meeting_closed',\r\n meeting_started: 'meeting_started',\r\n meeting_rsvp: 'meeting_rsvp',\r\n meeting_resolutionAdded: 'meeting_resolutionAdded',\r\n meeting_resolutionRemoved: 'meeting_resolutionRemoved',\r\n meeting_memberInvited: 'meeting_memberInvited',\r\n meeting_memberRemoved: 'meeting_memberRemoved',\r\n document_attachmentAdded: 'document_attachmentAdded',\r\n document_pollAnswered: 'document_pollAnswered',\r\n document_pollAdded: 'document_pollAdded',\r\n document_pollRemoved: 'document_pollRemoved',\r\n document_discussionAdded: 'document_discussionAdded',\r\n document_discussionRemoved: 'document_discussionRemoved',\r\n };\r\n public static fields = {\r\n documentId: 'bl:documentId',\r\n documentLifecycle: 'bl:documentLifecycle',\r\n documentName: 'bl:documentName',\r\n documentPath: ' bl:documentPath',\r\n documentTypes: 'bl:documentTypes',\r\n eventCategory: 'bl:eventCategory',\r\n eventComment: 'bl:eventComment',\r\n eventDate: 'bl:eventDate',\r\n eventName: 'bl:eventName',\r\n eventTypes: 'bl:eventTypes',\r\n extendedInfo: 'bl:extendedInfo',\r\n person: 'bl:person',\r\n contributors: 'dc:contributors',\r\n coverage: 'dc:coverage',\r\n created: 'dc:created',\r\n creator: 'dc:creator',\r\n description: 'dc:description',\r\n expired: 'dc:expired',\r\n format: 'dc:format',\r\n issued: 'dc:issued',\r\n language: 'dc:language',\r\n lastContributor: 'dc:lastContributor',\r\n modified: 'dc:modified',\r\n nature: 'dc:nature',\r\n publisher: 'dc:publisher',\r\n rights: 'dc:rights',\r\n source: 'dc:source',\r\n subjects: 'dc:subjects',\r\n title: 'dc:title',\r\n valid: 'dc:valid',\r\n major_version: 'uid:major_version',\r\n minor_version: 'uid:minor_version',\r\n uid: 'uid:uid',\r\n };\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { CallApiService } from '../../../Core/services/callApi/call-api.service';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { ActivityLogConstants } from '../constants/activitylog';\r\nimport { AdapterService } from '../../../Core/adapters/adapter.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ActivityLogService {\r\n constructor(\r\n private adapter: AdapterService,\r\n private callApi: CallApiService\r\n ) {}\r\n\r\n getActivityLog(documentId, params = {}): Observable<any> {\r\n return this.callApi\r\n .query(\r\n {\r\n pageProvider: ActivityLogConstants.pageProvider.buisnesslog.name,\r\n businesslog_documentId: documentId,\r\n ...params,\r\n },\r\n {\r\n headers: ActivityLogConstants.pageProvider.buisnesslog.headers,\r\n }\r\n )\r\n .pipe(\r\n map((data: any) => {\r\n data.entries.map((item) =>\r\n this.adapter.adaptIn(item, ActivityLogConstants.fields)\r\n );\r\n return data;\r\n }),\r\n catchError((err) => {\r\n throw err;\r\n })\r\n );\r\n }\r\n}\r\n","import { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cts-single-activity',\r\n templateUrl: './single-activity.component.html',\r\n styleUrls: ['./single-activity.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class SingleActivityComponent implements OnInit {\r\n @Input()\r\n item;\r\n @Input()\r\n documentTitle;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {\r\n }\r\n}\r\n","<ng-container *ngIf=\"item\">\r\n <div class=\"avtivity-wrapper\">\r\n <div class=\"avtivity-point {{ item.documentLifecycle }}\"></div>\r\n <div class=\"avtivity-panal {{ item.documentLifecycle }}\">\r\n <div class=\"avtivity-corr-status {{ item.documentLifecycle }}\">\r\n {{ \"STATS.\" + item.documentLifecycle | translate }}\r\n </div>\r\n <div class=\"avtivity-heading\">\r\n <div class=\"avtivity-title\">\r\n <div class=\"status\">{{ \"ACTIVITY_LOG.status.\" + item.eventName | translate }}</div>\r\n <div class=\"\">\r\n {{ item.creator.properties?.firstName }}\r\n {{ item.creator.properties?.lastName }}\r\n </div>\r\n </div>\r\n <div class=\"avtivity-date\">\r\n <div>{{ item.eventDate | localizedDate: \"M/d/y\" }}</div>\r\n <div>{{ item.eventDate | localizedDate: \"h:mm a\" }}</div>\r\n </div>\r\n </div>\r\n <div class=\"avtivity-body\">\r\n <cts-activity-line\r\n [item]=\"item\"\r\n [documentTitle]=\"item.documentName\"\r\n ></cts-activity-line>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<!-- <div class=\"d-flex\">\r\n <div class=\"myLink link creator\" id=\"parent3\">{{ creator }}</div>\r\n <div class=\"mx-1\">send the correspondence</div>\r\n <div class=\"myLink link\" id=\"child3\">{{ param2 }}</div>\r\n <div class=\"myLink to\" id=\"child3\">to</div>\r\n <div class=\"myLink link\" id=\"child3\">{{corr:to}}</div>\r\n <div class=\"myLink link\" id=\"child3\">and assigned it to</div>\r\n <div class=\"myLink link\" id=\"child3\">{{corr:owner}}</div>\r\n</div> -->\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { ActivityLogService } from '../../services/activity-log.service';\r\n\r\n@Component({\r\n selector: 'cts-latest-activity',\r\n templateUrl: './latest-activity.component.html',\r\n styleUrls: ['./latest-activity.component.scss'],\r\n})\r\nexport class LatestActivityComponent implements OnInit {\r\n @Input()\r\n documentId;\r\n @Input() documentTitle;\r\n @Output()\r\n success = new EventEmitter();\r\n\r\n p = 1;\r\n count = 5;\r\n totalRecords = 0;\r\n isFetching = false;\r\n activitylog = [];\r\n\r\n constructor(private activityLogSer: ActivityLogService) {}\r\n\r\n ngOnInit(): void {\r\n // this.getActivities();\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.getActivities();\r\n }\r\n getActivities() {\r\n this.isFetching = true;\r\n this.activityLogSer\r\n .getActivityLog(this.documentId.uid, {\r\n currentPageIndex: this.p - 1,\r\n // pageSize: this.count,\r\n })\r\n .subscribe(\r\n (data) => {\r\n // this.activitylog = [];\r\n let i = 1;\r\n data.entries.map((item) => {\r\n i++;\r\n item.properties.extendedInfo = item.properties.extendedInfo.reduce(\r\n (obj, item) => ((obj[item.key] = item.value), obj),\r\n {}\r\n );\r\n this.activitylog.push({\r\n ...item.properties,\r\n });\r\n });\r\n this.totalRecords = data.totalSize;\r\n this.isFetching = false;\r\n this.success.emit(true);\r\n },\r\n (err) => {\r\n // this.success.emit(false);\r\n }\r\n );\r\n }\r\n\r\n onChangePagination(e) {\r\n this.p = e;\r\n this.getActivities();\r\n }\r\n\r\n onScroll(){\r\n this.p ++\r\n this.getActivities();\r\n\r\n }\r\n}\r\n","<div\r\n [scrollWindow]=\"false\"\r\n infiniteScroll\r\n [infiniteScrollDistance]=\"2\"\r\n [infiniteScrollThrottle]=\"50\"\r\n (scrolled)=\"onScroll()\"\r\n class=\"activity-body\"\r\n>\r\n <div class=\"activity-area\">\r\n <div *ngFor=\"let item of activitylog; let i = index\">\r\n <cts-single-activity [item]=\"item\" [documentTitle]=\"documentTitle\">\r\n </cts-single-activity>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- <cts-single-activity [user]=\"item.creator\">\r\n <div class=\"lineOne\">\r\n <span class=\"\">\r\n {{ item.creator.properties?.firstName }}\r\n {{ item.creator.properties?.lastName }} // commented\r\n </span>\r\n <cts-activity-line [item]=\"item\" [documentTitle]=\"documentTitle\">\r\n </cts-activity-line>\r\n </div>\r\n <div class=\"lineOnePart2\">\r\n <span class=\"mx-2\">\r\n {{item.eventName}} commented \r\n </span>\r\n </div>\r\n <div class=\"lineTwo\">\r\n <span class=\"\" style=\"width: fit-content\">\r\n {{ item.eventDate | localizedDate: \"EEEE, MMMM d, y\" }}\r\n </span>\r\n </div>\r\n </cts-single-activity> -->\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { PipesModule } from '../../pipes/pipes.module';\r\nimport { ActivityModule } from '../activity/activity.module';\r\nimport { CardModule } from '../card/card.module';\r\nimport { PaginationModule } from '../pagination/pagination.module';\r\nimport { ActivityLineComponent } from './components/activity-line/activity-line.component';\r\nimport { LatestActivityComponent } from './components/latest-activity/latest-activity.component';\r\nimport { SingleActivityComponent } from './components/single-activity/single-activity.component';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@NgModule({\r\n declarations: [LatestActivityComponent, ActivityLineComponent, SingleActivityComponent],\r\n imports: [\r\n CommonModule,\r\n PaginationModule,\r\n TranslateModule,\r\n ActivityModule,\r\n CardModule,\r\n PipesModule,\r\n InfiniteScrollModule\r\n ],\r\n exports:[\r\n LatestActivityComponent\r\n ]\r\n})\r\nexport class LatestActivityModule { }\r\n","import { Component, Input, OnInit, SimpleChanges, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cts-viewer-log',\r\n templateUrl: './viewer-log.component.html',\r\n styleUrls: ['./viewer-log.component.scss'],\r\n encapsulation:ViewEncapsulation.None\r\n})\r\nexport class ViewerLogComponent implements OnInit {\r\n loading = true;\r\n @Input()\r\n correspondence;\r\n\r\n constructor() {}\r\n\r\n logSuccess(e) {\r\n if(e){\r\n this.loading = false\r\n }\r\n }\r\n ngOnInit(): void {}\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.correspondence = this.correspondence;\r\n }\r\n}\r\n","<ng-container *ngIf=\"correspondence\">\r\n <cts-latest-activity\r\n [documentId]=\"correspondence\"\r\n (success)=\"logSuccess($event)\"\r\n ></cts-latest-activity>\r\n <span class=\"log-bar\">\r\n <mat-progress-bar *ngIf=\"loading\" mode=\"indeterminate\"></mat-progress-bar>\r\n </span>\r\n</ng-container>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LatestActivityModule } from '../latest-activity/latest-activity.module';\r\nimport { ViewerLogComponent } from './components/viewer-log/viewer-log.component';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\n\r\n@NgModule({\r\n declarations: [ViewerLogComponent],\r\n imports: [CommonModule, LatestActivityModule, MatProgressBarModule],\r\n exports: [ViewerLogComponent],\r\n})\r\nexport class ViewerLogModule {}\r\n","import { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { take } from 'rxjs/operators';\r\nimport { AdapterService } from '../../../../Core/adapters/adapter.service';\r\nimport { ConfirmCallerDialogComponent } from '../../../confirm-caller/confirm-caller.dialog';\r\nimport { DocumentsService } from '../../../documents/services/documents.service';\r\nimport { ViewerFilesService } from '../../services/viewer-files.service';\r\nimport { CorrespondenceRelationService } from '../../services/correspondence-realation.service';\r\n\r\n@Component({\r\n selector: 'cts-correspondence-relation-list',\r\n templateUrl: './correspondence-relation-list.component.html',\r\n styleUrls: ['./correspondence-relation-list.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class CorrespondenceRelationListComponent implements OnInit {\r\n @Input()\r\n correspondence_id;\r\n @Input()\r\n reload: boolean = false;\r\n relateddoc: any[] = [];\r\n menu_actions = [\r\n { title: 'correspondence-relation.view_corr', name: 'view' },\r\n { title: 'correspondence-relation.delete', name: 'delete' },\r\n ];\r\n constructor(\r\n private relationsvc: CorrespondenceRelationService,\r\n private dialog: MatDialog,\r\n private viewerFilesService: ViewerFilesService,\r\n private documentsApi: DocumentsService,\r\n private adapter: AdapterService\r\n ) {}\r\n ngOnInit(): void {\r\n this.loadData();\r\n this.relationsvc.getUpdatedRelation.subscribe((res) => {\r\n this.loadData();\r\n });\r\n }\r\n loadData() {\r\n this.relationsvc\r\n .get_Correspondence_Relation_WithoutReply(this.correspondence_id)\r\n .subscribe((result) => {\r\n let resultarray = result.value;\r\n let resultsgrouped = resultarray.reduce((r, a) => {\r\n r[a.relationId] = [...(r[a.relationId] || []), a];\r\n return r;\r\n }, {});\r\n this.relateddoc = [];\r\n for (let group of Object.entries(resultsgrouped)) {\r\n this.relateddoc.push(group);\r\n }\r\n });\r\n }\r\n onDeleteClick(relateddoc) {\r\n let functionToPerform = () => {\r\n return this.relationsvc.Delete_Named_Relation(\r\n this.correspondence_id,\r\n relateddoc.relationId,\r\n relateddoc.uid\r\n );\r\n };\r\n let title = '';\r\n let msg = '';\r\n this.openDialog(\r\n functionToPerform,\r\n 'Success',\r\n 'correspondence-relation.deleted_success'\r\n ).subscribe((data) => {\r\n if (data) {\r\n this.relationsvc.getUpdatedRelation.next();\r\n }\r\n });\r\n }\r\n openDialog(functionToPerform, title, msg) {\r\n return this.dialog\r\n .open(ConfirmCallerDialogComponent, {\r\n width: '400px',\r\n data: {\r\n call: functionToPerform,\r\n title: 'genericConfirm',\r\n toastrTitle: title,\r\n toastrMsg: msg,\r\n },\r\n })\r\n .afterClosed()\r\n .pipe(take(1));\r\n }\r\n\r\n view_Corres(relation) {\r\n let url = window.location.href;\r\n window.open(url.replace(this.correspondence_id, relation.uid), '_blank');\r\n }\r\n\r\n showCorrespondenceInViewer(relation) {\r\n this.documentsApi.getDocument(relation.uid).subscribe((file) => {\r\n let adaptedFile = this.adapter.adaptIn(\r\n { ...file },\r\n this.relationsvc.incomingConstant['fields']\r\n );\r\n this.viewerFilesService.updateViewer.next(adaptedFile);\r\n });\r\n }\r\n\r\n handleMenuItemClicked(event) {\r\n if (event.action === 'view') {\r\n this.view_Corres(event.item);\r\n } else if (event.action === 'delete') {\r\n this.onDeleteClick(event.item);\r\n }\r\n }\r\n}\r\n","<div class=\"relations-list\" *ngIf=\"relateddoc.length > 0\">\r\n <ng-container>\r\n <div *ngFor=\"let group of relateddoc; first as isFirst\">\r\n <mat-accordion class=\"example-headers-align\" multi>\r\n <mat-expansion-panel [expanded]=\"isFirst\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ group[0] }}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <ng-template matExpansionPanelContent>\r\n <mat-list>\r\n <div class=\"mat-list-items\" *ngFor=\"let item of group[1]\">\r\n <cts-item-list\r\n [item]=\"item\"\r\n [title]=\"item.title\"\r\n [iconname]=\"'link'\"\r\n [actions]=\"menu_actions\"\r\n (actionclicked)=\"handleMenuItemClicked($event)\"\r\n (itemClicked)=\"showCorrespondenceInViewer(item)\"\r\n [moreclasses]=\"'link-relation'\"\r\n ></cts-item-list>\r\n </div>\r\n </mat-list>\r\n </ng-template>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n </div>\r\n </ng-container>\r\n</div>\r\n<div class=\"nocontent\" *ngIf=\"relateddoc.length === 0\">\r\n <p>{{ \"correspondence-relation.nocontent\" | translate }}</p>\r\n</div>\r\n","import {\r\n Component,\r\n Inject,\r\n OnInit,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { CorrespondenceRelationService } from '../../services/correspondence-realation.service';\r\n\r\n@Component({\r\n selector: 'cts-correspondence-relation-create-form',\r\n templateUrl: './correspondence-relation-create-form.component.html',\r\n styleUrls: ['./correspondence-relation-create-form.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class CorrespondenceRelationCreateFormComponent implements OnInit {\r\n visible = true;\r\n selectable = true;\r\n removable = true;\r\n createform: FormGroup;\r\n related_corr: any[] = [];\r\n exist: boolean = false;\r\n isLoading: boolean = false;\r\n documentList = [];\r\n exist_relations_list: any[] = [];\r\n correspondanceId;\r\n constructor(\r\n private _formBuilder: FormBuilder,\r\n private corressvc: CorrespondenceRelationService,\r\n public dialogRef: MatDialogRef<CorrespondenceRelationCreateFormComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any\r\n ) {}\r\n\r\n /**dialog actions */\r\n onSaveClick() {\r\n this.dialogRef.close({\r\n docs: this.related_corr.map((corre) => corre.id),\r\n relationname: this.createform.value.relationname,\r\n });\r\n \r\n }\r\n\r\n onCloseoClick() {\r\n this.dialogRef.close();\r\n }\r\n\r\n /*************************************************** */\r\n @ViewChild('auto') auto;\r\n ngOnInit(): void {\r\n this.exist_relations_list = this.data.exist_relations_list;\r\n this.correspondanceId = this.data.correspondance.uid;\r\n console.log('related', this.data);\r\n this.dialogRef.updateSize('50%', '85%');\r\n this.createform = this._formBuilder.group({\r\n relationname: ['', Validators.required],\r\n });\r\n }\r\n\r\n on_remove_relation_Chip(relation) {\r\n this.related_corr.splice(this.related_corr.indexOf(relation), 1);\r\n }\r\n\r\n /**ng-Autocomplete related functions */\r\n alwaysopened: boolean = false;\r\n clearSerachInput() {\r\n this.documentList = [];\r\n if (this.auto) this.auto.query = '';\r\n }\r\n\r\n is_relation_exist(relation): boolean {\r\n if(this.exist_relations_list.length == 0) return false;\r\n let exist_relation = this.exist_relations_list.filter(\r\n (exist_relation) =>\r\n exist_relation.relationId === this.createform.value.relationname &&\r\n exist_relation.uid === relation.id\r\n );\r\n this.exist = exist_relation.length > 0;\r\n return this.exist;\r\n }\r\n\r\n is_corresp_added(corresp) {\r\n let exist_corresp = this.related_corr.filter((exist_corresp) => {\r\n return exist_corresp.id === corresp.id;\r\n });\r\n return exist_corresp.length > 0;\r\n }\r\n selectItem(item) {\r\n this.auto.query = this.auto.toHighlight;\r\n if (this.is_relation_exist(item)) return;\r\n else if (this.is_corresp_added(item)) return;\r\n else {\r\n this.related_corr.push(item);\r\n }\r\n }\r\n\r\n keep_Autocomplete_Results_Open() {\r\n if (this.alwaysopened) {\r\n this.auto.filteredList = this.documentList;\r\n this.auto.isOpen = true;\r\n this.auto.isFocused = true;\r\n }\r\n }\r\n\r\n onSearchInputChange(val: string) {\r\n if (val?.length == 0) {\r\n return;\r\n }\r\n this.corressvc.search(val).subscribe((data) => {\r\n console.log(\"documentList\",data)\r\n this.documentList = data.filter((correspondance) => {\r\n return this.correspondanceId != correspondance.id;\r\n });\r\n this.isLoading = false;\r\n this.alwaysopened = this.documentList.length > 0;\r\n return this.documentList;\r\n });\r\n }\r\n disableFilter = (items: any[]) => items;\r\n\r\n inputCleared() {\r\n this.documentList = [];\r\n this.alwaysopened = false;\r\n }\r\n\r\n reset() {\r\n this.related_corr = [];\r\n this.clearSerachInput();\r\n this.exist = false;\r\n }\r\n}\r\n","<div class=\"correspondence-relation-container\" SetDirRtl style=\"height: 80%; width: 100%\">\r\n <div class=\"correspondence-relation-title\">\r\n {{ \"correspondence-relation.add\" | translate }}\r\n </div>\r\n <!-- <mat-divider></mat-divider> -->\r\n <div mat-dialog-content [formGroup]=\"createform\">\r\n <div class=\"vocabulary-list\">\r\n <app-dynamic-form-vocabulary-item\r\n [label]=\"'correspondence-relation.relation-type'\"\r\n [bindLabel]=\"'label'\"\r\n [bindValue]=\"'id'\"\r\n placeholder=\"{{ 'VOCABULARY.SELECT_ITEM' | translate }}\"\r\n [multiple]=\"false\"\r\n [searchable]=\"false\"\r\n [closeOnSelect]=\"true\"\r\n [hideSelectedItems]=\"false\"\r\n [vocabularyType]=\"'VOC_CorrespondenceRelationsNames'\"\r\n formControlName=\"relationname\"\r\n (onSelecting)=\"reset()\"\r\n >\r\n </app-dynamic-form-vocabulary-item>\r\n </div>\r\n\r\n <div class=\"search-container\" *ngIf=\"createform.value.relationname\">\r\n <ng-autocomplete\r\n #auto\r\n [data]=\"documentList\"\r\n [searchKeyword]=\"'filter'\"\r\n (selected)=\"selectItem($event)\"\r\n (inputChanged)=\"onSearchInputChange($event)\"\r\n [customFilter]=\"disableFilter\"\r\n (closed)=\"keep_Autocomplete_Results_Open()\"\r\n [itemTemplate]=\"itemTemplate\"\r\n [notFoundTemplate]=\"notFoundTemplate\"\r\n [placeholder]=\"'correspondence-relation.searchby' | translate\"\r\n [debounceTime]=\"1000\"\r\n [isLoading]=\"isLoading\"\r\n (inputCleared)=\"inputCleared()\"\r\n >\r\n </ng-autocomplete>\r\n\r\n <ng-template #itemTemplate let-item>\r\n <div class=\"item\">\r\n <span>{{ item.title }}</span>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #notFoundTemplate>\r\n <div>{{ \"correspondence-relation.notfound\" | translate }}</div>\r\n </ng-template>\r\n\r\n <div class=\"chip-list\" *ngIf=\"related_corr.length > 0\">\r\n <mat-chip-list #chipList aria-label=\"corr selection\">\r\n <mat-chip\r\n *ngFor=\"let corr of related_corr\"\r\n [selectable]=\"selectable\"\r\n [removable]=\"removable\"\r\n (removed)=\"on_remove_relation_Chip(corr)\"\r\n >\r\n {{ corr.title }}\r\n <mat-icon matChipRemove *ngIf=\"removable\">cancel</mat-icon>\r\n </mat-chip>\r\n </mat-chip-list>\r\n </div>\r\n <div class=\"exist-relation\">\r\n <span *ngIf=\"exist\">\r\n {{ \"correspondence-relation.exist\" | translate }}</span\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"button-group d-flex flex-row-reverse\">\r\n <cts-button\r\n [theme]=\"'danger'\"\r\n size=\"'regular'\"\r\n class=\"voc-form-close\"\r\n mat-dialog-close\r\n >\r\n {{ \"BUTTONS.CLOSE\" | translate }}\r\n </cts-button>\r\n <cts-button\r\n (onClick)=\"onSaveClick()\"\r\n [theme]=\"'primary'\"\r\n size=\"'regular'\"\r\n [disabled]=\"\r\n !this.createform.controls.relationname.valid || related_corr.length == 0\r\n \"\r\n >\r\n {{ \"correspondence-relation.save\" | translate }}\r\n </cts-button>\r\n </div>\r\n</div>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\nimport { CorrespondenceRelationService } from '../../services/correspondence-realation.service';\r\n\r\n@Component({\r\n selector: 'cts-correspondence-relation-reply',\r\n templateUrl: './correspondence-relation-reply.component.html',\r\n styleUrls: ['../correspondence-relation-list/correspondence-relation-list.component.scss']\r\n})\r\nexport class CorrespondenceRelationReplyComponent implements OnInit {\r\n replyrelation : any[] = [];\r\n @Input()\r\n correspondence_id :string;\r\n@Output()\r\nactionclicked = new EventEmitter();\r\n\r\nfireAction(item,action = 'show') {\r\n this.actionclicked.next({action : action , item : item});\r\n}\r\n\r\n menu_actions = [{title : 'correspondence-relation.view_corr' , name:'view'}];\r\n constructor(private corres_relationsvc: CorrespondenceRelationService) { }\r\n\r\n ngOnInit(): void {\r\n this.corres_relationsvc\r\n .get_Correspondence_Reply_Relation_Reverse(this.correspondence_id)\r\n .subscribe((res) => {\r\n if (res.entries.length > 0) {\r\n this.replyrelation = res.entries.map(item => { return {title: item.title,uid: item.uid ,type :item.type, filecontent : item.properties['file:content'] , direction : item.properties['corr:direction']\r\n }});\r\n \r\n // this.replyrelation = {\r\n // title: res.entries[0].title,\r\n // uid: res.entries[0].uid,\r\n // };\r\n }\r\n });\r\n }\r\n\r\n}\r\n","<div class=\"relations-list\" *ngIf=\"replyrelation.length > 0\">\r\n <ng-container>\r\n <mat-list>\r\n <div class=\"mat-list-items\" *ngFor=\"let item of replyrelation\">\r\n <cts-item-list\r\n [item]=\"item\"\r\n [title]=\"item.title\"\r\n [actions]=\"menu_actions\"\r\n (actionclicked)=\"fireAction(item, 'view')\"\r\n (itemClicked)=\"fireAction(item)\"\r\n ></cts-item-list>\r\n </div>\r\n </mat-list>\r\n </ng-container>\r\n</div>\r\n<div class=\"nocontent\" *ngIf=\"replyrelation.length === 0\">\r\n <p>{{ \"correspondence-relation.nocontentreply\" | translate }}</p>\r\n</div>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\r\nimport { CustomToastrService } from '../../../custom-toastr/services/custom-toastr.service';\r\nimport { CorrespondenceRelationService } from '../../services/correspondence-realation.service';\r\nimport { take } from 'rxjs/operators';\r\nimport { ConfirmCallerDialogComponent } from '../../../confirm-caller/confirm-caller.dialog';\r\nimport { CorrespondenceRelationCreateFormComponent } from '../correspondence-relation-create-form/correspondence-relation-create-form.component';\r\nimport { DocumentsService } from '../../../documents/services/documents.service';\r\nimport { ViewerFilesService } from '../../services/viewer-files.service';\r\nimport { UserPreferencesService } from '../../../../Core/services/user/user-preferences.service';\r\nimport { NuxeoService } from '../../../../Core/services/nuxeo/nuxeo.service';\r\n@Component({\r\n selector: 'cts-correspondence-relation',\r\n templateUrl: './correspondence-relation.component.html',\r\n styleUrls: ['./correspondence-relation.component.scss'],\r\n})\r\nexport class CorrespondenceRelationComponent implements OnInit {\r\n @Input()\r\n corr_id;\r\n /** Correspondance */\r\n @Input()\r\n correspondance;\r\n relations_list: any;\r\n reload: boolean = false;\r\n constructor(\r\n public dialog: MatDialog,\r\n private corrrelationsvc: CorrespondenceRelationService,\r\n private toastr: CustomToastrService,\r\n private viewerFilesService: ViewerFilesService,\r\n private documentsApi: DocumentsService,\r\n private userPreference: UserPreferencesService,\r\n public nuxeoService : NuxeoService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.getallrelated();\r\n this.corrrelationsvc.getUpdatedRelation.subscribe((res) => {\r\n this.getallrelated();\r\n });\r\n }\r\n\r\n openDialog() {\r\n let data = {};\r\n if (this.relations_list)\r\n data = {\r\n exist_relations_list: this.relations_list.value,\r\n correspondance: this.correspondance,\r\n };\r\n else data = { exist_relations_list: [] };\r\n const dialogConfig = new MatDialogConfig();\r\n dialogConfig.data = data;\r\n dialogConfig.direction =\r\n this.userPreference.locale === 'ar' ? 'rtl' : 'ltr';\r\n dialogConfig.panelClass = 'custom-dialog-container';\r\n dialogConfig.width = '50%';\r\n const dialogRef = this.dialog.open(\r\n CorrespondenceRelationCreateFormComponent,\r\n dialogConfig\r\n );\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n if (result) {\r\n this.corrrelationsvc\r\n .create_Named_Relation(this.corr_id, result.relationname, result.docs)\r\n .subscribe(\r\n (data) => {\r\n this.reload = true;\r\n this.corrrelationsvc.getUpdatedRelation.next();\r\n this.toastr.show(\r\n 'success',\r\n 'success',\r\n 'Realation Successfuly added'\r\n );\r\n },\r\n (err) => {\r\n this.toastr.show('error', 'error', 'Failed to add relation');\r\n }\r\n );\r\n }\r\n });\r\n }\r\n\r\n getallrelated() {\r\n this.corrrelationsvc\r\n .get_Correspondence_Relation_WithoutReply(this.corr_id)\r\n .subscribe((results) => {\r\n this.relations_list = results;\r\n });\r\n }\r\n\r\n handleActions(event) {\r\n if (event.action === 'view') {\r\n this.view_Corres(event.item);\r\n } else if (event.action === 'delete') {\r\n this.deleteRelation(event.item);\r\n } else if (event.action === 'show') {\r\n this.showCorrespondenceInViewer(event.item.uid);\r\n }\r\n }\r\n\r\n view_Corres(relation) {\r\n let url = window.location.href;\r\n window.open(url.replace(this.corr_id, relation.uid), '_blank');\r\n }\r\n\r\n showCorrespondenceInViewer(corres_id) {\r\n this.documentsApi.getDocument(corres_id).subscribe((file) => {\r\n this.viewerFilesService.updateViewer.next(file);\r\n });\r\n }\r\n openConfirmDialog(functionToPerform, title, msg) {\r\n return this.dialog\r\n .open(ConfirmCallerDialogComponent, {\r\n width: '400px',\r\n data: {\r\n call: functionToPerform,\r\n title: 'genericConfirm',\r\n toastrTitle: title,\r\n toastrMsg: msg,\r\n },\r\n })\r\n .afterClosed()\r\n .pipe(take(1));\r\n }\r\n deleteRelation(relateddoc) {\r\n let functionToPerform = () => {\r\n return this.corrrelationsvc.Delete_Named_Relation(\r\n this.corr_id,\r\n relateddoc.relationId,\r\n relateddoc.uid\r\n );\r\n };\r\n let title = '';\r\n let msg = '';\r\n this.openConfirmDialog(\r\n functionToPerform,\r\n 'Success',\r\n 'correspondence-relation.deleted_success'\r\n ).subscribe((data) => {\r\n if (data) {\r\n this.corrrelationsvc.getUpdatedRelation.next();\r\n }\r\n });\r\n }\r\n}\r\n","<div class=\"relations-container\">\r\n <div class=\"mb-3\">\r\n <div class=\"subheader\">\r\n <div>{{ \"correspondence-relation.title\" | translate }}</div>\r\n <div *permission=\"{\r\n name: 'AddRelatedCorrespondence',\r\n entity: correspondance , user: nuxeoService.nuxeoClient.user\r\n }\" (click)=\"openDialog()\"><mat-icon>add</mat-icon></div>\r\n </div>\r\n <cts-correspondence-relation-list\r\n [correspondence_id]=\"corr_id\"\r\n [reload]=\"reload\"\r\n ></cts-correspondence-relation-list>\r\n </div>\r\n\r\n <div class=\"mb-2\">\r\n <div class=\"subheader\">\r\n <div>{{ \"correspondence-relation.reply_relation\" | translate }}</div>\r\n </div>\r\n <cts-correspondence-relation-reply\r\n [correspondence_id]=\"corr_id\"\r\n (actionclicked)=\"handleActions($event)\"\r\n ></cts-correspondence-relation-reply>\r\n </div>\r\n</div>\r\n","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\r\nimport { DocumentsService } from '../../../documents/services/documents.service';\r\nimport { ViewerFilesService } from '../../services/viewer-files.service';\r\n\r\n\r\n/**\r\n * A component that views document versions\r\n * @title\r\n * Viewer Versions\r\n *\r\n * @example\r\n *\r\n * <cts-versions\r\n * [file]=\"file\"\r\n * ></cts-versions>\r\n */\r\n@Component({\r\n selector: 'cts-versions',\r\n templateUrl: './versions.component.html',\r\n styleUrls: ['./versions.component.scss']\r\n})\r\nexport class VersionsComponent implements OnInit, OnChanges {\r\n /** Current selected version (in viewer) */\r\n @Input()\r\n selectedVersion;\r\n /** Document object */\r\n @Input()\r\n file;\r\n versions = [];\r\n constructor(\r\n private viewerFilesService: ViewerFilesService,\r\n private documentsApi: DocumentsService\r\n\r\n ) { }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.file && changes.file.currentValue &&\r\n changes.file.previousValue) {\r\n this.getVersions();\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.getVersions();\r\n }\r\n\r\n\r\n getVersions() {\r\n this.documentsApi.getVersions(this.file.uid).subscribe((data) => {\r\n this.versions = data.entries.reverse();\r\n // this.versions.shift();\r\n\r\n });\r\n }\r\n\r\n showVersion(version) {\r\n this.viewerFilesService.updateViewer.next(version);\r\n }\r\n\r\n}\r\n","<div class=\"viewer-attachments\">\r\n <div class=\"subheader\">\r\n <div> {{ \"viewer.current\" | translate }}</div>\r\n\r\n </div>\r\n <div class=\"attachments-list\">\r\n <mat-list>\r\n <div class=\"mat-list-items\">\r\n <cts-item-list [item]=\"file\" [title]=\"file.title\" [iconname]=\"'description'\" [moreclasses]=\"'text-danger'\"\r\n (itemClicked)=\"showVersion(file)\">\r\n <div class=\"description\">\r\n {{ file.properties.major_version }}.{{\r\n file.properties.minor_version\r\n }}\r\n -\r\n {{ file.lastModified | localizedDate }}\r\n </div>\r\n </cts-item-list>\r\n </div>\r\n </mat-list>\r\n </div>\r\n</div>\r\n\r\n<div class=\"viewer-attachments\" *ngIf=\"versions.length > 0\">\r\n <div class=\"subheader\">\r\n <div>{{ \"viewer.origin\" | translate }}</div>\r\n </div>\r\n <div class=\"attachments-list\">\r\n <mat-list>\r\n <div class=\"mat-list-items\">\r\n <cts-item-list\r\n [item]=\"versions[versions.length -1]\"\r\n [title]=\"versions[versions.length -1].title\"\r\n [iconname]=\"'description'\"\r\n [moreclasses]=\"'text-danger'\"\r\n (itemClicked)=\"showVersion(versions[versions.length -1])\"\r\n >\r\n \r\n </cts-item-list>\r\n </div>\r\n </mat-list>\r\n </div>\r\n</div>\r\n\r\n<div class=\"viewer-attachments\">\r\n <div class=\"subheader\">\r\n <div> {{ \"viewer.history\" | translate }}</div>\r\n\r\n </div>\r\n <div class=\"attachments-list\" *ngIf=\"versions.length > 0\">\r\n <ng-container >\r\n\r\n\r\n <mat-list>\r\n <div class=\"mat-list-items\" *ngFor=\"let version of versions ;let cnt = count; let i = index\">\r\n <cts-item-list [item]=\"version\" [title]=\"version.title + ' - ' + ( cnt - (i-1) - 1 ) \" [iconname]=\"'description'\"\r\n [moreclasses]=\"'text-danger'\" (itemClicked)=\"showVersion(version)\">\r\n <div class=\"description\">\r\n {{ version.properties.major_version }}.{{\r\n version.properties.minor_version\r\n }}\r\n -\r\n {{ version.lastModified | localizedDate }}\r\n <span class=\"font-weight-bold\">\r\n {{\r\n version.properties.lastContributor.properties.firstName +\r\n \" \" +\r\n version.properties.lastContributor.properties.lastName\r\n }}\r\n </span>\r\n </div>\r\n </cts-item-list>\r\n </div>\r\n </mat-list>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"versions.length === 0\">\r\n <cts-no-data></cts-no-data>\r\n </div>\r\n</div>\r\n<ng-template #noEntry>\r\n \r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CorrespondenceRelationListComponent } from './components/correspondence-relation-list/correspondence-relation-list.component';\r\nimport { CorrespondenceRelationComponent } from './components/correspondence-relation/correspondence-relation.component';\r\nimport { CorrespondenceRelationCreateFormComponent } from './components/correspondence-relation-create-form/correspondence-relation-create-form.component';\r\nimport { DynamicFormModule } from '../dynamic-form/dynamic-form.module';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { DynamicSearchModule } from '../dynamic-search/dynamic-search.module';\r\nimport { AutocompleteLibModule } from 'angular-ng-autocomplete';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { SelectModule } from '../select/select.module';\r\nimport { LayoutModule } from '@angular/cdk/layout';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { LibrarySharedModule } from '../../shared/libraryShared.module';\r\nimport { CorrespondenceRelationReplyComponent } from './components/correspondence-relation-reply/correspondence-relation-reply.component';\r\nimport { DirectiveModule } from '../../directive/directive.module';\r\nimport { VersionsComponent } from './components/versions/versions.component';\r\nimport { PipesModule } from '../../pipes/pipes.module';\r\n/** @ignore */\r\n\r\n@NgModule({\r\n declarations: [\r\n CorrespondenceRelationListComponent,\r\n CorrespondenceRelationComponent,\r\n CorrespondenceRelationCreateFormComponent,\r\n CorrespondenceRelationReplyComponent,\r\n VersionsComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n DynamicFormModule,\r\n TranslateModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatDialogModule,\r\n DynamicSearchModule,\r\n MatIconModule,\r\n NgSelectModule,\r\n SelectModule,\r\n AutocompleteLibModule,\r\n LayoutModule,\r\n MatChipsModule,\r\n MatMenuModule,\r\n MatListModule,\r\n MatIconModule,\r\n MatExpansionModule,\r\n LibrarySharedModule,\r\n DirectiveModule,\r\n PipesModule\r\n ],\r\n exports: [CorrespondenceRelationComponent , VersionsComponent],\r\n})\r\nexport class CorrespondenceRelationModule {}\r\n","import { EventEmitter, Injectable } from '@angular/core';\r\nimport { observable, Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class PdftronService {\r\n mode: String = '';\r\n instance;\r\n stampAnnots: any[] = [];\r\n signatureAnnotations: any[] = [];\r\n pdfTronStream = new EventEmitter();\r\n constructor() {}\r\n async disableQrCodeModifybeforesave() {\r\n for (let stampAnnot of this.stampAnnots) {\r\n stampAnnot.ReadOnly = true;\r\n }\r\n }\r\n\r\n clearSignatureAnnotations() {\r\n this.signatureAnnotations = [];\r\n }\r\n async removeSignatureAnnotaionsbeforesave() {\r\n this.instance.annotManager.off('annotationChanged');\r\n this.instance.annotManager.deleteAnnotation(this.signatureAnnotations);\r\n }\r\n\r\n getSignatureAnnotaionsInfo() {\r\n let signatureInfo = this.signatureAnnotations.map((item) => {\r\n let PageHeight = this.instance.docViewer.getPageHeight(item.PageNumber);\r\n let PageWidth = this.instance.docViewer.getPageWidth(item.PageNumber);\r\n let yConst = this.modifySignatureAnnotaionHeightAndWidth(\r\n PageHeight,\r\n PageWidth\r\n ).y;\r\n // let xConst = this.modifySignatureAnnotaionHeightAndWidth(\r\n // PageHeight,\r\n // PageWidth\r\n // ).x;\r\n return {\r\n pageno: item.PageNumber,\r\n //x: item.X + xConst,\r\n x: item.X,\r\n y: item.Y + yConst,\r\n height: item.getHeight(),\r\n width: item.getWidth(),\r\n };\r\n });\r\n return signatureInfo;\r\n }\r\n modifySignatureAnnotaionHeightAndWidth(PageHeight, PageWidth) {\r\n const standardHeight = 842;\r\n const standardWidth = 595;\r\n let y: number = 0;\r\n let x: number = 0;\r\n //height\r\n if (standardHeight > PageHeight || standardHeight < PageHeight) {\r\n y = standardHeight - PageHeight;\r\n }\r\n // widht\r\n if (standardWidth > PageWidth || standardWidth < PageWidth) {\r\n x = standardWidth - PageWidth;\r\n }\r\n return { y, x };\r\n }\r\n addSignature(base64) {\r\n if (this.instance) {\r\n let currentPage = this.instance.docViewer.getCurrentPage();\r\n\r\n this.instance.annotManager.setReadOnly(false);\r\n this.instance.disableElements([\r\n 'toolbarGroup-Shapes',\r\n 'toolbarGroup-Edit',\r\n 'toolbarGroup-Insert',\r\n 'toolbarGroup-Annotate',\r\n ]);\r\n const signatureAnnot = new this.instance.Annotations.StampAnnotation();\r\n signatureAnnot.PageNumber = currentPage;\r\n signatureAnnot.X = 100;\r\n signatureAnnot.Y = 250;\r\n signatureAnnot.Width = 140;\r\n signatureAnnot.Height = 60;\r\n const keepAsSVG = false;\r\n signatureAnnot.setImageData(base64, keepAsSVG);\r\n signatureAnnot.Author = this.instance.annotManager.getCurrentUser();\r\n\r\n this.instance.annotManager.addAnnotation(signatureAnnot);\r\n this.instance.annotManager.redrawAnnotation(signatureAnnot);\r\n this.pdfTronStream.next({ action: 'addStamp', params: { base64 } });\r\n\r\n this.signatureAnnotations.push(signatureAnnot);\r\n this.instance.annotManager.on(\r\n 'annotationChanged',\r\n (annotations, action) => {\r\n if (action === 'modify') {\r\n annotations.forEach((changedannot) => {\r\n // this.signatureAnnotations.forEach(function(item,i) {\r\n // if (item.Id == changedannot.Id) item = changedannot;\r\n // });\r\n let index = this.signatureAnnotations\r\n .map((item) => item.Id)\r\n .indexOf(changedannot.Id);\r\n if (index > -1) {\r\n this.signatureAnnotations[index] = changedannot;\r\n }\r\n });\r\n } else if (action === 'delete') {\r\n annotations.forEach((changedannot) => {\r\n let index = this.signatureAnnotations\r\n .map((item) => item.Id)\r\n .indexOf(changedannot.Id);\r\n if (index > -1) {\r\n this.signatureAnnotations.splice(index, 1);\r\n }\r\n });\r\n }\r\n }\r\n );\r\n } else {\r\n console.error('No pdfTron instance');\r\n }\r\n }\r\n addStamp(url) {\r\n if (this.instance) {\r\n this.instance.annotManager.setReadOnly(false);\r\n this.instance.disableElements([\r\n 'toolbarGroup-Shapes',\r\n 'toolbarGroup-Edit',\r\n 'toolbarGroup-Insert',\r\n 'toolbarGroup-Annotate',\r\n ]);\r\n this.pdfTronStream.next({ action: 'addStamp', params: { url } });\r\n let stampAnnot = new this.instance.Annotations.StampAnnotation();\r\n stampAnnot.PageNumber = 1;\r\n stampAnnot.X = 0;\r\n stampAnnot.Y = 0;\r\n stampAnnot.Width = 150;\r\n stampAnnot.Height = 78;\r\n const keepAsSVG = false;\r\n stampAnnot.ReadOnly = false;\r\n stampAnnot.setImageData(url, keepAsSVG);\r\n stampAnnot.Author = this.instance.annotManager.getCurrentUser();\r\n this.instance.annotManager.addAnnotation(stampAnnot);\r\n this.instance.annotManager.redrawAnnotation(stampAnnot);\r\n this.stampAnnots.push(stampAnnot);\r\n } else {\r\n console.error('No pdfTron instance');\r\n }\r\n }\r\n addWatermark(text) {\r\n text = new Array(100 * 2).join(text + ' '); // number of lines\r\n if (this.instance) {\r\n this.instance.docViewer.setWatermark({\r\n custom: (ctx, pageNumber, pageWidth, pageHeight) => {\r\n // ctx is an instance of CanvasRenderingContext2D\r\n ctx.fillStyle = '#d9dce2';\r\n ctx.font = '16pt Arial';\r\n ctx.globalAlpha = 0.3;\r\n let txtHeight = 50;\r\n const lineNumber = pageWidth > pageHeight ? pageWidth : pageHeight;\r\n for (var i = 0; i < Math.ceil((lineNumber * 1.5) / txtHeight); i++) {\r\n ctx.save();\r\n ctx.rotate(-45);\r\n ctx.fillText(text, 0, i * txtHeight);\r\n ctx.restore();\r\n }\r\n },\r\n });\r\n } else {\r\n console.error('No pdfTron instance');\r\n }\r\n }\r\n\r\n removeWatermark(){\r\n this.instance.docViewer.setWatermark({});\r\n this.instance.docViewer.refreshAll();\r\n this.instance.docViewer.updateView();\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n Inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport WebViewer, { CoreControls } from '@pdftron/webviewer';\r\nimport { NuxeoService } from '../../../Core/services/nuxeo/nuxeo.service';\r\nimport { PdftronService } from './pdftron.service';\r\nimport { APP_BASE_HREF } from '@angular/common';\r\nimport { SecurePipe } from '../../../pipes/secure.pipe';\r\n\r\n/**\r\n * A reusable file viewer based on PDFTron Library\r\n * @title\r\n * PDFTron Viewer\r\n * @example\r\n * <app-pdftron\r\n * [fileData]=\"fileData\"\r\n * [editMode]=\"false\"\r\n * [docId]=\"fileId\"\r\n * [fileTitle]=\"file.title\"\r\n * >\r\n * </app-pdftron>\r\n */\r\n@Component({\r\n selector: 'app-pdftron',\r\n templateUrl: './pdftron.component.html',\r\n styleUrls: ['./pdftron.component.scss'],\r\n providers: [SecurePipe],\r\n})\r\nexport class PdftronComponent\r\n implements OnInit, AfterViewInit, OnDestroy, OnChanges\r\n{\r\n @ViewChild('fileViewer') viewerRef: ElementRef;\r\n webViewerInstance;\r\n /** Disable/Enable Annotation */\r\n @Input()\r\n editMode: boolean;\r\n @Input() actionClicked = false; // used to know if there is action clicked outside to start edit mode or not\r\n isDocumentLoading: boolean;\r\n isFetching: boolean;\r\n /** Document title */\r\n @Input()\r\n fileTitle: string;\r\n /** Document ID */\r\n @Input()\r\n docId: string;\r\n @Input()\r\n DOCUMENT_TYPE = 'application/pdf';\r\n @Input()\r\n fileData;\r\n @Input()\r\n fitMode: 'FitWidth' | 'FitPage' | 'Zoom' = 'FitWidth';\r\n @Input()\r\n correspondance;\r\n constructor(\r\n public cdr: ChangeDetectorRef,\r\n private pdftronService: PdftronService,\r\n private nuxeo: NuxeoService,\r\n @Inject(APP_BASE_HREF) private baseHref: string,\r\n private securePipe: SecurePipe,\r\n @Inject('environment') private environment\r\n ) {}\r\n\r\n async ngOnInit(): Promise<void> {}\r\n\r\n async ngAfterViewInit(): Promise<void> {\r\n if (this.fileTitle.endsWith('.ppt')) {\r\n this.DOCUMENT_TYPE = 'application/vnd.ms-powerpoint';\r\n } else if (this.fileTitle.endsWith('.pptx')) {\r\n this.DOCUMENT_TYPE =\r\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation';\r\n } else if (this.fileTitle.endsWith('.doc')) {\r\n this.DOCUMENT_TYPE = 'application/msword';\r\n } else if (this.fileTitle.endsWith('.docx')) {\r\n this.DOCUMENT_TYPE =\r\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\r\n }\r\n WebViewer(\r\n {\r\n path: this.baseHref + '/assets/pdftrons',\r\n forceClientSideInit: true,\r\n streaming: true,\r\n licenseKey: this.environment.pdftronLicenceKey,\r\n disabledElements: ['downloadButton'],\r\n\r\n },\r\n this.viewerRef.nativeElement\r\n ).then(async (instance) => {\r\n this.pdftronService.instance = this.webViewerInstance = instance;\r\n this.addDownloadButton();\r\n this.loadDocument();\r\n });\r\n }\r\n addDownloadButton() {\r\n this.webViewerInstance.setHeaderItems((header) => {\r\n header.push({\r\n type: 'actionButton',\r\n img: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" fill=\"currentColor\" class=\"bi bi-file-earmark-arrow-down\" viewBox=\"0 0 16 16\"> <path d=\"M8.5 6.5a.5.5 0 0 0-1 0v3.793L6.354 9.146a.5.5 0 1 0-.708.708l2 2a.5.5 0 0 0 .708 0l2-2a.5.5 0 0 0-.708-.708L8.5 10.293V6.5z\"/> <path d=\"M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2zM9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5v2z\"/></svg>',\r\n title: 'Download',\r\n onClick: () => {\r\n let url = this.correspondance.properties.content.data;\r\n let fileName = this.correspondance.properties.content.name;\r\n if (url && fileName) {\r\n let safeUrl = this.securePipe.transform(url);\r\n safeUrl.subscribe((url: any) => {\r\n const link = document.createElement('a');\r\n link.style.display = 'none';\r\n link.href = url.changingThisBreaksApplicationSecurity;\r\n link.download = fileName;\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n });\r\n }\r\n },\r\n });\r\n });\r\n }\r\n addWatermark() {\r\n const userinfo = this.nuxeo.nuxeoClient.user.properties;\r\n this.pdftronService.addWatermark(\r\n `${userinfo.username} `\r\n // `${userinfo.firstName} ${\r\n // userinfo.lastName\r\n // } `\r\n );\r\n }\r\n loadDocument(): void {\r\n if (!this.webViewerInstance || !this.fileData) {\r\n return;\r\n }\r\n const { docViewer, annotManager, Annotations } = this.webViewerInstance;\r\n docViewer.on('documentLoaded', () => {\r\n let fitMode = this.webViewerInstance.FitMode.FitWidth;\r\n if (this.fitMode === 'FitPage') {\r\n fitMode = this.webViewerInstance.FitMode.FitPage;\r\n } else if (this.fitMode === 'Zoom') {\r\n fitMode = this.webViewerInstance.FitMode.Zoom;\r\n }\r\n this.webViewerInstance.setFitMode(fitMode);\r\n });\r\n if (!this.editMode) {\r\n this.webViewerInstance.annotManager.setReadOnly(true);\r\n // instance.enableTools([]);\r\n }\r\n this.webViewerInstance.loadDocument(\r\n new Blob([new Uint8Array(this.fileData)], { type: this.DOCUMENT_TYPE }),\r\n {\r\n filename: this.fileTitle,\r\n }\r\n );\r\n\r\n this.isFetching = false;\r\n if (this.environment.enableViewerWaterMark) {\r\n this.addWatermark();\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n async exportAsBlob(): Promise<Blob> {\r\n const doc = this.webViewerInstance.docViewer.getDocument();\r\n const xfdfString =\r\n await this.webViewerInstance.annotManager.exportAnnotations();\r\n const data = await doc.getFileData({\r\n // saves the document with annotations in it\r\n xfdfString,\r\n });\r\n const arr = new Uint8Array(data);\r\n const blob = new Blob([arr], { type: this.DOCUMENT_TYPE });\r\n return Promise.resolve(blob);\r\n }\r\n\r\n toggleEdit(): void {\r\n if (!this.actionClicked) {\r\n // action clicked is not clicked then no update mode opened\r\n this.webViewerInstance.disableElements([\r\n 'toolbarGroup-Shapes',\r\n 'toolbarGroup-Edit',\r\n 'toolbarGroup-Insert',\r\n 'toolbarGroup-Annotate',\r\n ]);\r\n this.webViewerInstance.annotManager.setReadOnly(true);\r\n } else {\r\n //edit mode opened and must be when action is clicked\r\n this.webViewerInstance.enableElements([\r\n 'toolbarGroup-Shapes',\r\n 'toolbarGroup-Edit',\r\n 'toolbarGroup-Insert',\r\n 'toolbarGroup-Annotate',\r\n ]);\r\n this.webViewerInstance.annotManager.setReadOnly(false);\r\n // this.webViewerInstance.setToolbarGroup('toolbarGroup-Annotate');\r\n }\r\n }\r\n ngOnChanges(changes): void {\r\n if (this.webViewerInstance) {\r\n this.toggleEdit();\r\n if (\r\n changes.urlFileContent &&\r\n changes.urlFileContent.previousValue &&\r\n changes.urlFileContent.previousValue !==\r\n changes.urlFileContent.currentValue\r\n ) {\r\n this.ngOnDestroy();\r\n this.ngOnInit();\r\n this.ngAfterViewInit();\r\n }\r\n }\r\n }\r\n private pdfTronEvent(event) {\r\n if (this[event.action]) {\r\n // method exists in the component\r\n // this[event.action](event.params); // call it\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n if (this.webViewerInstance) {\r\n this.webViewerInstance.closeDocument().then(() => {\r\n console.log('document closed!');\r\n });\r\n this.pdftronService.instance = this.webViewerInstance = null;\r\n }\r\n }\r\n}\r\n","<div #fileViewer style=\"width: 100%; height: 100%;\"></div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PdftronComponent } from './pdftron/pdftron.component';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [PdftronComponent],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports:[\r\n PdftronComponent\r\n ]\r\n})\r\nexport class PdfTronModule { }\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { KeycloakService } from 'keycloak-angular';\r\nimport { NuxeoService } from '../nuxeo/nuxeo.service';\r\nimport { UserPreferencesService } from '../user/user-preferences.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class InitializationService {\r\n\r\n constructor(\r\n private keycloak: KeycloakService,\r\n private nuxeoService: NuxeoService, \r\n private userPreferences: UserPreferencesService, \r\n @Inject('environment') private environment\r\n ) { }\r\n\r\n initializer() {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n await this.keycloak.init({\r\n config: this.environment.keycloak,\r\n loadUserProfileAtStartUp: false,\r\n initOptions: {\r\n onLoad: 'login-required',\r\n checkLoginIframe: false\r\n },\r\n enableBearerInterceptor: true,\r\n bearerExcludedUrls: [\r\n '/assets/', '/cts/assets/'\r\n ],\r\n });\r\n const kc = this.keycloak.getKeycloakInstance();\r\n this.nuxeoService.init()\r\n .then((client) => {\r\n this.userPreferences.setStoragePrefix(client.user.id);\r\n resolve(true);\r\n })\r\n .catch((err) => {\r\n console.error(err);\r\n reject(err);\r\n });\r\n\r\n } catch (error) {\r\n reject(error);\r\n }\r\n\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { DateAdapter } from '@angular/material/core';\r\nimport { isMoment, Moment } from 'moment';\r\nimport moment from 'moment-es6';\r\n\r\n@Injectable()\r\nexport class MomentDateAdapter extends DateAdapter<Moment> {\r\n\r\n private localeData: any = moment.localeData();\r\n\r\n overrideDisplayFormat: string;\r\n\r\n getYear(date: Moment): number {\r\n return date.year();\r\n }\r\n\r\n getMonth(date: Moment): number {\r\n return date.month();\r\n }\r\n\r\n getDate(date: Moment): number {\r\n return date.date();\r\n }\r\n\r\n getDayOfWeek(date: Moment): number {\r\n return date.day();\r\n }\r\n\r\n getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\r\n switch (style) {\r\n case 'long':\r\n return this.localeData.months();\r\n case 'short':\r\n return this.localeData.monthsShort();\r\n case 'narrow':\r\n return this.localeData.monthsShort().map((month) => month[0]);\r\n default:\r\n return [];\r\n }\r\n }\r\n\r\n getDateNames(): string[] {\r\n const dateNames: string[] = [];\r\n for (let date = 1; date <= 31; date++) {\r\n dateNames.push(String(date));\r\n }\r\n\r\n return dateNames;\r\n }\r\n\r\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\r\n switch (style) {\r\n case 'long':\r\n return this.localeData.weekdays();\r\n case 'short':\r\n return this.localeData.weekdaysShort();\r\n case 'narrow':\r\n return this.localeData.weekdaysShort();\r\n default:\r\n return [];\r\n }\r\n }\r\n\r\n getYearName(date: Moment): string {\r\n return String(date.year());\r\n }\r\n\r\n getFirstDayOfWeek(): number {\r\n return this.localeData.firstDayOfWeek();\r\n }\r\n\r\n getNumDaysInMonth(date: Moment): number {\r\n return date.daysInMonth();\r\n }\r\n\r\n clone(date: Moment): Moment {\r\n const locale = this.locale || 'en';\r\n return date.clone().locale(locale);\r\n }\r\n\r\n createDate(year: number, month: number, date: number): Moment {\r\n return moment([year, month, date]);\r\n }\r\n\r\n today(): Moment {\r\n const locale = this.locale || 'en';\r\n return moment().locale(locale);\r\n }\r\n\r\n parse(value: any, parseFormat: any): Moment {\r\n const locale = this.locale || 'en';\r\n\r\n if (value && typeof value === 'string') {\r\n let m = moment(value, parseFormat, locale, true);\r\n if (!m.isValid()) {\r\n // use strict parsing because Moment's parser is very forgiving, and this can lead to undesired behavior.\r\n m = moment(value, this.overrideDisplayFormat, locale, true);\r\n }\r\n if (m.isValid()) {\r\n // if user omits year, it defaults to 2001, so check for that issue.\r\n if (m.year() === 2001 && value.indexOf('2001') === -1) {\r\n // if 2001 not actually in the value string, change to current year\r\n const currentYear = new Date().getFullYear();\r\n m.set('year', currentYear);\r\n // if date is in the future, set previous year\r\n if (m.isAfter(moment())) {\r\n m.set('year', currentYear - 1);\r\n }\r\n }\r\n }\r\n return m;\r\n }\r\n\r\n return value ? moment(value).locale(locale) : null;\r\n }\r\n\r\n format(date: Moment, displayFormat: any): string {\r\n date = this.clone(date);\r\n displayFormat = this.overrideDisplayFormat ? this.overrideDisplayFormat : displayFormat;\r\n\r\n if (date && date.format) {\r\n return date.format(displayFormat);\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n addCalendarYears(date: Moment, years: number): Moment {\r\n return date.clone().add(years, 'y');\r\n }\r\n\r\n addCalendarMonths(date: Moment, months: number): Moment {\r\n return date.clone().add(months, 'M');\r\n }\r\n\r\n addCalendarDays(date: Moment, days: number): Moment {\r\n return date.clone().add(days, 'd');\r\n }\r\n\r\n getISODateString(date: Moment): string {\r\n return date.toISOString();\r\n }\r\n\r\n setLocale(locale: any): void {\r\n super.setLocale(locale);\r\n\r\n this.localeData = moment.localeData(locale);\r\n }\r\n\r\n compareDate(first: Moment, second: Moment): number {\r\n return first.diff(second, 'seconds', true);\r\n }\r\n\r\n sameDate(first: any | Moment, second: any | Moment): boolean {\r\n if (first == null) {\r\n // same if both null\r\n return second == null;\r\n } else if (isMoment(first)) {\r\n return first.isSame(second);\r\n } else {\r\n const isSame = super.sameDate(first, second);\r\n return isSame;\r\n }\r\n }\r\n\r\n clampDate(date: Moment, min?: any | Moment, max?: any | Moment): Moment {\r\n if (min && date.isBefore(min)) {\r\n return min;\r\n } else if (max && date.isAfter(max)) {\r\n return max;\r\n } else {\r\n return date;\r\n }\r\n }\r\n\r\n isDateInstance(date: any) {\r\n let isValidDateInstance = false;\r\n\r\n if (date) {\r\n isValidDateInstance = date._isAMomentObject;\r\n }\r\n\r\n return isValidDateInstance;\r\n }\r\n\r\n isValid(date: Moment): boolean {\r\n return date.isValid();\r\n }\r\n\r\n toIso8601(date: Moment): string {\r\n return this.clone(date).format();\r\n }\r\n\r\n fromIso8601(iso8601String: string): Moment | null {\r\n const locale = this.locale || 'en';\r\n const d = moment(iso8601String, moment.ISO_8601).locale(locale);\r\n return this.isValid(d) ? d : null;\r\n }\r\n\r\n invalid(): Moment {\r\n return moment.invalid();\r\n }\r\n}\r\n","/*\r\n * Public API Surface of nuxeo-development-framework\r\n */\r\n\r\nexport * from './lib/nuxeo-development-framework.service';\r\nexport * from './lib/nuxeo-development-framework.component';\r\nexport * from './lib/nuxeo-development-framework.module';\r\n\r\n\r\n// export all components \r\nexport * from './lib/components/avatar/avatar.module';\r\nexport * from './lib/components/avatar/avatar/avatar.component';\r\nexport * from './lib/components/hijri-gregorian-datepicker/ngx-hijri-gregorian-datepicker.module';\r\nexport * from './lib/components/hijri-gregorian-datepicker/services/date-formatter.service';\r\nexport * from './lib/components/dynamic-form/dynamic-form.module';\r\nexport * from './lib/components/dynamic-form/components/dynamic-form-vocabulary-item/dynamic-form-vocabulary-item.component';\r\nexport * from './lib/components/vocabulary/services/vocabulary-api.service';\r\nexport * from './lib/components/vocabulary/interfaces/op-type.interface';\r\nexport * from './lib/components/dynamic-form/components/dynamic-form-department/services/department-api.service';\r\nexport * from './lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component';\r\nexport * from './lib/components/dynamic-form/components/dynamic-form-select-users/dynamic-form-select-users.component';\r\nexport * from './lib/components/card/card.module';\r\nexport * from './lib/components/custom-toastr/custom-toastr.module';\r\nexport * from './lib/components/confirm-caller/confirm-caller.module';\r\nexport * from './lib/components/confirm-caller/confirm-dialog/confirm-dialog.component'\r\nexport * from './lib/components/confirm-caller/confirm-caller.dialog'\r\nexport * from './lib/components/documents/documents.module';\r\nexport * from './lib/components/dynamic-view/dynamic-view.module';\r\nexport * from './lib/components/pagination/pagination.module';\r\nexport * from './lib/components/documents/services/documents.service';\r\nexport * from './lib/components/documents/services/document-templates.service';\r\nexport * from './lib/components/custom-toastr/services/custom-toastr.service';\r\nexport * from './lib/components/hijri-gregorian-datepicker/services/date-helper.service';\r\nexport * from './lib/components/documents/components/attachments-list/attachments-list.component';\r\nexport * from './lib/components/correspondence-relation/services/correspondence-realation.service';\r\nexport * from './lib/components/documents/constants/documents';\r\nexport * from './lib/components/documents/constants/document-templates';\r\nexport * from './lib/components/table/table.module';\r\nexport * from './lib/components/dynamic-search/dynamic-search.module';\r\nexport * from './lib/components/select/select.module';\r\nexport * from './lib/components/dynamic-table/dynamic-table.module';\r\nexport * from './lib/components/dynamic-table/services/dynamic-table.service';\r\nexport * from './lib/components/dynamic-search/dynamic-search/dynamic-search.component';\r\nexport * from './lib/components/dynamic-form/components/dynamic-form/form-builder.service';\r\nexport * from './lib/components/cts-tags/services/tags-api.service';\r\nexport * from './lib/components/vocabulary/vocabulary.module';\r\nexport * from './lib/components/dynamic-chart/dynamic-chart.module';\r\nexport * from './lib/components/dynamic-chart/services/chart-data.service';\r\nexport * from './lib/components/users-card/users-card.module';\r\nexport * from './lib/components/notifications/notifications.module';\r\nexport * from './lib/components/filter/filter.module';\r\nexport * from './lib/Core/core.module';\r\nexport * from './lib/components/comments/comments.module';\r\nexport * from './lib/components/create-entity/create-entity.module';\r\nexport * from './lib/components/cts-tags/cts-tags.module';\r\nexport * from './lib/components/latest-activity/latest-activity.module';\r\nexport * from './lib/components/viewer-log/viewer-log.module';\r\nexport * from './lib/components/correspondence-relation/correspondence-relation.module';\r\nexport * from './lib/components/correspondence-relation/services/viewer-files.service';\r\nexport * from './lib/components/pdf-tron/pdf-tron.module';\r\nexport * from './lib/components/pdf-tron/pdftron/pdftron.service';\r\nexport * from './lib/components/pdf-tron/pdftron/pdftron.component';\r\nexport * from './lib/components/dynamic-form/components/dynamic-form-boolitem/dynamic-form-boolitem.component';\r\nexport * from './lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-gregorian-datepicker.component';\r\nexport * from './lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-datepicker/hijri-datepicker.component';\r\nexport * from './lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/gregorian-datepicker/gregorian-datepicker.component';\r\nexport * from './lib/components/dynamic-form/components/dynamic-form-builder/dynamic-form-builder.component';\r\nexport * from './lib/components/dynamic-form/components/dynamic-form-checkbox-item/dynamic-form-checkbox-item.component';\r\nexport * from './lib/components/dynamic-form/components/dynamic-form-dateitem/dynamic-form-dateitem.component';\r\nexport * from './lib/components/dynamic-form/components/dynamic-form-mapitem/dynamic-form-mapitem.component';\r\nexport * from './lib/components/dynamic-form/components/dynamic-form-textitem/dynamic-form-textitem.component';\r\nexport * from './lib/components/dynamic-form/components/dynamic-form-selectitem/dynamic-form-selectitem.component';\r\nexport * from './lib/components/dynamic-form/components/dynamic-form-options/dynamic-form-options.component';\r\nexport * from './lib/components/dynamic-form/components/dynamic-form-select-tag/dynamic-form-select-tag.component';\r\nexport * from './lib/components/dynamic-form/components/dynamic-form-select-user-filter/dynamic-form-select-user-filter.component';\r\nexport * from './lib/components/dynamic-form/components/dynamic-form-slide-toggleitem/dynamic-form-slide-toggleitem.component';\r\nexport * from './lib/components/dynamic-form/components/dynamic-form-textarea/dynamic-form-textarea.component';\r\nexport * from './lib/components/dynamic-form/components/department-form/department-form.component';\r\nexport * from './lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select.component';\r\nexport * from './lib/components/dynamic-form/components/dynamic-form/dynamic-form.component';\r\nexport * from './lib/components/dynamic-form/components/dynamic-form-field/dynamic-form-field.component';\r\nexport * from './lib/components/dynamic-form/components/dynamic-form-viewer/dynamic-form-viewer.component';\r\nexport * from './lib/components/card/card.component';\r\nexport * from './lib/components/documents/components/document-list/documents-list.component';\r\nexport * from './lib/components/documents/components/document-scan/document-scan.component';\r\nexport * from './lib/components/documents/components/document-upload/document-upload.component';\r\nexport * from './lib/components/documents/components/documents/documents.component';\r\nexport * from './lib/components/correspondence-relation/components/versions/versions.component';\r\nexport * from './lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component';\r\nexport * from './lib/components/viewer-log/components/viewer-log/viewer-log.component';\r\nexport * from './lib/components/latest-activity/components/latest-activity/latest-activity.component';\r\nexport * from './lib/components/cts-tags/components/correspondence-tags/correspondence-tags.component';\r\nexport * from './lib/components/create-entity/create-entity/create-entity.component';\r\nexport * from './lib/components/comments/components/comments-dashlet/comments-dashlet.component';\r\nexport * from './lib/components/notifications/components/notification-item/notification-item.component';\r\nexport * from './lib/components/notifications/components/notification-options/notification-options.component';\r\nexport * from './lib/components/notifications/components/notifications-button/notifications-button.component';\r\nexport * from './lib/components/notifications/components/notifications-list/notifications-list.component';\r\nexport * from './lib/components/filter/filter/filter.component';\r\nexport * from './lib/components/users-card/users-card.component';\r\nexport * from './lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component';\r\nexport * from './lib/components/dynamic-chart/dynamic-single-chart/dynamic-single-chart.component';\r\nexport * from './lib/components/vocabulary/vocabulary/vocabulary.component';\r\nexport * from './lib/components/select/select/select.component';\r\nexport * from './lib/components/dynamic-table/dynamic-table/dynamic-table.component';\r\nexport * from './lib/components/table/table/table.component';\r\nexport * from './lib/components/dynamic-view/department-viewer/department-viewer.component';\r\nexport * from './lib/components/dynamic-view/date-viewer/date-viewer.component';\r\nexport * from './lib/components/dynamic-view/boolean-viewer/boolean-viewer.component';\r\nexport * from './lib/components/dynamic-view/data-viewer/data-viewer.component';\r\nexport * from './lib/components/dynamic-view/dropdown-viewer/dropdown-viewer.component';\r\nexport * from './lib/components/dynamic-view/list-viewer/list-viewer.component';\r\nexport * from './lib/components/documents/components/attachments-page-provider/attachments-page-provider.component';\r\nexport * from './lib/components/pagination/pagination/pagination.component';\r\nexport * from './lib/components/dynamic-form/components/dynamic-form-hijri-dateitem/dynamic-form-hijri-dateitem.component';\r\n\r\n\r\n\r\n// export all from shared module \r\nexport * from './lib/shared/libraryShared.module';\r\nexport * from './lib/shared/components/button/button.component';\r\nexport * from './lib/shared/components/item-list/item-list.component';\r\nexport * from './lib/shared/components/no-data/no-data.component';\r\nexport * from './lib/shared/components/read-more/read-more.component';\r\nexport * from './lib/shared/components/search-autocomplete/search-autocomplete.component';\r\nexport * from './lib/shared/components/spinner/spinner.component';\r\nexport * from './lib/shared/components/user-card/user-card.component';\r\n\r\n\r\n\r\n// export all from core module \r\nexport * from './lib/Core/services/callApi/call-api.service';\r\nexport * from './lib/Core/services/nuxeo/nuxeo.service';\r\nexport * from './lib/Core/services/translation/translation.service';\r\nexport * from './lib/Core/services/translation/translate-loader.service';\r\nexport * from './lib/Core/services/user/user-preferences.service';\r\nexport * from './lib/Core/services/localStorag/local-storag.service';\r\nexport * from './lib/Core/services/initialization/initialization.service';\r\nexport * from './lib/Core/services/roles/roles.service';\r\nexport * from './lib/Core/models/component.model';\r\nexport * from './lib/Core/enums/language.enum';\r\nexport * from './lib/Core/adapters/adapter.service';\r\nexport * from './lib/Core/utilities/moment-date-adapter';\r\n\r\n\r\n// export all pipes\r\nexport * from './lib/pipes/pipes.module';\r\nexport * from './lib/pipes/time-ago.pipe';\r\nexport * from './lib/pipes/localized-date.pipe';\r\nexport * from './lib/pipes/secure.pipe';\r\nexport * from './lib/pipes/secure-html.pipe';\r\nexport * from './lib/pipes/multi-value.pipe';\r\nexport * from './lib/pipes/file-size.pipe';\r\nexport * from './lib/pipes/hijri-date.pipe';\r\n\r\n//export all directives\r\nexport * from './lib/directive/directive.module';\r\nexport * from './lib/directive/clickOutSide/click-outside.directive';\r\nexport * from './lib/directive/permissions/permissions.directive';\r\nexport * from './lib/directive/rtl/set-rtl.directive';\r\nexport * from './lib/directive/app-has-role/app-has-role.directive';\r\nexport * from './lib/directive/rtl/set-dir-rtl.directive';\r\n\r\n\r\n//export all configuration\r\nexport * from './lib/configuration/app-config.service';\r\nexport * from './lib/configuration/helpers/app-initializer';\r\n\r\n\r\n\r\n// Eval\r\nexport * from './lib/directive/permissions/evaluators.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["LocalStoragService","UserPreferenceValues","UserPreferencesService","Lang","Nuxeo","doFetch","Unmarshallers","Authentication","NuxeoOverride","RolesService","NuxeoService","TRANSLATION_PROVIDER","TranslationService","moment","momentHijri","minute","editForm","COMPONENT_OPTIONS","take"],"mappings":"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"}