@ohioepa/oepa-ui-lib 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (299) hide show
  1. package/README.md +24 -0
  2. package/esm2022/lib/account-search-input/account-search-input.component.mjs +147 -0
  3. package/esm2022/lib/account-search-modal/account-search-modal.component.mjs +151 -0
  4. package/esm2022/lib/action-btn/action-btn.component.mjs +70 -0
  5. package/esm2022/lib/action-btn/oepa-action-event.mjs +2 -0
  6. package/esm2022/lib/action-btn/oepa-action.mjs +2 -0
  7. package/esm2022/lib/action-btn-modal/action-btn-modal.component.mjs +21 -0
  8. package/esm2022/lib/address/address.component.mjs +174 -0
  9. package/esm2022/lib/address/oepa-address.service.mjs +64 -0
  10. package/esm2022/lib/address/oepa-form-address.mjs +2 -0
  11. package/esm2022/lib/blank/blank.component.mjs +14 -0
  12. package/esm2022/lib/checkbox/checkbox.component.mjs +33 -0
  13. package/esm2022/lib/checkbox-input/checkbox-input.component.mjs +41 -0
  14. package/esm2022/lib/comment-modal/comment-modal.component.mjs +56 -0
  15. package/esm2022/lib/common-forms.module.mjs +291 -0
  16. package/esm2022/lib/confirmation-modal/confirmation-modal.component.mjs +120 -0
  17. package/esm2022/lib/contact/contact.component.mjs +102 -0
  18. package/esm2022/lib/contact/oepa-form-contact.mjs +2 -0
  19. package/esm2022/lib/date-input/date-input.component.mjs +52 -0
  20. package/esm2022/lib/date-input-modal/date-input-modal.component.mjs +68 -0
  21. package/esm2022/lib/datepicker/datepicker.component.mjs +131 -0
  22. package/esm2022/lib/daterangepicker/daterangepicker.component.mjs +70 -0
  23. package/esm2022/lib/document/document-editor/document-editor.component.mjs +225 -0
  24. package/esm2022/lib/document/document-event-entity-type.mjs +7 -0
  25. package/esm2022/lib/document/document-event-type.mjs +7 -0
  26. package/esm2022/lib/document/document-event.mjs +2 -0
  27. package/esm2022/lib/document/document-group/document-group.component.mjs +210 -0
  28. package/esm2022/lib/document/document-part/document-part.component.mjs +19 -0
  29. package/esm2022/lib/document/document-part-editor/document-part-editor.component.mjs +296 -0
  30. package/esm2022/lib/document/document-placeholder-modal/document-placeholder-modal.component.mjs +49 -0
  31. package/esm2022/lib/document/document-section/document-section.component.mjs +226 -0
  32. package/esm2022/lib/document/document.service.mjs +325 -0
  33. package/esm2022/lib/document/group-modal/group-modal.component.mjs +46 -0
  34. package/esm2022/lib/document/part-modal/part-modal.component.mjs +48 -0
  35. package/esm2022/lib/document/portal-document-class.mjs +2 -0
  36. package/esm2022/lib/document/portal-document-group.mjs +2 -0
  37. package/esm2022/lib/document/portal-document-part.mjs +2 -0
  38. package/esm2022/lib/document/portal-document-placeholder.mjs +2 -0
  39. package/esm2022/lib/document/portal-document-section.mjs +2 -0
  40. package/esm2022/lib/document/portal-document-text.mjs +2 -0
  41. package/esm2022/lib/document/portal-document-type.mjs +2 -0
  42. package/esm2022/lib/document/portal-document.mjs +2 -0
  43. package/esm2022/lib/document/portal-email-attachment-type.mjs +2 -0
  44. package/esm2022/lib/document/portal-email-attachment.mjs +2 -0
  45. package/esm2022/lib/document/portal-email-filter.mjs +2 -0
  46. package/esm2022/lib/document/portal-email.mjs +2 -0
  47. package/esm2022/lib/document/section-modal/section-modal.component.mjs +46 -0
  48. package/esm2022/lib/dual-list-box/array.pipes.mjs +71 -0
  49. package/esm2022/lib/dual-list-box/dual-list-box.component.mjs +339 -0
  50. package/esm2022/lib/dual-list-box/items-moved-event.mjs +2 -0
  51. package/esm2022/lib/dual-list-box/list-box-item.mjs +2 -0
  52. package/esm2022/lib/ebiz-address/ebiz-address.component.mjs +62 -0
  53. package/esm2022/lib/edoc-attachment/edoc-attachment.component.mjs +216 -0
  54. package/esm2022/lib/edoc-attachment/edoc-attachment.service.mjs +38 -0
  55. package/esm2022/lib/edoc-attachment/edocument-attachment-metadata.mjs +2 -0
  56. package/esm2022/lib/edoc-attachment/edocument-attachment.mjs +2 -0
  57. package/esm2022/lib/edoc-attachment/edocument-reference.mjs +2 -0
  58. package/esm2022/lib/entity/entity.service.mjs +104 -0
  59. package/esm2022/lib/entity/organization-create-modal/organization-create-modal.component.mjs +307 -0
  60. package/esm2022/lib/entity/organization-search-input/organization-search-input.component.mjs +127 -0
  61. package/esm2022/lib/entity/organization-search-modal/organization-search-modal.component.mjs +304 -0
  62. package/esm2022/lib/entity/person-create-modal/person-create-modal.component.mjs +316 -0
  63. package/esm2022/lib/entity/person-search-input/person-search-input.component.mjs +129 -0
  64. package/esm2022/lib/entity/person-search-modal/person-search-modal.component.mjs +311 -0
  65. package/esm2022/lib/entity/place-create-modal/place-create-modal.component.mjs +14 -0
  66. package/esm2022/lib/entity/place-search-input/place-search-input.component.mjs +126 -0
  67. package/esm2022/lib/entity/place-search-modal/place-search-modal.component.mjs +216 -0
  68. package/esm2022/lib/esri-map/esri-map.component.mjs +416 -0
  69. package/esm2022/lib/file-upload/file-upload.component.mjs +148 -0
  70. package/esm2022/lib/lynx-image-upload/lynx-image-upload.component.mjs +143 -0
  71. package/esm2022/lib/lynx-image-upload/lynx.service.mjs +47 -0
  72. package/esm2022/lib/masks/oepa-create-integer-mask.mjs +39 -0
  73. package/esm2022/lib/masks/oepa-integer-mask-args.mjs +2 -0
  74. package/esm2022/lib/message/message.component.mjs +19 -0
  75. package/esm2022/lib/message/oepa-message-type.mjs +7 -0
  76. package/esm2022/lib/message/oepa-message.mjs +31 -0
  77. package/esm2022/lib/message-list/message-list.component.mjs +24 -0
  78. package/esm2022/lib/multi-file-upload/multi-file-upload.component.mjs +137 -0
  79. package/esm2022/lib/notes-modal/notes-modal.component.mjs +177 -0
  80. package/esm2022/lib/notes-modal/oepa-note-result.mjs +2 -0
  81. package/esm2022/lib/notes-modal/oepa-note.mjs +2 -0
  82. package/esm2022/lib/numeric-input/numeric-input.component.mjs +50 -0
  83. package/esm2022/lib/numeric-input.directive.mjs +76 -0
  84. package/esm2022/lib/oepa-error-message/oepa-error-message.component.mjs +39 -0
  85. package/esm2022/lib/oepa-forms.service.mjs +199 -0
  86. package/esm2022/lib/oepa-images.mjs +59 -0
  87. package/esm2022/lib/oepa-wait-message/oepa-wait-message.component.mjs +29 -0
  88. package/esm2022/lib/ohio-lat-long/ohio-lat-long.component.mjs +176 -0
  89. package/esm2022/lib/parameter/parameter.mjs +2 -0
  90. package/esm2022/lib/parameter/parameter.service.mjs +47 -0
  91. package/esm2022/lib/params-help-button/params-help-button.component.mjs +42 -0
  92. package/esm2022/lib/phone-number/phone-number.component.mjs +44 -0
  93. package/esm2022/lib/pin-modal/oepa-attestation.mjs +2 -0
  94. package/esm2022/lib/pin-modal/oepa-pin.mjs +2 -0
  95. package/esm2022/lib/pin-modal/oepa-pin.service.mjs +54 -0
  96. package/esm2022/lib/pin-modal/oepa-security-question.mjs +2 -0
  97. package/esm2022/lib/pin-modal/pin-modal.component.mjs +186 -0
  98. package/esm2022/lib/progress-indicator/progress-info.mjs +2 -0
  99. package/esm2022/lib/select-input/select-input.component.mjs +96 -0
  100. package/esm2022/lib/server-timeout-modal/server-timeout-modal.component.mjs +63 -0
  101. package/esm2022/lib/shopping-cart/shopping-cart-summary/shopping-cart-summary.component.mjs +54 -0
  102. package/esm2022/lib/shopping-cart/shopping-cart-view/shopping-cart-view-parameters.mjs +2 -0
  103. package/esm2022/lib/shopping-cart/shopping-cart-view/shopping-cart-view.component.mjs +190 -0
  104. package/esm2022/lib/shopping-cart/shopping-cart.service.mjs +89 -0
  105. package/esm2022/lib/start-end-timepicker/start-end-timepicker.component.mjs +126 -0
  106. package/esm2022/lib/table/oepa-p-column.mjs +2 -0
  107. package/esm2022/lib/table/oepa-table-cell-classname.pipe.mjs +22 -0
  108. package/esm2022/lib/table/oepa-table-cell-click-event.mjs +2 -0
  109. package/esm2022/lib/table/oepa-table-cell-colspan.pipe.mjs +22 -0
  110. package/esm2022/lib/table/oepa-table-cell-hidden.pipe.mjs +22 -0
  111. package/esm2022/lib/table/oepa-table-cell-icon-classname.pipe.mjs +22 -0
  112. package/esm2022/lib/table/oepa-table-cell-img-src.pipe.mjs +22 -0
  113. package/esm2022/lib/table/oepa-table-cell-inner-html.pipe.mjs +22 -0
  114. package/esm2022/lib/table/oepa-table-cell-input-component.pipe.mjs +22 -0
  115. package/esm2022/lib/table/oepa-table-cell-not-selectable.pipe.mjs +22 -0
  116. package/esm2022/lib/table/oepa-table-cell-value.pipe.mjs +22 -0
  117. package/esm2022/lib/table/oepa-table-cell.mjs +2 -0
  118. package/esm2022/lib/table/oepa-table-column.mjs +2 -0
  119. package/esm2022/lib/table/oepa-table-config.mjs +2 -0
  120. package/esm2022/lib/table/oepa-table-filter.mjs +2 -0
  121. package/esm2022/lib/table/oepa-table-filtering.directive.mjs +57 -0
  122. package/esm2022/lib/table/oepa-table-header.mjs +2 -0
  123. package/esm2022/lib/table/oepa-table-page-info.mjs +2 -0
  124. package/esm2022/lib/table/oepa-table-popover.mjs +2 -0
  125. package/esm2022/lib/table/oepa-table-row.mjs +2 -0
  126. package/esm2022/lib/table/oepa-table-sort-criterion.mjs +2 -0
  127. package/esm2022/lib/table/oepa-table-sorting.directive.mjs +57 -0
  128. package/esm2022/lib/table/oepa-table.mjs +2 -0
  129. package/esm2022/lib/table/p-table/p-table.component.mjs +826 -0
  130. package/esm2022/lib/table/table-data-cell/table-data-cell-click-event.mjs +2 -0
  131. package/esm2022/lib/table/table-data-cell/table-data-cell.component.mjs +60 -0
  132. package/esm2022/lib/table/table-export.service.mjs +57 -0
  133. package/esm2022/lib/table/table-header-cell/table-header-cell.component.mjs +61 -0
  134. package/esm2022/lib/table/table.component.mjs +793 -0
  135. package/esm2022/lib/table/table.service.mjs +112 -0
  136. package/esm2022/lib/template-confirmation-modal/template-confirmation-modal.component.mjs +46 -0
  137. package/esm2022/lib/text-area-input/text-area-input.component.mjs +48 -0
  138. package/esm2022/lib/text-input/text-input.component.mjs +48 -0
  139. package/esm2022/lib/timeout-modal/timeout-modal.component.mjs +31 -0
  140. package/esm2022/lib/timepicker/timepicker.component.mjs +48 -0
  141. package/esm2022/lib/validation/form-validator.mjs +2 -0
  142. package/esm2022/lib/validation/validation.service.mjs +134 -0
  143. package/esm2022/lib/yes-no/yes-no.component.mjs +44 -0
  144. package/esm2022/lib/yes-no-boolean/yes-no.component.mjs +44 -0
  145. package/esm2022/lib/yes-no-other-input/yes-no-other-input.component.mjs +41 -0
  146. package/esm2022/lib/zip-code/zip-code.component.mjs +42 -0
  147. package/esm2022/ohioepa-oepa-ui-lib.mjs +5 -0
  148. package/esm2022/public-api.mjs +142 -0
  149. package/fesm2022/ohioepa-oepa-ui-lib.mjs +10720 -0
  150. package/fesm2022/ohioepa-oepa-ui-lib.mjs.map +1 -0
  151. package/index.d.ts +5 -0
  152. package/lib/account-search-input/account-search-input.component.d.ts +36 -0
  153. package/lib/account-search-modal/account-search-modal.component.d.ts +40 -0
  154. package/lib/action-btn/action-btn.component.d.ts +34 -0
  155. package/lib/action-btn/oepa-action-event.d.ts +19 -0
  156. package/lib/action-btn/oepa-action.d.ts +13 -0
  157. package/lib/action-btn-modal/action-btn-modal.component.d.ts +12 -0
  158. package/lib/address/address.component.d.ts +43 -0
  159. package/lib/address/oepa-address.service.d.ts +28 -0
  160. package/lib/address/oepa-form-address.d.ts +19 -0
  161. package/lib/blank/blank.component.d.ts +8 -0
  162. package/lib/checkbox/checkbox.component.d.ts +15 -0
  163. package/lib/checkbox-input/checkbox-input.component.d.ts +17 -0
  164. package/lib/comment-modal/comment-modal.component.d.ts +22 -0
  165. package/lib/common-forms.module.d.ts +104 -0
  166. package/lib/confirmation-modal/confirmation-modal.component.d.ts +49 -0
  167. package/lib/contact/contact.component.d.ts +33 -0
  168. package/lib/contact/oepa-form-contact.d.ts +58 -0
  169. package/lib/date-input/date-input.component.d.ts +18 -0
  170. package/lib/date-input-modal/date-input-modal.component.d.ts +25 -0
  171. package/lib/datepicker/datepicker.component.d.ts +28 -0
  172. package/lib/daterangepicker/daterangepicker.component.d.ts +22 -0
  173. package/lib/document/document-editor/document-editor.component.d.ts +34 -0
  174. package/lib/document/document-event-entity-type.d.ts +5 -0
  175. package/lib/document/document-event-type.d.ts +5 -0
  176. package/lib/document/document-event.d.ts +9 -0
  177. package/lib/document/document-group/document-group.component.d.ts +38 -0
  178. package/lib/document/document-part/document-part.component.d.ts +10 -0
  179. package/lib/document/document-part-editor/document-part-editor.component.d.ts +46 -0
  180. package/lib/document/document-placeholder-modal/document-placeholder-modal.component.d.ts +19 -0
  181. package/lib/document/document-section/document-section.component.d.ts +37 -0
  182. package/lib/document/document.service.d.ts +90 -0
  183. package/lib/document/group-modal/group-modal.component.d.ts +20 -0
  184. package/lib/document/part-modal/part-modal.component.d.ts +20 -0
  185. package/lib/document/portal-document-class.d.ts +10 -0
  186. package/lib/document/portal-document-group.d.ts +15 -0
  187. package/lib/document/portal-document-part.d.ts +22 -0
  188. package/lib/document/portal-document-placeholder.d.ts +12 -0
  189. package/lib/document/portal-document-section.d.ts +13 -0
  190. package/lib/document/portal-document-text.d.ts +7 -0
  191. package/lib/document/portal-document-type.d.ts +15 -0
  192. package/lib/document/portal-document.d.ts +27 -0
  193. package/lib/document/portal-email-attachment-type.d.ts +6 -0
  194. package/lib/document/portal-email-attachment.d.ts +12 -0
  195. package/lib/document/portal-email-filter.d.ts +12 -0
  196. package/lib/document/portal-email.d.ts +18 -0
  197. package/lib/document/section-modal/section-modal.component.d.ts +20 -0
  198. package/lib/dual-list-box/array.pipes.d.ts +36 -0
  199. package/lib/dual-list-box/dual-list-box.component.d.ts +91 -0
  200. package/lib/dual-list-box/items-moved-event.d.ts +11 -0
  201. package/lib/dual-list-box/list-box-item.d.ts +7 -0
  202. package/lib/ebiz-address/ebiz-address.component.d.ts +23 -0
  203. package/lib/edoc-attachment/edoc-attachment.component.d.ts +44 -0
  204. package/lib/edoc-attachment/edoc-attachment.service.d.ts +16 -0
  205. package/lib/edoc-attachment/edocument-attachment-metadata.d.ts +16 -0
  206. package/lib/edoc-attachment/edocument-attachment.d.ts +12 -0
  207. package/lib/edoc-attachment/edocument-reference.d.ts +5 -0
  208. package/lib/entity/entity.service.d.ts +31 -0
  209. package/lib/entity/organization-create-modal/organization-create-modal.component.d.ts +53 -0
  210. package/lib/entity/organization-search-input/organization-search-input.component.d.ts +34 -0
  211. package/lib/entity/organization-search-modal/organization-search-modal.component.d.ts +56 -0
  212. package/lib/entity/person-create-modal/person-create-modal.component.d.ts +53 -0
  213. package/lib/entity/person-search-input/person-search-input.component.d.ts +34 -0
  214. package/lib/entity/person-search-modal/person-search-modal.component.d.ts +56 -0
  215. package/lib/entity/place-create-modal/place-create-modal.component.d.ts +8 -0
  216. package/lib/entity/place-search-input/place-search-input.component.d.ts +34 -0
  217. package/lib/entity/place-search-modal/place-search-modal.component.d.ts +41 -0
  218. package/lib/esri-map/esri-map.component.d.ts +41 -0
  219. package/lib/file-upload/file-upload.component.d.ts +37 -0
  220. package/lib/lynx-image-upload/lynx-image-upload.component.d.ts +36 -0
  221. package/lib/lynx-image-upload/lynx.service.d.ts +16 -0
  222. package/lib/masks/oepa-create-integer-mask.d.ts +8 -0
  223. package/lib/masks/oepa-integer-mask-args.d.ts +5 -0
  224. package/lib/message/message.component.d.ts +10 -0
  225. package/lib/message/oepa-message-type.d.ts +5 -0
  226. package/lib/message/oepa-message.d.ts +7 -0
  227. package/lib/message-list/message-list.component.d.ts +11 -0
  228. package/lib/multi-file-upload/multi-file-upload.component.d.ts +36 -0
  229. package/lib/notes-modal/notes-modal.component.d.ts +50 -0
  230. package/lib/notes-modal/oepa-note-result.d.ts +10 -0
  231. package/lib/notes-modal/oepa-note.d.ts +13 -0
  232. package/lib/numeric-input/numeric-input.component.d.ts +20 -0
  233. package/lib/numeric-input.directive.d.ts +19 -0
  234. package/lib/oepa-error-message/oepa-error-message.component.d.ts +9 -0
  235. package/lib/oepa-forms.service.d.ts +28 -0
  236. package/lib/oepa-images.d.ts +53 -0
  237. package/lib/oepa-wait-message/oepa-wait-message.component.d.ts +9 -0
  238. package/lib/ohio-lat-long/ohio-lat-long.component.d.ts +63 -0
  239. package/lib/parameter/parameter.d.ts +7 -0
  240. package/lib/parameter/parameter.service.d.ts +18 -0
  241. package/lib/params-help-button/params-help-button.component.d.ts +15 -0
  242. package/lib/phone-number/phone-number.component.d.ts +19 -0
  243. package/lib/pin-modal/oepa-attestation.d.ts +10 -0
  244. package/lib/pin-modal/oepa-pin.d.ts +26 -0
  245. package/lib/pin-modal/oepa-pin.service.d.ts +38 -0
  246. package/lib/pin-modal/oepa-security-question.d.ts +8 -0
  247. package/lib/pin-modal/pin-modal.component.d.ts +46 -0
  248. package/lib/progress-indicator/progress-info.d.ts +4 -0
  249. package/lib/select-input/select-input.component.d.ts +27 -0
  250. package/lib/server-timeout-modal/server-timeout-modal.component.d.ts +23 -0
  251. package/lib/shopping-cart/shopping-cart-summary/shopping-cart-summary.component.d.ts +18 -0
  252. package/lib/shopping-cart/shopping-cart-view/shopping-cart-view-parameters.d.ts +10 -0
  253. package/lib/shopping-cart/shopping-cart-view/shopping-cart-view.component.d.ts +51 -0
  254. package/lib/shopping-cart/shopping-cart.service.d.ts +44 -0
  255. package/lib/start-end-timepicker/start-end-timepicker.component.d.ts +29 -0
  256. package/lib/table/oepa-p-column.d.ts +4 -0
  257. package/lib/table/oepa-table-cell-classname.pipe.d.ts +9 -0
  258. package/lib/table/oepa-table-cell-click-event.d.ts +15 -0
  259. package/lib/table/oepa-table-cell-colspan.pipe.d.ts +9 -0
  260. package/lib/table/oepa-table-cell-hidden.pipe.d.ts +9 -0
  261. package/lib/table/oepa-table-cell-icon-classname.pipe.d.ts +9 -0
  262. package/lib/table/oepa-table-cell-img-src.pipe.d.ts +9 -0
  263. package/lib/table/oepa-table-cell-inner-html.pipe.d.ts +9 -0
  264. package/lib/table/oepa-table-cell-input-component.pipe.d.ts +9 -0
  265. package/lib/table/oepa-table-cell-not-selectable.pipe.d.ts +9 -0
  266. package/lib/table/oepa-table-cell-value.pipe.d.ts +9 -0
  267. package/lib/table/oepa-table-cell.d.ts +66 -0
  268. package/lib/table/oepa-table-column.d.ts +71 -0
  269. package/lib/table/oepa-table-config.d.ts +72 -0
  270. package/lib/table/oepa-table-filter.d.ts +10 -0
  271. package/lib/table/oepa-table-filtering.directive.d.ts +17 -0
  272. package/lib/table/oepa-table-header.d.ts +9 -0
  273. package/lib/table/oepa-table-page-info.d.ts +22 -0
  274. package/lib/table/oepa-table-popover.d.ts +28 -0
  275. package/lib/table/oepa-table-row.d.ts +84 -0
  276. package/lib/table/oepa-table-sort-criterion.d.ts +4 -0
  277. package/lib/table/oepa-table-sorting.directive.d.ts +16 -0
  278. package/lib/table/oepa-table.d.ts +42 -0
  279. package/lib/table/p-table/p-table.component.d.ts +155 -0
  280. package/lib/table/table-data-cell/table-data-cell-click-event.d.ts +5 -0
  281. package/lib/table/table-data-cell/table-data-cell.component.d.ts +23 -0
  282. package/lib/table/table-export.service.d.ts +33 -0
  283. package/lib/table/table-header-cell/table-header-cell.component.d.ts +24 -0
  284. package/lib/table/table.component.d.ts +144 -0
  285. package/lib/table/table.service.d.ts +28 -0
  286. package/lib/template-confirmation-modal/template-confirmation-modal.component.d.ts +19 -0
  287. package/lib/text-area-input/text-area-input.component.d.ts +19 -0
  288. package/lib/text-input/text-input.component.d.ts +19 -0
  289. package/lib/timeout-modal/timeout-modal.component.d.ts +13 -0
  290. package/lib/timepicker/timepicker.component.d.ts +17 -0
  291. package/lib/validation/form-validator.d.ts +10 -0
  292. package/lib/validation/validation.service.d.ts +16 -0
  293. package/lib/yes-no/yes-no.component.d.ts +19 -0
  294. package/lib/yes-no-boolean/yes-no.component.d.ts +19 -0
  295. package/lib/yes-no-other-input/yes-no-other-input.component.d.ts +18 -0
  296. package/lib/zip-code/zip-code.component.d.ts +19 -0
  297. package/ohioepa-oepa-ui-lib-1.1.0.tgz +0 -0
  298. package/package.json +25 -0
  299. package/public-api.d.ts +138 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ohioepa-oepa-ui-lib.mjs","sources":["../../../projects/oepa-ui-lib/src/lib/address/oepa-address.service.ts","../../../projects/oepa-ui-lib/src/lib/address/address.component.ts","../../../projects/oepa-ui-lib/src/lib/address/address.component.html","../../../projects/oepa-ui-lib/src/lib/contact/contact.component.ts","../../../projects/oepa-ui-lib/src/lib/contact/contact.component.html","../../../projects/oepa-ui-lib/src/lib/datepicker/datepicker.component.ts","../../../projects/oepa-ui-lib/src/lib/datepicker/datepicker.component.html","../../../projects/oepa-ui-lib/src/lib/action-btn/action-btn.component.ts","../../../projects/oepa-ui-lib/src/lib/action-btn/action-btn.component.html","../../../projects/oepa-ui-lib/src/lib/action-btn-modal/action-btn-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/action-btn-modal/action-btn-modal.component.html","../../../projects/oepa-ui-lib/src/lib/checkbox/checkbox.component.ts","../../../projects/oepa-ui-lib/src/lib/checkbox/checkbox.component.html","../../../projects/oepa-ui-lib/src/lib/comment-modal/comment-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/comment-modal/comment-modal.component.html","../../../projects/oepa-ui-lib/src/lib/table/table.service.ts","../../../projects/oepa-ui-lib/src/lib/table/table-export.service.ts","../../../projects/oepa-ui-lib/src/lib/table/oepa-table-sorting.directive.ts","../../../projects/oepa-ui-lib/src/lib/table/oepa-table-filtering.directive.ts","../../../projects/oepa-ui-lib/src/lib/table/oepa-table-cell-inner-html.pipe.ts","../../../projects/oepa-ui-lib/src/lib/table/oepa-table-cell-colspan.pipe.ts","../../../projects/oepa-ui-lib/src/lib/table/oepa-table-cell-value.pipe.ts","../../../projects/oepa-ui-lib/src/lib/table/oepa-table-cell-classname.pipe.ts","../../../projects/oepa-ui-lib/src/lib/table/oepa-table-cell-icon-classname.pipe.ts","../../../projects/oepa-ui-lib/src/lib/table/oepa-table-cell-img-src.pipe.ts","../../../projects/oepa-ui-lib/src/lib/table/table.component.ts","../../../projects/oepa-ui-lib/src/lib/table/table.component.html","../../../projects/oepa-ui-lib/src/lib/confirmation-modal/confirmation-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/confirmation-modal/confirmation-modal.component.html","../../../projects/oepa-ui-lib/src/lib/account-search-modal/account-search-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/account-search-modal/account-search-modal.component.html","../../../projects/oepa-ui-lib/src/lib/account-search-input/account-search-input.component.ts","../../../projects/oepa-ui-lib/src/lib/account-search-input/account-search-input.component.html","../../../projects/oepa-ui-lib/src/lib/table/oepa-table-cell-not-selectable.pipe.ts","../../../projects/oepa-ui-lib/src/lib/table/oepa-table-cell-input-component.pipe.ts","../../../projects/oepa-ui-lib/src/lib/table/table-data-cell/table-data-cell.component.ts","../../../projects/oepa-ui-lib/src/lib/table/table-data-cell/table-data-cell.component.html","../../../projects/oepa-ui-lib/src/lib/table/table-header-cell/table-header-cell.component.ts","../../../projects/oepa-ui-lib/src/lib/table/table-header-cell/table-header-cell.component.html","../../../projects/oepa-ui-lib/src/lib/table/p-table/p-table.component.ts","../../../projects/oepa-ui-lib/src/lib/table/p-table/p-table.component.html","../../../projects/oepa-ui-lib/src/lib/daterangepicker/daterangepicker.component.ts","../../../projects/oepa-ui-lib/src/lib/daterangepicker/daterangepicker.component.html","../../../projects/oepa-ui-lib/src/lib/oepa-wait-message/oepa-wait-message.component.ts","../../../projects/oepa-ui-lib/src/lib/oepa-error-message/oepa-error-message.component.ts","../../../projects/oepa-ui-lib/src/lib/message/oepa-message-type.ts","../../../projects/oepa-ui-lib/src/lib/message/oepa-message.ts","../../../projects/oepa-ui-lib/src/lib/message/message.component.ts","../../../projects/oepa-ui-lib/src/lib/message/message.component.html","../../../projects/oepa-ui-lib/src/lib/message-list/message-list.component.ts","../../../projects/oepa-ui-lib/src/lib/message-list/message-list.component.html","../../../projects/oepa-ui-lib/src/lib/file-upload/file-upload.component.ts","../../../projects/oepa-ui-lib/src/lib/file-upload/file-upload.component.html","../../../projects/oepa-ui-lib/src/lib/multi-file-upload/multi-file-upload.component.ts","../../../projects/oepa-ui-lib/src/lib/multi-file-upload/multi-file-upload.component.html","../../../projects/oepa-ui-lib/src/lib/oepa-forms.service.ts","../../../projects/oepa-ui-lib/src/lib/entity/entity.service.ts","../../../projects/oepa-ui-lib/src/lib/entity/organization-create-modal/organization-create-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/entity/organization-create-modal/organization-create-modal.component.html","../../../projects/oepa-ui-lib/src/lib/entity/organization-search-modal/organization-search-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/entity/organization-search-modal/organization-search-modal.component.html","../../../projects/oepa-ui-lib/src/lib/entity/organization-search-input/organization-search-input.component.ts","../../../projects/oepa-ui-lib/src/lib/entity/organization-search-input/organization-search-input.component.html","../../../projects/oepa-ui-lib/src/lib/entity/person-create-modal/person-create-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/entity/person-create-modal/person-create-modal.component.html","../../../projects/oepa-ui-lib/src/lib/entity/person-search-modal/person-search-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/entity/person-search-modal/person-search-modal.component.html","../../../projects/oepa-ui-lib/src/lib/entity/person-search-input/person-search-input.component.ts","../../../projects/oepa-ui-lib/src/lib/entity/person-search-input/person-search-input.component.html","../../../projects/oepa-ui-lib/src/lib/entity/place-create-modal/place-create-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/entity/place-create-modal/place-create-modal.component.html","../../../projects/oepa-ui-lib/src/lib/entity/place-search-modal/place-search-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/entity/place-search-modal/place-search-modal.component.html","../../../projects/oepa-ui-lib/src/lib/entity/place-search-input/place-search-input.component.ts","../../../projects/oepa-ui-lib/src/lib/entity/place-search-input/place-search-input.component.html","../../../projects/oepa-ui-lib/src/lib/yes-no/yes-no.component.ts","../../../projects/oepa-ui-lib/src/lib/yes-no/yes-no.component.html","../../../projects/oepa-ui-lib/src/lib/yes-no-boolean/yes-no.component.ts","../../../projects/oepa-ui-lib/src/lib/yes-no-boolean/yes-no.component.html","../../../projects/oepa-ui-lib/src/lib/yes-no-other-input/yes-no-other-input.component.ts","../../../projects/oepa-ui-lib/src/lib/yes-no-other-input/yes-no-other-input.component.html","../../../projects/oepa-ui-lib/src/lib/date-input-modal/date-input-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/date-input-modal/date-input-modal.component.html","../../../projects/oepa-ui-lib/src/lib/document/part-modal/part-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/document/part-modal/part-modal.component.html","../../../projects/oepa-ui-lib/src/lib/document/document-placeholder-modal/document-placeholder-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/document/document-placeholder-modal/document-placeholder-modal.component.html","../../../projects/oepa-ui-lib/src/lib/document/document-event-type.ts","../../../projects/oepa-ui-lib/src/lib/document/document-event-entity-type.ts","../../../projects/oepa-ui-lib/src/lib/document/document.service.ts","../../../projects/oepa-ui-lib/src/lib/document/document-part-editor/document-part-editor.component.ts","../../../projects/oepa-ui-lib/src/lib/document/document-part-editor/document-part-editor.component.html","../../../projects/oepa-ui-lib/src/lib/document/document-part/document-part.component.ts","../../../projects/oepa-ui-lib/src/lib/document/document-part/document-part.component.html","../../../projects/oepa-ui-lib/src/lib/ebiz-address/ebiz-address.component.ts","../../../projects/oepa-ui-lib/src/lib/ebiz-address/ebiz-address.component.html","../../../projects/oepa-ui-lib/src/lib/esri-map/esri-map.component.ts","../../../projects/oepa-ui-lib/src/lib/esri-map/esri-map.component.html","../../../projects/oepa-ui-lib/src/lib/ohio-lat-long/ohio-lat-long.component.ts","../../../projects/oepa-ui-lib/src/lib/ohio-lat-long/ohio-lat-long.component.html","../../../projects/oepa-ui-lib/src/lib/edoc-attachment/edoc-attachment.service.ts","../../../projects/oepa-ui-lib/src/lib/edoc-attachment/edoc-attachment.component.ts","../../../projects/oepa-ui-lib/src/lib/edoc-attachment/edoc-attachment.component.html","../../../projects/oepa-ui-lib/src/lib/document/section-modal/section-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/document/section-modal/section-modal.component.html","../../../projects/oepa-ui-lib/src/lib/document/group-modal/group-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/document/group-modal/group-modal.component.html","../../../projects/oepa-ui-lib/src/lib/document/document-group/document-group.component.ts","../../../projects/oepa-ui-lib/src/lib/document/document-group/document-group.component.html","../../../projects/oepa-ui-lib/src/lib/document/document-section/document-section.component.ts","../../../projects/oepa-ui-lib/src/lib/document/document-section/document-section.component.html","../../../projects/oepa-ui-lib/src/lib/document/document-editor/document-editor.component.ts","../../../projects/oepa-ui-lib/src/lib/document/document-editor/document-editor.component.html","../../../projects/oepa-ui-lib/src/lib/dual-list-box/array.pipes.ts","../../../projects/oepa-ui-lib/src/lib/dual-list-box/dual-list-box.component.ts","../../../projects/oepa-ui-lib/src/lib/dual-list-box/dual-list-box.component.html","../../../projects/oepa-ui-lib/src/lib/lynx-image-upload/lynx-image-upload.component.ts","../../../projects/oepa-ui-lib/src/lib/lynx-image-upload/lynx-image-upload.component.html","../../../projects/oepa-ui-lib/src/lib/notes-modal/notes-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/notes-modal/notes-modal.component.html","../../../projects/oepa-ui-lib/src/lib/params-help-button/params-help-button.component.ts","../../../projects/oepa-ui-lib/src/lib/params-help-button/params-help-button.component.html","../../../projects/oepa-ui-lib/src/lib/pin-modal/oepa-pin.service.ts","../../../projects/oepa-ui-lib/src/lib/pin-modal/pin-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/pin-modal/pin-modal.component.html","../../../projects/oepa-ui-lib/src/lib/numeric-input.directive.ts","../../../projects/oepa-ui-lib/src/lib/server-timeout-modal/server-timeout-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/server-timeout-modal/server-timeout-modal.component.html","../../../projects/oepa-ui-lib/src/lib/shopping-cart/shopping-cart.service.ts","../../../projects/oepa-ui-lib/src/lib/shopping-cart/shopping-cart-view/shopping-cart-view.component.ts","../../../projects/oepa-ui-lib/src/lib/shopping-cart/shopping-cart-view/shopping-cart-view.component.html","../../../projects/oepa-ui-lib/src/lib/shopping-cart/shopping-cart-summary/shopping-cart-summary.component.ts","../../../projects/oepa-ui-lib/src/lib/shopping-cart/shopping-cart-summary/shopping-cart-summary.component.html","../../../projects/oepa-ui-lib/src/lib/start-end-timepicker/start-end-timepicker.component.ts","../../../projects/oepa-ui-lib/src/lib/start-end-timepicker/start-end-timepicker.component.html","../../../projects/oepa-ui-lib/src/lib/template-confirmation-modal/template-confirmation-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/template-confirmation-modal/template-confirmation-modal.component.html","../../../projects/oepa-ui-lib/src/lib/text-area-input/text-area-input.component.ts","../../../projects/oepa-ui-lib/src/lib/text-area-input/text-area-input.component.html","../../../projects/oepa-ui-lib/src/lib/timeout-modal/timeout-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/timeout-modal/timeout-modal.component.html","../../../projects/oepa-ui-lib/src/lib/timepicker/timepicker.component.ts","../../../projects/oepa-ui-lib/src/lib/timepicker/timepicker.component.html","../../../projects/oepa-ui-lib/src/lib/table/oepa-table-cell-hidden.pipe.ts","../../../projects/oepa-ui-lib/src/lib/select-input/select-input.component.ts","../../../projects/oepa-ui-lib/src/lib/select-input/select-input.component.html","../../../projects/oepa-ui-lib/src/lib/numeric-input/numeric-input.component.ts","../../../projects/oepa-ui-lib/src/lib/numeric-input/numeric-input.component.html","../../../projects/oepa-ui-lib/src/lib/checkbox-input/checkbox-input.component.ts","../../../projects/oepa-ui-lib/src/lib/checkbox-input/checkbox-input.component.html","../../../projects/oepa-ui-lib/src/lib/date-input/date-input.component.ts","../../../projects/oepa-ui-lib/src/lib/date-input/date-input.component.html","../../../projects/oepa-ui-lib/src/lib/text-input/text-input.component.ts","../../../projects/oepa-ui-lib/src/lib/text-input/text-input.component.html","../../../projects/oepa-ui-lib/src/lib/phone-number/phone-number.component.ts","../../../projects/oepa-ui-lib/src/lib/phone-number/phone-number.component.html","../../../projects/oepa-ui-lib/src/lib/zip-code/zip-code.component.ts","../../../projects/oepa-ui-lib/src/lib/zip-code/zip-code.component.html","../../../projects/oepa-ui-lib/src/lib/common-forms.module.ts","../../../projects/oepa-ui-lib/src/lib/blank/blank.component.ts","../../../projects/oepa-ui-lib/src/lib/blank/blank.component.html","../../../projects/oepa-ui-lib/src/lib/lynx-image-upload/lynx.service.ts","../../../projects/oepa-ui-lib/src/lib/masks/oepa-create-integer-mask.ts","../../../projects/oepa-ui-lib/src/lib/parameter/parameter.service.ts","../../../projects/oepa-ui-lib/src/lib/validation/validation.service.ts","../../../projects/oepa-ui-lib/src/lib/oepa-images.ts","../../../projects/oepa-ui-lib/src/public-api.ts","../../../projects/oepa-ui-lib/src/ohioepa-oepa-ui-lib.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n/**\n * Helper service for the OepaAddressComponent.\n */\n@Injectable({\n providedIn: 'root'\n })\nexport class OepaAddressService {\n private states!: string[];\n private countries!: string[];\n private statesUrl = '/ebiz/api/v1/references/states';\n \n\n constructor(private http: HttpClient) {\n }\n\n /**\n * Retrieve the list of applicable states. If no states have been provided\n * via the <code>setStates()</code> method, the list of states will be retrieved\n * from the server.\n * @returns a Promise providing the list of states as an array of strings.\n */\n public getStates(): Observable<string[]> {\n if (this.states) {\n return new Observable<string[]>((observer) => observer.next(this.states));\n }\n return this.http.get<string[]>(this.statesUrl).pipe(\n map(states => {\n this.states = [];\n states.forEach((state:any) => {\n this.states.push(state['code']);\n });\n return this.states;\n }));\n }\n\n /**\n * Set the states used by this controller. Will replace any value set previously.\n * @param states the list of states\n */\n public setStates(states: Array<string>) {\n this.states = states;\n }\n\n public getCountries(): Observable<string[]> {\n if (this.countries) {\n return new Observable<string[]>((observer) => observer.next(this.countries));\n }\n const countryUrl = '/ebiz/api/v1/places/countries'\n return this.http.get<string[]>(countryUrl ).pipe(\n map(countries => {\n this.countries = [];\n countries.forEach(country => {\n this.countries.push(country);\n });\n return this.countries;\n }));\n }\n \n}","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { OepaAddressService } from './oepa-address.service';\nimport { OepaComponentIdService, OEPAAddress } from '@ohioepa/oepa-common-lib';\n\n@Component({\n selector: 'oepa-address',\n templateUrl: './address.component.html',\n styleUrl: './address.component.css',\n})\nexport class AddressComponent implements OnInit {\n public zipCodeMask = [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/];\n public showStates = true;\n public usStates: string[] = [];\n public countries: string[] = [];\n public componentId = 'OepaAddressComponent';\n\n \n private originalAddress!: OEPAAddress;\n private subscription!: Subscription;\n\n @Input() group!: FormGroup;\n @Input() showValidation = false;\n\n @Input('addressOneLabel') public addressOneLabel: string = 'Address 1';\n @Input('addressTwoLabel') public addressTwoLabel: string = 'Address 2';\n @Input('cityLabel') public cityLabel: string = 'City';\n @Input('stateLabel') public stateLabel: string = 'State';\n @Input('zipCodeLabel') public zipCodeLabel: string = 'Zip Code';\n @Input('disableState') public disableState:boolean = false;\n @Input('isSearch') public isSearch: boolean = false;\n\n @Input('hideLine2') public hideLine2 = false;\n\n // max length values. override if needed\n @Input('line1MaxLength') public line1MaxLength = 40;\n @Input('line2MaxLength') public line2MaxLength = 40;\n @Input('cityMaxLength') public cityMaxLength = 30;\n \n @Input('foreignStateLabel') public foreignStateLabel: string = 'Foreign State';\n @Input('foreignZipLabel') public foreignZipLabel: string = 'Foreign Zip Code';\n @Input('countryLabel') public countryLabel: string = 'Country';\n\n // These values are only used if you want a \"same as\" checkbox for the address\n // All three values must be provided if using the \"same as\" capability\n @Input() sameAsGroup !: FormGroup;\n @Input() sameAsLabel !: string;\n @Input() sameAsChecked: boolean = false;\n\n constructor(private addressService: OepaAddressService, private idService: OepaComponentIdService) {\n this.addressService.getStates().subscribe({\n next: (states) => {\n this.usStates = states;\n }, error: err => {\n console.log('ERROR retrieving states for address: ' + err);\n }});\n }\n\n ngOnInit() {\n if (this.group) {\n \n if(this.group.controls['country']){\n this.addressService.getCountries().subscribe({ \n next: (countries: any) => {\n let countryList:string[]=[];\n //Remove \"Caymen Islands\"\n countries.forEach((country: any) =>{\n if(country !== \"Caymen Islands\")\n countryList.push(country);\n })\n this.countries = countryList;\n }, error: err => {\n console.log('ERROR retrieving countries for address: ' + err);\n }\n });\n }\n this.componentId = this.idService.getComponentId(this.group);\n this.originalAddress = this.addressFromFormGroup(this.group);\n this.subscribeToChanges();\n }\n }\n\n toggleCopyFromSelection() {\n this.sameAsChecked = !this.sameAsChecked;\n if (this.sameAsChecked) {\n this.unsubscribeFromChanges();\n this.group.patchValue(this.addressFromFormGroup(this.sameAsGroup));\n this.group.disable();\n } else {\n this.subscribeToChanges();\n this.group.patchValue(this.originalAddress);\n this.group.enable();\n }\n }\n\n private addressFromFormGroup(group: FormGroup): OEPAAddress {\n let address: OEPAAddress = {};\n if (group) {\n address = {\n line1: group.controls['line1'].value,\n line2: group.controls['line2'].value,\n city: group.controls['city'].value,\n state: group.controls['state'].value,\n postalCode: (group.controls['country'] && group.controls['country'].value !== 'USA') ? group.controls['foreignZip']:group.controls['postalCode'].value,\n foreignState: group.controls['foreignState']? group.controls['foreignState'].value:null,\n country: group.controls['country'] ? group.controls['country'].value:null\n }\n }\n return address;\n }\n\n private subscribeToChanges() {\n this.subscription = this.group.valueChanges.subscribe(address => {\n this.originalAddress.line1 = address.line1;\n this.originalAddress.line2 = address.line2;\n this.originalAddress.city = address.city;\n this.originalAddress.state = address.state;\n this.originalAddress.postalCode = (address.country && address.country !== 'USA') ? address.foreignZip:address.postalCode;\n this.originalAddress.foreignState = address.foreignState ? address.foreignState : null;\n this.originalAddress.country = address.country ? address.country : null;\n \n });\n }\n\n private unsubscribeFromChanges() {\n this.subscription.unsubscribe();\n }\n}\n","<div *ngIf=\"sameAsGroup && sameAsChecked\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label [ngStyle]=\"{ 'font-weight': sameAsChecked && group.disabled ? 'bold' : '' }\">\n {{addressOneLabel}}\n <span *ngIf=\"sameAsGroup\">({{sameAsLabel}} \n <input type=\"checkbox\" [checked]=\"sameAsChecked\" (change)=\"toggleCopyFromSelection()\" [disabled]=\"group.parent?.disabled\"/>)\n </span>\n </label>\n </div>\n </div>\n </div>\n</div>\n<div *ngIf=\"!sameAsGroup || !sameAsChecked\" [formGroup]=\"group\">\n<div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label [ngStyle]=\"{ 'font-weight': sameAsChecked && group.disabled ? 'bold' : '' }\">\n {{addressOneLabel}}\n <span *ngIf=\"sameAsGroup\">\n ({{sameAsLabel}} \n <input type=\"checkbox\" [checked]=\"sameAsChecked\" (change)=\"toggleCopyFromSelection()\" [disabled]=\"group.parent?.disabled\"/>)\n </span>\n </label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['line1'].status === 'INVALID'}\" \n [type]=\"isSearch ? 'search' : 'text'\" placeholder=\"Address\" maxlength=\"40\" formControlName=\"line1\" [maxlength]=\"line1MaxLength\"\n [id]=\"componentId+'_Line1Input'\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['line1'].hasError('required')\">{{addressOneLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['line1'].hasError('maxlength')\">{{addressOneLabel}} has exceeded its maximum length</small>\n </div>\n </div>\n</div>\n<div *ngIf=\"!hideLine2\" class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label>{{addressTwoLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['line2'].status === 'INVALID'}\"\n [type]=\"isSearch ? 'search' : 'text'\" placeholder=\"Address\" maxlength=\"40\" formControlName=\"line2\" [maxlength]=\"line2MaxLength\"\n [id]=\"componentId+'_Line2Input'\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['line2'].hasError('required')\">{{addressTwoLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['line2'].hasError('maxlength')\">{{addressTwoLabel}} has exceeded its maximum length</small>\n </div>\n </div>\n</div>\n<div class=\"row\">\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label>{{cityLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['city'].status === 'INVALID'}\"\n [type]=\"isSearch ? 'search' : 'text'\" placeholder=\"City\" maxlength=\"30\" formControlName=\"city\" [maxlength]=\"cityMaxLength\"\n [id]=\"componentId+'_CityInput'\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['city'].hasError('required')\">{{cityLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['city'].hasError('maxlength')\">{{cityLabel}} has exceeded its maximum length</small>\n </div>\n </div>\n <div class=\"col-md-2\">\n <div *ngIf=\"showStates && (!group.controls['country'] || group.get('country')?.value ==='USA')\" class=\"form-group\">\n <label>{{stateLabel}}</label>\n <select class=\"form-select\" [ngClass]=\"{'is-invalid':showValidation && group.controls['state'].status === 'INVALID'}\" \n name=\"AddressState\" formControlName=\"state\" [id]=\"componentId+'_StateSelect'\" [attr.disabled]=\"disableState || group.disabled ? '' : null\">\n <option *ngFor=\"let s of usStates\" [ngValue]=\"s\">{{s}}</option>\n </select>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['state'].hasError('required')\">State is required</small>\n </div>\n </div>\n <div class=\"col-md-4\">\n <div *ngIf=\"!group.controls['country'] || group.get('country')?.value ==='USA'\" class=\"form-group\">\n <label>{{zipCodeLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['postalCode'].status === 'INVALID'}\"\n [type]=\"isSearch ? 'search' : 'text'\" placeholder=\"Zip Code\" formControlName=\"postalCode\" [id]=\"componentId+'_ZipInput'\" mask=\"00000\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['postalCode'].hasError('required')\">{{zipCodeLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['postalCode'].hasError('minlength')\">{{zipCodeLabel}} must contain exactly 5 digits</small>\n </div>\n </div>\n</div>\n<div *ngIf=\"group.controls['country'] && group.get('country')?.value !=='USA'\" class=\"row\">\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label>{{foreignStateLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['foreignState'].status === 'INVALID'}\"\n type=\"text\" placeholder=\"Foreign State\" formControlName=\"foreignState\" [id]=\"componentId+'_ForeignStateInput'\" [attr.disabled]=\"disableState || group.disabled ? '' : null\" >\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['foreignState'].hasError('required')\">{{foreignStateLabel}} is required</small>\n \n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label>{{foreignZipLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['foreignZip'].status === 'INVALID'}\"\n type=\"text\" placeholder=\"Foreign Zip Code\" formControlName=\"foreignZip\" [id]=\"componentId+'_foreignZipInput'\" >\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['foreignZip'].hasError('required')\">{{foreignZipLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['foreignZip'].hasError('minlength')\">{{foreignZipLabel}} must contain exactly ? digits</small>\n </div> \n </div>\n\n</div>\n<div *ngIf=\"group.controls['country']\" class=\"row\">\n<div class=\"col-md-6\">\n <div class=\"form-group\">\n <label>{{countryLabel}}</label>\n <select class=\"form-select\" [ngClass]=\"{'is-invalid':showValidation && group.controls['country'].status === 'INVALID'}\" \n name=\"AddressCountry\" formControlName=\"country\" [id]=\"componentId+'_CountrySelect'\" [attr.disabled]=\"disableState || group.disabled ? '' : null\">\n <option *ngFor=\"let c of countries\" [ngValue]=\"c\">{{c}}</option>\n </select>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['country'].hasError('required')\">Country{{countryLabel}} is required</small>\n </div>\n</div>\n</div>\n</div>","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { OepaComponentIdService } from '@ohioepa/oepa-common-lib';\n\n@Component({\n selector: 'oepa-contact',\n templateUrl: './contact.component.html',\n styleUrls: ['./contact.component.css']\n})\nexport class ContactComponent implements OnInit {\n\n public componentId = 'OepaContactComponent';\n /** The form group for which this address is a member. */\n @Input() group!: FormGroup;\n /** Form validation will be displayed when showValidation is true. */\n @Input() showValidation = false;\n\n @Input('firstNameLabel') public firstNameLabel: string = 'First Name';\n @Input('lastNameLabel') public lastNameLabel: string = 'Last Name';\n @Input('showMiddleName') public showMiddleName: boolean = false;\n @Input('middleNameLabel') public middleNameLabel: string = 'Middle Name';\n @Input('emailLabel') public emailLabel: string = 'Email';\n @Input('phoneLabel') public phoneLabel: string = 'Phone';\n @Input('faxLabel') public faxLabel: string = 'Fax';\n @Input('noFax') public noFax: boolean = false\n @Input('showTitle') public showTitle: boolean = false;\n @Input('noPhone') public noPhone: boolean = false;\n @Input('noEmail') public noEmail: boolean = false;\n @Input('isSearch') public isSearch: boolean = false;\n\n // max length values. override if needed\n @Input('firstNameMaxLength') public firstNameMaxLength = 50;\n @Input('middleNameMaxLength') public middleNameMaxLength = 50;\n @Input('lastNameMaxLength') public lastNameMaxLength = 50;\n @Input('titleMaxLength') public titleMaxLength = 40;\n @Input('emailMaxLength') public emailMaxLength = 80;\n\n constructor(private idService: OepaComponentIdService) {\n }\n\n ngOnInit() {\n if (this.group) {\n this.componentId = this.idService.getComponentId(this.group);\n }\n }\n\n}\n","<div [formGroup]=\"group\">\n\t<div *ngIf=\"!showMiddleName\" class=\"row\">\n\t\t<div class=\"col-md-6\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>{{firstNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['firstName'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"First Name\" formControlName=\"firstName\" [id]=\"componentId+'_FirstNameInput'\" [maxlength]=\"firstNameMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['firstName'].hasError('required')\">{{firstNameLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['firstName'].hasError('maxlength')\">{{firstNameLabel}} has exceeded its maximum length</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col-md-6\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>{{lastNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['lastName'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"Last Name\" formControlName=\"lastName\" [id]=\"componentId+'_LastNameInput'\" [maxlength]=\"lastNameMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['lastName'].hasError('required')\">{{lastNameLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['lastName'].hasError('maxlength')\">{{lastNameLabel}} has exceeded its maximum length</small>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div *ngIf=\"showMiddleName\" class=\"row\">\n\t\t<div class=\"col-md-4\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>{{firstNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['firstName'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"First Name\" formControlName=\"firstName\" [id]=\"componentId+'_FirstNameInput'\" [maxlength]=\"firstNameMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['firstName'].hasError('required')\">{{firstNameLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['firstName'].hasError('maxlength')\">{{firstNameLabel}} has exceeded its maximum length</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col-md-4\">\n\t\t\t<div class=\"form-group\" [ngClass]=\"{'is-invalid':showValidation && group.controls['middleName'].status === 'INVALID'}\">\n\t\t\t\t<label>{{middleNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" placeholder=\"Middle Name\" formControlName=\"middleName\" [id]=\"componentId+'_MiddleNameInput'\" [maxlength]=\"middleNameMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"showValidation && group.controls['middleName'].status === 'INVALID'\">Middle Name is required</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col-md-4\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>{{lastNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['lastName'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"Last Name\" formControlName=\"lastName\" [id]=\"componentId+'_LastNameInput'\" [maxlength]=\"lastNameMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['lastName'].hasError('required')\">{{lastNameLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['lastName'].hasError('maxlength')\">{{lastNameLabel}} has exceeded its maximum length</small>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div *ngIf=\"showTitle\" class=\"row\">\n\t\t<div class=\"col-md-12\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>Title</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" placeholder=\"Title\" \n\t\t\t\t[ngClass]=\"{'is-invalid':showValidation && group.controls['title'].status === 'INVALID'}\"\n\t\t\t\tformControlName=\"title\" [id]=\"componentId+'_TitleInput'\" [maxlength]=\"titleMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['title'].hasError('required')\">Title is required</small>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div class=\"row\">\n\t\t<div *ngIf=\"!noEmail\" class=\"col-md-6\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>{{emailLabel}}</label>\n\t\t\t\t<input type=\"email\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['emailAddress'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"Email\" formControlName=\"emailAddress\" [id]=\"componentId+'_EmailInput'\" [maxlength]=\"emailMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['emailAddress'].hasError('required')\">{{emailLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['emailAddress'].hasError('maxlength')\">{{emailLabel}} has exceeded its maximum length</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['emailAddress'].hasError('email')\">Please enter a valid email address</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div [ngClass]=\"{ 'col-md-3': !noFax, 'col-md-6': noFax }\">\n\t\t\t<div *ngIf=\"!noPhone\" class=\"form-group\">\n\t\t\t\t<label>{{phoneLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['phoneNumber'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"(xxx) xxx-xxxx\" formControlName=\"phoneNumber\" [id]=\"componentId+'_PhoneInput'\" mask=\"(000) 000-0000\" minlength=\"10\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['phoneNumber'].hasError('required')\">{{phoneLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['phoneNumber'].hasError('minlength')\">Please enter a valid phone number</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div *ngIf=\"!noFax\" class=\"col-md-3\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>{{faxLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['faxNumber'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"(xxx) xxx-xxxx\" formControlName=\"faxNumber\" [id]=\"componentId+'_FaxInput'\" mask=\"(000) 000-0000\" minlength=\"10\">\n\t\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['faxNumber'].hasError('required')\">{{faxLabel}} is required</small>\n\t\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['faxNumber'].hasError('minlength')\">Please enter a valid phone number</small>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>","import { Component, Input, OnInit, OnChanges, SimpleChanges } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { BsDatepickerConfig } from 'ngx-bootstrap/datepicker';\n\nimport { OepaComponentIdService } from '@ohioepa/oepa-common-lib';\n\n@Component({\n selector: 'oepa-datepicker',\n templateUrl: './datepicker.component.html',\n styleUrls: ['./datepicker.component.css']\n})\nexport class DatepickerComponent implements OnInit, OnChanges {\n public componentId = 'OepaDatepickerComponent';\n @Input() group!: FormGroup;\n @Input() field!: string;\n @Input() bsConfig!: Partial<BsDatepickerConfig>;\n @Input() showValidation = false;\n @Input() placement!: string;\n @Input() tableIdx: number | undefined;\n @Input() small = false;\n\n public minDate!: Date | undefined;\n public maxDate!: Date | undefined;\n public isDisabled = false;\n\n public getPlacement() : 'top' | 'bottom' | 'left' | 'right' {\n switch (this.placement) {\n case 'top':\n return 'top';\n break;\n case 'left':\n return 'left';\n break;\n case 'right':\n return 'right';\n break;\n default:\n return 'bottom';\n }\n }\n\n constructor(private idService: OepaComponentIdService) { }\n\n checkValidity() {\n for (const key in this.group.controls) {\n if (this.group.controls.hasOwnProperty(key) && key === this.field) {\n return this.group.controls[key].status !== 'INVALID';\n }\n }\n return null;\n }\n\n clearDate() {\n for (const key in this.group.controls) {\n if (this.group.controls.hasOwnProperty(key) && key === this.field) {\n this.group.controls[key].setValue(null);\n }\n }\n }\n\n ngOnInit() {\n if (this.bsConfig) {\n if (this.bsConfig.minDate) {\n this.minDate = this.bsConfig.minDate;\n } else {\n this.minDate = undefined;\n }\n if (this.bsConfig.maxDate) {\n this.maxDate = this.bsConfig.maxDate;\n } else {\n this.maxDate = undefined;\n }\n if (this.bsConfig.isDisabled) {\n this.isDisabled = this.bsConfig.isDisabled; // defaults to false\n }\n } else {\n this.bsConfig = {};\n }\n this.bsConfig.showWeekNumbers = false;\n if (this.group) {\n this.componentId = this.idService.getComponentId(this.group);\n this.componentId += (this.componentId.length > 0 ? '_' : '') + (this.field || '') + (this.tableIdx || '');\n } else {\n console.log('OOPS No datepickerForm yet');\n }\n }\n\n // force value to null in case where user enters non-numeric values\n // in the field. The \"normal\" behavior of the ngx-bootstrap datepicker\n // is to set the input value to \"Invalid Date\". Unfortunately, this messes\n // up validation. The method below will force the input value to null\n // in this case which will ensure that validation works properly.\n onValueChange(event:any) {\n // timeout is needed to make this work properly\n setTimeout(() => {\n if (this.group && this.group.controls[this.field]) {\n const value = this.group.controls[this.field].value;\n if (value && value.toJSON() === null) {\n this.group.controls[this.field].setValue(null);\n }\n this.group.controls[this.field].updateValueAndValidity();\n }\n }, 50);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['bsConfig']) {\n if (changes['bsConfig'].currentValue.minDate || changes['bsConfig'].currentValue.minDate == null) {\n this.minDate = changes['bsConfig'].currentValue.minDate;\n }\n\n if (changes['bsConfig'].currentValue.maxDate || changes['bsConfig'].currentValue.maxDate == null) {\n this.maxDate = changes['bsConfig'].currentValue.maxDate;\n }\n }\n }\n\n}\n","<div [formGroup]=\"group\">\n <div>\n <div class=\"input-group\">\n <input [id]=\"componentId+'_Input'\"\n class=\"form-control\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n #dp=\"bsDatepicker\"\n bsDatepicker\n [formControlName]=\"field\"\n [bsConfig]=\"bsConfig\"\n [isDisabled]=\"group.get('field')?.disabled || false\"\n [placement]=\"getPlacement() || 'bottom'\"\n [ngClass]=\"{'is-invalid':showValidation && !checkValidity()}\"\n (bsValueChange)=\"onValueChange($event)\"\n >\n <div class=\"btn-group\" role=\"group\">\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"dp.toggle()\" [id]=\"componentId+'_ToggleBtn'\" [disabled]=\"group.get(field)?.disabled\">\n <i class=\"bi bi-calendar3\"></i>\n </button>\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"clearDate()\" [id]=\"componentId+'_ClearBtn'\" [disabled]=\"group.get(field)?.disabled\">\n <i class=\"bi bi-x-lg\"></i>\n </button>\n </div>\n </div>\n <small class=\"invalid-feedback d-block\" *ngIf=\"showValidation && group.get(field)?.hasError('required')\">Date is required</small>\n <small class=\"invalid-feedback d-block\" *ngIf=\"showValidation && group.get(field)?.invalid && !group.get(field)?.hasError('required')\">Date is out of range</small>\n </div>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\nimport { OepaAction } from './oepa-action';\nimport { OepaActionEvent } from './oepa-action-event';\n\n/**\n * A dropdown button with a list of actions.\n */\n@Component({\n selector: 'oepa-action-btn',\n templateUrl: './action-btn.component.html',\n styleUrls: ['./action-btn.component.css']\n})\nexport class ActionBtnComponent {\n busy = false;\n\n /** Button label */\n @Input() label = 'Actions';\n /** Unique id for this button */\n @Input() btnId = '';\n /** Data to be passed to emitter */\n @Input() data: any;\n /** List of actions for this button */\n @Input() actions: Array<OepaAction> = [];\n /** Make button \"normal\" size (default is btn-sm) */\n @Input() normalSize = false;\n /** dropup? */\n @Input() dropup = false;\n\n /** Event emitted when an action is selected */\n @Output() actionClicked: EventEmitter<OepaActionEvent> = new EventEmitter();\n\n constructor(private sanitizer: DomSanitizer) { }\n\n public sanitize(html: string): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n\n public onActionClicked(action: OepaAction): void {\n const data = this.data;\n this.actionClicked.emit({ \n action: action, \n data: data,\n buttonObj: this\n });\n }\n\n public setBusy() {\n this.busy = true;\n }\n\n public clearBusy() {\n this.busy = false;\n }\n\n public getID(): string {\n return this.btnId + '_ActionBtn';\n }\n\n}\n","<div *ngIf=\"actions && actions.length > 0\" class=\"btn-group\" dropdown [dropup]=\"dropup\">\n <button dropdownToggle type=\"button\" class=\"btn btn-primary dropdown-toggle\" [ngClass]=\"{ 'btn-sm' : !normalSize }\"\n [id]=\"btnId+'_ActionBtn'\">\n <span *ngIf=\"busy\" class=\"spinner-border text-primary\" role=\"status\"></span>\n {{label}} \n <span class=\"caret\"></span>\n </button>\n\n <ul *dropdownMenu class=\"dropdown-menu dropdown-menu-right\" role=\"menu\">\n <li *ngFor=\"let action of actions; let i = index;\" role=\"menuitem\">\n <a *ngIf=\"!busy\" class=\"dropdown-item\" (click)=\"onActionClicked(action)\" [id]=\"btnId+'_ActionLink_'+i\">\n <i ngClass=\"{{action.className || ''}}\"></i> {{action.title}}\n </a>\n </li>\n </ul>\n</div> \n<!-- display disabled button if no actions are available -->\n<div *ngIf=\"!actions || actions.length === 0\">\n <button type=\"button\" class=\"btn btn-primary\" [ngClass]=\"{ 'btn-sm' : !normalSize }\" [id]=\"btnId+'_ActionBtn'\" disabled>\n N/A \n </button>\n</div>","import { Component, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { OepaAction } from '../action-btn/oepa-action';\n\n@Component({\n selector: 'oepa-action-btn-modal',\n templateUrl: './action-btn-modal.component.html',\n styleUrls: ['./action-btn-modal.component.css']\n})\nexport class ActionBtnModalComponent implements OnInit {\n actions: Array<OepaAction> = [{title: 'Hello', className: 'bi bi-person-raised-hand'}, { title: 'Goodbye', className: 'bi bi-person-walking'}];\n\n constructor(public bsModalRef: BsModalRef) { }\n\n ngOnInit() {\n }\n\n}\n","<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">Action Button Test</h4>\n <button type=\"button\" class=\"btn-close float-end\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n </button>\n</div>\n<div class=\"modal-body\">\n <div class=\"row\">\n <div class=\"col-sm-12 text-center\">\n <oepa-action-btn [actions]=\"actions\"></oepa-action-btn>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-12 text-center\">\n <div class=\"btn-group\" dropdown placement=\"bottom right\">\n <button id=\"button-basic\" dropdownToggle type=\"button\" class=\"btn btn-primary dropdown-toggle\"\n aria-controls=\"dropdown-basic\">\n Button dropdown <span class=\"caret\"></span>\n </button>\n <ul id=\"dropdown-basic\" *dropdownMenu class=\"dropdown-menu\" role=\"menu\"\n aria-labelledby=\"button-basic\">\n <li role=\"menuitem\"><a class=\"dropdown-item\" href=\"#\">Action</a></li>\n <li role=\"menuitem\"><a class=\"dropdown-item\" href=\"#\">Another action</a></li>\n <li role=\"menuitem\"><a class=\"dropdown-item\" href=\"#\">Something else here</a></li>\n <li class=\"divider dropdown-divider\"></li>\n <li role=\"menuitem\"><a class=\"dropdown-item\" href=\"#\">Separated link</a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n</div>\n<div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-primary mr-1\" (click)=\"bsModalRef.hide()\">Close</button>\n</div>","import { Component, OnInit, Input } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { OepaComponentIdService } from '@ohioepa/oepa-common-lib';\n\n@Component({\n selector: 'oepa-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.css']\n})\nexport class CheckboxComponent implements OnInit {\n @Input() group!: FormGroup;\n @Input() field!: string;\n @Input() label!: string;\n public componentId = 'OepaCheckbox';\n\n constructor(private idService: OepaComponentIdService) { \n }\n\n ngOnInit() {\n if (this.group) {\n this.componentId = this.idService.getComponentId(this.group);\n }\n }\n\n}\n","<span *ngIf=\"group.controls[field].value && group.disabled\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>\n<span [ngClass]=\"{ 'custom-checkbox': (group.controls[field].value && group.disabled) }\" [formGroup]=\"group\">\n <input [ngClass]=\"{ 'custom-control-input': (group.controls[field].value && group.disabled) }\" type=\"checkbox\" [formControlName]=\"field\" [id]=\"componentId\">\n <label [ngClass]=\"{ 'custom-control-label': (group.controls[field].value && group.disabled), 'label-bold': (group.controls[field].value && group.disabled) }\">\n <span *ngIf=\"!group.controls[field].value || !group.disabled\">&nbsp;</span>\n {{label}}\n </label>\n</span>\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\n\nimport { BsModalRef } from 'ngx-bootstrap/modal';\n\n@Component({\n selector: 'oepa-comment-modal',\n templateUrl: './comment-modal.component.html',\n styleUrls: ['./comment-modal.component.css']\n})\nexport class CommentModalComponent implements OnInit {\n public modalForm !:FormGroup;\n public errorMessage: string | undefined = undefined;\n public commentText: string | undefined = undefined;\n\n @Input() modalTitle!: string;\n @Input() commentsLabel = 'Comments';\n @Input() processBtnLabel!: string;\n\n @Output() onProcessComment: EventEmitter<string> = new EventEmitter<string>();\n @Output() onCancel: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(private fb: FormBuilder, public bsModalRef: BsModalRef) { }\n\n ngOnInit() {\n if (this.modalForm === undefined) {\n this.modalForm = this.fb.group({\n commentText: ''\n });\n this.modalForm.controls['commentText']?.valueChanges.subscribe(comment => this.commentText = comment);\n } else {\n this.modalForm.reset();\n }\n }\n\n processComment() {\n this.onProcessComment.emit(this.commentText);\n this.bsModalRef.hide();\n }\n\n cancel() {\n this.onCancel.emit();\n this.bsModalRef.hide();\n }\n\n}\n","<div class=\"modal-header\">\n <h3 class=\"modal-title\">{{modalTitle}}</h3>\n</div>\n\n<div class=\"modal-body\">\n <div [formGroup]=\"modalForm\" class=\"form-group\">\n <label>{{commentsLabel}}</label>\n <textarea class=\"form-control\" formControlName=\"commentText\" id=\"CommentInput\" rows=\"4\" maxlength=\"2000\"></textarea>\n </div>\n</div>\n\n<div class=\"modal-footer\">\n <button class=\"btn btn-primary mr-1\" type=\"button\" id=\"ProcessCommentBtn\" (click)=\"processComment()\">{{processBtnLabel}}</button>\n <button class=\"btn btn-primary mr-1\" type=\"button\" id=\"CencelCommentBtn\" (click)=\"cancel()\">Cancel</button>\n</div>\n","import { Injectable } from '@angular/core';\nimport { OepaTableColumn } from './oepa-table-column';\nimport { OepaTableRow } from './oepa-table-row';\nimport { OepaTableSortCriterion } from './oepa-table-sort-criterion';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TableService {\n private filterInfo: any = {};\n private sortInfo:any = {};\n private idSuffix = 0;\n private pageInfo: any = {};\n private dataInfo: any = {};\n\n public reset(tableId: string) {\n this.clearFilterInfo(tableId);\n this.clearSortInfo(tableId);\n this.clearPageInfo(tableId);\n this.clearDataInfo(tableId);\n }\n\n public nextIdSuffix() : number {\n return this.idSuffix++;\n }\n\n public clearSortInfo(tableId: string) {\n this.sortInfo[tableId] = undefined;\n }\n\n public clearFilterInfo(tableId: string) {\n this.filterInfo[tableId] = undefined;\n }\n\n public clearPageInfo(tableId: string) {\n this.pageInfo[tableId] = undefined;\n }\n\n public clearDataInfo(tableId: string) {\n this.dataInfo[tableId] = undefined;\n }\n\n public setFilter(tableId: string, columnId: string, filter: string) {\n if (!this.filterInfo[tableId]) {\n this.filterInfo[tableId] = {};\n }\n this.filterInfo[tableId][columnId] = filter;\n }\n\n public getFilter(tableId: string, columnId: string): string {\n let filter = undefined;\n if (this.filterInfo[tableId]) {\n filter = this.filterInfo[tableId][columnId];\n }\n return filter;\n }\n\n public setSort(tableId: string, column: OepaTableColumn) {\n let sortCriteria = this.sortInfo[tableId] || [];\n if (column && column.id) {\n let found = false;\n sortCriteria.forEach((criterion:any) => {\n if (criterion.columnId === column.id) {\n found = true;\n criterion.sort = column.sort;\n }\n });\n if (!found) {\n sortCriteria.push({\n columnId: column.id,\n sort: column.sort\n });\n } else if (column.sort !== 'asc' && column.sort !== 'desc') {\n column.sortIndex = undefined;\n sortCriteria = sortCriteria.filter((criterion:any) => {\n return criterion.columnId != column.id;\n });\n }\n }\n this.sortInfo[tableId] = sortCriteria;\n }\n\n public getSortCriterion(tableId: string, columnId: string): OepaTableSortCriterion | undefined {\n let sort: OepaTableSortCriterion | undefined = undefined;\n let sortCriteria = this.sortInfo[tableId] || [];\n for (let i=0; i<sortCriteria.length; i++) {\n if (sortCriteria[i].columnId == columnId) {\n sortCriteria.sortIndex = i + 1;\n sort = sortCriteria[i];\n }\n };\n return sort;\n }\n\n public getSortCriteria(tableId: string) : OepaTableSortCriterion[] {\n return this.sortInfo[tableId];\n }\n\n public setPage(tableId: string, pageNumber: number) {\n this.pageInfo[tableId]= pageNumber;\n }\n\n public getPage(tableId: string): number {\n let pageNumber = undefined;\n if (this.pageInfo[tableId]) {\n pageNumber = this.pageInfo[tableId];\n }\n return pageNumber;\n }\n\n public setData(tableId: string, data: Array<OepaTableRow>) {\n this.dataInfo[tableId]= data;\n }\n\n public getData(tableId: string): Array<OepaTableRow> {\n let data = undefined;\n if (this.dataInfo[tableId]) {\n data = this.dataInfo[tableId];\n }\n return data;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\n\nimport { OepaTable } from './oepa-table';\nimport { OepaTableConfig } from './oepa-table-config';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TableExportService {\n private downloadHTMLUrl = '/ebiz/api/v1/fileutil/tableAsHTML';\n private downloadExcelUrl = '/ebiz/api/v1/fileutil/tableAsExcel';\n private downloadDummyHTMLUrl = '/ebiz/api/v1/fileutil/dummyTableHTML';\n private downloadDummyExcelUrl = '/ebiz/api/v1/fileutil/dummyTableExcel';\n\n constructor(private http: HttpClient) {\n }\n\n /**\n * Return a string representing the contents of table as HTML.\n * @param table\n */\n public downloadHTML(table: OepaTable, config: OepaTableConfig): Observable<string> {\n const headers = new HttpHeaders();\n headers.append('Content-type', 'application/json;odata=verbose');\n let url = this.downloadHTMLUrl + (config.exportEmbedSubTable ? '' : '/sideBySide') + (config.exportShowHiddenColumns ? '?showHidden=true' : '');\n return this.http.post(url, table, { headers: headers, responseType: 'text' });\n }\n\n /**\n * Return a string representing the contents of table as an Excel file.\n * @param table\n */\n public downloadExcel(table: OepaTable, config: OepaTableConfig): Observable<any> {\n const headers = new HttpHeaders();\n headers.append('Content-type', 'application/json;odata=verbose');\n let url = this.downloadExcelUrl + (config.exportEmbedSubTable ? '' : '/sideBySide') + (config.exportShowHiddenColumns ? '?showHidden=true' : '');\n return this.http.post(url, table, { headers: headers, responseType: 'blob' });\n }\n\n /**\n * Dummy method for testing HTML download.\n */\n public downloadDummyHTML(): Observable<string> {\n const headers = new HttpHeaders();\n return this.http.get(this.downloadDummyHTMLUrl, { headers: headers, responseType: 'text' });\n }\n\n /**\n * Dummy method for testing Excel download.\n */\n public downloadDummyExcel(): Observable<any> {\n const headers = new HttpHeaders();\n return this.http.get(this.downloadDummyExcelUrl, { headers: headers, responseType: 'blob' });\n }\n\n}\n","import { Directive, EventEmitter, Input, Output, HostListener, OnInit } from '@angular/core';\nimport { OepaTableColumn } from './oepa-table-column';\nimport { TableService } from './table.service';\n\n@Directive({selector: '[oepaTableSorting]'})\nexport class OepaTableSortingDirective implements OnInit {\n @Input() public tableId = '';\n @Input() public oepaTableSorting!: boolean;\n @Input() public column!: OepaTableColumn;\n @Output() public sortChanged: EventEmitter<OepaTableColumn> = new EventEmitter();\n\n @HostListener('click', ['$event'])\n public onToggleSort(event: any): void {\n if (event) {\n event.preventDefault();\n }\n\n // toggle sort for selected column\n if (this.oepaTableSorting && this.column && this.column.sort) {\n switch (this.column.sort) {\n case 'asc':\n this.column.sort = 'desc';\n break;\n case 'desc':\n this.column.sort = 'none';\n break;\n default:\n this.column.sort = 'asc';\n break;\n }\n\n this.sortChanged.emit(this.column);\n }\n }\n\n constructor(private tableService: TableService) {\n }\n\n ngOnInit() {\n let criterion = this.tableService.getSortCriterion(this.tableId, this.column.id);\n if (criterion && criterion.sort && this.column.sort !== criterion.sort) {\n this.column.sort = criterion.sort;\n }\n }\n}\n","import { Directive, EventEmitter, ElementRef, HostListener, Input, Output, OnInit, Renderer2 } from '@angular/core';\nimport { OepaTableFilter } from './oepa-table-filter';\nimport { TableService } from './table.service';\n\n// import {setProperty} from 'angular2/ts/src/core/forms/directives/shared';\nfunction setProperty(renderer: Renderer2, elementRef: ElementRef, propName: string, propValue: any): void {\n renderer.setProperty(elementRef.nativeElement, propName, propValue);\n}\n\n@Directive({selector: '[oepaTableFiltering]'})\nexport class OepaTableFilteringDirective implements OnInit {\n @Input() public oepaTableFiltering: OepaTableFilter = {\n filterString: '',\n columnId: ''\n };\n\n @Input() tableId = '';\n\n @Output() public tableChanged: EventEmitter<OepaTableFilter> = new EventEmitter();\n\n private element: ElementRef;\n private renderer: Renderer2;\n\n @HostListener('input', ['$event.target.value'])\n public onChangeFilter(event: string): void {\n this.oepaTableFiltering.filterString = event;\n this.tableService.setFilter(this.tableId, this.oepaTableFiltering.columnId || '', this.oepaTableFiltering.filterString);\n this.tableChanged.emit(this.oepaTableFiltering);\n }\n\n public constructor(element: ElementRef, renderer: Renderer2, private tableService: TableService) {\n this.element = element;\n this.renderer = renderer;\n }\n\n ngOnInit(): void { \n let storedFilterValue : string | undefined = this.tableService.getFilter(this.tableId, this.oepaTableFiltering.columnId || '');\n if (!storedFilterValue) {\n storedFilterValue = this.oepaTableFiltering.filterString;\n }\n if (storedFilterValue) {\n this.oepaTableFiltering.filterString = storedFilterValue;\n setTimeout(() => {\n this.renderer.setProperty(this.element.nativeElement, 'value', this.oepaTableFiltering.filterString);\n this.tableChanged.emit(this.oepaTableFiltering);\n }, 100);\n }\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { OepaTableRow } from \"./oepa-table-row\";\nimport { OepaTableCell } from \"./oepa-table-cell\";\nimport { OepaTableColumn } from \"./oepa-table-column\";\n\n@Pipe({ \n name : 'cellInnerHTML'\n})\nexport class OepaTableCellInnerHtmlPipe implements PipeTransform {\n transform(row: OepaTableRow, column: OepaTableColumn): string {\n let result: string | undefined = '';\n row.cells.forEach((cell: OepaTableCell) => {\n if (cell.id === column.id) {\n result = cell.innerHTML;\n }\n });\n return result;\n }\n}","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { OepaTableRow } from \"./oepa-table-row\";\nimport { OepaTableCell } from \"./oepa-table-cell\";\nimport { OepaTableColumn } from \"./oepa-table-column\";\n\n@Pipe({ \n name : 'cellColspan'\n})\nexport class OepaTableCellColSpanPipe implements PipeTransform {\n transform(row: OepaTableRow, column: OepaTableColumn): number {\n let result: number = 1;\n row.cells.forEach((cell: OepaTableCell) => {\n if (cell.id === column.id) {\n result = cell.colSpan || 1;\n }\n });\n return result;\n }\n}","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { OepaTableRow } from \"./oepa-table-row\";\nimport { OepaTableCell } from \"./oepa-table-cell\";\nimport { OepaTableColumn } from \"./oepa-table-column\";\n\n@Pipe({ \n name : 'cellValue'\n})\nexport class OepaTableCellValuePipe implements PipeTransform {\n transform(row: OepaTableRow, column: OepaTableColumn): string {\n let result: string | undefined = '';\n row.cells.forEach((cell: OepaTableCell) => {\n if (cell.id === column.id) {\n result = cell.value;\n }\n });\n return result;\n }\n}","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { OepaTableRow } from \"./oepa-table-row\";\nimport { OepaTableCell } from \"./oepa-table-cell\";\nimport { OepaTableColumn } from \"./oepa-table-column\";\n\n@Pipe({\n name: 'cellClassname'\n})\nexport class OepaTableCellClassnamePipe implements PipeTransform {\n transform(row: OepaTableRow, column: OepaTableColumn): string {\n let result: string | undefined = '';\n row.cells.forEach((cell: OepaTableCell) => {\n if (cell.id === column.id) {\n result = cell.className;\n }\n });\n return result;\n }\n}","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { OepaTableRow } from \"./oepa-table-row\";\nimport { OepaTableCell } from \"./oepa-table-cell\";\nimport { OepaTableColumn } from \"./oepa-table-column\";\n\n@Pipe({\n name: 'cellIconClassname'\n})\nexport class OepaTableCellIconClassnamePipe implements PipeTransform {\n transform(row: OepaTableRow, column: OepaTableColumn): string {\n let result: string | undefined = '';\n row.cells.forEach((cell: OepaTableCell) => {\n if (cell.id === column.id) {\n result = cell.iconClassName;\n }\n });\n return result;\n }\n}","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { OepaTableRow } from \"./oepa-table-row\";\nimport { OepaTableCell } from \"./oepa-table-cell\";\nimport { OepaTableColumn } from \"./oepa-table-column\";\n\n@Pipe({\n name: 'cellImgSrc'\n})\nexport class OepaTableCellImgSrcPipe implements PipeTransform {\n transform(row: OepaTableRow, column: OepaTableColumn): string {\n let result: string | undefined = '';\n row.cells.forEach((cell: OepaTableCell) => {\n if (cell.id === column.id) {\n result = cell.imgSrc;\n }\n });\n return result;\n }\n}","import { Component, EventEmitter, Input, Output, OnInit } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\nimport { OepaTable } from './oepa-table';\nimport { OepaTableConfig } from './oepa-table-config';\nimport { OepaTableHeader } from './oepa-table-header';\nimport { OepaTableColumn } from './oepa-table-column';\nimport { OepaTableRow } from './oepa-table-row';\nimport { OepaTableCell } from './oepa-table-cell';\nimport { OepaTableFilter } from './oepa-table-filter';\nimport { OepaTablePageInfo } from './oepa-table-page-info';\nimport { OepaTableCellClickEvent } from './oepa-table-cell-click-event';\n\nimport { OepaActionEvent } from '../action-btn/oepa-action-event';\n\nimport { TableExportService } from './table-export.service';\nimport { OepaFileUtilService } from '@ohioepa/oepa-common-lib';\nimport { OepaTemplateInfo } from '@ohioepa/oepa-common-lib';\nimport { TableService } from './table.service';\nimport { OepaTableSortCriterion } from './oepa-table-sort-criterion';\nimport { PageChangedEvent } from 'ngx-bootstrap/pagination';\n\n@Component({\n selector: 'oepa-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.css']\n})\nexport class TableComponent implements OnInit {\n public showFilterRow: Boolean = false;\n public headerRows: Array<OepaTableHeader> = [];\n public rows: Array<OepaTableRow> = [];\n public visibleColumnCount = 0;\n public allColumnCount = 0;\n public exportVisibleOnly: boolean | undefined = false;\n\n public dataColumns: Array<OepaTableColumn> = [];\n public hiddenColumns: Array<OepaTableColumn> = [];\n public columnHeaders: Array<string> = [];\n public _data: Array<OepaTableRow> = [];\n private _config: OepaTableConfig = {};\n private currentFilters: Array<OepaTableFilter> = [{\n filterString: '',\n columnId: undefined\n }];\n\n public dataHasDetails = false;\n public showAllDetails = false;\n\n public allRowsSelected = false;\n\n public pageInfo: OepaTablePageInfo = {\n page: 1,\n itemsPerPage: 10,\n maxSize: 5,\n numPages: 1,\n length: 0\n };\n public currentPage = 1;\n public paginationOn = true;\n\n @Input() tableId = '';\n\n @Input()\n public set config(conf: OepaTableConfig) {\n if (!conf.className) {\n conf.className = 'table-striped table-bordered';\n }\n if (conf.classNames) {\n conf.className = conf.classNames.join(' ');\n }\n if (conf.rowsPerPage) {\n this.pageInfo.itemsPerPage = conf.rowsPerPage;\n }\n this.exportVisibleOnly = conf.exportVisibleOnly;\n this._config = conf;\n }\n\n public get config(): OepaTableConfig {\n return this._config;\n }\n\n @Input()\n public set complexHeader(hdrs: Array<OepaTableHeader>) {\n this.resetHeaders();\n if (hdrs && hdrs.length) {\n hdrs.forEach((hdr: OepaTableHeader) => {\n this.headerRows.push(this.extractInnerColumns(hdr.columns));\n });\n this.columnHeaders = this.extractColumnHeaders(this.headerRows);\n this.dataColumns = this.extractDataColumns(this.headerRows);\n this.initializeHiddenColumns(true);\n }\n }\n\n @Input()\n public set header(hdr: OepaTableHeader) {\n this.resetHeaders();\n if (hdr.columns && hdr.columns.length > 0) {\n this.headerRows.push(this.extractInnerColumns(hdr.columns));\n }\n this.columnHeaders = this.extractColumnHeaders(this.headerRows);\n this.dataColumns = this.extractDataColumns(this.headerRows);\n this.initializeHiddenColumns(false);\n }\n\n @Input() customBtnLabel: string | undefined = undefined;\n @Input() customBtnVisible = false;\n @Input() customBtnEnabled = false;\n\n // Outputs (Events)\n @Output() public cellClicked: EventEmitter<OepaTableCellClickEvent> = new EventEmitter();\n @Output() public actionClicked: EventEmitter<OepaActionEvent> = new EventEmitter();\n @Output() public rowSelected: EventEmitter<Array<OepaTableRow>> = new EventEmitter();\n @Output() public customBtnClicked: EventEmitter<void> = new EventEmitter();\n\n private resetHeaders() {\n this.headerRows = [];\n this.columnHeaders = [];\n this.dataColumns = [];\n this.hiddenColumns = [];\n }\n\n private initializeHiddenColumns(complexHeader: boolean) {\n this.visibleColumnCount = 0;\n this.allColumnCount = 0;\n this.dataColumns.forEach((column) => {\n if (complexHeader && (column?.hidden === true || column?.hidden === false)) {\n console.error('disabling hidden attribute for column: ' + column.id +\n '. Hidden columns are not supported for complex headers (yet).');\n column.hidden = undefined;\n this.visibleColumnCount++;\n } else if (column?.hidden === true) {\n this.hiddenColumns.push(column);\n } else {\n this.visibleColumnCount++;\n }\n this.allColumnCount++;\n });\n // console.log('visibleColumnCount = ' + this.visibleColumnCount);\n }\n\n @Input()\n public set data(values: Array<OepaTableRow>) {\n if (!this._data || this._data.length === 0) {\n this._data = this.tableService.getData(this.tableId) || [];\n }\n if (values) {\n for (let i = 0; i < values.length; i++) {\n values[i].privateId = i;\n }\n if (this._data && this._data.length !== values.length) {\n this.tableService.clearPageInfo(this.tableId);\n }\n }\n\n this._data = values;\n this.tableService.setData(this.tableId, this._data);\n this.updateTable();\n }\n\n public get data(): Array<OepaTableRow> {\n return this._data.map(x => Object.assign({}, x));\n }\n\n @Input() totalRow: OepaTableRow | undefined;\n\n public constructor(private sanitizer: DomSanitizer,\n private tableService: TableService,\n private tableExportService: TableExportService,\n private fileUtilService: OepaFileUtilService) {\n }\n\n ngOnInit() {\n this.paginationOn = !this._config.disablePagination;\n }\n\n private extractInnerColumns(inner: Array<OepaTableColumn>): OepaTableHeader {\n const header: OepaTableHeader = { columns: [] };\n inner.forEach((value: OepaTableColumn) => {\n const column = header.columns.find((col: OepaTableColumn) => col.id === value.id);\n if (column) {\n // overwrite repeated column\n Object.assign(column, value);\n }\n if (!column) {\n header.columns.push(value);\n }\n });\n return header;\n }\n\n private extractColumnHeaders(headerRows: Array<OepaTableHeader>): Array<string> {\n const headers: Array<string> = [];\n let rowIndex = 0;\n const childColumns: any = {};\n headerRows.forEach((hdr: OepaTableHeader) => {\n let colIndex = 0;\n hdr.columns.forEach((column: OepaTableColumn) => {\n // console.log('rowIndex=' + rowIndex + ', colIndex=' + colIndex + ', column=' + JSON.stringify(column));\n if (rowIndex === 0) {\n headers.push(column.title);\n if (column.colspan) {\n for (let count = 1; count < column.colspan; count++) {\n headers.push('');\n }\n }\n if (column.rowspan) {\n childColumns[colIndex] = column.rowspan - 1;\n }\n } else {\n while (childColumns[colIndex] && childColumns[colIndex] > 0) {\n childColumns[colIndex]--;\n colIndex++;\n }\n headers[colIndex] += ' ' + column.title;\n if (column.colspan) {\n for (let count = 1; count < column.colspan; count++) {\n colIndex++;\n }\n }\n }\n colIndex++;\n });\n rowIndex++;\n });\n // console.log('headers = ' + JSON.stringify(headers));\n return headers;\n }\n\n\n private extractDataColumns(headerRows: Array<OepaTableHeader>): Array<OepaTableColumn> {\n const dataColumns: Array<OepaTableColumn> = [];\n let rowIndex = 0;\n const childColumns:any = {};\n headerRows.forEach((hdr: OepaTableHeader) => {\n let colIndex = 0;\n hdr.columns.forEach((column: OepaTableColumn) => {\n if (rowIndex === 0) {\n if (column.colspan && column.colspan > 1) {\n for (let count = 0; count < column.colspan; count++) {\n dataColumns.push({\n id: '',\n title: ''\n });\n }\n colIndex += (column.colspan - 1);\n } else {\n dataColumns.push(column);\n if (column.rowspan) {\n childColumns[colIndex] = column.rowspan - 1;\n }\n }\n } else {\n while (childColumns[colIndex] && childColumns[colIndex] > 0) {\n childColumns[colIndex]--;\n colIndex++;\n }\n if (column.colspan && column.colspan > 1) {\n colIndex += (column.colspan - 1);\n } else {\n dataColumns[colIndex] = column;\n }\n }\n colIndex++;\n });\n rowIndex++;\n });\n // console.log('dataColumns = ' + JSON.stringify(dataColumns));\n return dataColumns;\n }\n\n public sanitize(html: string): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n\n /**\n * Check to see if any filters are set\n */\n public noFilters(): boolean {\n let noFilters = true;\n this.currentFilters.forEach(filter => {\n if (filter.filterString && filter.filterString.length > 0) {\n noFilters = false;\n }\n });\n return noFilters;\n }\n\n /**\n * Retrieve the global filter string (if any) as a RegExp\n */\n private getGlobalFilter(): RegExp | undefined {\n let regExp: RegExp | undefined;\n this.currentFilters.forEach(filter => {\n if (!filter.columnId && filter.filterString && filter.filterString.length > 0) {\n regExp = new RegExp(filter.filterString, 'i');\n }\n });\n return regExp;\n }\n\n /**\n * Retrieve the filter for the specified column (if any) as a RegExp.\n * @param columnId\n */\n private getFilterForColumn(columnId: string): RegExp | undefined {\n let regExp: RegExp | undefined;\n this.currentFilters.forEach(filter => {\n if (filter.columnId === columnId && filter.filterString && filter.filterString.length > 0) {\n regExp = new RegExp(filter.filterString, 'i');\n }\n });\n return regExp;\n }\n\n /**\n * Filter the table data provided by the global or column-specific\n * filters set in the UI.\n * @param data\n */\n private filterData(data: Array<OepaTableRow>): Array<OepaTableRow> {\n // don't attempt filtering if there are no filters set\n if (this.noFilters()) {\n return data;\n }\n let filteredData: Array<OepaTableRow> = data;\n const tempArray: Array<OepaTableRow> = [];\n filteredData.forEach((row: OepaTableRow) => {\n let flag = this.filterByColumnFilters(row);\n if (flag) {\n flag = this.filterByGlobalFilter(row);\n }\n if (flag || row.isDivider) {\n tempArray.push(row);\n }\n });\n filteredData = tempArray;\n return filteredData;\n }\n\n /**\n * Test if row matches any of the columnn filters that may be set.\n * @param row\n */\n private filterByColumnFilters(row: OepaTableRow): boolean {\n let flag = true;\n row.cells.forEach((cell: OepaTableCell) => {\n const regExp = this.getFilterForColumn(cell.id);\n const filterValue = cell.filterValue || cell.value || '';\n if (regExp && filterValue !== undefined && filterValue !== null) {\n const result = filterValue.toString().match(regExp);\n flag = flag && (result !== null);\n }\n });\n return flag;\n }\n\n /**\n * Test if row matches the global filter\n * @param row\n */\n private filterByGlobalFilter(row: OepaTableRow): boolean {\n let flag = true;\n const regExp = this.getGlobalFilter();\n if (regExp) {\n flag = false;\n row.cells.forEach((cell: OepaTableCell) => {\n const filterValue = cell.filterValue || cell.value;\n if (filterValue !== undefined && filterValue !== null) {\n const result = filterValue.toString().match(regExp);\n flag = flag || (result !== null);\n }\n });\n }\n return flag;\n }\n\n public hideColumn(column: OepaTableColumn) {\n this.hiddenColumns.push(column);\n column.hidden = true;\n this.visibleColumnCount--;\n }\n\n public unhideColumn(columnId: string) {\n const hiddenCols: Array<OepaTableColumn> = [];\n this.hiddenColumns.forEach((col) => {\n if (col.id !== columnId) {\n hiddenCols.push(col);\n } else {\n col.hidden = false;\n }\n });\n this.hiddenColumns = hiddenCols;\n this.visibleColumnCount++;\n }\n\n private sortData(data: Array<OepaTableRow>): Array<OepaTableRow> {\n let sortCriteria: any = this.tableService.getSortCriteria(this.tableId) || [];\n if (sortCriteria.length == 0) {\n return data;\n }\n\n this.resetColumnSortIndexes(sortCriteria);\n\n return data.sort((previous: OepaTableRow, current: OepaTableRow) => {\n let sortIndex = 0;\n let sortResult = 0;\n while (sortIndex < sortCriteria.length && sortResult === 0) {\n let prev = this.getRowSortValue(previous, sortCriteria[sortIndex].columnId);\n let curr = this.getRowSortValue(current, sortCriteria[sortIndex].columnId);\n if (prev > curr) {\n sortResult = (sortCriteria[sortIndex].sort === 'desc' ? -1 : 1);\n } else if (prev < curr) {\n sortResult = (sortCriteria[sortIndex].sort === 'asc' ? -1 : 1);\n } else {\n sortResult = 0;\n }\n sortIndex++;\n }\n return sortResult;\n });\n }\n\n public resetColumnSortIndexes(sortCriteria: OepaTableSortCriterion[]) {\n if (sortCriteria && sortCriteria.length > 0) {\n for (let i=0; i<sortCriteria.length; i++) {\n this.dataColumns.forEach(column => {\n if (column?.id === sortCriteria[i].columnId) {\n if (column) {\n column.sortIndex = i + 1;\n }\n }\n });\n };\n }\n }\n\n /**\n * Retrieve the display value of the specified cell.\n * @param row\n * @param columnId\n */\n public getRowValue(row: OepaTableRow, columnId: string): any {\n let value: any;\n row.cells.forEach((cell: OepaTableCell) => {\n if (cell.id === columnId) {\n value = cell.value;\n }\n });\n return value;\n }\n\n /**\n *\n * @param row Retrieve the sort value of the specified cell (will default to display value if sort\n * value is not specified).\n * @param columnId\n */\n public getRowSortValue(row: OepaTableRow, columnId: string): any {\n let value: any;\n row.cells.forEach((cell: OepaTableCell) => {\n if (cell.id === columnId) {\n if (cell.sortValue !== undefined && cell.sortValue !== null) {\n value = cell.sortValue;\n } else {\n value = cell.value;\n }\n }\n });\n if (typeof value === 'string') {\n value = value.toUpperCase();\n }\n return value;\n }\n\n public changePage(data: Array<OepaTableRow> = this.data): Array<OepaTableRow> {\n if (!this.paginationOn) {\n return data;\n }\n this.updatePage();\n const start = (this.pageInfo.page - 1) * this.pageInfo.itemsPerPage;\n const end = this.pageInfo.itemsPerPage > -1 ? (start + this.pageInfo.itemsPerPage) : data.length;\n // not sure why, but maxSize was getting lost. Reset it here to prevent weirdness.\n this.pageInfo.maxSize = 5;\n return data.slice(start, end);\n }\n\n public togglePagingation() {\n this.paginationOn = !this.paginationOn;\n this.updateTable();\n }\n\n public onFilterChanged(filter: OepaTableFilter) {\n const matchFilter = this.currentFilters.find((f) => {\n return f.columnId === filter.columnId;\n });\n if (!matchFilter) {\n this.currentFilters.push(filter);\n } else {\n matchFilter.filterString = filter.filterString;\n }\n this.updateTable();\n }\n\n public onSortChanged(column: OepaTableColumn) {\n this.tableService.setSort(this.tableId, column);\n this.updateTable();\n }\n\n public onPageChanged(pageEvent: PageChangedEvent) {\n this.pageInfo = {\n page: pageEvent.page,\n itemsPerPage: pageEvent.itemsPerPage,\n maxSize: this.pageInfo.maxSize,\n length: this.pageInfo.length,\n numPages: this.pageInfo.numPages\n }\n this.tableService.setPage(this.tableId, pageEvent.page);\n this.updateTable();\n }\n\n private updateTable() {\n const filteredData = this.filterData(this.data);\n const sortedData = this.sortData(filteredData);\n this.rows = this.changePage(sortedData);\n this.pageInfo.length = sortedData.length;\n this.dataHasDetails = this.checkForDetails(this.rows);\n }\n\n private updatePage() {\n const savedPageNumber = this.tableService.getPage(this.tableId);\n if (savedPageNumber && this.pageInfo.page !== savedPageNumber) {\n this.pageInfo.page = savedPageNumber;\n this.currentPage = this.pageInfo.page;\n }\n }\n\n private checkForDetails(data: Array<OepaTableRow>): boolean {\n let hasDetails = false;\n if (data && data.length) {\n data.forEach((row: OepaTableRow) => {\n if (row.showDetail === true || row.showDetail === false) {\n hasDetails = true;\n }\n });\n }\n return hasDetails;\n }\n\n public toggleAllDetails() {\n // console.log('toggleAllDetails...');\n this.showAllDetails = !this.showAllDetails;\n // console.log('showAllDetails = ' + this.showAllDetails);\n if (this._data && this._data.length) {\n this._data.forEach((row: OepaTableRow) => {\n if (row.showDetail !== undefined) {\n row.showDetail = this.showAllDetails;\n // console.log('setting details for row to ' + this.showAllDetails);\n }\n });\n }\n this.updateTable();\n }\n\n public toggleRowDetail(toggleRow: OepaTableRow) {\n if (toggleRow && this._data && this._data.length) {\n this._data.forEach((row: OepaTableRow) => {\n // console.log('TEST: ' + JSON.stringify(row.dataSource) + ' === ' + JSON.stringify(toggleRow.dataSource));\n if (row.dataSource === toggleRow.dataSource) {\n // console.log('!!! MATCH !!!');\n row.showDetail = !toggleRow.showDetail;\n toggleRow.showDetail = row.showDetail;\n // console.log('show detail = ' + row.showDetail + ' for row: ' + JSON.stringify(row.dataSource));\n }\n });\n // this._data = this._data.splice(0);\n }\n // console.log('toggleRowDetail...');\n // this.dumpDetailRows();\n }\n\n public isActionColumn(columnId: string): boolean {\n // console.log('isActionColumn ' + columnId);\n let actionColumn = false;\n this.headerRows.forEach((hdr: OepaTableHeader) => {\n hdr.columns.forEach((column: OepaTableColumn) => {\n if (column.id === columnId) {\n // console.log('test action column: ' + column.id + ' - ' + column.actionColumn);\n actionColumn = column.actionColumn || false;\n }\n });\n });\n return actionColumn;\n }\n\n public isColumnHidden(columnId: string): boolean {\n // console.log('isColumnHidden ' + columnId);\n let hidden = false;\n this.headerRows.forEach((hdr: OepaTableHeader) => {\n hdr.columns.forEach((column: OepaTableColumn) => {\n if (column.id === columnId) {\n // console.log('test hidden column: ' + column.id + ' - ' + column.hidden);\n hidden = column.hidden || false;\n }\n });\n });\n return hidden;\n }\n\n public getHiddenColumns(): Array<OepaTableColumn> {\n const columns: Array<OepaTableColumn> = [];\n this.headerRows.forEach((hdr: OepaTableHeader) => {\n hdr.columns.forEach((column: OepaTableColumn) => {\n if (column.hidden) {\n columns.push(column);\n }\n });\n });\n return columns;\n }\n\n public getCellClassName(row: OepaTableRow, columnId: string): string {\n let result: string | undefined = '';\n row.cells.forEach((cell: OepaTableCell) => {\n if (cell.id === columnId) {\n result = cell.className;\n }\n });\n return result;\n }\n\n public getCellColSpan(row: OepaTableRow, columnId: string): number {\n let result: number | undefined = 1;\n row.cells.forEach((cell: OepaTableCell) => {\n if (cell.id === columnId) {\n result = cell.colSpan || 0 >=0 ? cell.colSpan : 1;\n }\n });\n return result;\n }\n\n public getCellIconClassName(row: OepaTableRow, columnId: string): string {\n let result: string | undefined = '';\n row.cells.forEach((cell: OepaTableCell) => {\n if (cell.id === columnId) {\n result = cell.iconClassName;\n }\n });\n return result;\n }\n\n public getCellImgSrc(row: OepaTableRow, columnId: string): string {\n let result: string | undefined = '';\n row.cells.forEach((cell: OepaTableCell) => {\n if (cell.id === columnId) {\n result = cell.imgSrc;\n }\n });\n return result;\n }\n\n public getCellInnerHTML(row: OepaTableRow, columnId: string): string {\n let result: string | undefined = '';\n row.cells.forEach((cell: OepaTableCell) => {\n if (cell.id === columnId) {\n result = cell.innerHTML;\n }\n });\n return result;\n }\n\n public cellClick(row: OepaTableRow, columnId: string): void {\n const value = this.getRowValue(row, columnId);\n this.cellClicked.emit({ row, columnId, value });\n }\n\n public onActionClick(event: OepaActionEvent): void {\n this.actionClicked.emit(event);\n }\n\n public toggleAllRowsSelection(): void {\n const selectedRows: Array<OepaTableRow> = [];\n this.allRowsSelected = !this.allRowsSelected;\n this._data.forEach((r: OepaTableRow) => {\n if (r.selectable) {\n r.selected = this.allRowsSelected;\n }\n if (r.selected) {\n selectedRows.push(r);\n }\n });\n this.updateTable();\n this.rowSelected.emit(selectedRows);\n }\n\n public toggleRowSelection(row: OepaTableRow): void {\n const selectedRows: Array<OepaTableRow> = [];\n row.selected = !row.selected;\n this._data.forEach((dr: OepaTableRow) => {\n if (row.privateId === dr.privateId) {\n dr.selected = row.selected;\n }\n if (dr.selected) {\n selectedRows.push(dr);\n } else {\n this.allRowsSelected = false;\n }\n });\n this.updateTable();\n this.rowSelected.emit(selectedRows);\n }\n\n public singleRowSelection(row: OepaTableRow): void {\n const selectedRows: Array<OepaTableRow> = [];\n row.selected = !row.selected;\n // add row to selected rows if it is selected\n if (row.selected) {\n selectedRows.push(row);\n }\n // unselect any other row that may be selected\n this._data.forEach((dr: OepaTableRow) => {\n if (row.privateId === dr.privateId) {\n dr.selected = row.selected;\n } else {\n dr.selected = false;\n }\n });\n this.updateTable();\n this.rowSelected.emit(selectedRows);\n }\n\n private prepareRowsForExport(rows: Array<OepaTableRow>): Array<OepaTableRow> {\n const result: Array<OepaTableRow> = [];\n // console.log('prepareRowsForExport...');\n // this.dumpDetailRows();\n if (rows && rows.length) {\n rows.forEach((row: OepaTableRow) => {\n // console.log('showDetail = ' + row.showDetail + ' ' + JSON.stringify(row.cells));\n result.push({\n cells: row.cells,\n actions: row.actions,\n showDetail: row.showDetail,\n subTable: row.detail ? this.convertToTable(row.detail) : undefined,\n isDivider: row.isDivider,\n dividerClassName: row.dividerClassName\n });\n });\n }\n return result;\n }\n\n public gatherTableData(rows: OepaTableRow[]): OepaTable {\n // console.log('gatherTableData...');\n // this.dumpDetailRows();\n const oepaTable: OepaTable = {};\n oepaTable.headerRows = this.headerRows;\n oepaTable.allDataRows = this.prepareRowsForExport(rows);\n oepaTable.showAllDetails = this.showAllDetails;\n oepaTable.className = this._config.className;\n oepaTable.visibleColumnCount = this.visibleColumnCount;\n oepaTable.allColumnCount = this.allColumnCount;\n return oepaTable;\n }\n\n private dumpDetailRows() {\n console.log('dumpDetailRows - Total rows: ' + this._data.length);\n this._data.forEach((row: OepaTableRow) => {\n if (row.showDetail) {\n console.log('SHOW DETAIL: ' + JSON.stringify(row.dataSource));\n }\n });\n }\n\n public convertToTable(template: OepaTemplateInfo): OepaTable | undefined {\n let oepaTable: OepaTable | undefined = undefined;\n if (template.component === TableComponent) {\n const table: TableComponent = new TableComponent(this.sanitizer, this.tableService, this.tableExportService, this.fileUtilService);\n if (template.inputs && template.inputs.length > 0) {\n template.inputs.forEach((input) => {\n if (input.name === 'config') {\n table.config = input.value;\n } else if (input.name === 'complexHeader') {\n table.complexHeader = input.value;\n } else if (input.name === 'header') {\n table.header = input.value;\n } else if (input.name === 'data') {\n table.data = input.value;\n }\n });\n oepaTable = table.gatherTableData(table.data);\n }\n }\n return oepaTable;\n }\n\n public toggleExportVisibleOnly() {\n this.exportVisibleOnly = !this.exportVisibleOnly;\n }\n\n public exportToExcel() {\n const exportTable: OepaTable = this.gatherTableData(this.exportVisibleOnly ? this.rows : this._data);\n\n this.tableExportService.downloadExcel(exportTable, this._config).subscribe(\n data => {\n this.fileUtilService.downloadFile(data, 'application/vnd.ms-excel');\n },\n error => console.log(error)\n );\n }\n\n public exportToHTML() {\n const exportTable: OepaTable = this.gatherTableData(this.exportVisibleOnly ? this.rows : this._data);\n\n // for now, always embed sub-tables in HTML view.\n this.tableExportService.downloadHTML(exportTable, this._config).subscribe(\n data => {\n this.fileUtilService.downloadFile(data, 'text/html');\n },\n error => console.log(error)\n );\n }\n\n public onCustomBtnClick() {\n this.customBtnClicked.emit();\n }\n\n}\n","<!-- Unhide select input - only visible if one or more columns are hidden -->\n\n<form *ngIf=\"hiddenColumns.length > 0\">\n <div class=\"row mb-2\">\n <label class=\"col-sm-2 col-form-label\">Show Hidden Columns:</label>\n <div class=\"col-sm-4\">\n <select class=\"form-select\" (change)=\"unhideColumn($any($event).target.value)\" [id]=\"tableId+'_UnhideColumnSelect'\">\n <option value=\"\">Choose a column</option>\n <option *ngFor=\"let col of hiddenColumns\" [value]=\"col.id\">{{col.title}}</option>\n </select>\n </div>\n </div>\n</form>\n<!-- This is the table -->\n<div ngClass=\"{{config.divClassName || ''}}\" >\n<table *ngIf=\"!config.hideTable\" class=\"table dataTable\" ngClass=\"{{config.className || ''}}\" role=\"grid\" style=\"width: 100%;\">\n\n<!-- This is the table header -->\n<thead>\n <!-- There may be multiple header rows -->\n <tr *ngFor=\"let hdr of headerRows; let hr=index;\" role=\"row\">\n <!-- Details indicator column (if data has details) -->\n <th *ngIf=\"dataHasDetails && hr === 0\" [rowSpan]=\"headerRows.length\" class=\"detail-indicator-col\">\n <span>\n <i (click)=\"toggleAllDetails()\" [id]=\"tableId+'_ShowAllDetailsLink'\" class=\"bi\" [ngClass]=\"{'bi-chevron-down': showAllDetails, 'bi-chevron-right': !showAllDetails}\"\n [tooltip]=\"(showAllDetails ? 'Hide' : 'Show') + ' details for all rows'\" placement=\"right\">\n </i>\n </span>\n </th>\n <ng-template ngFor let-column [ngForOf]=\"hdr.columns\" let-c=\"index\">\n <!-- Header cell -->\n <th *ngIf=\"!column.hidden\" ngClass=\"{{column.className || ''}}\" [colSpan]=\"column.colspan || 1\" [rowSpan]=\"column.rowspan || 1\">\n <!-- Select all Rows Checkbox -->\n <div class=\"text-center\">\n <input *ngIf=\"column.selectColumn\" type=\"checkbox\" [checked]=\"allRowsSelected\" (change)=\"toggleAllRowsSelection()\">\n\n <!-- Header cell text with sort capability (if specified) -->\n <span [oepaTableSorting]=\"true\" [column]=\"column\" [tableId]=\"tableId\" (sortChanged)=\"onSortChanged($event)\" [id]=\"tableId+'_SortColumnLink_'+column.id\">\n <span *ngIf=\"column.sort\"><i class=\"pull-left bi\" [ngClass]=\"{'bi-chevron-down': column.sort === 'desc', 'bi-chevron-up': column.sort === 'asc'}\"></i>\n <sup *ngIf=\"column?.sortIndex || 0 > 1\">{{column.sortIndex}}</sup></span>\n {{column.title}}\n </span>\n <!-- button to allow column to be hidden (if specified) -->\n <button *ngIf=\"column.hidden === false\" type=\"button\" class=\"btn-close float-end\" aria-label=\"Hide\" (click)=\"hideColumn(column)\"\n [id]=\"tableId+'_HideColumnLink'+'_'+column.id\">\n </button>\n\n </div>\n <!-- column filter (if specified) -->\n <div *ngIf=\"((rows && rows.length > 0) || !noFilters()) && column.filterable\" >\n <input [oepaTableFiltering]=\"{ filterString: '', columnId: column.id }\" [tableId]=\"tableId\" class=\"form-control input-sm\" (tableChanged)=\"onFilterChanged($event)\"\n [id]=\"tableId+'_FilterColumn_'+column.id\" />\n </div>\n </th>\n </ng-template>\n </tr>\n</thead>\n\n<!-- This is the table body -->\n<tbody>\n <ng-template ngFor let-row [ngForOf]=\"rows\" let-r=\"index\">\n <!-- Data Row -->\n <tr>\n <td *ngIf=\"dataHasDetails\">\n <!-- Detail icon (if specified) -->\n <span *ngIf=\"row.showDetail === true || row.showDetail === false\">\n <i *ngIf=\"row.detailIconClassName\" [ngClass]=\"row.detailIconClassName\"></i>\n <i (click)=\"toggleRowDetail(row)\" [id]=\"tableId+'_ShowDetailLink_'+r\" class=\"bi\" [ngClass]=\"{'bi-chevron-down': row.showDetail, 'bi-chevron-right': !row.showDetail}\"\n [tooltip]=\"(row.showDetail ? 'Hide' : 'Show') + ' details for this row'\" placement=\"right\">\n </i>\n </span>\n </td>\n <!-- If row is a divider, it spans the whole table -->\n <!-- <td *ngIf=\"row.isDivider\" [colSpan]=\"visibleColumnCount + (dataHasDetails ? 1 : 0)\" [ngClass]=\"row.dividerClassName || 'oepa-table-gray'\">&nbsp;</td> -->\n <!-- Data Rows -->\n <ng-template *ngIf=\"!row.isDivider\" ngFor let-col [ngForOf]=\"dataColumns\" let-i=\"index\">\n <td *ngIf=\"!col.hidden && (row|cellColspan:col) > 0\" ngClass=\"{{row|cellClassname:col || ''}}\" [colSpan]=\"row|cellColspan:col\">\n <!-- Data Cell -->\n <div *ngIf=\"!col.actionColumn && !col.selectColumn && !col.singleSelectColumn\">\n <!-- Template for popover 1 -->\n <ng-template #popoverTemplate>\n <div *ngIf=\"row.popover\">\n <cml-template [templateInfo]=\"row.popover.content\"></cml-template>\n </div>\n </ng-template>\n <!-- Popover 1 icon (if specified) -->\n <span *ngIf=\"row.popover && i === (row.popoverColumnIndex || 0) && row.popover\" tabindex=\"0\" [popoverTitle]=\"row.popover.title\" [popover]=\"popoverTemplate\"\n [containerClass]=\"row.popover.containerClass\" placement=\"right\" [triggers]=\"row.popover.trigger || 'mouseenter:mouseleave'\">\n <i [ngClass]=\"row.popover.className\" [id]=\"tableId+'_PopoverLink_'+r\"></i>\n </span>\n\n <!-- Template for popover 2 -->\n <ng-template #popover2Template>\n <div *ngIf=\"row.popover2\">\n <cml-template [templateInfo]=\"row.popover2.content\"></cml-template>\n </div>\n </ng-template>\n <!-- Popover 2 icon (if specified) -->\n <span *ngIf=\"i === (row.popover2ColumnIndex || 0) && row.popover2\" tabindex=\"0\" [popoverTitle]=\"row.popover2.title\" [popover]=\"popover2Template\"\n [containerClass]=\"row.popover2.containerClass\" placement=\"right\" [triggers]=\"row.popover2.trigger || 'mouseenter:mouseleave'\">\n <i [ngClass]=\"row.popover2.className\" [id]=\"tableId+'_Popover2Link_'+r\"></i>\n </span>\n\n <!-- Template for popover 3 -->\n <ng-template #popover3Template>\n <div *ngIf=\"row.popover3\">\n <cml-template [templateInfo]=\"row.popover3.content\"></cml-template>\n </div>\n </ng-template>\n <!-- Popover 3 icon (if specified) -->\n <span *ngIf=\"i === (row.popover3ColumnIndex || 0) && row.popover3\" tabindex=\"0\" [popoverTitle]=\"row.popover3.title\" [popover]=\"popover3Template\"\n [containerClass]=\"row.popover3.containerClass\" placement=\"right\" [triggers]=\"row.popover3.trigger || 'mouseenter:mouseleave'\">\n <i [ngClass]=\"row.popover3.className\" [id]=\"tableId+'_Popover3Link_'+r\"></i>\n </span>\n\n \n <!-- <div *ngIf=\"row|cellInnerHTML:col\" [innerHTML]=\"row|cellInnerHTML:col\"></div>\n <span *ngIf=\"!(row|cellInnerHTML:col)\">{{row|cellValue:col}}</span> -->\n\n <!-- If col is hyperlink, display data as a hyperlink -->\n <button *ngIf=\"col.hyperlink\" type=\"button\" class=\"btn btn-link\" (click)=\"cellClick(row, col.id)\" [id]=\"tableId+'_CellClick_'+r+'_'+i\">\n <span *ngIf=\"!(row|cellInnerHTML:col)\">\n <i [ngClass]=\"row|cellIconClassname:col\"></i>\n <span *ngIf=\"row|cellImgSrc:col\"><img [src]=\"row|cellImgSrc:col\"/></span>\n {{row|cellValue:col}}\n </span>\n <div *ngIf=\"row|cellInnerHTML:col\" [innerHTML]=\"row|cellInnerHTML:col\"></div>\n </button>\n <!-- If col is NOT hyperlink, just display data -->\n <span *ngIf=\"!col.hyperlink\">\n <span *ngIf=\"!(row|cellInnerHTML:col)\">\n <i ngClass=\"{{row|cellIconClassname:col || ''}}\"></i>\n <span *ngIf=\"row|cellImgSrc:col\"><img [src]=\"row|cellImgSrc:col\"/></span>\n {{row|cellValue:col}}\n </span>\n <div *ngIf=\"row|cellInnerHTML:col\" [innerHTML]=\"row|cellInnerHTML:col\"></div>\n </span>\n </div>\n <!-- Select Cell -->\n <div *ngIf=\"col.selectColumn\" class=\"text-center\">\n <input [id]=\"tableId+'_'+r\" type=\"checkbox\" [disabled]=\"!row.selectable\" [checked]=\"row.selected\" (change)=\"toggleRowSelection(row)\">\n </div>\n <!-- Single Select Cell -->\n <div *ngIf=\"col.singleSelectColumn\" class=\"text-center\">\n <input [id]=\"tableId+'_singleSelect_'+r\" type=\"radio\" [disabled]=\"!row.selectable\" [checked]=\"row.selected\" (change)=\"singleRowSelection(row)\">\n </div>\n <!-- Action Button Cell -->\n <div *ngIf=\"col.actionColumn && row.actions\">\n <oepa-action-btn [actions]=\"row.actions\" [data]=\"row.dataSource\" (actionClicked)=\"onActionClick($event)\" [btnId]=\"tableId+'_'+r\"></oepa-action-btn>\n </div>\n </td>\n </ng-template>\n </tr>\n\n <!-- Detail Row -->\n <tr *ngIf=\"row.showDetail\" class=\"table-info\">\n <td [colSpan]=\"visibleColumnCount + (dataHasDetails ? 1 : 0)\">\n <cml-template [templateInfo]=\"row.detail\"></cml-template>\n </td>\n </tr>\n </ng-template>\n <tr *ngIf=\"totalRow\">\n <td *ngIf=\"dataHasDetails\">\n </td>\n <ng-template ngFor let-totalCol [ngForOf]=\"dataColumns\">\n <td *ngIf=\"!totalCol.hidden\" ngClass=\"{{totalRow|cellClassname:totalCol || ''}}\">\n <div>\n <span><i ngClass=\"{{totalRow|cellIconClassname:totalCol || ''}}\"></i>{{totalRow|cellValue:totalCol}}</span>\n </div>\n </td>\n </ng-template>\n </tr>\n</tbody>\n</table>\n</div>\n<!-- Table footer -->\n<form *ngIf=\"!config.hideFooter || (data && pageInfo.itemsPerPage < data.length)\" class=\"form-horizontal\">\n<div class=\"form-group row text-right\">\n <!-- Table-wide filter -->\n <div class=\"col-sm-4\">\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <input *ngIf=\"!config.hideGlobalFilter\" placeholder=\"Filter all columns\" [oepaTableFiltering]=\"{ filterString: '' }\" [tableId]=\"tableId\" class=\"form-control input-sm\" (tableChanged)=\"onFilterChanged($event)\"\n [id]=\"tableId+'_FilterAllColumnsInput'\" />\n </div>\n <div class=\"col-sm-6\">\n <span *ngIf=\"config.showRowCountInFooter && _data && _data.length > 0\">\n <span class=\"badge badge-secondary\" style=\"color: #999\">{{_data.length}}</span>&nbsp;total rows\n </span>\n </div>\n </div>\n </div>\n <!-- Export Buttons -->\n <div class=\"col-sm-4 d-flex justify-content-center\">\n <div class=\"row\">\n <div class=\"col-sm-12 text-center\">\n <button type=\"button\" *ngIf=\"config.exportToExcel\" class=\"btn btn-primary mr-1\" (click)=\"exportToExcel()\" [id]=\"tableId+'_ExportToExcelBtn'\">Export to Excel</button>\n <button type=\"button\" *ngIf=\"config.exportToHTML\" class=\"btn btn-primary mr-1\" (click)=\"exportToHTML()\" [id]=\"tableId+'_ExportToHTMLBtn'\">Export to HTML</button>\n <button *ngIf=\"customBtnVisible\" type=\"button\" class=\"btn btn-primary mr-1\" (click)=\"onCustomBtnClick()\" [id]=\"tableId+'_CustomBtn'\" [disabled]=\"!customBtnEnabled\">{{customBtnLabel}}</button>\n </div>\n <div *ngIf=\"config.exportToExcel || config.exportToHTML\" class=\"col-sm-12 text-center\">\n <span>Export only visible data:&nbsp;\n <input type=\"checkbox\" [checked]=\"exportVisibleOnly\" (click)=\"toggleExportVisibleOnly()\" id=\"exportVisibleOnlyCheckbox\"/>\n </span>\n </div>\n </div>\n </div>\n <!-- Pagination -->\n <div *ngIf=\"!config.disablePagination\" class=\"col-sm-4 d-flex justify-content-end\">\n <pagination *ngIf=\"paginationOn\" class=\"pagination-sm\" [totalItems]=\"pageInfo.length\" [itemsPerPage]=\"pageInfo.itemsPerPage\" [maxSize]=\"pageInfo.maxSize\"\n [(ngModel)]=\"currentPage\" name=\"currentTablePage\"\n [boundaryLinks]=\"true\" [rotate]=\"false\" (pageChanged)=\"onPageChanged($event)\" (numPages)=\"pageInfo.numPages = $event\">\n </pagination>\n &nbsp;\n <button (click)=\"togglePagingation()\" type=\"button\" class=\"btn btn-default btn-sm mr-1\">{{ paginationOn ? 'Show All Rows' : 'Restore Pagination'}}</button>\n </div>\n</div>\n</form>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\n\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { ToastrService } from 'ngx-toastr';\nimport { Observable } from 'rxjs';\nimport { OepaTableConfig } from '../table/oepa-table-config';\nimport { OepaTableHeader } from '../table/oepa-table-header';\nimport { OepaTableRow } from '../table/oepa-table-row';\nimport { OepaTableCellClickEvent } from '../table/oepa-table-cell-click-event';\n\n@Component({\n selector: 'oepa-confirmation-modal',\n templateUrl: './confirmation-modal.component.html',\n styleUrls: ['./confirmation-modal.component.css']\n})\nexport class ConfirmationModalComponent implements OnInit {\n public tableConfig: OepaTableConfig = {\n rowsPerPage: 5,\n hideGlobalFilter: true,\n disablePagination: true,\n classNames: ['table-striped', 'table-bordered', 'table-sm']\n};\n\n @Input() tableHeader: OepaTableHeader | undefined;\n \n /** To get table data in confirmation component */\n @Input() tableData: OepaTableRow[] | undefined;\n\n @Output() public onCellClick: EventEmitter<OepaTableCellClickEvent> = new EventEmitter();\n \n\n /** The modal header text */\n @Input() headerText !:string;\n /** The modal body text */\n @Input() bodyText = '';\n /** The confirm button label (defaults to 'Ok') */\n @Input() confirmBtnLabel = 'Ok';\n /** The cancel button label (defaults to 'Cancel') */\n @Input() cancelBtnLabel = 'Cancel';\n\n @Input() skipBtnLabel = '';\n /** className to apply to body text (e.g. \"alert aler-warning\") */\n @Input() bodyClassName !: string;\n\n /** Support callback function in addition to confirmClicked event */\n @Input() confirmationCallback!: () => Observable<any>;\n @Input() confirmationCallbackComponent: any;\n public confirmationInProgress = false;\n\n /** Event emitted when confirm is clicked */\n @Output() confirmClicked: EventEmitter<void> = new EventEmitter<void>();\n /** Event emitted when cancel is clicked */\n @Output() cancelClicked: EventEmitter<void> = new EventEmitter<void>();\n /** Event emitted when skip is clicked */\n @Output() skipClicked: EventEmitter<void> = new EventEmitter<void>();\n constructor(public bsModalRef: BsModalRef, private toastr: ToastrService) { }\n\n ngOnInit() {\n }\n\n skip(){\n this.skipClicked.emit();\n this.bsModalRef.hide();\n }\n\n confirm() {\n if (this.confirmationCallbackComponent && this.confirmationCallback && this.confirmationCallback instanceof Function) {\n this.invokeConfirmationCallback();\n }\n this.confirmClicked.emit();\n this.bsModalRef.hide();\n }\n\n cancel() {\n this.cancelClicked.emit();\n this.bsModalRef.hide();\n }\n\n public onCellClicked(event: OepaTableCellClickEvent) {\n this.onCellClick.emit(event);\n this.bsModalRef.hide();\n }\n\n public onCellSelect(event: any) {\n //this.selectedAccount = event[0].dataSource;\n }\n\n private invokeConfirmationCallback() {\n if (this.confirmationCallbackComponent && this.confirmationCallback && this.confirmationCallback instanceof Function) {\n this.confirmationInProgress = true;\n this.confirmationCallback.call(this.confirmationCallbackComponent).subscribe((result) => {\n this.confirmationInProgress = false;\n this.bsModalRef.hide();\n }, (err) => {\n this.confirmationInProgress = false;\n console.error('Error processing submission: ' + JSON.stringify(err));\n this.toastr.error('Operation failed: ' + err.message || err);\n });\n } else {\n this.confirmationInProgress = false;\n }\n }\n\n}\n","<div *ngIf=\"headerText\" class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">{{headerText}}</h4>\n <button type=\"button\" class=\"btn-close float-end\" aria-label=\"Close\" (click)=\"cancel()\">\n </button>\n</div>\n<div class=\"modal-body\" [ngClass]=\"bodyClassName\">\n <div *ngIf=\"tableData && tableHeader\">\n <oepa-table id = \"permitDetail\" tableId=\"permitDetail\" [config]=\"tableConfig\" [data]=\"tableData\" [header]=\"tableHeader\" (rowSelected)=\"onCellSelect($event)\" (cellClicked)=\"onCellClicked($event)\">\n </oepa-table>\n </div>\n {{bodyText}}\n</div>\n<div class=\"modal-footer\">\n <button *ngIf=\"confirmBtnLabel\" type=\"button\" class=\"btn btn-primary mr-1\" id=\"btnConfirm\" (click)=\"confirm()\">{{confirmBtnLabel}}</button>\n <button *ngIf=\"cancelBtnLabel\" type=\"button\" class=\"btn btn-primary mr-1\" id=\"btnCancel\" (click)=\"cancel()\">{{cancelBtnLabel}}</button>\n <button *ngIf=\"skipBtnLabel\" type=\"button\" class=\"btn btn-primary mr-1\" id=\"btnSkip\" (click)=\"skip()\">{{skipBtnLabel}}</button>\n</div>\n","import { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { OepaTableRow } from '../table/oepa-table-row';\nimport { OepaTableHeader } from '../table/oepa-table-header';\nimport { OepaTableConfig } from '../table/oepa-table-config';\nimport { Observable } from 'rxjs';\nimport { HttpHeaders, HttpClient } from '@angular/common/http';\nimport { Account } from '@ohioepa/oepa-ebiz-lib';\n\n@Component({\n selector: 'oepa-account-search-modal',\n templateUrl: './account-search-modal.component.html',\n styleUrls: ['./account-search-modal.component.css']\n})\nexport class AccountSearchModalComponent implements OnInit {\n public modalFormGroup!: FormGroup;\n public errorMessage!: string | undefined;\n public inProgressMsg!: string | undefined;\n public filter!: Account;\n public selectedAccount!: Account;\n public openSearchCriteria = true;\n\n public tableData: Array<OepaTableRow> = [];\n public tableHeader: OepaTableHeader | undefined = undefined;\n public tableConfig: OepaTableConfig = {\n rowsPerPage: 5,\n classNames: ['table-striped', 'table-bordered', 'table-sm']\n};\n\n@Input('searchURL') searchURL: string = '/ebiz/api/v1/accounts/revenuesSearch';\n\n@Output() onAccountSelected: EventEmitter<Account> = new EventEmitter<Account>();\n\n constructor(private fb: FormBuilder, public bsModalRef: BsModalRef, private http: HttpClient) { \n }\n\n ngOnInit() {\n this.createForm();\n }\n \n private createForm() {\n this.modalFormGroup = this.fb.group({\n userID: '',\n firstName: '',\n lastName: ''\n });\n }\n\n private getFilterFromForm(): Account {\n let filter: Account = {\n userID: this.modalFormGroup.get('userID')?.value,\n firstName: this.modalFormGroup.get('firstName')?.value,\n lastName: this.modalFormGroup.get('lastName')?.value \n };\n return filter;\n }\n\n private filterIsEmpty(filter: Account): boolean {\n let empty = true;\n if (filter.userID && filter.userID.length > 0) {\n empty = false;\n }\n if (filter.firstName && filter.firstName.length > 0) {\n empty = false;\n }\n if (filter.lastName && filter.lastName.length > 0) {\n empty = false;\n }\n return empty;\n }\n\n public submitSearch() {\n console.log(\"SEAARCH\")\n this.errorMessage = undefined;\n let filter = this.getFilterFromForm();\n if (this.filterIsEmpty(filter)) {\n this.errorMessage = 'Please specify search criteria';\n return;\n }\n this.inProgressMsg = 'Searching...';\n this.tableData = [];\n this.buildTableHeader();\n this.searchAccountsFromDB(filter).subscribe({\n next: accounts => {\n this.inProgressMsg = undefined;\n if (accounts && accounts.length > 0) {\n this.openSearchCriteria = false;\n accounts.forEach(account => {\n let row = this.convertAccountToTableRow(account);\n this.tableData.push(row);\n this.tableData = this.tableData.slice();\n });\n } else {\n this.openSearchCriteria = true;\n this.errorMessage = 'No ebiz accounts found matching search criteria.';\n }\n }, error:(error) => {\n this.inProgressMsg = undefined;\n this.errorMessage = 'Search Failed: ' + error;\n }});\n }\n\n private buildTableHeader(){\n this.tableHeader = {\n columns: [\n { title: '', id: 'select', sort: 'none', singleSelectColumn: true, className: 'select-col' },\n { title: 'User ID', id: 'userID', sort: 'none', filterable: true },\n { title: 'First Name', id: 'firstName', sort: 'none', filterable: true },\n { title: 'Last Name', id: 'lastName', sort: 'none', filterable: true },\n { title: 'Company', id: 'company', sort: 'none', filterable: true } \n ]\n };\n }\n\n private convertAccountToTableRow(account: Account): OepaTableRow {\n let cells:Array<any>= [\n { id: 'userID', value: account.userID },\n { id: 'firstName', value: account.firstName },\n { id: 'lastName', value: account.lastName },\n { id: 'company', value: account.company }\n ];\n\n return {\n cells: cells,\n dataSource: account,\n selectable: true\n }\n }\n\n public resetSearch() {\n this.openSearchCriteria = true;\n this.modalFormGroup.reset();\n this.tableData = [];\n }\n\n public onRowSelect(event: any) {\n this.selectedAccount = event[0].dataSource;\n }\n\n public save() {\n this.onAccountSelected.emit(this.selectedAccount);\n this.bsModalRef.hide();\n }\n\n public searchAccountsFromDB(filter: Account): Observable<Account[]> {\n const headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n const url = this.searchURL;\n console.log('URL: ' + url);\n return this.http.post<Account[]>(url, filter, { headers: headers, responseType: 'json' });\n }\n}\n","<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">Advanced Ebiz Account Search</h4>\n <button type=\"button\" class=\"btn-close float-end\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n </button>\n</div>\n<div class=\"modal-body\">\n <accordion>\n <accordion-group panelClass=\"panel-info\" #searchGroup [isOpen]=\"openSearchCriteria\">\n <div accordion-heading>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <i class=\"float-xs-right bi\" id=\"accountSearchCriteria\" name=\"accountSearchCriteria\" \n [ngClass]=\"{'bi-chevron-down': searchGroup?.isOpen, 'bi-chevron-right': !searchGroup?.isOpen}\"></i>\n <b>Ebiz Account Search Criteria</b>\n </div>\n </div>\n </div>\n <form [formGroup]=\"modalFormGroup\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label>Ebiz User ID</label>\n <input type=\"search\" class=\"form-control\" id=\"userUIDInput\" formControlName=\"userID\">\n </div>\n </div>\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label>First Name</label>\n <input type=\"search\" class=\"form-control\" id=\"firstNameInput\" formControlName=\"firstName\">\n </div>\n </div>\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label>Last Name</label>\n <input type=\"search\" class=\"form-control\" id=\"lastNameInput\" formControlName=\"lastName\">\n </div>\n </div>\n </div>\n \n <div class=\"row\">\n <div class=\"col-sm-12 text-center\">\n <span *ngIf=\"inProgressMsg\" class=\"spinner-border text-primary\" role=\"status\"></span>\n <button *ngIf=\"!inProgressMsg\" type=\"submit\" class=\"btn btn-primary mr-2\" id=\"submitSearchBtn\" (click)=\"submitSearch()\">Search</button>\n <button id=\"resetSearchBtn\" type=\"button\" class=\"btn btn-primary\" (click)=\"resetSearch()\">Reset</button>\n </div>\n </div>\n </form>\n </accordion-group>\n </accordion>\n <div *ngIf=\"tableData && tableData.length > 0\" class=\"card\">\n <div class=\"card-header\">\n <b>Ebiz Account List&nbsp;</b><span class=\"badge bg-secondary\">{{tableData.length}}</span>\n </div>\n <div class=\"card-body\" *ngIf=\"tableHeader\">\n <oepa-table tableId=\"accountSearchTable\" [config]=\"tableConfig\" [data]=\"tableData\" [header]=\"tableHeader\" (rowSelected)=\"onRowSelect($event)\">\n </oepa-table>\n </div>\n </div>\n</div>\n<div class=\"modal-footer d-block\">\n <div *ngIf=\"errorMessage\">\n <div class=\"alert alert-danger\">\n {{errorMessage}}\n </div>\n </div>\n <div *ngIf=\"inProgressMsg\">\n <div class=\"alert alert-info\">\n {{inProgressMsg}}\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-12 text-center\">\n <button type=\"button\" class=\"btn btn-primary mr-2\"\n id=\"SaveAccountBtn\"\n [disabled]=\"!selectedAccount || inProgressMsg\"\n (click)=\"save()\">Save</button>\n <button id=\"CancelPaymentBtn\" type=\"button\" class=\"btn btn-primary\"\n (click)=\"bsModalRef.hide()\">Cancel</button>\n </div>\n </div>\n</div>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\nimport { TypeaheadMatch } from 'ngx-bootstrap/typeahead';\nimport { FormGroup } from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { mergeMap, map } from 'rxjs/operators';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { OepaComponentIdService } from '@ohioepa/oepa-common-lib';\nimport { Account } from '@ohioepa/oepa-ebiz-lib';\nimport { AccountSearchModalComponent } from '../account-search-modal/account-search-modal.component';\n\n@Component({\n selector: 'oepa-account-search-input',\n templateUrl: './account-search-input.component.html',\n styleUrls: ['./account-search-input.component.css']\n})\nexport class AccountSearchInputComponent implements OnInit {\n nameSearch = '';\n nameSource: Observable<Account[]>;\n componentId!: string;\n errorMessage!: string | undefined;\n searching!: boolean;\n\n @Input('group') group!: FormGroup;\n @Input('userID') userID!: string;\n @Input('field') field!: string;\n @Input('title') title: string = 'Account';\n @Input('searchURL') searchURL: string = '/ebiz/api/v1/accounts/revenuesSearch';\n @Input('errorMessageAddendum') errorMessageAddendum = '';\n @Input('rowLayout') rowLayout = false;\n\n @Output('accountSelected') accountSelected: EventEmitter<Account> = new EventEmitter<Account>();\n\n constructor(private idService: OepaComponentIdService,\n private modalService: BsModalService,\n private http: HttpClient) {\n this.nameSource = new Observable((observer) => {\n observer.next(this.group.get(this.field)?.value);\n }).pipe(mergeMap((token: any) => this.searchAccounts(token)));\n }\n\n ngOnInit() {\n this.componentId = this.idService.getComponentId(this.group);\n if (this.userID) {\n const filter: Account = {\n userID: this.userID\n }\n this.searching = true;\n \n this.searchAccountsFromDB(filter).subscribe({\n next: accountList => {\n if (accountList && accountList.length == 1) {\n this.loadAccountInForm(accountList[0]);\n } else if (accountList.length > 1) {\n accountList.forEach(account => {\n if (account.userID === this.userID) {\n this.loadAccountInForm(account);\n }\n });\n } else {\n this.errorMessage = 'An initialization error occurred: No accounts wih id: ' + this.userID;\n }\n this.searching = false;\n }, error: err => {\n this.searching = false;\n this.errorMessage = 'An initialization error occurred: ' + err;\n }});\n }\n this.group.get(this.field)?.valueChanges.subscribe(value => {\n if (!value || value === '') {\n this.accountSelected.emit(undefined);\n }\n });\n }\n\n public onAccountSelect(e: TypeaheadMatch) {\n if (e.item) {\n this.loadAccountInForm(e.item);\n this.accountSelected.emit(e.item);\n }\n }\n\n private loadAccountInForm(account: Account) {\n let data:any = {};\n data[this.field] = account ? (account.userID + ' - ' + account.firstName + ' ' + account.lastName || ''\n + (account.company ? ' (' + account.company + ')' : '')) : '';\n if (account) {\n this.group.patchValue(data);\n }\n }\n\n private searchAccounts(token: any): Observable<Account[]> {\n this.errorMessage = undefined;\n this.searching = true;\n const filter: Account = {\n userID: token\n }\n return this.searchAccountsFromDB(filter).pipe(\n map((accounts) => {\n this.searching = false;\n return accounts;\n })\n );\n }\n\n public searchAccountsFromDB(filter: Account): Observable<Account[]> {\n const headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n const url = this.searchURL;\n console.log('URL: ' + url);\n return this.http.post<Account[]>(url, filter, { headers: headers, responseType: 'json' });\n }\n\n public advancedSearch() {\n console.log('URL: ' + this.searchURL);\n const initialState = {\n searchURL: this.searchURL\n };\n let modal = this.modalService.show(AccountSearchModalComponent, {initialState, class: 'modal-lg',ignoreBackdropClick: true});\n (<AccountSearchModalComponent>modal.content).onAccountSelected.subscribe(account => {\n this.loadAccountInForm(account);\n this.accountSelected.emit(account);\n });\n }\n\n}\n","<div [formGroup]=\"group\" class=\"form-group\" [ngClass]=\"{'row text-right': rowLayout}\">\n <ng-template #accountTemplate let-model=\"item\" let-index=\"index\">\n <h5>{{ (model.userID || '') +\n (' - ' + model.firstName + ' ' + model.lastName + (model.company ? ' (' + model.company + ')' : '')) }}</h5>\n </ng-template>\n <label [ngClass]=\"{'col-sm-4 col-form-label': rowLayout}\">\n {{title}}\n <span *ngIf=\"searching\" class=\"spinner-border text-primary\" role=\"status\"></span>\n <a id=\"AdvancedSearch\" href=\"javascript:void(0)\" (click)=\"advancedSearch()\">Advanced Search</a>\n </label>\n <div [ngClass]=\"{'col-sm-8': rowLayout}\">\n <input class=\"form-control\" type=\"search\"\n [ngClass]=\"{'is-invalid':group.controls[field].status === 'INVALID', 'col-sm-8': rowLayout}\"\n [formControlName]=\"field\" [typeahead]=\"nameSource\" [typeaheadScrollable]=\"true\"\n (typeaheadOnSelect)=\"onAccountSelect($event)\" [id]=\"componentId + '_AccountSearch'\"\n [typeaheadItemTemplate]=\"accountTemplate\" [typeaheadMinLength]=\"3\" placeholder=\"Search Account\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls[field]?.hasError('required')\">{{title}} is required\n {{errorMessageAddendum}}</small>\n </div>\n</div>\n<div *ngIf=\"errorMessage\" class=\"alert alert-danger\">\n {{errorMessage}}\n</div>","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { OepaTableRow } from \"./oepa-table-row\";\nimport { OepaTableCell } from \"./oepa-table-cell\";\nimport { OepaTableColumn } from \"./oepa-table-column\";\n\n@Pipe({\n name: 'cellNotSelectable'\n})\nexport class OepaTableCellNotSelectablePipe implements PipeTransform {\n transform(row: OepaTableRow, column: OepaTableColumn): boolean {\n let result = false;\n row.cells.forEach((cell: OepaTableCell) => {\n if (cell.id === column.id) {\n result = cell.notSelectable || false;\n }\n });\n return result;\n }\n}","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { OepaTableRow } from \"./oepa-table-row\";\nimport { OepaTableCell } from \"./oepa-table-cell\";\nimport { OepaTableColumn } from \"./oepa-table-column\";\n\n@Pipe({\n name: 'cellInputComponent'\n})\nexport class OepaTableCellInputComponentPipe implements PipeTransform {\n transform(row: OepaTableRow, column: OepaTableColumn): any {\n let result = undefined;\n row.cells.forEach((cell: OepaTableCell) => {\n if (cell.id === column.id) {\n result = cell.inputComponent;\n }\n });\n return result;\n }\n}","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TableDataCellClickEvent } from './table-data-cell-click-event';\nimport { OepaTableColumn } from '../oepa-table-column';\nimport { OepaTableRow } from '../oepa-table-row';\nimport { OepaActionEvent } from '../../action-btn/oepa-action-event';\n\n@Component({\n selector: 'oepa-table-data-cell',\n templateUrl: './table-data-cell.component.html',\n styleUrl: './table-data-cell.component.css'\n})\nexport class TableDataCellComponent {\n @Input() col!: OepaTableColumn;\n @Input() row!: OepaTableRow;\n @Input() i: number = 0;\n @Input() r: number = 0;\n @Input() tableId: string = '';\n\n @Output() onCellClick: EventEmitter<TableDataCellClickEvent> = new EventEmitter<TableDataCellClickEvent>();\n @Output() onToggleRowSelection: EventEmitter<OepaTableRow> = new EventEmitter<OepaTableRow>();\n @Output() onSingleRowSelection: EventEmitter<OepaTableRow> = new EventEmitter<OepaTableRow>();\n @Output() onActionClick: EventEmitter<OepaActionEvent> = new EventEmitter<OepaActionEvent>();\n\n public cellClick(row: OepaTableRow, columnID: string) {\n this.onCellClick.emit({row: row, columnID: columnID});\n }\n\n public toggleRowSelection(row: OepaTableRow) {\n this.onToggleRowSelection.emit(row);\n }\n\n public singleRowSelection(row: OepaTableRow) {\n this.onSingleRowSelection.emit(row);\n }\n\n public actionClick(event: OepaActionEvent) {\n this.onActionClick.emit(event);\n }\n}\n"," <!-- Data Cell -->\n <div *ngIf=\"!col.actionColumn && !col.selectColumn && !col.singleSelectColumn && !col.inputColumn\">\n <!-- Template for popover 1 -->\n <ng-template #popoverTemplate>\n <div *ngIf=\"row.popover\">\n <cml-template [templateInfo]=\"row.popover.content\"></cml-template>\n </div>\n </ng-template>\n <!-- Popover 1 icon (if specified) -->\n <span *ngIf=\"row.popover && i === (row.popoverColumnIndex || 0) && row.popover\" tabindex=\"0\"\n [popoverTitle]=\"row.popover.title\" [popover]=\"popoverTemplate\"\n [containerClass]=\"row.popover.containerClass\" placement=\"right\"\n [triggers]=\"row.popover.trigger || 'mouseenter:mouseleave'\">\n <i [ngClass]=\"row.popover.className\" [id]=\"tableId+'_PopoverLink_'+r\"></i>\n </span>\n \n <!-- Template for popover 2 -->\n <ng-template #popover2Template>\n <div *ngIf=\"row.popover2\">\n <cml-template [templateInfo]=\"row.popover2.content\"></cml-template>\n </div>\n </ng-template>\n <!-- Popover 2 icon (if specified) -->\n <span *ngIf=\"i === (row.popover2ColumnIndex || 0) && row.popover2\" tabindex=\"0\"\n [popoverTitle]=\"row.popover2.title\" [popover]=\"popover2Template\"\n [containerClass]=\"row.popover2.containerClass\" placement=\"right\"\n [triggers]=\"row.popover2.trigger || 'mouseenter:mouseleave'\">\n <i [ngClass]=\"row.popover2.className\" [id]=\"tableId+'_Popover2Link_'+r\"></i>\n </span>\n \n <!-- Template for popover 3 -->\n <ng-template #popover3Template>\n <div *ngIf=\"row.popover3\">\n <cml-template [templateInfo]=\"row.popover3.content\"></cml-template>\n </div>\n </ng-template>\n <!-- Popover 3 icon (if specified) -->\n <span *ngIf=\"i === (row.popover3ColumnIndex || 0) && row.popover3\" tabindex=\"0\"\n [popoverTitle]=\"row.popover3.title\" [popover]=\"popover3Template\"\n [containerClass]=\"row.popover3.containerClass\" placement=\"right\"\n [triggers]=\"row.popover3.trigger || 'mouseenter:mouseleave'\">\n <i [ngClass]=\"row.popover3.className\" [id]=\"tableId+'_Popover3Link_'+r\"></i>\n </span>\n \n \n <!-- <div *ngIf=\"row|cellInnerHTML:col\" [innerHTML]=\"row|cellInnerHTML:col\"></div>\n <span *ngIf=\"!(row|cellInnerHTML:col)\">{{row|cellValue:col}}</span> -->\n \n <!-- If col is hyperlink, display data as a hyperlink -->\n <button *ngIf=\"col.hyperlink && !(row|cellNotSelectable:col)\" type=\"button\" class=\"btn btn-link\"\n (click)=\"cellClick(row, col.id)\" [id]=\"tableId+'_CellClick_'+r+'_'+i\">\n <span *ngIf=\"!(row|cellInnerHTML:col)\">\n <i [ngClass]=\"row|cellIconClassname:col\"></i>\n <span *ngIf=\"row|cellImgSrc:col\"><img [src]=\"row|cellImgSrc:col\" /></span>\n {{row|cellValue:col}}\n </span>\n <div *ngIf=\"row|cellInnerHTML:col\" [innerHTML]=\"row|cellInnerHTML:col\"></div>\n </button>\n <!-- If col is NOT hyperlink, just display data -->\n <span *ngIf=\"!col.hyperlink || (row|cellNotSelectable:col)\">\n <span *ngIf=\"!(row|cellInnerHTML:col)\">\n <i ngClass=\"{{row|cellIconClassname:col || ''}}\"></i>\n <span *ngIf=\"row|cellImgSrc:col\"><img [src]=\"row|cellImgSrc:col\" /></span>\n {{row|cellValue:col}}\n </span>\n <div *ngIf=\"row|cellInnerHTML:col\" [innerHTML]=\"row|cellInnerHTML:col\"></div>\n </span>\n </div>\n <!-- Input Cell -->\n <div *ngIf=\"col.inputColumn\">\n <cml-template [templateInfo]=\"row|cellInputComponent:col\"></cml-template>\n </div>\n <!-- Select Cell -->\n <div *ngIf=\"col.selectColumn\" class=\"text-center\">\n <input [id]=\"tableId+'_'+r\" type=\"checkbox\" [disabled]=\"!row.selectable\" [checked]=\"row.selected\"\n (change)=\"toggleRowSelection(row)\">\n </div>\n <!-- Single Select Cell -->\n <div *ngIf=\"col.singleSelectColumn\" class=\"text-center\">\n <input [id]=\"tableId+'_singleSelect_'+r\" type=\"radio\" [disabled]=\"!row.selectable\"\n [checked]=\"row.selected\" (change)=\"singleRowSelection(row)\">\n </div>\n <!-- Action Button Cell -->\n <div *ngIf=\"col.actionColumn && row.actions\">\n <oepa-action-btn [actions]=\"row.actions\" [data]=\"row.dataSource\" (actionClicked)=\"actionClick($event)\"\n [btnId]=\"tableId+'_'+r\"></oepa-action-btn>\n </div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { OepaTableColumn } from '../oepa-table-column';\nimport { OepaTableFilter } from '../oepa-table-filter';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'oepa-table-header-cell',\n templateUrl: './table-header-cell.component.html',\n styleUrl: './table-header-cell.component.css'\n})\nexport class TableHeaderCellComponent implements OnInit {\n @Input() column!: OepaTableColumn;\n @Input() tableId: string = '';\n @Input() allRowsSelected: boolean = false;\n @Input() rowCount: number = 0;\n @Input() noFiltersSubject!: Subject<boolean>;\n public noFilters: boolean = true;\n\n @Output() onToggleAllRowsSelection: EventEmitter<void> = new EventEmitter<void>();\n @Output() onSortChanged: EventEmitter<OepaTableColumn> = new EventEmitter<OepaTableColumn>();\n @Output() onHideColumn: EventEmitter<OepaTableColumn> = new EventEmitter<OepaTableColumn>();\n @Output() onFilterChanged: EventEmitter<OepaTableFilter> = new EventEmitter<OepaTableFilter>();\n\n ngOnInit(): void {\n if (this.noFiltersSubject) {\n this.noFiltersSubject.subscribe(noFilters => {\n this.noFilters = noFilters;\n });\n }\n }\n public toggleAllRowsSelection() {\n this.onToggleAllRowsSelection.emit();\n }\n\n public sortChanged(column: OepaTableColumn) {\n this.onSortChanged.emit(column);\n }\n\n public hideColumn(column: OepaTableColumn) {\n this.onHideColumn.emit(column);\n }\n\n public filterChanged(filter: OepaTableFilter) {\n this.onFilterChanged.emit(filter);\n }\n}\n","<!-- Select all Rows Checkbox -->\n<div class=\"text-center\">\n <input *ngIf=\"column.selectColumn\" type=\"checkbox\" [checked]=\"allRowsSelected\" (change)=\"toggleAllRowsSelection()\">\n\n <!-- Header cell text with sort capability (if specified) -->\n <span [oepaTableSorting]=\"true\" [column]=\"column\" [tableId]=\"tableId\" (sortChanged)=\"sortChanged($event)\"\n [id]=\"tableId+'_SortColumnLink_'+column.id\">\n <span *ngIf=\"column.sort\"><i class=\"pull-left bi\"\n [ngClass]=\"{'bi-chevron-down': column.sort === 'desc', 'bi-chevron-up': column.sort === 'asc'}\"></i>\n <sup *ngIf=\"column?.sortIndex || 0 > 1\">{{column.sortIndex}}</sup></span>\n {{column.title}}\n </span>\n <!-- button to allow column to be hidden (if specified) -->\n <button *ngIf=\"column.hidden === false\" type=\"button\" class=\"btn-close float-end\" aria-label=\"Hide\"\n (click)=\"hideColumn(column)\" [id]=\"tableId+'_HideColumnLink'+'_'+column.id\">\n </button>\n\n</div>\n<!-- column filter (if specified) -->\n<div *ngIf=\"column.filterable\">\n <input [oepaTableFiltering]=\"{ filterString: '', columnId: column.id }\" [tableId]=\"tableId\"\n class=\"form-control input-sm\" (tableChanged)=\"filterChanged($event)\" [id]=\"tableId+'_FilterColumn_'+column.id\" />\n</div>","import { Component, EventEmitter, Input, Output, OnInit, ElementRef, AfterViewChecked } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\nimport { OepaTable } from '../oepa-table';\nimport { OepaTableConfig } from '../oepa-table-config';\nimport { OepaTableHeader } from '../oepa-table-header';\nimport { OepaTableColumn } from '../oepa-table-column';\nimport { OepaTableRow } from '../oepa-table-row';\nimport { OepaTableCell } from '../oepa-table-cell';\nimport { OepaTablePageInfo } from '../oepa-table-page-info';\nimport { OepaTableCellClickEvent } from '../oepa-table-cell-click-event';\n\nimport { OepaActionEvent } from '../../action-btn/oepa-action-event';\n\nimport { TableExportService } from '../table-export.service';\nimport { OepaFileUtilService, OepaTemplateInfo } from '@ohioepa/oepa-common-lib';\nimport { TableService } from '../table.service';\nimport { OepaTableSortCriterion } from '../oepa-table-sort-criterion';\nimport { PageChangedEvent } from 'ngx-bootstrap/pagination';\nimport { OepaPColumn } from '../oepa-p-column';\nimport { TableDataCellClickEvent } from '../table-data-cell/table-data-cell-click-event';\nimport { Subject } from 'rxjs';\nimport { OepaTableFilter } from '../oepa-table-filter';\n\n@Component({\n selector: 'oepa-p-table',\n templateUrl: './p-table.component.html',\n styleUrls: ['./p-table.component.css']\n})\nexport class PTableComponent implements OnInit, AfterViewChecked {\n public showFilterRow: Boolean = false;\n public headerRows: Array<OepaTableHeader> = [];\n public rows: Array<OepaTableRow> = [];\n public visibleColumnCount = 0;\n public allColumnCount = 0;\n public exportVisibleOnly: boolean | undefined = false;\n public noFiltersSubject: Subject<boolean> = new Subject<boolean>();\n\n public dataColumns: Array<OepaTableColumn> = [];\n public visibleColumns: Array<OepaTableColumn> = [];\n public hiddenColumns: Array<OepaTableColumn> = [];\n public columnHeaders: Array<string> = [];\n public _data: Array<OepaTableRow> = [];\n private _config: OepaTableConfig = {};\n private currentFilters: Array<OepaTableFilter> = [{\n filterString: '',\n columnId: undefined\n }];\n\n public dataHasDetails = false;\n public showAllDetails = false;\n\n public allRowsSelected = false;\n\n public pageInfo: OepaTablePageInfo = {\n page: 1,\n itemsPerPage: 10,\n maxSize: 5,\n numPages: 1,\n length: 0\n };\n public currentPage = 1;\n public paginationOn = true;\n\n @Input() tableId = '';\n @Input() allowEdit = true;\n @Input()\n public set config(conf: OepaTableConfig) {\n if (!conf.className) {\n conf.className = 'table-striped table-bordered';\n }\n if (conf.classNames) {\n conf.className = conf.classNames.join(' ');\n }\n if (conf.rowsPerPage) {\n this.pageInfo.itemsPerPage = conf.rowsPerPage;\n }\n this.exportVisibleOnly = conf.exportVisibleOnly;\n this._config = conf;\n }\n\n public get config(): OepaTableConfig {\n return this._config;\n }\n\n @Input()\n public set complexHeader(hdrs: Array<OepaTableHeader>) {\n this.resetHeaders();\n if (hdrs && hdrs.length) {\n hdrs.forEach((hdr: OepaTableHeader) => {\n this.headerRows.push(this.extractInnerColumns(hdr.columns));\n });\n this.columnHeaders = this.extractColumnHeaders(this.headerRows);\n this.dataColumns = this.extractDataColumns(this.headerRows);\n this.initializeHiddenColumns(true);\n }\n }\n\n @Input()\n public set header(hdr: OepaTableHeader) {\n this.resetHeaders();\n if (hdr.columns && hdr.columns.length > 0) {\n this.headerRows.push(this.extractInnerColumns(hdr.columns));\n }\n this.columnHeaders = this.extractColumnHeaders(this.headerRows);\n this.dataColumns = this.extractDataColumns(this.headerRows);\n this.initializeHiddenColumns(false);\n }\n\n @Input() customBtnLabel: string | undefined = undefined;\n @Input() customBtnVisible = false;\n @Input() customBtnEnabled = false;\n\n @Input() customBtnLabel2: string | undefined = undefined;\n @Input() customBtnVisible2 = false;\n @Input() customBtnEnabled2 = false;\n\n @Input() small = false;\n\n // Outputs (Events)\n @Output() public cellClicked: EventEmitter<OepaTableCellClickEvent> = new EventEmitter();\n @Output() public actionClicked: EventEmitter<OepaActionEvent> = new EventEmitter();\n @Output() public rowSelected: EventEmitter<Array<OepaTableRow>> = new EventEmitter();\n @Output() public customBtnClicked: EventEmitter<void> = new EventEmitter();\n @Output() public customBtn2Clicked: EventEmitter<void> = new EventEmitter();\n\n public pColumns: OepaPColumn[] = [];\n\n private resetHeaders() {\n this.headerRows = [];\n this.columnHeaders = [];\n this.dataColumns = [];\n this.hiddenColumns = [];\n this.visibleColumns = [];\n this.pColumns = [];\n }\n\n private initializeHiddenColumns(complexHeader: boolean) {\n this.visibleColumnCount = 0;\n this.allColumnCount = 0;\n this.dataColumns.forEach((column) => {\n column.field = column.id;\n column.header = column.title;\n if (complexHeader && (column?.hidden === true || column?.hidden === false)) {\n console.error('disabling hidden attribute for column: ' + column.id +\n '. Hidden columns are not supported for complex headers (yet).');\n column.hidden = undefined;\n this.visibleColumnCount++;\n this.visibleColumns.push(column);\n } else if (column?.hidden === true) {\n this.hiddenColumns.push(column);\n } else {\n this.visibleColumns.push(column);\n this.visibleColumnCount++;\n }\n this.allColumnCount++;\n });\n }\n\n @Input()\n public set data(values: Array<OepaTableRow>) {\n if (!this._data || this._data.length === 0) {\n this._data = this.tableService.getData(this.tableId) || [];\n }\n if (values) {\n for (let i = 0; i < values.length; i++) {\n values[i].privateId = i;\n }\n if (this._data && this._data.length !== values.length) {\n this.tableService.clearPageInfo(this.tableId);\n }\n }\n\n this._data = values;\n this.tableService.setData(this.tableId, this._data);\n this.updateTable();\n }\n\n public get data(): Array<OepaTableRow> {\n return this._data.map(x => Object.assign({}, x));\n }\n\n @Input() totalRow: OepaTableRow | undefined;\n\n public constructor(private sanitizer: DomSanitizer,\n private tableService: TableService,\n private tableExportService: TableExportService,\n private fileUtilService: OepaFileUtilService,\n private elRef: ElementRef) {\n }\n\n ngOnInit() {\n this.paginationOn = !this._config.disablePagination;\n }\n\n ngAfterViewChecked(): void {\n if (this.config.className !== '') {\n $('table').addClass('table ' + this.config.className);\n }\n }\n\n private extractInnerColumns(inner: Array<OepaTableColumn>): OepaTableHeader {\n const header: OepaTableHeader = { columns: [] };\n inner.forEach((value: OepaTableColumn) => {\n const column = header.columns.find((col: OepaTableColumn) => col.id === value.id);\n if (column) {\n // overwrite repeated column\n Object.assign(column, value);\n }\n if (!column) {\n header.columns.push(value);\n }\n });\n return header;\n }\n\n private extractColumnHeaders(headerRows: Array<OepaTableHeader>): Array<string> {\n const headers: Array<string> = [];\n let rowIndex = 0;\n const childColumns: any = {};\n headerRows.forEach((hdr: OepaTableHeader) => {\n let colIndex = 0;\n hdr.columns.forEach((column: OepaTableColumn) => {\n if (rowIndex === 0) {\n headers.push(column.title);\n if (column.colspan) {\n for (let count = 1; count < column.colspan; count++) {\n headers.push('');\n }\n }\n if (column.rowspan) {\n childColumns[colIndex] = column.rowspan - 1;\n }\n } else {\n while (childColumns[colIndex] && childColumns[colIndex] > 0) {\n childColumns[colIndex]--;\n colIndex++;\n }\n headers[colIndex] += ' ' + column.title;\n if (column.colspan) {\n for (let count = 1; count < column.colspan; count++) {\n colIndex++;\n }\n }\n }\n colIndex++;\n });\n rowIndex++;\n });\n return headers;\n }\n\n\n private extractDataColumns(headerRows: Array<OepaTableHeader>): Array<OepaTableColumn> {\n const dataColumns: Array<OepaTableColumn> = [];\n let rowIndex = 0;\n const childColumns:any = {};\n headerRows.forEach((hdr: OepaTableHeader) => {\n let colIndex = 0;\n hdr.columns.forEach((column: OepaTableColumn) => {\n if (rowIndex === 0) {\n if (column.colspan && column.colspan > 1) {\n for (let count = 0; count < column.colspan; count++) {\n dataColumns.push({id: '',title: ''});\n }\n colIndex += (column.colspan - 1);\n } else {\n dataColumns.push(column);\n if (column.rowspan) {\n childColumns[colIndex] = column.rowspan - 1;\n }\n }\n } else {\n while (childColumns[colIndex] && childColumns[colIndex] > 0) {\n childColumns[colIndex]--;\n colIndex++;\n }\n if (column.colspan && column.colspan > 1) {\n colIndex += (column.colspan - 1);\n } else {\n dataColumns[colIndex] = column;\n }\n }\n colIndex++;\n });\n rowIndex++;\n });\n return dataColumns;\n }\n\n public sanitize(html: string): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n\n /**\n * Check to see if any filters are set\n */\n public noFilters(): boolean {\n let noFilters = true;\n this.currentFilters.forEach(filter => {\n if (filter.filterString && filter.filterString.length > 0) {\n noFilters = false;\n }\n });\n this.noFiltersSubject.next(noFilters);\n return noFilters;\n }\n\n /**\n * Retrieve the global filter string (if any) as a RegExp\n */\n private getGlobalFilter(): RegExp | undefined {\n let regExp: RegExp | undefined;\n this.currentFilters.forEach(filter => {\n if (!filter.columnId && filter.filterString && filter.filterString.length > 0) {\n regExp = new RegExp(filter.filterString, 'i');\n }\n });\n return regExp;\n }\n\n /**\n * Retrieve the filter for the specified column (if any) as a RegExp.\n * @param columnId\n */\n private getFilterForColumn(columnId: string): RegExp | undefined {\n let regExp: RegExp | undefined;\n this.currentFilters.forEach(filter => {\n if (filter.columnId === columnId && filter.filterString && filter.filterString.length > 0) {\n regExp = new RegExp(filter.filterString, 'i');\n }\n });\n return regExp;\n }\n\n /**\n * Filter the table data provided by the global or column-specific\n * filters set in the UI.\n * @param data\n */\n private filterData(data: Array<OepaTableRow>): Array<OepaTableRow> {\n // don't attempt filtering if there are no filters set\n if (this.noFilters()) {\n return data;\n }\n let filteredData: Array<OepaTableRow> = data;\n const tempArray: Array<OepaTableRow> = [];\n filteredData.forEach((row: OepaTableRow) => {\n let flag = this.filterByColumnFilters(row);\n if (flag) {\n flag = this.filterByGlobalFilter(row);\n }\n if (flag || row.isDivider) {\n tempArray.push(row);\n }\n });\n filteredData = tempArray;\n return filteredData;\n }\n\n /**\n * Test if row matches any of the columnn filters that may be set.\n * @param row\n */\n private filterByColumnFilters(row: OepaTableRow): boolean {\n let flag = true;\n row.cells.forEach((cell: OepaTableCell) => {\n const regExp = this.getFilterForColumn(cell.id);\n const filterValue = cell.filterValue || cell.value || '';\n if (regExp && filterValue !== undefined && filterValue !== null) {\n const result = filterValue.toString().match(regExp);\n flag = flag && (result !== null);\n }\n });\n return flag;\n }\n\n /**\n * Test if row matches the global filter\n * @param row\n */\n private filterByGlobalFilter(row: OepaTableRow): boolean {\n let flag = true;\n const regExp = this.getGlobalFilter();\n if (regExp) {\n flag = false;\n row.cells.forEach((cell: OepaTableCell) => {\n const filterValue = cell.filterValue || cell.value;\n if (filterValue !== undefined && filterValue !== null) {\n const result = filterValue.toString().match(regExp);\n flag = flag || (result !== null);\n }\n });\n }\n return flag;\n }\n\n public hideColumn(column: OepaTableColumn) {\n this.hiddenColumns.push(column);\n this.visibleColumns = this.visibleColumns.filter(match => {\n return match.id !== column.id;\n });\n column.hidden = true;\n this.visibleColumnCount--;\n }\n\n public unhideColumn(columnId: string) {\n const hiddenCols: Array<OepaTableColumn> = [];\n this.hiddenColumns.forEach((col) => {\n if (col.id !== columnId) {\n hiddenCols.push(col);\n } else {\n col.hidden = false;\n }\n });\n let visibleCols: Array<OepaTableColumn> = [];\n this.dataColumns.forEach(dataColumn => {\n let keep = true;\n hiddenCols.forEach(hiddenColumn => {\n if (dataColumn.id === hiddenColumn.id) {\n keep = false;\n }\n });\n if (keep) {\n visibleCols.push(dataColumn);\n }\n });\n this.hiddenColumns = hiddenCols;\n this.visibleColumns = visibleCols;\n this.visibleColumnCount++;\n }\n\n private sortData(data: Array<OepaTableRow>): Array<OepaTableRow> {\n let sortCriteria: any = this.tableService.getSortCriteria(this.tableId) || [];\n if (sortCriteria.length == 0) {\n return data;\n }\n\n this.resetColumnSortIndexes(sortCriteria);\n\n return data.sort((previous: OepaTableRow, current: OepaTableRow) => {\n let sortIndex = 0;\n let sortResult = 0;\n while (sortIndex < sortCriteria.length && sortResult === 0) {\n let prev = this.getRowSortValue(previous, sortCriteria[sortIndex].columnId);\n let curr = this.getRowSortValue(current, sortCriteria[sortIndex].columnId);\n if (prev > curr) {\n sortResult = (sortCriteria[sortIndex].sort === 'desc' ? -1 : 1);\n } else if (prev < curr) {\n sortResult = (sortCriteria[sortIndex].sort === 'asc' ? -1 : 1);\n } else {\n sortResult = 0;\n }\n sortIndex++;\n }\n return sortResult;\n });\n }\n\n public resetColumnSortIndexes(sortCriteria: OepaTableSortCriterion[]) {\n if (sortCriteria && sortCriteria.length > 0) {\n for (let i=0; i<sortCriteria.length; i++) {\n this.dataColumns.forEach(column => {\n if (column?.id === sortCriteria[i].columnId) {\n column.sortIndex = i + 1;\n }\n });\n };\n }\n }\n\n /**\n * Retrieve the display value of the specified cell.\n * @param row\n * @param columnId\n */\n public getRowValue(row: OepaTableRow, columnId: string): any {\n let value: any;\n row.cells.forEach((cell: OepaTableCell) => {\n if (cell.id === columnId) {\n value = cell.value;\n }\n });\n return value;\n }\n\n public isCellValueHidden(row: OepaTableRow, columnId: string): boolean {\n let hidden: boolean = false;\n row.cells.forEach((cell: OepaTableCell) => {\n if (cell.id === columnId) {\n hidden = cell.hideValue || false;\n }\n });\n return hidden;\n }\n\n /**\n *\n * @param row Retrieve the sort value of the specified cell (will default to display value if sort\n * value is not specified).\n * @param columnId\n */\n public getRowSortValue(row: OepaTableRow, columnId: string): any {\n let value: any;\n row.cells.forEach((cell: OepaTableCell) => {\n if (cell.id === columnId) {\n if (cell.sortValue !== undefined && cell.sortValue !== null) {\n value = cell.sortValue;\n } else {\n value = cell.value;\n }\n }\n });\n if (typeof value === 'string') {\n value = value.toUpperCase();\n }\n return value;\n }\n\n public changePage(data: Array<OepaTableRow> = this.data): Array<OepaTableRow> {\n if (!this.paginationOn) {\n return data;\n }\n this.updatePage();\n const start = (this.pageInfo.page - 1) * this.pageInfo.itemsPerPage;\n const end = this.pageInfo.itemsPerPage > -1 ? (start + this.pageInfo.itemsPerPage) : data.length;\n // not sure why, but maxSize was getting lost. Reset it here to prevent weirdness.\n this.pageInfo.maxSize = 5;\n return data.slice(start, end);\n }\n\n public togglePagingation() {\n this.paginationOn = !this.paginationOn;\n this.updateTable();\n }\n\n public onFilterChanged(filter: OepaTableFilter) {\n const matchFilter = this.currentFilters.find((f) => {\n return f.columnId === filter.columnId;\n });\n if (!matchFilter) {\n this.currentFilters.push(filter);\n } else {\n matchFilter.filterString = filter.filterString;\n }\n // need to check for noFilters to send subject\n this.noFilters();\n this.updateTable();\n }\n\n public onSortChanged(column: OepaTableColumn) {\n this.tableService.setSort(this.tableId, column);\n this.updateTable();\n }\n\n public onPageChanged(pageEvent: PageChangedEvent) {\n this.pageInfo = {\n page: pageEvent.page,\n itemsPerPage: pageEvent.itemsPerPage,\n maxSize: this.pageInfo.maxSize,\n length: this.pageInfo.length,\n numPages: this.pageInfo.numPages\n }\n this.tableService.setPage(this.tableId, pageEvent.page);\n this.updateTable();\n }\n\n private updateTable() {\n const filteredData = this.filterData(this.data);\n const sortedData = this.sortData(filteredData);\n this.rows = this.changePage(sortedData);\n this.pageInfo.length = sortedData.length;\n this.dataHasDetails = this.checkForDetails(this.rows);\n }\n\n private updatePage() {\n const savedPageNumber = this.tableService.getPage(this.tableId);\n if (savedPageNumber && this.pageInfo.page !== savedPageNumber) {\n this.pageInfo.page = savedPageNumber;\n this.currentPage = this.pageInfo.page;\n }\n }\n\n private checkForDetails(data: Array<OepaTableRow>): boolean {\n let hasDetails = false;\n if (data && data.length) {\n data.forEach((row: OepaTableRow) => {\n if (row.showDetail === true || row.showDetail === false) {\n hasDetails = true;\n }\n });\n }\n return hasDetails;\n }\n\n public toggleAllDetails() {\n this.showAllDetails = !this.showAllDetails;\n if (this._data && this._data.length) {\n this._data.forEach((row: OepaTableRow) => {\n if (row.showDetail !== undefined) {\n row.showDetail = this.showAllDetails;\n }\n });\n }\n this.updateTable();\n }\n\n public toggleRowDetail(toggleRow: OepaTableRow) {\n if (toggleRow && this._data && this._data.length) {\n this._data.forEach((row: OepaTableRow) => {\n if (row.dataSource === toggleRow.dataSource) {\n row.showDetail = !toggleRow.showDetail;\n toggleRow.showDetail = row.showDetail;\n }\n });\n }\n }\n\n public isActionColumn(columnId: string): boolean {\n let actionColumn = false;\n this.headerRows.forEach((hdr: OepaTableHeader) => {\n hdr.columns.forEach((column: OepaTableColumn) => {\n if (column.id === columnId) {\n actionColumn = column.actionColumn || false;\n }\n });\n });\n return actionColumn;\n }\n\n public isColumnHidden(columnId: string): boolean {\n let hidden = false;\n this.headerRows.forEach((hdr: OepaTableHeader) => {\n hdr.columns.forEach((column: OepaTableColumn) => {\n if (column.id === columnId) {\n hidden = column.hidden || false;\n }\n });\n });\n return hidden;\n }\n\n public getHiddenColumns(): Array<OepaTableColumn> {\n const columns: Array<OepaTableColumn> = [];\n this.headerRows.forEach((hdr: OepaTableHeader) => {\n hdr.columns.forEach((column: OepaTableColumn) => {\n if (column.hidden) {\n columns.push(column);\n }\n });\n });\n return columns;\n }\n\n public cellClick(event: TableDataCellClickEvent): void {\n const row = event.row;\n const columnId = event.columnID;\n const value = this.getRowValue(row, columnId);\n this.cellClicked.emit({ row, columnId, value });\n }\n\n public onActionClick(event: OepaActionEvent): void {\n this.actionClicked.emit(event);\n }\n\n public toggleAllRowsSelection(): void {\n const selectedRows: Array<OepaTableRow> = [];\n this.allRowsSelected = !this.allRowsSelected;\n this._data.forEach((r: OepaTableRow) => {\n if (r.selectable) {\n r.selected = this.allRowsSelected;\n }\n if (r.selected) {\n selectedRows.push(r);\n }\n });\n this.updateTable();\n this.rowSelected.emit(selectedRows);\n }\n\n public toggleRowSelection(row: OepaTableRow): void {\n const selectedRows: Array<OepaTableRow> = [];\n row.selected = !row.selected;\n this._data.forEach((dr: OepaTableRow) => {\n if (row.privateId === dr.privateId) {\n dr.selected = row.selected;\n }\n if (dr.selected) {\n selectedRows.push(dr);\n } else {\n this.allRowsSelected = false;\n }\n });\n this.updateTable();\n this.rowSelected.emit(selectedRows);\n }\n\n public singleRowSelection(row: OepaTableRow): void {\n const selectedRows: Array<OepaTableRow> = [];\n row.selected = !row.selected;\n // add row to selected rows if it is selected\n if (row.selected) {\n selectedRows.push(row);\n }\n // unselect any other row that may be selected\n this._data.forEach((dr: OepaTableRow) => {\n if (row.privateId === dr.privateId) {\n dr.selected = row.selected;\n } else {\n dr.selected = false;\n }\n });\n this.updateTable();\n this.rowSelected.emit(selectedRows);\n }\n\n private prepareRowsForExport(rows: Array<OepaTableRow>): Array<OepaTableRow> {\n const result: Array<OepaTableRow> = [];\n // this.dumpDetailRows();\n if (rows && rows.length) {\n rows.forEach((row: OepaTableRow) => {\n result.push({\n cells: this.simplifyCells(row.cells),\n actions: row.actions,\n showDetail: row.showDetail,\n subTable: row.detail ? this.convertToTable(row.detail) : undefined,\n isDivider: row.isDivider,\n dividerClassName: row.dividerClassName\n });\n });\n }\n return result;\n }\n\n private simplifyCells(cells: OepaTableCell[]) {\n let simpleCells: OepaTableCell[] = [];\n if (cells && cells.length > 0) {\n cells.forEach(cell => {\n simpleCells.push({\n id: cell.id,\n value: cell.value,\n hideValue: cell.hideValue,\n iconClassName: cell.iconClassName,\n className: cell.className,\n imgSrc: cell.imgSrc,\n innerHTML: cell.innerHTML,\n colSpan: cell.colSpan,\n excelDataFormat: cell.excelDataFormat\n });\n });\n }\n return simpleCells;\n }\n\n public gatherTableData(rows: OepaTableRow[]): OepaTable {\n // this.dumpDetailRows();\n const oepaTable: OepaTable = {};\n oepaTable.headerRows = this.headerRows;\n oepaTable.allDataRows = this.prepareRowsForExport(rows);\n oepaTable.showAllDetails = this.showAllDetails;\n oepaTable.className = this._config.className;\n oepaTable.visibleColumnCount = this.visibleColumnCount;\n oepaTable.allColumnCount = this.allColumnCount;\n return oepaTable;\n }\n\n private dumpDetailRows() {\n console.log('dumpDetailRows - Total rows: ' + this._data.length);\n this._data.forEach((row: OepaTableRow) => {\n if (row.showDetail) {\n console.log('SHOW DETAIL: ' + JSON.stringify(row.dataSource));\n }\n });\n }\n\n public convertToTable(template: OepaTemplateInfo): OepaTable | undefined {\n let oepaTable: OepaTable | undefined = undefined;\n if (template.component === PTableComponent) {\n const table: PTableComponent = new PTableComponent(this.sanitizer, this.tableService, this.tableExportService, this.fileUtilService, this.elRef);\n if (template.inputs && template.inputs.length > 0) {\n template.inputs.forEach((input: any) => {\n if (input.name === 'config') {\n table.config = input.value;\n } else if (input.name === 'complexHeader') {\n table.complexHeader = input.value;\n } else if (input.name === 'header') {\n table.header = input.value;\n } else if (input.name === 'data') {\n table.data = input.value;\n }\n });\n oepaTable = table.gatherTableData(table.data);\n }\n }\n return oepaTable;\n }\n\n public toggleExportVisibleOnly() {\n this.exportVisibleOnly = !this.exportVisibleOnly;\n }\n\n public exportToExcel() {\n const sortedData = this.sortData(this._data);\n const exportTable: OepaTable = this.gatherTableData(this.exportVisibleOnly ? this.rows : sortedData);\n\n if ((exportTable.allDataRows?.length || 0) > 0) {\n this.tableExportService.downloadExcel(exportTable, this._config).subscribe({\n next: data => {\n this.fileUtilService.downloadFile(data, 'application/vnd.ms-excel');\n },\n error: error => console.log(error)\n });\n } else {\n alert('No data in table available for export');\n }\n }\n\n public exportToHTML() {\n const sortedData = this.sortData(this._data);\n const exportTable: OepaTable = this.gatherTableData(this.exportVisibleOnly ? this.rows : sortedData);\n\n if ((exportTable.allDataRows?.length || 0) > 0) {\n // for now, always embed sub-tables in HTML view.\n this.tableExportService.downloadHTML(exportTable, this._config).subscribe({\n next: data => {\n this.fileUtilService.downloadFile(data, 'text/html');\n },\n error: error => console.log(error)\n });\n } else {\n alert('No data in table available for export');\n }\n }\n\n public onCustomBtnClick() {\n this.customBtnClicked.emit();\n }\n\n public onCustomBtn2Click() {\n this.customBtn2Clicked.emit();\n }\n\n}\n","<div *ngIf=\"!config.hideTable\">\n <form *ngIf=\"hiddenColumns.length > 0\">\n <div class=\"row mb-2\">\n <label class=\"col-sm-2 col-form-label\">Show Hidden Columns:</label>\n <div class=\"col-sm-4\">\n <select class=\"form-select\" (change)=\"unhideColumn($any($event).target.value)\"\n [id]=\"tableId+'_UnhideColumnSelect'\">\n <option value=\"\">Choose a column</option>\n <option *ngFor=\"let col of hiddenColumns\" [value]=\"col.id\">{{col.title}}</option>\n </select>\n </div>\n </div>\n </form>\n\n <div ngClass=\"{{config.divClassName || ''}}\">\n <p-table [columns]=\"visibleColumns\" [value]=\"rows\" \n [scrollable]=\"config.verticalScroll\" [scrollHeight]=\"config.scrollHeight\"\n [tableStyle]=\"{'min-width': '50rem'}\">\n <ng-template pTemplate=\"header\" let-columns>\n <tr *ngFor=\"let hdr of headerRows; let hr=index;\" role=\"row\">\n <th *ngIf=\"dataHasDetails && hr === 0\" [rowSpan]=\"headerRows.length\" class=\"detail-indicator-col\">\n <span>\n <i (click)=\"toggleAllDetails()\" [id]=\"tableId+'_ShowAllDetailsLink'\" class=\"bi\"\n [ngClass]=\"{'bi-chevron-down': showAllDetails, 'bi-chevron-right': !showAllDetails}\"\n [tooltip]=\"(showAllDetails ? 'Hide' : 'Show') + ' details for all rows'\" placement=\"right\">\n </i>\n </span>\n </th>\n <ng-template ngFor let-col [ngForOf]=\"hdr.columns\" let-i=\"index\">\n <th *ngIf=\"!col.hidden && col.frozenColumn\" pFrozenColumn ngClass=\"{{col.className || ''}}\"\n [colSpan]=\"col.colspan || 1\" [rowSpan]=\"col.rowspan || 1\">\n <oepa-table-header-cell [column]=\"col\" [tableId]=\"tableId\" [allRowsSelected]=\"allRowsSelected\"\n [rowCount]=\"rows.length\" [noFiltersSubject]=\"noFiltersSubject\"\n (onToggleAllRowsSelection)=\"toggleAllRowsSelection()\" (onSortChanged)=\"onSortChanged($event)\"\n (onHideColumn)=\"hideColumn($event)\" (onFilterChanged)=\"onFilterChanged($event)\">\n </oepa-table-header-cell>\n </th>\n <th *ngIf=\"!col.hidden && !col.frozenColumn\" ngClass=\"{{col.className || ''}}\"\n [colSpan]=\"col.colspan || 1\" [rowSpan]=\"col.rowspan || 1\">\n <oepa-table-header-cell [column]=\"col\" [tableId]=\"tableId\" [allRowsSelected]=\"allRowsSelected\"\n [rowCount]=\"rows.length\" [noFiltersSubject]=\"noFiltersSubject\"\n (onToggleAllRowsSelection)=\"toggleAllRowsSelection()\" (onSortChanged)=\"onSortChanged($event)\"\n (onHideColumn)=\"hideColumn($event)\" (onFilterChanged)=\"onFilterChanged($event)\">\n </oepa-table-header-cell>\n </th>\n </ng-template>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-row let-r=\"rowIndex\" let-columns=\"columns\">\n <!-- Data Row -->\n <tr>\n <td *ngIf=\"dataHasDetails\">\n <!-- Detail icon (if specified) -->\n <span *ngIf=\"row.showDetail === true || row.showDetail === false\">\n <i *ngIf=\"row.detailIconClassName\" [ngClass]=\"row.detailIconClassName\"></i>\n <i (click)=\"toggleRowDetail(row)\" [id]=\"tableId+'_ShowDetailLink_'+r\" class=\"bi\"\n [ngClass]=\"{'bi-chevron-down': row.showDetail, 'bi-chevron-right': !row.showDetail}\"\n [tooltip]=\"(row.showDetail ? 'Hide' : 'Show') + ' details for this row'\" placement=\"right\">\n </i>\n </span>\n </td>\n <!-- If row is a divider, it spans the whole table -->\n <td *ngIf=\"row.isDivider\" [colSpan]=\"visibleColumnCount + (dataHasDetails ? 1 : 0)\"\n [ngClass]=\"row.dividerClassName || 'oepa-table-gray'\">&nbsp;</td>\n <!-- Data Rows -->\n <ng-template *ngIf=\"!row.isDivider\" ngFor let-col [ngForOf]=\"dataColumns\" let-i=\"index\">\n <td *ngIf=\"!col.hidden && (row|cellColspan:col) > 0 &&!col.frozenColumn\"\n ngClass=\"{{row|cellClassname:col || ''}}\" [colSpan]=\"row|cellColspan:col\">\n <oepa-table-data-cell [col]=\"col\" [i]=\"i\" [row]=\"row\" [r]=\"r\" [tableId]=\"tableId\"\n (onActionClick)=\"onActionClick($event)\" (onCellClick)=\"cellClick($event)\"\n (onToggleRowSelection)=\"toggleRowSelection($event)\"\n (onSingleRowSelection)=\"singleRowSelection($event)\"></oepa-table-data-cell>\n </td>\n <td *ngIf=\"!col.hidden && (row|cellColspan:col) > 0 &&col.frozenColumn\" pFrozenColumn\n ngClass=\"{{row|cellClassname:col || ''}}\" [colSpan]=\"row|cellColspan:col\">\n <oepa-table-data-cell [col]=\"col\" [i]=\"i\" [row]=\"row\" [r]=\"r\" [tableId]=\"tableId\"\n (onActionClick)=\"onActionClick($event)\" (onCellClick)=\"cellClick($event)\"\n (onToggleRowSelection)=\"toggleRowSelection($event)\"\n (onSingleRowSelection)=\"singleRowSelection($event)\"></oepa-table-data-cell>\n </td>\n </ng-template>\n </tr>\n\n <!-- Detail Row -->\n <tr *ngIf=\"row.showDetail\" class=\"table-info\">\n <td [colSpan]=\"visibleColumnCount + (dataHasDetails ? 1 : 0)\">\n <cml-template [templateInfo]=\"row.detail\"></cml-template>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n <!-- Table footer -->\n <form *ngIf=\"!config.hideFooter || (data && pageInfo.itemsPerPage < data.length)\" class=\"form-horizontal\">\n <div class=\"form-group row\">\n <!-- Table-wide filter -->\n <div class=\"col-sm-5\">\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <input *ngIf=\"!config.hideGlobalFilter\" placeholder=\"Filter all columns\"\n [oepaTableFiltering]=\"{ filterString: '' }\" [tableId]=\"tableId\" class=\"form-control input-sm\"\n (tableChanged)=\"onFilterChanged($event)\" [id]=\"tableId+'_FilterAllColumnsInput'\" />\n </div>\n <div class=\"col-sm-6\">\n <span *ngIf=\"config.showRowCountInFooter && _data && _data.length > 0\">\n <span class=\"badge bg-secondary\">{{_data.length}}</span>&nbsp;total rows\n </span>\n </div>\n </div>\n </div>\n <!-- Export Buttons -->\n <div class=\"col-sm-2 d-flex justify-content-center\">\n <div class=\"row\">\n <div class=\"col-sm-12 text-center\" *ngIf=\"allowEdit\">\n <div *ngIf=\"config.exportToExcel || config.exportToHTML\" class=\"btn-group\" dropdown>\n <button id=\"exportBtn\" dropdownToggle type=\"button\" class=\"btn btn-primary dropdown-toggle\"\n aria-controls=\"dropdown-basic\">\n Export <span class=\"caret\"></span>\n <ul id=\"export-dropdown\" *dropdownMenu class=\"dropdown-menu\">\n <li *ngIf=\"config.exportToExcel\" role=\"menuitem\"><a class=\"dropdown-item\"\n (click)=\"exportToExcel()\">Export to Excel</a></li>\n <li *ngIf=\"config.exportToHTML\" role=\"menuitem\"><a class=\"dropdown-item\"\n (click)=\"exportToHTML()\">Export\n to HTML</a></li>\n </ul>\n </button>\n </div>\n <button *ngIf=\"customBtnVisible\" type=\"button\"\n ngClass=\"{{'btn btn-primary me-1' + (small ? ' btn-sm' : '')}}\" (click)=\"onCustomBtnClick()\"\n [id]=\"tableId+'_CustomBtn'\" [disabled]=\"!customBtnEnabled\">{{customBtnLabel}}</button>\n <button *ngIf=\"customBtnVisible2\" type=\"button\"\n ngClass=\"{{'btn btn-primary me-1' + (small ? ' btn-sm' : '')}}\" (click)=\"onCustomBtn2Click()\"\n [id]=\"tableId+'_CustomBtn'\" [disabled]=\"!customBtnEnabled2\">{{customBtnLabel2}}</button>\n </div>\n </div>\n </div>\n <!-- Pagination -->\n <div *ngIf=\"!config.disablePagination\" class=\"col-sm-5\">\n <div class=\"row\">\n <div class=\"col-sm-9\">\n <pagination *ngIf=\"paginationOn\" class=\"pagination-sm\" [totalItems]=\"pageInfo.length\"\n [itemsPerPage]=\"pageInfo.itemsPerPage\" [maxSize]=\"pageInfo.maxSize\" [(ngModel)]=\"currentPage\"\n name=\"currentTablePage\" [boundaryLinks]=\"true\" [rotate]=\"false\" (pageChanged)=\"onPageChanged($event)\"\n (numPages)=\"pageInfo.numPages = $event\">\n </pagination>\n </div>\n <div class=\"col-sm-3\">\n <button (click)=\"togglePagingation()\" type=\"button\" class=\"btn btn-default btn-sm me-1\">{{ paginationOn ?\n 'Show All Rows' : 'Restore Pagination'}}</button>\n </div>\n </div>\n </div>\n <div *ngIf=\"config.exportToExcel || config.exportToHTML\" class=\"col-sm-12 text-center\">\n <span>Export only visible data:&nbsp;\n <input type=\"checkbox\" [checked]=\"exportVisibleOnly\" (click)=\"toggleExportVisibleOnly()\"\n id=\"exportVisibleOnlyCheckbox\" />\n </span>\n </div>\n </div>\n </form>\n</div>","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { BsDatepickerConfig } from 'ngx-bootstrap/datepicker';\n\nimport { OepaComponentIdService } from '@ohioepa/oepa-common-lib';\n\n@Component({\n selector: 'oepa-daterangepicker',\n templateUrl: './daterangepicker.component.html',\n styleUrls: ['./daterangepicker.component.css']\n})\nexport class DaterangepickerComponent implements OnInit {\n public componentId = 'OepaDaterangepickerComponent';\n public minDate: Date | undefined;\n public maxDate: Date | undefined;\n public isDisabled = false;\n\n @Input() group!: FormGroup;\n @Input() field!: string;\n @Input() bsConfig!: Partial<BsDatepickerConfig>;\n @Input() showValidation = false;\n\n constructor(private idService: OepaComponentIdService) { }\n\n checkValidity() {\n for (const key in this.group.controls) {\n if (this.group.controls.hasOwnProperty(key) && key === this.field) {\n return this.group.controls[key].status === 'VALID';\n }\n }\n return null;\n }\n\n clearRange() {\n for (const key in this.group.controls) {\n if (this.group.controls.hasOwnProperty(key) && key === this.field) {\n this.group.controls[key].setValue(null);\n }\n }\n }\n\n ngOnInit() {\n if (this.bsConfig && this.bsConfig.minDate) {\n this.minDate = this.bsConfig.minDate;\n } else {\n this.minDate = undefined;\n }\n if (this.bsConfig && this.bsConfig.maxDate) {\n this.maxDate = this.bsConfig.maxDate;\n } else {\n this.maxDate = undefined;\n }\n if (this.bsConfig && this.bsConfig.isDisabled) {\n this.isDisabled = this.bsConfig.isDisabled; // defaults to false\n }\n if (this.group) {\n this.componentId = this.idService.getComponentId(this.group);\n }\n }\n\n}\n","<div [formGroup]=\"group\">\n <div>\n <div class=\"input-group\">\n <input [id]=\"componentId+'_Input'\"\n class=\"form-control\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n #drp=\"bsDaterangepicker\"\n bsDaterangepicker\n [formControlName]=\"field\"\n [bsConfig]=\"bsConfig\"\n [isDisabled]=\"isDisabled\"\n [ngClass]=\"{'is-invalid':showValidation && !checkValidity()}\"\n >\n <div *ngIf=\"!isDisabled\" class=\"input-group-btn\">\n <button class=\"btn btn-primary\" (click)=\"drp.toggle()\" [id]=\"componentId+'_ToggleBtn'\">\n <i class=\"bi bi-calendar3\"></i>\n </button>\n <button class=\"btn btn-primary\" (click)=\"clearRange()\" [id]=\"componentId+'_ClearBtn'\">\n <i class=\"bi bi-x-lg\"></i>\n </button>\n </div>\n </div>\n <small class=\"invalid-feedback d-block\" *ngIf=\"showValidation && !checkValidity()\">Date is required</small>\n </div>\n</div>","import { Component, OnInit, Input } from '@angular/core';\n\n@Component({\n selector: 'oepa-wait-message',\n template: `\n <div class=\"row\">\n <div class=\"col-sm-12 text-center\">\n <span class=\"spinner-border text-primary\" role=\"status\"></span>&nbsp;<em>{{message}}</em>\n </div>\n </div>\n `,\n styleUrls: ['./oepa-wait-message.component.css']\n})\nexport class OEPAWaitMessageComponent implements OnInit {\n\n @Input()\n message!: string;\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { Component, OnInit, Input } from '@angular/core';\n\n@Component({\n selector: 'oepa-error-message',\n template: `\n <div class=\"card error-message\">\n <div class=\"card-header\">\n <div><i class=\"fa fa-exclamation-circle \"></i>&nbsp; <strong>ERROR</strong></div>\n </div>\n <div class=\"card-body\">\n <div class=\"card-text\">\n {{ errorMessage }}\n </div>\n </div>\n </div>\n `,\n styleUrls: ['./oepa-error-message.component.css']\n})\nexport class OEPAErrorMessageComponent implements OnInit {\n\n @Input()\n errorMessage!: string;\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}","export enum OepaMessageType {\n INFO,\n WARNING,\n ERROR\n}\n","import { OepaMessageType } from './oepa-message-type';\nexport class OepaMessage {\n public message: string = '';\n public messageClass: string = '';\n public messageDate: Date;\n constructor(msg: string, msgType: OepaMessageType | undefined, logMsg?: string) {\n this.messageDate = new Date();\n if (msgType === OepaMessageType.INFO) {\n this.message = msg;\n this.messageClass = 'alert alert-info';\n if (logMsg) { console.log(logMsg); }\n } else if (msgType === OepaMessageType.WARNING) {\n this.message = msg;\n this.messageClass = 'alert alert-warning';\n if (logMsg) { console.warn(logMsg); }\n } else if (msgType === OepaMessageType.ERROR) {\n this.message = msg;\n this.messageClass = 'alert alert-danger';\n if (logMsg) { console.error(logMsg); }\n }\n }\n}\n","import { Component, OnInit, Input } from '@angular/core';\nimport { OepaMessage } from './oepa-message';\n\n@Component({\n selector: 'oepa-message',\n templateUrl: './message.component.html',\n styleUrls: ['./message.component.css']\n})\nexport class MessageComponent implements OnInit {\n @Input() message: OepaMessage = new OepaMessage('', undefined);\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","<div *ngIf=\"message.message\" class=\"row\" [ngClass]=\"message.messageClass\">\n <div class=\"col-sm-12\">\n <button type=\"button\" class=\"btn-close float-end\" aria-label=\"Close\" (click)=\"message.message=''\">\n </button>\n {{message.messageDate|date: 'shortTime'}}: {{message.message}}\n </div>\n</div>","import { Component, OnInit, Input } from '@angular/core';\n\n@Component({\n selector: 'oepa-message-list',\n templateUrl: './message-list.component.html',\n styleUrls: ['./message-list.component.css']\n})\nexport class MessageListComponent implements OnInit {\n @Input() messageList: Array<string> = [];\n @Input() messageClass: string = '';\n @Input() messageLabel: string = '';\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","<div *ngIf=\"messageList && messageList.length > 0\" class=\"row\" [ngClass]=\"messageClass\">\n <div class=\"col-sm-12\">\n <button type=\"button\" class=\"btn-close float-end\" aria-label=\"Close\" (click)=\"messageList=[]\">\n </button>\n <label *ngIf=\"messageLabel\">{{messageLabel}}</label>\n <ul>\n <li *ngFor=\"let message of messageList\">{{message}}</li>\n </ul>\n </div>\n</div>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\n\nimport { OepaAttachment, OepaParserReport, OepaFileUtilService, OepaComponentIdService } from '@ohioepa/oepa-common-lib';\nimport { ConfirmationModalComponent } from '../confirmation-modal/confirmation-modal.component';\n\n\n@Component({\n selector: 'oepa-file-upload',\n templateUrl: './file-upload.component.html',\n styleUrls: ['./file-upload.component.css']\n})\nexport class FileUploadComponent implements OnInit {\n public componentId = 'OepaFileUploadComponent';\n public uploadError: string = '';\n\n @Input() group!: FormGroup;\n @Input() field: string = '';\n @Input() label: string = '';\n @Input() errorLabel: string = '';\n @Input() blankForm: OepaAttachment | undefined;\n @Input() blankFormUrl: string = '';\n @Input() showValidation = false;\n @Input() domain = 'application';\n @Input() attachment: OepaAttachment| undefined;\n @Input() accept: string = '';\n @Input() removeAllowed = true;\n @Input() parserName: string = '';\n @Input() parserReport!: OepaParserReport;\n\n @Output() fileUploaded: EventEmitter<OepaAttachment> = new EventEmitter();\n @Output() fileRemoved: EventEmitter<OepaAttachment> = new EventEmitter();\n @Output() download: EventEmitter<OepaAttachment> = new EventEmitter();\n\n constructor(private idService: OepaComponentIdService, private fileUtilService: OepaFileUtilService,\n private modalService: BsModalService) { }\n\n ngOnInit() {\n if (this.group) {\n this.componentId = this.idService.getComponentId(this.group);\n this.componentId += (this.componentId.length > 0 ? '_' : '') + this.field;\n }\n }\n\n public fileChange(event: any) {\n this.uploadError = '';\n const fileList: FileList = event.target.files;\n if (fileList.length > 0) {\n const file: File = fileList[0];\n\n if (this.fileTypeCanBeAccepted(file)) {\n this.fileUtilService.uploadFile(file).subscribe({\n next: (attachment: OepaAttachment) => {\n this.group.controls[this.field].setValue(attachment.userFilename);\n attachment.fileParser = this.parserName || '';\n this.fileUploaded.emit(attachment);\n }, error: err => {\n this.uploadError = 'Error uploading file ' + err || '';\n }\n });\n } else {\n this.uploadError = 'Cannot accept this type of file. Please upload a file of type: ' + this.accept;\n }\n }\n }\n\n\n \n private fileTypeCanBeAccepted(file:any): boolean {\n let ok = true;\n if (this.accept) {\n const mimeType = this.fileUtilService.mimeTypeForFile(file.name);\n if (this.accept.indexOf(mimeType) < 0) {\n ok = false;\n }\n }\n return ok;\n }\n\n public removeFile() {\n const modal: BsModalRef = this.modalService.show(ConfirmationModalComponent, { ignoreBackdropClick: true });\n (<ConfirmationModalComponent>modal.content).headerText = 'Remove Attachment';\n (<ConfirmationModalComponent>modal.content).bodyText = 'Do you want to remove the attachment: ' + this.attachment?.userFilename || '<unknown>' + '?';\n (<ConfirmationModalComponent>modal.content).confirmBtnLabel = 'Yes';\n (<ConfirmationModalComponent>modal.content).cancelBtnLabel = 'No';\n (<ConfirmationModalComponent>modal.content).confirmClicked.subscribe(() => {\n this.group.controls[this.field].setValue(undefined);\n this.fileRemoved.emit(this.attachment);\n });\n }\n\n public downloadFile(attachment: OepaAttachment) {\n // let parent component handle download if system file name is not present or empty\n if (!attachment.systemFilename || attachment.systemFilename.length === 0) {\n console.log('downloadFile - no file name, deferring to parent');\n this.download.emit(attachment);\n } else {\n console.log('downloading file: ' + attachment.systemFilename);\n this.fileUtilService.downloadAttachment(attachment).subscribe(\n data => {\n const mimeType = this.fileUtilService.mimeTypeForFile(attachment.systemFilename || '');\n if (mimeType) {\n this.fileUtilService.downloadFile(data, mimeType);\n } else {\n this.uploadError = 'Unable to download file: ' + attachment.userFilename + '. Cannot determine mime type';\n }\n }, err => {\n this.uploadError = 'Error downloading file: ' + attachment.userFilename + ': ' + err;\n }\n );\n }\n }\n\n public downloadBlankForm() {\n if (this.blankForm) {\n this.downloadFile(this.blankForm);\n }\n }\n\n}\n","<form [formGroup]=\"group\">\n <div *ngIf=\"!attachment || !attachment.userFilename\" class=\"form-group\">\n <div>\n <label *ngIf=\"label\">{{label}}</label>\n <span *ngIf=\"blankFormUrl\">&nbsp;<a href=\"{{blankFormUrl}}\" target=\"_blank\">Blank Form</a></span>\n <span *ngIf=\"blankForm\">&nbsp;<a href=\"javascript:void(0)\" (click)=\"downloadBlankForm()\">Blank Form</a></span>\n <div class=\"form-group\">\n <div class=\"input-group\">\n <span class=\"input-group-btn\">\n <label class=\"btn btn-primary btn-file\">\n Browse&hellip; \n <input type=\"file\" style=\"display: none;\" (change)=\"fileChange($event)\" \n [id]=\"componentId+'_BrowseBtn'\" [name]=\"componentId+'_BrowseBtn'\" class=\"form-control\"\n [attr.accept]=\"accept ? accept : null\"\n [disabled]=\"group.controls[field].status === 'DISABLED'\">\n </label>\n </span>\n <input [ngClass]=\"{'is-invalid':showValidation && group.controls[field].status === 'INVALID'}\" \n type=\"text\" class=\"form-control\" placeholder=\"No file chosen\" [id]=\"componentId+'_Input'\" [name]=\"componentId+'_Input'\" readonly>\n <small class=\"invalid-feedback\" *ngIf=\"showValidation && group.controls[field].status === 'INVALID'\">{{errorLabel || label}} is required</small>\n </div>\n <!-- dummy input field for validation purposes -->\n <input type=\"text\" [hidden]=\"true\" [formControlName]=\"field\"/>\n </div>\n </div>\n <div *ngIf=\"uploadError\" class=\"alert alert-danger\" role=\"alert\">{{uploadError}}</div>\n <div *ngIf=\"parserReport\">\n <div *ngIf=\"parserReport.successful\" class=\"alert alert-info\" role=\"alert\">Spreadsheet was successfully parsed.</div>\n <div *ngIf=\"!parserReport.successful\" class=\"alert alert-danger\" role=\"alert\">\n There are errors in the uploaded spreadsheet:\n <ul>\n <li *ngFor=\"let error of parserReport.errors\">{{error.message}}</li>\n </ul>\n </div>\n </div>\n </div>\n <div *ngIf=\"attachment && attachment.userFilename\">\n <div>\n <label *ngIf=\"label\">{{label}}</label>\n <div class=\"input-group\">\n <a (click)=\"downloadFile(attachment)\" [id]=\"componentId+'_DownloadFileLink'\" [name]=\"componentId+'_DownloadFileLink'\" \n class=\"form-control\">{{attachment.userFilename}}</a>\n <span *ngIf=\"removeAllowed\" class=\"input-group-btn\">\n <button type=\"button\" class=\"btn btn-primary\" [id]=\"componentId+'_RemoveFileBtn'\" [name]=\"componentId+'_RemoveFileBtn'\"\n (click)=\"removeFile()\" [disabled]=\"group.controls[field].status === 'DISABLED'\">Remove Attachment</button>\n \n\t\t\t</span>\n </div>\n </div>\n </div>\n</form>","import { Component, OnInit, OnChanges, SimpleChanges, Input, Output, EventEmitter, ViewChild } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\n\nimport { OepaAttachment, OepaParserReport, OepaFileUtilService, OepaComponentIdService } from '@ohioepa/oepa-common-lib';\nimport { ConfirmationModalComponent } from '../confirmation-modal/confirmation-modal.component';\n\n\n\n@Component({\n selector: 'oepa-multi-file-upload',\n templateUrl: './multi-file-upload.component.html',\n styleUrls: ['./multi-file-upload.component.css']\n})\nexport class MultiFileUploadComponent implements OnInit, OnChanges {\n @Input() group!: FormGroup;\n @Input() field: string = '';\n @Input() label: string = '';\n @Input() errorLabel: string = '';\n @Input() blankForm: OepaAttachment | undefined;\n @Input() blankFormUrl: string = '';\n @Input() showValidation = false;\n @Input() domain = 'application';\n @Input() attachments: Array<OepaAttachment> = [];\n @Input() removeAllowed = true;\n\n @Output() fileUploaded: EventEmitter<OepaAttachment> = new EventEmitter();\n @Output() fileRemoved: EventEmitter<OepaAttachment> = new EventEmitter();\n @Output() download: EventEmitter<OepaAttachment> = new EventEmitter();\n\n @ViewChild('myFileInput', { static: true}) myFileInput: any;\n\n componentId = 'OepaMultiFileUploadComponent';\n uploadError: string = '';\n parserReport!: OepaParserReport;\n\n constructor(private idService: OepaComponentIdService, private fileUtilService: OepaFileUtilService,\n private modalService: BsModalService) { }\n\n ngOnInit() {\n if (this.group) {\n this.componentId = this.idService.getComponentId(this.group);\n this.componentId += (this.componentId.length > 0 ? '_' : '') + this.field;\n } else {\n console.log('OOPS No group yet');\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['attachments'] && changes['attachments'] .currentValue) {\n if (changes['attachments'] .currentValue.length > 0) {\n // console.log('file changed to: ' + changes['attachments'] .currentValue[0].userFilename);\n this.group.controls[this.field].setValue(changes['attachments'] .currentValue[0].userFilename);\n } else {\n this.group.controls[this.field].setValue('');\n // console.log('file changed and is now empty');\n }\n }\n }\n\n public fileChange(event: any) {\n const fileList: FileList = event.target.files;\n if (fileList.length > 0) {\n const file: File = fileList[0];\n this.fileUtilService.uploadFile(file).subscribe((attachment: OepaAttachment) => {\n this.fileUploaded.emit(attachment);\n this.myFileInput.nativeElement.value = '';\n }, err => {\n this.uploadError = 'Error uploading file ' + err;\n });\n }\n }\n\n public removeFile(attachment: OepaAttachment) {\n const modal: BsModalRef = this.modalService.show(ConfirmationModalComponent, { ignoreBackdropClick: true });\n (<ConfirmationModalComponent>modal.content).headerText = 'Remove Attachment';\n (<ConfirmationModalComponent>modal.content).bodyText = 'Do you want to remove the attachment: ' + attachment.userFilename + '?';\n (<ConfirmationModalComponent>modal.content).confirmBtnLabel = 'Yes';\n (<ConfirmationModalComponent>modal.content).cancelBtnLabel = 'No';\n (<ConfirmationModalComponent>modal.content).confirmClicked.subscribe(() => {\n this.fileRemoved.emit(attachment);\n });\n }\n\n public downloadFile(attachment: OepaAttachment) {\n if (!attachment.systemFilename || attachment.systemFilename.length === 0) {\n this.download.emit(attachment);\n } else {\n this.fileUtilService.downloadAttachment(attachment).subscribe(\n data => {\n // console.log('File download success');\n const mimeType: string = this.fileUtilService.mimeTypeForFile(attachment.systemFilename || '');\n if (mimeType) {\n this.fileUtilService.downloadFile(data, mimeType);\n } else {\n this.uploadError = 'Unable to download file: ' + attachment.userFilename + '. Cannot determine mime type';\n }\n }, err => {\n this.uploadError = 'Error downloading file: ' + attachment.userFilename + '. ' + err;\n }\n );\n }\n }\n\n public downloadBlankForm() {\n if (this.blankForm) {\n this.downloadFile(this.blankForm);\n }\n }\n\n}\n","<form [formGroup]=\"group\">\n <div class=\"form-group\">\n <div>\n <label *ngIf=\"label\">{{label}}</label>\n <span *ngIf=\"blankFormUrl\">&nbsp;<a href=\"{{blankFormUrl}}\" target=\"_blank\">Blank Form</a></span>\n <span *ngIf=\"blankForm\">&nbsp;<a href=\"\" (click)=\"downloadBlankForm()\">Blank Form</a></span>\n <div class=\"form-group\">\n <div class=\"input-group\">\n <span class=\"input-group-btn\">\n <label class=\"btn btn-primary btn-file\">\n Browse&hellip; \n <input #myFileInput type=\"file\" style=\"display: none;\" (change)=\"fileChange($event)\" \n [id]=\"componentId+'_BrowseBtn'\" [name]=\"componentId+'_BrowseBtn'\" class=\"form-control\"\n [disabled]=\"group.controls[field].status === 'DISABLED'\">\n </label>\n </span>\n <input [ngClass]=\"{'is-invalid':showValidation && group.controls[field].status === 'INVALID'}\"\n type=\"text\" class=\"form-control\" \n [placeholder]=\"(!attachments || attachments.length === 0) ? 'No files uploaded' : (attachments.length + ' file(s) uploaded')\"\n [id]=\"componentId+'_Input'\" [name]=\"componentId+'_Input'\" readonly>\n <small class=\"invalid-feedback\" *ngIf=\"showValidation && group.controls[field].status === 'INVALID'\">{{errorLabel || label}} is required</small>\n </div>\n <!-- dummy input field for validation purposes -->\n <input type=\"text\" [hidden]=\"true\" [formControlName]=\"field\"/>\n </div>\n </div>\n <div *ngIf=\"uploadError\" class=\"alert alert-danger\" role=\"alert\">{{uploadError}}</div>\n <div *ngIf=\"parserReport\">\n <div *ngIf=\"!attachments[0] && parserReport.successful\" class=\"alert alert-info\" role=\"alert\">Spreadsheet was successfully parsed.</div>\n <div [hidden]=\"parserReport.successful\" class=\"alert alert-danger\" role=\"alert\">\n There are errors in the uploaded spreadsheet:\n <ul>\n <li *ngFor=\"let error of parserReport.errors\">{{error.message}}</li>\n </ul>\n </div>\n </div>\n </div>\n <div *ngIf=\"attachments && attachments[0]\">\n <div *ngFor=\"let attachment of attachments; let i=index;\">\n <div class=\"form-group\">\n <div class=\"input-group\">\n <a (click)=\"downloadFile(attachment)\" [id]=\"componentId+'_DownloadFileLink_'+i\" [name]=\"componentId+'_DownloadFileLink_'+i\"\n class=\"form-control\">{{attachment.userFilename}}</a>\n <span *ngIf=\"removeAllowed\" class=\"input-group-btn\">\n <button type=\"button\" class=\"btn btn-primary\" [id]=\"componentId+'_RemoveFileBtn_'+i\" [name]=\"componentId+'_RemoveFileBtn_'+i\"\n (click)=\"removeFile(attachment)\" [disabled]=\"group.controls[field].status === 'DISABLED'\">Remove Attachment</button>\n </span>\n </div>\n </div>\n </div>\n </div>\n</form>","import { Injectable } from '@angular/core';\nimport { Validators } from '@angular/forms';\n\nimport { OepaFormAddress } from './address/oepa-form-address';\nimport { OepaFormContact } from './contact/oepa-form-contact';\n\n/**\n * Helper service for the OepaAddressComponent.\n */\n@Injectable({\n providedIn: 'root'\n })\nexport class OepaFormsService {\n\n constructor() {\n }\n\n /**\n * Method used by parents of OepaAddressComponent to create the address form.\n * If an initial address value is available, it should be passed in as an argument,\n * otherwise an empty object can be passed in.\n * @param address\n */\n public buildAddressForm(address: OepaFormAddress): any {\n return {\n line1: [(address.line1 || ''), [Validators.required, Validators.maxLength(50)]],\n line2: (address.line2 || ''),\n city: [(address.city || ''), [Validators.required, Validators.maxLength(50)]],\n state: [(address.state || 'OH'), Validators.required],\n postalCode: [(address.postalCode || ''), [Validators.required, Validators.pattern('[0-9]{5}')]],\n };\n }\n public buildAddressFormWithCountry(address: OepaFormAddress): any {\n return {\n line1: [(address.line1 || ''), [Validators.required, Validators.maxLength(40)]],\n line2: (address.line2 || ''),\n city: [(address.city || ''), [Validators.required, Validators.maxLength(25)]],\n state: [(address.state || 'OH'), (address.country && address.country === 'USA') ? [Validators.required, Validators.maxLength(2)]:null],\n postalCode: [(address.postalCode || ''), (address.country && address.country === 'USA') ? [Validators.required, Validators.pattern('[0-9]{5}')]:[Validators.required,Validators.maxLength(10)]],\n foreignState: [(address.foreignState), (address.country && address.country !== 'USA') ? [Validators.required, Validators.maxLength(12)]:null],\n foreignZip: [(address.foreignZip), (address.country && address.country !== 'USA') ? [Validators.required, Validators.maxLength(10)]:null],\n country: [(address.country || 'USA'), (address.country && address.country !== 'USA') ? [Validators.required, Validators.maxLength(20)]:[Validators.maxLength(20)]],\n };\n }\n\n /**\n * Method used by parents of OepaContactComponent to create the contact form.\n * If an initial contact value is available, it should be passed in as an argument,\n * otherwise an empty object can be passed in.\n * @param contact\n */\n public buildContact(contact: OepaFormContact, includeTitle?: boolean): any {\n if (includeTitle) {\n return {\n firstName: [(contact.firstName || ''), [Validators.required, Validators.maxLength(50)]],\n middleName: [(contact.middleName || '')],\n lastName: [(contact.lastName || ''), [Validators.required, Validators.maxLength(50)]],\n title: [(contact.title || ''), [Validators.maxLength(50)]],\n phoneNumber: [(contact.phoneNumber || ''), [Validators.required]],\n faxNumber: [(contact.faxNumber || ''), []],\n emailAddress: [(contact.emailAddress || ''), [Validators.required, Validators.email, Validators.maxLength(254)]],\n };\n } else {\n return {\n firstName: [(contact.firstName || ''), [Validators.required, Validators.maxLength(50)]],\n middleName: [(contact.middleName || '')],\n lastName: [(contact.lastName || ''), [Validators.required, Validators.maxLength(50)]],\n phoneNumber: [(contact.phoneNumber || ''), [Validators.required]],\n faxNumber: [(contact.faxNumber || ''), []],\n emailAddress: [(contact.emailAddress || ''), [Validators.required, Validators.email, Validators.maxLength(254)]],\n };\n }\n }\n public getCountryCode(countryName:string):string{\n let country:string='';\n switch (countryName){\n case \"Finland\":\n country = \"FIN\";\n break;\n case \"Mexico\":\n country = 'MEXI';\n break;\n case 'Switzerland':\n country = \"SWZ\";\n break;\n case 'USA' :\n country = \"USA\";\n break;\n case 'Japan':\n country = \"JPN\";\n break;\n case 'Canada':\n country = \"CANA\";\n break;\n case 'England':\n country = \"ENG\";\n break;\n case 'Spain':\n country = \"SPN\";\n break;\n case 'South Korea':\n country = \"SKOR\";\n break;\n case 'Germany':\n country = \"GRMN\";\n break;\n case 'Italy':\n country = \"ITLY\";\n break;\n case 'China':\n country = \"CHN\";\n break;\n case 'Jordan':\n country = \"JORD\";\n break;\n case 'Norway':\n country = \"NRWY\";\n break;\n case 'Sweden':\n country = \"SWD\";\n break;\n case 'Australia':\n country = \"AUS\";\n break;\n case 'Austria':\n country = \"AUST\";\n break;\n case 'France':\n country = \"FRNC\";\n break;\n default:\n break;\n }\n return country;\n }\n \n public getCountryName(countryCode:string):string{\n let country:string='';\n switch (countryCode){\n case 'FIN':\n country = 'Finland' ;\n break;\n case 'MEXI':\n country = \"Mexico\";\n break;\n case \"SWZ\":\n country = 'Switzerland';\n break;\n case 'USA' :\n country = \"USA\";\n break;\n case 'JPN':\n country = 'Japan';\n break;\n case \"CANA\":\n country = 'Canada';\n break;\n case \"ENG\":\n country = 'England' ;\n break;\n case \"SPN\":\n country = 'Spain';\n break;\n case \"SKOR\":\n country = 'South Korea';\n break;\n case \"GRMN\":\n country = 'Germany';\n break;\n case \"ITLY\":\n country = 'Italy';\n break;\n case 'CHN':\n country = \"China\";\n break;\n case 'JORD':\n country = \"Jordan\";\n break;\n case 'NRWY':\n country = \"Norway\";\n break;\n case 'SWD':\n country = \"Sweden\";\n break;\n case 'AUS':\n country = \"Australia\";\n break;\n case 'AUST':\n country = \"Austria\";\n break;\n case 'FRNC':\n country = \"France\";\n break;\n default:\n break;\n }\n return country;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { HttpClient, HttpHeaders} from '@angular/common/http';\nimport { OEPAPersonFilter } from '@ohioepa/oepa-ebiz-lib';\nimport { OEPAPerson } from '@ohioepa/oepa-ebiz-lib';\nimport { OEPAReference, OEPAProgram } from '@ohioepa/oepa-common-lib';\nimport { OEPAOrganizationFilter } from '@ohioepa/oepa-ebiz-lib';\nimport { OEPAOrganization } from '@ohioepa/oepa-common-lib';\nimport { OEPAEntityFilter } from '@ohioepa/oepa-ebiz-lib';\nimport { OEPAPlace } from '@ohioepa/oepa-ebiz-lib';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EntityService {\n private entityURL = '/ebiz/api/v1/entities';\n\n constructor(private http: HttpClient) { \n\n }\n\n public searchPersons(filter: OEPAPersonFilter): Observable<OEPAPerson[]> {\n const headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n const url = this.entityURL + '/persons/search'\n return this.http.post<OEPAPerson[]>(url, filter, { headers: headers, responseType: 'json' });\n }\n\n public matchPersons(filter: OEPAPersonFilter): Observable<OEPAPerson[]> {\n const headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n const url = this.entityURL + '/persons/match'\n return this.http.post<OEPAPerson[]>(url, filter, { headers: headers, responseType: 'json' });\n }\n\n public createPerson(person: OEPAPerson): Observable<string> {\n const headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n const url = this.entityURL + '/persons'\n return this.http.post<string>(url, person, { headers: headers, responseType: 'json' });\n }\n\n public retrievePersonTypes(): Observable<OEPAReference[]> {\n const headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n const url = this.entityURL + '/persons/types'\n return this.http.get<OEPAReference[]>(url, { headers: headers, responseType: 'json' });\n }\n\n public searchOrganizations(filter: OEPAOrganizationFilter): Observable<OEPAOrganization[]> {\n const headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n const url = this.entityURL + '/organizations/search'\n return this.http.post<OEPAOrganization[]>(url, filter, { headers: headers, responseType: 'json' });\n }\n\n public matchOrganizations(filter: OEPAOrganizationFilter): Observable<OEPAOrganization[]> {\n const headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n const url = this.entityURL + '/organizations/match'\n return this.http.post<OEPAOrganization[]>(url, filter, { headers: headers, responseType: 'json' });\n }\n\n public createOrganization(organization: OEPAOrganization): Observable<string> {\n const headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n const url = this.entityURL + '/organizations'\n return this.http.post<string>(url, organization, { headers: headers, responseType: 'json' });\n }\n\n public retrieveOrganizationTypes(): Observable<OEPAReference[]> {\n const headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n const url = this.entityURL + '/organizations/types'\n return this.http.get<OEPAReference[]>(url, { headers: headers, responseType: 'json' });\n }\n\n public searchPlaces(filter: OEPAEntityFilter): Observable<OEPAPlace[]> {\n const headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n const url = this.entityURL + '/places/search'\n return this.http.post<OEPAPlace[]>(url, filter, { headers: headers, responseType: 'json' });\n }\n\n public matchPlaces(filter: OEPAEntityFilter): Observable<OEPAPlace[]> {\n const headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n const url = this.entityURL + '/places/match'\n return this.http.post<OEPAPlace[]>(url, filter, { headers: headers, responseType: 'json' });\n }\n\n public createPlace(place: OEPAPlace): Observable<string> {\n const headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n const url = this.entityURL + '/places'\n return this.http.post<string>(url, place, { headers: headers, responseType: 'json' });\n }\n\n public retrieveAddressTypes(): Observable<OEPAReference[]> {\n const headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n const url = this.entityURL + '/addresses/types'\n return this.http.get<OEPAReference[]>(url, { headers: headers, responseType: 'json' });\n }\n \n public retrieveTelephoneTypes(): Observable<OEPAReference[]> {\n const headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n const url = this.entityURL + '/telephones/types'\n return this.http.get<OEPAReference[]>(url, { headers: headers, responseType: 'json' });\n }\n \n public retrievePrograms(): Observable<OEPAProgram[]> {\n const headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n const url = this.entityURL + '/programs'\n return this.http.get<OEPAProgram[]>(url, { headers: headers, responseType: 'json' });\n }\n}\n","import { Component, OnInit, Output, EventEmitter } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { EMPTY, Observable, forkJoin } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { OEPAOrganization, OEPAAddress, OEPAPhoneNumber, OEPAProgram } from '@ohioepa/oepa-ebiz-lib';\nimport { EntityService } from '../entity.service';\nimport { OEPAOrganizationFilter } from '@ohioepa/oepa-ebiz-lib';\nimport { OEPAReference } from '@ohioepa/oepa-common-lib';\nimport { OepaTableRow } from '../../table/oepa-table-row';\nimport { OepaTableHeader } from '../../table/oepa-table-header';\nimport { OepaTableConfig } from '../../table/oepa-table-config';\nimport { OepaFormsService } from '../../oepa-forms.service';\n\n@Component({\n selector: 'oepa-organization-create-modal',\n templateUrl: './organization-create-modal.component.html',\n styleUrls: ['./organization-create-modal.component.css']\n})\nexport class OrganizationCreateModalComponent implements OnInit {\npublic modalFormGroup!: FormGroup;\n public errorMessage: string = '';\n public infoMessage: string = '';\n public inProgressMsg: string = '';\n public filter!: OEPAOrganizationFilter;\n public organizationTypes: OEPAReference[] = [];\n public programs: OEPAProgram[] = [];\n public addressTypes: OEPAReference[] = [];\n public phoneNumberTypes: OEPAReference[] = [];\n public selectedOrganization: OEPAOrganization | undefined;\n\npublic tableData: Array<OepaTableRow> = [];\n public tableHeader!: OepaTableHeader;\n public tableConfig: OepaTableConfig = {\n rowsPerPage: 5,\n classNames: ['table-striped', 'table-bordered', 'table-sm']\n };\n\n\n @Output() onOrganizationCreated: EventEmitter<OEPAOrganization> = new EventEmitter<OEPAOrganization>();\n \n constructor(private fb: FormBuilder, public bsModalRef: BsModalRef, \n private formService: OepaFormsService,\n private entityService: EntityService) { }\n\n ngOnInit() {\n this.loadReferenceData().subscribe({\n next: results => {\n this.createForm(); \n }, error: err => {\n this.errorMessage = 'An initialization error occurred: ' + err;\n }});\n }\n\n private loadReferenceData(): Observable<any> {\n let tasks = [];\n tasks.push(this.retrieveOrganizationTypes());\n tasks.push(this.retrievePrograms());\n tasks.push(this.retrieveAddressTypes());\n tasks.push(this.retrievePhoneNumberTypes());\n return forkJoin(tasks);\n }\n\n private retrieveOrganizationTypes(): Observable<number> {\n return this.entityService.retrieveOrganizationTypes().pipe(\n map(types => {\n this.organizationTypes = [];\n if (types && types.length) {\n types.forEach(type => {\n this.organizationTypes.push(type);\n });\n }\n return this.organizationTypes.length;\n }), catchError(err => {\n this.errorMessage = 'An initialization error occurred: ' + err;\n return EMPTY;\n }));\n }\n\n private retrievePrograms(): Observable<number> {\n return this.entityService.retrievePrograms().pipe(\n map(programs => {\n this.programs = [];\n if (programs && programs.length) {\n programs.forEach(program => {\n this.programs.push(program);\n });\n }\n return this.programs.length;\n }), catchError(err => {\n this.errorMessage = 'An initialization error occurred: ' + err;\n return EMPTY;\n }));\n }\n\n private retrieveAddressTypes(): Observable<number> {\n return this.entityService.retrieveAddressTypes().pipe(\n map(types => {\n this.addressTypes = [];\n if (types && types.length) {\n types.forEach(type => {\n this.addressTypes.push(type);\n });\n }\n return this.addressTypes.length;\n }), catchError(err => {\n this.errorMessage = 'An initialization error occurred: ' + err;\n return EMPTY;\n }));\n }\n\n private retrievePhoneNumberTypes(): Observable<number> {\n return this.entityService.retrieveTelephoneTypes().pipe(\n map(types => {\n this.phoneNumberTypes = [];\n if (types && types.length) {\n types.forEach(type => {\n this.phoneNumberTypes.push(type);\n });\n }\n return this.phoneNumberTypes.length;\n }), catchError(err => {\n this.errorMessage = 'An initialization error occurred: ' + err;\n return EMPTY;\n }));\n }\n\n private createForm() {\n this.modalFormGroup = this.fb.group({\n orgType: ['RVORG', [Validators.required]],\n program: [null, [Validators.required]],\n organizationName: ['', [Validators.required, Validators.maxLength(50)]],\n addressType: ['BILLI', [Validators.required]],\n address: this.fb.group(this.formService.buildAddressFormWithCountry({})),\n areaCode: '',\n phoneNumberType: ['OFFIC', [Validators.required]],\n phoneNumber: '',\n extension: ''\n });\n this.modalFormGroup.controls['address'].get('state')?.setValue(undefined);\n this.modalFormGroup.controls['address'].get('country')?.valueChanges.subscribe(country=>{\n \n if(country === 'USA'){\n this.modalFormGroup.controls['address'].get('state')?.setValidators([Validators.required]);\n this.modalFormGroup.controls['address'].get('state')?.updateValueAndValidity();\n this.modalFormGroup.controls['address'].get('postalCode')?.setValidators([Validators.required, Validators.pattern('[0-9]{5}')]);\n this.modalFormGroup.controls['address'].get('postalCode')?.updateValueAndValidity();\n this.modalFormGroup.controls['address'].get('foreignState')?.clearValidators();\n this.modalFormGroup.controls['address'].get('foreignState')?.updateValueAndValidity();\n this.modalFormGroup.controls['address'].get('foreignZip')?.clearValidators();\n this.modalFormGroup.controls['address'].get('foreignZip')?.updateValueAndValidity();\n } else {\n this.modalFormGroup.controls['address'].get('foreignState')?.setValidators([Validators.required]);\n this.modalFormGroup.controls['address'].get('foreignState')?.updateValueAndValidity();\n this.modalFormGroup.controls['address'].get('foreignZip')?.setValidators([Validators.required]);\n this.modalFormGroup.controls['address'].get('foreignZip')?.updateValueAndValidity();\n this.modalFormGroup.controls['address'].get('state')?.clearValidators();\n this.modalFormGroup.controls['address'].get('state')?.updateValueAndValidity();\n this.modalFormGroup.controls['address'].get('postalCode')?.clearValidators();\n this.modalFormGroup.controls['address'].get('postalCode')?.updateValueAndValidity();\n }\n \n })\n }\n\n private getFilterFromForm(): OEPAOrganizationFilter {\n let filter: OEPAOrganizationFilter = {\n name: this.modalFormGroup.get('organizationName')?.value,\n phoneNumber:this.modalFormGroup.get('phoneNumber')?.value,\n address: this.modalFormGroup.get('address')?.get('line1')?.value,\n city: this.modalFormGroup.get('address')?.get('city')?.value,\n state:this.modalFormGroup.get('address')?.get('country')?.value === 'USA' ? this.modalFormGroup.get('address')?.get('state')?.value:null,\n zipCode: this.modalFormGroup.get('address')?.get('country')?.value === 'USA' ? this.modalFormGroup.get('address')?.get('postalCode')?.value : this.modalFormGroup.get('address')?.get('foreignZip')?.value,\n foreignState: this.modalFormGroup.get('address')?.get('country')?.value !== 'USA' ? this.modalFormGroup.get('address')?.get('foreignState')?.value:null,\n country:this.formService.getCountryCode(this.modalFormGroup.get('address')?.get('country')?.value),\n };\n return filter;\n }\n\n private getOrganizationFromForm(): OEPAOrganization {\n let address: OEPAAddress = {\n addressType: { code: this.modalFormGroup.get('addressType')?.value },\n program: this.modalFormGroup.get('program')?.value,\n address: {\n type:this.modalFormGroup.get('address')?.get('country')?.value !=='USA'? 'FOREN':'' ,\n addressLine1: this.modalFormGroup.get('address')?.get('line1')?.value,\n addressLine2: this.modalFormGroup.get('address')?.get('line2')?.value,\n city: this.modalFormGroup.get('address')?.get('city')?.value,\n state: this.modalFormGroup.get('address')?.get('country')?.value === 'USA' ? this.modalFormGroup.get('address')?.get('state')?.value:null,\n zip: this.modalFormGroup.get('address')?.get('country')?.value === 'USA' ? this.modalFormGroup.get('address')?.get('postalCode')?.value:this.modalFormGroup.get('address')?.get('foreignZip')?.value,\n foreignState: this.modalFormGroup.get('address')?.get('country')?.value !== 'USA'?this.modalFormGroup.get('address')?.get('foreignState')?.value:null,\n country:this.formService.getCountryCode(this.modalFormGroup.get('address')?.get('country')?.value),\n }\n }\n let phone: OEPAPhoneNumber = {\n phoneNumberType: { code: this.modalFormGroup.get('phoneNumberType')?.value },\n program: this.modalFormGroup.get('program')?.value,\n phoneNumber: {\n phoneNumber: this.modalFormGroup.get('phoneNumber')?.value\n }\n };\n let organization: OEPAOrganization = {\n name: this.modalFormGroup.get('organizationName')?.value,\n organizationType: { code: this.modalFormGroup.get('orgType')?.value },\n addressList: [ address ],\n phoneNumberList: [phone ]\n };\n return organization;\n }\n\n public saveOrganizationAfterSearch() {\n this.errorMessage = '';\n this.tableData = [];\n this.buildTableHeader();\n let filter = this.getFilterFromForm();\n this.inProgressMsg = 'Checking to see if Organization exists...';\n this.entityService.matchOrganizations(filter).subscribe({\n next: matches => {\n this.inProgressMsg = '';\n if (!matches || matches.length === 0) {\n this.saveOrganization();\n } else {\n matches.forEach(organization => {\n let row = this.convertOrganizationToTableRow(organization);\n this.tableData.push(row);\n this.tableData = this.tableData.slice();\n });\n this.infoMessage = 'Please check the table above and select an organization from the table if it is the same as the Organization you are attempting to create.';\n }\n }, error: err => {\n this.inProgressMsg = '';\n this.errorMessage = 'Failed searching for existing organization: ' + err;\n }});\n }\n\nprivate buildTableHeader(){\n this.tableHeader = {\n columns: [\n { title: '', id: 'select', sort: 'none', singleSelectColumn: true, className: 'select-col' },\n { title: 'ID', id: 'id', sort: 'none', filterable: true },\n { title: 'Type', id: 'type', sort: 'none', filterable: true },\n { title: 'Name', id: 'name', sort: 'none', filterable: true },\n { title: 'Address', id: 'address', sort: 'none', filterable: true },\n { title: 'City', id: 'city', sort: 'none', filterable: true },\n \n ]\n };\n \n if(this.modalFormGroup.get('address')?.get('country')?.value === 'USA'){\n this.tableHeader.columns.push({ title: 'State', id: 'state', sort: 'none', filterable: true })\n this.tableHeader.columns.push({ title: 'Zip Code', id: 'zipCode', sort: 'none', filterable: true })\n } else {\n this.tableHeader.columns.push({ title: 'foreignState', id: 'foreignState', sort: 'none', filterable: true })\n this.tableHeader.columns.push({ title: 'foreignZip', id: 'foreignZip', sort: 'none', filterable: true })\n this.tableHeader.columns.push({ title: 'country', id: 'country', sort: 'none', filterable: true });\n }\n\n }\n private convertOrganizationToTableRow(organization: OEPAOrganization): OepaTableRow {\n let cells:Array<any>=[\n { id: 'id', value: organization.id },\n { id: 'type', value: organization.organizationType ? organization.organizationType.name : '' },\n { id: 'name', value: organization.name },\n { id: 'address', value: organization.addressList && organization.addressList.length > 0 ? organization.addressList[0].address?.addressLine1 : '' },\n { id: 'city', value: organization.addressList && organization.addressList.length > 0 ? organization.addressList[0].address?.city : '' }];\n if(this.modalFormGroup.get('address')?.get('country')?.value === 'USA'){\n cells.push({ id: 'state', value: organization.addressList && organization.addressList.length > 0 ? organization.addressList[0].address?.state : '' })\n cells.push({ id: 'zipCode', value: organization.addressList && organization.addressList.length > 0 ? organization.addressList[0].address?.zip : '' })\n } else {\n cells.push({ id: 'foreignState', value: organization.addressList && organization.addressList.length > 0 ? organization.addressList[0].address?.foreignState : '' })\n cells.push({ id: 'foreignZip', value: organization.addressList && organization.addressList.length > 0 ? organization.addressList[0].address?.foreignZip : '' })\n cells.push({ id: 'country', value: organization.addressList && organization.addressList.length > 0 ? this.formService.getCountryName(organization.addressList[0].address?.country || '') : '' })\n }\n\n return {\n cells: cells,\n dataSource: organization,\n selectable: true\n }\n }\n\n public saveOrganization() {\n this.errorMessage = '';\n this.inProgressMsg = 'Creating record for new organization...';\n let organization = this.getOrganizationFromForm();\n //console.log(\"organization:\",JSON.stringify(organization))\n this.entityService.createOrganization(organization).subscribe(organizationID => {\n //console.log(\"organizationID:\",JSON.stringify(organizationID))\n if (organizationID) {\n this.inProgressMsg = '';\n organization.id = organizationID;\n this.onOrganizationCreated.emit(organization);\n }\n }, err => {\n this.inProgressMsg = '';\n this.errorMessage = 'Failed creating Organization: ' + err;\n });\n }\n\n public onRowSelect(event: any) {\n this.selectedOrganization = event[0].dataSource;\n }\n\n public saveSelectedOrganization() {\n this.onOrganizationCreated.emit(this.selectedOrganization);\n }\n\n public getModalFormGroup(name: string) : FormGroup {\n return this.modalFormGroup.controls[name] as FormGroup;\n }\n\n public getModalFormGroupInvalidClass(name: string) : any {\n return {\n 'is-invalid' : this.modalFormGroup.controls[name].invalid\n };\n }\n\n public getModalFormGroupHasError(name: string, field: string) : boolean {\n return this.modalFormGroup.controls[name].hasError(field);\n }\n \n}\n","<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">Create Organization</h4>\n <button type=\"button\" class=\"btn-close float-end\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n \n </button>\n</div>\n<div class=\"modal-body\">\n <div *ngIf=\"!modalFormGroup\">\n <div class=\"text-center\">Initializing...</div>\n <div class=\"text-center\"><span class=\"spinner-border text-primary\" role=\"status\"></span></div>\n </div>\n <form *ngIf=\"modalFormGroup\" [formGroup]=\"modalFormGroup\">\n <label>Organization Type</label>\n <select id=\"orgTypeSelect\" formControlName=\"orgType\" class=\"form-select\"\n [ngClass]=\"getModalFormGroupInvalidClass('orgType')\">\n <option *ngFor=\"let t of organizationTypes\" [ngValue]=\"t.code\">{{t.name}}</option>\n </select>\n <small class=\"invalid-feedback\" *ngIf=\"getModalFormGroupHasError('orgType','required')\">Organization Type is required</small>\n\n <label>Program</label>\n <select id=\"programSelect\" formControlName=\"program\" class=\"form-select\"\n [ngClass]=\"getModalFormGroupInvalidClass('program')\">\n <option *ngFor=\"let t of programs\" [ngValue]=\"t\">{{t.name}}</option>\n </select>\n <small class=\"invalid-feedback\" *ngIf=\"getModalFormGroupHasError('program','required')\">Program is required</small>\n\n <label>Organization Name</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"organizationName\" id=\"organizationName\" maxlength=\"40\"\n [ngClass]=\"getModalFormGroupInvalidClass('organizationName')\"> \n <small class=\"invalid-feedback\" *ngIf=\"getModalFormGroupHasError('organizationName','required')\">Organization is required</small>\n\n <label>Phone Number</label>\n <input type=\"text\" class=\"form-control\" [ngClass]=\"getModalFormGroupInvalidClass('phoneNumber')\"\n placeholder=\"(xxx) xxx-xxxx\" formControlName=\"phoneNumber\" id=\"PhoneInput\" mask=\"(000) 000-0000\" minlength=\"10\">\n <small class=\"invalid-feedback\" *ngIf=\"getModalFormGroupHasError('phoneNumber','required')\">Phone Number is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"getModalFormGroupHasError('phoneNumber','minlength')\">Please enter a valid phone number</small>\n \n <label>Phone Number Type</label>\n <select id=\"phoneNumberTypeSelect\" formControlName=\"phoneNumberType\" class=\"form-select\"\n [ngClass]=\"getModalFormGroupInvalidClass('phoneNumberType')\">\n <option *ngFor=\"let t of phoneNumberTypes\" [ngValue]=\"t.code\">{{t.name}}</option>\n </select>\n <small class=\"invalid-feedback\" *ngIf=\"getModalFormGroupHasError('phoneNumberType','required')\">Phone Number Type is required</small>\n\n <oepa-address [group]=\"getModalFormGroup('address')\" [showValidation]=\"true\" [cityMaxLength] = \"25\"></oepa-address> \n\n <label>Address Type</label>\n <select id=\"addressTypeSelect\" formControlName=\"addressType\" class=\"form-select\"\n [ngClass]=\"getModalFormGroupInvalidClass('addressType')\">\n <option *ngFor=\"let t of addressTypes\" [ngValue]=\"t.code\">{{t.name}}</option>\n </select>\n <small class=\"invalid-feedback\" *ngIf=\"getModalFormGroupHasError('addressType','required')\">Address Type is required</small>\n \n </form>\n <div *ngIf=\"tableData && tableData.length > 0\" class=\"card\">\n <div class=\"card-header\">\n <b>Matching Organization List&nbsp;</b><span class=\"badge bg-secondary\">{{tableData.length}}</span>\n </div>\n <div class=\"card-body\">\n <oepa-table tableId=\"organizationSearchTable\" [config]=\"tableConfig\" [data]=\"tableData\" [header]=\"tableHeader\" (rowSelected)=\"onRowSelect($event)\">\n </oepa-table>\n </div>\n </div>\n</div>\n<div class=\"modal-footer d-block\">\n <div *ngIf=\"inProgressMsg\">\n <div class=\"alert alert-info\">\n {{inProgressMsg}}\n </div>\n </div>\n <div *ngIf=\"infoMessage && !inProgressMsg\">\n <div class=\"alert alert-info\">\n {{infoMessage}}\n </div>\n </div>\n <div *ngIf=\"errorMessage\">\n <div class=\"alert alert-danger\">\n {{errorMessage}}\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-12 text-center\">\n <span *ngIf=\"inProgressMsg\"><span class=\"spinner-border text-primary\" role=\"status\"></span></span>\n <button *ngIf=\"(!tableData || tableData.length === 0) && !inProgressMsg\" type=\"button\" class=\"btn btn-primary mr-2\"\n id=\"SaveOrganizationBtn\"\n [disabled]=\"!modalFormGroup || modalFormGroup.invalid\"\n (click)=\"saveOrganizationAfterSearch()\">Save</button>\n <button *ngIf=\"tableData && tableData.length > 0 && !selectedOrganization && !inProgressMsg\" type=\"button\" class=\"btn btn-primary mr-2\"\n id=\"SaveOrganizationWithoutSearchBtn\"\n [disabled]=\"modalFormGroup?.invalid\"\n (click)=\"saveOrganization()\">No Match, Save New Organization</button>\n <button *ngIf=\"tableData && tableData.length > 0 && selectedOrganization && !inProgressMsg\" type=\"button\" class=\"btn btn-primary mr-2\"\n id=\"SaveSelectedOrganizationBtn\"\n [disabled]=\"modalFormGroup?.invalid\"\n (click)=\"saveSelectedOrganization()\">Use Selected Organization</button>\n <button id=\"CancelOrganizationBtn\" type=\"button\" class=\"btn btn-primary\"\n (click)=\"bsModalRef.hide()\">Cancel</button>\n </div>\n </div>\n</div>","import { Component, OnInit, Output, EventEmitter } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { OEPAOrganization, OEPAProgram } from '@ohioepa/oepa-ebiz-lib';\nimport { EntityService } from '../entity.service';\nimport { OEPAOrganizationFilter } from '@ohioepa/oepa-ebiz-lib';\nimport { OEPAReference } from '@ohioepa/oepa-common-lib';\nimport { OrganizationCreateModalComponent} from '../organization-create-modal/organization-create-modal.component';\nimport { EMPTY, Observable, forkJoin } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { OepaTableRow } from '../../table/oepa-table-row';\nimport { OepaTableHeader } from '../../table/oepa-table-header';\nimport { OepaTableConfig } from '../../table/oepa-table-config';\nimport { OepaFormsService } from '../../oepa-forms.service';\n@Component({\n selector: 'oepa-organization-search-modal',\n templateUrl: './organization-search-modal.component.html',\n styleUrls: ['./organization-search-modal.component.css']\n})\nexport class OrganizationSearchModalComponent implements OnInit {\n public modalFormGroup!: FormGroup;\n public errorMessage: string = '';\n public inProgressMsg: string = '';\n public filter!: OEPAOrganizationFilter;\n public selectedOrganization: OEPAOrganization | undefined;\n public organizationTypes: OEPAReference[] = [];\n public openSearchCriteria = true;\n public allowCreateNew = false;\n public programs: OEPAProgram[] = [];\n public addressTypes: OEPAReference[] = [];\n public phoneNumberTypes: OEPAReference[] = [];\n public initializing = false;\n\n public tableData: Array<OepaTableRow> = [] = [];\n public tableHeader!: OepaTableHeader;\n public tableConfig: OepaTableConfig = {\n rowsPerPage: 5,\n classNames: ['table-striped', 'table-bordered', 'table-sm']\n };\n\n@Output() onOrganizationSelected: EventEmitter<OEPAOrganization> = new EventEmitter<OEPAOrganization>();\n\n constructor(private fb: FormBuilder, \n public bsModalRef: BsModalRef,\n private modalService: BsModalService,\n private formService: OepaFormsService,\n private entityService: EntityService) { \n\n }\n\n ngOnInit() {\n this.initializing = true;\n this.loadReferenceData().subscribe(results => {\n this.createForm();\n this.initializing = false;\n });\n }\n\n private loadReferenceData(): Observable<any> {\n let tasks = [];\n tasks.push(this.retrieveOrganizationTypes());\n tasks.push(this.retrievePrograms());\n tasks.push(this.retrieveAddressTypes());\n tasks.push(this.retrievePhoneNumberTypes());\n return forkJoin(tasks);\n }\n\n private retrievePrograms(): Observable<number> {\n return this.entityService.retrievePrograms().pipe(\n map(programs => {\n this.programs = [];\n if (programs && programs.length) {\n programs.forEach(program => {\n this.programs.push(program);\n });\n }\n return this.programs.length;\n }), catchError(err => {\n this.errorMessage = 'An initialization error occurred: ' + err;\n return EMPTY;\n }));\n }\n\n private retrieveOrganizationTypes(): Observable<number> {\n return this.entityService.retrieveOrganizationTypes().pipe(map(subTypes => {\n this.organizationTypes = subTypes;\n return this.organizationTypes ? this.organizationTypes.length : 0;\n }), catchError(err => {\n this.errorMessage = 'An initialization error occurred: ' + err;\n return EMPTY;\n }));\n }\n\n private retrieveAddressTypes(): Observable<number> {\n return this.entityService.retrieveAddressTypes().pipe(\n map(types => {\n this.addressTypes = [];\n if (types && types.length) {\n types.forEach(type => {\n this.addressTypes.push(type);\n });\n }\n return this.addressTypes.length;\n }), catchError(err => {\n this.errorMessage = 'An initialization error occurred: ' + err;\n return EMPTY;\n }));\n }\n\n private retrievePhoneNumberTypes(): Observable<number> {\n return this.entityService.retrieveTelephoneTypes().pipe(\n map(types => {\n this.phoneNumberTypes = [];\n if (types && types.length) {\n types.forEach(type => {\n this.phoneNumberTypes.push(type);\n });\n }\n return this.phoneNumberTypes.length;\n }), catchError(err => {\n this.errorMessage = 'An initialization error occurred: ' + err;\n return EMPTY;\n }));\n }\n \n private createForm() {\n this.modalFormGroup = this.fb.group({\n id: '',\n secondaryID: '',\n subType: null,\n programID: '',\n name: '',\n addressType: '', \n address: this.fb.group(this.formService.buildAddressFormWithCountry({})),\n phoneNumberType: '',\n areaCode: '',\n phoneNumber: '',\n extension: ''\n });\n this.modalFormGroup.controls['address'].get('state')?.setValue(undefined);\n }\n\n private getFilterFromForm(): OEPAOrganizationFilter {\n let filter: OEPAOrganizationFilter = {\n id: this.modalFormGroup.get('id')?.value,\n programID: this.modalFormGroup.get('programID')?.value,\n organizationType: this.modalFormGroup.get('subType')?.value,\n secondaryID: this.modalFormGroup.get('secondaryID')?.value,\n name: this.modalFormGroup.get('name')?.value,\n addressTypeCode: this.modalFormGroup.get('addressType')?.value,\n address: this.modalFormGroup.get('address')?.get('line1')?.value,\n city: this.modalFormGroup.get('address')?.get('city')?.value,\n state: this.modalFormGroup.get('address')?.get('country')?.value === 'USA' ? this.modalFormGroup.get('address')?.get('state')?.value:null,\n zipCode: this.modalFormGroup.get('address')?.get('country')?.value === 'USA' ? this.modalFormGroup.get('address')?.get('postalCode')?.value : this.modalFormGroup.get('address')?.get('foreignZip')?.value,\n foreignState:this.modalFormGroup.get('address')?.get('country')?.value !== 'USA' ? this.modalFormGroup.get('address')?.get('foreignState')?.value:null,\n country: this.formService.getCountryCode(this.modalFormGroup.get('address')?.get('country')?.value),\n phoneTypeCode: this.modalFormGroup.get('phoneNumberType')?.value,\n phoneAreaCode: this.modalFormGroup.get('areaCode')?.value,\n phoneNumber: this.modalFormGroup.get('phoneNumber')?.value,\n phoneExtension: this.modalFormGroup.get('extension')?.value,\n };\n return filter;\n }\n\n \n\n private filterIsEmpty(filter: OEPAOrganizationFilter): boolean {\n let empty = true;\n if (filter.id && filter.id.length > 0) {\n empty = false;\n }\n if (filter.organizationType) {\n empty = false;\n }\n if (filter.programID) {\n empty = false;\n }\n if (filter.secondaryID && filter.secondaryID.length > 0) {\n empty = false;\n }\n if (filter.name && filter.name.length > 0) {\n empty = false;\n }\n if (filter.addressTypeCode) {\n empty = false;\n }\n if (filter.address && filter.address.length > 0) {\n empty = false;\n }\n if (filter.city && filter.city.length > 0) {\n empty = false;\n }\n if (filter.zipCode && filter.zipCode.length > 0) {\n empty = false;\n }\n \n if ( filter.country && filter.country.length > 0) {\n empty = false;\n }\n \n if (filter.phoneTypeCode) {\n empty = false;\n }\n if (filter.phoneAreaCode && filter.phoneAreaCode.length > 0) {\n empty = false;\n }\n if (filter.phoneNumber && filter.phoneNumber.length > 0) {\n empty = false;\n }\n if (filter.phoneExtension && filter.phoneExtension.length > 0) {\n empty = false;\n }\n return empty;\n }\n\n public submitSearch() {\n this.errorMessage = '';\n let filter = this.getFilterFromForm();\n if (this.filterIsEmpty(filter)) {\n this.errorMessage = 'Please specify search criteria';\n return;\n }\n this.inProgressMsg = 'Searching...';\n this.tableData = [];\n this.buildTableHeader();\n this.entityService.searchOrganizations(filter).subscribe(organizations => {\n this.inProgressMsg = '';\n if (organizations && organizations.length > 0) {\n this.openSearchCriteria = false;\n organizations.forEach(organization => {\n let row = this.convertOrganizationToTableRow(organization);\n this.tableData.push(row);\n this.tableData = this.tableData.slice();\n });\n } else {\n this.openSearchCriteria = true;\n this.errorMessage = 'No organizations found matching search criteria';\n }\n this.allowCreateNew = true;\n }, err => {\n this.inProgressMsg = '';\n this.errorMessage = 'Search Failed: ' + err;\n });\n }\n private buildTableHeader(){\n this.tableHeader = {\n columns: [\n { title: '', id: 'select', sort: 'none', singleSelectColumn: true, className: 'select-col' },\n { title: 'ID', id: 'id', sort: 'none', filterable: true },\n { title: 'Type', id: 'type', sort: 'none', filterable: true },\n { title: 'Name', id: 'name', sort: 'none', filterable: true },\n { title: 'Address', id: 'address', sort: 'none', filterable: true },\n { title: 'City', id: 'city', sort: 'none', filterable: true },\n \n ]\n };\n \n if(this.modalFormGroup.get('address')?.get('country')?.value === 'USA'){\n this.tableHeader.columns.push({ title: 'State', id: 'state', sort: 'none', filterable: true })\n this.tableHeader.columns.push({ title: 'Zip Code', id: 'zipCode', sort: 'none', filterable: true })\n } else {\n this.tableHeader.columns.push({ title: 'foreignState', id: 'foreignState', sort: 'none', filterable: true })\n this.tableHeader.columns.push({ title: 'foreignZip', id: 'foreignZip', sort: 'none', filterable: true })\n this.tableHeader.columns.push({ title: 'country', id: 'country', sort: 'none', filterable: true });\n }\n \n this.tableHeader.columns.push({ title: 'Phone', id: 'phone', sort: 'none', filterable: true });\n\n }\n private convertOrganizationToTableRow(organization: OEPAOrganization): OepaTableRow {\n \n let cells:Array<any>=[\n { id: 'id', value: organization.id },\n { id: 'type', value: organization.organizationType ? organization.organizationType.name : '' },\n { id: 'name', value: organization.name },\n { id: 'address', value: organization.addressList && organization.addressList.length > 0 ? organization.addressList[0].address?.addressLine1 : '' },\n { id: 'city', value: organization.addressList && organization.addressList.length > 0 ? organization.addressList[0].address?.city : '' }];\n if(this.modalFormGroup.get('address')?.get('country')?.value === 'USA'){\n cells.push({ id: 'state', value: organization.addressList && organization.addressList.length > 0 ? organization.addressList[0].address?.state : '' })\n cells.push({ id: 'zipCode', value: organization.addressList && organization.addressList.length > 0 ? organization.addressList[0].address?.zip : '' })\n } else {\n cells.push({ id: 'foreignState', value: organization.addressList && organization.addressList.length > 0 ? organization.addressList[0].address?.foreignState : '' })\n cells.push({ id: 'foreignZip', value: organization.addressList && organization.addressList.length > 0 ? organization.addressList[0].address?.foreignZip : '' })\n cells.push({ id: 'country', value: organization.addressList && organization.addressList.length > 0 ? this.formService.getCountryName(organization.addressList[0].address?.country || '') : '' })\n }\n \n cells.push({ id: 'phone', value: organization.phoneNumberList && organization.phoneNumberList.length > 0 ? organization.phoneNumberList[0].phoneNumber?.phoneNumber?.replace(/^(\\d{0,3})(\\d{0,3})(\\d{0,4})/, '($1) $2-$3') : '' })\n return {\n cells: cells,\n dataSource: organization,\n selectable: true\n }\n }\n\n public resetSearch() {\n this.openSearchCriteria = true;\n this.modalFormGroup.reset();\n this.modalFormGroup.controls['address'].get('country')?.setValue('USA');\n this.tableData = [];\n }\n\n public onRowSelect(event: any) {\n this.selectedOrganization = event[0].dataSource;\n }\n\n public save() {\n this.onOrganizationSelected.emit(this.selectedOrganization);\n //this.bsModalRef.hide();\n }\n public createNewOrganization() {\n let modal = this.modalService.show(OrganizationCreateModalComponent, { class: 'modal-xl', ignoreBackdropClick: true });\n (<OrganizationCreateModalComponent>modal.content).onOrganizationCreated.subscribe((organization: OEPAOrganization) => {\n modal.hide();\n this.onOrganizationSelected.emit(organization);\n });\n }\n\n public getModalFormGroup(name: string) : FormGroup {\n return this.modalFormGroup.controls[name] as FormGroup;\n }\n}\n","<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">Advanced Organization Search</h4>\n <button type=\"button\" class=\"btn-close float-end\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n \n </button>\n</div>\n<div class=\"modal-body\">\n <accordion>\n <accordion-group panelClass=\"panel-info\" #searchGroup [isOpen]=\"openSearchCriteria\">\n <div accordion-heading>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <i class=\"float-xs-right bi\" id=\"organizationSearchCriteria\" name=\"organizationSearchCriteria\" \n [ngClass]=\"{'bi-chevron-down': searchGroup?.isOpen, 'bi-chevron-right': !searchGroup?.isOpen}\"></i>\n <b>Organization Search Criteria</b>\n </div>\n </div>\n </div>\n <div *ngIf=\"initializing\">\n <span class=\"spinner-border text-primary\" role=\"status\"></span>\n Initializing...\n </div>\n <form *ngIf=\"!initializing\" [formGroup]=\"modalFormGroup\"> \n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\"> \n <label>Program</label>\n <select id=\"programSelect\" formControlName=\"programID\" class=\"form-select\">\n <option *ngFor=\"let t of programs\" [ngValue]=\"t.id\">{{t.name}}</option>\n </select>\n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label>Organization Type</label>\n <select id=\"subTypeSelect\" formControlName=\"subType\" class=\"form-select\">\n <option *ngFor=\"let t of organizationTypes\" [ngValue]=\"t\">{{t.name}}</option>\n </select>\n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label>Organization ID</label>\n <input type=\"search\" mask=\"999999999\" class=\"form-control\" id=\"organizationIDInput\" formControlName=\"id\">\n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label>Organization Name</label>\n <input type=\"search\" class=\"form-control\" id=\"organizationNameInput\" formControlName=\"name\" maxlength=\"40\">\n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label>Secondary ID</label>\n <input type=\"search\" class=\"form-control\" id=\"secondaryIDInput\" formControlName=\"secondaryID\">\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label>Address Type</label>\n <select id=\"addressTypeSelect\" formControlName=\"addressType\" class=\"form-select\">\n <option *ngFor=\"let t of addressTypes\" [ngValue]=\"t.code\">{{t.name}}</option>\n </select>\n </div>\n </div>\n </div>\n <oepa-address [group]=\"getModalFormGroup('address')\" [isSearch]=\"true\"\n addressOneLabel=\"Address\" [hideLine2]=\"true\"></oepa-address>\n <div class=\"row\">\n <div class=\"col-md-4\">\n <div class=\"form-group\">\n <label>Phone Number Type</label>\n <select id=\"phoneNumberTypeSelect\" formControlName=\"phoneNumberType\" class=\"form-select\">\n <option *ngFor=\"let t of phoneNumberTypes\" [ngValue]=\"t.code\">{{t.name}}</option>\n </select>\n </div>\n </div>\n <div class=\"col-md-2\">\n <div class=\"form-group\">\n <label>Area Code</label>\n <input type=\"search\" mask=\"999\" class=\"form-control\" id=\"areaCodeInput\" formControlName=\"areaCode\">\n </div>\n </div>\n <div class=\"col-md-4\">\n <div class=\"form-group\">\n <label>Phone Number</label>\n <input type=\"search\" mask=\"999-9999\" class=\"form-control\" id=\"phoneNumberInput\" formControlName=\"phoneNumber\">\n </div>\n </div>\n <div class=\"col-md-2\">\n <div class=\"form-group\">\n <label>Extension</label>\n <input type=\"search\" mask=\"9999\" class=\"form-control\" id=\"extensionInput\" formControlName=\"extension\">\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-12 text-center\">\n <span *ngIf=\"inProgressMsg\"><span class=\"spinner-border text-primary\" role=\"status\"></span></span>\n <button *ngIf=\"!inProgressMsg\" type=\"submit\" class=\"btn btn-primary mr-2\" id=\"submitSearchBtn\" (click)=\"submitSearch()\">Search</button>\n <button id=\"resetSearchBtn\" type=\"button\" class=\"btn btn-primary\" (click)=\"resetSearch()\">Reset</button>\n </div>\n </div>\n </form>\n </accordion-group>\n </accordion>\n <div *ngIf=\"tableData && tableData.length > 0\" class=\"card\">\n <div class=\"card-header\">\n <b>Organization List&nbsp;</b><span class=\"badge bg-secondary\">{{tableData.length}}</span>\n </div>\n <div class=\"card-body\">\n <oepa-table tableId=\"organizationSearchTable\" [config]=\"tableConfig\" [data]=\"tableData\" [header]=\"tableHeader\" (rowSelected)=\"onRowSelect($event)\">\n </oepa-table>\n </div>\n </div>\n</div>\n<div class=\"modal-footer d-block\">\n <div *ngIf=\"errorMessage\">\n <div class=\"alert alert-danger\">\n {{errorMessage}}\n </div>\n </div>\n <div *ngIf=\"inProgressMsg\">\n <div class=\"alert alert-info\">\n {{inProgressMsg}}\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-12 text-center\">\n <button type=\"button\" class=\"btn btn-primary mr-2\"\n id=\"SaveOrganizationBtn\"\n [disabled]=\"!selectedOrganization || inProgressMsg\"\n (click)=\"save()\">Save</button>\n\t\t\t<button *ngIf=\"allowCreateNew\" type=\"button\" class=\"btn btn-primary mr-2\"\n id=\"CreateOrganizationButton\"\n (click)=\"createNewOrganization()\">Create New Organization</button>\n <button id=\"CancelPaymentBtn\" type=\"button\" class=\"btn btn-primary\"\n (click)=\"bsModalRef.hide()\">Cancel</button>\n </div>\n </div>\n</div>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { TypeaheadMatch } from 'ngx-bootstrap/typeahead';\nimport { FormGroup } from '@angular/forms';\nimport { EMPTY, Observable } from 'rxjs';\nimport { mergeMap, map, catchError } from 'rxjs/operators';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { OepaComponentIdService } from '@ohioepa/oepa-common-lib';\nimport { EntityService } from '../entity.service';\nimport { OEPAOrganization } from '@ohioepa/oepa-ebiz-lib';\nimport { OEPAOrganizationFilter } from '@ohioepa/oepa-ebiz-lib';\nimport { OrganizationSearchModalComponent } from '../organization-search-modal/organization-search-modal.component';\n\n@Component({\n selector: 'oepa-organization-search-input',\n templateUrl: './organization-search-input.component.html',\n styleUrls: ['./organization-search-input.component.css']\n})\nexport class OrganizationSearchInputComponent implements OnInit {\n nameSearch = '';\n nameSource: Observable<OEPAOrganization[]>;\n componentId: string = '';\n errorMessage: string = '';\n searching: boolean = false;\n\n @Input('group') group!: FormGroup;\n @Input('organizationID') organizationID: string = '';\n @Input('field') field: string = '';\n @Input('title') title: string = 'Organization';\n @Input('errorMessageAddendum') errorMessageAddendum = '';\n @Input('rowLayout') rowLayout = false;\n\n @Output('organizationSelected') organizationSelected: EventEmitter<OEPAOrganization> = new EventEmitter<OEPAOrganization>();\n\n constructor(private idService: OepaComponentIdService,\n private modalService: BsModalService,\n private entityService: EntityService) {\n this.nameSource = new Observable((observer) => {\n observer.next(this.group.get(this.field)?.value);\n }).pipe(mergeMap((token: any) => this.searchOrganizations(token)));\n }\n\n ngOnInit() {\n this.componentId = this.idService.getComponentId(this.group);\n if (this.organizationID) {\n const filter: OEPAOrganizationFilter = {\n id: this.organizationID\n }\n this.searching = true;\n this.entityService.searchOrganizations(filter).subscribe(organizationList => {\n if (organizationList && organizationList.length == 1) {\n this.loadOrganizationInForm(organizationList[0]);\n } else {\n this.errorMessage = 'An initialization error occurred: Zero or multiple organizations wih id: ' + this.organizationID;\n }\n this.searching = false;\n }, err => {\n this.searching = false;\n this.errorMessage = 'An initialization error occurred: ' + err;\n });\n }\n this.group.get(this.field)?.valueChanges.subscribe(value => {\n if (!value || value === '') {\n this.organizationSelected.emit(undefined);\n }\n });\n }\n\n public onOrganizationSelect(e: TypeaheadMatch) {\n if (e.item) {\n this.loadOrganizationInForm(e.item);\n this.organizationSelected.emit(e.item);\n }\n }\n\n private loadOrganizationInForm(organization: OEPAOrganization) {\n let data: any = {};\n data[this.field] = organization.name ? (organization.name + ' (' + organization.id + ')') : '';\n if (organization) {\n this.group.patchValue(data);\n }\n }\n\n private searchOrganizations(token: any): Observable<OEPAOrganization[]> {\n this.errorMessage = '';\n this.searching = true;\n const filter: OEPAOrganizationFilter = {\n name: isNaN(token) ? token : undefined,\n id: isNaN(token) ? undefined : token\n }\n return this.entityService.searchOrganizations(filter).pipe(\n map((organizations) => {\n this.searching = false;\n return organizations;\n }), catchError(err => {\n this.searching = false;\n this.errorMessage = 'Search failed: ' + err;\n return EMPTY;\n })\n );\n }\n\n public advancedSearch() {\n let modal = this.modalService.show(OrganizationSearchModalComponent, {class: 'modal-xl',ignoreBackdropClick: true});\n (<OrganizationSearchModalComponent>modal.content).onOrganizationSelected.subscribe(organization => {\n this.loadOrganizationInForm(organization);\n this.organizationSelected.emit(organization);\n modal.hide();\n });\n }\n\n}\n","<div [formGroup]=\"group\" class=\"form-group\" [ngClass]=\"{'row text-right': rowLayout}\">\n <ng-template #organizationTemplate let-model=\"item\" let-index=\"index\">\n <h5>{{ (model.name || '') +\n (model.addressList && model.addressList[0] ? (' - ' + model.addressList[0].address.addressLine1 + ', ' + model.addressList[0].address.city\n + model.addressList[0].address.state) : '') + ' (' + model.id + ')' }}</h5>\n </ng-template>\n <label [ngClass]=\"{'col-sm-4 col-form-label': rowLayout}\">\n {{title}}\n <span *ngIf=\"searching\"><span class=\"spinner-border text-primary\" role=\"status\"></span></span>\n <a href=\"javascript:void(0)\" (click)=\"advancedSearch()\">Advanced Search</a>\n </label>\n <div [ngClass]=\"{'col-sm-8': rowLayout}\">\n <input class=\"form-control\" type=\"search\" [ngClass]=\"{'is-invalid':group.controls[field]?.status === 'INVALID'}\"\n [formControlName]=\"field\" [typeahead]=\"nameSource\" [typeaheadScrollable]=\"true\"\n (typeaheadOnSelect)=\"onOrganizationSelect($event)\" [id]=\"componentId + '_OrganizationSearch'\"\n [typeaheadItemTemplate]=\"organizationTemplate\" [typeaheadMinLength]=\"3\" placeholder=\"Search Organization\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls[field]?.hasError('required')\">{{title}} is required {{errorMessageAddendum}}</small>\n </div>\n</div>\n<div *ngIf=\"errorMessage\" class=\"alert alert-danger\">\n {{errorMessage}}\n</div>","import { Component, OnInit, Output, EventEmitter } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { EMPTY, Observable, forkJoin } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { OEPAPerson, OEPAAddress, OEPAPhoneNumber, OEPAProgram } from '@ohioepa/oepa-ebiz-lib';\nimport { EntityService } from '../entity.service';\nimport { OEPAPersonFilter } from '@ohioepa/oepa-ebiz-lib';\nimport { OEPAReference } from '@ohioepa/oepa-common-lib';\nimport { OepaTableRow } from '../../table/oepa-table-row';\nimport { OepaTableHeader } from '../../table/oepa-table-header';\nimport { OepaTableConfig } from '../../table/oepa-table-config';\nimport { OepaFormsService } from '../../oepa-forms.service';\n\n@Component({\n selector: 'oepa-person-create-modal',\n templateUrl: './person-create-modal.component.html',\n styleUrls: ['./person-create-modal.component.css']\n})\nexport class PersonCreateModalComponent implements OnInit {\n public modalFormGroup!: FormGroup;\n public errorMessage: string = '';\n public infoMessage: string = '';\n public inProgressMsg: string = '';\n public filter!: OEPAPersonFilter;\n public selectedPerson: OEPAPerson | undefined;\n public personSubTypes: OEPAReference[] = [];\n public programs: OEPAProgram[] = [];;\n public addressTypes: OEPAReference[] = [];;\n public phoneNumberTypes: OEPAReference[] = [];;\n\n public tableData: Array<OepaTableRow> = [];\n public tableHeader!: OepaTableHeader;\n\n public tableConfig: OepaTableConfig = {\n rowsPerPage: 5,\n classNames: ['table-striped', 'table-bordered', 'table-sm']\n };\n\n\n @Output() onPersonCreated: EventEmitter<OEPAPerson> = new EventEmitter<OEPAPerson>();\n\n constructor(private fb: FormBuilder, public bsModalRef: BsModalRef, \n private formService: OepaFormsService,\n private entityService: EntityService) { }\n\n ngOnInit() {\n this.loadReferenceData().subscribe({\n next: results => {\n this.createForm(); \n }, error: err => {\n this.errorMessage = 'An initialization error occurred: ' + err;\n }});\n }\n\n private loadReferenceData(): Observable<any> {\n let tasks = [];\n tasks.push(this.retrievePersonTypes());\n tasks.push(this.retrievePrograms());\n tasks.push(this.retrieveAddressTypes());\n tasks.push(this.retrievePhoneNumberTypes());\n return forkJoin(tasks);\n }\n\n private retrievePersonTypes(): Observable<number> {\n return this.entityService.retrievePersonTypes().pipe(\n map(types => {\n this.personSubTypes = [];\n if (types && types.length) {\n types.forEach(type => {\n this.personSubTypes.push(type);\n });\n }\n return this.personSubTypes.length;\n }), catchError(err => {\n this.errorMessage = 'An initialization error occurred: ' + err;\n return EMPTY;\n }));\n }\n\n private retrievePrograms(): Observable<number> {\n return this.entityService.retrievePrograms().pipe(\n map(programs => {\n this.programs = [];\n if (programs && programs.length) {\n programs.forEach(program => {\n this.programs.push(program);\n });\n }\n return this.programs.length;\n }), catchError(err => {\n this.errorMessage = 'An initialization error occurred: ' + err;\n return EMPTY;\n }));\n }\n\n private retrieveAddressTypes(): Observable<number> {\n return this.entityService.retrieveAddressTypes().pipe(\n map(types => {\n this.addressTypes = [];\n if (types && types.length) {\n types.forEach(type => {\n this.addressTypes.push(type);\n });\n }\n return this.addressTypes.length;\n }), catchError(err => {\n this.errorMessage = 'An initialization error occurred: ' + err;\n return EMPTY;\n }));\n }\n\n private retrievePhoneNumberTypes(): Observable<number> {\n return this.entityService.retrieveTelephoneTypes().pipe(\n map(types => {\n this.phoneNumberTypes = [];\n if (types && types.length) {\n types.forEach(type => {\n this.phoneNumberTypes.push(type);\n });\n }\n return this.phoneNumberTypes.length;\n }), catchError(err => {\n this.errorMessage = 'An initialization error occurred: ' + err;\n return EMPTY;\n }));\n }\n\n private createForm() {\n this.modalFormGroup = this.fb.group({\n personType: ['RVPER', [Validators.required]],\n program: [null, [Validators.required]],\n contact: this.fb.group({ \n firstName: ['', [Validators.required, Validators.maxLength(50)]],\n middleName: [''],\n lastName: ['', [Validators.required, Validators.maxLength(50)]],\n phoneNumber: [''],\n faxNumber: ['', []],\n emailAddress: ['', [Validators.email, Validators.maxLength(254)]]\n }),\n addressType: ['BILLI', [Validators.required]],\n address: this.fb.group(this.formService.buildAddressFormWithCountry({})),\n areaCode: '',\n phoneNumberType: ['OFFIC', [Validators.required]],\n phoneNumber: '',\n extension: ''\n });\n this.modalFormGroup.controls['address'].get('state')?.setValue(undefined);\n \n this.modalFormGroup.controls['address'].get('country')?.valueChanges.subscribe(country=>{\n \n if(country === 'USA'){\n this.modalFormGroup.controls['address'].get('state')?.setValidators([Validators.required]);\n this.modalFormGroup.controls['address'].get('state')?.updateValueAndValidity();\n this.modalFormGroup.controls['address'].get('postalCode')?.setValidators([Validators.required, Validators.pattern('[0-9]{5}')]);\n this.modalFormGroup.controls['address'].get('postalCode')?.updateValueAndValidity();\n this.modalFormGroup.controls['address'].get('foreignState')?.clearValidators();\n this.modalFormGroup.controls['address'].get('foreignState')?.updateValueAndValidity();\n this.modalFormGroup.controls['address'].get('foreignZip')?.clearValidators();\n this.modalFormGroup.controls['address'].get('foreignZip')?.updateValueAndValidity();\n } else {\n this.modalFormGroup.controls['address'].get('foreignState')?.setValidators([Validators.required]);\n this.modalFormGroup.controls['address'].get('foreignState')?.updateValueAndValidity();\n this.modalFormGroup.controls['address'].get('foreignZip')?.setValidators([Validators.required]);\n this.modalFormGroup.controls['address'].get('foreignZip')?.updateValueAndValidity();\n this.modalFormGroup.controls['address'].get('state')?.clearValidators();\n this.modalFormGroup.controls['address'].get('state')?.updateValueAndValidity();\n this.modalFormGroup.controls['address'].get('postalCode')?.clearValidators();\n this.modalFormGroup.controls['address'].get('postalCode')?.updateValueAndValidity();\n }\n \n })\n \n }\n\n private getFilterFromForm(): OEPAPersonFilter {\n let filter: OEPAPersonFilter = {\n firstName: this.modalFormGroup.get('contact')?.get('firstName')?.value,\n middleName: this.modalFormGroup.get('contact')?.get('middleName')?.value,\n lastName: this.modalFormGroup.get('contact')?.get('lastName')?.value,\n address: this.modalFormGroup.get('address')?.get('line1')?.value,\n city: this.modalFormGroup.get('address')?.get('city')?.value,\n state: this.modalFormGroup.get('address')?.get('country')?.value ==='USA' ? this.modalFormGroup.get('address')?.get('state')?.value:null,\n zipCode: this.modalFormGroup.get('address')?.get('country')?.value ==='USA' ? this.modalFormGroup.get('address')?.get('postalCode')?.value:this.modalFormGroup.get('address')?.get('foreignZip')?.value,\n foreignState:this.modalFormGroup.get('address')?.get('country')?.value !=='USA' ? this.modalFormGroup.get('address')?.get('foreignState')?.value:null,\n country:this.formService.getCountryCode(this.modalFormGroup.get('address')?.get('country')?.value),\n };\n return filter;\n }\n\n private getPersonFromForm(): OEPAPerson {\n let address: OEPAAddress = {\n addressType: {code: this.modalFormGroup.get('addressType')?.value },\n program: this.modalFormGroup.get('program')?.value,\n address: {\n type:this.modalFormGroup.get('address')?.get('country')?.value !=='USA'? 'FOREN':'' ,\n addressLine1: this.modalFormGroup.get('address')?.get('line1')?.value,\n addressLine2: this.modalFormGroup.get('address')?.get('line2')?.value,\n city: this.modalFormGroup.get('address')?.get('city')?.value,\n state: this.modalFormGroup.get('address')?.get('country')?.value ==='USA' ? this.modalFormGroup.get('address')?.get('state')?.value:null,\n zip: this.modalFormGroup.get('address')?.get('country')?.value ==='USA' ? this.modalFormGroup.get('address')?.get('postalCode')?.value:this.modalFormGroup.get('address')?.get('foreignZip')?.value,\n foreignState: this.modalFormGroup.get('address')?.get('country')?.value !=='USA' ? this.modalFormGroup.get('address')?.get('foreignState')?.value:null,\n country:this.formService.getCountryCode(this.modalFormGroup.get('address')?.get('country')?.value),\n }\n }\n let phone: OEPAPhoneNumber = {\n phoneNumberType: { code: this.modalFormGroup.get('phoneNumberType')?.value },\n program: this.modalFormGroup.get('program')?.value,\n phoneNumber: {\n phoneNumber: this.modalFormGroup.get('contact')?.get('phoneNumber')?.value\n }\n };\n let person: OEPAPerson = {\n personType: {code: this.modalFormGroup.get('personType')?.value },\n firstName: this.modalFormGroup.get('contact')?.get('firstName')?.value,\n middleName: this.modalFormGroup.get('contact')?.get('middleName')?.value,\n lastName: this.modalFormGroup.get('contact')?.get('lastName')?.value,\n addressList: [ address ],\n phoneNumberList: [phone ]\n };\n return person;\n }\n\n public savePersonAfterSearch() {\n this.errorMessage = '';\n this.tableData = [];\n this.buildTableHeader();\n let filter = this.getFilterFromForm();\n this.inProgressMsg = 'Checking to see if person exists...';\n this.entityService.matchPersons(filter).subscribe(matches => {\n this.inProgressMsg = '';\n if (!matches || matches.length === 0) {\n this.savePerson();\n } else {\n matches.forEach(person => {\n let row = this.convertPersonToTableRow(person);\n this.tableData.push(row);\n this.tableData = this.tableData.slice();\n });\n this.infoMessage = 'Please check the table above and select a person from the table if it is the same as the person you are attempting to create.';\n }\n }, err => {\n this.inProgressMsg = '';\n this.errorMessage = 'Failed searching for existing person: ' + err;\n });\n }\nprivate buildTableHeader(){\n this.tableHeader = {\n columns: [\n { title: '', id: 'select', sort: 'none', singleSelectColumn: true, className: 'select-col' },\n { title: 'ID', id: 'id', sort: 'none', filterable: true },\n { title: 'Type', id: 'type', sort: 'none', filterable: true },\n { title: 'Name', id: 'name', sort: 'none', filterable: true },\n { title: 'Address', id: 'address', sort: 'none', filterable: true },\n { title: 'City', id: 'city', sort: 'none', filterable: true },\n \n ]\n };\n \n if(this.modalFormGroup.get('address')?.get('country')?.value === 'USA'){\n this.tableHeader.columns.push({ title: 'State', id: 'state', sort: 'none', filterable: true })\n this.tableHeader.columns.push({ title: 'Zip Code', id: 'zipCode', sort: 'none', filterable: true })\n } else {\n this.tableHeader.columns.push({ title: 'foreignState', id: 'foreignState', sort: 'none', filterable: true })\n this.tableHeader.columns.push({ title: 'foreignZip', id: 'foreignZip', sort: 'none', filterable: true })\n this.tableHeader.columns.push({ title: 'country', id: 'country', sort: 'none', filterable: true });\n }\n \n\n }\n\n private convertPersonToTableRow(person: OEPAPerson): OepaTableRow {\n\n let cells:Array<any>= [\n { id: 'id', value: person.id },\n { id: 'type', value: person.personType ? person.personType.name : '' },\n { id: 'name', value: person.name },\n { id: 'address', value: person.addressList && person.addressList.length > 0 ? person.addressList[0].address?.addressLine1 : '' },\n { id: 'city', value: person.addressList && person.addressList.length > 0 ? person.addressList[0].address?.city : '' },\n ];\n if(this.modalFormGroup.get('address')?.get('country')?.value === 'USA'){\n cells.push({ id: 'state', value: person.addressList && person.addressList.length > 0 ? person.addressList[0].address?.state : '' })\n cells.push({ id: 'zipCode', value: person.addressList && person.addressList.length > 0 ? person.addressList[0].address?.zip : '' })\n } else {\n cells.push({ id: 'foreignState', value: person.addressList && person.addressList.length > 0 ? person.addressList[0].address?.foreignState : '' })\n cells.push({ id: 'foreignZip', value: person.addressList && person.addressList.length > 0 ? person.addressList[0].address?.foreignZip : '' })\n cells.push({ id: 'country', value: person.addressList && person.addressList.length > 0 ? this.formService.getCountryName(person.addressList[0].address?.country || '') : '' })\n }\n return {\n cells: cells,\n dataSource: person,\n selectable: true\n }\n }\n\n public savePerson() {\n this.errorMessage = '';\n this.inProgressMsg = 'Creating record for new person...';\n let person = this.getPersonFromForm();\n this.entityService.createPerson(person).subscribe(personID => {\n if (personID) {\n this.inProgressMsg = '';\n person.id = personID;\n this.onPersonCreated.emit(person);\n }\n }, err => {\n this.inProgressMsg = '';\n this.errorMessage = 'Failed creating person: ' + err;\n });\n }\n\n public onRowSelect(event: any) {\n this.selectedPerson = event[0].dataSource;\n }\n\n public saveSelectedPerson() {\n this.onPersonCreated.emit(this.selectedPerson);\n }\n \n public getModalFormGroup(name: string) : FormGroup {\n return this.modalFormGroup.controls[name] as FormGroup;\n }\n\n public getModalFormGroupInvalidClass(name: string) : any {\n return {\n 'is-invalid' : this.modalFormGroup.controls[name].invalid\n };\n }\n\n public getModalFormGroupHasError(name: string, field: string) : boolean {\n return this.modalFormGroup.controls[name].hasError(field);\n }\n}\n","<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">Create Person</h4>\n <button type=\"button\" class=\"btn-close float-end\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n \n </button>\n</div>\n<div class=\"modal-body\">\n <div *ngIf=\"!modalFormGroup\">\n <div class=\"text-center\">Initializing...</div>\n <div class=\"text-center\"><span class=\"spinner-border text-primary\" role=\"status\"></span></div>\n </div>\n <form *ngIf=\"modalFormGroup\" [formGroup]=\"modalFormGroup\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label>Person Type</label>\n <select id=\"personTypeSelect\" formControlName=\"personType\" class=\"form-select\"\n [ngClass]=\"getModalFormGroupInvalidClass('personType')\">\n <option *ngFor=\"let t of personSubTypes\" [ngValue]=\"t.code\">{{t.name}}</option>\n </select>\n <small class=\"invalid-feedback\" *ngIf=\"getModalFormGroupHasError('personType','required')\">Person Type is required</small>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label>Program</label>\n <select id=\"programSelect\" formControlName=\"program\" class=\"form-select\"\n [ngClass]=\"getModalFormGroupInvalidClass('program')\">\n <option *ngFor=\"let t of programs\" [ngValue]=\"t\">{{t.name}}</option>\n </select>\n <small class=\"invalid-feedback\" *ngIf=\"getModalFormGroupHasError('program','required')\">Program is required</small>\n </div>\n </div>\n </div>\n <oepa-contact [group]=\"getModalFormGroup('contact')\"\n [showMiddleName]=\"true\" [noFax]=\"true\" [noEmail]=\"true\" [showValidation]=\"true\"></oepa-contact>\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label>Phone Number Type</label>\n <select id=\"phoneNumberTypeSelect\" formControlName=\"phoneNumberType\" class=\"form-select\"\n [ngClass]=\"getModalFormGroupInvalidClass('phoneNumberType')\">\n <option *ngFor=\"let t of phoneNumberTypes\" [ngValue]=\"t.code\">{{t.name}}</option>\n </select>\n <small class=\"invalid-feedback\" *ngIf=\"getModalFormGroupHasError('phoneNumberType','required')\">Phone Number Type is required</small>\n </div>\n </div>\n </div>\n <oepa-address [group]=\"getModalFormGroup('address')\" [showValidation]=\"true\"></oepa-address>\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label>Address Type</label>\n <select id=\"addressTypeSelect\" formControlName=\"addressType\" class=\"form-select\"\n [ngClass]=\"getModalFormGroupInvalidClass('addressType')\">\n <option *ngFor=\"let t of addressTypes\" [ngValue]=\"t.code\">{{t.name}}</option>\n </select>\n <small class=\"invalid-feedback\" *ngIf=\"getModalFormGroupHasError('addressType','required')\">Address Type is required</small>\n </div>\n </div>\n </div>\n </form>\n <div *ngIf=\"tableData && tableData.length > 0\" class=\"card\">\n <div class=\"card-header\">\n <b>Matching Person List&nbsp;</b><span class=\"badge bg-secondary\">{{tableData.length}}</span>\n </div>\n <div class=\"card-body\">\n <oepa-table tableId=\"personSearchTable\" [config]=\"tableConfig\" [data]=\"tableData\" [header]=\"tableHeader\" (rowSelected)=\"onRowSelect($event)\">\n </oepa-table>\n </div>\n </div>\n</div>\n<div class=\"modal-footer d-block\">\n <div *ngIf=\"inProgressMsg\"> \n <div class=\"alert alert-info\">\n {{inProgressMsg}}\n </div>\n </div>\n <div *ngIf=\"infoMessage && !inProgressMsg\">\n <div class=\"alert alert-info\">\n {{infoMessage}}\n </div>\n </div>\n <div *ngIf=\"errorMessage\">\n <div class=\"alert alert-danger\">\n {{errorMessage}}\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-12 text-center\">\n <span *ngIf=\"inProgressMsg\"><span class=\"spinner-border text-primary\" role=\"status\"></span></span>\n <button *ngIf=\"(!tableData || tableData.length === 0) && !inProgressMsg\" type=\"button\" class=\"btn btn-primary mr-2\"\n id=\"SavePersonBtn\"\n [disabled]=\"!modalFormGroup || modalFormGroup.invalid\"\n (click)=\"savePersonAfterSearch()\">Save</button>\n <button *ngIf=\"tableData && tableData.length > 0 && !selectedPerson && !inProgressMsg\" type=\"button\" class=\"btn btn-primary mr-2\"\n id=\"SavePersonWithoutSearchBtn\"\n [disabled]=\"modalFormGroup?.invalid\"\n (click)=\"savePerson()\">No Match, Save New Person</button>\n <button *ngIf=\"tableData && tableData.length > 0 && selectedPerson && !inProgressMsg\" type=\"button\" class=\"btn btn-primary mr-2\"\n id=\"SaveSelectedPersonBtn\"\n [disabled]=\"modalFormGroup?.invalid\"\n (click)=\"saveSelectedPerson()\">Use Selected Person</button>\n <button id=\"CancelPersonBtn\" type=\"button\" class=\"btn btn-primary\"\n (click)=\"bsModalRef.hide()\">Cancel</button>\n </div>\n </div>\n</div>","import { Component, OnInit, Output, EventEmitter } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { OEPAPerson, OEPAProgram } from '@ohioepa/oepa-ebiz-lib';\nimport { EntityService } from '../entity.service';\nimport { OEPAPersonFilter } from '@ohioepa/oepa-ebiz-lib';\nimport { PersonCreateModalComponent } from '../person-create-modal/person-create-modal.component';\nimport { EMPTY, Observable, forkJoin } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { OEPAReference } from '@ohioepa/oepa-common-lib';\nimport { OepaTableRow } from '../../table/oepa-table-row';\nimport { OepaTableHeader } from '../../table/oepa-table-header';\nimport { OepaTableConfig } from '../../table/oepa-table-config';\nimport { OepaFormsService } from '../../oepa-forms.service';\n\n@Component({\n selector: 'oepa-person-search-modal',\n templateUrl: './person-search-modal.component.html',\n styleUrls: ['./person-search-modal.component.css']\n})\nexport class PersonSearchModalComponent implements OnInit {\n public modalFormGroup!: FormGroup;\n public errorMessage: string = '';\n public inProgressMsg: string = '';\n public filter!: OEPAPersonFilter;\n public selectedPerson: OEPAPerson | undefined;\n public personTypes: OEPAReference[] = [];\n public programs: OEPAProgram[] = [];\n public addressTypes: OEPAReference[] = [];\n public phoneNumberTypes: OEPAReference[] = [];\n public openSearchCriteria = true;\n public allowCreateNew = false;\n public initializing = false;\n\n public tableData: Array<OepaTableRow> = [];\n public tableHeader!: OepaTableHeader;\n\npublic tableConfig: OepaTableConfig = {\n rowsPerPage: 5,\n classNames: ['table-striped', 'table-bordered', 'table-sm']\n};\n\n @Output() onPersonSelected: EventEmitter<OEPAPerson> = new EventEmitter<OEPAPerson>();\n\n constructor(private fb: FormBuilder, \n public bsModalRef: BsModalRef,\n private modalService: BsModalService,\n private formService: OepaFormsService,\n private entityService: EntityService) { \n\n }\n\n ngOnInit() {\n this.initializing = true;\n this.loadReferenceData().subscribe(results => {\n this.createForm();\n this.initializing = false;\n });\n } \n \n private loadReferenceData(): Observable<any> {\n let tasks = [];\n tasks.push(this.retrievePersonTypes());\n tasks.push(this.retrievePrograms());\n tasks.push(this.retrieveAddressTypes());\n tasks.push(this.retrievePhoneNumberTypes());\n return forkJoin(tasks);\n }\n\n private retrievePersonTypes(): Observable<number> {\n return this.entityService.retrievePersonTypes().pipe(map(subTypes => {\n this.personTypes = subTypes;\n return this.personTypes ? this.personTypes.length : 0;\n }), catchError(err => { \n this.errorMessage = 'An initialization error occurred: ' + err;\n return EMPTY;\n }));\n }\n \n\n private retrievePrograms(): Observable<number> {\n return this.entityService.retrievePrograms().pipe(\n map(programs => {\n this.programs = [];\n if (programs && programs.length) {\n programs.forEach(program => {\n this.programs.push(program);\n });\n }\n return this.programs.length;\n }), catchError(err => { \n this.errorMessage = 'An initialization error occurred: ' + err;\n return EMPTY;\n }));\n }\n\n private retrieveAddressTypes(): Observable<number> {\n return this.entityService.retrieveAddressTypes().pipe(\n map(types => {\n this.addressTypes = [];\n if (types && types.length) {\n types.forEach(type => {\n this.addressTypes.push(type);\n });\n }\n return this.addressTypes.length;\n }), catchError(err => { \n this.errorMessage = 'An initialization error occurred: ' + err;\n return EMPTY;\n }));\n }\n\n private retrievePhoneNumberTypes(): Observable<number> {\n return this.entityService.retrieveTelephoneTypes().pipe(\n map(types => {\n this.phoneNumberTypes = [];\n if (types && types.length) {\n types.forEach(type => {\n this.phoneNumberTypes.push(type);\n });\n }\n return this.phoneNumberTypes.length;\n }), catchError(err => { \n this.errorMessage = 'An initialization error occurred: ' + err;\n return EMPTY;\n }));\n }\n private createForm() {\n this.modalFormGroup = this.fb.group({\n id: '',\n programID: '',\n secondaryID: '',\n personType: null,\n contact: this.fb.group(this.formService.buildContact({})),\n addressType: '', \n address: this.fb.group(this.formService.buildAddressFormWithCountry({})),\n phoneNumberType: '',\n areaCode: '',\n phoneNumber: '',\n extension: ''\n });\n this.modalFormGroup.controls['address'].get('state')?.setValue(undefined);\n }\n\n private getFilterFromForm(): OEPAPersonFilter {\n let filter: OEPAPersonFilter = {\n id: this.modalFormGroup.get('id')?.value,\n programID: this.modalFormGroup.get('programID')?.value,\n personSubType: this.modalFormGroup.get('personType')?.value,\n secondaryID: this.modalFormGroup.get('secondaryID')?.value,\n firstName: this.modalFormGroup.get('contact')?.get('firstName')?.value,\n middleName: this.modalFormGroup.get('contact')?.get('middleName')?.value,\n lastName: this.modalFormGroup.get('contact')?.get('lastName')?.value,\n addressTypeCode: this.modalFormGroup.get('addressType')?.value,\n address: this.modalFormGroup.get('address')?.get('line1')?.value,\n city: this.modalFormGroup.get('address')?.get('city')?.value,\n state: this.modalFormGroup.get('address')?.get('country')?.value === 'USA' ? this.modalFormGroup.get('address')?.get('state')?.value:null,\n zipCode: this.modalFormGroup.get('address')?.get('country')?.value ==='USA' ? this.modalFormGroup.get('address')?.get('postalCode')?.value :this.modalFormGroup.get('address')?.get('foreignZip')?.value,\n foreignState: this.modalFormGroup.get('address')?.get('country')?.value !== 'USA' ? this.modalFormGroup.get('address')?.get('foreignState')?.value:null,\n country: this.formService.getCountryCode(this.modalFormGroup.get('address')?.get('country')?.value),\n phoneTypeCode: this.modalFormGroup.get('phoneNumberType')?.value,\n phoneAreaCode: this.modalFormGroup.get('areaCode')?.value,\n phoneNumber: this.modalFormGroup.get('phoneNumber')?.value,\n phoneExtension: this.modalFormGroup.get('extension')?.value,\n };\n return filter;\n }\n\n \n\n private filterIsEmpty(filter: OEPAPersonFilter): boolean {\n let empty = true;\n if (filter.id && filter.id.length > 0) {\n empty = false;\n }\n if (filter.programID) {\n empty = false;\n }\n if (filter.personSubType) {\n empty = false;\n }\n if (filter.secondaryID && filter.secondaryID.length > 0) {\n empty = false;\n }\n if (filter.firstName && filter.firstName.length > 0) {\n empty = false;\n }\n if (filter.middleName && filter.middleName.length > 0) {\n empty = false;\n }\n if (filter.lastName && filter.lastName.length > 0) {\n empty = false;\n }\n if (filter.addressTypeCode) {\n empty = false;\n }\n if (filter.address && filter.address.length > 0) {\n empty = false;\n }\n if (filter.city && filter.city.length > 0) {\n empty = false;\n }\n if (filter.zipCode && filter.zipCode.length > 0) {\n empty = false;\n }\n if (filter.country && filter.country.length > 0) {\n empty = false;\n }\n \n if (filter.phoneTypeCode) {\n empty = false;\n }\n if (filter.phoneAreaCode && filter.phoneAreaCode.length > 0) {\n empty = false;\n }\n if (filter.phoneNumber && filter.phoneNumber.length > 0) {\n empty = false;\n }\n if (filter.phoneExtension && filter.phoneExtension.length > 0) {\n empty = false;\n }\n return empty;\n }\n\n public submitSearch() {\n this.errorMessage = '';\n this.allowCreateNew = false;\n let filter = this.getFilterFromForm();\n if (this.filterIsEmpty(filter)) {\n this.errorMessage = 'Please specify search criteria';\n return;\n }\n this.inProgressMsg = 'Searching...';\n this.tableData = [];\n this.buildTableHeader();\n this.entityService.searchPersons(filter).subscribe(persons => {\n this.inProgressMsg = '';\n if (persons && persons.length > 0) {\n this.openSearchCriteria = false;\n persons.forEach(person => {\n let row = this.convertPersonToTableRow(person);\n this.tableData.push(row);\n this.tableData = this.tableData.slice();\n });\n } else {\n this.openSearchCriteria = true;\n this.errorMessage = 'No persons found matching search criteria';\n }\n this.allowCreateNew = true;\n }, err => {\n this.inProgressMsg = '';\n this.errorMessage = 'Search Failed: ' + err;\n });\n }\nprivate buildTableHeader(){\n this.tableHeader = {\n columns: [\n { title: '', id: 'select', sort: 'none', singleSelectColumn: true, className: 'select-col' },\n { title: 'ID', id: 'id', sort: 'none', filterable: true },\n { title: 'Type', id: 'type', sort: 'none', filterable: true },\n { title: 'Name', id: 'name', sort: 'none', filterable: true },\n { title: 'Address', id: 'address', sort: 'none', filterable: true },\n { title: 'City', id: 'city', sort: 'none', filterable: true },\n \n ]\n };\n \n if(this.modalFormGroup.get('address')?.get('country')?.value === 'USA'){\n this.tableHeader.columns.push({ title: 'State', id: 'state', sort: 'none', filterable: true })\n this.tableHeader.columns.push({ title: 'Zip Code', id: 'zipCode', sort: 'none', filterable: true })\n } else {\n this.tableHeader.columns.push({ title: 'foreignState', id: 'foreignState', sort: 'none', filterable: true })\n this.tableHeader.columns.push({ title: 'foreignZip', id: 'foreignZip', sort: 'none', filterable: true })\n this.tableHeader.columns.push({ title: 'country', id: 'country', sort: 'none', filterable: true });\n }\n \n\n }\n\n private convertPersonToTableRow(person: OEPAPerson): OepaTableRow {\n \n let cells:Array<any>= [\n { id: 'id', value: person.id },\n { id: 'type', value: person.personType ? person.personType.name : '' },\n { id: 'name', value: person.name },\n { id: 'address', value: person.addressList && person.addressList.length > 0 ? person.addressList[0].address?.addressLine1 : '' },\n { id: 'city', value: person.addressList && person.addressList.length > 0 ? person.addressList[0].address?.city : '' },\n ];\n if(this.modalFormGroup.get('address')?.get('country')?.value === 'USA'){\n cells.push({ id: 'state', value: person.addressList && person.addressList.length > 0 ? person.addressList[0].address?.state : '' })\n cells.push({ id: 'zipCode', value: person.addressList && person.addressList.length > 0 ? person.addressList[0].address?.zip : '' })\n } else {\n cells.push({ id: 'foreignState', value: person.addressList && person.addressList.length > 0 ? person.addressList[0].address?.foreignState : '' })\n cells.push({ id: 'foreignZip', value: person.addressList && person.addressList.length > 0 ? person.addressList[0].address?.foreignZip : '' })\n cells.push({ id: 'country', value: person.addressList && person.addressList.length > 0 ? this.formService.getCountryName(person.addressList[0].address?.country || '') : '' })\n }\n return {\n cells: cells,\n dataSource: person,\n selectable: true\n }\n }\n\n public resetSearch() {\n this.openSearchCriteria = true;\n this.modalFormGroup.reset();\n this.modalFormGroup.controls['address'].get('country')?.setValue('USA');\n this.tableData = [];\n }\n\n public onRowSelect(event: any) {\n this.selectedPerson = event[0].dataSource;\n }\n\n public save() {\n this.onPersonSelected.emit(this.selectedPerson);\n }\n\n public createNewPerson() {\n let modal = this.modalService.show(PersonCreateModalComponent, { class: 'modal-xl', ignoreBackdropClick: true });\n (<PersonCreateModalComponent>modal.content).onPersonCreated.subscribe((person: OEPAPerson) => {\n modal.hide();\n this.onPersonSelected.emit(person);\n });\n }\n \n public getModalFormGroup(name: string) : FormGroup {\n return this.modalFormGroup.controls[name] as FormGroup;\n }\n}\n","<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">Advanced Person Search</h4>\n <button type=\"button\" class=\"btn-close float-end\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n \n </button>\n</div>\n<div class=\"modal-body\">\n <accordion>\n <accordion-group panelClass=\"panel-info\" #searchGroup [isOpen]=\"openSearchCriteria\">\n <div accordion-heading>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <i class=\"float-xs-right bi\" id=\"personSearchCriteria\" name=\"personSearchCriteria\" \n [ngClass]=\"{'bi-chevron-down': searchGroup?.isOpen, 'bi-chevron-right': !searchGroup?.isOpen}\"></i>\n <b>Person Search Criteria</b>\n </div>\n </div>\n </div>\n <div *ngIf=\"initializing\">\n <span class=\"spinner-border text-primary\" role=\"status\"></span>\n Initializing...\n </div>\n <form *ngIf=\"!initializing\" [formGroup]=\"modalFormGroup\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\"> \n <label>Program</label>\n <select id=\"programSelect\" formControlName=\"programID\" class=\"form-select\">\n <option *ngFor=\"let t of programs\" [ngValue]=\"t.id\">{{t.name}}</option>\n </select>\n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label>Person Type</label>\n <select id=\"subTypeSelect\" formControlName=\"personType\" class=\"form-select\">\n <option *ngFor=\"let t of personTypes\" [ngValue]=\"t\">{{t.name}}</option>\n </select>\n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label>Person ID</label>\n <input type=\"search\" mask=\"999999999\" class=\"form-control\" id=\"personIDInput\" formControlName=\"id\">\n </div>\n </div>\n </div>\n <oepa-contact [group]=\"getModalFormGroup('contact')\" [isSearch]=\"true\"\n [showMiddleName]=\"true\" [noPhone]=\"true\" [noFax]=\"true\" [noEmail]=\"true\"></oepa-contact>\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label>Secondary ID</label>\n <input type=\"search\" class=\"form-control\" id=\"secondaryIDInput\" formControlName=\"secondaryID\">\n </div>\n </div>\n </div>\n \n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label>Address Type</label>\n <select id=\"addressTypeSelect\" formControlName=\"addressType\" class=\"form-select\">\n <option *ngFor=\"let t of addressTypes\" [ngValue]=\"t.code\">{{t.name}}</option>\n </select>\n </div>\n </div>\n </div>\n <oepa-address [group]=\"getModalFormGroup('address')\" [isSearch]=\"true\"\n addressOneLabel=\"Address\" [hideLine2]=\"true\"></oepa-address>\n <div class=\"row\">\n <div class=\"col-md-4\">\n <div class=\"form-group\">\n <label>Phone Number Type</label>\n <select id=\"phoneNumberTypeSelect\" formControlName=\"phoneNumberType\" class=\"form-select\">\n <option *ngFor=\"let t of phoneNumberTypes\" [ngValue]=\"t.code\">{{t.name}}</option>\n </select>\n </div>\n </div>\n <div class=\"col-md-2\">\n <div class=\"form-group\">\n <label>Area Code</label>\n <input type=\"search\" mask=\"999\" class=\"form-control\" id=\"areaCodeInput\" formControlName=\"areaCode\">\n </div>\n </div>\n <div class=\"col-md-4\">\n <div class=\"form-group\">\n <label>Phone Number</label>\n <input type=\"search\" mask=\"999-9999\" class=\"form-control\" id=\"phoneNumberInput\" formControlName=\"phoneNumber\">\n </div>\n </div>\n <div class=\"col-md-2\">\n <div class=\"form-group\">\n <label>Extension</label>\n <input type=\"search\" mask=\"9999\" class=\"form-control\" id=\"extensionInput\" formControlName=\"extension\">\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-12 text-center\">\n <span *ngIf=\"inProgressMsg\"><span class=\"spinner-border text-primary\" role=\"status\"></span></span>\n <button *ngIf=\"!inProgressMsg\" type=\"submit\" class=\"btn btn-primary mr-2\" id=\"submitSearchBtn\" (click)=\"submitSearch()\">Search</button>\n <button id=\"resetSearchBtn\" type=\"button\" class=\"btn btn-primary\" (click)=\"resetSearch()\">Reset</button>\n </div>\n </div>\n </form>\n </accordion-group>\n </accordion>\n <div *ngIf=\"tableData && tableData.length > 0\" class=\"card\">\n <div class=\"card-header\">\n <b>Person List&nbsp;</b><span class=\"badge bg-secondary\">{{tableData.length}}</span>\n </div>\n <div class=\"card-body\">\n <oepa-table tableId=\"personSearchTable\" [config]=\"tableConfig\" [data]=\"tableData\" [header]=\"tableHeader\" (rowSelected)=\"onRowSelect($event)\">\n </oepa-table>\n </div>\n </div>\n</div>\n<div class=\"modal-footer d-block\">\n <div *ngIf=\"errorMessage\">\n <div class=\"alert alert-danger\">\n {{errorMessage}}\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-12 text-center\">\n <button *ngIf=\"tableData && tableData.length > 0\" type=\"button\" class=\"btn btn-primary mr-2\"\n id=\"SavePersonBtn\"\n [disabled]=\"!selectedPerson\"\n (click)=\"save()\">Select</button>\n <button *ngIf=\"allowCreateNew\" type=\"button\" class=\"btn btn-primary mr-2\"\n id=\"CreatePersonButton\"\n (click)=\"createNewPerson()\">Create New Person</button>\n <button id=\"CancelPaymentBtn\" type=\"button\" class=\"btn btn-primary\"\n (click)=\"bsModalRef.hide()\">Cancel</button>\n </div>\n </div>\n</div>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { TypeaheadMatch } from 'ngx-bootstrap/typeahead';\nimport { FormGroup } from '@angular/forms';\nimport { EMPTY, Observable } from 'rxjs';\nimport { mergeMap, map, catchError } from 'rxjs/operators';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { OepaComponentIdService } from '@ohioepa/oepa-common-lib';\nimport { EntityService } from '../entity.service';\nimport { OEPAPerson } from '@ohioepa/oepa-ebiz-lib';\nimport { OEPAPersonFilter } from '@ohioepa/oepa-ebiz-lib';\nimport { PersonSearchModalComponent } from '../person-search-modal/person-search-modal.component';\n\n@Component({\n selector: 'oepa-person-search-input',\n templateUrl: './person-search-input.component.html',\n styleUrls: ['./person-search-input.component.css']\n})\nexport class PersonSearchInputComponent implements OnInit {\n nameSearch = '';\n nameSource: Observable<OEPAPerson[]>;\n componentId: string = '';\n errorMessage: string = '';\n searching: boolean = false;\n\n @Input('group') group!: FormGroup;\n @Input('personID') personID: string = '';\n @Input('field') field: string = '';\n @Input('title') title: string = 'Person';\n @Input('errorMessageAddendum') errorMessageAddendum = '';\n @Input('rowLayout') rowLayout = false;\n\n @Output('personSelected') personSelected: EventEmitter<OEPAPerson> = new EventEmitter<OEPAPerson>();\n\n constructor(private idService: OepaComponentIdService,\n private modalService: BsModalService,\n private entityService: EntityService) { \n this.nameSource = new Observable((observer) => {\n observer.next(this.group.get(this.field)?.value);\n }).pipe(mergeMap((token: any) => this.searchPersons(token)));\n }\n\n ngOnInit() {\n this.componentId = this.idService.getComponentId(this.group);\n if (this.personID) {\n const filter: OEPAPersonFilter = {\n id: this.personID\n }\n this.searching = true;\n this.entityService.searchPersons(filter).subscribe({\n next: personList => {\n if (personList && personList.length == 1) {\n this.loadPersonInForm(personList[0]);\n } else {\n this.errorMessage = 'An initialization error occurred: Zero or multiple persons wih id: ' + this.personID;\n }\n this.searching = false;\n }, error: err => {\n this.searching = false;\n this.errorMessage = 'An initialization error occurred: ' + err;\n }});\n }\n this.group.get(this.field)?.valueChanges.subscribe(value => {\n if (!value || value === '') {\n this.personSelected.emit(undefined);\n }\n });\n }\n\n public onPersonSelect(e: TypeaheadMatch) {\n if (e.item) {\n this.loadPersonInForm(e.item);\n this.personSelected.emit(e.item);\n }\n }\n\n private loadPersonInForm(person: OEPAPerson) {\n let data: any = {};\n data[this.field] = (person.firstName || '') + ' ' + (person.middleName || '') + ' ' + person.lastName + ' (' + person.id + ')';\n if (person) {\n this.group.patchValue(data);\n }\n }\n\n private searchPersons(token: any): Observable<OEPAPerson[]> {\n this.errorMessage = '';\n this.searching = true;\n const filter: OEPAPersonFilter = {\n name: isNaN(token) ? token : undefined,\n id: isNaN(token) ? undefined : token\n }\n return this.entityService.searchPersons(filter).pipe(\n map((persons) => {\n this.searching = false;\n return persons;\n }), catchError(err => {\n this.searching = false;\n this.errorMessage = 'Search failed: ' + err;\n return EMPTY;\n })\n );\n }\n\n public advancedSearch() {\n let modal = this.modalService.show(PersonSearchModalComponent, {class: 'modal-xl',ignoreBackdropClick: true});\n (<PersonSearchModalComponent>modal.content).onPersonSelected.subscribe(person => {\n this.loadPersonInForm(person);\n this.personSelected.emit(person);\n modal.hide();\n });\n }\n\n}\n","<div [formGroup]=\"group\" class=\"form-group\" [ngClass]=\"{'row text-right': rowLayout}\">\n <ng-template #personTemplate let-model=\"item\" let-index=\"index\">\n <h5>{{ (model.firstName || '') + ' ' + (model.middleName || '') + ' ' + model.lastName +\n (model.addressList && model.addressList[0] ? (' - ' + model.addressList[0].address.addressLine1 + ', ' +\n model.addressList[0].address.city\n + model.addressList[0].address.state) : '') + ' (' + model.id + ')' }}</h5>\n </ng-template>\n <label [ngClass]=\"{'col-sm-4 col-form-label': rowLayout}\">\n {{title}}\n <span *ngIf=\"searching\"><span class=\"spinner-border text-primary\" role=\"status\"></span></span>\n <a href=\"javascript:void(0)\" (click)=\"advancedSearch()\">Advanced Search</a>\n </label>\n <div [ngClass]=\"{'col-sm-8': rowLayout}\">\n <input class=\"form-control\" type=\"search\"\n [ngClass]=\"{'is-invalid':group.controls[field].status === 'INVALID', 'col-sm-8': rowLayout}\"\n [formControlName]=\"field\" [typeahead]=\"nameSource\" [typeaheadScrollable]=\"true\"\n (typeaheadOnSelect)=\"onPersonSelect($event)\" [id]=\"componentId + '_PersonSearch'\"\n [typeaheadItemTemplate]=\"personTemplate\" [typeaheadMinLength]=\"3\" placeholder=\"Search Person\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls[field]?.hasError('required')\">{{title}} is required\n {{errorMessageAddendum}}</small>\n </div>\n</div>\n<div *ngIf=\"errorMessage\" class=\"alert alert-danger\">\n {{errorMessage}}\n</div>","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'oepa-place-create-modal',\n templateUrl: './place-create-modal.component.html',\n styleUrls: ['./place-create-modal.component.css']\n})\nexport class PlaceCreateModalComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","<p>place-create-modal works!</p>\n","import { Component, OnInit, Output, EventEmitter } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { OEPAPlace } from '@ohioepa/oepa-ebiz-lib';\nimport { EntityService } from '../entity.service';\nimport { OEPAEntityFilter } from '@ohioepa/oepa-ebiz-lib';\nimport { OepaTableRow } from '../../table/oepa-table-row';\nimport { OepaTableHeader } from '../../table/oepa-table-header';\nimport { OepaTableConfig } from '../../table/oepa-table-config';\nimport { OepaFormsService } from '../../oepa-forms.service';\n\n@Component({\n selector: 'oepa-place-search-modal',\n templateUrl: './place-search-modal.component.html',\n styleUrls: ['./place-search-modal.component.css']\n})\nexport class PlaceSearchModalComponent implements OnInit {\n public modalFormGroup!: FormGroup;\n public errorMessage: string = '';\n public inProgressMsg: string = '';\n public filter!: OEPAEntityFilter;\n public selectedPlace: OEPAPlace | undefined;\n public openSearchCriteria = true;\n\n public tableData: Array<OepaTableRow> = [];\n public tableHeader!: OepaTableHeader;\n public tableConfig: OepaTableConfig = {\n rowsPerPage: 5,\n classNames: ['table-striped', 'table-bordered', 'table-sm']\n};\n\n@Output() onPlaceSelected: EventEmitter<OEPAPlace> = new EventEmitter<OEPAPlace>();\n\n constructor(private fb: FormBuilder, public bsModalRef: BsModalRef,\n private formService: OepaFormsService,\n private entityService: EntityService) { \n\n }\n\n ngOnInit() {\n this.createForm();\n }\n \n private createForm() {\n this.modalFormGroup = this.fb.group({\n id: '',\n secondaryID: '',\n name: '',\n address: this.fb.group(this.formService.buildAddressFormWithCountry({ state: 'OH'})),\n areaCode: '',\n phoneNumber: '',\n extension: ''\n });\n this.modalFormGroup.controls['address'].get('state')?.setValue(undefined);\n }\n\n private getFilterFromForm(): OEPAEntityFilter {\n let filter: OEPAEntityFilter = {\n id: this.modalFormGroup.get('id')?.value,\n secondaryID: this.modalFormGroup.get('secondaryID')?.value,\n name: this.modalFormGroup.get('name')?.value,\n address: this.modalFormGroup.get('address')?.get('line1')?.value,\n city: this.modalFormGroup.get('address')?.get('city')?.value,\n state: this.modalFormGroup.get('address')?.get('state')?.value,\n zipCode: this.modalFormGroup.get('address')?.get('postalCode')?.value,\n foreignState: this.modalFormGroup.get('address')?.get('foreignState')?.value,\n country: this.formService.getCountryCode(this.modalFormGroup.get('address')?.get('country')?.value),\n phoneAreaCode: this.modalFormGroup.get('areaCode')?.value,\n phoneNumber: this.modalFormGroup.get('phoneNumber')?.value,\n phoneExtension: this.modalFormGroup.get('extension')?.value,\n };\n return filter;\n }\n\n private filterIsEmpty(filter: OEPAEntityFilter): boolean {\n let empty = true;\n if (filter.id && filter.id.length > 0) {\n empty = false;\n }\n if (filter.secondaryID && filter.secondaryID.length > 0) {\n empty = false;\n }\n if (filter.name && filter.name.length > 0) {\n empty = false;\n }\n if (filter.address && filter.address.length > 0) {\n empty = false;\n }\n if (filter.city && filter.city.length > 0) {\n empty = false;\n }\n if (filter.zipCode && filter.zipCode.length > 0) {\n empty = false;\n }\n if (filter.country && filter.country.length > 0) {\n empty = false;\n }\n \n if (filter.phoneAreaCode && filter.phoneAreaCode.length > 0) {\n empty = false;\n }\n if (filter.phoneNumber && filter.phoneNumber.length > 0) {\n empty = false;\n }\n if (filter.phoneExtension && filter.phoneExtension.length > 0) {\n empty = false;\n }\n return empty;\n }\n\n public submitSearch() {\n this.errorMessage = '';\n let filter = this.getFilterFromForm();\n if (this.filterIsEmpty(filter)) {\n this.errorMessage = 'Please specify search criteria';\n return;\n }\n this.inProgressMsg = 'Searching...';\n this.tableData = [];\n this.buildTableHeader();\n this.entityService.searchPlaces(filter).subscribe(places => {\n this.inProgressMsg = '';\n if (places && places.length > 0) {\n this.openSearchCriteria = false;\n places.forEach(place => {\n let row = this.convertPlaceToTableRow(place);\n this.tableData.push(row);\n this.tableData = this.tableData.slice();\n });\n } else {\n this.openSearchCriteria = true;\n this.errorMessage = 'No places found matching search criteria. Please use the Places application to create a new place.';\n }\n }, err => {\n this.inProgressMsg = '';\n this.errorMessage = 'Search Failed: ' + err;\n });\n }\nprivate buildTableHeader(){\n this.tableHeader = {\n columns: [\n { title: '', id: 'select', sort: 'none', singleSelectColumn: true, className: 'select-col' },\n { title: 'ID', id: 'id', sort: 'none', filterable: true },\n { title: 'Name', id: 'name', sort: 'none', filterable: true },\n { title: 'Secondary ID', id: 'secondaryID', sort: 'none', filterable: true },\n { title: 'Address', id: 'address', sort: 'none', filterable: true },\n { title: 'City', id: 'city', sort: 'none', filterable: true },\n \n ]\n };\n \n if(this.modalFormGroup.get('address')?.get('country')?.value === 'USA'){\n this.tableHeader.columns.push({ title: 'State', id: 'state', sort: 'none', filterable: true })\n this.tableHeader.columns.push({ title: 'Zip Code', id: 'zipCode', sort: 'none', filterable: true })\n } else {\n this.tableHeader.columns.push({ title: 'foreignState', id: 'foreignState', sort: 'none', filterable: true })\n this.tableHeader.columns.push({ title: 'foreignZip', id: 'foreignZip', sort: 'none', filterable: true })\n this.tableHeader.columns.push({ title: 'country', id: 'country', sort: 'none', filterable: true });\n }\n this.tableHeader.columns.push({ title: 'Phone', id: 'phone', sort: 'none', filterable: true });\n}\n private convertPlaceToTableRow(place: OEPAPlace): OepaTableRow {\n let secondaryIDs:string='';\n let secondaryIDDescList:Array<string>=[];\n if(place.secondaryIDList && place.secondaryIDList.length > 0){\n place.secondaryIDList.forEach(secondaryID=>{ \n const matchDesc = secondaryIDDescList.find((desc) => {\n return desc === secondaryID.description;\n });\n if(!matchDesc && secondaryID.endDate===null){\n secondaryIDDescList.push(secondaryID.description || '');\n secondaryIDs += secondaryID.description+', ';\n }\n \n })\n secondaryIDs = secondaryIDs.slice(0, secondaryIDs.length-2);\n }\n let cells:Array<any>= [\n { id: 'id', value: place.id },\n { id: 'name', value: place.name },\n { id: 'secondaryID', value: secondaryIDs },\n { id: 'address', value: place.addressList && place.addressList.length > 0 ? place.addressList[0].address?.addressLine1 : '' },\n { id: 'city', value: place.addressList && place.addressList.length > 0 ? place.addressList[0].address?.city : '' },\n \n \n ];\n if(this.modalFormGroup.get('address')?.get('country')?.value === 'USA'){\n cells.push({ id: 'state', value: place.addressList && place.addressList.length > 0 ? place.addressList[0].address?.state : '' })\n cells.push({ id: 'zipCode', value: place.addressList && place.addressList.length > 0 ? place.addressList[0].address?.zip : '' })\n } else {\n cells.push({ id: 'foreignState', value: place.addressList && place.addressList.length > 0 ? place.addressList[0].address?.foreignState : '' })\n cells.push({ id: 'foreignZip', value: place.addressList && place.addressList.length > 0 ? place.addressList[0].address?.foreignZip : '' })\n cells.push({ id: 'country', value: place.addressList && place.addressList.length > 0 ? this.formService.getCountryName(place.addressList[0].address?.country || '') : '' })\n }\n cells.push({ id: 'phone', value: place.phoneNumberList && place.phoneNumberList.length > 0 && place.phoneNumberList[0].phoneNumber ? place.phoneNumberList[0].phoneNumber.phoneNumber?.replace(/^(\\d{0,3})(\\d{0,3})(\\d{0,4})/, '($1) $2-$3') : '' })\n \n return {\n cells: cells,\n dataSource: place,\n selectable: true\n }\n }\n\n public resetSearch() {\n this.openSearchCriteria = true;\n this.modalFormGroup.reset();\n this.modalFormGroup.controls['address'].get('country')?.setValue('USA');\n this.tableData = [];\n }\n\n public onRowSelect(event: any) {\n this.selectedPlace = event[0].dataSource;\n }\n\n public save() {\n this.onPlaceSelected.emit(this.selectedPlace);\n this.bsModalRef.hide();\n }\n\n public getModalFormGroup(name: string) : FormGroup {\n return this.modalFormGroup.controls[name] as FormGroup;\n }\n}\n","<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">Advanced Place Search</h4>\n <button type=\"button\" class=\"btn-close float-end\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n \n </button>\n</div>\n<div class=\"modal-body\">\n <accordion>\n <accordion-group panelClass=\"panel-info\" #searchGroup [isOpen]=\"openSearchCriteria\">\n <div accordion-heading>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <i class=\"float-xs-right bi\" id=\"placeSearchCriteria\" name=\"placeSearchCriteria\" \n [ngClass]=\"{'bi-chevron-down': searchGroup?.isOpen, 'bi-chevron-right': !searchGroup?.isOpen}\"></i>\n <b>Place Search Criteria</b>\n </div>\n </div>\n </div>\n <form [formGroup]=\"modalFormGroup\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label>Place ID</label>\n <input type=\"search\" mask=\"999999999\" class=\"form-control\" id=\"placeIDInput\" formControlName=\"id\">\n </div>\n </div>\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label>Place Name</label>\n <input type=\"search\" class=\"form-control\" id=\"placeNameInput\" formControlName=\"name\">\n </div>\n </div>\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label>Secondary ID</label>\n <input type=\"search\" class=\"form-control\" id=\"secondaryIDInput\" formControlName=\"secondaryID\">\n </div>\n </div>\n </div>\n <oepa-address [group]=\"getModalFormGroup('address')\" [isSearch]=\"true\"\n addressOneLabel=\"Address\" [hideLine2]=\"true\"></oepa-address>\n \n <div class=\"row\">\n <div class=\"col-md-3\">\n <div class=\"form-group\">\n <label>Area Code</label>\n <input type=\"search\" mask=\"999\" class=\"form-control\" id=\"areaCodeInput\" formControlName=\"areaCode\">\n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label>Phone Number</label>\n <input type=\"search\" mask=\"999-9999\" class=\"form-control\" id=\"phoneNumberInput\" formControlName=\"phoneNumber\">\n </div>\n </div>\n <div class=\"col-md-3\">\n <div class=\"form-group\">\n <label>Extension</label>\n <input type=\"search\" mask=\"9999\" class=\"form-control\" id=\"extensionInput\" formControlName=\"extension\">\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-12 text-center\">\n <span *ngIf=\"inProgressMsg\"><span class=\"spinner-border text-primary\" role=\"status\"></span></span>\n <button *ngIf=\"!inProgressMsg\" type=\"submit\" class=\"btn btn-primary mr-2\" id=\"submitSearchBtn\" (click)=\"submitSearch()\">Search</button>\n <button id=\"resetSearchBtn\" type=\"button\" class=\"btn btn-primary\" (click)=\"resetSearch()\">Reset</button>\n </div>\n </div>\n </form>\n </accordion-group>\n </accordion>\n <div *ngIf=\"tableData && tableData.length > 0\" class=\"card\">\n <div class=\"card-header\">\n <b>Place List&nbsp;</b><span class=\"badge bg-secondary\">{{tableData.length}}</span>\n </div>\n <div class=\"card-body\">\n <oepa-table tableId=\"placeSearchTable\" [config]=\"tableConfig\" [data]=\"tableData\" [header]=\"tableHeader\" (rowSelected)=\"onRowSelect($event)\">\n </oepa-table>\n </div>\n </div>\n</div>\n<div class=\"modal-footer d-block\">\n <div *ngIf=\"errorMessage\">\n <div class=\"alert alert-danger\">\n {{errorMessage}}\n </div>\n </div>\n <div *ngIf=\"inProgressMsg\">\n <div class=\"alert alert-info\">\n {{inProgressMsg}}\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-12 text-center\">\n <button type=\"button\" class=\"btn btn-primary mr-2\"\n id=\"SavePlaceBtn\"\n [disabled]=\"!selectedPlace || inProgressMsg\"\n (click)=\"save()\">Save</button>\n <button id=\"CancelPaymentBtn\" type=\"button\" class=\"btn btn-primary\"\n (click)=\"bsModalRef.hide()\">Cancel</button>\n </div>\n </div>\n</div>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { TypeaheadMatch } from 'ngx-bootstrap/typeahead';\nimport { FormGroup } from '@angular/forms';\nimport { EMPTY, Observable } from 'rxjs';\nimport { catchError, mergeMap, map } from 'rxjs/operators';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { OepaComponentIdService } from '@ohioepa/oepa-common-lib';\nimport { EntityService } from '../entity.service';\nimport { OEPAPlace } from '@ohioepa/oepa-ebiz-lib';\nimport { OEPAEntityFilter } from '@ohioepa/oepa-ebiz-lib';\nimport { PlaceSearchModalComponent } from '../place-search-modal/place-search-modal.component';\n\n@Component({\n selector: 'oepa-place-search-input',\n templateUrl: './place-search-input.component.html',\n styleUrls: ['./place-search-input.component.css']\n})\nexport class PlaceSearchInputComponent implements OnInit {\n nameSearch = '';\n nameSource: Observable<OEPAPlace[]>;\n componentId: string = '';\n errorMessage: string = '';\n searching: boolean = false;\n\n @Input('group') group!: FormGroup;\n @Input('placeID') placeID: string = '';\n @Input('field') field: string = '';\n @Input('title') title: string = 'Place';\n @Input('errorMessageAddendum') errorMessageAddendum = '';\n @Input('rowLayout') rowLayout = false;\n\n @Output('placeSelected') placeSelected: EventEmitter<OEPAPlace> = new EventEmitter<OEPAPlace>();\n\n constructor(private idService: OepaComponentIdService,\n private modalService: BsModalService,\n private entityService: EntityService) {\n this.nameSource = new Observable((observer) => {\n observer.next(this.group.get(this.field)?.value);\n }).pipe(mergeMap((token: any) => this.searchPlaces(token)));\n }\n\n ngOnInit() {\n this.componentId = this.idService.getComponentId(this.group);\n if (this.placeID) {\n const filter: OEPAEntityFilter = {\n id: this.placeID\n }\n this.searching = true;\n this.entityService.searchPlaces(filter).subscribe(placeList => {\n if (placeList && placeList.length == 1) {\n this.loadPlaceInForm(placeList[0]);\n } else {\n this.errorMessage = 'An initialization error occurred: Zero or multiple places wih id: ' + this.placeID;\n }\n this.searching = false;\n }, err => {\n this.searching = false;\n this.errorMessage = 'An initialization error occurred: ' + err;\n });\n }\n this.group.get(this.field)?.valueChanges.subscribe(value => {\n if (!value || value === '') {\n this.placeSelected.emit(undefined);\n }\n });\n }\n \n public onPlaceSelect(e: TypeaheadMatch) {\n if (e.item) {\n this.loadPlaceInForm(e.item);\n this.placeSelected.emit(e.item);\n }\n }\n \n private loadPlaceInForm(place: OEPAPlace) {\n let data: any = {};\n data[this.field] = (place.name || '') + ' (' + place.id + ')';\n if (place) {\n this.group.patchValue(data);\n }\n }\n \n private searchPlaces(token: any): Observable<OEPAPlace[]> {\n this.errorMessage = '';\n this.searching = true;\n const filter: OEPAEntityFilter = {\n name: isNaN(token) ? token : undefined,\n id: isNaN(token) ? undefined : token\n }\n return this.entityService.searchPlaces(filter).pipe(\n map((places) => {\n this.searching = false;\n return places;\n }), catchError(err => {\n this.searching = false;\n this.errorMessage = 'An initialization error occurred: ' + err;\n return EMPTY;\n })\n );\n }\n \n public advancedSearch() {\n let modal = this.modalService.show(PlaceSearchModalComponent, {class: 'modal-xl',ignoreBackdropClick: true});\n (<PlaceSearchModalComponent>modal.content).onPlaceSelected.subscribe(place => {\n this.loadPlaceInForm(place);\n this.placeSelected.emit(place);\n });\n }\n\n}\n","<div [formGroup]=\"group\" class=\"form-group\" [ngClass]=\"{'row text-right': rowLayout}\">\n <ng-template #placeTemplate let-model=\"item\" let-index=\"index\">\n <h5>{{ (model.name || '') +\n (model.addressList && model.addressList[0] ? (' - ' + model.addressList[0].address.addressLine1 + ', ' +\n model.addressList[0].address.city\n + model.addressList[0].address.state) : '') + ' (' + model.id + ')' }}</h5>\n </ng-template>\n <label [ngClass]=\"{'col-sm-4 col-form-label': rowLayout}\">\n {{title}}\n <span *ngIf=\"searching\"><span class=\"spinner-border text-primary\" role=\"status\"></span></span>\n <a href=\"javascript:void(0)\" (click)=\"advancedSearch()\">Advanced Search</a>\n </label>\n <div [ngClass]=\"{'col-sm-8': rowLayout}\">\n <input class=\"form-control\" type=\"search\"\n [ngClass]=\"{'is-invalid':group.controls[field]?.status === 'INVALID', 'col-sm-8': rowLayout}\"\n [formControlName]=\"field\" [typeahead]=\"nameSource\" [typeaheadScrollable]=\"true\"\n (typeaheadOnSelect)=\"onPlaceSelect($event)\" [id]=\"componentId + '_PlaceSearch'\"\n [typeaheadItemTemplate]=\"placeTemplate\" [typeaheadMinLength]=\"3\" placeholder=\"Search Place\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls[field]?.hasError('required')\">{{title}} is required\n {{errorMessageAddendum}}</small>\n </div>\n</div>\n<div *ngIf=\"errorMessage\" class=\"alert alert-danger\">\n {{errorMessage}}\n</div>","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { OepaComponentIdService } from '@ohioepa/oepa-common-lib';\n\n@Component({\n selector: 'oepa-yes-no',\n templateUrl: './yes-no.component.html',\n styleUrls: ['./yes-no.component.css']\n})\nexport class YesNoComponent implements OnInit {\n public componentId = 'OepaYesNoComponent';\n\n /** The form group of which this component is a member. */\n @Input() group!: FormGroup;\n /** The name of this component's field within the form group */\n @Input() field: string = '';\n /** Form validation will be displayed when showValidation is true.*/\n @Input() public showValidation = false;\n @Input() disabled = false;\n\n constructor(private idService: OepaComponentIdService) {}\n\n ngOnInit() {\n if (this.group) {\n this.componentId = this.idService.getComponentId(this.group);\n this.componentId += (this.componentId.length > 0 ? '_' : '') + this.field;\n } else {\n console.log('OOPS No group yet');\n }\n }\n\n}\n","<div [formGroup]=\"group\">\n <div class=\"btn-group\" style=\"background-color: #e9f0f5;\" btnRadioGroup [formControlName]=\"field\" [ngClass]=\"{'is-invalid':showValidation && group.controls[field].status === 'INVALID'}\">\n <label class=\"btn\" [ngClass]=\"{'btn-primary': group.controls[field].value === 'yes'}\" [class.active]=\"group.controls[field].value === 'yes'\" \n btnRadio=\"yes\" [uncheckable]=\"true\" [id]=\"componentId+'_YesBtn'\" [class.disabled]=\"group.disabled || disabled\" [disabled]=\"group.disabled || disabled\">Yes</label>\n <label class=\"btn\" [ngClass]=\"{'btn-primary': group.controls[field].value === 'no'}\" [class.active]=\"group.controls[field].value === 'no'\" \n btnRadio=\"no\" [uncheckable]=\"true\" [id]=\"componentId+'_NoBtn'\" [class.disabled]=\"group.disabled || disabled\" [disabled]=\"group.disabled || disabled\">No</label>\n </div>\n </div>\n <small class=\"invalid-feedback d-block\" *ngIf=\"showValidation && group.controls[field].status === 'INVALID' && !group.controls[field].hasError('answeredYes')\">Response is required</small>","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { OepaComponentIdService } from '@ohioepa/oepa-common-lib';\n\n@Component({\n selector: 'oepa-yes-no-boolean',\n templateUrl: './yes-no.component.html',\n styleUrls: ['./yes-no.component.css']\n})\nexport class YesNoBooleanComponent implements OnInit {\n public componentId = 'OepaYesNoComponentBoolean';\n\n /** The form group of which this component is a member. */\n @Input() group!: FormGroup;\n /** The name of this component's field within the form group */\n @Input() field: string = '';\n /** Form validation will be displayed when showValidation is true.*/\n @Input() public showValidation = false;\n @Input() disabled = false;\n\n constructor(private idService: OepaComponentIdService) {}\n\n ngOnInit() {\n if (this.group) {\n this.componentId = this.idService.getComponentId(this.group);\n this.componentId += (this.componentId.length > 0 ? '_' : '') + this.field;\n } else {\n console.log('OOPS No group yet');\n }\n }\n\n}\n","<div [formGroup]=\"group\">\n <div class=\"btn-group\" btnRadioGroup [formControlName]=\"field\" [ngClass]=\"{'is-invalid':showValidation && group.controls[field].status === 'INVALID'}\">\n <label class=\"btn btn-yes\" [ngClass]=\"{'btn-primary': group.controls[field].value === 'true'}\" [class.active]=\"group.controls[field].value === 'true'\" \n btnRadio=\"yes\" [uncheckable]=\"true\" [id]=\"componentId+'_YesBtn'\" [class.disabled]=\"group.disabled || disabled\" [disabled]=\"group.disabled || disabled\">Yes</label>\n <label class=\"btn btn-no\" [ngClass]=\"{'btn-primary': group.controls[field].value === 'false'}\" [class.active]=\"group.controls[field].value === 'false'\" \n btnRadio=\"no\" [uncheckable]=\"true\" [id]=\"componentId+'_NoBtn'\" [class.disabled]=\"group.disabled || disabled\" [disabled]=\"group.disabled || disabled\">No</label>\n </div>\n </div>\n <small class=\"invalid-feedback d-block\" *ngIf=\"showValidation && group.controls[field].status === 'INVALID' && !group.controls[field].hasError('answeredYes')\">Response is required</small>","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { OepaComponentIdService } from '@ohioepa/oepa-common-lib';\n\n@Component({\n selector: 'oepa-yes-no-other-input',\n templateUrl: './yes-no-other-input.component.html',\n styleUrls: ['./yes-no-other-input.component.css']\n})\nexport class YesNoOtherInputComponent implements OnInit {\n\n public componentId = 'OepaYesNoComponent';\n\n /** The form group of which this component is a member. */\n @Input() group!: FormGroup;\n /** The name of this component's field within the form group */\n @Input() field: string = '';\n /** Form validation will be displayed when showValidation is true.*/\n @Input() public showValidation = false;\n\n constructor(private idService: OepaComponentIdService) {}\n\n ngOnInit() {\n if (this.group) {\n this.componentId = this.idService.getComponentId(this.group);\n this.componentId += (this.componentId.length > 0 ? '_' : '') + this.field;\n } else {\n console.log('OOPS No group yet');\n }\n }\n\n}","<div [formGroup]=\"group\">\n <div class=\"btn-group\" btnRadioGroup [formControlName]=\"field\" [ngClass]=\"{'is-invalid':showValidation && group.controls[field].status === 'INVALID'}\">\n <label class=\"btn btn-yes\" [ngClass]=\"{'btn-primary': group.controls[field].value === 'yes'}\" [class.active]=\"group.controls[field].value === 'yes'\" \n btnRadio=\"yes\" [uncheckable]=\"true\" [id]=\"componentId+'_YesBtn'\" [class.disabled]=\"group.disabled\" [disabled]=\"group.disabled\">Yes</label>\n <label class=\"btn btn-no\" [ngClass]=\"{'btn-primary': group.controls[field].value === 'no'}\"[class.active]=\"group.controls[field].value === 'no'\" \n btnRadio=\"no\" [uncheckable]=\"true\" [id]=\"componentId+'_NoBtn'\"[class.disabled]=\"group.disabled\" [disabled]=\"group.disabled\">No</label>\n <label class=\"btn btn-no\" [ngClass]=\"{'btn-primary': group.controls[field].value === 'unknown'}\" [class.active]=\"group.controls[field].value === 'unknown'\" \n btnRadio=\"unknown\" [uncheckable]=\"true\" [id]=\"componentId+'_UnknownBtn'\"[class.disabled]=\"group.disabled\" [disabled]=\"group.disabled\">Unknown</label>\n </div>\n </div>\n <small class=\"invalid-feedback d-block\" *ngIf=\"showValidation && group.controls[field].status === 'INVALID' && !group.controls[field].hasError('answeredYes')\">Response is required</small>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\n\n@Component({\n selector: 'oepa-date-input-modal',\n templateUrl: './date-input-modal.component.html',\n styleUrls: ['./date-input-modal.component.css']\n})\nexport class DateInputModalComponent implements OnInit {\n public errorMessage: string = '';\n public dateForm!: FormGroup;\n public date: Date | undefined;\n\n @Input() title: string = '';\n @Input() infoText: string = '';\n @Input() dateLabel = 'Date';\n @Input() submitBtnLabel = 'Submit';\n @Input() cancelBtnLabel = 'Cancel';\n\n @Output() onSubmit: EventEmitter<Date> = new EventEmitter<Date>();\n @Output() onCancel: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(public bsModalRef: BsModalRef, private fb: FormBuilder) { }\n\n ngOnInit() {\n if (!this.date) {\n this.date = new Date();\n }\n this.createForm();\n }\n \n private createForm() {\n this.dateForm = this.fb.group({\n date: [ this.date, Validators.required]\n });\n this.dateForm.controls['date'].valueChanges.subscribe(date => {\n this.date = date;\n });\n }\n\n submit() {\n this.onSubmit.emit(this.date);\n this.bsModalRef.hide();\n }\n\n cancel() {\n this.onCancel.emit();\n this.bsModalRef.hide();\n }\n\n}\n","<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">{{title}}</h4>\n <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n</div>\n<div class=\"modal-body\">\n <div class=\"row\">\n <div *ngIf=\"infoText\" class=\"col-sm-12\">\n <div class=\"alert alert-info\">\n {{infoText}}\n </div>\n </div>\n <div class=\"col-sm-12\">\n <div>\n <label>{{dateLabel}}</label>\n <oepa-datepicker [group]=\"dateForm\" field=\"date\" [showValidation]=\"true\"></oepa-datepicker>\n </div>\n </div>\n </div>\n <div *ngIf=\"errorMessage\" class=\"col-sm-12\">\n <div class=\"alert alert-danger\">{{errorMessage}}</div>\n </div>\n</div>\n<div class=\"modal-footer\">\n <button type=\"submit\" class=\"btn btn-primary mr-1\" (click)=\"submit()\" \n [id]=\"'submitDateBtn'\" [disabled]=\"dateForm.status === 'INVALID'\">{{submitBtnLabel}}</button>\n <button [id]=\"'cancelDateInputBtn'\" type=\"button\" class=\"btn btn-primary mr-1\" (click)=\"cancel()\">{{cancelBtnLabel}}</button>\n</div>\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { PortalDocumentPart } from '../portal-document-part';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\n\n@Component({\n selector: 'oepa-part-modal',\n templateUrl: './part-modal.component.html',\n styleUrls: ['./part-modal.component.css']\n})\nexport class PartModalComponent implements OnInit {\n @Input() label = '';\n @Input() part!: PortalDocumentPart;\n\n @Output() onPartSave: EventEmitter<PortalDocumentPart> = new EventEmitter<PortalDocumentPart>();\n\n public modalForm!: FormGroup;\n\n constructor(private fb: FormBuilder, public bsModalRef: BsModalRef) { }\n\n ngOnInit() {\n this.createForm();\n }\n\n private createForm() {\n this.modalForm = this.fb.group({\n name: [ this.part.name, [Validators.required]],\n included: [ this.part.display ? 'yes' : 'no' ]\n })\n }\n\n save() {\n this.part.name = this.modalForm.get('name')?.value;\n this.onPartSave.emit(this.part);\n this.bsModalRef.hide();\n }\n\n cancel() {\n this.bsModalRef.hide();\n }\n\n}\n","<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">{{label}}</h4>\n <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"cancel()\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <div [formGroup]=\"modalForm\">\n <div class=\"row\">\n <div class=\"col-sm-12 form-group\">\n <label>Paragraph Name</label>\n <input class=\"form-control\" id=\"partNameInput\" formControlName=\"name\"/>\n </div>\n <div class=\"col-sm-12 form-group\">\n <label>Included</label>\n <oepa-yes-no [group]=\"modalForm\" field=\"included\"></oepa-yes-no>\n </div>\n </div>\n\n </div>\n </div>\n <div class=\"modal-footer\">\n <button type=\"submit\" id=\"saveBtn\" [disabled]=\"modalForm.invalid\" class=\"btn btn-primary mr-1\" (click)=\"save()\">Save</button>\n <button type=\"button\" id=\"cancelBtn\" class=\"btn btn-primary mr-1\" (click)=\"cancel()\">Cancel</button>\n </div>\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { PortalDocumentPlaceholder } from '../portal-document-placeholder';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\n\n@Component({\n selector: 'oepa-document-placeholder-modal',\n templateUrl: './document-placeholder-modal.component.html',\n styleUrls: ['./document-placeholder-modal.component.css']\n})\nexport class DocumentPlaceholderModalComponent implements OnInit {\n @Input() placeholders: PortalDocumentPlaceholder[] = [];\n\n @Output() placeholderSelected: EventEmitter<PortalDocumentPlaceholder> = new EventEmitter<PortalDocumentPlaceholder>();\n \n public modalForm!: FormGroup;\n public hasPlaceholderChildren = false;\n \n constructor(private fb: FormBuilder, private bsModalRef: BsModalRef) { \n\n }\n\n ngOnInit() {\n if (this.placeholders) {\n this.hasPlaceholderChildren = false;\n this.placeholders.forEach(placeholder => {\n if (placeholder.children) {\n this.hasPlaceholderChildren = true;\n }\n });\n }\n this.modalForm = this.fb.group({\n placeholder: [ null, [ Validators.required ]]\n });\n }\n\n public submit() {\n let placeHolder = this.modalForm.get('placeholder')?.value;\n this.placeholderSelected.emit(placeHolder);\n }\n\n public cancel() {\n this.bsModalRef.hide();\n }\n\n}\n","<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">Placeholders</h4>\n <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"cancel()\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n <div class=\"modal-body\" [formGroup]=\"modalForm\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label>Placeholders</label> \n <select formControlName=\"placeholder\" class=\"form-select\">\n <ng-template ngFor let-item [ngForOf]=\"placeholders\">\n <optgroup *ngIf=\"item.children\" label=\"{{item.info}}\">\n <option *ngFor=\"let child of item.children\" [ngValue]=\"child\">\n {{child.info}}\n </option>\n </optgroup>\n <option *ngIf=\"!item.children\" [ngValue]=\"item\">{{item.info}}</option>\n </ng-template>\n <!-- <option *ngFor=\"let p of placeholders\" [ngValue]=\"p\">{{p.info}}</option> -->\n </select>\n </div>\n </div>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button type=\"submit\" class=\"btn btn-primary mr-1\" (click)=\"submit()\">Insert Placeholder</button>\n <button type=\"button\" class=\"btn btn-primary mr-1\" (click)=\"cancel()\">Cancel</button>\n </div>\n","export enum DocumentEventType {\n Create,\n Update,\n Delete\n}","export enum DocumentEventEntityType {\n Section,\n Group,\n Part\n}","import { Injectable } from '@angular/core';\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\nimport { Observable, of, Subject } from 'rxjs';\nimport { PortalDocumentPlaceholder } from './portal-document-placeholder';\nimport { PortalDocumentSection } from './portal-document-section';\nimport { PortalDocumentGroup } from './portal-document-group';\nimport { PortalDocumentPart } from './portal-document-part';\nimport { PortalDocumentText } from './portal-document-text';\nimport { PortalDocument } from './portal-document';\nimport { PortalDocumentType } from './portal-document-type';\nimport { DocumentEventType } from './document-event-type';\nimport { DocumentEventEntityType } from './document-event-entity-type';\nimport { DocumentEvent } from './document-event';\nimport { PortalEmailFilter } from './portal-email-filter';\nimport { PortalEmail } from './portal-email';\nimport { OepaAction } from '../action-btn/oepa-action';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DocumentService {\n private placeholders: PortalDocumentPlaceholder[] = [];\n private monitoringPlaceholders: PortalDocumentPlaceholder[] = [];\n private monitoringLabel: string = '';\n private scheduleLabel: string = '';\n private schedulePlaceholders: PortalDocumentPlaceholder[] = [];\n private toolbar = [\n ['misc', ['undo', 'redo', 'codeview' ]],\n ['font', ['bold', 'italic', 'underline', 'strikethrough', 'superscript', 'subscript', 'clear']],\n ['para', ['color','style', 'ul', 'ol', 'paragraph']],\n ['insert', ['table', 'picture', 'hr', 'placeholder']],\n ['pagebreak',['pagebreak']]\n ];\n private height = 200;\n private tabSize = 4;\n private fontNames = ['Helvetica', 'Arial', 'Arial Black', 'Comic Sans MS', 'Courier New', 'Roboto', 'Times'];\n private documentIDSubject = new Subject<string>();\n private selectedSectionNameSubject = new Subject<string>();\n private documentPartActionSubject = new Subject<PortalDocumentPart>();\n private documentPartUpdateSubject = new Subject<PortalDocumentPart>();\n private documentEventSubject = new Subject<DocumentEvent>();\n private overridenEvents: DocumentEvent[] = [];\n\n private customPartAction: OepaAction | undefined;\n\n constructor(private http: HttpClient) { \n }\n\n public setPlaceholders(placeholders: PortalDocumentPlaceholder[]) {\n this.placeholders = placeholders;\n }\n\n public getPlaceholders() : PortalDocumentPlaceholder[] {\n return this.placeholders;\n }\n\n public setMonitoringPlaceholders(placeholders: PortalDocumentPlaceholder[], monitoringLabel?: string) {\n this.monitoringPlaceholders = placeholders;\n this.monitoringLabel = monitoringLabel || 'Monitoring Tables';\n }\n\n public getMonitoringPlaceholders() : PortalDocumentPlaceholder[] {\n return this.monitoringPlaceholders;\n }\n\n public getMonitoringLabel(): string {\n return this.monitoringLabel;\n }\n\n public setSchedulePlaceholders(placeholders: PortalDocumentPlaceholder[], scheduleLabel?: string) {\n this.schedulePlaceholders = placeholders;\n this.scheduleLabel = scheduleLabel || 'Schedules';\n }\n\n public getSchedulePlaceholders(): PortalDocumentPlaceholder[] {\n return this.schedulePlaceholders;\n }\n\n public getScheduleLabel() : string {\n return this.scheduleLabel;\n }\n\n public setToolbar(toolbar: any) {\n this.toolbar = toolbar;\n }\n\n public getToolbar() : any {\n return this.toolbar;\n }\n\n public setFontNames(fontNames: string[]) {\n this.fontNames = fontNames;\n }\n\n public getFontNames() : string[] {\n return this.fontNames;\n }\n\n public setHeight(height: number) {\n this.height = height;\n }\n\n public getHeight() : number {\n return this.height;\n }\n\n public setTabSize(tabSize: number) {\n this.tabSize = tabSize;\n }\n\n public getTabSize() : number {\n return this.tabSize;\n }\n\n public updateDcoumentID(id: string) {\n this.documentIDSubject.next(id);\n }\n\n public updateSelectedSectionName(name: string | undefined) {\n this.selectedSectionNameSubject.next(name || '');\n }\n\n public overrideEvent(event: DocumentEvent) {\n if (event) {\n let match = this.isOverriddenEvent(event);\n if (!match) {\n this.overridenEvents.push(event);\n }\n }\n }\n\n public removeOverridenEvent(event: DocumentEvent) {\n if (event) {\n this.overridenEvents = this.overridenEvents.filter(e => {\n return (e.eventType === event.eventType && e.entityType === event.entityType);\n });\n }\n }\n\n public isOverriddenEvent(event: DocumentEvent) : DocumentEvent | undefined {\n return this.overridenEvents.find(e => (e.eventType === event.eventType && e.entityType == event.entityType));\n }\n\n public getDocumentIDSubject(): Observable<string> {\n return this.documentIDSubject.asObservable();\n }\n\n public getSelectedSectionName(): Observable<string> {\n return this.selectedSectionNameSubject.asObservable();\n }\n\n public getDocumentEventSubject(): Observable<DocumentEvent> {\n return this.documentEventSubject.asObservable();\n }\n\n public retrieveDocumentTemplate(templateID: string): Observable<PortalDocument> {\n let headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n let url = '/ebiz/api/v1/portal/document/currentDocumentTemplate/' + templateID;\n return this.http.get<PortalDocument>(url, { headers: headers, responseType: 'json' });\n }\n\n public cloneDocumentTemplate(template: PortalDocumentType): Observable<string> {\n let headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n let url = '/ebiz/api/v1/portal/document/templates/' + template.id + '/clone';\n return this.http.post<string>(url, template, { headers: headers, responseType: 'json' });\n }\n\n public retrieveDocument(id: string): Observable<PortalDocument> {\n let headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n let url = '/ebiz/api/v1/portal/document/' + id;\n return this.http.get<PortalDocument>(url, { headers: headers, responseType: 'json' });\n }\n\n public retrieveLegacyDocumentTemplate(id: string): Observable<PortalDocument> {\n let headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n let url = '/ebiz/api/v1/npdes/document/legacy/template/' + id;\n return this.http.get<PortalDocument>(url, { headers: headers, responseType: 'json' });\n }\n\n public retrieveLegacyDocumentForPermit(permitID: string): Observable<PortalDocument> {\n let headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n let url = '/ebiz/api/v1/npdes/document/legacy/permit/' + permitID;\n return this.http.get<PortalDocument>(url, { headers: headers, responseType: 'json' });\n }\n\n public updateDocument(document: PortalDocument): Observable<any> {\n let headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n let url = '/ebiz/api/v1/portal/document/' + document.id;\n return this.http.put<any>(url, document, { headers: headers, responseType: 'json' });\n }\n\n public createDocumentSection(section: PortalDocumentSection): Observable<string> {\n let headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n let url = '/ebiz/api/v1/portal/document/' + section.documentID + '/sections';\n return this.http.post<string>(url, section, { headers: headers, responseType: 'json' });\n }\n\n public updateDocumentSection(section: PortalDocumentSection): Observable<any> {\n let headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n let url = '/ebiz/api/v1/portal/document/' + section.documentID + '/sections/' + section.id;\n const event = { eventType: DocumentEventType.Update, entityType: DocumentEventEntityType.Section, entityID: section.id};\n this.documentEventSubject.next(event);\n if (this.isOverriddenEvent(event)) {\n return of(undefined);\n } else {\n return this.http.put<any>(url, section, { headers: headers, responseType: 'json' });\n }\n }\n\n public deleteDocumentSection(section: PortalDocumentSection): Observable<any> {\n const event = { eventType: DocumentEventType.Delete, entityType: DocumentEventEntityType.Section, entityID: section.id, entity: section};\n this.documentEventSubject.next(event);\n if (this.isOverriddenEvent(event)) {\n return of(undefined);\n } else {\n return this.doDeleteDocumentSection(section);\n }\n }\n\n public doDeleteDocumentSection(section: PortalDocumentSection): Observable<any> {\n let headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n let url = '/ebiz/api/v1/portal/document/' + section.documentID + '/sections/' + section.id;\n return this.http.delete<any>(url, { headers: headers, responseType: 'json' });\n }\n\n public createDocumentGroup(group: PortalDocumentGroup): Observable<string> {\n let headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n let url = '/ebiz/api/v1/portal/document/' + group.documentID + '/groups';\n return this.http.post<string>(url, group, { headers: headers, responseType: 'json' });\n }\n \n public retrieveDocumentGroup(documentID: string, groupID: string): Observable<PortalDocumentGroup> {\n let headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n let url = '/ebiz/api/v1/portal/document/' + documentID + '/groups/' + groupID;\n return this.http.get<PortalDocumentGroup>(url, { headers: headers, responseType: 'json' });\n }\n\n public updateDocumentGroup(group: PortalDocumentGroup): Observable<any> {\n let headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n let url = '/ebiz/api/v1/portal/document/' + group.documentID + '/groups/' + group.id;\n const event = { eventType: DocumentEventType.Update, entityType: DocumentEventEntityType.Group, entityID: group.id};\n this.documentEventSubject.next(event);\n if (this.isOverriddenEvent(event)) {\n return of(undefined);\n } else {\n return this.http.put<any>(url, group, { headers: headers, responseType: 'json' });\n }\n }\n\n public deleteDocumentGroup(group: PortalDocumentGroup): Observable<any> {\n const event = { eventType: DocumentEventType.Delete, entityType: DocumentEventEntityType.Group, entityID: group.id, entity: group};\n this.documentEventSubject.next(event);\n if (this.isOverriddenEvent(event)) {\n return of(undefined);\n } else {\n return this.doDeleteDocumentGroup(group);\n }\n }\n\n public doDeleteDocumentGroup(group: PortalDocumentGroup): Observable<any> {\n let headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n let url = '/ebiz/api/v1/portal/document/' + group.documentID + '/groups/' + group.id;\n return this.http.delete<any>(url, { headers: headers, responseType: 'json' });\n }\n\n public createDocumentPart(part: PortalDocumentPart): Observable<string> {\n let headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n let url = '/ebiz/api/v1/portal/document/' + part.documentID + '/parts';\n return this.http.post<string>(url, part, { headers: headers, responseType: 'json' });\n }\n\n public updateDocumentPart(part: PortalDocumentPart): Observable<any> {\n let headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n let url = '/ebiz/api/v1/portal/document/' + part.documentID + '/parts/' + part.id;\n const event = { eventType: DocumentEventType.Update, entityType: DocumentEventEntityType.Part, entityID: part.id};\n this.documentEventSubject.next(event);\n if (this.isOverriddenEvent(event)) {\n return of(undefined);\n } else {\n return this.http.put<any>(url, part, { headers: headers, responseType: 'json' });\n }\n }\n\n public deleteDocumentPart(part: PortalDocumentPart): Observable<any> {\n let headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n let url = '/ebiz/api/v1/portal/document/' + part.documentID + '/parts/' + part.id;\n const event = { eventType: DocumentEventType.Delete, entityType: DocumentEventEntityType.Part, entityID: part.id, entity: part};\n this.documentEventSubject.next(event);\n if (this.isOverriddenEvent(event)) {\n return of(undefined);\n } else {\n return this.http.delete<any>(url, { headers: headers, responseType: 'json' });\n }\n }\n\n public updateDocumentText(documentID: string, partID: string, text: PortalDocumentText): Observable<any> {\n let headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n let url = '/ebiz/api/v1/portal/document/' + documentID+ '/parts/' + partID + '/texts/' + text.id;\n return this.http.put<any>(url, text, { headers: headers, responseType: 'json' });\n }\n\n public retrieveAllDocumentPlaceholders(serviceName: string): Observable<PortalDocumentPlaceholder[]> {\n let headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n let url = '/ebiz/api/v1/portal/document/placeholders/service/' + serviceName;\n return this.http.get<PortalDocumentPlaceholder[]>(url, { headers: headers, responseType: 'json' });\n }\n\n public setCustomPartAction(action: OepaAction) {\n this.customPartAction = action;\n }\n\n public getCustomPartAction() : OepaAction | undefined {\n return this.customPartAction;\n }\n\n public getDocumentPartActionSubject(): Observable<PortalDocumentPart> {\n return this.documentPartActionSubject.asObservable();\n }\n\n public fireCustomPartAction(part: PortalDocumentPart) {\n this.documentPartActionSubject.next(part);\n }\n\n public getDocumentPartUpdateSubject(): Observable<PortalDocumentPart> {\n return this.documentPartUpdateSubject.asObservable();\n }\n\n public fireDocumentPartUpdate(part: PortalDocumentPart) {\n this.documentPartUpdateSubject.next(part);\n }\n\n public searchEmails(filter: PortalEmailFilter): Observable<PortalEmail[]> {\n let headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n let url = '/ebiz/api/v1/portal/document/emails/search';\n return this.http.post<PortalEmail[]>(url, filter, { headers: headers, responseType: 'json' });\n }\n\n public retrieveDocumentByDocumentID(documentID: string): Observable<PortalDocument> {\n let headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n let url = '/ebiz/api/v1/portal/document/' + documentID;\n return this.http.get<PortalDocumentGroup>(url, { headers: headers, responseType: 'json' });\n }\n\n public updateApprovalStatusForEmails(ids: string[], status: string): Observable<any> {\n let headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n let url = '/ebiz/api/v1/portal/document/emails/approvalStatus/' + status;\n return this.http.put<any>(url, ids, { headers: headers, responseType: 'json' });\n }\n\n public sendApprovedEmails(emails: PortalEmail[]) : Observable<any> {\n let headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n let url = '/ebiz/api/v1/portal/document/emails/Approved/send';\n return this.http.post<any>(url, emails, { headers: headers, responseType: 'json' });\n }\n\n}\n","import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';\nimport { PortalDocumentPart } from '../portal-document-part';\nimport { FormGroup, FormBuilder } from '@angular/forms';\nimport { DocumentService } from '../document.service';\nimport { ToastrService } from 'ngx-toastr';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { PartModalComponent } from '../part-modal/part-modal.component';\nimport { ConfirmationModalComponent } from '../../confirmation-modal/confirmation-modal.component';\nimport { DocumentPlaceholderModalComponent } from '../document-placeholder-modal/document-placeholder-modal.component';\nimport { SummernoteOptions } from 'ngx-summernote/lib/summernote-options';\n\ndeclare var $: any;\n\n@Component({\n selector: 'oepa-document-part-editor',\n templateUrl: './document-part-editor.component.html',\n styleUrls: ['./document-part-editor.component.css']\n})\nexport class DocumentPartEditorComponent implements OnInit {\n @Input() part!: PortalDocumentPart;\n @Input() editing = false;\n\n @Output() partChange: EventEmitter<PortalDocumentPart> = new EventEmitter<PortalDocumentPart>();\n @Output() onMoveUp: EventEmitter<PortalDocumentPart> = new EventEmitter<PortalDocumentPart>();\n @Output() onInsertAbove: EventEmitter<PortalDocumentPart> = new EventEmitter<PortalDocumentPart>();\n @Output() onMoveDown: EventEmitter<PortalDocumentPart> = new EventEmitter<PortalDocumentPart>();\n @Output() onInsertBelow: EventEmitter<PortalDocumentPart> = new EventEmitter<PortalDocumentPart>();\n @Output() onDelete: EventEmitter<PortalDocumentPart> = new EventEmitter<PortalDocumentPart>();\n\n public form!: FormGroup;\n public config: SummernoteOptions = {};\n public errorMessage: string = '';\n public busy = false;\n \n constructor(private fb: FormBuilder, \n private modalService: BsModalService,\n private toastr: ToastrService,\n public documentService: DocumentService) {\n this.config = this.getConfig();\n }\n\n ngOnInit() {\n this.initializePart();\n this.createForm();\n }\n\n private createForm() {\n this.form = this.fb.group({\n html: this.part.text?.text || ''\n });\n }\n\n private initializePart() {\n if (!this.part) {\n this.part = {\n text: {\n text: ''\n }\n };\n }\n if (!this.part.text) {\n this.part.text = {\n text: ''\n };\n }\n }\n\n public savePart() {\n this.busy = true;\n if (this.part.text?.text) {\n this.part.text.text = this.form.get('html')?.value;\n }\n if (this.part.documentID && this.part.id && this.part.text) {\n this.documentService.updateDocumentText(this.part.documentID, this.part.id, this.part.text).subscribe({\n next: () => {\n this.documentService.fireDocumentPartUpdate(this.part);\n this.editing = false;\n this.busy = false;\n }, error: err => {\n this.toastr.error('Failed updating text: ' + err, 'ERROR');\n this.busy = false;\n }});\n }\n }\n\n public editPart(part: PortalDocumentPart) {\n const initialState = {\n label: 'Edit Paragraph Attributes',\n part: part\n }\n let modal = this.modalService.show(PartModalComponent, {initialState, ignoreBackdropClick: true});\n (<PartModalComponent>modal.content).onPartSave.subscribe(updatedPart => {\n this.busy = true;\n this.documentService.updateDocumentPart(updatedPart).subscribe(() => {\n this.busy = false;\n }, err => {\n this.toastr.error('Failed updating paragraph: ' + err, 'ERROR');\n this.busy = false;\n });\n });\n }\n\n public updateDisplay(display: boolean) {\n this.part.display = display;\n this.busy = true;\n this.documentService.updateDocumentPart(this.part).subscribe(() => {\n this.busy = false;\n }, err => {\n this.toastr.error('Failed updating paragraph: ' + err, 'ERROR');\n this.busy = false;\n });\n }\n\n public moveUp() {\n this.onMoveUp.emit(this.part);\n }\n\n public insertAbove() {\n this.onInsertAbove.emit(this.part);\n }\n\n public moveDown() {\n this.onMoveDown.emit(this.part);\n }\n\n public insertBelow() {\n this.onInsertBelow.emit(this.part);\n }\n\n public delete() {\n this.onDelete.emit(this.part);\n }\n\n public doCustomAction() {\n this.documentService.fireCustomPartAction(this.part);\n }\n\n \n public getConfig(): SummernoteOptions {\n let config: any = {\n placeholder: '',\n tabsize: this.documentService.getTabSize(),\n height: this.documentService.getHeight(),\n toolbar: this.documentService.getToolbar(),\n buttons: {\n placeholder:\n (context: any) => {\n let object = this;\n let clickAction = this.invokePlaceHolderModal;\n const ui = $.summernote.ui;\n const button = ui.button({\n contents: '<i class=\"bi bi-bookmark-fill\"></i>',\n tooltip: 'Replaceable text',\n container: '.note-editor',\n className: 'note-btn',\n click: () => {\n clickAction.call(object, context);\n }\n });\n return button.render();\n }\n },\n fontNames: this.documentService.getFontNames()\n }\n if (this.documentService.getMonitoringLabel() && this.documentService.getMonitoringLabel().length > 0 && !config.buttons['monitoring']) {\n config.buttons['monitoring'] = \n (context: any) => {\n let object = this;\n let clickAction = this.invokeMonitoringPlaceHolderModal;\n const ui = $.summernote.ui;\n const button = ui.button({\n contents: '<i class=\"bi bi-speedometer2\"></i>',\n tooltip: this.documentService.getMonitoringLabel(),\n container: '.note-editor',\n className: 'note-btn',\n click: () => {\n clickAction.call(object, context);\n }\n });\n return button.render();\n };\n if (Array.isArray(config.toolbar)) {\n config.toolbar.forEach((toolbarItem: any[]) => {\n if (toolbarItem[0] === 'insert') {\n if (Array.isArray(toolbarItem[1])) {\n let monitoringBtnEntry = toolbarItem[1].find(btnEntry => {\n return btnEntry === 'monitoring';\n });\n if (!monitoringBtnEntry) {\n toolbarItem[1].push('monitoring');\n }\n }\n }\n })\n }\n }\n if (this.documentService.getScheduleLabel() && this.documentService.getScheduleLabel().length > 0 && !config.buttons['schedule']) {\n config.buttons['schedule'] = \n (context: any) => {\n let object = this;\n let clickAction = this.invokeSchedulePlaceHolderModal;\n const ui = $.summernote.ui;\n const button = ui.button({\n contents: '<i class=\"bi bi-calendar3\"></i>',\n tooltip: this.documentService.getScheduleLabel(),\n container: '.note-editor',\n className: 'note-btn',\n click: () => {\n clickAction.call(object, context);\n }\n });\n return button.render();\n };\n if (Array.isArray(config.toolbar)) {\n config.toolbar.forEach((toolbarItem: any) => {\n if (toolbarItem[0] === 'insert') {\n if (Array.isArray(toolbarItem[1])) {\n let scheduleBtnEntry = toolbarItem[1].find(btnEntry => {\n return btnEntry === 'schedule';\n });\n if (!scheduleBtnEntry) {\n toolbarItem[1].push('schedule');\n }\n }\n }\n })\n }\n }\n return config;\n }\n\n private invokePlaceHolderModal(context: any) {\n const initialState = {\n placeholders: this.documentService.getPlaceholders()\n }\n let modal = this.modalService.show(DocumentPlaceholderModalComponent, {initialState, ignoreBackdropClick: true});\n (<DocumentPlaceholderModalComponent>modal.content).placeholderSelected.subscribe(placeholder => {\n const html = '[<span class=\"permit-doc-placeholder\" data-item-name=\"' + placeholder.itemName + (placeholder.format ? '\" data-format=\"' + placeholder.format : '') + '\">' + placeholder.displayName + '</span>]';\n context.invoke('editor.pasteHTML', html);\n modal.hide();\n });\n }\n\n private invokeMonitoringPlaceHolderModal(context: any) {\n const initialState = {\n placeholders: this.documentService.getMonitoringPlaceholders()\n }\n let modal = this.modalService.show(DocumentPlaceholderModalComponent, {initialState, ignoreBackdropClick: true});\n (<DocumentPlaceholderModalComponent>modal.content).placeholderSelected.subscribe(placeholder => {\n const html = '[<span class=\"permit-doc-placeholder\" data-item-name=\"' + placeholder.itemName + '\" data-item-id=\"' + placeholder.id + '\">' + placeholder.displayName + '</span>]';\n context.invoke('editor.pasteHTML', html);\n modal.hide();\n });\n }\n\n private invokeSchedulePlaceHolderModal(context: any) {\n const initialState = {\n placeholders: this.documentService.getSchedulePlaceholders()\n }\n let modal = this.modalService.show(DocumentPlaceholderModalComponent, {initialState, ignoreBackdropClick: true});\n (<DocumentPlaceholderModalComponent>modal.content).placeholderSelected.subscribe(placeholder => {\n const html = '[<span class=\"permit-doc-placeholder\" data-item-name=\"' + placeholder.itemName + '\" data-item-id=\"' + placeholder.id + '\">' + placeholder.displayName + '</span>]';\n context.invoke('editor.pasteHTML', html);\n modal.hide();\n });\n }\n\n private invokeErasePlaceHolder(context: any) {\n let placeholderWasSelected = false;\n const selectedHTML = context.invoke('editor.createRange').toString();\n \n if (selectedHTML.startsWith('[') && selectedHTML.endsWith(']')) {\n let stripped = selectedHTML.match(/\\[([^\\]]+)]/);\n if (stripped.length > 1) {\n placeholderWasSelected = true;\n const updatedContent = stripped[1];\n const initialState = {\n bodyText: 'Replace variable text with the permanent value: \"' + updatedContent + '\"?',\n confirmBtnLabel: 'Yes',\n cancelBtnLabel: 'No'\n }\n let modal = this.modalService.show(ConfirmationModalComponent, {initialState, ignoreBackdropClick: true});\n (<ConfirmationModalComponent>modal.content).confirmClicked.subscribe(()=> {\n context.invoke('editor.pasteHTML', updatedContent);\n });\n }\n }\n if (!placeholderWasSelected) {\n const initialState = {\n bodyText: 'The text selection was not replaceable text.',\n cancelBtnLabel: undefined\n }\n this.modalService.show(ConfirmationModalComponent, {initialState, ignoreBackdropClick: true});\n }\n }\n}\n","<div class=\"card\">\n <div *ngIf=\"!part.isCollapsed\" class=\"row\">\n <div class=\"col-sm-10\">\n <div *ngIf=\"form\" [formGroup]=\"form\" class=\"card\">\n <div class=\"row\">\n <div class=\"col-sm-12\">\n <div *ngIf=\"editing\" formControlName=\"html\" [ngxSummernote]=\"config\"\n [ngxSummernoteDisabled]=\"!editing\">\n </div>\n <div *ngIf=\"!editing\" [ngClass]=\"{'permit-doc-disabled' : !part.display}\"\n [innerHTML]=\"part.text?.text\">\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-sm-2\">\n <div class=\"row\">\n <div class=\"col-sm-12 text-center\">\n <span *ngIf=\"!editing\">\n <button [id]=\"'editPart'+part.sequence\" class=\"btn\" (click)=\"this.editing = true;\" tooltip=\"Edit Paragraph\">\n <i class=\"bi bi-pencil-square\"></i>\n </button>\n </span>\n <span *ngIf=\"editing\">\n <button [id]=\"'savePart'+part.sequence\" class=\"btn\" (click)=\"this.savePart()\" tooltip=\"Save Paragraph\">\n <i class=\"bi bi-floppy\"></i>\n </button>\n </span>\n <span *ngIf=\"editing\">\n <button [id]=\"'cancelEditPart'+part.sequence\" class=\"btn\" (click)=\"this.editing = false\" tooltip=\"Cancel Edit\">\n <i class=\"bi bi-arrow-counterclockwise\"></i>\n </button>\n </span>\n <span *ngIf=\"!part.display\">\n <button [id]=\"'displayPart'+part.sequence\" class=\"btn\" (click)=\"updateDisplay(true)\" tooltip=\"Display Text\">\n <i class=\"bi bi-app\"></i>\n </button>\n </span>\n <span *ngIf=\"part.display\">\n <button [id]=\"'hidePart'+part.sequence\" class=\"btn\" (click)=\"updateDisplay(false)\" tooltip=\"Hide Text\">\n <i class=\"bi bi-check2-square\"></i>\n </button>\n </span>\n <button [id]=\"'deletePart'+part.sequence\" class=\"btn\" (click)=\"this.delete()\" tooltip=\"Delete Paragraph\">\n <i class=\"bi bi-trash\"></i>\n </button>\n </div>\n <div class=\"col-sm-12 text-center\">\n <button [id]=\"'insertabove'+part.sequence\" class=\"btn\" (click)=\"insertAbove()\" tooltip=\"Insert Paragraph Above\">\n <i class=\"bi bi-arrow-up-circle\"></i>\n </button>\n <button [id]=\"'insertBelowSection'+part.sequence\" class=\"btn\" (click)=\"insertBelow()\" tooltip=\"Insert Paragraph Below\">\n <i class=\"bi bi-arrow-down-circle\"></i>\n </button>\n </div>\n <div *ngIf=\"documentService.getCustomPartAction()\" class=\"col-sm-12 text-center\">\n <button [id]=\"'customAction'+part.sequence\" class=\"btn\" (click)=\"doCustomAction()\" [tooltip]=\"documentService.getCustomPartAction()?.title\">\n <i [class]=\"documentService.getCustomPartAction()?.className\"></i>\n </button>\n </div>\n <!-- <div class=\"col-sm-12 text-center\">\n <button [id]=\"'moveup'+part.sequence\" class=\"btn\" (click)=\"moveUp()\">\n <i class=\"bi bi-chevron-double-up\"></i>\n </button>\n <button [id]=\"'movedown'+part.sequence\" class=\"btn\" (click)=\"moveDown()\">\n <i class=\"bi bi-chevron-double-down\"></i>\n </button>\n </div> -->\n \n </div>\n </div>\n </div>\n</div>","import { Component, OnInit, Input } from '@angular/core';\nimport { PortalDocumentPart } from '../portal-document-part';\n\n@Component({\n selector: 'oepa-document-part',\n templateUrl: './document-part.component.html',\n styleUrls: ['./document-part.component.css']\n})\nexport class DocumentPartComponent implements OnInit {\n @Input() part!: PortalDocumentPart;\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","<div *ngIf=\"part\">\n <oepa-document-part-editor [part]=\"part\"></oepa-document-part-editor>\n</div>\n<div *ngIf=\"part.parts && part.parts.length > 0\">\n <div *ngFor=\"let p of part.parts\">\n <oepa-document-part-editor [part]=\"p\"></oepa-document-part-editor>\n </div>\n</div>\n","import { Component, OnInit, Input } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { OepaComponentIdService } from '@ohioepa/oepa-common-lib';\nimport { OepaAddressService } from '../address/oepa-address.service';\n\n\n@Component({\n selector: 'oepa-ebiz-address',\n templateUrl: './ebiz-address.component.html',\n styleUrls: ['./ebiz-address.component.css']\n})\nexport class EbizAddressComponent implements OnInit {\n public showStates = true;\n public usStates: string[] = [];\n public componentId = 'EbizAddressComponent';\n\n @Input() group!: FormGroup;\n @Input() showValidation = false;\n\n @Input('addressOneLabel') public addressOneLabel: string = 'Address 1';\n @Input('addressTwoLabel') public addressTwoLabel: string = 'Address 2';\n @Input('cityLabel') public cityLabel: string = 'City';\n @Input('stateLabel') public stateLabel: string = 'State';\n @Input('zipCodeLabel') public zipCodeLabel: string = 'Zip Code';\n\n constructor(private addressService: OepaAddressService, private idService: OepaComponentIdService) {\n this.addressService.getStates().subscribe({\n next: (states) => {\n this.usStates = states;\n }, error: err => {\n console.log('ERROR retrieving states for address: ' + err);\n }});\n }\n\n ngOnInit() {\n if (this.group) {\n this.componentId = this.idService.getComponentId(this.group);\n }\n }\n\n}\n","<div [formGroup]=\"group\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label>{{addressOneLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['addressLine1'].status === 'INVALID'}\" \n type=\"text\" placeholder=\"Address\" maxlength=\"40\" formControlName=\"addressLine1\" \n [id]=\"componentId+'_Line1Input'\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['addressLine1'].hasError('required')\">{{addressOneLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['addressLine1'].hasError('maxlength')\">{{addressOneLabel}} has exceeded its maximum length</small>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label>{{addressTwoLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['addressLine2'].status === 'INVALID'}\"\n type=\"text\" placeholder=\"Address\" maxlength=\"40\" formControlName=\"addressLine2\" \n [id]=\"componentId+'_Line2Input'\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['addressLine2'].hasError('required')\">{{addressTwoLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['addressLine2'].hasError('maxlength')\">{{addressTwoLabel}} has exceeded its maximum length</small>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label>{{cityLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['city'].status === 'INVALID'}\"\n type=\"text\" placeholder=\"City\" maxlength=\"30\" formControlName=\"city\" \n [id]=\"componentId+'_CityInput'\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['city'].hasError('required')\">{{cityLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['city'].hasError('maxlength')\">{{cityLabel}} has exceeded its maximum length</small>\n </div>\n </div>\n <div class=\"col-md-2\">\n <div *ngIf=\"showStates\" class=\"form-group\">\n <label>{{stateLabel}}</label>\n <select class=\"form-select\" [ngClass]=\"{'is-invalid':showValidation && group.controls['state'].status === 'INVALID'}\" \n name=\"AddressState\" formControlName=\"state\" [id]=\"componentId+'_StateSelect'\">\n <option *ngFor=\"let s of usStates\" [ngValue]=\"s\">{{s}}</option>\n </select>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['state'].hasError('required')\">State is required</small>\n </div>\n </div>\n <div class=\"col-md-4\">\n <div class=\"form-group\">\n <label>{{zipCodeLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['zip'].status === 'INVALID'}\"\n type=\"text\" placeholder=\"Zip Code\" formControlName=\"zip\" [id]=\"componentId+'_ZipInput'\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['zip'].hasError('required')\">Zip code is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['zip'].hasError('pattern')\">Zip code must contain exactly 5 digits</small>\n </div>\n </div>\n </div>\n</div>","/*\n Copyright 2018 Esri\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n http://www.apache.org/licenses/LICENSE-2.0\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport { Component, OnInit, ViewChild, ElementRef, Input, Output, EventEmitter } from '@angular/core';\n\nimport { loadModules } from 'esri-loader';\nimport esri = __esri;\nimport { LatLong } from '@ohioepa/oepa-ebiz-lib';\n\n@Component({\n selector: 'oepa-esri-map',\n templateUrl: './esri-map.component.html',\n styleUrls: ['./esri-map.component.css']\n})\nexport class EsriMapComponent implements OnInit {\n\n @Output() mapLoaded = new EventEmitter<boolean>();\n @Output() onNewCoordinates: EventEmitter<LatLong> = new EventEmitter<LatLong>();\n @ViewChild('mapViewNode', { static: true }) private mapViewEl!: ElementRef;\n @ViewChild('latLongSearchNode', { static: false }) latLongSearchEl!: ElementRef;\n\n /**\n * @private _zoom sets map zoom\n * @private _center sets map center\n * @private _basemap sets type of map\n */\n private _zoom: number = 10;\n private _center: Array<number> = [0.1278, 51.5074];\n private _basemap: string = 'streets-vector';\n\n private currentMapView!: esri.MapView;\n // private currentGraphic: esri.Graphic = null;\n // private selectedPoint: esri.Point = null;\n private _currentLatLong!: LatLong;\n\n @Input()\n set currentLatLong(currentLatLong: LatLong) {\n this._currentLatLong = currentLatLong;\n }\n\n get currentLatLong(): LatLong {\n return this._currentLatLong;\n }\n\n @Input()\n set zoom(zoom: number) {\n this._zoom = zoom;\n }\n\n get zoom(): number {\n return this._zoom;\n }\n\n @Input()\n set center(center: Array<number>) {\n this._center = center;\n }\n\n get center(): Array<number> {\n return this._center;\n }\n\n @Input()\n set basemap(basemap: string) {\n this._basemap = basemap;\n }\n\n get basemap(): string {\n return this._basemap;\n }\n\n @Input() showSearch = false;\n\n constructor() { }\n\n async initializeMap() {\n // var mapView;\n const [EsriMap, EsriMapView, EsriBasemapToggle, locator , Search ] = await loadModules([\n 'esri/Map',\n 'esri/views/MapView',\n \"esri/widgets/BasemapToggle\",\n \"esri/rest/locator\",\n \"esri/widgets/Search\"\n ]);\n\n const me = this;\n // Set type of map\n const mapProperties: esri.MapProperties = {\n basemap: this._basemap,\n };\n\n const map: esri.Map = new EsriMap(mapProperties);\n\n // Set type of map view\n const mapViewProperties: esri.MapViewProperties = {\n container: this.mapViewEl.nativeElement,\n center: this._center,\n zoom: this._zoom,\n map: map,\n popup: {\n dockEnabled: false,\n dockOptions: {\n buttonEnabled: false,\n breakpoint: false,\n }\n },\n };\n\n var mapView = new EsriMapView(mapViewProperties);\n mapView.popup.actionsMenuEnabled = false;\n mapView.popup._displayActionTextLimit = 0; // controls whether action button text is shown\n this.currentMapView = mapView;\n\n // All resources in the MapView and the map have loaded.\n // Now execute additional processes\n // this.currentMapView.when(() => {\n // this.mapLoaded.emit(true);\n // });\n\n // 1 - Create the widget\n const toggle: esri.BasemapToggle = new EsriBasemapToggle({\n // 2 - Set properties\n view: mapView, // view that provides access to the map's 'topo' basemap\n nextBasemap: \"hybrid\" // allows for toggling to the 'hybrid' basemap\n });\n\n // Add widget to the top right corner of the view\n mapView.ui.add(toggle, \"bottom-right\");\n\n var updateLatLongAction = {\n title: \"Yes\",\n id: \"update-lat-long\",\n // image: \"Measure_Distance16.png\",\n className: \"bi bi-hand-thumbs-up-fill\"\n };\n\n var cancelUpdateAction = {\n title: \"No\",\n id: \"cancel-update\",\n // image: \"Measure_Distance16.png\",\n className: \"bi bi-hand-thumbs-down-fill\"\n };\n\n //this.currentMapView.popup.content = '{facilityName}';\n\n // this.currentMapView.on(\"click\", event => {\n // let clickSymbol: esri.SimpleMarkerSymbol = new SimpleMarkerSymbol({\n // type: 'simple-marker',\n // style: 'diamond',\n // color: 'red',\n // size: '20pt'\n // });\n // this.currentMapView.graphics.remove(this.currentGraphic);\n // this.currentGraphic = new Graphic({\n // geometry : event.mapPoint,\n // symbol : clickSymbol\n // })\n\n // this.addPoint(String(event.mapPoint.latitude), String(event.mapPoint.longitude));\n // });\n\n // var symbol = new SimpleMarkerSymbol(\n // SimpleMarkerSymbol.STYLE_CIRCLE,\n // 12,\n // new SimpleLineSymbol(\n // SimpleLineSymbol.STYLE_NULL,\n // new Color([247, 34, 101, 0.9]),\n // 1\n // ),\n // new Color([207, 34, 171, 0.5])\n // );\n\n // mapView.when(() => {\n // this.mapLoaded.emit(true);\n // mapView.on(\"click\", function(event) {\n // // you must overwrite default click-for-popup\n // // behavior to display your own popup\n // // me.currentMapView.popup.autoOpenEnabled = false;\n\n // // Get the coordinates of the click on the view\n // var lat = Math.round(event.mapPoint.latitude * 1000) / 1000;\n // var lon = Math.round(event.mapPoint.longitude * 1000) / 1000;\n // var info = lat + ', ' + lon;\n\n // mapView.graphics.clear();\n // mapView.graphics.add(new Graphic(event.mapPoint, symbol));\n // map.infoWindow.setContent(\"X: \" + event.mapPoint.x.toString() + \", <br>Y: \" + event.mapPoint.y.toString());\n // mapView.infoWindow.show(event.mapPoint)\n\n // const poptest = new Popup({\n // title: \"Reverse geocode: [\" + lon + \", \" + lat + \"]\",\n // location: event.mapPoint, // Set the location of the popup to the clicked location\n // content: \"This is a point of interest\" // content displayed in the popup\n // })\n // mapView.popup.open({\n // // Set the popup's title to the coordinates of the location\n // title: \"Reverse geocode: [\" + lon + \", \" + lat + \"]\",\n // location: event.mapPoint, // Set the location of the popup to the clicked location\n // content: \"This is a point of interest\" // content displayed in the popup\n // });\n // // me.showPopup(info, event);\n\n // });\n\n // // mapView.popup.on(\"trigger-action\", function(evt){\n // // if(evt.action.id === \"more-details\"){\n // // // add graphic at view.popup.location\n // // }\n // // });\n\n // })\n\n /*\n * Create the Search Box widget used for address lookup. searchId is the id of the HTML tag (usually a DIV)\n * that is the placeholder for the search box.\n */\n if (this.showSearch) {\n var searchWidget = new Search({\n view: mapView,\n locationEnabled: false,\n container: this.latLongSearchEl.nativeElement,\n popupEnabled: false\n });\n }\n\n mapView.when(function () {\n if (me._currentLatLong &&\n me._currentLatLong.latDecimal && me._currentLatLong.latDecimal !== '' &&\n me._currentLatLong.longDecimal && me._currentLatLong.longDecimal !== '') {\n me.addPoint(me._currentLatLong.latDecimal, me._currentLatLong.longDecimal, 'xxx');\n me.zoomToFacility(me._currentLatLong.latDecimal, me._currentLatLong.longDecimal);\n }\n })\n\n mapView.when(function () {\n mapView.on(\"mouse-wheel\", function (event:any) {\n // prevents zooming with the mouse-wheel event\n event.stopPropagation();\n });\n })\n\n mapView.when(function() {\n if (searchWidget) {\n searchWidget.on(\"select-result\", function (event:any) {\n showPopup(\"xxx\", event.result.feature.geometry);\n \n // let newLatLong: LatLong = {\n // latDecimal: mapView.popup.location.latitude,\n // longDecimal: mapView.popup.location.longitude\n // }\n // me.onNewCoordinates.emit(newLatLong); // this updates lat/long fields as soon as you click selected address\n });\n }\n })\n\n mapView.when(function () {\n mapView.popup.autoOpenEnabled = false;\n mapView.on(\"click\", function (event:any) {\n searchWidget.clear();\n mapView.popup.clear();\n // Get the coordinates of the click on the view around the decimals to 3 decimals\n // var lat = Math.round(event.mapPoint.latitude * 1000) / 1000;\n // var lon = Math.round(event.mapPoint.longitude * 1000) / 1000;\n // this.selectedPoint = event.mapPoint;\n\n // mapView.popup.open({ //define\n // title: \"<div style='font-size: 12px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;'>Update Latitude and Longitude</div>\",\n // content: \n // \"<div style='bold'>Address: </div>\" + \"<div>\" + address + \"</div>\" +\n // \"<input type='button' value=' Yes' id='\" + options.mapId + \"updateLatLong'>&nbsp;<input type='button' value='No' id='\" + options.mapId + \"cancelInfoWindow'>\" ,\n // location: event.mapPoint,\n // actions: [updateLatLongAction, cancelUpdateAction],\n // });\n // Display the popup\n // Execute a reverse geocode using the clicked location\n locator.locationToAddress(\"https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer\", { location: event.mapPoint })\n .then(function (response:any) {\n // If an address is successfully found, show it in the popup's content\n mapView.popup.content = response.address;\n var address = response.address;\n showPopup(address, event.mapPoint);\n })\n .catch(function (error:any) {\n // If the promise fails and no result is found, show a generic message\n mapView.popup.content = \"No address was found for this location\";\n showPopup(\"No address found.\", event.mapPoint);\n });\n\n mapView.popup.visible = true;\n });\n })\n\n mapView.when(function () {\n mapView.popup.on(\"trigger-action\", function (event:any) {\n // Execute the measureThis() function if the measure-this action is clicked\n if (event.action.id === \"update-lat-long\") {\n updateLatLong();\n } else if (event.action.id === \"cancel-update\") {\n cancelUpdate();\n }\n });\n })\n\n function showPopup(address:any, pt:any) {\n mapView.popup.open({\n title: \"<div style='font-size: 12px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;'>Update Latitude and Longitude?</div>\",\n content:\n // \"<div style='bold'>Address: </div>\" + \"<div>\" + address + \"</div>\" +\n \"<div style='font-size: 12px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;'><div>Would you like to update the latitude and longitude values as shown below?</div>\" +\n '<br/>' +\n \"<div>Latitude: \" + Math.round(pt.latitude * 100000) / 100000 + \"</div>\" +\n \"<div>Longitude: \" + Math.round(pt.longitude * 100000) / 100000 + \"</div></div>\",\n // \"<input type='button' value=' Yes' id='\" + options.mapId + \"updateLatLong'>&nbsp;<input type='button' value='No' id='\" + options.mapId + \"cancelInfoWindow'>\" ,\n location: pt,\n actions: [updateLatLongAction, cancelUpdateAction],\n collapsed: true\n });\n // mapView.popup._displayActionTextLimit = 3; // controls whether action button text is shown\n\n }\n\n function updateLatLong() {\n mapView.graphics.removeAll();\n // mapView.graphics.add(new Graphic(event.mapPoint, symbol));\n me.addPoint(mapView.popup.location.latitude, mapView.popup.location.longitude, 'xxx');\n\n let newLatLong: LatLong = {\n latDecimal: mapView.popup.location.latitude,\n longDecimal: mapView.popup.location.longitude\n }\n me.onNewCoordinates.emit(newLatLong);\n\n cancelUpdate();\n mapView.popup.close();\n // console.log(\"updateLatLong called for lat: \" + mapView.popup.location.latitude + \", long: \" + mapView.popup.location.longitude);\n }\n\n function cancelUpdate() {\n mapView.popup.close();\n // console.log(\"cancelUpdate called\");\n }\n\n //*** Add div element to show coordates ***//\n var coordsWidget = document.createElement(\"div\");\n coordsWidget.id = \"coordsWidget\";\n coordsWidget.className = \"esri-widget esri-component\";\n coordsWidget.style.padding = \"7px 15px 5px\";\n mapView.ui.add(coordsWidget, \"bottom-right\");\n\n //*** Update lat, lon, zoom and scale ***//\n function showCoordinates(pt:any) {\n var coords = \"Lat/Lon \" + pt.latitude.toFixed(3) + \" \" + pt.longitude.toFixed(3) +\n \" | Scale 1:\" + Math.round(mapView.scale * 1) / 1 +\n \" | Zoom \" + mapView.zoom;\n coordsWidget.innerHTML = coords;\n }\n\n //*** Add event and show center coordinates after the view is finished moving e.g. zoom, pan ***//\n mapView.watch([\"stationary\"], function () {\n showCoordinates(mapView.center);\n });\n\n //*** Add event to show mouse coordinates on click and move ***//\n mapView.on([\"pointer-down\", \"pointer-move\"], function (evt:any) {\n showCoordinates(mapView.toMap({ x: evt.x, y: evt.y }));\n });\n\n }\n\n async resetMap() {\n this.currentMapView.graphics.removeAll();\n this.currentMapView.goTo({\n target: this._center,\n zoom: this._zoom\n }\n );\n this.zoomToFacility\n }\n\n async zoomToFacility(lat: string, long: string) {\n const [Point] = await loadModules([\n 'esri/geometry/Point'\n ]);\n let point: esri.Point = new Point({\n latitude: lat, //39.957767,\n longitude: long //-82.994939\n });\n\n this.currentMapView.goTo({\n target: point,\n zoom: 16\n }\n );\n }\n\n // async removeSelectedPoint() {\n // if (this.currentGraphic) {\n // this.currentMapView.map.\n // }\n // }\n\n /**\n * Adds a new point to the current map with the given lat/long values.\n * @param lat \n * @param long \n */\n async addPoint(lat: string, long: string, name: string) {\n const [Point, Graphic, SimpleMarkerSymbol, ActionButton] = await loadModules([\n 'esri/geometry/Point',\n 'esri/Graphic',\n 'esri/symbols/SimpleMarkerSymbol',\n 'esri/support/actions/ActionButton'\n ]);\n\n let point: esri.Point = new Point({\n latitude: lat, //39.957767,\n longitude: long //-82.994939\n });\n\n let symbol: esri.SimpleMarkerSymbol = new SimpleMarkerSymbol({\n // type: 'simple-marker',\n style: 'circle',\n color: 'blue',\n size: '12px'\n });\n\n let actionButton: esri.ActionButton = new ActionButton({\n active: true,\n visible: true,\n disabled: false,\n id: 'selectFacility',\n title: 'Select Facility',\n type: 'button'\n });\n\n let currentGraphic = new Graphic({\n geometry: point,\n symbol: symbol,\n popupTemplate: {\n title: name,\n content: name,\n },\n actions: [actionButton]\n });\n\n this.currentMapView.graphics.add(currentGraphic);\n\n this._currentLatLong = {\n latDecimal: lat,\n longDecimal: long\n }\n // console.log('Added point: ', lat, long);\n }\n\n ngOnInit() {\n this.initializeMap();\n }\n\n}","<!-- Here's the DIV that we inject the map into -->\n<div *ngIf=\"showSearch\" class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"alert alert-success\">\n <label>Search for Address:</label>\n <div>Type an address in the input box below and select a match from the drop down list or select the\n magnifying glass button to plot the address on the map.</div>\n <div #latLongSearchNode></div>\n </div>\n </div>\n</div>\n<div #mapViewNode></div>","import { Component, OnInit, Input } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { LatLong } from '@ohioepa/oepa-ebiz-lib';\nimport { Code } from '@ohioepa/oepa-ebiz-lib';\nimport { EsriMapComponent } from '../esri-map/esri-map.component';\n\n@Component({\n selector: 'oepa-ohio-lat-long',\n templateUrl: './ohio-lat-long.component.html',\n styleUrls: ['./ohio-lat-long.component.css']\n})\nexport class OhioLatLongComponent implements OnInit {\n\n @Input() group!: FormGroup;\n /** Form validation will be displayed when showValidation is true. */\n @Input() showValidation = false;\n @Input() latLongCollectionMethods: Code[] = [];\n\n public OHIO = { latMin: 38, latMax: 42, longMin: -85, longMax: -80 };\n\n public collectionMethods = [];\n public isSatelliteView = false;\n public coordsOutsideOfOhio = false;\n\n public customPatterns = { '9': { pattern: new RegExp('[-?0-9]') } ,\n '0': { pattern: new RegExp('[0-9]')}};\n\n // Set our map properties\n mapCenter = [-82.996822, 39.959011];\n basemapType = 'streets-vector';\n mapZoomLevel = 7;\n\n // See app.component.html\n mapLoadedEvent(status: boolean) {\n console.log('The map loaded: ' + status);\n }\n\n public useDMS = false;\n public dmsLat: {deg: number | undefined, min: number | undefined, sec: number | undefined} = {\n deg: undefined,\n min: undefined,\n sec: undefined\n };\n public dmsLong: {deg: number | undefined, min: number | undefined, sec: number | undefined} = {\n deg: undefined,\n min: undefined,\n sec: undefined\n };\n\n constructor() {}\n \n ngOnInit() {\n this.updateLatDMSValue(this.group.controls['latDecimal'].value);\n this.updateLonDMSValue(this.group.controls['longDecimal'].value);\n\n this.group.controls['latDecimal'].valueChanges.subscribe(latDecimal => {\n this.updateLatDMSValue(latDecimal);\n });\n this.group.controls['longDecimal'].valueChanges.subscribe(longDecimal => {\n this.updateLonDMSValue(longDecimal);\n });\n\n }\n\n public updateLatDMSValue(latDecimal: string) {\n if (this.isNum(latDecimal)) {\n this.dmsLat = this.decimalToDMS(latDecimal);\n this.group.controls['dmsLat'].get('deg')?.patchValue(this.dmsLat.deg);\n this.group.controls['dmsLat'].get('min')?.patchValue(this.dmsLat.min);\n this.group.controls['dmsLat'].get('sec')?.patchValue(this.dmsLat.sec);\n this.coordsOutsideOfOhio = !this.checkCoordsInOhio(this.group.controls['latDecimal'].value, this.group.controls['longDecimal'].value);\n }\n }\n\n public updateLonDMSValue(longDecimal: string) {\n if (this.isNum(longDecimal)) {\n this.dmsLong = this.decimalToDMS(longDecimal);\n this.group.controls['dmsLong'].get('deg')?.patchValue(this.dmsLong.deg);\n this.group.controls['dmsLong'].get('min')?.patchValue(this.dmsLong.min);\n this.group.controls['dmsLong'].get('sec')?.patchValue(this.dmsLong.sec);\n this.coordsOutsideOfOhio = !this.checkCoordsInOhio(this.group.controls['latDecimal'].value, this.group.controls['longDecimal'].value);\n }\n }\n\n // default to required if oepaRequired is not specified\n // public isRequired() {\n // \t// return (this.oepaRequired() !== false);\n // };\n\n async zoomToCoordinates(latDecimal: string, longDecimal: string, facilityMap: EsriMapComponent) {\n facilityMap.resetMap();\n facilityMap.addPoint(latDecimal, longDecimal, 'xxx');\n facilityMap.zoomToFacility(latDecimal, longDecimal);\n console.log(this.group.value);\n }\n\n public convertCoordsToDMS(dmsLatitude: FormGroup, dmsLongitude: FormGroup) {\n if (this.isNum(dmsLatitude.controls['deg'].value) &&\n this.isNum(dmsLatitude.controls['min'].value) &&\n this.isNum(dmsLatitude.controls['sec'].value) &&\n this.isNum(dmsLongitude.controls['deg'].value) &&\n this.isNum(dmsLongitude.controls['min'].value) &&\n this.isNum(dmsLongitude.controls['sec'].value)) {\n var decimalLat: string;\n var decimalLong: string;\n var dmsLat = {\n deg: dmsLatitude.controls['deg'].value,\n min: dmsLatitude.controls['min'].value,\n sec: dmsLatitude.controls['sec'].value\n }\n var dmsLong = { // force lat/long to be in Western Hemisphere\n deg: Number(dmsLongitude.controls['deg'].value) < 0 ? dmsLongitude.controls['deg'].value : -1 * Number(dmsLongitude.controls['deg'].value),\n min: dmsLongitude.controls['min'].value,\n sec: dmsLongitude.controls['sec'].value\n }\n\n decimalLat = this.dmsToDecimal(dmsLat);\n decimalLong = this.dmsToDecimal(dmsLong);\n \n this.group.controls['latDecimal'].patchValue(decimalLat);\n this.group.controls['longDecimal'].patchValue(decimalLong);\n }\n }\n\n public dmsToDecimal(dms: any) {\n if (null != dms.deg && null != dms.min && null != dms.sec) {\n var decimal = undefined;\n var decimalFraction = dms.min / 60.0 + dms.sec / 3600.0;\n decimal = (dms.deg > 0) ? dms.deg + decimalFraction : dms.deg - decimalFraction;\n return decimal.toFixed(6);\n }\n return null;\n };\n\n public decimalToDMS(decimal:any) {\n var dms: {deg: number | undefined, min: number | undefined, sec: number | undefined} = {\n deg: undefined,\n min: undefined,\n sec: undefined,\n };\n var absolute = Math.abs(decimal);\n dms.deg = Math.floor(absolute);\n var minsec = (absolute - dms.deg) * 60.0;\n dms.min = Math.floor(minsec);\n dms.sec = Number(((minsec - dms.min) * 60.0).toFixed(6));\n if (dms.sec === 60) {\n dms.min += 1;\n dms.sec = 0;\n }\n if (dms.min === 60) {\n dms.deg += 1;\n dms.min = 0;\n }\n return dms;\n };\n\n public checkCoordsInOhio(latitude: any, longitude: any) {\n var coordsInOhio = true;\n try {\n if ((Number(latitude) < this.OHIO.latMin || Number(latitude) > this.OHIO.latMax ||\n Number(longitude) < this.OHIO.longMin || Number(longitude) > this.OHIO.longMax)) {\n coordsInOhio = false;\n }\n } catch (e) {\n console.log('ERROR: bad lat/long: ' + latitude + '/' + longitude);\n }\n return coordsInOhio;\n }\n\n updateCoordinates(coords: LatLong) {\n this.group.controls['latDecimal'].patchValue(coords.latDecimal);\n this.group.controls['longDecimal'].patchValue(coords.longDecimal);\n }\n\n isNum(value: any) {\n if (value && null != value && undefined != value && value != '') {\n return true;\n }\n return false;\n }\n\n public getDMSLatFormGroup() : FormGroup {\n return this.group.controls['dmsLat'] as FormGroup;\n }\n\n public getDMSLongFormGroup() : FormGroup {\n return this.group.controls['dmsLong'] as FormGroup;\n }\n\n}\n","<div [style.pointer-events]=\"group.enabled ? null : 'none'\">\n\n<form [formGroup]=\"group\" novalidate>\n <div class=\"oepa-workflow-component-50\">\n <div class=\"oepa-section-component-body\">\n <div class=\"form-group\">\n <div class=\"alert alert-info\">\n Use the map on the right to set the latitude and longitude values and verify they are correct.\n You may click on the map to choose latitude and longitude coordinates or enter the latitude and longitude\n values in the input fields below.\n Alternately, you may enter an address in the input field at the top of the map to find coordinates by\n address.\n </div>\n </div>\n <div *ngIf=\"useDMS\">\n <button class=\"btn btn-primary\" (click)=\"convertCoordsToDMS(getDMSLatFormGroup(), getDMSLongFormGroup()); useDMS = !useDMS\">Convert\n Coordinates to Decimal Degrees</button>\n <div class=\"row\" formGroupName=\"dmsLat\">\n <div class=\"col-md-12\">\n <label>Latitude</label>\n <div class=\"row\">\n <div class=\"col-md-4\">\n <div class=\"form-group\">\n <input formControlName=\"deg\" name=\"latDegrees\" class=\"form-control\" type=\"number\" placeholder=\"Degrees\"\n min=\"-89\" max=\"89\" ng-blur=\"onLatDMSChange()\" maxlength=\"\"\n [ngClass]=\"{'is-invalid':showValidation && getDMSLatFormGroup()['controls']['deg'].status === 'INVALID'}\">\n <small class=\"invalid-feedback\" *ngIf=\"getDMSLatFormGroup()['controls']['deg'].hasError('required')\">xxx is required</small>\n </div>\n </div>\n <div class=\"col-md-4\">\n <div class=\"form-group\">\n <input formControlName=\"min\" name=\"latMinutes\" class=\"form-control\" type=\"number\" placeholder=\"Minutes\"\n min=\"0\" max=\"59\" ng-blur=\"onLatDMSChange()\"\n [ngClass]=\"{'is-invalid':showValidation && getDMSLatFormGroup()['controls']['min'].status === 'INVALID'}\">\n <small class=\"invalid-feedback\" *ngIf=\"getDMSLatFormGroup()['controls']['min'].hasError('required')\">Primary SIC Code is required</small>\n </div>\n </div>\n <div class=\"col-md-4\">\n <div class=\"form-group\">\n <input formControlName=\"sec\" name=\"latSeconds\" class=\"form-control\" type=\"number\" placeholder=\"Seconds\"\n min=\"0\" max=\"59.999999\" ng-blur=\"onLatDMSChange()\"\n [ngClass]=\"{'is-invalid':showValidation && getDMSLatFormGroup()['controls']['sec'].status === 'INVALID'}\">\n <small class=\"invalid-feedback\" *ngIf=\"getDMSLatFormGroup()['controls']['sec'].hasError('required')\">Primary SIC Code is required</small>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"row\" formGroupName=\"dmsLong\">\n <div class=\"col-md-12\">\n <label>Longitude</label>\n <div class=\"row\">\n <div class=\"col-md-4\">\n <div class=\"form-group\">\n <input formControlName=\"deg\" name=\"longDegrees\" class=\"form-control\" type=\"number\" placeholder=\"Degrees\"\n min=\"-179\" max=\"179\" ng-blur=\"onLongDMSChange()\"\n [ngClass]=\"{'is-invalid':showValidation && getDMSLongFormGroup()['controls']['deg'].status === 'INVALID'}\">\n <small class=\"invalid-feedback\" *ngIf=\"getDMSLongFormGroup()['controls']['deg'].hasError('required')\">Primary SIC Code is required</small>\n </div>\n </div>\n <div class=\"col-md-4\">\n <div class=\"form-group\">\n <input formControlName=\"min\" name=\"longMinutes\" class=\"form-control\" type=\"number\" placeholder=\"Minutes\"\n min=\"0\" max=\"59\" ng-blur=\"onLongDMSChange()\"\n [ngClass]=\"{'is-invalid':showValidation && getDMSLongFormGroup()['controls']['min'].status === 'INVALID'}\">\n <small class=\"invalid-feedback\" *ngIf=\"getDMSLongFormGroup()['controls']['min'].hasError('required')\">Primary SIC Code is required</small>\n </div>\n </div>\n <div class=\"col-md-4\">\n <div class=\"form-group\">\n <input formControlName=\"sec\" name=\"longSeconds\" class=\"form-control\" type=\"number\" placeholder=\"Seconds\"\n min=\"0\" max=\"59.999999\" ng-blur=\"onLongDMSChange()\"\n [ngClass]=\"{'is-invalid':showValidation && getDMSLongFormGroup()['controls']['sec'].status === 'INVALID'}\">\n <small class=\"invalid-feedback\" *ngIf=\"getDMSLongFormGroup()['controls']['sec'].hasError('required')\">Primary SIC Code is required</small>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"!useDMS\">\n <button class=\"btn btn-primary\" (click)=\"useDMS = !useDMS\">Enter Coordinates in Degrees, Minutes, Seconds</button>\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label>Latitude</label>\n <input formControlName=\"latDecimal\" name=\"Latitude\" class=\"form-control\" type=\"text\" placeholder=\"Latitude\"\n ng-blur=\"onLatLongInputChange()\" mask=\"separator.6\" decimalMarker=\".\" [allowNegativeNumbers]=\"true\" [dropSpecialCharacters]=\"false\" \n [ngClass]=\"{'is-invalid':showValidation && group['controls']['latDecimal'].status === 'INVALID'}\">\n <small class=\"invalid-feedback\" *ngIf=\"group['controls']['latDecimal'].hasError('required')\">Latitude is required</small>\n </div>\n <div class=\"form-group\">\n <label>Longitude</label>\n <input formControlName=\"longDecimal\" name=\"Longitude\" class=\"form-control\" type=\"text\" placeholder=\"Longitude\"\n ng-blur=\"onLatLongInputChange()\" mask=\"separator.6\" decimalMarker=\".\" [allowNegativeNumbers]=\"true\" [dropSpecialCharacters]=\"false\"\n [ngClass]=\"{'is-invalid':showValidation && group['controls']['longDecimal'].status === 'INVALID'}\">\n <small class=\"invalid-feedback\" *ngIf=\"group['controls']['longDecimal'].hasError('required')\">Longitude is required</small>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"group['controls']['latDecimal'].value !== '' && group['controls']['longDecimal'].value !== ''\">\n <button class=\"btn btn-primary\" (click)=\"zoomToCoordinates(group['controls']['latDecimal'].value,group['controls']['longDecimal'].value, facilityMap)\">Zoom To These Coordinates</button>\n </div>\n\n <div *ngIf=\"latLongCollectionMethods && latLongCollectionMethods.length > 0\" class=\"form-group\">\n <label>Collection Method</label>\n <select class=\"form-select\" id=\"collectionMethodType\" name=\"collectionMethodType\" formControlName=\"collectionMethodType\"\n [ngClass]=\"{'is-invalid':showValidation && group['controls']['collectionMethodType'].status === 'INVALID'}\">\n <option value=\"\">--Select Collection Method--</option>\n <option *ngFor=\"let n of latLongCollectionMethods\" [ngValue]=\"n.codeValue\">{{n.description}}</option>\n </select>\n <small class=\"invalid-feedback\" *ngIf=\"group['controls']['collectionMethodType'].hasError('required')\">Collection Method is required</small>\n </div>\n\n <div *ngIf=\"coordsOutsideOfOhio\">\n <div class=\"alert alert-danger\" role=\"alert\" *ngIf=\"group.get('allowOutsideOfOhio')?.value!=='yes'\">\n The Latitude and Longitude values entered are not within the state of Ohio. Please enter a latitude value\n between 38 and 42 and a\n longitude value between -85 and -80 or indicate below that this location is outside of Ohio.\n </div>\n <div>\n <oepa-yes-no [group]=\"group\" field=\"allowOutsideOfOhio\" id=\"allowOutsideOfOhio\" [showValidation]=\"showValidation\">Is\n this location outside of Ohio?</oepa-yes-no>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"oepa-action-component-50\">\n <div class=\"oepa-section-component-body\">\n <oepa-esri-map\n #facilityMap [center]=\"mapCenter\"\n [basemap]=\"basemapType\"\n [zoom]=\"mapZoomLevel\"\n (mapLoaded)=\"mapLoadedEvent($event)\"\n [currentLatLong]=\"group.value\"\n (onNewCoordinates)=\"updateCoordinates($event)\"\n [showSearch]=\"group.enabled\">\n </oepa-esri-map>\n </div>\n </div>\n\n</form>\n\n</div>","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { EDocumentAttachment } from './edocument-attachment';\nimport { StringResponse } from '@ohioepa/oepa-ebiz-lib';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EdocAttachmentService {\n private fileUtilUrl = '/ebiz/api/v1/fileutil'\n\n constructor(private http: HttpClient) { }\n\n public createEDocAttachment(eDocAttachment: EDocumentAttachment) : Observable<StringResponse> {\n let url = this.fileUtilUrl + '/eDocumentAttachments';\n return this.http.post(url, eDocAttachment);\n }\n \n public deleteEDocAttachment(eDocAttachmentID: string) : Observable<any> {\n let url = this.fileUtilUrl + '/eDocumentAttachments/' + eDocAttachmentID;\n return this.http.delete(url);\n }\n\n public retrieveEDocAttachment(eDocAttachmentID: string): Observable<EDocumentAttachment> {\n let url = this.fileUtilUrl + '/eDocumentAttachments/' + eDocAttachmentID;\n return this.http.get<EDocumentAttachment>(url);\n }\n\n public downloadEDocAttachment(eDocAttachmentID: string): Observable<any> {\n let url = this.fileUtilUrl + '/eDocumentAttachments/' + eDocAttachmentID + '/download';\n const headers = new HttpHeaders();\n headers.append('Content-type', 'application/json;odata=verbose');\n return this.http.get(url, { headers: headers, responseType: 'blob' });\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { EDocumentAttachment } from './edocument-attachment';\nimport { OepaAttachment, OepaComponentIdService, OepaFileUtilService } from '@ohioepa/oepa-common-lib';\nimport { EdocAttachmentService } from './edoc-attachment.service';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { ConfirmationModalComponent } from '../confirmation-modal/confirmation-modal.component';\nimport { Subject, Subscription } from 'rxjs';\n\n@Component({\n selector: 'oepa-edoc-attachment',\n templateUrl: './edoc-attachment.component.html',\n styleUrls: ['./edoc-attachment.component.css']\n})\nexport class EdocAttachmentComponent implements OnInit {\n public componentId = 'EdocAttachmentComponent';\n public errorMsg: string = '';\n public busy = false;\n private deleteSubscription: Subscription | undefined;\n\n @Input() attachment: EDocumentAttachment = {};\n @Input() group!: FormGroup;\n @Input() field: string = '';\n @Input() label: string = '';\n @Input() errorLabel: string = '';\n @Input() showValidation = false;\n @Input() accept: string = '';\n @Input() removeAllowed = true;\n @Input() okToDelete: Subject<boolean> | undefined;\n\n @Output() fileUploaded: EventEmitter<EDocumentAttachment> = new EventEmitter<EDocumentAttachment>();\n @Output() fileRemoved: EventEmitter<EDocumentAttachment> = new EventEmitter<EDocumentAttachment>();\n @Output() download: EventEmitter<EDocumentAttachment> = new EventEmitter<EDocumentAttachment>();\n \n constructor(private idService: OepaComponentIdService,\n private fileUtilService: OepaFileUtilService,\n private eDocAttachmentService: EdocAttachmentService,\n private modalService: BsModalService\n ) { }\n\n ngOnInit(): void {\n if (this.group) {\n this.componentId = this.idService.getComponentId(this.group);\n this.componentId += (this.componentId.length > 0 ? '_' : '') + this.field;\n }\n }\n\n public fileChange(event: any) {\n this.busy = true;\n this.errorMsg = '';\n const fileList: FileList = event.target.files;\n if (fileList.length > 0) {\n const file: File = fileList[0];\n \n if (this.fileTypeCanBeAccepted(file)) {\n this.fileUtilService.uploadFile(file).subscribe({\n next: (attachment: OepaAttachment) => {\n this.group.controls[this.field].setValue(attachment.userFilename);\n this.attachment = this.appendOepaAttachmentData(attachment);\n this.eDocAttachmentService.createEDocAttachment(this.attachment).subscribe(id => {\n this.attachment.id = id.response;\n this.fileUploaded.emit(this.attachment);\n this.busy = false;\n }, err => {\n this.errorMsg = 'Error uploading file: ' + err;\n this.busy = false;\n });\n }, error: err => {\n this.errorMsg = 'Error uploading file: ' + err || '';\n this.busy = false;\n }});\n } else {\n this.errorMsg = 'Cannot accept this type of file. Please upload a file of type: ' + this.accept;\n this.busy = false;\n }\n }\n }\n\n private appendOepaAttachmentData(oepa: OepaAttachment) : EDocumentAttachment {\n let result = this.attachment || {};\n result.systemFilename = oepa.systemFilename;\n result.userFilename = oepa.userFilename;\n result.location = oepa.location;\n return result;\n }\n\n private fileTypeCanBeAccepted(file:any): boolean {\n let ok = true;\n if (this.accept) {\n const mimeType = this.fileUtilService.mimeTypeForFile(file.name);\n if (this.accept.indexOf(mimeType) < 0) {\n ok = false;\n }\n }\n return ok;\n }\n\n public removeFile() {\n this.errorMsg = '';\n const modal: BsModalRef = this.modalService.show(ConfirmationModalComponent, { ignoreBackdropClick: true });\n (<ConfirmationModalComponent>modal.content).headerText = 'Remove Attachment';\n (<ConfirmationModalComponent>modal.content).bodyText = 'Do you want to remove the attachment: ' + this.attachment.userFilename + '?';\n (<ConfirmationModalComponent>modal.content).confirmBtnLabel = 'Yes';\n (<ConfirmationModalComponent>modal.content).cancelBtnLabel = 'No';\n (<ConfirmationModalComponent>modal.content).confirmClicked.subscribe(() => {\n this.attemptDeleteAttachment();\n });\n }\n\n private attemptDeleteAttachment() {\n this.busy = true;\n if (!this.okToDelete) {\n this.deleteAttachment();\n } else {\n if (!this.deleteSubscription) {\n this.deleteSubscription = this.okToDelete.subscribe(ok => {\n if (ok) {\n this.deleteAttachment();\n } else {\n this.errorMsg = 'Unable to delete attachment. Reference still active.';\n this.busy = false;\n }\n });\n }\n }\n this.fileRemoved.emit(this.attachment);\n }\n\n private deleteAttachment() {\n this.group.controls[this.field].setValue(undefined);\n if (this.attachment.id) {\n this.eDocAttachmentService.deleteEDocAttachment(this.attachment.id).subscribe({\n next: () => {\n this.clearAttachment();\n this.busy = false;\n }, error: err => {\n this.errorMsg = \"Error deleting file: \" + err;\n this.busy = false;\n }});\n }\n }\n\n private clearAttachment() {\n this.attachment.id = undefined;\n this.attachment.userFilename = undefined;\n this.attachment.location = undefined;\n this.attachment.eDocHandleID = undefined;\n this.attachment.systemFilename = undefined;\n this.group.controls[this.field].setValue('');\n }\n\n public downloadFile(attachment: EDocumentAttachment) {\n this.errorMsg = '';\n if (!attachment.systemFilename || attachment.systemFilename.length === 0) {\n this.downloadEDocFile(attachment);\n } else {\n this.downloadServerFile(attachment);\n }\n }\n\n private downloadEDocFile(attachment: EDocumentAttachment) {\n if (attachment.id) {\n this.eDocAttachmentService.downloadEDocAttachment(attachment.id).subscribe({\n next: data => {\n const mimeType = this.fileUtilService.mimeTypeForFile(attachment.userFilename || '');\n if (mimeType) {\n this.fileUtilService.downloadFile(data, mimeType);\n this.download.emit(attachment);\n } else {\n this.errorMsg = 'Unable to download file: ' + attachment.userFilename + '. Cannot determine mime type';\n }\n }, error: err => {\n this.errorMsg = 'Error downloading file: ' + attachment.userFilename + ': ' + err;\n }\n });\n }\n }\n\n private downloadServerFile(attachment: EDocumentAttachment) {\n this.fileUtilService.downloadAttachment(attachment).subscribe({\n next: data => {\n const mimeType = this.fileUtilService.mimeTypeForFile(attachment.systemFilename || '');\n if (mimeType) {\n this.fileUtilService.downloadFile(data, mimeType);\n } else {\n this.errorMsg = 'Unable to download file: ' + attachment.userFilename + '. Cannot determine mime type';\n }\n }, error: err => {\n this.errorMsg = 'Error downloading file: ' + attachment.userFilename + ': ' + err;\n }\n });\n }\n\n}\n","<form [formGroup]=\"group\">\n <div *ngIf=\"!attachment || !attachment.userFilename\" class=\"form-group\">\n <div>\n <label *ngIf=\"label\">{{label}}</label>\n <div class=\"form-group\">\n <div class=\"input-group\">\n <span *ngIf=\"!busy\" class=\"input-group-btn\">\n <label class=\"btn btn-primary btn-file\">\n Browse&hellip;\n <input type=\"file\" style=\"display: none;\" (change)=\"fileChange($event)\"\n [id]=\"componentId+'_BrowseBtn'\" class=\"form-control\"\n [attr.accept]=\"accept ? accept : null\"\n [disabled]=\"group.controls[field].status === 'DISABLED'\">\n </label>\n </span>\n <span *ngIf=\"busy\"> <span class=\"spinner-border text-primary\" role=\"status\"></span></span>\n <input [ngClass]=\"{'is-invalid':showValidation && group.controls[field].status === 'INVALID'}\"\n type=\"text\" class=\"form-control\" placeholder=\"No file chosen\" [id]=\"componentId+'_Input'\" readonly>\n <small class=\"invalid-feedback\"\n *ngIf=\"showValidation && group.controls[field].status === 'INVALID'\">{{errorLabel || label}} is\n required</small>\n </div>\n <!-- dummy input field for validation purposes -->\n <input type=\"text\" [hidden]=\"true\" [formControlName]=\"field\" />\n </div>\n </div>\n </div>\n <div *ngIf=\"attachment && attachment.userFilename\">\n <div>\n <label *ngIf=\"label\">{{label}}</label>\n <div class=\"input-group\">\n <a (click)=\"downloadFile(attachment)\" [id]=\"componentId+'_DownloadFileLink'\" \n class=\"form-control\">{{attachment.userFilename}}</a>\n <span *ngIf=\"removeAllowed && !busy\" class=\"input-group-btn\">\n <button type=\"button\" class=\"btn btn-primary\" [id]=\"componentId+'_RemoveFileBtn'\"\n (click)=\"removeFile()\"\n [disabled]=\"group.controls[field].status === 'DISABLED'\">Remove Attachment</button>\n </span>\n <span *ngIf=\"busy\"> <span class=\"spinner-border text-primary\" role=\"status\"></span></span>\n </div>\n </div>\n </div>\n <div *ngIf=\"errorMsg\" class=\"alert alert-danger\" role=\"alert\">{{errorMsg}}</div>\n</form>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { PortalDocumentSection } from '../portal-document-section';\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\n\n@Component({\n selector: 'oepa-insert-section-modal',\n templateUrl: './section-modal.component.html',\n styleUrls: ['./section-modal.component.css']\n})\nexport class SectionModalComponent implements OnInit {\n @Input() section!: PortalDocumentSection;\n @Input() label = '';\n\n @Output() onSectionSave: EventEmitter<PortalDocumentSection> = new EventEmitter<PortalDocumentSection>();\n\n public modalForm!: FormGroup;\n\n constructor(private fb: FormBuilder, public bsModalRef: BsModalRef) { }\n\n ngOnInit() {\n this.createForm();\n }\n\n private createForm() {\n this.modalForm = this.fb.group({\n name: [ this.section.name, [Validators.required]]\n });\n }\n\n save() {\n this.section.name = this.modalForm.get('name')?.value;\n this.onSectionSave.emit(this.section);\n this.bsModalRef.hide();\n }\n\n cancel() {\n this.bsModalRef.hide();\n }\n\n}\n","<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">{{label}}</h4>\n <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"cancel()\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <div [formGroup]=\"modalForm\">\n <div class=\"row\">\n <div class=\"col-sm-12 form-group\">\n <label>Section Name</label>\n <input class=\"form-control\" id=\"partNameInput\" formControlName=\"name\"/>\n </div>\n </div>\n\n </div>\n </div>\n <div class=\"modal-footer\">\n <button type=\"submit\" id=\"saveBtn\" [disabled]=\"modalForm.invalid\" class=\"btn btn-primary mr-1\" (click)=\"save()\">Save</button>\n <button type=\"button\" id=\"cancelBtn\" class=\"btn btn-primary mr-1\" (click)=\"cancel()\">Cancel</button>\n </div>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { PortalDocumentGroup } from '../portal-document-group';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\n\n@Component({\n selector: 'oepa-group-modal',\n templateUrl: './group-modal.component.html',\n styleUrls: ['./group-modal.component.css']\n})\nexport class GroupModalComponent implements OnInit {\n @Input() group!: PortalDocumentGroup;\n @Input() label = '';\n\n @Output() onGroupSave: EventEmitter<PortalDocumentGroup> = new EventEmitter<PortalDocumentGroup>();\n\n public modalForm!: FormGroup;\n\n constructor(private fb: FormBuilder, public bsModalRef: BsModalRef) { }\n\n ngOnInit() {\n this.createForm();\n }\n\n private createForm() {\n this.modalForm = this.fb.group({\n name: [ this.group.name, [Validators.required]]\n });\n }\n\n save() {\n this.group.name = this.modalForm.get('name')?.value;\n this.onGroupSave.emit(this.group);\n this.bsModalRef.hide();\n }\n\n cancel() {\n this.bsModalRef.hide();\n }\n}\n","<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">{{label}}</h4>\n <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"cancel()\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <div [formGroup]=\"modalForm\">\n <div class=\"row\">\n <div class=\"col-sm-12 form-group\">\n <label>Group Name</label>\n <input class=\"form-control\" id=\"partNameInput\" formControlName=\"name\"/>\n </div>\n </div>\n\n </div>\n </div>\n <div class=\"modal-footer\">\n <button type=\"submit\" id=\"saveBtn\" [disabled]=\"modalForm.invalid\" class=\"btn btn-primary mr-1\" (click)=\"save()\">Save</button>\n <button type=\"button\" id=\"cancelBtn\" class=\"btn btn-primary mr-1\" (click)=\"cancel()\">Cancel</button>\n </div>\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { PortalDocumentGroup } from '../portal-document-group';\nimport { PortalDocumentPart } from '../portal-document-part';\nimport { DocumentService } from '../document.service';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { ToastrService } from 'ngx-toastr';\nimport { GroupModalComponent } from '../group-modal/group-modal.component';\nimport { DocumentEventType } from '../document-event-type';\nimport { DocumentEventEntityType } from '../document-event-entity-type';\nimport { DocumentEvent } from '../document-event';\nimport { ConfirmationModalComponent } from '../../confirmation-modal/confirmation-modal.component';\n\n@Component({\n selector: 'oepa-document-group',\n templateUrl: './document-group.component.html',\n styleUrls: ['./document-group.component.css']\n})\nexport class DocumentGroupComponent implements OnInit {\n @Input() group!: PortalDocumentGroup;\n\n @Output() onMoveUp: EventEmitter<PortalDocumentGroup> = new EventEmitter<PortalDocumentGroup>();\n @Output() onInsertAbove: EventEmitter<PortalDocumentGroup> = new EventEmitter<PortalDocumentGroup>();\n @Output() onMoveDown: EventEmitter<PortalDocumentGroup> = new EventEmitter<PortalDocumentGroup>();\n @Output() onInsertBelow: EventEmitter<PortalDocumentGroup> = new EventEmitter<PortalDocumentGroup>();\n @Output() onDelete: EventEmitter<PortalDocumentGroup> = new EventEmitter<PortalDocumentGroup>();\n\n\n public busy = false;\n\n constructor(private modalService: BsModalService,\n private toastr: ToastrService,\n private documentService: DocumentService) { }\n\n ngOnInit() {\n }\n\n public moveUp() {\n this.onMoveUp.emit(this.group);\n }\n\n public insertAbove() {\n this.onInsertAbove.emit(this.group);\n }\n\n public moveDown() {\n this.onMoveDown.emit(this.group);\n }\n\n public insertBelow() {\n this.onInsertBelow.emit(this.group);\n }\n\n public delete() {\n this.onDelete.emit(this.group);\n }\n\n public movePartUp(part: PortalDocumentPart) {\n if (part.sequence && part.sequence > 1) {\n let clone = Object.assign({}, this.group);\n if (clone.parts && clone.documentID) {\n clone.parts.splice(part.sequence - 2, 0, clone.parts.splice(part.sequence - 1, 1)[0]);\n this.resequence(clone);\n this.documentService.updateDocumentGroup(clone).subscribe({\n next: () => {\n this.documentService.updateDcoumentID(clone.documentID || '');\n }, error: err => {\n this.toastr.error('Failed updating group: ' + err, 'ERROR');\n }});\n }\n }\n }\n\n public insertAbovePart(part: PortalDocumentPart) {\n if (part.sequence) {\n let newPart = this.newPart(part.sequence - 1 || 1);\n this.insertPart(part.sequence -1, newPart);\n }\n }\n\n public movePartDown(part: PortalDocumentPart) {\n if (part.sequence && this.group.parts && part.sequence < this.group.parts.length) {\n let clone = Object.assign({}, this.group);\n if (clone.parts && clone.documentID) {\n clone.parts.splice(part.sequence, 0, clone.parts.splice(part.sequence - 1, 1)[0]);\n this.resequence(clone);\n this.documentService.updateDocumentGroup(clone).subscribe({\n next: () => {\n this.documentService.updateDcoumentID(clone.documentID || '');\n }, error: err => {\n this.toastr.error('Failed updating group: ' + err, 'ERROR');\n }});\n }\n }\n }\n\n public insertBelowPart(part: PortalDocumentPart) {\n if (part.sequence) {\n let newPart = this.newPart(part.sequence + 1);\n this.insertPart(part.sequence, newPart);\n }\n }\n\n private newPart(sequence: number) : PortalDocumentPart {\n return {\n groupID: this.group.id,\n documentID: this.group.documentID,\n sequence: sequence,\n name: 'Paragraph ' + sequence,\n display: true,\n required: true\n };\n }\n\n private insertPart(insertIndex: number, newPart: PortalDocumentPart) {\n const initialState = {\n headerText: 'Insert Paragraph',\n bodyText: 'Insert new paragraph?'\n }\n let modal = this.modalService.show(ConfirmationModalComponent, {initialState, ignoreBackdropClick: true});\n (<ConfirmationModalComponent>modal.content).confirmClicked.subscribe(() => {\n let clone = Object.assign({}, this.group);\n if (clone.parts && clone.documentID) {\n clone.parts.splice(insertIndex, 0, newPart);\n this.resequence(clone);\n this.documentService.createDocumentPart(newPart).subscribe({\n next: partID => {\n newPart.id = partID;\n this.documentService.updateDocumentGroup(clone).subscribe({\n next: () => {\n this.documentService.updateDcoumentID(clone.documentID || '');\n }, error: err => {\n this.toastr.error('Failed updating group: ' + err, 'ERROR');\n }});\n }, error: err => {\n this.toastr.error('Failed inserting paragraph: ' + err, 'ERROR');\n }});\n }\n });\n }\n\n public deletePart(part: PortalDocumentPart) {\n let bodyText = 'Delete paragraph ' + part.name + '?';\n const eventOverride: DocumentEvent | undefined = this.documentService.isOverriddenEvent({eventType: DocumentEventType.Delete, entityType: DocumentEventEntityType.Part});\n if (eventOverride && eventOverride.confirmationMessage) {\n bodyText = eventOverride.confirmationMessage;\n }\n const initialState = {\n headerText: 'Delete Paragraph',\n bodyText: bodyText,\n confirmBtnLabel: 'Yes',\n cancelBtnLabel: 'No'\n }\n let modal = this.modalService.show(ConfirmationModalComponent, {initialState, ignoreBackdropClick: true});\n (<ConfirmationModalComponent>modal.content).confirmClicked.subscribe(() => {\n this.doDeletePart(part);\n });\n }\n\n private doDeletePart(part: PortalDocumentPart) {\n let clone = Object.assign({}, this.group);\n if (clone.parts && clone.documentID) {\n clone.parts = clone.parts.filter(keep => {\n keep.id != part.id;\n });\n this.resequence(clone);\n this.documentService.updateDocumentGroup(clone).subscribe({\n next: () => {\n this.documentService.deleteDocumentPart(part).subscribe({\n next: () => {\n this.documentService.updateDcoumentID(clone.documentID || '');\n }, error: err => {\n this.toastr.error('Failed deleting paragraph: ' + err, 'ERROR');\n }});\n }, error: err => {\n this.toastr.error('Failed updating group: ' + err, 'ERROR');\n }});\n }\n }\n\n private resequence(group: PortalDocumentGroup) {\n let sequence = 1;\n if (group.parts) {\n group.parts.forEach(part => {\n part.sequence = sequence++;\n });\n }\n }\n\n public editGroup(group: PortalDocumentGroup) {\n const initialState = {\n label: 'Edit Group Attributes',\n group: group\n }\n let modal = this.modalService.show(GroupModalComponent, {initialState, ignoreBackdropClick: true});\n (<GroupModalComponent>modal.content).onGroupSave.subscribe(updatedGroup => {\n this.busy = true;\n this.documentService.updateDocumentGroup(updatedGroup).subscribe(() => {\n this.busy = false;\n }, err => {\n this.toastr.error('Failed updating group: ' + err, 'ERROR');\n this.busy = false;\n })\n });\n }\n\n}\n","<div *ngIf=\"group\" class=\"card\">\n <div *ngIf=\"!group.isCollapsed\" class=\"row\">\n <div class=\"col-sm-10\">\n <div *ngIf=\"group.parts && group.parts.length > 0\">\n <div *ngFor=\"let p of group.parts\" class=\"row\">\n <div class=\"col-sm-12\">\n <oepa-document-part-editor [part]=\"p\" (onMoveUp)=\"movePartUp($event)\"\n (onInsertAbove)=\"insertAbovePart($event)\" (onMoveDown)=\"movePartDown($event)\"\n (onInsertBelow)=\"insertBelowPart($event)\" (onDelete)=\"deletePart($event)\">\n </oepa-document-part-editor>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-sm-2 alert alert-info\" role=\"alert\">\n <div class=\"row\">\n <div class=\"col-sm-12\">\n <button [id]=\"'deleteGroup'+group.sequence\" class=\"btn\" (click)=\"this.delete()\" tooltip=\"Delete Group\">\n <i class=\"bi bi-trash\"></i> \n </button>\n &nbsp;{{group.name || ''}}\n </div>\n <div class=\"col-sm-12\">\n <button [id]=\"'moveGroupUp'+group.sequence\" class=\"btn\" (click)=\"moveUp()\" tooltip=\"Move Group Up\">\n <i class=\"bi bi-chevron-double-up\"></i>\n </button>\n <button [id]=\"'insertaboveGroup'+group.sequence\" class=\"btn\" (click)=\"insertAbove()\" tooltip=\"Insert Group Above\">\n <i class=\"bi bi-arrow-up-circle\"></i>\n </button>\n </div>\n <div class=\"col-sm-12\">\n <button [id]=\"'moveGroupDown'+group.sequence\" class=\"btn\" (click)=\"moveDown()\" tooltip=\"Move Group Down\">\n <i class=\"bi bi-chevron-double-down\"></i>\n </button>\n <button [id]=\"'insertBelowGroup'+group.sequence\" class=\"btn\" (click)=\"insertBelow()\" tooltip=\"Insert Group Below\">\n <i class=\"bi bi-arrow-down-circle\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n</div>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { PortalDocumentSection } from '../portal-document-section';\nimport { PortalDocumentGroup } from '../portal-document-group';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { ToastrService } from 'ngx-toastr';\nimport { DocumentService } from '../document.service';\nimport { SectionModalComponent } from '../section-modal/section-modal.component';\nimport { GroupModalComponent } from '../group-modal/group-modal.component';\nimport { DocumentEvent } from '../document-event';\nimport { DocumentEventType } from '../document-event-type';\nimport { DocumentEventEntityType } from '../document-event-entity-type';\nimport { ConfirmationModalComponent } from '../../confirmation-modal/confirmation-modal.component';\n\n@Component({\n selector: 'oepa-document-section',\n templateUrl: './document-section.component.html',\n styleUrls: ['./document-section.component.css']\n})\nexport class DocumentSectionComponent implements OnInit {\n @Input() section!: PortalDocumentSection;\n\n @Output() onMoveUp: EventEmitter<PortalDocumentSection> = new EventEmitter<PortalDocumentSection>();\n @Output() onInsertAbove: EventEmitter<PortalDocumentSection> = new EventEmitter<PortalDocumentSection>();\n @Output() onMoveDown: EventEmitter<PortalDocumentSection> = new EventEmitter<PortalDocumentSection>();\n @Output() onInsertBelow: EventEmitter<PortalDocumentSection> = new EventEmitter<PortalDocumentSection>();\n @Output() onDelete: EventEmitter<PortalDocumentSection> = new EventEmitter<PortalDocumentSection>();\n\n\n public busy = false;\n\n constructor(private modalService: BsModalService,\n private toastr: ToastrService,\n private documentService: DocumentService) { }\n\n ngOnInit() {\n }\n\n public moveUp() {\n this.onMoveUp.emit(this.section);\n }\n\n public insertAbove() {\n this.onInsertAbove.emit(this.section);\n }\n\n public moveDown() {\n this.onMoveDown.emit(this.section);\n }\n\n public insertBelow() {\n this.onInsertBelow.emit(this.section);\n }\n\n public delete() {\n this.onDelete.emit(this.section);\n }\n\n public moveGroupUp(group: PortalDocumentGroup) {\n if (!group.sequence) {\n group.sequence = 0;\n }\n if (group.sequence > 1) {\n let clone = Object.assign({}, this.section);\n if (!clone.groups) {\n clone.groups = [];\n }\n clone.groups.splice(group.sequence - 2, 0, clone.groups.splice(group.sequence - 1, 1)[0]);\n this.resequence(clone);\n this.documentService.updateDocumentSection(clone).subscribe({\n next: () => {\n this.documentService.updateDcoumentID(clone.documentID || '');\n }, error: err => {\n this.toastr.error('Failed section group: ' + err, 'ERROR');\n }});\n }\n }\n\n public insertAboveGroup(group: PortalDocumentGroup) {\n if (!group.sequence) {\n group.sequence = 1;\n }\n let newGroup = this.newGroup(group.sequence - 1 || 1);\n this.insertGroup(group.sequence - 1, newGroup);\n }\n\n public moveGroupDown(group: PortalDocumentGroup) {\n if (!group.sequence) {\n group.sequence = 1;\n }\n if (this.section.groups && group.sequence < this.section.groups.length) {\n let clone = Object.assign({}, this.section);\n if (!clone.groups) {\n clone.groups = [];\n }\n clone.groups.splice(group.sequence, 0, clone.groups.splice(group.sequence - 1, 1)[0]);\n this.resequence(clone);\n this.documentService.updateDocumentSection(clone).subscribe({\n next: () => {\n this.documentService.updateDcoumentID(clone.documentID || '');\n }, error: err => {\n this.toastr.error('Failed updating section: ' + err, 'ERROR');\n }});\n }\n }\n\n public insertBelowGroup(group: PortalDocumentGroup) {\n if (!group.sequence) {\n group.sequence = 1;\n }\n let newGroup = this.newGroup(group.sequence + 1);\n this.insertGroup(group.sequence, newGroup);\n }\n\n private newGroup(sequence: number): PortalDocumentGroup {\n return {\n sectionID: this.section.id,\n documentID: this.section.documentID,\n sequence: sequence,\n name: 'Group ' + sequence,\n parts: [\n {\n documentID: this.section.documentID,\n name: 'Paragraph 1',\n text: {\n text: ''\n }\n }\n ]\n }\n }\n\n private insertGroup(insertIndex: number, newGroup: PortalDocumentGroup) {\n const initialState = {\n label: 'Insert Group',\n group: newGroup\n }\n let modal = this.modalService.show(GroupModalComponent, {initialState, ignoreBackdropClick: true});\n (<GroupModalComponent>modal.content).onGroupSave.subscribe(updatesdGroup => {\n this.busy = true;\n let clone = Object.assign({}, this.section);\n if (!clone.groups) {\n clone.groups = [];\n }\n clone.groups.splice(insertIndex, 0, updatesdGroup);\n this.resequence(clone);\n this.documentService.updateDocumentSection(clone).subscribe({\n next: () => {\n this.documentService.updateDcoumentID(clone.documentID || '');\n this.busy = false;\n }, error: err => {\n this.toastr.error('Failed updating section: ' + err, 'ERROR');\n this.busy = false;\n }});\n });\n }\n\n private resequence(section: PortalDocumentSection) {\n let sequence = 1;\n if (section.groups) {\n section.groups.forEach(group => {\n group.sequence = sequence++;\n });\n }\n }\n\n public deleteGroup(group: PortalDocumentGroup) {\n let bodyText = 'Delete Group ' + group.name + '?';\n const eventOverride: DocumentEvent | undefined = this.documentService.isOverriddenEvent({ eventType: DocumentEventType.Delete, entityType: DocumentEventEntityType.Group });\n if (eventOverride && eventOverride.confirmationMessage) {\n bodyText = eventOverride.confirmationMessage;\n }\n const initialState = {\n headerText: 'Delete Group',\n bodyText: bodyText,\n confirmBtnLabel: 'Yes',\n cancelBtnLabel: 'No'\n }\n let modal = this.modalService.show(ConfirmationModalComponent, { initialState, ignoreBackdropClick: true });\n (<ConfirmationModalComponent>modal.content).confirmClicked.subscribe(() => {\n this.busy = true;\n let clone = Object.assign({}, this.section);\n if (!clone.groups) {\n clone.groups = [];\n }\n clone.groups = clone.groups.filter(keep => {\n keep.id != group.id;\n });\n this.resequence(clone);\n this.documentService.updateDocumentSection(clone).subscribe({\n next: () => {\n this.documentService.deleteDocumentGroup(group).subscribe({\n next: () => {\n this.documentService.updateDcoumentID(clone.documentID || '');\n this.busy = false;\n }, error: err => {\n this.toastr.error('Failed deleting group: ' + err, 'ERROR');\n this.busy = false;\n }\n });\n }, error: err => {\n this.toastr.error('Failed updating section: ' + err, 'ERROR');\n this.busy = false;\n }\n });\n });\n }\n\n public editSection(section: PortalDocumentSection) {\n const initialState = {\n label: 'Edit Section Attributes',\n section: section\n }\n let modal = this.modalService.show(SectionModalComponent, {initialState, ignoreBackdropClick: true});\n (<SectionModalComponent>modal.content).onSectionSave.subscribe(updatedSection => {\n this.busy = true;\n this.documentService.updateDocumentSection(updatedSection).subscribe(() => {\n this.busy = false;\n }, err => {\n this.toastr.error('Failed updating section: ' + err, 'ERROR');\n this.busy = false;\n })\n });\n }\n\n}\n","<div *ngIf=\"section\" class=\"card\">\n <div *ngIf=\"section.groups && section.groups.length > 0\" class=\"card\">\n <div *ngFor=\"let g of section.groups\" class=\"row\">\n <div class=\"col-sm-12\">\n <oepa-document-group [group]=\"g\" (onMoveUp)=\"moveGroupUp($event)\"\n (onInsertAbove)=\"insertAboveGroup($event)\" (onMoveDown)=\"moveGroupDown($event)\"\n (onInsertBelow)=\"insertBelowGroup($event)\" (onDelete)=\"deleteGroup($event)\">\n </oepa-document-group>\n </div>\n </div>\n </div>\n</div>","import { Component, OnInit, Input, ViewChild, AfterViewInit } from '@angular/core';\nimport { PortalDocument } from '../portal-document';\nimport { PortalDocumentSection } from '../portal-document-section';\nimport { DocumentService } from '../document.service';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { ToastrService } from 'ngx-toastr';\nimport { SectionModalComponent } from '../section-modal/section-modal.component';\nimport { TabsetComponent } from 'ngx-bootstrap/tabs';\nimport { ConfirmationModalComponent } from '../../confirmation-modal/confirmation-modal.component';\n\n@Component({\n selector: 'oepa-document-editor',\n templateUrl: './document-editor.component.html',\n styleUrls: ['./document-editor.component.css']\n})\nexport class DocumentEditorComponent implements OnInit, AfterViewInit {\n\n @Input() document: PortalDocument | undefined;\n @Input() allowRemoveSection = false;\n @Input() showSectionOptions: boolean = false;\n\n @ViewChild('documentSectionTabs', { static: false }) documentSectionTabs?: TabsetComponent;\n\n public busy = false;\n private static selectedTabIndex = 0;\n\n constructor(private modalService: BsModalService,\n private toastr: ToastrService,\n private documentService: DocumentService) {\n\n }\n\n ngOnInit() {\n // TODO add check for DSWSWIMSSystemAdmin to the NPDES code\n // this.userAccountService.retrieveAccountForCurrentUser().subscribe((account) => {\n // if (account && account.roleList) {\n // account.roleList.forEach(role => {\n // if (role.name == 'DSWSWIMSSystemAdmin') {\n // this.showSectionOptions = true;\n // }\n // });\n // } else {\n // alert('No Account could be found in the OepaAccountService!');\n // }\n // });\n }\n\n\n ngAfterViewInit(): void {\n if (this.documentSectionTabs?.tabs[DocumentEditorComponent.selectedTabIndex]) {\n this.documentSectionTabs.tabs[DocumentEditorComponent.selectedTabIndex].active = true;\n }\n }\n\n public onSectionTabSelect(index: number) {\n console.log(index)\n console.log(DocumentEditorComponent.selectedTabIndex)\n DocumentEditorComponent.selectedTabIndex = index;\n if (this.documentSectionTabs?.tabs[DocumentEditorComponent.selectedTabIndex]) {\n this.documentService.updateSelectedSectionName(this.documentSectionTabs.tabs[DocumentEditorComponent.selectedTabIndex].heading);\n } else if (this.documentSectionTabs?.tabs[DocumentEditorComponent.selectedTabIndex]) {\n this.editSection(this.documentSectionTabs.tabs[DocumentEditorComponent.selectedTabIndex]);\n }\n }\n\n public moveSectionUp(section: PortalDocumentSection) {\n if (section.sequence && section.sequence > 1) {\n let clone = Object.assign({}, this.document);\n if (clone.sections) {\n clone.sections.splice(section.sequence - 2, 0, clone.sections.splice(section.sequence - 1, 1)[0]);\n this.resequence(clone);\n this.documentService.updateDocumentGroup(clone).subscribe({\n next: () => {\n this.documentService.updateDcoumentID(clone.id || '');\n }, error: err => {\n this.toastr.error('Failed updating document: ' + err, 'ERROR');\n }\n });\n }\n } else {\n this.toastr.info('Cannot move top section up', '', { disableTimeOut: false, timeOut: 5000 });\n }\n\n }\n\n public insertAboveSection(section: PortalDocumentSection) {\n if (section.sequence) {\n let newSection = this.newSection(section.sequence - 1 || 1);\n this.insertSection(section.sequence - 1, newSection);\n }\n }\n\n public moveSectionDown(section: PortalDocumentSection) {\n if (section.sequence && this.document && this.document.sections && section.sequence < this.document.sections.length - 1) {\n let clone = Object.assign({}, this.document);\n if (clone.sections) {\n clone.sections.splice(section.sequence, 0, clone.sections.splice(section.sequence - 1, 1)[0]);\n this.resequence(clone);\n this.documentService.updateDocumentGroup(clone).subscribe({\n next: () => {\n this.documentService.updateDcoumentID(clone.id || '');\n }, error: err => {\n this.toastr.error('Failed updating document: ' + err, 'ERROR');\n }\n });\n }\n } else {\n this.toastr.info('Cannot move bottom section down', '', { disableTimeOut: false, timeOut: 5000 });\n }\n }\n\n public insertBelowSection(section: PortalDocumentSection) {\n if (section.sequence) {\n let newSection = this.newSection(section.sequence + 1);\n this.insertSection(section.sequence, newSection);\n }\n }\n\n private newSection(sequence: number): PortalDocumentSection {\n return {\n documentID: this.document?.id,\n sequence: sequence,\n name: 'Section ' + sequence,\n groups: [\n {\n name: 'Group 1',\n parts: [\n {\n name: 'Paragraph 1',\n text: {\n text: ''\n }\n }\n ]\n }\n ]\n }\n }\n private insertSection(insertIndex: number, newSection: PortalDocumentSection) {\n const initialState = {\n label: 'Insert Section',\n section: newSection\n }\n let modal = this.modalService.show(SectionModalComponent, { initialState, ignoreBackdropClick: true });\n (<SectionModalComponent>modal.content).onSectionSave.subscribe(updatedSection => {\n this.busy = true;\n let clone = Object.assign({}, this.document);\n if (clone.sections) {\n clone.sections.splice(insertIndex, 0, updatedSection);\n this.resequence(clone);\n this.documentService.updateDocument(clone).subscribe({\n next: () => {\n this.documentService.updateDcoumentID(clone.id || '');\n this.busy = false;\n }, error: err => {\n this.toastr.error('Failed updating section: ' + err, 'ERROR');\n this.busy = false;\n }\n });\n }\n });\n }\n\n private resequence(document: PortalDocument) {\n let sequence = 1;\n if (document.sections) {\n document.sections.forEach(section => {\n section.sequence = sequence++;\n });\n }\n }\n\n public deleteSection(section: PortalDocumentSection) {\n const initialState = {\n headerText: 'Delete Section',\n bodyText: 'Delete Section ' + section.name + '?',\n confirmBtnLabel: 'Yes',\n cancelBtnLabel: 'No'\n }\n let modal = this.modalService.show(ConfirmationModalComponent, { initialState, ignoreBackdropClick: true });\n (<ConfirmationModalComponent>modal.content).confirmClicked.subscribe(() => {\n this.busy = true;\n let clone = Object.assign({}, this.document);\n if (clone.sections) {\n clone.sections = clone.sections.filter(keep => {\n keep.id != section.id;\n });\n this.resequence(clone);\n this.documentService.updateDocument(clone).subscribe({\n next: () => {\n this.documentService.deleteDocumentSection(section).subscribe({\n next: () => {\n this.documentService.updateDcoumentID(clone.id || '');\n this.busy = false;\n }, error: err => {\n this.toastr.error('Failed deleting section: ' + err, 'ERROR');\n this.busy = false;\n }\n });\n }, error: err => {\n this.toastr.error('Failed updating document: ' + err, 'ERROR');\n this.busy = false;\n }\n });\n }\n });\n }\n\n public editSection(section: PortalDocumentSection) {\n const initialState = {\n label: 'Edit Section Attributes',\n section: section\n }\n let modal = this.modalService.show(SectionModalComponent, { initialState, ignoreBackdropClick: true });\n (<SectionModalComponent>modal.content).onSectionSave.subscribe(updatedSection => {\n this.busy = true;\n this.documentService.updateDocumentSection(updatedSection).subscribe(() => {\n this.busy = false;\n }, err => {\n this.toastr.error('Failed updating section: ' + err, 'ERROR');\n this.busy = false;\n })\n });\n }\n\n}\n","<div *ngIf=\"document\">\n <div *ngIf=\"document.sections && document.sections.length > 0\">\n <div class=\"row\">\n <div class=\"col-sm-4\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\"\n (click)=\"insertBelowSection(document.sections[document.sections.length-1])\">\n Add new section\n </button>\n </div>\n <div class=\"col-sm-8\">\n </div>\n <div class=\"col-sm-12\" class=\"row\">\n <tabset #documentSectionTabs>\n <tab *ngFor=\"let s of document.sections; let i = index;\" (selectTab)=\"onSectionTabSelect(i)\"\n [removable]=\"allowRemoveSection\" (removed)=\"deleteSection(s)\">\n <ng-template tabHeading>\n <span>\n <span>{{s.name}}</span>\n <span *ngIf=\"showSectionOptions\">&nbsp;<i class=\"bi bi-pencil-fill\"\n (click)=\"editSection(s)\"></i> &nbsp;<i class=\"bi bi-x-lg\"\n (click)=\"deleteSection(s)\"></i></span>\n </span>\n </ng-template>\n <oepa-document-section [section]=\"s\" (onMoveUp)=\"moveSectionUp($event)\"\n (onInsertAbove)=\"insertAboveSection($event)\" (onMoveDown)=\"moveSectionDown($event)\"\n (onInsertBelow)=\"insertBelowSection($event)\" (onDelete)=\"deleteSection($event)\">\n </oepa-document-section>\n </tab>\n </tabset>\n </div>\n </div>\n </div>\n</div>","import { Pipe, PipeTransform } from '@angular/core';\nimport orderBy from 'lodash/orderBy';\n\n/**\n * Utility class to not hardcode sort directions\n */\nexport class SortOptions {\n /**\n * Static property to defined ASC and DESC values\n * to avoid hardcoding and repeating\n * replaces string enums\n */\n static direction: {\n ASC: string,\n DESC: string\n } = {\n ASC: 'ASC',\n DESC: 'DESC'\n };\n}\n\n/**\n * Pipe used to sort arrays by using lodash\n * Takes array and array of 2 strings(parameters), key and direction\n * direction must be either ASC or DESC\n */\n@Pipe({\n name: 'arraySort'\n})\nexport class ArraySortPipe implements PipeTransform {\n\n transform(array: Array<any>, args: string[]): Array<string> | Array<any> {\n\n array = array || [];\n\n if (typeof args === 'undefined' || args.length !== 2) {\n return array;\n }\n\n const [key, direction] = args;\n\n if (direction !== SortOptions.direction.ASC && direction !== SortOptions.direction.DESC) {\n return array;\n }\n\n // if there is no key we assume item is of string type\n return orderBy(array, (item: any | string) => item.hasOwnProperty(key) ? item[key] : item, (direction === SortOptions.direction.DESC ? 'desc' : 'asc'));\n }\n}\n\n/**\n * Pipe used to filter array, takes input array and\n * array of 2 arguments, key of object and search term\n * if key does not exist, pipe assumes the item is string\n */\n@Pipe({\n name: 'arrayFilter'\n})\nexport class ArrayFilterPipe implements PipeTransform {\n\n transform(array: Array<any>, args: string[]): Array<string> | Array<any> {\n\n array = array || [];\n\n if (typeof args === 'undefined' || args.length !== 2 ) {\n return array;\n }\n\n const [key, searchTerm] = args;\n\n if (!searchTerm || searchTerm.trim() === '') {\n return array;\n }\n\n return array.filter((item: any) => item[key].toString().toLowerCase().search(searchTerm.toLowerCase().trim()) >= 0);\n }\n}\n","declare var require: any;\nimport { Component, Input, Output, EventEmitter, OnInit, forwardRef } from '@angular/core';\nimport { FormGroup, FormBuilder, FormControl, NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { debounceTime, map, distinctUntilChanged, tap } from 'rxjs/operators';\nimport { ToastrService } from 'ngx-toastr';\nimport { IItemsMovedEvent } from './items-moved-event';\nimport { IListBoxItem } from './list-box-item';\nimport intersectionWith from 'lodash/intersectionWith';\nimport differenceWith from 'lodash/differenceWith';\n\n/**\n * NOTE: This code is a modified version of the project: https://www.npmjs.com/package/ng2-dual-list-box\n * LICENSE: MIT © [Eldar Granulo](mailto:eldar32@gmail.com)\n */\n\n@Component({\n selector: 'oepa-dual-list-box',\n templateUrl: './dual-list-box.component.html',\n styleUrls: ['./dual-list-box.component.css'],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DualListBoxComponent),\n multi: true\n }]\n})\nexport class DualListBoxComponent implements OnInit, ControlValueAccessor {\n\n // array of items to display in left box\n @Input() set available(items: Array<any>) {\n this.availableItems = [...(items || []).map((item: any, index: number) => ({\n value: item[this.valueField].toString(),\n text: item[this.textField]\n }))];\n };\n // array of items to display in right box\n @Input() set selected(items: Array<any>) {\n this.selectedItems = [...(items || []).map((item: any, index: number) => ({\n value: item[this.valueField].toString(),\n text: item[this.textField]\n }))];\n };\n // input to set search term for available list box from the outside\n @Input() set availableSearch(searchTerm: string) {\n this.searchTermAvailable = searchTerm;\n this.availableSearchInputControl.setValue(searchTerm);\n };\n // input to set search term for selected list box from the outside\n @Input() set selectedSearch(searchTerm: string) {\n this.searchTermSelected = searchTerm;\n this.selectedSearchInputControl.setValue(searchTerm);\n };\n // field to use for value of option\n @Input() valueField = 'id';\n // field to use for displaying option text\n @Input() textField = 'name';\n // text to display as title above component\n @Input() title: string = '';\n // time to debounce search output in ms\n @Input() debounceTime = 500;\n // show/hide button to move all items between boxes\n @Input() moveAllButton = true;\n // text displayed over the available items list box\n @Input() availableText = 'Available items';\n // text displayed over the selected items list box\n @Input() selectedText = 'Selected items';\n // set placeholder text in available items list box\n @Input() availableFilterPlaceholder= 'Filter...';\n // set placeholder text in selected items list box\n @Input() selectedFilterPlaceholder = 'Filter...';\n // field to use for html id\n @Input() idField = 'id';\n // disable component\n @Input() set disabled(disabled: boolean) {\n if (this.listBoxForm) {\n if (disabled) {\n this.listBoxForm.disable();\n } else {\n this.listBoxForm.enable();\n }\n }\n }\n @Input() listSize = 10;\n\n @Input() sortBy = 'text';\n\n @Input() maxSelectableItems: number | undefined = undefined;\n\n // event called when item or items from available items(left box) is selected\n @Output() onAvailableItemSelected: EventEmitter<{} | Array<{}>> = new EventEmitter<{} | Array<{}>>();\n // event called when item or items from selected items(right box) is selected\n @Output() onSelectedItemsSelected: EventEmitter<{} | Array<{}>> = new EventEmitter<{} | Array<{}>>();\n // event called when items are moved between boxes, returns state of both boxes and item moved\n @Output() onItemsMoved: EventEmitter<IItemsMovedEvent> = new EventEmitter<IItemsMovedEvent>();\n\n // private variables to manage class\n searchTermAvailable = '';\n searchTermSelected = '';\n availableItems: Array<IListBoxItem> = [];\n selectedItems: Array<IListBoxItem> = [];\n listBoxForm: FormGroup;\n availableListBoxControl: FormControl = new FormControl();\n selectedListBoxControl: FormControl = new FormControl();\n availableSearchInputControl: FormControl = new FormControl();\n selectedSearchInputControl: FormControl = new FormControl();\n\n // control value accessors\n _onChange = (_: any) => { };\n _onTouched = () => { };\n\n constructor(public fb: FormBuilder, private toastr: ToastrService) { \n this.listBoxForm = this.fb.group({\n availableListBox: this.availableListBoxControl,\n selectedListBox: this.selectedListBoxControl,\n availableSearchInput: this.availableSearchInputControl,\n selectedSearchInput: this.selectedSearchInputControl\n });\n }\n\n ngOnInit() {\n this.availableListBoxControl\n .valueChanges\n .subscribe((items: Array<{}>) => this.onAvailableItemSelected.emit(items));\n this.selectedListBoxControl\n .valueChanges\n .subscribe((items: Array<{}>) => this.onSelectedItemsSelected.emit(items));\n this.availableSearchInputControl\n .valueChanges.pipe(\n debounceTime(this.debounceTime),\n distinctUntilChanged(),\n tap((search: string) => this.searchTermAvailable = search)\n ).subscribe();\n this.selectedSearchInputControl\n .valueChanges.pipe(\n debounceTime(this.debounceTime),\n distinctUntilChanged(),\n tap((search: string) => this.searchTermSelected = search)\n ).subscribe();\n }\n /**\n * Move all items from available to selected\n */\n moveAllItemsToSelected(): void {\n this.toastr.clear();\n if (!this.availableItems.length) {\n return;\n }\n if (this.maxSelectableItems && (this.availableItems.length + this.selectedItems.length > this.maxSelectableItems)) {\n this.toastr.info('Only ' + this.maxSelectableItems + ' items may be added to ' + this.selectedText, '', { disableTimeOut: false, timeOut: 5000 });\n return;\n }\n this.selectedItems = [...this.selectedItems, ...this.availableItems];\n this.availableItems = [];\n this.onItemsMoved.emit({\n available: this.availableItems,\n selected: this.selectedItems,\n movedItems: this.availableListBoxControl.value,\n from: 'available',\n to: 'selected'\n });\n this.availableListBoxControl.setValue([]);\n this.writeValue(this.getValues());\n }\n\n /**\n * Move all items from selected to available\n */\n moveAllItemsToAvailable(): void {\n this.toastr.clear();\n\n if (!this.selectedItems.length) {\n return;\n }\n this.availableItems = [...this.availableItems, ...this.selectedItems];\n this.selectedItems = [];\n this.onItemsMoved.emit({\n available: this.availableItems,\n selected: this.selectedItems,\n movedItems: this.selectedListBoxControl.value,\n from: 'selected',\n to: 'available'\n });\n this.selectedListBoxControl.setValue([]);\n this.writeValue([]);\n }\n\n /**\n * Move marked items from available items to selected items\n */\n moveMarkedAvailableItemsToSelected(): void {\n this.toastr.clear();\n let pendingItems = intersectionWith(this.availableItems, this.availableListBoxControl.value, (item: IListBoxItem, value: string) => item.value === value);\n if (this.maxSelectableItems && (pendingItems.length + this.selectedItems.length > this.maxSelectableItems)) {\n this.toastr.info('Only ' + this.maxSelectableItems + ' items may be added to ' + this.selectedText, '', { disableTimeOut: false, timeOut: 5000 });\n return;\n }\n // first move items to selected\n this.selectedItems = [...this.selectedItems,\n ...intersectionWith(this.availableItems, this.availableListBoxControl.value,\n (item: IListBoxItem, value: string) => item.value === value)];\n // now filter available items to not include marked values\n this.availableItems = [...differenceWith(this.availableItems, this.availableListBoxControl.value,\n (item: IListBoxItem, value: string) => item.value === value)];\n // clear marked available items and emit event\n this.onItemsMoved.emit({\n available: this.availableItems,\n selected: this.selectedItems,\n movedItems: this.availableListBoxControl.value,\n from: 'available',\n to: 'selected'\n });\n this.availableListBoxControl.setValue([]);\n this.availableSearchInputControl.setValue('');\n this.writeValue(this.getValues());\n }\n\n /**\n * Move marked items from selected items to available items\n */\n moveMarkedSelectedItemsToAvailable(): void {\n this.toastr.clear();\n\n // first move items to available\n this.availableItems = [...this.availableItems,\n ...intersectionWith(this.selectedItems, this.selectedListBoxControl.value,\n (item: IListBoxItem, value: string) => item.value === value)];\n // now filter available items to not include marked values\n this.selectedItems = [...differenceWith(this.selectedItems, this.selectedListBoxControl.value,\n (item: IListBoxItem, value: string) => item.value === value)];\n // clear marked available items and emit event\n this.onItemsMoved.emit({\n available: this.availableItems,\n selected: this.selectedItems,\n movedItems: this.selectedListBoxControl.value,\n from: 'selected',\n to: 'available'\n });\n this.selectedListBoxControl.setValue([]);\n this.selectedSearchInputControl.setValue('');\n this.writeValue(this.getValues());\n }\n\n /**\n * Move single item from available to selected\n * @param item\n */\n moveAvailableItemToSelected(item: IListBoxItem): void {\n\n this.availableItems = this.availableItems.filter((listItem: IListBoxItem) => listItem.value !== item.value);\n this.selectedItems = [...this.selectedItems, item];\n this.onItemsMoved.emit({\n available: this.availableItems,\n selected: this.selectedItems,\n movedItems: [item.value],\n from: 'available',\n to: 'selected'\n });\n this.availableSearchInputControl.setValue('');\n this.availableListBoxControl.setValue([]);\n this.writeValue(this.getValues());\n }\n\n /**\n * Move single item from selected to available\n * @param item\n */\n moveSelectedItemToAvailable(item: IListBoxItem): void {\n\n this.selectedItems = this.selectedItems.filter((listItem: IListBoxItem) => listItem.value !== item.value);\n this.availableItems = [...this.availableItems, item];\n this.onItemsMoved.emit({\n available: this.availableItems,\n selected: this.selectedItems,\n movedItems: [item.value],\n from: 'selected',\n to: 'available'\n });\n this.selectedSearchInputControl.setValue('');\n this.selectedListBoxControl.setValue([]);\n this.writeValue(this.getValues());\n }\n\n /**\n * Function to pass to ngFor to improve performance, tracks items\n * by the value field\n * @param index\n * @param item\n */\n trackByValue(index: number, item: any): string {\n return item[this.valueField];\n }\n\n /* Methods from ControlValueAccessor interface, required for ngModel and formControlName - begin */\n writeValue(value: any): void {\n if (this.selectedItems && value && value.length > 0) {\n this.selectedItems = [...this.selectedItems,\n ...intersectionWith(this.availableItems, value, (item: IListBoxItem, val: string) => item.value === val)];\n this.availableItems = [...differenceWith(this.availableItems, value,\n (item: IListBoxItem, val: string) => item.value === val)];\n }\n this._onChange(value);\n }\n\n registerOnChange(fn: (_: any) => {}): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: () => {}): void {\n this._onTouched = fn;\n }\n /* Methods from ControlValueAccessor interface, required for ngModel and formControlName - end */\n\n /**\n * Utility method to get values from\n * selected items\n */\n private getValues(): string[] {\n return (this.selectedItems || []).map((item: IListBoxItem) => item.value);\n }\n\n}\n\n","<div class=\"row\" [formGroup]=\"listBoxForm\">\n <div class=\"col-md-5 col-lg-5 col-sm-12\">\n <h4 class=\"text-center vertical-spacing-5\">{{availableText}}</h4>\n <input type=\"text\" class=\"form-control vertical-spacing-5\" placeholder=\"{{availableFilterPlaceholder}}\"\n formControlName=\"availableSearchInput\" />\n <select class=\"form-control list-box\" formControlName=\"availableListBox\" multiple [size]=\"listSize\">\n <option *ngFor=\"let item of availableItems | arrayFilter:['text', searchTermAvailable] | arraySort:[sortBy, 'ASC'];trackBy:trackByValue\"\n [value]=\"item?.value\"\n [id]=\"item?.value+'Option'\"\n (dblclick)=\"moveAvailableItemToSelected(item)\">{{item?.text}}</option>\n </select>\n </div>\n <div class=\"col-md-2 col-lg-2 col-sm-12 center-block text-center\">\n <button type=\"button\"\n class=\"btn btn-primary col-md-8 col-md-offset-2 atr top80 sm-spacing\"\n [disabled]=\"listBoxForm.disabled\"\n [id]=\"idField+'MoveAllBtn'\"\n *ngIf=\"moveAllButton\" (click)=\"moveAllItemsToSelected()\">\n <span class=\"bi bi-list-task\"></span>\n <span class=\"bi bi-chevron-right\"></span>\n </button>\n <button type=\"button\"\n class=\"btn btn-primary col-md-8 col-md-offset-2 str vertical-spacing-5 sm-spacing\"\n [disabled]=\"listBoxForm.disabled || !availableListBoxControl.value?.length\"\n [id]=\"idField+'MoveOneBtn'\"\n (click)=\"moveMarkedAvailableItemsToSelected()\">\n <span class=\"bi bi-chevron-right\"></span>\n </button>\n <button type=\"button\"\n class=\"btn btn-primary col-md-8 col-md-offset-2 stl vertical-spacing-5 sm-spacing\"\n [disabled]=\"listBoxForm.disabled || !selectedListBoxControl.value?.length\"\n [id]=\"idField+'MoveOneLeftBtn'\"\n (click)=\"moveMarkedSelectedItemsToAvailable()\">\n <span class=\"bi bi-chevron-left\"></span>\n </button>\n <button type=\"button\"\n class=\"btn btn-primary col-md-8 col-md-offset-2 atl bottom10 sm-spacing\"\n [disabled]=\"listBoxForm.disabled\"\n [id]=\"idField+'MoveAllLeftBtn'\"\n *ngIf=\"moveAllButton\" (click)=\"moveAllItemsToAvailable()\">\n <span class=\"bi bi-chevron-left\"></span>\n <span class=\"bi bi-list-task\"></span>\n </button>\n </div>\n <div class=\"col-md-5 col-lg-5 col-sm-12\">\n <h4 class=\"text-center vertical-spacing-5\">{{selectedText}}</h4>\n <input type=\"text\" class=\"form-control vertical-spacing-5\" placeholder=\"{{selectedFilterPlaceholder}}\"\n formControlName=\"selectedSearchInput\" />\n <select class=\"form-control list-box\" formControlName=\"selectedListBox\" multiple [size]=\"listSize\">\n <option *ngFor=\"let item of selectedItems | arrayFilter:['text', searchTermSelected] | arraySort:[sortBy, 'ASC'];trackBy:trackByValue\"\n [value]=\"item?.value\"\n (dblclick)=\"moveSelectedItemToAvailable(item)\">{{item?.text}}</option>\n </select>\n </div>\n</div>\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { OepaFileUtilService, OepaComponentIdService } from '@ohioepa/oepa-common-lib';\nimport { LynxAttachment } from '@ohioepa/oepa-ebiz-lib';\nimport { ConfirmationModalComponent } from '../confirmation-modal/confirmation-modal.component';\n\n@Component({\n selector: 'oepa-lynx-image-upload',\n templateUrl: './lynx-image-upload.component.html',\n styleUrls: ['./lynx-image-upload.component.css']\n})\nexport class LynxImageUploadComponent implements OnInit { \n componentId = 'LynxImageUploadComponent';\n formDisabled: boolean = false;\n errorMessage: string = '';\n \n @Input() group!: FormGroup;\n @Input() field: string = '';;\n @Input() projectID: string = '';;\n @Input() label: string = 'Upload an image';\n @Input() errorLabel: string = 'An image';\n @Input() image: LynxAttachment = {};\n @Input() showValidation = false;\n @Input() required = true;\n @Input() accept: string = '';;\n @Input() imageBlobUrl: string | ArrayBuffer | null = null;\n\n @Output() onImageUpload: EventEmitter<LynxAttachment> = new EventEmitter<LynxAttachment>();\n @Output() onImageRemove: EventEmitter<LynxAttachment> = new EventEmitter<LynxAttachment>();\n @Output() onImageDownload: EventEmitter<LynxAttachment> = new EventEmitter<LynxAttachment>();\n\n constructor(private idService: OepaComponentIdService,\n private modalService: BsModalService,\n private fileUtil: OepaFileUtilService) { }\n\n ngOnInit() {\n if (this.group) {\n this.componentId = this.idService.getComponentId(this.group);\n this.componentId += (this.componentId.length > 0 ? '_' : '') + this.field;\n }\n if (this.image && this.image.id) {\n this.downloadImage(this.image);\n }\n }\n\n public fileChange(event: any) {\n this.errorMessage = '';\n const fileList: FileList = event.target.files;\n if (fileList.length > 0) {\n const file: File = fileList[0];\n if (this.fileTypeCanBeAccepted(file)) {\n this.fileUtil.uploadFile(file).subscribe((attachment: LynxAttachment) => {\n this.group.controls[this.field].setValue(attachment.userFilename);\n this.onImageUpload.emit(attachment);\n }, err => {\n this.errorMessage = 'Error uploading file ' + err || '';\n });\n } else {\n this.errorMessage = 'Cannot accept this type of file. Please upload a file of type: ' + this.accept;\n }\n }\n }\n \n private fileTypeCanBeAccepted(file:any): boolean {\n let ok = true;\n if (this.accept) {\n const mimeType = this.fileUtil.mimeTypeForFile(file.name);\n if (this.accept.indexOf(mimeType) < 0) {\n ok = false;\n }\n }\n return ok;\n }\n \n downloadImage(image: LynxAttachment) {\n if (!image.systemFilename || image.systemFilename.length === 0) {\n this.onImageDownload.emit(image);\n } else {\n this.fileUtil.downloadAttachment(image).subscribe({\n next: doc => {\n const mimeType = this.fileUtil.mimeTypeForFile(image.userFilename || '');\n const blob = new Blob([doc], { type: mimeType });\n this.createImageFromBlob(blob);\n }, error: err => {\n this.errorMessage = 'Error downloading file: ' + image.userFilename + ': ' + err;\n }\n });\n }\n }\n\n createImageFromBlob(image: Blob) {\n let reader = new FileReader();\n reader.addEventListener(\"load\", () => {\n this.imageBlobUrl = reader.result;\n }, false);\n if (image) {\n reader.readAsDataURL(image);\n }\n }\n\n removeImage() { \n this.errorMessage = '';\n const modal: BsModalRef = this.modalService.show(ConfirmationModalComponent, { ignoreBackdropClick: true });\n (<ConfirmationModalComponent>modal.content).headerText = 'Remove Image';\n (<ConfirmationModalComponent>modal.content).bodyText = 'Do you want to remove the image: ' + this.image.userFilename + '?';\n (<ConfirmationModalComponent>modal.content).confirmBtnLabel = 'Yes';\n (<ConfirmationModalComponent>modal.content).cancelBtnLabel = 'No';\n (<ConfirmationModalComponent>modal.content).confirmClicked.subscribe(() => {\n this.group.controls[this.field].setValue(undefined);\n this.onImageRemove.emit(this.image);\n });\n }\n}\n","<form [formGroup]=\"group\">\n <div *ngIf=\"!imageBlobUrl\">\n <label class=\"btn btn-primary btn-file\">\n Browse&hellip;\n <input type=\"file\" style=\"display: none;\" (change)=\"fileChange($event)\" \n [id]=\"componentId+'_BrowseBtn'\" [name]=\"componentId+'_BrowseBtn'\" class=\"form-control\"\n [attr.accept]=\"accept ? accept : null\"\n [disabled]=\"group.controls[field].status === 'DISABLED'\">\n </label>\n <span>&nbsp;Click the button on the left to upload an image from your computer.</span>\n </div>\n <div *ngIf=\"imageBlobUrl\">\n <div class=\"row\">\n <div class=\"col-sm-12\">\n <img [src]=\"imageBlobUrl\" [id]=\"componentId+'_Image'\" width=\"200\">\n </div>\n <br/>\n <div class=\"col-sm-12\">\n <label>{{image.userFilename}}</label>\n </div>\n <div class=\"col-sm-12\">\n <button type=\"button\" class=\"btn btn-primary\" [id]=\"componentId+'_RemoveImageBtn'\" [name]=\"componentId+'_RemoveImageBtn'\"\n (click)=\"removeImage()\" [disabled]=\"group.controls[field].status === 'DISABLED'\">Remove Image</button>\n </div>\n </div>\n </div>\n <div *ngIf=\"errorMessage\" class=\"alert alert-danger\">{{errorMessage}}</div>\n</form>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\n\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\n\nimport { OepaMappingService, OEPAReference } from '@ohioepa/oepa-common-lib';\nimport { OepaTableColumn } from '../table/oepa-table-column';\nimport { OepaTableRow } from '../table/oepa-table-row';\nimport { OepaTableConfig } from '../table/oepa-table-config';\nimport { OepaTableHeader } from '../table/oepa-table-header';\nimport { OepaActionEvent } from '../action-btn/oepa-action-event';\nimport { ConfirmationModalComponent } from '../confirmation-modal/confirmation-modal.component';\nimport { Note } from './oepa-note';\n\n\n@Component({\n selector: 'oepa-notes-modal',\n templateUrl: './notes-modal.component.html',\n styleUrls: ['./notes-modal.component.css']\n})\nexport class NotesModalComponent implements OnInit {\n public newNoteForm!: FormGroup;\n public newNoteType!: OEPAReference;\n public newNoteText: string = '';\n public isCreating = false;\n\n private _defaultNoteType!: OEPAReference;\n private _notes: Note[] = [];\n\n @Input() loginName: string = '';\n @Input() deleteAnyNoteAllowed = false;\n @Input() deleteOwnNoteAllowed = false;\n @Input() createNoteAllowed = false;\n @Input() external = false;\n @Input() errorMessage: string = '';\n\n \n @Input() \n public set notes(notes: Note[]) {\n this.isCreating = false;\n this._notes = notes;\n this.loadData(notes);\n }\n\n public get notes() {\n return this._notes;\n }\n\n\n @Input()\n public set defaultNoteType(type: OEPAReference) {\n this._defaultNoteType = type;\n this.newNoteType = type;\n }\n\n public get defaultNoteType() {\n return this._defaultNoteType;\n }\n\n @Output() onAddNote: EventEmitter<Note> = new EventEmitter<Note>();\n @Output() onDeleteNote: EventEmitter<Note> = new EventEmitter<Note>();\n\n // Table elements\n public data: Array<OepaTableRow> = [];\n\n public tblConfig: OepaTableConfig = {\n };\n \n public header: OepaTableHeader = {\n columns: this.getColumns()\n };\n\n constructor(private fb: FormBuilder, public bsModalRef: BsModalRef, private modalService: BsModalService,\n private mappingService: OepaMappingService) { \n }\n\n ngOnInit() { \n this.initializeTable();\n this.createForm();\n }\n\n private initializeTable() {\n this.header = {\n columns: this.getColumns()\n };\n this.loadData(this.notes);\n }\n\n private getColumns(): Array<OepaTableColumn> {\n const columns: Array<OepaTableColumn> = [\n { title: 'Note', id: 'note' },\n ];\n\n if (!this.external) {\n columns.push({ title: 'Type', id: 'type' });\n columns.push({ title: 'Account', id: 'account' });\n }\n\n columns.push({ title: 'Date', id: 'date' });\n\n if (this.deleteAnyNoteAllowed || this.deleteOwnNoteAllowed) {\n columns.push({ title: 'Actions', id: 'actions', actionColumn: true, className: 'action-btn-col' });\n }\n\n return columns;\n }\n\n private loadData(notes: Array<Note>) {\n this.data = [];\n if (notes && notes.length) {\n notes.forEach((note) => {\n this.data.push(this.convertNoteToTableRow(note));\n });\n this.data = this.data.splice(0);\n }\n }\n\n private convertNoteToTableRow(note: Note): OepaTableRow {\n const row: OepaTableRow = {\n cells: [\n { id: 'note', value: note.comment },\n { id: 'type', value: note.type ? note.type.name : '' },\n { id: 'account', value: note.user },\n { id: 'date', value: note.noteDate ? this.mappingService.mapDateToDateTimeString(new Date(note.noteDate)): null, \n sortValue: note.noteDate }\n ],\n dataSource: note\n };\n // only display delete action if note can be deleted\n if ((this.deleteAnyNoteAllowed || (this.deleteOwnNoteAllowed && this.loginName === note.user)) && note.type?.code !== 'System') {\n row.actions = [\n { title: 'Delete', className: 'fa fa-remove' }\n ];\n } else {\n row.actions = [\n { title: 'NA', className: undefined }\n ];\n }\n return row;\n }\n\n private createForm() {\n if (this.newNoteForm === undefined) {\n this.newNoteForm = this.fb.group({\n newNoteText: ['', [Validators.required]]\n });\n\n this.newNoteForm.controls['newNoteText'].valueChanges.subscribe(newNoteText => this.newNoteText = newNoteText);\n } else {\n this.newNoteForm.reset();\n }\n }\n\n createNote() {\n this.isCreating = true;\n this.errorMessage = '';\n const note: Note = {\n type: this.newNoteType,\n noteDate: new Date(),\n comment: this.newNoteText,\n user: this.loginName\n };\n this.onAddNote.emit(note);\n }\n\n noteActionClicked(event: OepaActionEvent) {\n if (event.action.title === 'Delete') {\n const modal: BsModalRef = this.modalService.show(ConfirmationModalComponent, { ignoreBackdropClick: true });\n (<ConfirmationModalComponent>modal.content).headerText = 'Confirm delete';\n (<ConfirmationModalComponent>modal.content).bodyText = 'Once a note is deleted it cannot be undone! Do you really want to do this?';\n (<ConfirmationModalComponent>modal.content).confirmBtnLabel = 'Yes';\n (<ConfirmationModalComponent>modal.content).cancelBtnLabel = 'No';\n (<ConfirmationModalComponent>modal.content).confirmClicked.subscribe(() => {\n this.onDeleteNote.emit(event.data);\n });\n }\n }\n\n done() {\n this.bsModalRef.hide();\n }\n\n}\n","<div class=\"modal-header\">\n\t<h3 class=\"modal-title\">Notes</h3>\n</div>\n\n<div class=\"modal-body\">\n\t\n <div *ngIf=\"errorMessage\">\n\t\t<div class=\"alert alert-danger\" role=\"alert\">{{ errorMessage }}</div>\n </div>\n\n <div *ngIf=\"data.length === 0\" class=\"alert alert-info text-center\"><em>There are no notes defined.</em></div>\n\n <oepa-table [config]=\"tblConfig\" [data]=\"data\" [header]=\"header\" (actionClicked)=\"noteActionClicked($event)\"></oepa-table>\n\n \t\n\t<form *ngIf=\"createNoteAllowed\" class=\"form-horizontal\">\n \n <hr>\n\t\n <div [formGroup]=\"newNoteForm\" class=\"form-group\">\n\n <div class=\"row\">\n <label class=\"col-sm-2 control-label\">Type:</label>\n <div class=\"col-sm-10\">\n <span class=\"form-control\" id=\"NoteTypeText\">{{newNoteType.name}}</span>\n </div>\n </div>\n\n <div class=\"row\">\n <label class=\"col-sm-12 control-label\"></label> \n </div>\n\n <div class=\"row\">\n <label class=\"col-sm-2 control-label\">Note:</label>\n <div class=\"col-sm-10\">\n <input class=\"form-control\" type=\"input\" formControlName=\"newNoteText\" id=\"NoteInput\" maxlength=\"2000\"/>\n </div>\n </div>\n\n <div class=\"row\">\n <label class=\"col-sm-12 control-label\"></label> \n </div>\n\n <div class=\"row\">\n <label class=\"col-sm-2 control-label\"></label>\n <div class=\"col-sm-10\">\n <span *ngIf=\"isCreating\"><span class=\"spinner-border text-primary\" role=\"status\"></span></span>\n <button *ngIf=\"!isCreating\" class=\"btn btn-primary mr-1\" id=\"AddNoteBtn\" (click)=\"createNote()\" [disabled]=\"newNoteForm.invalid\">\n <span>Add Note</span>\n </button>\n </div>\n </div>\n\n\n </div> \n </form> <!-- form -->\n \n</div>\n\t\n<div class=\"modal-footer\">\n\t<button class=\"btn btn-primary mr-1\" id=\"DoneBtn\" (click)=\"done()\">Done</button>\n</div>\n","import { Component, OnInit, Input } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { HttpClient } from '@angular/common/http';\n\n@Component({\n selector: 'oepa-params-help-button',\n templateUrl: './params-help-button.component.html',\n styleUrls: ['./params-help-button.component.css']\n})\nexport class ParamsHelpButtonComponent implements OnInit {\n public helpURL: string = '';\n\n @Input() title = 'Click here for instructions or call (614) 466-0061';\n @Input() anchorClass = '';\n\n constructor(private router: Router, private http: HttpClient) { }\n\n ngOnInit() {\n const helpURLParamName = this.router.url.replace(new RegExp('/', 'g'), '.');\n this.http.get('/ebiz/api/v1/gateway/helpURLs/' + helpURLParamName, { responseType: 'text' }).subscribe({\n next: url => {\n if (url && url.length > 0) {\n this.helpURL = url;\n } else {\n console.log('Help URL was empty for: ' + helpURLParamName);\n }\n }, error: err => {\n console.log('Failed retrieving Help URL for: ' + helpURLParamName + ' - ' + err);\n }});\n }\n\n}\n","<a *ngIf=\"helpURL\" [href]=\"helpURL\" [class]=\"anchorClass\" target=\"_blank\" [title]=\"title\">\n <i class=\"bi bi-question-circle\"></i>\n</a>\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\nimport { OepaAttestation } from './oepa-attestation';\nimport { OepaSecurityQuestion } from './oepa-security-question';\nimport { OepaPin } from './oepa-pin';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class OepaPinService {\n private pinsUrl = '/ebiz/api/v1/pins';\n\n constructor(private http: HttpClient) {\n }\n\n /**\n * Retrieve an attestation by id.\n * @param attestationID\n */\n public retrieveAttestationByID(attestationID: string): Observable<OepaAttestation> {\n return this.http.get<OepaAttestation>(this.pinsUrl + '/attestationId/' + attestationID);\n }\n\n /**\n * Retrieve an attestation of the specified type.\n * @param attestationType\n */\n public retrieveAttestation(attestationType: string): Observable<OepaAttestation> {\n return this.http.get<OepaAttestation>(this.pinsUrl + '/attestation/' + attestationType);\n }\n\n /**\n * Retrieve a random security question for the current user.\n */\n public retrieveSecurityQuestion(): Observable<OepaSecurityQuestion> {\n return this.http.get<OepaSecurityQuestion>(this.pinsUrl + '/securityQuestion');\n }\n\n /**\n * Validate the pin entered by a user.\n * @param pin\n */\n public validate(pin: OepaPin): Observable<boolean> {\n return this.http.post<boolean>(this.pinsUrl + '/validate', pin);\n }\n\n /**\n * \n * @param userID Retrieve the Pin for the specified userID\n * @returns OepaPin\n */\n public retrievePin(userID: string): Observable<OepaPin> {\n return this.http.get<OepaPin>(this.pinsUrl + '/' + userID);\n }\n\n}\n","import { Component, OnInit, Input, Output, Optional, Inject, EventEmitter } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Observable } from 'rxjs';\n\nimport { BsModalRef } from 'ngx-bootstrap/modal';\n\nimport { OepaUserAccountService, OepaUserAccount } from '@ohioepa/oepa-common-lib';\nimport { OepaAttestation } from './oepa-attestation';\nimport { OepaSecurityQuestion } from './oepa-security-question';\nimport { OepaPinService } from './oepa-pin.service';\n\n@Component({\n selector: 'oepa-pin-modal',\n templateUrl: './pin-modal.component.html',\n styleUrls: ['./pin-modal.component.css']\n})\nexport class PinModalComponent implements OnInit {\n private _attestationID = '';\n\n @Input()\n set attestationID(id: string) {\n this._attestationID = id;\n this.retrieveAttestations(id);\n }\n get attestationID() {\n return this._attestationID;\n }\n\n @Input() submitCallback!: () => Observable<any>;\n @Input() submittingComponent: any;\n\n @Output() close: EventEmitter<void> = new EventEmitter<void>();\n\n public imageRoot = '/AngularWebApp/assets/images';\n\n public oepaSubmissionForm!: FormGroup;\n public pinAttestation: OepaAttestation = {};\n public serviceAttestation: OepaAttestation = {};\n public securityQuestion: OepaSecurityQuestion = { question: '' };\n public noPin = false;\n public loadingQuestion = false;\n public submitInProgress = false;\n public submitDisabled = false;\n public errorMessage: string = '';\n public showValidation = false;\n public loadingAttestations = false;\n\n public currentUserID: string | undefined = '';\n public userAccount: OepaUserAccount | undefined;\n // public parentURL: string = undefined;\n // public parentSessionID: string = undefined;\n\n\n constructor(private userAccountService: OepaUserAccountService, private fb: FormBuilder, private pinService: OepaPinService, public bsModalRef: BsModalRef) {\n }\n\n ngOnInit() {\n this.retrieveNewSecurityQuestion();\n this.createForm();\n this.retrievePin();\n }\n\n private retrievePin() {\n this.errorMessage = '';\n this.userAccountService.retrieveAccountForCurrentUser().subscribe(account => {\n if (account) {\n this.userAccount = account;\n this.currentUserID = account.loginName;\n this.noPin = true;\n if (this.currentUserID) {\n this.pinService.retrievePin(this.currentUserID).subscribe({\n next: (result) => {\n if (result) {\n if (result.status == 'ACTIVE') {\n this.noPin = false;\n }\n } \n }, error: (err) => { \n console.error('Could not retrieve pin:' + JSON.stringify(err));\n }});\n } else {\n this.errorMessage = 'No current user';\n }\n\n } else {\n console.log('No account found');\n }\n });\n\n }\n\n public submit() {\n this.submitInProgress = true;\n this.errorMessage = '';\n this.showValidation = false;\n\n // console.log('is form valid? ' + this.oepaSubmissionForm.valid);\n const securityAnswer = this.oepaSubmissionForm.get('securityAnswer')?.value;\n const securityPIN = this.oepaSubmissionForm.get('securityPIN')?.value;\n\n // console.log('securityAnswer = ' + securityAnswer + ', correct answer is ' + this.securityQuestion.answer);\n if (securityAnswer && this.securityQuestion.answer && this.securityQuestion.answer.toUpperCase() === securityAnswer.toUpperCase()) {\n this.pinService.validate({ pin: securityPIN }).subscribe((isPINValid: boolean) => {\n if (isPINValid) {\n this.invokeSubmitCallback();\n } else {\n this.retrieveNewSecurityQuestion();\n this.errorMessage = 'The PIN entered was incorrect. Please try again.';\n this.submitInProgress = false;\n }\n }, (err) => {\n console.error('Could not validate PIN:' + JSON.stringify(err));\n });\n } else {\n this.errorMessage = 'The answer to the security question is incorrect. Please try again.';\n this.submitInProgress = false;\n this.showValidation = true;\n }\n }\n\n public cancel() {\n this.bsModalRef.hide();\n this.close.emit();\n }\n\n private createForm() {\n this.oepaSubmissionForm = this.fb.group({\n securityAnswer: ['', Validators.required ],\n securityPIN: ['', Validators.required ],\n });\n }\n\n private invokeSubmitCallback() {\n if (this.submittingComponent && this.submitCallback && this.submitCallback instanceof Function) {\n this.submitCallback.call(this.submittingComponent).subscribe((result) => {\n this.submitInProgress = false;\n this.bsModalRef.hide();\n }, (err) => {\n this.submitInProgress = false;\n console.error('Error processing submission: ' + JSON.stringify(err));\n this.errorMessage = 'Submission failed: ' + err; \n });\n } else {\n this.submitInProgress = false;\n this.errorMessage = 'No submit callback defined';\n }\n }\n\n private retrieveAttestations(attestationId: string) {\n // console.log('retrieveAttestations: ' + attestationId);\n\n this.loadingAttestations = true;\n\n if (attestationId && attestationId.length > 0) {\n this.pinService.retrieveAttestation('PIN').subscribe((attestation: OepaAttestation) => {\n this.pinAttestation = attestation;\n }, (err) => {\n console.error('Could not retrieve PIN attestation: ' + JSON.stringify(err));\n });\n this.pinService.retrieveAttestationByID(attestationId).subscribe((attestation: OepaAttestation) => {\n this.serviceAttestation = attestation;\n\n this.loadingAttestations = false;\n\n }, (err) => {\n console.error('Could not retrieve attestation for service: \"' + attestationId + '\" :' + JSON.stringify(err));\n });\n } else {\n console.error('ERROR: Attempt to retrieve invalid attestationId: ' + attestationId);\n }\n }\n\n private retrieveNewSecurityQuestion() {\n\n this.loadingQuestion = true;\n\n this.pinService.retrieveSecurityQuestion().subscribe((question: OepaSecurityQuestion) => {\n this.securityQuestion = question;\n if (this.securityQuestion === null) {\n this.securityQuestion = { questionID:'', question:'', answer:'' };\n }\n this.loadingQuestion = false;\n\n if (!this.securityQuestion) {\n this.errorMessage = 'There is no PIN enabled for your account. ' + \n 'To continue, you must first request a PIN by selecting the \"Request New PIN\" option from the eBusiness Center \"My Account\" menu.';\n }\n }, (err) => {\n console.error('Could not retrieve security question:' + JSON.stringify(err));\n });\n\n }\n\n}\n","<form [formGroup]=\"oepaSubmissionForm\">\n <div class=\"modal-body\">\n\n <div [hidden]=\"noPin\">\n <div class=\"card-header\">\n <div class=\"row\" *ngIf=\"pinAttestation.text\">\n <div class=\"col-md-12\">\n <div class=\"well\" [innerHTML]=\"pinAttestation.text\"></div>\n </div>\n </div>\n </div>\n <br>\n <div class=\"card-header\" *ngIf=\"serviceAttestation\">\n <div class=\"row\" *ngIf=\"serviceAttestation.text\">\n <div class=\"col-md-12\">\n <div class=\"well\" [innerHTML]=\"serviceAttestation.text\">\"</div>\n </div>\n </div>\n </div>\n </div>\n <br>\n\n <div class=\"row\" *ngIf=\"loadingAttestations\">\n <div class=\"col-md-12\">\n <div class=\"alert alert-info\">\n <span class=\"spinner-border text-primary\" role=\"status\"></span> Loading PIN information...\n </div>\n </div>\n </div>\n\n <div [hidden]=\"loadingAttestations || noPin\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label style=\"padding: 5px;\"><b>Security Question:</b></label>\n <label>{{securityQuestion.question}}</label>\n <div>\n <input [ngClass]=\"{'is-invalid':showValidation && !oepaSubmissionForm.controls['securityAnswer'].valid}\"\n formControlName=\"securityAnswer\" type=\"password\" class=\"form-control\" name=\"securityAnswer\" placeholder=\"Answer\" required>\n <small class=\"invalid-feedback\" *ngIf=\"showValidation && !oepaSubmissionForm.controls['securityAnswer'].valid\">Answer to security question is required</small>\n </div>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label><b>PIN: </b></label>\n <div>\n <input [ngClass]=\"{'is-invalid':showValidation && !oepaSubmissionForm.controls['securityPIN'].valid}\"\n formControlName=\"securityPIN\" type=\"password\" class=\"form-control\" name=\"securityPIN\" placeholder=\"PIN\" required>\n <small class=\"invalid-feedback\" *ngIf=\"showValidation && !oepaSubmissionForm.controls['securityPIN'].valid\">A valid PIN is required</small>\n </div>\n </div>\n </div>\n </div>\n </div>\n \n <div >\n <div class=\"row\">\n <div class=\"col-md-12\">\n <!-- toggle hasPin message -->\n <div *ngIf=\"noPin\">\n <b>Attention:</b> Before you can submit, you first must activate your PIN. Cancel this submission, save the application/report and go back to the main eBusiness Home Page. \n Select <b>MY Account- Request New PIN</b> to get started. <br>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"row\" *ngIf=\"errorMessage\">\n <div class=\"col-md-12\">\n <div class=\"alert alert-danger\" role=\"alert\">{{ errorMessage }}</div>\n </div>\n </div>\n\n </div>\n\n\n <div class=\"modal-footer\">\n <span *ngIf=\"submitInProgress === true\" id=\"wait\"><span class=\"spinner-border text-primary\" role=\"status\"></span>Please wait...&nbsp;&nbsp;</span>\n <button class=\"btn btn-primary mr-1\" (click)=\"submit()\" [disabled]=\"submitInProgress || !oepaSubmissionForm.valid\">Submit</button>\n <button class=\"btn btn-primary mr-1\" (click)=\"cancel()\" [disabled]=\"submitInProgress\">Cancel</button>\n </div>\n\n</form>","import { Directive, ElementRef, HostListener, Input, AfterViewInit, Output, EventEmitter } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n@Directive({\n selector: '[oepaNumericInput]'\n})\nexport class NumericInputDirective implements AfterViewInit {\n\n @Input() allowNegative = false;\n @Input() digits: number = 6;\n @Input() decimalDigits: number = 0;\n @Input() isPercentage = false;\n private lastValue = '';\n\n constructor(private _el: ElementRef, private ngControl: NgControl) { \n }\n\n @Output() ngModelChange = new EventEmitter();\n\n ngAfterViewInit() {\n this.lastValue = this._el.nativeElement.value || '';\n }\n\n @HostListener('input', ['$event']) onInputChange(event: any) {\n const initalValue = this._el.nativeElement.value;\n if (initalValue != \"\") {\n const regexp = this.buildRegexp();\n const match = initalValue.match(regexp);\n if (match === null || (this.isPercentage && parseFloat(initalValue) > 100)) {\n this._el.nativeElement.value = this.lastValue;\n } else {\n this._el.nativeElement.value = match[0];\n this.lastValue = this._el.nativeElement.value;\n }\n } else {\n this._el.nativeElement.value = \"\";\n this.lastValue = \"\";\n }\n this.ngControl.control?.patchValue(this._el.nativeElement.value);\n this.ngModelChange.emit(this._el.nativeElement.value);\n }\n\n private buildRegexp() : RegExp {\n let pattern = \"^\";\n if (this.allowNegative) {\n pattern += \"(-)?\";\n }\n if (this.digits > 0) {\n pattern += \"([0-9]{0,\" + this.digits + \"})\";\n }\n if (this.decimalDigits > 0) {\n pattern += \"(\\\\.[0-9]{0,\" + this.decimalDigits + \"})?\";\n }\n pattern += \"$\";\n return new RegExp(pattern)\n }\n\n}\n","import { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';\nimport { OepaUserAccountService } from '@ohioepa/oepa-common-lib';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\n\n@Component({\n selector: 'oepa-server-timeout-modal',\n templateUrl: './server-timeout-modal.component.html',\n styleUrls: ['./server-timeout-modal.component.css']\n})\nexport class ServerTimeoutModalComponent implements OnInit {\n public mm = '01';\n public ss = '00';\n public errorMessage = '';\n public connectionLost = false;\n private timeoutID: any;\n \n @Input() countdownSeconds = 60;\n\n @Output() onKeepAlive: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n constructor(private userAccountService: OepaUserAccountService,\n public bsModalRef: BsModalRef) { }\n\n ngOnInit() {\n this.setMMSS();\n this.tick();\n }\n\n private setMMSS() {\n let minutes = Math.floor(this.countdownSeconds/60);\n let seconds = this.countdownSeconds % 60;\n this.mm = (minutes < 10) ? ('0'+minutes) : (''+minutes);\n this.ss = (seconds < 10) ? ('0'+seconds) : (''+seconds);\n }\n\n private tick() {\n let me = this;\n this.timeoutID = setTimeout(() => {\n me.countdownSeconds--;\n me.setMMSS();\n if (this.countdownSeconds > 0) {\n me.tick();\n } else {\n me.connectionLost = true;\n me.userAccountService.redirectToLogout();\n }\n }, 1000);\n }\n\n public keepAlive() {\n clearTimeout(this.timeoutID);\n this.onKeepAlive.emit(true);\n this.bsModalRef.hide();\n }\n\n public close() {\n this.bsModalRef.hide();\n }\n\n}\n","<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">\n <span>Connection Timeout</span>\n <span *ngIf=\"!connectionLost\">&nbsp;Pending</span>\n </h4>\n <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"close()\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <div *ngIf=\"!connectionLost\">\n Your connection is about to time out: {{mm}}:{{ss}}\n <!-- : <countdown [config]=\"config\" (event)=\"handleEvent($event)\"></countdown> -->\n <br/>\n Click the button below to keep from being logged out.\n </div>\n <div *ngIf=\"connectionLost\">\n Connection timeout.\n </div>\n </div>\n <div class=\"modal-footer\">\n <div class=\"row\">\n <div *ngIf=\"errorMessage\" class=\"col-sm-12\">\n <div class=\"alert alert-danger\">\n {{errorMessage}}\n </div>\n </div>\n </div>\n <div class=\"col-sm-12 text-right\">\n <button *ngIf=\"!connectionLost\" type=\"button\" class=\"btn btn-primary mr-2\" (click)=\"keepAlive()\">Stay Logged In</button>\n <button *ngIf=\"connectionLost\" type=\"button\" class=\"btn btn-primary mr-2\" (click)=\"close()\">Close</button>\n </div>\n </div>\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable, of } from 'rxjs';\nimport { ShoppingCart, ShoppingCartItem } from '@ohioepa/oepa-ebiz-lib';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ShoppingCartService {\n private paymentUrl: string = '/ebiz/api/v1/payment/';\n\n constructor(private http: HttpClient) { }\n\n /**\n * Retrieve a shopping cart for the current user for the provided serviceName.\n * @param serviceName\n * @returns Observable<ShoppingCart>\n */\n public retrieveShoppingCart(serviceName: string): Observable<ShoppingCart> {\n const headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n const url = this.paymentUrl + '/shoppingCart/' + serviceName;\n return this.http.get<ShoppingCart>(url, { headers: headers, responseType: 'json' });\n }\n\n /**\n * Store cart in the database\n * @param cart\n * @returns Observable<ShoppingCart>\n */\n public updateShoppingCart(cart: ShoppingCart): Observable<ShoppingCart> {\n const headers = new HttpHeaders();\n headers.append('Content-Type', 'application/json');\n const url = this.paymentUrl + '/shoppingCart';\n return this.http.post<ShoppingCart>(url, cart, { headers: headers, responseType: 'json' });\n }\n\n /**\n * Remove the item with the type id, id, from cart and store it in the database\n * @param id\n * @param cart \n * @returns Observable<ShoppingCart>\n */\n public removeShoppingCartItem(id: string, cart: ShoppingCart): Observable<ShoppingCart> {\n if (id && cart && cart.cartItems) {\n cart.cartItems = cart.cartItems.filter(item => {\n return item.typeID !== id;\n });\n return this.updateShoppingCart(cart);\n } else {\n return of(cart);\n }\n }\n\n /**\n * Add item to cart and store it in the database\n * @param item \n * @param cart \n * @returns Observable<ShoppingCart>\n */\n public addShoppingCartItem(item: ShoppingCartItem, cart: ShoppingCart): Observable<ShoppingCart> {\n if (item && cart) {\n if (!cart.cartItems) {\n cart.cartItems = [];\n }\n cart.cartItems.push(item);\n return this.updateShoppingCart(cart);\n } else {\n return of(cart);\n }\n }\n\n /**\n * Perform checkout for cart. This will create revenues for all items in the cart and return \n * a transaction id for the shopping cart as a whole.\n * @param cart\n * @returns Observable<string>\n */\n public checkOut(cart: ShoppingCart): Observable<string> {\n const headers = new HttpHeaders({ 'Content-Type': 'application/json; odata=verbose' });\n const url = this.paymentUrl + '/shoppingCart/' + cart.serviceName + '/checkout';\n return this.http.post<string>(url, cart, { headers: headers, responseType: 'json' });\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { ShoppingCartService } from '../shopping-cart.service';\nimport { ShoppingCartItem, ShoppingCart } from '@ohioepa/oepa-ebiz-lib';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { ConfirmationModalComponent } from '../../confirmation-modal/confirmation-modal.component';\nimport { ShoppingCartViewParameters } from './shopping-cart-view-parameters';\nimport { OepaTableHeader } from '../../table/oepa-table-header';\nimport { OepaTableCellClickEvent } from '../../table/oepa-table-cell-click-event';\nimport { OepaTableConfig } from '../../table/oepa-table-config';\nimport { OepaTableRow } from '../../table/oepa-table-row';\n\n@Component({\n selector: 'oepa-shopping-cart-view',\n templateUrl: './shopping-cart-view.component.html',\n styleUrls: ['./shopping-cart-view.component.css']\n})\nexport class ShoppingCartViewComponent implements OnInit {\n serviceName: string;\n title: string;\n returnLabel: string;\n returnUrl: string;\n shoppingCart: ShoppingCart | undefined;\n empty = true;\n loading = true;\n errorMessage: string = '';\n imageRoot = '/AngularWebApp/assets/images';\n checkOutInProgress = false;\n totalColumn: string = 'itemDescription';\n itemNumberLabel: string;\n itemClassificationLabel: string;\n itemNameLabel: string;\n itemDescriptionLabel: string = '';\n\n tblHeader: OepaTableHeader = {\n columns: [\n { title: 'Remove Item', id: 'deleteItem', sort: 'none', hyperlink: true, className: 'oepa-table-header-center' },\n { title: 'Fee', id: 'fee', sort: 'none' },\n ]\n };\n\n tblConfig: OepaTableConfig = {\n classNames: ['table-bordered'],\n hideFooter: true\n };\n\n tblData: Array<OepaTableRow> = [];\n\n constructor(private router: Router,\n private route: ActivatedRoute,\n private modalService: BsModalService, \n private shoppingCartService: ShoppingCartService) {\n const params: ShoppingCartViewParameters = <ShoppingCartViewParameters>route.snapshot.data[0];\n this.serviceName = params.serviceName;\n this.title = params.title;\n this.returnLabel = params.returnLabel;\n this.returnUrl = params.returnUrl;\n this.itemNumberLabel = params.itemNumberLabel;\n this.itemClassificationLabel = params.itemClassificationLabel;\n this.itemNameLabel = params.itemNameLabel;\n }\n\n ngOnInit() {\n this.updateHeaders();\n this.refresh();\n }\n\n /**\n * Set headers based on the labels defined for this shopping cart\n */\n private updateHeaders() {\n // process labels in reverse order since unshift places item at the beginning of the array\n if (this.itemDescriptionLabel) {\n this.tblHeader.columns.unshift({ title: this.itemDescriptionLabel, id: 'itemDescription', sort: 'none' });\n this.totalColumn = 'itemDescription';\n }\n if (this.itemNameLabel) {\n this.tblHeader.columns.unshift({ title: this.itemNameLabel, id: 'itemName', sort: 'none' });\n this.totalColumn = 'itemName';\n }\n if (this.itemClassificationLabel) {\n this.tblHeader.columns.unshift({ title: this.itemClassificationLabel, id: 'itemClassification', sort: 'none' });\n this.totalColumn = 'itemClassification';\n }\n if (this.itemNumberLabel) {\n this.tblHeader.columns.unshift({ title: this.itemNumberLabel, id: 'itemNumber', sort: 'none' });\n this.totalColumn = 'itemNumber';\n }\n }\n\n private refresh() {\n this.loading = true;\n this.errorMessage = '';\n this.shoppingCartService.retrieveShoppingCart(this.serviceName).subscribe({\n next: shoppingCart => {\n this.shoppingCart = shoppingCart;\n this.loadTable();\n this.loading = false;\n }, error: err => {\n this.errorMessage = 'Failed retrieving shopping cart data: ' + err;\n this.loading = false;\n }});\n }\n\n private loadTable() {\n this.tblData = [];\n this.empty = true;\n if (this.shoppingCart && this.shoppingCart.cartItems) {\n this.shoppingCart.cartItems.forEach(cartItem => {\n this.empty = false;\n let row = this.convertCartItemToTableRow(cartItem);\n this.tblData.push(row);\n });\n this.tblData.push({ cells : [ \n {id: 'itemNumber', value: (this.totalColumn === 'itemNumber' ? 'Total Amount Due:' : ''), className:'oepa-table-gray oepa-table-bold' },\n {id: 'itemClassification', value: (this.totalColumn === 'itemClassification' ? 'Total Amount Due:' : ''), className:'oepa-table-gray oepa-table-bold' },\n {id: 'itemName', value: (this.totalColumn === 'itemName' ? 'Total Amount Due:' : ''), className:'oepa-table-gray oepa-table-bold' },\n {id: 'itemDescription', value: (this.totalColumn === 'itemDescription' ? 'Total Amount Due:' : ''), className:'oepa-table-gray oepa-table-bold' },\n {id:'deleteItem', value:'',className:'oepa-table-gray' },\n {id: 'fee', value: this.shoppingCart?.totalAmount?.formattedString, sortValue: this.shoppingCart?.totalAmount?.cents, iconClassName:'oepa-undeline-cell', className:'oepa-table-gray oepa-table-bold'}\n ]});\n this.tblData = this.tblData.slice();\n }\n }\n\n private convertCartItemToTableRow(cartItem: ShoppingCartItem): OepaTableRow {\n let row: OepaTableRow = {\n cells: [\n { id: 'itemNumber', value: cartItem.itemNumber },\n { id: 'itemClassification', value: cartItem.itemClassification },\n { id: 'itemName', value: cartItem.itemName },\n { id: 'itemDescription', value: cartItem.description },\n { id: 'deleteItem', value: '', iconClassName: 'fa fa-minus-circle', className: 'text-center' },\n { id: 'fee', value: cartItem.unitPrice?.formattedString, sortValue: cartItem.unitPrice?.cents },\n ],\n dataSource: cartItem\n }\n return row;\n }\n\n onCellClick(event: OepaTableCellClickEvent) {\n if (event.columnId === 'deleteItem') {\n this.deleteFromCart(event.row.dataSource.typeID, event.row.dataSource.description, this.shoppingCart);\n }\n }\n\n private deleteFromCart(id: string, description: string, cart: ShoppingCart | undefined) {\n const modal: BsModalRef = this.modalService.show(ConfirmationModalComponent, { ignoreBackdropClick: true });\n (<ConfirmationModalComponent>modal.content).headerText = 'Remove item from cart?';\n (<ConfirmationModalComponent>modal.content).bodyText = 'Are you sure you want to remove ' + description + ' from the shopping cart?';\n (<ConfirmationModalComponent>modal.content).confirmBtnLabel = 'Yes';\n (<ConfirmationModalComponent>modal.content).cancelBtnLabel = 'No';\n (<ConfirmationModalComponent>modal.content).confirmClicked.subscribe(() => {\n this.deleteItemFromCart(id, cart);\n });\n }\n\n private deleteItemFromCart(id: string, cart: ShoppingCart | undefined) {\n if (cart) {\n this.shoppingCartService.removeShoppingCartItem(id, cart).subscribe({\n next: updatedCart => {\n this.shoppingCart = updatedCart;\n this.loadTable();\n }, error: err => {\n this.errorMessage = 'Failed removing item from cart: ' + err;\n }});\n }\n }\n\n goBack() {\n this.router.navigate([this.returnUrl], { relativeTo: this.route.parent });\n }\n\n public onCheckout() {\n const modal: BsModalRef = this.modalService.show(ConfirmationModalComponent, { ignoreBackdropClick: true });\n (<ConfirmationModalComponent>modal.content).headerText = 'Checkout';\n (<ConfirmationModalComponent>modal.content).bodyText = 'Do you want to submit all of the applications in the shopping cart?';\n (<ConfirmationModalComponent>modal.content).confirmBtnLabel = 'Yes';\n (<ConfirmationModalComponent>modal.content).cancelBtnLabel = 'No';\n (<ConfirmationModalComponent>modal.content).confirmClicked.subscribe(() => {\n this.checkout();\n });\n }\n\n checkout() {\n if (this.shoppingCart) {\n this.errorMessage = '';\n this.checkOutInProgress = true;\n this.shoppingCartService.checkOut(this.shoppingCart).subscribe({\n next: transactionID => {\n // navigate to CBOSS payment screen\n window.location.href = '/portal/paymentSubmissionAction.po?transactionID=' + transactionID;\n }, error: err => {\n this.checkOutInProgress = false;\n this.errorMessage = 'Checkout failed: ' + err;\n }});\n }\n }\n\n}\n","<div class=\"container-fluid\">\n <div class=\"row\">\n <div class=\" col-sm-12\">\n <h2><b>{{title}}</b></h2>\n </div>\n <div *ngIf=\"loading || empty\" class=\"col-sm-12 text-center\">\n <div class=\" alert alert-info \">\n <h3><em>{{ loading ? 'Loading...' : 'Cart is empty' }}</em></h3>\n <img *ngIf=\"loading\" class=\"oepa-icon\" src=\"{{imageRoot}}/blue-load.gif\" />\n </div>\n </div>\n <div *ngIf=\"!loading && !empty\" class=\"col-sm-12\">\n <oepa-table [config]=\"tblConfig\" [data]=\"tblData\" [header]=\"tblHeader\" tableId=\"ShoppingCartTable\" (cellClicked)=\"onCellClick($event)\"></oepa-table>\n </div>\n <div *ngIf=\"errorMessage\" class=\"col-sm-12\">\n <div class=\"alert alert-danger\">{{errorMessage}}</div>\n </div>\n <div *ngIf=\"!checkOutInProgress\" class=\"col-12 text-center\">\n <button class=\"btn btn-primary mr-2\" id=\"returnToPageButton\" (click)=\"goBack()\">\n {{returnLabel}}</button>\n <button *ngIf=\"!empty\" class=\"btn btn-primary mr-2\" id=\"checkoutBtn\" (click)=\"onCheckout()\">\n Checkout</button>\n </div>\n <div *ngIf=\"checkOutInProgress\" class=\"col-12 text-center\">\n <div class=\"alert alert-info\">\n <span class=\"spinner-border text-primary\" role=\"status\"></span>\n Checking out...\n </div>\n </div>\n </div>\n</div>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { ShoppingCart } from '@ohioepa/oepa-ebiz-lib'\nimport { ShoppingCartService } from '../shopping-cart.service';\nimport { ToastrService } from 'ngx-toastr';\n\n@Component({\n selector: 'oepa-shopping-cart-summary',\n templateUrl: './shopping-cart-summary.component.html',\n styleUrls: ['./shopping-cart-summary.component.css']\n})\nexport class ShoppingCartSummaryComponent implements OnInit {\n\n @Input() serviceName: string = '';\n @Output() cartChange: EventEmitter<ShoppingCart> = new EventEmitter<ShoppingCart>();\n \n itemsText: string = '';\n totalCost: number | undefined = 0;\n\n constructor(private shoppingCartService: ShoppingCartService, private toastr: ToastrService) { }\n\n ngOnInit() {\n this.loadCart();\n }\n\n private loadCart() {\n this.itemsText = 'Loading...';\n this.totalCost = 0;\n this.shoppingCartService.retrieveShoppingCart(this.serviceName).subscribe({\n next: shoppingCart => {\n if (shoppingCart && shoppingCart.cartItems) {\n if (shoppingCart.cartItems.length === 1) {\n this.itemsText = 'One item';\n } else if (shoppingCart.cartItems.length > 1) {\n this.itemsText = shoppingCart.cartItems.length + ' items';\n }\n } else {\n this.itemsText = 'No items';\n }\n this.cartChange.emit(shoppingCart);\n this.totalCost = shoppingCart.totalAmount?.amount;\n }, error: err => {\n this.toastr.error('Failed retrieving shopping cart: ' + err);\n }});\n }\n\n}\n","<div class=\"cart-summary\">\n <div class=\"cart-summary-icon\">\n <svg version=\"1.1\" class=\"summary-icon\" xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 32 32\">\n <path stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" fill=\"none\" stroke-linejoin=\"round\"\n d=\"M2,4 L6,4 L10,20 L21,20 L25,10 L8,10 M13,10 L13,20 M18,20 L18,10 M10,15 L23,15\"/>\n <circle fill=\"currentColor\" cx=\"11\" cy=\"24\" r=\"2\"/>\n <circle fill=\"currentColor\" cx=\"21\" cy=\"24\" r=\"2\"/>\n </svg>\n </div>\n <div class=\"cart-summary-contents\">\n <div class=\"cart-summary-items\">\n {{itemsText}}\n </div>\n <div class=\"cart-summary-cost\">\n {{totalCost | currency}}\n </div>\n </div>\n </div>\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { OepaComponentIdService } from '@ohioepa/oepa-common-lib';\nimport { TimeRange } from '@ohioepa/oepa-ebiz-lib';\nimport { FormBuilder, FormGroup } from '@angular/forms';\n\n@Component({\n selector: 'oepa-start-end-timepicker',\n templateUrl: './start-end-timepicker.component.html',\n styleUrls: ['./start-end-timepicker.component.css']\n})\nexport class StartEndTimepickerComponent implements OnInit {\n public startComponentId = 'OepaTimepickerComponent';\n public endComponentId = 'OepaTimepickerComponent';\n\n @Input() timeRangeInfo: TimeRange = {};\n @Output() timeRangeInfoChange = new EventEmitter<TimeRange>();\n\n @Input() showValidation = false;\n @Input() isRequired = false;\n @Input() isReadOnly = false;\n @Input() isDisabled = false;\n @Input() defaultTimeRange: TimeRange = {};\n\n private offsetHours = 0;\n public form: FormGroup;\n validStart = true;\n validEnd = true;\n\n constructor(\n private fb: FormBuilder,\n private idService: OepaComponentIdService,\n ) {\n this.form = this.fb.group({\n start: null,\n end: null\n });\n \n this.form.get(\"start\")?.valueChanges.subscribe(time => {\n if(this.validStart) {\n let tmpTime: Date = new Date(time);\n tmpTime.setHours(time.getHours() - this.offsetHours);\n this.timeRangeInfo.startHour = tmpTime.getHours();\n this.timeRangeInfo.startMinute = tmpTime.getMinutes();\n this.timeRangeInfo.startSecond = 0;\n } else {\n this.timeRangeInfo.startHour = undefined;\n this.timeRangeInfo.startMinute = undefined;\n this.timeRangeInfo.startSecond = undefined;\n }\n this.timeRangeInfoChange.emit(this.timeRangeInfo);\n });\n this.form.get(\"end\")?.valueChanges.subscribe(time => {\n if(this.validEnd) {\n let tmpTime: Date = new Date(time);\n tmpTime.setHours(time.getHours() - this.offsetHours);\n this.timeRangeInfo.endHour = tmpTime.getHours();\n this.timeRangeInfo.endMinute = tmpTime.getMinutes();\n this.timeRangeInfo.endSecond = 0;\n } else {\n this.timeRangeInfo.endHour = undefined;\n this.timeRangeInfo.endMinute = undefined;\n this.timeRangeInfo.endSecond = undefined;\n }\n this.timeRangeInfoChange.emit(this.timeRangeInfo);\n });\n }\n\n isValidStart(event: boolean): void {\n this.validStart = event;\n }\n isValidEnd(event: boolean): void {\n this.validEnd = event;\n }\n\n ngOnInit() {\n if (this.form) {\n this.startComponentId = this.idService.getComponentId(this.form);\n this.startComponentId += (this.startComponentId.length > 0 ? '_' : '') + ('StartTime');\n this.endComponentId = this.idService.getComponentId(this.form);\n this.endComponentId += (this.endComponentId.length > 0 ? '_' : '') + ('EndTime');\n } else {\n console.log('OOPS No datepickerForm yet');\n }\n\n if (!this.timeRangeInfo.startHour && this.defaultTimeRange && this.defaultTimeRange.startHour) {\n this.timeRangeInfo.startHour = this.defaultTimeRange.startHour;\n this.timeRangeInfo.startMinute = this.defaultTimeRange.startMinute;\n this.timeRangeInfo.startSecond = this.defaultTimeRange.startSecond;\n }\n if (!this.timeRangeInfo.endHour && this.defaultTimeRange && this.defaultTimeRange.endHour) {\n this.timeRangeInfo.endHour = this.defaultTimeRange.endHour;\n this.timeRangeInfo.endMinute = this.defaultTimeRange.endMinute;\n this.timeRangeInfo.endSecond = this.defaultTimeRange.endSecond;\n }\n\n if (this.timeRangeInfo.startHour) {\n this.form.patchValue({\n start: this.setTime(this.timeRangeInfo.startHour, this.timeRangeInfo.startMinute || 0),\n });\n }\n if (this.timeRangeInfo.endHour) {\n this.form.patchValue({\n end: this.setTime(this.timeRangeInfo.endHour, this.timeRangeInfo.endMinute || 0),\n });\n }\n }\n\n setTime(hour: number, minute: number): Date {\n let date = new Date();\n date.setHours(hour);\n date.setMinutes(minute);\n date.setSeconds(0);\n return date;\n }\n\n}\n","<div [formGroup]=\"form\">\n <div class=\"form-group row\">\n <div class=\"col-sm-6\">\n <div class=\"col-md-12 form-group\" [ngClass]=\"{'is-invalid':showValidation && isRequired && !validStart}\">\n <div class=\"input-group\">\n <timepicker formControlName=\"start\" [readonlyInput]=\"isReadOnly\" [id]=\"startComponentId+'_StartTime'\" [disabled]=\"isDisabled\" (isValid)=\"isValidStart($event)\"></timepicker>\n </div>\n <small class=\"help-block\" *ngIf=\"showValidation && isRequired && !validStart\">Time is invalid</small>\n </div>\n </div>\n <div class=\"col-sm-6\">\n <div class=\"col-md-12 form-group\" [ngClass]=\"{'is-invalid':showValidation && isRequired && !validEnd}\">\n <div class=\"input-group\">\n <timepicker formControlName=\"end\" [readonlyInput]=\"isReadOnly\" [id]=\"endComponentId+'_EndTime'\" [disabled]=\"isDisabled\" (isValid)=\"isValidEnd($event)\"></timepicker>\n </div>\n <small class=\"help-block\" *ngIf=\"showValidation && isRequired && !validEnd\">Time is invalid</small>\n </div>\n </div>\n </div>\n</div>\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\n\nimport { BsModalRef } from 'ngx-bootstrap/modal';\n\nimport { OepaTemplateInfo } from '@ohioepa/oepa-common-lib';\n\n\n@Component({\n selector: 'oepa-template-confirmation-modal',\n templateUrl: './template-confirmation-modal.component.html',\n styleUrls: ['./template-confirmation-modal.component.css']\n})\nexport class TemplateConfirmationModalComponent implements OnInit {\n @Input() headerText: string = '';\n @Input() content!: OepaTemplateInfo;\n @Input() confirmBtnLabel = 'Ok';\n @Input() cancelBtnLabel = 'Cancel';\n\n @Output() confirmClicked: EventEmitter<void> = new EventEmitter<void>();\n @Output() cancelClicked: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(public bsModalRef: BsModalRef) { }\n\n ngOnInit() {\n }\n\n confirm() {\n this.confirmClicked.emit();\n this.bsModalRef.hide();\n }\n\n cancel() {\n this.cancelClicked.emit();\n this.bsModalRef.hide();\n }\n\n}\n","<div *ngIf=\"headerText\" class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">{{headerText}}</h4>\n <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n <div *ngIf=\"content\" class=\"modal-body\">\n <cml-template [templateInfo]=\"content\"></cml-template>\n </div>\n <div class=\"modal-footer\">\n <button *ngIf=\"confirmBtnLabel\" type=\"button\" class=\"btn btn-primary mr-1\" (click)=\"confirm()\">{{confirmBtnLabel}}</button>\n <button type=\"button\" class=\"btn btn-primary mr-1\" (click)=\"cancel()\">{{cancelBtnLabel}}</button>\n </div>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { OepaComponentIdService } from '@ohioepa/oepa-common-lib';\n\n@Component({\n selector: 'oepa-text-area-input',\n templateUrl: './text-area-input.component.html',\n styleUrls: ['./text-area-input.component.css']\n})\nexport class TextAreaInputComponent implements OnInit {\n public componentId = 'TextAreaInputComponent';\n\n @Input() group!: FormGroup;\n @Input() field: string = '';\n @Input() tableIdx: number = 0;\n @Input() title = 'Input';\n @Input() placeholder = '';\n @Input() maxlength = 4000;\n\n @Output() onValueChange: EventEmitter<string> = new EventEmitter<string>();\n\n constructor(private idService: OepaComponentIdService) { \n }\n\n ngOnInit() {\n if (this.group) {\n this.componentId = this.idService.getComponentId(this.group) + (this.field || '') + (this.tableIdx || '');\n this.group.get(this.field)?.valueChanges.subscribe(value => {\n this.onValueChange.emit(value);\n });\n }\n }\n}\n","<div [formGroup]=\"group\">\n<textarea class=\"form-control\" [ngClass]=\"{'is-invalid':group.controls[field].invalid}\" \ntype=\"text\" [placeholder]=\"placeholder\" [maxlength]=\"maxlength\" [formControlName]=\"field\"\n[id]=\"componentId\"></textarea>\n<small class=\"invalid-feedback\" *ngIf=\"group.controls[field].invalid\">{{title}} is required</small>\n</div>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\n\n@Component({\n selector: 'oepa-timeout-modal',\n templateUrl: './timeout-modal.component.html',\n styleUrls: ['./timeout-modal.component.css']\n})\nexport class TimeoutModalComponent implements OnInit {\n @Input() countdown = 0;\n\n @Output() okClicked: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(public bsModalRef: BsModalRef) {} // , private idle: Idle) { }\n\n ngOnInit() {\n // this.idle.onTimeoutWarning.subscribe((countdown) => {\n // this.countdown = countdown;\n // });\n }\n\n ok() {\n this.okClicked.emit();\n this.bsModalRef.hide();\n }\n\n}\n","<div class=\"modal-header\">\n <h3 class=\"modal-title\">Session Timeout Warning</h3>\n</div>\n\n<div class=\"modal-body\">\n <div class=\"alert alert-info\">\n Your session will timeout in {{ countdown }} seconds. If you wish to stay logged in click 'Continue'.\n </div>\n</div>\n\n<div class=\"modal-footer\">\n <button class=\"btn btn-primary mr-1\" id=\"continueSessionBtn\" (click)=\"ok()\">Continue</button>\n</div>","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { OepaComponentIdService } from '@ohioepa/oepa-common-lib';\n\n@Component({\n selector: 'oepa-timepicker',\n templateUrl: './timepicker.component.html',\n styleUrls: ['./timepicker.component.css']\n})\nexport class TimepickerComponent implements OnInit {\n public componentId = 'OepaTimepickerComponent';\n\n @Input() group!: FormGroup;\n @Input() field: string = '';\n @Input() showValidation = false;\n @Input() readonlyInput = false;\n\n constructor(private idService: OepaComponentIdService) { }\n\n checkValidity() {\n for (const key in this.group.controls) {\n if (this.group.controls.hasOwnProperty(key) && key === this.field) {\n return this.group.controls[key].status === 'VALID';\n }\n }\n return null;\n }\n\n ngOnInit() {\n if (this.group) {\n this.componentId = this.idService.getComponentId(this.group);\n } else {\n console.log('OOPS No group yet');\n }\n }\n\n}\n","<form [formGroup]=\"group\">\n <div class=\"col-md-12 form-group\">\n <div class=\"input-group\" [ngClass]=\"{'is-invalid':showValidation && !checkValidity()}\">\n <timepicker [formControlName]=\"field\" [readonlyInput]=\"readonlyInput\"></timepicker>\n </div>\n <small class=\"invalid-feedback d-block\" *ngIf=\"showValidation && !checkValidity()\">Time is required</small>\n </div>\n</form>","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { OepaTableRow } from \"./oepa-table-row\";\nimport { OepaTableCell } from \"./oepa-table-cell\";\nimport { OepaTableColumn } from \"./oepa-table-column\";\n\n@Pipe({\n name: 'cellHidden'\n})\nexport class OepaTableCellHiddenPipe implements PipeTransform {\n transform(row: OepaTableRow, column: OepaTableColumn): boolean {\n let hidden: boolean = false;\n row.cells.forEach((cell: OepaTableCell) => {\n if (cell.id === column.id) {\n hidden = cell.hideValue || false;\n }\n });\n return hidden;\n }\n}","import { Component, OnInit, Input, Output, EventEmitter, OnChanges, SimpleChanges, ElementRef } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { OepaComponentIdService, OepaSmallService } from '@ohioepa/oepa-common-lib';\n\n@Component({\n selector: 'oepa-select-input',\n templateUrl: './select-input.component.html',\n styleUrls: ['./select-input.component.css']\n})\nexport class SelectInputComponent implements OnInit, OnChanges {\n public componentId = 'SelectInputComponent';\n @Input() group!: FormGroup;\n @Input() field: string = '';\n @Input() tableIdx: number | undefined;\n @Input() title = 'Select';\n @Input() pickList: any[] = [];\n @Input() fullList: any[] = [];\n @Input() valueField: string = '';\n @Input() displayField: string = '';\n @Input() small = false;\n\n @Output() onValueSelected: EventEmitter<string> = new EventEmitter<string>();\n\n public internalPickList: any[] | undefined;\n\n constructor(private idService: OepaComponentIdService, \n private smallService: OepaSmallService,\n private elRef: ElementRef) { \n }\n\n ngOnInit() {\n this.small = this.smallService.isSmall(this.elRef.nativeElement);\n if (this.group) {\n this.componentId = (this.field || 'selectInput') + (this.tableIdx || this.tableIdx === 0 ? this.tableIdx : '');\n this.group.get(this.field)?.valueChanges.subscribe(value => {\n this.onValueSelected.emit(value);\n });\n this.addCurrentValueToListIfMissing();\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n for (const propName in changes) {\n if (changes.hasOwnProperty(propName)) {\n switch (propName) {\n case 'pickList':\n case 'fullList':\n this.addCurrentValueToListIfMissing();\n break;\n }\n }\n }\n } \n\n private addCurrentValueToListIfMissing() {\n let currValue = this.group.get(this.field)?.value;\n if (!this.internalPickList && this.pickList && this.pickList.length > 0) {\n this.internalPickList = Object.assign([], this.pickList);\n }\n if (currValue && this.pickList && this.pickList.length > 0 && this.fullList && this.fullList.length > 0) {\n this.internalPickList = Object.assign([], this.pickList);\n let matches = this.pickList.filter(item => {\n return (item[this.valueField] === currValue);\n });\n if (!matches || matches.length === 0 && this.fullList) {\n let inactiveItems = this.fullList.filter(item => {\n return (item[this.valueField] === currValue);\n });\n if (inactiveItems && inactiveItems.length > 0) {\n this.internalPickList.push(inactiveItems[0]);\n }\n }\n }\n }\n\n}\n","<div [formGroup]=\"group\">\n<select class=\"form-select\" [formControlName]=\"field\" [ngClass]=\"{'is-invalid':group.controls[field].invalid, 'form-control-sm': small}\" \n [id]=\"componentId\">\n<option *ngFor=\"let item of internalPickList\" [ngValue]=\"item[valueField]\">{{item[displayField]}}</option>\n</select>\n<small class=\"invalid-feedback\" *ngIf=\"group.controls[field].invalid\">{{title}} is required</small>\n</div>\n","import { Component, OnInit, Input, Output, EventEmitter, ElementRef } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { OepaComponentIdService, OepaSmallService } from '@ohioepa/oepa-common-lib';\n\n@Component({\n selector: 'oepa-numeric-input',\n templateUrl: './numeric-input.component.html',\n styleUrls: ['./numeric-input.component.css']\n})\nexport class NumericInputComponent implements OnInit {\n public componentId = 'NumericInputComponent';\n @Input() group!: FormGroup;\n @Input() field: string = '';\n @Input() tableIdx: number | undefined;\n @Input() title = 'Input';\n @Input() small = false;\n\n @Output() onValueChange: EventEmitter<string> = new EventEmitter<string>();\n\n constructor(private idService: OepaComponentIdService, \n private smallService: OepaSmallService,\n private elRef: ElementRef) { \n }\n\n ngOnInit() {\n this.small = this.smallService.isSmall(this.elRef.nativeElement);\n if (this.group) {\n this.componentId = this.idService.getComponentId(this.group) + (this.field || '') + (this.tableIdx || '');\n this.group.get(this.field)?.valueChanges.subscribe(value => {\n this.onValueChange.emit(value);\n });\n }\n }\n\n}\n","<div [formGroup]=\"group\">\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':group.controls[field].invalid, 'form-control-sm': small}\" type=\"number\"\n [formControlName]=\"field\" [id]=\"componentId\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls[field].invalid\">{{title}} is required</small>\n</div>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { OepaComponentIdService } from '@ohioepa/oepa-common-lib';\n\n@Component({\n selector: 'oepa-checkbox-input',\n templateUrl: './checkbox-input.component.html',\n styleUrls: ['./checkbox-input.component.css']\n})\nexport class CheckboxInputComponent implements OnInit {\n public componentId = \"CheckboxInputComponent\";\n @Input() group!: FormGroup;\n @Input() field: string = '';\n @Input() tableIdx: number | undefined;\n @Input() title = 'Input';\n\n @Output() onValueChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n constructor(private idService: OepaComponentIdService) { }\n\n ngOnInit() {\n if (this.group) {\n this.componentId = this.idService.getComponentId(this.group) + (this.field || '') + (this.tableIdx || '');\n this.group.get(this.field)?.valueChanges.subscribe(value => {\n this.onValueChange.emit(value);\n });\n }\n }\n\n}\n","<div [formGroup]=\"group\">\n <input class=\"checkboxPlus\" type=\"checkbox\" [formControlName]=\"field\" [id]=\"componentId\">\n</div>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\n@Component({\n selector: 'oepa-date-input',\n templateUrl: './date-input.component.html',\n styleUrls: ['./date-input.component.css']\n})\nexport class DateInputComponent implements OnInit {\n public componentId = 'DateInputComponent';\n @Input() group!: FormGroup;\n @Input() field: string = '';\n @Input() tableIdx: number | undefined;\n @Input() placement: string = '';\n @Input() showValidation = true;\n @Input() pauseChangeProcessing = false;\n\n @Output() onValueChange: EventEmitter<Date> = new EventEmitter<Date>();\n\n private currentDate = undefined;\n\n constructor() { \n }\n\n ngOnInit() {\n if (this.group) {\n this.group.get(this.field)?.valueChanges.subscribe(value => {\n if (!this.currentDate) {\n this.currentDate = value;\n this.onValueChange.emit(value);\n } else if (this.currentDate !== value) {\n this.currentDate = value;\n this.onValueChange.emit(value);\n }\n });\n }\n }\n\n}\n","<div [formGroup]=\"group\">\n <oepa-datepicker [group]=\"group\" [field]=\"field\" [tableIdx]=\"tableIdx\" \n [placement]=\"placement\" [showValidation]=\"showValidation\"></oepa-datepicker>\n</div>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { OepaComponentIdService } from '@ohioepa/oepa-common-lib';\n\n@Component({\n selector: 'oepa-text-input',\n templateUrl: './text-input.component.html',\n styleUrls: ['./text-input.component.css']\n})\nexport class TextInputComponent implements OnInit {\n public componentId = 'TextInputComponent';\n\n @Input() group!: FormGroup;\n @Input() field: string = '';\n @Input() tableIdx: number | undefined;\n @Input() title = 'Input';\n @Input() placeholder = '';\n @Input() maxlength = 4000;\n\n @Output() onValueChange: EventEmitter<string> = new EventEmitter<string>();\n\n constructor(private idService: OepaComponentIdService) { \n }\n\n ngOnInit() {\n if (this.group) {\n this.componentId = this.idService.getComponentId(this.group) + (this.field || '') + (this.tableIdx || '');\n this.group.get(this.field)?.valueChanges.subscribe(value => {\n this.onValueChange.emit(value);\n });\n }\n }\n}\n","<div [formGroup]=\"group\">\n<input class=\"form-control\" [ngClass]=\"{'is-invalid':group.controls[field].invalid}\" \ntype=\"text\" [placeholder]=\"placeholder\" [maxlength]=\"maxlength\" [formControlName]=\"field\"\n[id]=\"componentId\">\n<small class=\"invalid-feedback\" *ngIf=\"group.controls[field].invalid\">{{title}} is required</small>\n</div>","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { OepaComponentIdService } from '@ohioepa/oepa-common-lib';\n\n@Component({\n selector: 'oepa-phone-number',\n templateUrl: './phone-number.component.html',\n styleUrls: ['./phone-number.component.css']\n})\nexport class PhoneNumberComponent implements OnInit {\n\n public componentId = 'OepaPhoneNumberComponent';\n /** The form group for which this address is a member. */\n @Input() group!: FormGroup;\n @Input() field: string = 'phoneNumber';\n /** Form validation will be displayed when showValidation is true. */\n @Input() showValidation = false;\n @Input('isSearch') public isSearch: boolean = false;\n\n @Input('phoneLabel') public phoneLabel: string = 'Phone';\n\n constructor(private idService: OepaComponentIdService) {\n }\n\n ngOnInit() {\n if (this.group) {\n this.componentId = this.idService.getComponentId(this.group);\n }\n }\n\n}\n","<div [formGroup]=\"group\">\n\t<label>{{phoneLabel}}</label>\n\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls[field].status === 'INVALID'}\"\n\t\tplaceholder=\"(xxx) xxx-xxxx\" [formControlName]=\"field\" [id]=\"componentId+'_PhoneInput'\" mask=\"(000) 000-0000\" minlength=\"10\">\n\t<small class=\"invalid-feedback\" *ngIf=\"group.controls[field].hasError('required')\">{{phoneLabel}} is required</small>\n\t<small class=\"invalid-feedback\" *ngIf=\"group.controls[field].hasError('minlength')\">Please enter a valid phone number</small>\n</div>","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { OepaComponentIdService } from '@ohioepa/oepa-common-lib';\n\n@Component({\n selector: 'oepa-zip-code',\n templateUrl: './zip-code.component.html',\n styleUrls: ['./zip-code.component.css']\n})\nexport class ZipCodeComponent implements OnInit {\n\n public componentId = 'OepaZipCodeComponent';\n /** The form group for which this address is a member. */\n @Input() group!: FormGroup;\n @Input() field: string = 'postalCode';\n /** Form validation will be displayed when showValidation is true. */\n @Input() showValidation = false;\n @Input() public isSearch: boolean = false;\n @Input() public zipCodeLabel: string = 'Zip Code';\n\n constructor(private idService: OepaComponentIdService) {\n }\n\n ngOnInit() {\n if (this.group) {\n this.componentId = this.idService.getComponentId(this.group);\n }\n }\n\n}\n","<div [formGroup]=\"group\">\n\t<label>{{zipCodeLabel}}</label>\n\t<input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls[field].status === 'INVALID'}\"\n\t [type]=\"isSearch ? 'search' : 'text'\" placeholder=\"Zip Code\" [formControlName]=\"field\" [id]=\"componentId+'_ZipInput'\" mask=\"00000\">\n\t<small class=\"invalid-feedback\" *ngIf=\"group.controls[field].hasError('required')\">{{zipCodeLabel}} is required</small>\n\t<small class=\"invalid-feedback\" *ngIf=\"group.controls[field].hasError('minlength')\">{{zipCodeLabel}} must contain exactly 5 digits</small>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AddressComponent } from './address/address.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ContactComponent } from './contact/contact.component';\nimport { NgxMaskDirective, NgxMaskPipe, provideNgxMask } from 'ngx-mask';\nimport { DatepickerComponent } from './datepicker/datepicker.component';\n\nimport { ButtonsModule } from 'ngx-bootstrap/buttons';\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\nimport { TimepickerModule } from 'ngx-bootstrap/timepicker';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { PaginationModule } from 'ngx-bootstrap/pagination';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { TypeaheadModule } from 'ngx-bootstrap/typeahead';\nimport { AccordionModule} from 'ngx-bootstrap/accordion';\nimport { CollapseModule } from 'ngx-bootstrap/collapse';\nimport { TabsModule } from 'ngx-bootstrap/tabs';\n\nimport { ActionBtnComponent } from './action-btn/action-btn.component';\nimport { ActionBtnModalComponent } from './action-btn-modal/action-btn-modal.component';\nimport { CheckboxComponent } from './checkbox/checkbox.component';\nimport { CommentModalComponent } from './comment-modal/comment-modal.component';\nimport { ConfirmationModalComponent } from './confirmation-modal/confirmation-modal.component';\nimport { AccountSearchInputComponent } from './account-search-input/account-search-input.component';\nimport { TableComponent } from './table/table.component';\nimport { PTableComponent } from './table/p-table/p-table.component';\nimport { TableHeaderCellComponent } from './table/table-header-cell/table-header-cell.component';\nimport { TableDataCellComponent } from './table/table-data-cell/table-data-cell.component';\nimport { OepaTableSortingDirective } from './table/oepa-table-sorting.directive';\nimport { OepaTableFilteringDirective } from './table/oepa-table-filtering.directive';\nimport { OepaTableCellInnerHtmlPipe } from './table/oepa-table-cell-inner-html.pipe';\nimport { CommonLibModule } from '@ohioepa/oepa-common-lib';\nimport { AccountSearchModalComponent } from './account-search-modal/account-search-modal.component';\nimport { OepaTableCellColSpanPipe } from './table/oepa-table-cell-colspan.pipe';\nimport { OepaTableCellValuePipe } from './table/oepa-table-cell-value.pipe';\nimport { OepaTableCellClassnamePipe } from './table/oepa-table-cell-classname.pipe';\nimport { OepaTableCellIconClassnamePipe } from './table/oepa-table-cell-icon-classname.pipe';\nimport { OepaTableCellImgSrcPipe } from './table/oepa-table-cell-img-src.pipe';\nimport { DaterangepickerComponent } from './daterangepicker/daterangepicker.component';\nimport { OEPAWaitMessageComponent } from './oepa-wait-message/oepa-wait-message.component';\nimport { OEPAErrorMessageComponent } from './oepa-error-message/oepa-error-message.component';\nimport { MessageComponent } from './message/message.component';\nimport { MessageListComponent } from './message-list/message-list.component';\nimport { FileUploadComponent } from './file-upload/file-upload.component';\nimport { MultiFileUploadComponent } from './multi-file-upload/multi-file-upload.component';\nimport { OrganizationCreateModalComponent } from './entity/organization-create-modal/organization-create-modal.component';\nimport { OrganizationSearchInputComponent } from './entity/organization-search-input/organization-search-input.component';\nimport { OrganizationSearchModalComponent } from './entity/organization-search-modal/organization-search-modal.component';\nimport { PersonCreateModalComponent } from './entity/person-create-modal/person-create-modal.component';\nimport { PersonSearchInputComponent } from './entity/person-search-input/person-search-input.component';\nimport { PersonSearchModalComponent } from './entity/person-search-modal/person-search-modal.component';\nimport { PlaceCreateModalComponent } from './entity/place-create-modal/place-create-modal.component';\nimport { PlaceSearchInputComponent } from './entity/place-search-input/place-search-input.component';\nimport { PlaceSearchModalComponent } from './entity/place-search-modal/place-search-modal.component';\nimport { YesNoComponent } from './yes-no/yes-no.component';\nimport { YesNoBooleanComponent } from './yes-no-boolean/yes-no.component';\nimport { YesNoOtherInputComponent } from './yes-no-other-input/yes-no-other-input.component';\nimport { DateInputModalComponent } from './date-input-modal/date-input-modal.component';\nimport { NgxSummernoteModule } from 'ngx-summernote';\nimport { DocumentPartComponent } from './document/document-part/document-part.component';\nimport { PartModalComponent } from './document/part-modal/part-modal.component';\nimport { EbizAddressComponent } from './ebiz-address/ebiz-address.component';\nimport { EsriMapComponent } from './esri-map/esri-map.component';\nimport { OhioLatLongComponent } from './ohio-lat-long/ohio-lat-long.component';\nimport { EdocAttachmentComponent } from './edoc-attachment/edoc-attachment.component';\nimport { DocumentEditorComponent } from './document/document-editor/document-editor.component';\nimport { DocumentGroupComponent } from './document/document-group/document-group.component';\nimport { DocumentPartEditorComponent } from './document/document-part-editor/document-part-editor.component';\nimport { DocumentPlaceholderModalComponent } from './document/document-placeholder-modal/document-placeholder-modal.component';\nimport { DocumentSectionComponent } from './document/document-section/document-section.component';\nimport { GroupModalComponent } from './document/group-modal/group-modal.component';\nimport { SectionModalComponent } from './document/section-modal/section-modal.component';\nimport { ArrayFilterPipe, ArraySortPipe } from './dual-list-box/array.pipes';\nimport { DualListBoxComponent } from './dual-list-box/dual-list-box.component';\nimport { LynxImageUploadComponent } from './lynx-image-upload/lynx-image-upload.component';\nimport { NotesModalComponent } from './notes-modal/notes-modal.component';\nimport { ParamsHelpButtonComponent } from './params-help-button/params-help-button.component';\nimport { PinModalComponent } from './pin-modal/pin-modal.component';\nimport { NumericInputDirective } from './numeric-input.directive';\nimport { ServerTimeoutModalComponent } from './server-timeout-modal/server-timeout-modal.component';\nimport { ShoppingCartViewComponent } from './shopping-cart/shopping-cart-view/shopping-cart-view.component';\nimport { ShoppingCartSummaryComponent } from './shopping-cart/shopping-cart-summary/shopping-cart-summary.component';\nimport { StartEndTimepickerComponent } from './start-end-timepicker/start-end-timepicker.component';\nimport { TemplateConfirmationModalComponent } from './template-confirmation-modal/template-confirmation-modal.component';\nimport { TextAreaInputComponent } from './text-area-input/text-area-input.component';\nimport { TimeoutModalComponent } from './timeout-modal/timeout-modal.component';\nimport { TimepickerComponent } from './timepicker/timepicker.component';\nimport { OepaTableCellNotSelectablePipe } from './table/oepa-table-cell-not-selectable.pipe';\nimport { OepaTableCellHiddenPipe } from './table/oepa-table-cell-hidden.pipe';\nimport { OepaTableCellInputComponentPipe } from './table/oepa-table-cell-input-component.pipe';\nimport { SelectInputComponent } from './select-input/select-input.component';\nimport { NumericInputComponent } from './numeric-input/numeric-input.component';\nimport { CheckboxInputComponent } from './checkbox-input/checkbox-input.component';\nimport { DateInputComponent } from './date-input/date-input.component';\nimport { TextInputComponent } from './text-input/text-input.component';\nimport { TableModule } from 'primeng/table';\nimport { PhoneNumberComponent } from './phone-number/phone-number.component';\nimport { ZipCodeComponent } from './zip-code/zip-code.component';\n\n@NgModule({\n declarations: [\n AccountSearchInputComponent, AccountSearchModalComponent,\n ActionBtnComponent, ActionBtnModalComponent, AddressComponent, ZipCodeComponent,\n ArrayFilterPipe, ArraySortPipe,\n CheckboxComponent, CheckboxInputComponent, CommentModalComponent, ConfirmationModalComponent, ContactComponent, PhoneNumberComponent,\n DateInputComponent, DatepickerComponent, DaterangepickerComponent, DateInputModalComponent,\n DocumentEditorComponent, DocumentSectionComponent, DocumentGroupComponent, DocumentPartComponent, DocumentPartEditorComponent,\n DocumentPlaceholderModalComponent, GroupModalComponent, PartModalComponent, SectionModalComponent, \n DualListBoxComponent,\n EbizAddressComponent,\n EdocAttachmentComponent,\n EsriMapComponent, OhioLatLongComponent,\n LynxImageUploadComponent,\n FileUploadComponent, MultiFileUploadComponent,\n MessageComponent, MessageListComponent,\n TableComponent, PTableComponent, TableDataCellComponent, TableHeaderCellComponent, OepaTableSortingDirective, OepaTableFilteringDirective, \n NumericInputDirective,\n OepaTableCellInnerHtmlPipe, OepaTableCellColSpanPipe, OepaTableCellValuePipe,\n OepaTableCellClassnamePipe, OepaTableCellIconClassnamePipe, OepaTableCellImgSrcPipe,\n OepaTableCellNotSelectablePipe, OepaTableCellHiddenPipe, OepaTableCellInputComponentPipe,\n OEPAErrorMessageComponent, OEPAWaitMessageComponent,\n OrganizationCreateModalComponent, OrganizationSearchInputComponent, OrganizationSearchModalComponent,\n NotesModalComponent, NumericInputComponent, ParamsHelpButtonComponent,\n PersonCreateModalComponent, PersonSearchInputComponent, PersonSearchModalComponent,\n PinModalComponent,\n PlaceCreateModalComponent, PlaceSearchInputComponent, PlaceSearchModalComponent,\n SelectInputComponent, ServerTimeoutModalComponent,\n ShoppingCartViewComponent, ShoppingCartSummaryComponent,\n StartEndTimepickerComponent,\n TemplateConfirmationModalComponent, TextAreaInputComponent, TextInputComponent, TimeoutModalComponent, TimepickerComponent,\n YesNoComponent, YesNoBooleanComponent, YesNoOtherInputComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NgxMaskDirective, NgxMaskPipe,\n ButtonsModule.forRoot(),\n BsDatepickerModule.forRoot(),\n TimepickerModule.forRoot(),\n PaginationModule.forRoot(),\n PopoverModule.forRoot(),\n TooltipModule.forRoot(),\n BsDropdownModule.forRoot(),\n ModalModule.forRoot(),\n TypeaheadModule.forRoot(),\n AccordionModule.forRoot(),\n CollapseModule.forRoot(),\n TabsModule.forRoot(),\n TableModule,\n CommonLibModule,\n NgxSummernoteModule\n ],\n exports: [\n AccountSearchInputComponent, AccountSearchModalComponent,\n ActionBtnComponent, ActionBtnModalComponent, AddressComponent, ZipCodeComponent,\n ArrayFilterPipe, ArraySortPipe,\n CheckboxComponent, CommentModalComponent, ConfirmationModalComponent, ContactComponent, PhoneNumberComponent,\n DatepickerComponent, DaterangepickerComponent, DateInputModalComponent,\n DocumentEditorComponent, DocumentSectionComponent, DocumentGroupComponent, DocumentPartComponent, DocumentPartEditorComponent,\n DocumentPlaceholderModalComponent, GroupModalComponent, PartModalComponent, SectionModalComponent, \n DualListBoxComponent,\n EbizAddressComponent,\n EdocAttachmentComponent,\n EsriMapComponent, OhioLatLongComponent,\n LynxImageUploadComponent,\n FileUploadComponent, MultiFileUploadComponent,\n MessageComponent, MessageListComponent,\n TableComponent, PTableComponent, OepaTableSortingDirective, OepaTableFilteringDirective, \n NumericInputDirective,\n OepaTableCellInnerHtmlPipe, OepaTableCellColSpanPipe, OepaTableCellValuePipe,\n OepaTableCellClassnamePipe, OepaTableCellIconClassnamePipe, OepaTableCellImgSrcPipe,\n OEPAErrorMessageComponent, OEPAWaitMessageComponent,\n OrganizationCreateModalComponent, OrganizationSearchInputComponent, OrganizationSearchModalComponent,\n NotesModalComponent, ParamsHelpButtonComponent,\n PersonCreateModalComponent, PersonSearchInputComponent, PersonSearchModalComponent,\n PinModalComponent,\n PlaceCreateModalComponent, PlaceSearchInputComponent, PlaceSearchModalComponent,\n ServerTimeoutModalComponent,\n ShoppingCartViewComponent, ShoppingCartSummaryComponent,\n StartEndTimepickerComponent,\n TemplateConfirmationModalComponent, TextAreaInputComponent, TimeoutModalComponent, TimepickerComponent,\n YesNoComponent, YesNoBooleanComponent, YesNoOtherInputComponent\n ],\n providers: [\n provideNgxMask()\n ]\n})\nexport class CommonFormsModule { }\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'oepa-blank',\n templateUrl: './blank.component.html',\n styleUrls: ['./blank.component.css']\n})\nexport class BlankComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { LynxProject, LynxUploadResult, LynxProjectMetadata, LynxImageMetadata, LynxAttachment } from '@ohioepa/oepa-ebiz-lib';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LynxService {\n lynxUrl = '/ebiz/api/v1/lynx/';\n\n constructor(private http: HttpClient) { }\n\n public retrieveProjects(): Observable<Array<LynxProject>> {\n const headers = new HttpHeaders();\n headers.append('Content-type', 'application/json');\n return this.http.get<Array<LynxProject>>(this.lynxUrl + 'projects', { headers: headers });\n }\n\n public retrieveProjectMetadata(projectID: string): Observable<LynxProjectMetadata> {\n const headers = new HttpHeaders();\n headers.append('Content-type', 'application/json');\n return this.http.get<LynxProjectMetadata>(this.lynxUrl + 'metadata/' + projectID, { headers: headers });\n }\n\n public storeImage(attachment: LynxAttachment, projectID: string): Observable<LynxUploadResult> {\n const headers = new HttpHeaders();\n headers.append('Content-type', 'application/json');\n let url = this.lynxUrl + 'project/' + projectID + '/' + 'image';\n return this.http.post<LynxUploadResult>(url, attachment, { headers: headers });\n }\n\n public tagImage(imageMetadata: LynxImageMetadata, imageID: string, projectID: string): Observable<LynxUploadResult> {\n const headers = new HttpHeaders();\n headers.append('Content-type', 'application/json');\n let url = this.lynxUrl + 'project/' + projectID + '/' + 'image/' + imageID + '/metadata';\n return this.http.post<LynxUploadResult>(url, imageMetadata, { headers: headers });\n }\n\n public downloadImage(imageID: string): Observable<any> {\n const headers = new HttpHeaders();\n headers.append('Content-type', 'application/json;odata=verbose');\n return this.http.get(this.lynxUrl + 'image' + '/' + imageID, { headers: headers, responseType: 'blob' });\n }\n}\n","import { OepaIntegerMaskArgs } from './oepa-integer-mask-args';\n\nconst digitRegExp = /\\d/;\n\n/**\n * This function is for use with th TextMask directive and creates a mask for integers\n * of varying length. The maximum length, minimum value, and maximum value can be\n * specified using args.\n * @param args\n */\nexport function oepaCreateIntegerMask(args: OepaIntegerMaskArgs) {\n function integerMask(rawValue = '') {\n\n if (!rawValue || rawValue.length === 0) {\n return [''];\n }\n // remove all non-integer characters\n let integerValue = rawValue.replace(/\\D/g, '');\n\n // ensure value does not exceed the maximum length\n if (args.maxLength && integerValue.length > args.maxLength) {\n integerValue = integerValue.substring(0, args.maxLength);\n }\n\n // ensure value is within specified min and max\n if (args.minValue && integerValue.length >= args.minValue.toString().length && parseInt(integerValue, 10) < args.minValue) {\n return [''];\n }\n\n if (args.maxValue && parseInt(integerValue, 10) > args.maxValue) {\n return [''];\n }\n\n return convertToMask(integerValue);\n }\n\n return integerMask;\n}\n\n/**\n * Convert final value to a mask for use by the TextMask directive\n * @param strNumber\n */\nfunction convertToMask(strNumber: string) {\n return strNumber\n .split('')\n .map((char) => digitRegExp);\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { HttpClient } from \"@angular/common/http\";\nimport { Parameter } from './parameter';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ParameterService {\n protected baseUrl: string = '/ebiz/api/v1/parameters';\n\n constructor(protected http: HttpClient) { }\n\n public retrieveParameterByName(parameterName: string) : Observable<Parameter> {\n let url = this.baseUrl + '/names/' + parameterName;\n return this.http.get<Parameter>(url);\n }\n\n public retrieveParameterByID(parameterID: string) : Observable<Parameter> {\n let url = this.baseUrl + '/' + parameterID;\n return this.http.get<Parameter>(url);\n }\n\n public createParameter(parameter: Parameter) : Observable<string> {\n let url = this.baseUrl;\n return this.http.post<string>(url, parameter);\n }\n\n public deleteParameter(parameterID: string) : Observable<any> {\n let url = this.baseUrl + '/' + parameterID;\n return this.http.delete(url);\n }\n\n public deleteParameterByName(parameterName: string) : Observable<any> {\n let url = this.baseUrl + '/names/' + parameterName;\n return this.http.delete(url);\n }\n\n public retrieveParameterByPrefix(prefix: string) : Observable<Parameter[]> {\n let url = this.baseUrl + '/namePrefix/' + prefix;\n return this.http.get<Parameter[]>(url);\n }\n\n public updateParameter(parameter: Parameter) : Observable<any> {\n let url = this.baseUrl + '/' + parameter.id;\n return this.http.put(url, parameter);\n }\n}","import { Injectable } from '@angular/core';\nimport { FormValidator } from './form-validator';\nimport { AbstractControl, FormGroup, Validators, ValidatorFn } from '@angular/forms';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ValidationService {\n\n constructor() { }\n\n public processValidators(form: FormGroup, formValidators: FormValidator[]): any {\n const fieldValidators: any = {};\n // Need to remove all existing validators before adding new ones\n this.removeValidators(form);\n if (formValidators && formValidators.length > 0) {\n formValidators.forEach(validator => {\n this.addFormValidator(validator, fieldValidators);\n });\n this.addValidators(form, fieldValidators);\n return fieldValidators;\n }\n }\n\n private removeValidators(form: FormGroup) {\n if (form && form.controls) {\n for (const key in form.controls) {\n form.get(key)?.clearValidators();\n form.get(key)?.updateValueAndValidity();\n if (form.get(key) instanceof FormGroup) {\n this.removeValidators(<FormGroup>form.get(key));\n }\n }\n }\n}\n\n private addFormValidator(formValidator: FormValidator, fieldValidators: any) {\n if (!fieldValidators[formValidator.field || '']) {\n fieldValidators[formValidator.field || ''] = [];\n }\n fieldValidators[formValidator.field || ''].push(formValidator);\n if (formValidator.message) { \n this.addFormMessage(formValidator, fieldValidators);\n }\n }\n\n private addValidators(form: FormGroup, fieldValidators: any) {\n Object.keys(fieldValidators).forEach(field => {\n const validators = this.getValidatorsForFormValidators(fieldValidators[field]);\n if (validators && validators.length > 0) {\n const control = this.findFieldControl(form, field);\n if (control) {\n control.setValidators(validators);\n control.updateValueAndValidity();\n }\n }\n })\n }\n\n private getValidatorsForFormValidators(formValidators: FormValidator[]): ValidatorFn[] {\n let validators:any[] = [];\n if (formValidators) {\n formValidators.forEach(formValidator => {\n const validator = this.getValidatorForFormValidator(formValidator);\n if (validator) {\n validators.push(validator);\n }\n });\n }\n return validators;\n }\n \n private getValidatorForFormValidator(formValidator: FormValidator): ValidatorFn | undefined {\n let validator: ValidatorFn | undefined = undefined;\n if (formValidator.error === 'required') {\n validator = Validators.required;\n } else if (formValidator.error === 'maxlength') {\n validator = Validators.maxLength(formValidator.maxLength || 0);\n } else if (formValidator.error === 'minlength') {\n validator = Validators.minLength(formValidator.minLength || 0);\n } else if (formValidator.error === 'pattern') {\n validator = Validators.pattern(formValidator.pattern || '');\n } else if (formValidator.error === 'email') {\n validator = Validators.email;\n } else if (formValidator.error === 'min') {\n validator = Validators.min(formValidator.min || 0);\n } else if (formValidator.error === 'max') {\n validator = Validators.max(formValidator.max || 0);\n }\n return validator;\n }\n\n private addFormMessage(formValidator: FormValidator, fieldValidators: any) {\n if (!fieldValidators['form']) {\n fieldValidators['form'] = [];\n }\n let error = fieldValidators['form'].find((error:any) => {\n return error.message === formValidator.message;\n });\n if (!error) {\n fieldValidators['form'].push(formValidator);\n }\n }\n\n public findFieldControl(form: FormGroup, field: string): AbstractControl | null {\n let control: AbstractControl | null = null;\n if (form.contains(field)) {\n control = form.get(field);\n } else if (field.match(/_id$/) && form.contains(field.substring(0, field.length - 3))) {\n control = form.get(field.substring(0, field.length - 3));\n } else if (field.indexOf('.') > 0) {\n let group = form;\n field.split('.').forEach((f) => {\n if (group.contains(f)) {\n control = group.get(f);\n if (control instanceof FormGroup) group = control;\n } else {\n control = group;\n }\n })\n } else {\n // Field is not defined in form but there is a validation error for it, set it globally\n control = form;\n }\n return control;\n }\n}\n","/**\n * Base64 versions of image files used in OEPA code\n * Converted images to base64 using: https://base64.guru/converter/encode/image\n */\nconst BASE64_PREFIX = 'data:image/jpeg;base64,';\n\nexport const CATALOG_IMG = BASE64_PREFIX + 'R0lGODlhEAAQAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/AP//AAAA//8A/wD//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ywAAAAAEAAQAAAIZwAfCBz4oAAAgggJFjhg8GDCgQsLSGz4MOLEiQAcCrR4ESNEhh0xOuQYEsCBgyQ7mkSQsWFIgwcQIDC48CSAiytnojzw4IBNmDINClwp0GdOoQMzxiwaVCNBpQge6HyY1CRSqlUfBgQAOw==';\nexport const CAUTION_IMG = BASE64_PREFIX + 'R0lGODlhEAAQALMAAAAAAP//AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAIALAAAAAAQABAAQAQ3UMgpAKC4hm13uJnWgRTgceZJllw4pd2Xpagq0WfeYrD72i5Yb+aJyVhFHAmnazE/z4tlSq0KIgA7';\nexport const CE_IMG = BASE64_PREFIX + 'R0lGODlhFAAUAOcAAAAAAP///7OtrrOur6+qq7KsrpyYmqumqZiVl6Cdn5SQk6ikqJmXmVlYWVdWV6Gfo1dXWVVVV1paW1lZWlhYWVdXWIiJlZOUn1ZXXB0tVQEPLwEPLgZL5AZL4wZL4gZK4QZK4AZJ3wZK3wZL3wZJ3gZK3gZJ3QZK3QZJ3AVG1AIbUgZI2gQshAdK4AdK3AdI2AdI1wdI1AdI0whL2wUuhwlK2AlJ1QIRMgIQMQIQMAIQLwpM3glHzwpIzQpHywtM2AMTNw5S5QMSMwMSMhBU5RFU5gUaRw9JxQ5FuwUXPwQSMRJLzgcbSRRNyQcZQxgmRBwpRwITNwISMwMVOgMVOQMSMQs/rQYeTwQUNQUXOgUVNgkkXQ0yfwcbRBlc5wgdRwcZPgsjUQkbQAQMHAwhSg8nVRg7gg0gRQ4hSA0eQRAkTBIlSiowPFxdX1tcXlpbXQYZPREmThcyYhgzYxUrVRAgOwcOGRwxVSA4YFdgbwUPHiQ9YjdYijdYiTZWh2OZ50pvpBMbJwgQGxUiNGCPzWmb3GOMwTVPb16Hu1yEtnGi3mSMu3qo33mq43Gd0G+ayn2t4oGy536u44W27YS06Ii47IW37IW364a364Cv4Xqn1om78Im774e47Ia36oOz5YGw4Yy/84u98Ym67oa26YCu3pDD+Iy98Yu98Iu974q77oe36X6r2ZLG+pHE+ZHE+JDD95DD9o/C9Y7A842/8pXJ/ZTI/JTH+5TI+5PG+pLG+ZHE95DC9Y6/8oCs2pbK/pbJ/ZbK/ZXI/JXJ/JPG+Y+/8Ya045PF95DB8oev2FxfYrexsbawsLWvr7KtraqlpamkpFdWVlZVVVdXV1ZWVgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAUABQAAAj+AAMIHBggGkGCGwZ24hMpwCQ8vipIOyhQBRaBUmzAmfPHihZpyyYqUYMowAZQoMgEABHFxAsaRIpsGCAgGsorN1CiHEInURkqHIJ4aQIlgQQdQFAyQQlGoKVMAYSk8FJlAbQJAQqpOUMIlBiKAVhskMasmUGBoBbtISXwkh9PASilwQUy5EGLAsMcmRLHkCMtGwoQoDay5MmUAWYkORGiyxcRIzJYwHAzp84haACZcSKDhIYNSy5AQKqUaYBPjCRBkrMlQIQnDyhk3dr1K8VKAd4gMNBmYNq1A/tgErgmwDRnzhwcTIixR5Y4inbkIMuM2t2LAVCMiQHDSAcOOA5EPGtQ2CRKlYMO3dFTggMHF2wUuKmsE9QQY6VYParzXVAeBhSQBspSoDRFUCM/2LFKMspYpxVXXoEViCYDTYSWWmwFEBAAOw==';\nexport const CHARGE_CO_IMG = BASE64_PREFIX + 'R0lGODlhEwAQAPcAAAhzACGMEEqlMVLOMVqtrWNKIWO9vWutWmvWSmvW1nPW3nPe53vn53vv94Q5CJRrWpT395yta6XOc63OlM7nzta1jP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ywAAAAAEwAQAAAImwAtCBxIsKDBgwgFVpjA8EGFhwkWRGQAoWAACQMEDHAIUcECBQwoEARwAIEAjRwrJACpoMFIABgHZIzwMMICAwwWHBgIoGfMjA9VfmSgYKeFngECIBigNGWCBgwaVLRwAGnPqw6yOiDAlcDApAGu9tS6tevIsGLJdvU6kILYsVoJGDDAduCEt2rNFhQroECBBw8YThCZsLDhhAEBADs=';\nexport const CHECK_IMG = BASE64_PREFIX + 'R0lGODlhEAAQAJH/AAAAAICAgADvAMDAwCH5BAEAAAMALAAAAAAQABAAQAIjnI95IQLTnJqmvRkv3UyrTEXWRpafUHbliKgHe4oeBpOSWRYAOw==';\n\nexport const DEFINITIONS_IMG = BASE64_PREFIX + 'R0lGODdhEQAQAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8EAgAGAgAIAgAKAgAMAgAOAgAABAACBAAEBAAGBAAIBAAKBAAMBAAOBAAABgACBgAEBgAGBgAIBgAKBgAMBgAOBgAACAACCAAECAAGCAAICAAKCAAMCAAOCAAACgACCgAECgAGCgAICgAKCgAMCgAOCgAADAACDAAEDAAGDAAIDAAKDAAMDAAODAAADgACDgAEDgAGDgAIDgAKDgAMDgAODgAAAAQCAAQEAAQGAAQIAAQKAAQMAAQOAAQAAgQCAgQEAgQGAgQIAgQKAgQMAgQOAgQABAQCBAQEBAQGBAQIBAQKBAQMBAQOBAQABgQCBgQEBgQGBgQIBgQKBgQMBgQOBgQACAQCCAQECAQGCAQICAQKCAQMCAQOCAQACgQCCgQECgQGCgQICgQKCgQMCgQOCgQADAQCDAQEDAQGDAQIDAQKDAQMDAQODAQADgQCDgQEDgQGDgQIDgQKDgQMDgQODgQAAAgCAAgEAAgGAAgIAAgKAAgMAAgOAAgAAggCAggEAggGAggIAggKAggMAggOAggABAgCBAgEBAgGBAgIBAgKBAgMBAgOBAgABggCBggEBggGBggIBggKBggMBggOBggACAgCCAgECAgGCAgICAgKCAgMCAgOCAgACggCCggECggGCggICggKCggMCggOCggADAgCDAgEDAgGDAgIDAgKDAgMDAgODAgADggCDggEDggGDggIDggKDggMDggODggAAAwCAAwEAAwGAAwIAAwKAAwMAAwOAAwAAgwCAgwEAgwGAgwIAgwKAgwMAgwOAgwABAwCBAwEBAwGBAwIBAwKBAwMBAwOBAwABgwCBgwEBgwGBgwIBgwKBgwMBgwOBgwACAwCCAwECAwGCAwICAwKCAwMCAwOCAwACgwCCgwECgwGCgwICgwKCgwMCgwOCgwADAwCDAwEDAwGDAwIDAwKDAwP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAAAALAAAAAARABAAAAhdAP8JBPCPoMGCAhMO/EeKocOGBBVCRHjwYMKGCjMeiCgQY8aEGyUOBGAwYsiLHxWe7DiSJEmBKx2mhMlRpkuXNEXO/BcT482XPGt6TNlzZ1CJB5IqXRqz4M+fCgMCADs=';\nexport const DELETE_IMG = BASE64_PREFIX + 'R0lGODlhEAAQAPcAAEBAQMYAAP9AQICAgIaGhuf//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAUALAAAAAAQABAAAAhTAAsIHEiwoMGDAQQUFBDAYICHBBkGGEDw4cSIFikWsNhwoUUCHA8WkMhRoUiOEEVu5KgRIcqLHl8+bDkSJQCULW0K1FnzIYCKPjH+LBhgqEqRAQEAOw==';\nexport const DIALOG_IMG = BASE64_PREFIX + 'R0lGODlhEwAXAPdPAP///7y/x6ywuqOps6mxuqy1vqe0u7C/xam8wYudoqi0svv+//X5//f8/+75+pKnr7TAy+7x//b5/+///4acp52rurC6yaG1yZupvoecqqCvwZ2ouoeSnu3z/qO3yZanvJakuYGMmwVBmqexy/P//8rY7pmltQZKsdPh+JCdrgZUyJKhvMva8IqWpwZTxgZe3wZi7AZe4d3s/5Ger9bk/ISPodvp/4yYqaO01dLe9cbS4pmhsd3n+cvU4peerODp/9HY9dTd+sfR6cnU5MHJ1qCns4KOk5KXqZSVr4yPqpmeuJKar42VpZWdp5KYowAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANdoANAAEgATIfgqBgAAd8gAEwATIRMh0NdEAIgAEgATBhLX/B9VAEB3+Hf4Kv///9gM/x4AEnf8xxMTeCHQAAAAEwAAAPzGRAAAdwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAARLXAP//AJR//QAS2RMh0DGAAP93+P///xLZZAAAAAAAAABAAFfA4NWUfAAAEgK57f3sAAAAf0UAEwAAAP3sAAAIf5AACnf4fAAATgABACgAAHxXgxLXeAEBANwBAQAS2PgfVSUod/93+P///xLYiIM8AIh8VwAS2FeDZwAAfP8AAAK4/7qj+KP4AhgCugAAAAAAANhsAEAAEgAAAAAAANhQAAAAEgAAAAAAAAAAAAwAAAAAAAAAAgEBAF4AEnf4Nf3sAAAAfwIAAAAAABoAViHQAn8AE////wAAACHQAAUAEwAAAFc9wNisfI8AEnxXhgABTNjIANAAEgAS2AAACAAOAMAAAAK6owAAAAFMAJ4AAABAnrqj+AAAAgDAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAABLZAIlSAEx8VwAAARLY/CH5BAgyAE8ALAAAAAATABcAAAjTAAEIHEiwoMGDCBMqPBhAwAACBQwcQJBAoYIFDBo42OjgAYSEFyNI2DjBAYUKFhBevMDyAgYHGTRs4HDwYocIOCM48PABRIiCIgCsbDmCxMYSJgiKOCHi4oKcOR2gSKFUBdMFLVmu0MmihVIXVkU4gIrTQVelL8AyzbrVrNeBImC4iBGWrAMZM5TCkEt3LcuNNGronVs3qgMbN772FZEVR4QcOnYoXbygss6xPHr4UHriauUFP4AEETKESBHOIoyoNnIESRIlS5g0cQJ0oe3buAcGBAAh/gA7';\nexport const DOWNLOAD_IMG = BASE64_PREFIX + '/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAOAA4DASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDQsLRPEkdzbRzOutiYyRGSUhJY+6j0I6/SmTX0Om6zJDo80jwRRCNpHckSuMbnA7DPT2p8OzR7m9sr20jvLWZw2FkKOpUnBDY475qW2spfEWs3N7IIoEZcLHGfugbQB09O9fNLXlt8V/6/rr+flKzSa3P/2Q==';\n\nexport const ERROR_IMG = BASE64_PREFIX + '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';\nexport const EU_IMG = BASE64_PREFIX + 'R0lGODlhGQAWAMZPAAAxZwMyaAMyagMzagQzagUzaAU0agY0aA08ew88ew8+ghY+chJAghRBextBdRJBkBNCkBhEghhFkCFFeSBFfhhGkBlGkCdKfiJLkB1Mox9Noy1Ogh9PrB1Nyx1OyyJSrB5Pyx5QyyBRyytZoyVWyyJU5CZXyztZiidYyzBboyZY5CpbyytcyzBgrClb5Cdb8y5hyydb/yte5DZkrChc/zNhyyth/y1j8yxi/y1k/zNq5EFuyzRr/zVt/zhz5EBy20Fy2zl5/zl7/z2A81uU5FuX7Eyj/1Cn/1un/16s/2qs82ux83C3+XfT/5vs/f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH5BAEKAH8ALAAAAAAZABYAAAf+gE+Cg4SFTxsAABuGjIUnE08OKTMLTxcnjYYnBhEUBUROBBQNBpiZgxcNRkxKTU1FS0cRkIWIioQHMEg7GBg7SToHhI+Rk5UXGwsDQDUDFxcDNT8BDoubnZ+howAfNz0SF4IXEjwuGgCWqqyusEcAGSo0EOGWDzEvHOhPubu9vzobHADoAELAMwEhPAhYsCHZsmbPok1zcKCEDRIVLJjAIULYE27ewIkj52KCAhwoVgQRwkJGDgTh3sWbJ87eixMCEhwgMMQHgAMMBmAKOLDgwYQLT1xAsqDFCAdJJpgSVPFixo0iHDKztUEatUUmUapk6RLkN3rjyp17glMnT58+QGXKQ2sznyClT5o+fTKBKEGDFxAqZFgr0aJBVTFq5OjxlKCwKVe2fEnPcdudPX8GnWo5nF4HfDk7HsS1UCAAOw==';\nexport const EU_CAUTION_IMG = BASE64_PREFIX + 'R0lGODlhGQAWAMZRAAAAAAAxZwMyaAMyagMzagQzagUzaAU0agY0aA08ew88ew8+ghY+chJAghRBextBdRJBkBNCkBhEghhFkCFFeSBFfhhGkBlGkCdKfiJLkB1Mox9Noy1Ogh9PrB1Nyx1OyyJSrB5Pyx5QyyBRyytZoyVWyyJU5CZXyztZiidYyzBboyZY5CpbyytcyzBgrClb5Cdb8y5hyyte5Cdb/zZkrChc/zNhyyth/y1j8yxi/y1k/zNq5EFuyzRr/zVt/zhz5EBy20Fy2zl5/zl7/z2A81uU5FuX7Eyj/1Cn/1un/16s/2qs82ux83C3+XfT/5vs/f//AP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgB/ACwAAAAAGQAWAAAH/oBRgoOEhVEcAQEcAACGjoMoFFEPKjQAUAAoj4YoBxIVBkVPmJiam4MYDkdNS06Xr5KFiIqECDFJPBlQpJiQkpQ0DFEYHAwEQTYEl7u7ABxRnZ+hTwUVDgEgOD4TGMzLvamrrU5GTEgBGis1ERiM7owBgra4GRk8SjscDwEeIQMYGAaI+DCAAYdix5IBJGADiIAHCEzcKGHhwokcIxAIwqaNmyAME3q8oLAgRwoWQoa0kKEjAYYo6NSx+whhBgwUAxQgKEDkRwAEDQho0sfPH0CBBBmgwJCEgQsSD5RQMCVPIkWLGBEim8Wh4cNnJE2iVMmS47aXw0K+2BAPp06ePz6BxlyHFkNNGB3iQXvpFGoUCkT7/Qs4sOAzQlxrWa14MeMpQmFPplzZEu1jtzt7/gxK9TLfpw/+dn48KDGhQAA7';\nexport const EXCLUDED_EU = BASE64_PREFIX + 'R0lGODlhGQAWAOcAAAAAAAEBAQICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4ODg8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZGRoaGhsbGxwcHB0dHR4eHh8fHyAgICEhISIiIiMjIyQkJCUlJSYmJicnJygoKCkpKSoqKisrKywsLC0tLS4uLi8vLzAwMDExMTIyMjMzMzQ0NDU1NTY2Njc3Nzg4ODk5OTo6Ojs7Ozw8PD09PT4+Pj8/P0BAQEFBQUJCQkNDQ0REREVFRUZGRkdHR0hISElJSUpKSktLS0xMTE1NTU5OTk9PT1BQUFFRUVJSUlNTU1RUVFVVVVZWVldXV1hYWFlZWVpaWltbW1xcXF1dXV5eXl9fX2BgYGFhYWJiYmNjY2RkZGVlZWZmZmdnZ2hoaGlpaWpqamtra2xsbG1tbW5ubm9vb3BwcHFxcXJycnNzc3R0dHV1dXZ2dnd3d3h4eHl5eXp6ent7e3x8fH19fX5+fn9/f4CAgIGBgYKCgoODg4SEhIWFhYaGhoeHh4iIiImJiYqKiouLi4yMjI2NjY6Ojo+Pj5CQkJGRkZKSkpOTk5SUlJWVlZaWlpeXl5iYmJmZmZqampubm5ycnJ2dnZ6enp+fn6CgoKGhoaKioqOjo6SkpKWlpaampqenp6ioqKmpqaqqqqurq6ysrK2tra6urq+vr7CwsLGxsbKysrOzs7S0tLW1tba2tre3t7i4uLm5ubq6uru7u7y8vL29vb6+vr+/v8DAwMHBwcLCwsPDw8TExMXFxcbGxsfHx8jIyMnJycrKysvLy8zMzM3Nzc7Ozs/Pz9DQ0NHR0dLS0tPT09TU1NXV1dbW1tfX19jY2NnZ2dra2tvb29zc3N3d3d7e3t/f3+Dg4OHh4eLi4uPj4+Tk5OXl5ebm5ufn5+jo6Onp6erq6uvr6+zs7O3t7e7u7u/v7/Dw8PHx8fLy8vPz8/T09PX19fb29vf39/j4+Pn5+fr6+vv7+/z8/P39/f7+/v///yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgD+ACwAAAAAGQAWAAAI/gABAPhHsKBBg0pQoFBSUKDDgwerAPm3w4oXHP+KPHwI8V8VFj6ArGBkbQUQjv8cDjxYRMekVKB48VI5saHDhQZZdNG0xohKFgYlphSIsYgSHCvefFnh8MsbFTsYfgzJVCAQHSicjGFzUmARIGu2JEGR0SXMmQIvoTiCxcvDIjy6cFlC9p9OnkZ8ClSyA4XDIkVUPGmiAoeSo0mXAq4KYIdDKkCCVBkDBei/rFuBFCH4VSUAK1nq2NHSpUyNzWvb8tickYdnFivyuEHBIseKKv/4omDiRAVgFQ5xBNcyZYcnILgLsqgiBnIQh4hvLnQKlSGQG2NA13FYBjObt2DFT5KtoqIGbIe1U3tx7TXu3LpVNjvc8Q+Ibt7ABQ4uzJCgSpzKMQfZTwapBNF12YVmh0qsoRRRebDJRttGAnVUUHz/4EAcfV05aCFBCQE4VEAAOw==';\n\nexport const FACILITY_IMG = BASE64_PREFIX + 'R0lGODlhGQAZAOeqAP7+/vT75/7+/ff4+vX75PX84P79/vP63v37/fL0+/z8+/z8/fz7/fLz+fHz8unv0fn7+OHn4Hd8doGFhHh+eHqCd4OIgYmNi3Nxfn+EgXFvfgQCB/H18YiMiPHy8/n8+fDx+AYPDHZ6ddLT4Ly579TV5fD27uTrzQMCA/b4+nyDe/v8+tfY57m28QYFE/Ly+dzf5t/j5QMDA3mAdry+5PP46bGr9quk+KSb+ezx0ODl4vX5+6GX+ZqP+fj5+f39/fHy9vH36/H52ufuzOLpz/D18JeM+Z6U+Xtx8eDn2n5w+YV5+fr7+Yt/+JKI9eDn1NDU0dLU287TzMvTxwUED/z8/ISKg31u+bzIy+7z0cfTvT837sTRsZamkI+Xj25tf4CFg/3+/TpBx7rMvYKGgggSDNDU11hYmzc42CQf7Tg33vj4+SIe6yQh6wQDCr3Ps5qukiteLxUzGAwcD4aLh8DOsrzMt2OYZo2riAUKDrzC2CEd5iId1iMd4l6JcViTWHGkcwgXC3V0e3mBdnmme2OKg0J9RT13P0V8R1iNWj9sQn2mf2ygb2SZZmacaSxiMFyIZzFsNThzOyhUKzdePEZ1R1uHYoqphipYLVyUXliSV2CWYzdyOhxGHzNtNjBqNDt1PVqTWkFxQxk8HDtlPwMDBBAmEz1pQGmdbB9LI////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAsAAAAABkAGQAACP4AAQgcSLCgwYMJBChYACBAAAYIGjgwAOBBAQgHB0aQMIFCBQsXMGSYoGHChQsbMgrk0EGgAQ8DCigI8ODDBxAhVAJQIIIDiBEjPpAoYYIEiRMBUKhMAUDFihQsiLYgwWHqAQMuVH4AIIEAgBcwBAQoUQAEiAIxZKgUwGBGgQQkaNSwYSPCDRw5dGTNiEAAhgQ7pkbAwePDjR4gIqgt+ENgAAgdCgBhsSPIjh1CYCQYQmQvQQc+AAgoIKJAESNHDvRAkkTJEgIjPBtEQEADCANHmoBw4uSJkyUsGiwmqKOLSC9fQAR5QCTGkygRpMCAMkX2QDBVwmRxQVnMlRJbtv6MCf9EStYdWxkAqEIGgAcBZaKYOYMmwhYxD9KoMcNlww6BayCwxgpgAPBBDBsQEQEMUTxxAhQsZMGFGeYx8JIBGP6QwQoGQODCg2mkwQUbbWBBIglj5ASEAhh6AEAGKewQhhtcwLBFGk+00cYbbLAxBhxxyCHDHChEIAAAdABAAAIoEDFCHSfQoAUNUJiBBRx23IEHHHDIoIAAKbRngg55SFeCHmbswYcdfYjhxx+AALJlIFCMKcgPE0wgCB0iDCJDHWKIQcgdhRhyCCJ/JHKHIhWMQYgFJiAgKQw6TBEIHo0A8ocjjsTxCCR/HBLJI5JMAoklAhQBQAQmPHEJJkqZOKLJJpxEIkknmRxiSCSedOKHBCosYFMEEbxRCSKPJALIJ6D0GgoioogyCimJdEkkkaXIEIgppxgihymVhIvKsXJMkoopgcgQEAA7';\nexport const FOLDER_CLOSED_IMG = BASE64_PREFIX + 'R0lGODdhEQAQAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8EAgAGAgAIAgAKAgAMAgAOAgAABAACBAAEBAAGBAAIBAAKBAAMBAAOBAAABgACBgAEBgAGBgAIBgAKBgAMBgAOBgAACAACCAAECAAGCAAICAAKCAAMCAAOCAAACgACCgAECgAGCgAICgAKCgAMCgAOCgAADAACDAAEDAAGDAAIDAAKDAAMDAAODAAADgACDgAEDgAGDgAIDgAKDgAMDgAODgAAAAQCAAQEAAQGAAQIAAQKAAQMAAQOAAQAAgQCAgQEAgQGAgQIAgQKAgQMAgQOAgQABAQCBAQEBAQGBAQIBAQKBAQMBAQOBAQABgQCBgQEBgQGBgQIBgQKBgQMBgQOBgQACAQCCAQECAQGCAQICAQKCAQMCAQOCAQACgQCCgQECgQGCgQICgQKCgQMCgQOCgQADAQCDAQEDAQGDAQIDAQKDAQMDAQODAQADgQCDgQEDgQGDgQIDgQKDgQMDgQODgQAAAgCAAgEAAgGAAgIAAgKAAgMAAgOAAgAAggCAggEAggGAggIAggKAggMAggOAggABAgCBAgEBAgGBAgIBAgKBAgMBAgOBAgABggCBggEBggGBggIBggKBggMBggOBggACAgCCAgECAgGCAgICAgKCAgMCAgOCAgACggCCggECggGCggICggKCggMCggOCggADAgCDAgEDAgGDAgIDAgKDAgMDAgODAgADggCDggEDggGDggIDggKDggMDggODggAAAwCAAwEAAwGAAwIAAwKAAwMAAwOAAwAAgwCAgwEAgwGAgwIAgwKAgwMAgwOAgwABAwCBAwEBAwGBAwIBAwKBAwMBAwOBAwABgwCBgwEBgwGBgwIBgwKBgwMBgwOBgwACAwCCAwECAwGCAwICAwKCAwMCAwOCAwACgwCCgwECgwGCgwICgwKCgwMCgwOCgwADAwCDAwEDAwGDAwIDAwKDAwP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAAAALAAAAAARABAAAAhpAP8JHEiwoMGDCBMibMGQIQCFLexJ/PWrxcODLWxp3GirYcOBESWKHGnvl62LESmqXPnr1kmBKVm2nPnyX0yZt1rWvEkxp0+TKEuy/OkyqEqiLYvCtIfU5y2lNjlK5XjxH4CrWLNmFRgQADs=';\nexport const FOLDER_OPEN_IMG = BASE64_PREFIX + 'R0lGODdhEgAQAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8EAgAGAgAIAgAKAgAMAgAOAgAABAACBAAEBAAGBAAIBAAKBAAMBAAOBAAABgACBgAEBgAGBgAIBgAKBgAMBgAOBgAACAACCAAECAAGCAAICAAKCAAMCAAOCAAACgACCgAECgAGCgAICgAKCgAMCgAOCgAADAACDAAEDAAGDAAIDAAKDAAMDAAODAAADgACDgAEDgAGDgAIDgAKDgAMDgAODgAAAAQCAAQEAAQGAAQIAAQKAAQMAAQOAAQAAgQCAgQEAgQGAgQIAgQKAgQMAgQOAgQABAQCBAQEBAQGBAQIBAQKBAQMBAQOBAQABgQCBgQEBgQGBgQIBgQKBgQMBgQOBgQACAQCCAQECAQGCAQICAQKCAQMCAQOCAQACgQCCgQECgQGCgQICgQKCgQMCgQOCgQADAQCDAQEDAQGDAQIDAQKDAQMDAQODAQADgQCDgQEDgQGDgQIDgQKDgQMDgQODgQAAAgCAAgEAAgGAAgIAAgKAAgMAAgOAAgAAggCAggEAggGAggIAggKAggMAggOAggABAgCBAgEBAgGBAgIBAgKBAgMBAgOBAgABggCBggEBggGBggIBggKBggMBggOBggACAgCCAgECAgGCAgICAgKCAgMCAgOCAgACggCCggECggGCggICggKCggMCggOCggADAgCDAgEDAgGDAgIDAgKDAgMDAgODAgADggCDggEDggGDggIDggKDggMDggODggAAAwCAAwEAAwGAAwIAAwKAAwMAAwOAAwAAgwCAgwEAgwGAgwIAgwKAgwMAgwOAgwABAwCBAwEBAwGBAwIBAwKBAwMBAwOBAwABgwCBgwEBgwGBgwIBgwKBgwMBgwOBgwACAwCCAwECAwGCAwICAwKCAwMCAwOCAwACgwCCgwECgwGCgwICgwKCgwMCgwOCgwADAwCDAwEDAwGDAwIDAwKDAwP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAAAALAAAAAASABAAAAhvAP8JHEiwoMGDCBMqHNiiYcOF/1oUlJhQ4q+LFyM6fMjwH8aPBG0B6Pix5EWRAjeqdGjrF0pSFkve+nVLpC2UET1inEnTJYCbI1Pq3EnzVgsAR0n2nHmrqcikHZkWdXo0aMqVKgFYFai1q1ev/wICADs=';\n\nexport const GLOBAL_HELP_IMG = BASE64_PREFIX + '/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAkGBwgHBgkIBwgKCgkLDRYPDQwMDRsUFRAWIB0iIiAdHx8kKDQsJCYxJx8fLT0tMTU3Ojo6Iys/RD84QzQ5Ojf/2wBDAQoKCg0MDRoPDxo3JR8lNzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzf/wAARCAARABEDASIAAhEBAxEB/8QAGQABAQADAQAAAAAAAAAAAAAAAAQDBQYH/8QAMBAAAQIGAAIFDQAAAAAAAAAAAQIEAAMFBhExEiEXNUGx0RMVMkJRU1RhcnORkuH/xAAYAQADAQEAAAAAAAAAAAAAAAACBAUDBv/EACURAAEDAQYHAAAAAAAAAAAAABEAAQIhAwQFEjFRIzM0QUJScf/aAAwDAQACEQMRAD8AqqV6N6pXnMyrhzPpUlKw0ZSVcKJih6JmHIyDvt37N2P6wq3WVFqtOb+bXLniU4pomEy5koHkopOsjR3zjm7ht5xblwJluUqlsjPCpLkoKklGc67SBseMZqkyd3VeDlFMnmo+UUnLoSihATwgZI9UDXzxy3CplXddu1hdnaDx5YL6gaDbuXNSy9L6RaB71f4HjCIOi6k/ETf1/sI14ih5cJ9pLq7i6ldfSO8RLaHVJ+6ruEIQfkp8elf6t5CEIJKL/9k=';\nexport const GREEN_DOT_IMG = BASE64_PREFIX + 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAfNJREFUeNqkk8FrE1EQxn9vu5tt2NpNUCuNidAepBavgiB6s3iSerCiWMWD4K3/gaL/QW4FDwFbFBURPHjxUFA81YOCKFKr0jSxtiEhJW0iSXd9b7svPrS3PJi37Mw33858MyvCMKSXY9Hj6ZnAVpcQwvQJLnKVBucJOBV/5i0DvOAp8/Kt27NqX0TXXwLLusCdIznr9vTZm+QOj0TOYuk7c6/us1IM7gXPuStdwV4EljfNteEhUbh1eYYTuTNk/dGIYLX+jcXia2Yf5fm5Ht7YmuOBIlG5drds2Y7TZvL4sVE6os7X2jsWyy+jYDo5FPlUrFJanpSuh9LaqgiTwHGTnNxJb/CltkCldRDH3g2sbcN6c4OddBWFUVhpHZNAHSfpIqrBJlnPxko0sOWM7D5IyOC2FbBc20RhYoJmdwpaQNfhvS+YSA9W8SQkIaGOpZSVDUvkvlVQGHP8JkHQb7Ew2GQik4KkjOx3M7i2R7W5RJ8LqRYojJ6CuUhqtu0PeZ41ShTKPyDjnWPMv8KYd53hgSnWVmCrTEFhtICReMYYVTW+tOxUnkupo5w+NJIbt12fX0sfP1U+8+bJDI/VVKXVlYj/7oEwSA7Ez/64wlacVNHJu3v0/yZqEjc2rZFK+B1bR5e/F4FJpE1rFJr/gSb4I8AAqDq2qYWWlrEAAAAASUVORK5CYII=';\nexport const GREEN_CHECK_IMG = BASE64_PREFIX + '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';\n\nexport const ICON_DOC_IMG = BASE64_PREFIX + '/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAQABADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDpR4n0y4sItT1iS8fzXZHeO4dAhXyywC4xgCTII9Pxq5NqeoR6NLqdiiWE2lIkm2QF2njMSttkxtyTznI/iyAGANWdY0vw5oE76eLyKxhaBWSCaSN925iG5lV2wRGnA4+UcZ5rH1bWtJHh3WoU1iG6ubuMnJlQs5ChQPlRewFelOUanwLQ5NY7s//Z';\nexport const ICON_DWG_IMG = BASE64_PREFIX + '/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAQABADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwC1Fr3iGbU1srKe6umjhSVv311IW/dxsQQjju+M8Dp9av3moeMNFb7dDcPdR2ymSQqZp4iVVhIjfvWUbGDKeQQVzXM6xp93o/iSa3v7dkZI9gcI7I+I0AZSBznbx6Hg1p38l5431gQRG7nuXt7eKOTyxHHH8pM2/K5PzHjGOp5wAK9LlpqCk0tjyXKtKo4Jta/I/9k=';\nexport const ICON_PDF_IMG = BASE64_PREFIX + '/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAQABADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDVuU+K9w+JbJ5JlQZ3/YWAHPT9a6nwo/iC18PWt/qVtGbp2MkzI6KfL3YAKINp+UZyDnn610mta1Z6Pc/6TeWdtJOiLGbq4SJRy2W+YjIHHA55FY8Or6JBZyWdr4t0y6Vo3WOD7TG8jsQcAENknPOMHrgcYxjCHJLRt+p6NfFLEUvejGLvpZWvv2P/2Q==';\nexport const ICON_TXT_IMG = BASE64_PREFIX + '/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAQABADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD1HVPtN3rN2TqV9bQW0kcQitI3fdlFbJC5/vMORjO3PTBs6Za3Gl61awtfTXCXcEjsJN2AUEYGASSOWb8MZyQSaWtRwxajeLfBliuLiORCIRKSoiCkhdj8546D6+tzSnW61TTzbW9ylvaW8sZeaERZLFCMAAD+E9hRKEebmSBSex//2Q==';\nexport const ICON_XLS_IMG = BASE64_PREFIX + '/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAARABEDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDrofEFhqWkLq161zczNK8TRxXDRsCqBvlQ9VG7nHT3qxqd/eWVm15pclvC2mRCXzAGkFynlRMVYjaHyXPPoc4BwatahBonhSSTTLa/TTrWSNZTbSTqQ5Yspb94rseEUY6cVz+r6vo6aBqkFtqlnM89uQoVk3E7EUKNqqMAJwB+VVhaFRO8tjjinDd6nr9FFFSdgUUUUAFFFFAH/9k=';\nexport const INACTIVE_USER_IMG = BASE64_PREFIX + 'R0lGODlhEwAQAPcAAAAAAP///wEBAaqqqry8vOrq6pSUlHh4eHR0dFxcXDAwMGNjYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAEwAQAAAIbAAPCARAMIBBgwUPClx4gKDDhwAMMmQI8WEAigAwAhhAgODEAA4pchyQkSHCkAxJfjyJcqLAgyxbUoQJsuLEhAdtuowI8+HNlSw/ejR5cmICBTVXGlXAVEECmRcXJpiaYMGCqQVdHqDZk+fCgAA7';\nexport const INSIGNIFICANT_EU_IMG = BASE64_PREFIX + 'R0lGODlhGQAXAPcAAAAxZwMyaAMyagMzagQzagUzaAU0agY0aA08ew88ew8+ghY+chJAghRBextBdRJBkBNCkBhEghhFkCFFeSBFfhhGkBlGkCdKfiJLkB1Mox9Noy1Ogh9PrB1Nyx1OyyJSrB5Pyx5QyyBRyytZoyVWyyJU5CZXyztZiidYyzBboyZY5CpbyytcyzBgrClb5Cdb8y5hyydb/yte5DZkrChc/zNhyyth/y1j8yxi/y1k/zNq5EFuyzRr/zVt/zhz5EBy20Fy2zl5/zl7/z2A81uU5FuX7Eyj/1Cn/1un/16s/2qs82ux83C3+XfT/5vs/f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAGQAXAAAIpQCfCBxIsKDBgwgTKlzIsKHDhCcAPDSI4ccOIj9qPASQQuADJBmRhGgIwIkDB0QAYKhRwEGGGhIX/kgBskYGHg86AuARM+FODA0A1Ahxk0cNHiMX7nzwxEGIGAAeYOggleGDEDkBdOiwIUWGDD96KgwhNAOGBzwwZHiyUyzCkhgczFAZ4uSDDm4T5vTIAymPDhMHYgixcmtgghEPK17MuLHjxwwDAgA7';\nexport const INSIGNIFICANT_EU_CAUTION_IMG = BASE64_PREFIX + 'R0lGODlhGQAWAMZCAAAAAA8PAAAxZwMyaAMyagMzagQzagUzaAU0agY0aA08ew88ew8+ghY+chJAghRBextBdRJBkBNCkBhEgiFFeSBFfhhGkBlGkCdKfiJLkB1Moy1Ogh1Nyx1OyyJSrB5Pyx5QyyBRyytZoyVWyyJU5CZXyztZiidYyzBboyZY5CpbyytcyzBgrCdb8y5hyydb/yhc/zNhyyth/y1j8yxi/y1k/0Fuyzhz5EBy20Fy2zl7/z2A81uU5Fun/16s/3C3+fz/CP//AP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAsAAAAABkAFgAAB86AQoKDhIWGh4iJiouMjY6KGwIBAI+DJggVAUABQZSVGA8/mpyeiCYUECgNQhsNBZpBsUEbiQgTBzwGFQIeM7CcnYkJLjYZNj4bEAIfBBgEHQS0hxsFOQUYBTEDEAkyIxclIQmJAikwGEIYES0mBAkGNwIOBYmRHM0EIAQNJj0NIhAomFCUgMQICyVotMoWaQOOAdIOEVhgYIeABAI0pJCADsOLFgISmcDQgAUEVsqYOYMWsREFBidU6FhRQ0ElIe3exZt3c1DDnkCDCiUUCAA7';\nexport const INSIGNIGICANT_EU_NO_APP_REQS_IMG = BASE64_PREFIX + 'R0lGODlhGQAXAPcAAAAxZwMyaAMyagMzagQzagUzaAU0agY0aA08ew88ew8+ghY+chJAghRBextBdRJBkBNCkBhEghhFkCFFeSBFfhhGkBlGkCdKfiJLkB1Mox9Noy1Ogh9PrB1Nyx1OyyJSrB5Pyx5QyyBRyytZoyVWyyJU5CZXyztZiidYyzBboyZY5CpbyytcyzBgrClb5Cdb8y5hyydb/yte5DZkrChc/zNhyyth/y1j8yxi/y1k/zNq5EFuyzRr/zVt/zhz5EBy20Fy2zl5/zl7/z2A81uU5FuX7Eyj/1Cn/1un/16s/2qs82ux83C3+XfT/5vs/f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAGQAXAAAIegCfCBxIsKDBgwgTKlzIsKFDgwBOPDRY4weRHT8wTBwYAklFJA82PgFQI4ODAjUwANgIgMfKFA94ZBAZgkcNHjJFPsHwoAPPlSIB/MiQIcWGoC6fZMDAI+REAB0eOHAQQqXIDjxqNtXZoUPKqjoFRgxLtqzZs2jTPgkIADs=';\nexport const INSIGNIGICANT_EU_NO_APP_REQS_CAUTION_IMG = BASE64_PREFIX + 'R0lGODlhGQAWAPcAAAAAAA8PAAAxZwMyaAMyagMzagQzagUzaAU0agY0aA08ew88ew8+ghY+chJAghRBextBdRJBkBNCkBhEgiFFeSBFfhhGkBlGkCdKfiJLkB1Moy1Ogh1Nyx1OyyJSrB5Pyx5QyyBRyytZoyVWyyJU5CZXyztZiidYyzBboyZY5CpbyytcyzBgrCdb8y5hyydb/yhc/zNhyyth/y1j8yxi/y1k/0Fuyzhz5EBy20Fy2zl7/z2A81uU5Fun/16s/3C3+fz/CP//AP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAGQAWAAAIlgCFCBxIsKDBgwgTKlzI0CCAAAI2NDwIIEgAIAEqIJhIsOLFAD8eYOAoZEOQk0EwFmhAsqLFlAFmeCC5gUAHAhgIfBAAgaSQBCFKXBghI4FPIQUcCLhhIAGBoyYoQBDRoIcJnxsG4NgQMcZKkgJavBiJQUIKDTRt4tTJ06eCGit0qDjBgILPpEubPj1aMiLfv4ADCz4YEAA7';\n\nexport const LOCK_ICON1_IMG = BASE64_PREFIX + 'iVBORw0KGgoAAAANSUhEUgAAABAAAAANCAMAAACXZR4WAAAAgVBMVEX/AABFRUXk4Ern5F2urq7////g3DCZlzutqjiwrTjo5GeSkpKioqK5tjfY1pzt64vv7aHw7qfx7qfx8LDR0dH499v5+eT7++u+uTbGwjXg2zDJxTTg3DLNylvk4EfRzjPm4lrS0tL19M3d2CPf2y/U0DP7+/D9/fT//v3a1jHb2DHJZOagAAAAAXRSTlMAQObYZgAAAGNJREFUeF5djEUShEAAA8kY7r7u9v8HAqOwfUq6UvEkbMFzsPbzajOsOgdQHGEFx6IvTvRSPJxopbgb0fiGxFy8u1udR0RAi3DYP39C0ArbxckugnQ8f3eClvj7OGhxhSGe2wQP8wWi7BaQfgAAAABJRU5ErkJggg==';\nexport const LOCK_ICON1_PARTIAL_IMG = BASE64_PREFIX + 'iVBORw0KGgoAAAANSUhEUgAAABAAAAANCAYAAACgu+4kAAAAs0lEQVR4nJ2SwQoCIRCGfbQI7Ll6hXwEO3STHqNDHfTadW9BuLBRi7iTk8zCmrm2Az+ozHzzzyBjmVBKQapcXjYw+fW8AgwenLPxvF0B53weMhaHwAISnHZ1EARQ8df7flMHcO6WBwQXVQAcYRFAaw3nNZuVlDIPofm976DvG3h0l7g8UthBcZEIwA6Y9BEV0j0A2vuhDEgdtPYYO5MWOSD7QfZfBymg6MAYM/l9vySEmADeU0lJRzUbTYUAAAAASUVORK5CYII=';\n\nexport const NOT_INCLUDEABLE_EU_IMG = BASE64_PREFIX + 'R0lGODlhGQAWAHAAACH5BAEAACYALAAAAAAZABYAhXp6ev///+Pj47W1tfPz89XV1c/Pz/T09P7+/svLy9zc3Lq6utPT07m5uc3Nzf39/d7e3re3t+np6fr6+uLi4t/f3/b29tDQ0Pz8/OXl5evr6+jo6PHx8dfX1+zs7Pj4+Pn5+cbGxszMzObm5vDw8MnJyQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbMQAAgQCwajYrFwlMUOo9QUUA6DSieT2jAsxAliYOrsJlFUslChdEJWBoXRbEQbpQ6pQqPiL7IDrxbXUl3IgNMU04KVF+Ka2NhTE+NVnxxcop9aUkeSSIeenwKg0IiTnp5gWCHgFZyQod1aguorIpsbXQDXYZWhZ+zCgN3d1t4sAFup4l7TgNhRF1MjYdPvAGSi3Bce5lthbTLRF9basSie3nCrx5/sGzPRcmudERsUVLuifVjWgF/SmDUDSmjhROyYojs9TvCDt41AEEAADs=';\n\n\nexport const PDF_IMG = BASE64_PREFIX + '/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAkGBwgHBgkIBwgKCgkLDRYPDQwMDRsUFRAWIB0iIiAdHx8kKDQsJCYxJx8fLT0tMTU3Ojo6Iys/RD84QzQ5Ojf/2wBDAQoKCg0MDRoPDxo3JR8lNzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzf/wAARCABgAGADASIAAhEBAxEB/8QAGwAAAgIDAQAAAAAAAAAAAAAAAAUCBgMEBwH/xAA+EAABBAECAwMHCQYHAAAAAAABAAIDBBEFIRITMQZBURQiM2FxcrEVFjJDUoGTstE0Y5GSocEHI0JiZKLS/8QAGgEBAAMBAQEAAAAAAAAAAAAAAAECBAMFBv/EAC0RAAIBAgQEBAYDAAAAAAAAAAABAgMRBBIhQTFRYZEFFDLwEyNSU3HRgaHh/9oADAMBAAIRAxEAPwDuCEJZd1/S6Nh1e1cZHK3Bc0gkjIyOgUNpcS8Kc6jtBNvoM0JIe1mhDrqcI9oP6Kp6v21n+UZfINQjbWGAz6Hhudx4qvxIc0dfKYj7cuzOjoXLh20vbZ1OP+DP0WZvbWfv1SP/AKfopzw+pdx5TEfbl2Z0tC5oe28vdqsX8WfotzRu2z5LYjnsR2oyRxFuOJue/ZSpReiaKzw1aCzSg0uqZf0KEMrJo2yRuy1wyCpqTiCEIQAua9rbBi1+8ASMiP8AIF0orlXbuC27tHaMFO3KxzY8OjryOafNHeAQs+Jvk0PX8FyeYed2Vt/yiuWrJe8bnr4qy9oNLpRQagXUIq0ULWGtYY4gyPPVuM7+Cqb6GpF4PyZqG3/El/8AKlr9y1qmrPtuoWos8I5Rie7hwAPsjrjwWGN0neJ9RVdOVSGSokle+q5q2/55osduhpdjWLOjM06KBza/MisREhwdgHBHQhaWo0Y4OzNWetpFWXjpB81lzwHxuwNwO896hd16xLJYsUtCsw3bEfKdYeyR5a3/AGjhwCk2sOv6lX0+IaVcYadcQ55L3ceO/wCjsukktbL+v8M9GTvDNNJK17yT214S3f7sIZHfcnnY1vNnt43xG34lJPIL8znshp2XuZs4NheeH27K1/4f6ZbhnueVVZoQWMA5sbm53PiEw0GqidiPGsRCWEnFSV9N+qOuxcykyOePL4HtBkYO4kdR6/im0UjJWNfG4Oa4ZBC55K6+zZl20AOg5zsD7lt6DrNqlbbFaeZIJHYJPVp8V6dj4kvSEBCgAjCEIDwj1qm2arXajZ4WDHNcNh61ciq6W5s2D++f8SpQMUNVox5oW1HVYSPMHVZI25IytprQBt1S4Kz2bihlhDWxM5kcZDzjfPMk2/omz6zQDhoH3JN2TnqnXdfhgcc+UBzc9C3fOPY4uCs72Ahc6TvBGvHRy131s+6uI564GdktsQAHIGMKw2I+oSu2zZx9RXUyFwg9DH7o+CmoV/QR+4PgpqoBCEIDwpIxuZJjj65/5inZSiJuTMf30n5igMkbcYytLtFqPyXpE9hg4piAyFg6vkds0D71vZDRknAHUnuVbnll1jtE014OdU0p2xLw1jrBHed/ojwB3KrN2VlxNOFpqc80vStX+v5egO0SzpmnafZoDm6hRaeazP7QHHMjfbkkj2etPNL1KtqtYT05OMdHN6OYe8OHcVryVtVn9JqENVv2a0HEf5nn+yV2+yNWV00w1DUG25QA6wJRk48QAAfiqJOPpR3cqdZfPnrzSb4u7T4abqz77PbHfslVz6DvYUjOi3KbTzGushozzoL8sT/aWuJGfvW5QsGxpUMrpHyF7CQ6QYcRk4zsN+7ON1eE23ZqxxrYeMI54SzLh71fLexfK/oI/cHwU1Cv6CP3B8FNWMoIQhAeFLYW/wCXM4kAc6TJPd5xTIrUpNzFLt9fJ+coCkz6nPqkjPI3B09jelX6tgjz+0S+vvaD6sblWPTKUWl0YqkGS2Mbuccl7juXH1k7rdjoV6vH5LWih4zl/LjDeI+vAWOYOaCQwkgbDHVUhG2r4mqviFNZKatH377vcVV9aZLavxTBsUVU5EjnbOaMgk+GCCFrQ9oasjbMk08McEc3LjkyfPHCDn+p/glU+i6k2qwjMkkkDudEeEBruMScOR1yeId/XwWKapfbbmuGk88ySUiHjZkB8bWg9cdWkH2966GUZjWYX356kkkbHB7RCAd5MtDv7rCb9ew+SOGZkj2Z4w09O5I20LsQFZ0WW8yBxnDhgCNgzt16jAXul1pKxAnZMJGR8oOc9pYRxf6QNx47+KkHWa/oI/cHwU1CD0Mfuj4KaqAQhCAEtu6LVuSmSQzMJ68uQtCZIQCT5sUT9ZZ/GKPmvQ+3Z/FKdoQCP5raf9qx+KV581NO8Z/xCnqEAhPZPTD1E386nB2W0yGVsjY3kg5w52U7QgADHRCEID//2Q==';\nexport const PERMIT_IMG = BASE64_PREFIX + 'R0lGODdhEAAQAOcAAAAAAD6a3liZtEWb21ueyFOf1lSf1kae4Eig4FCk4lus5F+s5m+16qmLIrKZKaeiV7OhT76rcsSZDcaaDsqaC8uaC8ibD8eeItmsH8SiLcWjLcakLsuoL9+8NuG5M+K3R+m/QerGSOzYX/XYaYCvvr68jJC6wYLA7ofB8I7F8o/G8p3H4pHL8JzL85zM8p7M8p/Q86LP+KfQ5a/Q5qHR86XQ86XQ9K3b973Y6rHX9bTY97XY9rfZ97XZ+7XZ/Lnb97vd/L/e+rfi+bni+bvk+v/ogsDe+MDf/sjq68Pg/8Hl+cTg/sTh/8bh/MPo/MXq/Mbv+snj+cji/cjj/8nj/8nk/s3l/83m/M7l/8/n/crs/s3u/87v/8/v/8fw+szy+83z+87z+9Dn+9Dn/tHo/9Dv+9Lv+tXp/Nbp/9jr/tvs/Nzt/tHw/9L2/NTx/9Xy/9/3/tv5/9z6/937/9/7/+Hv/eDv/uTx/uH7/+b6/+nz/u32/u73/+n9/+r9/+z+//T5/zhHWMbi/Mbi/8bn/8Xp+sfs/Mnj+snj/8rj/8rk+8rk/Mrk/8vl/83l+8zl/83l/87m/8/m/8/n/8vp/srt/cvu/c3q/87r/8/r/8zu/c7u/s7v/s7v/8/v/8/w/tLo79Hn/dHn/9Ln/NPo/9Lt/9Pu/9Xp/9bq/9fr/9Tu/9Tv/9Xu/9bv/9jr/djr/tnr/tnr/9ns/9rs/dzt/93t/t3t/97u/9/u/t/v/9Dw/9Hy/tLx/9Pw/9Lz/tXx/dby/9jw/9nx/9jy/9vx/9rz/9zy/9z1/931/973/t/2/97//+Dv/+Hv/+Hw/uLw/+Pw/+Px/+H3/+Tx/+Xx/+Xy/+by/+bz/+fy/+fz/+L5/+P4/+X5/+X6/+b6/+b7/+jz/+nz/+n0/+r0/+v1/+z1/+32/+72/+/3/+j8/+j9/+r9/+v9/+v+/+z6/+3+//D3//L4//P5//T5//X6//f7/ywpICwpIP/f3//k5K4BAgAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAjPAAcEGEgwgAEACBMCCPCnTx44ZZS0MagQYQA/gPbUiZIjzAIGBSoGMMNHjxojNb4kOHGAwAUKERYiwHPnzI8XYKB4QeKgw4gKCwPQsSNmhwsaMGRw6FBEBNCBc9Zc4WGjxYoMTEVQsBhATposQXTM0MA0xFauctCMkYJjA1MQEhQOjEMGS5MSGIqAsCBAroI3VqoAgfDBwwQTAeS6oTJlSY9ADR6QYJE4YQA2TJIc8REjBQoVNypb7NKFyxYtToYIIfJENACBBWMPqEi7NsKAADs=';\nexport const PERMIT_EU_IMG = BASE64_PREFIX + 'R0lGODdhEAAQAOcAAAAAAAaH2QeG2AeH2QeI2QiI2QmJ2QqJ2QuK2QyI2A+K2D2f3iOb4yec4ymf5jCj5jel4zKm6zOn6zil40Gr5kOs5kOt60Ov60Sv60ym4E+790+891mt5Fyt4l2361G58FK991W68Fe98lS+92u15Hq85lnA91/B8l3E+mfH92jI92rJ92jJ+mvN/2zN/G3O/3PN93bK8HXO93DN+nXQ+nXS/3fT/33S93vU/HrV/4LN8IHR8ojS94/V8onZ+ova/43b/5nK6ZTf+pXi/5bj/53l/KXc96Te+aXe+bjw/77x/83s+s3t+83x/9Dy/9ny/Nrz/N30/eH4/+77/gCD12XK/2XL/2fL/2nE8GrE9WzF9m/G9WnL/GjK/2rL/GjM/2nM/2vM/GrN/2zO/23O/2/O/G/Q/3PE8HPJ8HLL9XPM9XPO/3rI83vP/HHQ/3LR/3XS/3bT/3fT/3zR93jQ/3rR/3rS/3rV/3vV/3/S+n3S/3/T/3zW/3/Y/4/F6IDI8YDL8oDS9YTU9YDR+4DT/4HT/4HV/4PU/4PV/4XV/4bV/4fV/4fX/4DY/4HY/4XY/4Ta/47S9I/S9IvV+YrW/47U+InZ+onY/IjY/4nc/4rd/4vd/47Z/I/b/47c+o3e/5nK6ZDb95DY/5Da/5Db/5Ha/5Hb/5LZ/5Pc/5Le/5Pf/5Xb+5Xa/5bb/5fb/5fc/5je/5re/57b+Jzd/Z3f/57f/5Dg/5Ti/5jj/5vl/53h/53i/57g/57h/5/j/53k/5zm/53m/57k/5/m/6nR66Xf+qjf+KPj/6Hl+qXk/6Tq/6fr/6ng+Kri+6nm/6nn/6zn/6jo/6np/6vs/Krs/6rt/6vt/6zo/63o/67p/67s/7Dj+bHj+bDq/7Dv/7Xs/7bs/7jv/7vv/73r/LTx/7bz/7vw/7n0/8Dv/8Hv/8Lu/cL4/8P5/wCD17Xy/7nw/7vy/7n0/7zw/7zy/77y/772/8Hz/8T1/8H4/8X6/wCD1wAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAi/AAEIHEiwoEEAJahQKXFQYJAOADLo6LEAAIkgBYMgqMAhwZIpBzhMQIBxIAkISaI8kSKFCRQlFCASVHCjiREPHow48aGAYIkFBZDwKECCRAEeRwRkYAiAygkcQCyQEEjCwo8ZIagIpPKBxQsJUy1GaOFChFaEGahoADGg6IARGwIsYCpQAYoaKS5gUGHDRE+CHRzYWAFjCBEZNHIwCOtwQAMFBooIoaLgAYGSA4NMXbAjRgYAHTAbTLiwoemCAQEAOw==';\nexport const PERMIT_EU_GROUP_IMG = BASE64_PREFIX + 'R0lGODlhEAAQANUAAO/v7+zqzOfn59/f39fX197aptvYkdzXkdzYkNvXkdvXkM/Pz9bRhNbRhdHMitHMe9HMfNDLe83HcsvGfsvFfr+/v8bCdcjDasbBdcO+bMO9bLe3t7+5Zb64Za+vr6enp5+fn5eXl5uZbHx8fIWBM398WH58WFhYWFFRUUFBQT8/Pz09PTw8PDs7Ozc3NzQ0NDMzM////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUADEALAAAAAAQABAAAAZ+wJhwSCwaR6qW8mQcClypzQYFEzRjg9dnsfjABkUXbEwuj10xwaoQaLvfhZVgwOJc7vh8hzWgZyQkgYKBEhp8dBYPiouMGIcsFA2DgwwTjw4HmZqbDo8iJqChoiKHYmanLgMCHikhIK+wryEpHlYEFQt9uroLFQRDAFdCwTFBADs=';\nexport const PROCESS_IMG = BASE64_PREFIX + 'R0lGODdhEAAQAOcAAAAAAAaH2QeG2AeH2QeI2QiI2QmJ2QqJ2QuK2QyI2A+K2D2f3iOb4yec4ymf5jCj5jel4zKm6zOn6zil40Gr5kOs5kOt60Ov60Sv60ym4E+790+891mt5Fyt4l2361G58FK991W68Fe98lS+92u15Hq85lnA91/B8l3E+mfH92jI92rJ92jJ+mvN/2zN/G3O/3PN93bK8HXO93DN+nXQ+nXS/3fT/33S93vU/HrV/4LN8IHR8ojS94/V8onZ+ova/43b/5nK6ZTf+pXi/5bj/53l/KXc96Te+aXe+bjw/77x/83s+s3t+83x/9Dy/9ny/Nrz/N30/eH4/+77/gCD12XK/2XL/2fL/2nE8GrE9WzF9m/G9WnL/GjK/2rL/GjM/2nM/2vM/GrN/2zO/23O/2/O/G/Q/3PE8HPJ8HLL9XPM9XPO/3rI83vP/HHQ/3LR/3XS/3bT/3fT/3zR93jQ/3rR/3rS/3rV/3vV/3/S+n3S/3/T/3zW/3/Y/4/F6IDI8YDL8oDS9YTU9YDR+4DT/4HT/4HV/4PU/4PV/4XV/4bV/4fV/4fX/4DY/4HY/4XY/4Ta/47S9I/S9IvV+YrW/47U+InZ+onY/IjY/4nc/4rd/4vd/47Z/I/b/47c+o3e/5nK6ZDb95DY/5Da/5Db/5Ha/5Hb/5LZ/5Pc/5Le/5Pf/5Xb+5Xa/5bb/5fb/5fc/5je/5re/57b+Jzd/Z3f/57f/5Dg/5Ti/5jj/5vl/53h/53i/57g/57h/5/j/53k/5zm/53m/57k/5/m/6nR66Xf+qjf+KPj/6Hl+qXk/6Tq/6fr/6ng+Kri+6nm/6nn/6zn/6jo/6np/6vs/Krs/6rt/6vt/6zo/63o/67p/67s/7Dj+bHj+bDq/7Dv/7Xs/7bs/7jv/7vv/73r/LTx/7bz/7vw/7n0/8Dv/8Hv/8Lu/cL4/8P5/wCD17Xy/7nw/7vy/7n0/7zw/7zy/77y/772/8Hz/8T1/8H4/8X6/wCD1wAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAi/AAEIHEiwoEEAJahQKXFQYJAOADLo6LEAAIkgBYMgqMAhwZIpBzhMQIBxIAkISaI8kSKFCRQlFCASVHCjiREPHow48aGAYIkFBZDwKECCRAEeRwRkYAiAygkcQCyQEEjCwo8ZIagIpPKBxQsJUy1GaOFChFaEGahoADGg6IARGwIsYCpQAYoaKS5gUGHDRE+CHRzYWAFjCBEZNHIwCOtwQAMFBooIoaLgAYGSA4NMXbAjRgYAHTAbTLiwoemCAQEAOw==';\n\nexport const RED_DOT_IMG = BASE64_PREFIX + 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAcVJREFUeNqkk88rw2Ecx9/P18YorRlh4zAHB25KKXNSO8rJCinKef8BcXdwVpT8iLKaOw4oF6VWbpqwTc3iO9bItq/P59n3mSd221Of79Pz+fF6Pj+er7AsC/UsA3WuugEO/gghdJ2YBmYLwAQVNyoVwGUzcLwH7NCxWjOXL+TnF2DMAMt+w1gaX1yELxCQylQigZONDSTL5dVdYIVU5VoAYwGY6xJiayoSgT8YhNsGmARIXlzgcH0dz5Y1vwlsM4RjHSptLoewk4N9fTBeX/F2dYV0LCYNrs5OqWNb6u5uklRUDb45CR3gbARGPJkMzNNTFL1eSWfDezyOj2wWHtME+7AvSVEH8HJSo0Qpl0MrldSSz0tAg+p2qQSTbM32ZSSF6hRUA2mmN7SHOio3VQEsfL6vzP1GH78OKJP2jJxDvt5egEqB212xUDYtbW1wPDxw5Jmagg7g2X6vAUdDQH/28XHeGwoB9hQY9haN4h3YYh/VQNk8bYwM4yt79oHwMDDm6+4ekO8gnb69Bs7DwAEdn3iy3MS/70BokHZ7d9kZftpBLyq48o7+v0QFabJFlcgBX7YUVfq1ADpIieqRpf8HCvAjwAA0E7DxN+mXlAAAAABJRU5ErkJggg==';\nexport const REPORT_IMG = BASE64_PREFIX + 'R0lGODdhEAAQAOcAAAAAAD6a3liZtEWb21ueyFOf1lSf1kae4Eig4FCk4lus5F+s5m+16qmLIrKZKaeiV7OhT76rcsSZDcaaDsqaC8uaC8ibD8eeItmsH8SiLcWjLcakLsuoL9+8NuG5M+K3R+m/QerGSOzYX/XYaYCvvr68jJC6wYLA7ofB8I7F8o/G8p3H4pHL8JzL85zM8p7M8p/Q86LP+KfQ5a/Q5qHR86XQ86XQ9K3b973Y6rHX9bTY97XY9rfZ97XZ+7XZ/Lnb97vd/L/e+rfi+bni+bvk+v/ogsDe+MDf/sjq68Pg/8Hl+cTg/sTh/8bh/MPo/MXq/Mbv+snj+cji/cjj/8nj/8nk/s3l/83m/M7l/8/n/crs/s3u/87v/8/v/8fw+szy+83z+87z+9Dn+9Dn/tHo/9Dv+9Lv+tXp/Nbp/9jr/tvs/Nzt/tHw/9L2/NTx/9Xy/9/3/tv5/9z6/937/9/7/+Hv/eDv/uTx/uH7/+b6/+nz/u32/u73/+n9/+r9/+z+//T5/zhHWMbi/Mbi/8bn/8Xp+sfs/Mnj+snj/8rj/8rk+8rk/Mrk/8vl/83l+8zl/83l/87m/8/m/8/n/8vp/srt/cvu/c3q/87r/8/r/8zu/c7u/s7v/s7v/8/v/8/w/tLo79Hn/dHn/9Ln/NPo/9Lt/9Pu/9Xp/9bq/9fr/9Tu/9Tv/9Xu/9bv/9jr/djr/tnr/tnr/9ns/9rs/dzt/93t/t3t/97u/9/u/t/v/9Dw/9Hy/tLx/9Pw/9Lz/tXx/dby/9jw/9nx/9jy/9vx/9rz/9zy/9z1/931/973/t/2/97//+Dv/+Hv/+Hw/uLw/+Pw/+Px/+H3/+Tx/+Xx/+Xy/+by/+bz/+fy/+fz/+L5/+P4/+X5/+X6/+b6/+b7/+jz/+nz/+n0/+r0/+v1/+z1/+32/+72/+/3/+j8/+j9/+r9/+v9/+v+/+z6/+3+//D3//L4//P5//T5//X6//f7/ywpICwpIP/f3//k5K4BAgAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAjPAAcEGEgwgAEACBMCCPCnTx44ZZS0MagQYQA/gPbUiZIjzAIGBSoGMMNHjxojNb4kOHGAwAUKERYiwHPnzI8XYKB4QeKgw4gKCwPQsSNmhwsaMGRw6FBEBNCBc9Zc4WGjxYoMTEVQsBhATposQXTM0MA0xFauctCMkYJjA1MQEhQOjEMGS5MSGIqAsCBAroI3VqoAgfDBwwQTAeS6oTJlSY9ADR6QYJE4YQA2TJIc8REjBQoVNypb7NKFyxYtToYIIfJENACBBWMPqEi7NsKAADs=';\nexport const REPORT_EU_GROUP_IMG = BASE64_PREFIX + 'R0lGODlhEAAQANUAAO/v7+zqzOfn59/f39fX197aptvYkdzXkdzYkNvXkdvXkM/Pz9bRhNbRhdHMitHMe9HMfNDLe83HcsvGfsvFfr+/v8bCdcjDasbBdcO+bMO9bLe3t7+5Zb64Za+vr6enp5+fn5eXl5uZbHx8fIWBM398WH58WFhYWFFRUUFBQT8/Pz09PTw8PDs7Ozc3NzQ0NDMzM////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUADEALAAAAAAQABAAAAZ+wJhwSCwaR6qW8mQcClypzQYFEzRjg9dnsfjABkUXbEwuj10xwaoQaLvfhZVgwOJc7vh8hzWgZyQkgYKBEhp8dBYPiouMGIcsFA2DgwwTjw4HmZqbDo8iJqChoiKHYmanLgMCHikhIK+wryEpHlYEFQt9uroLFQRDAFdCwTFBADs=';\nexport const REPORT_EU_GROUP_CAUTION_IMG = BASE64_PREFIX + 'R0lGODlhEAAQAKUpAAAAADMzMzQ0NDc3Nzs7Ozw8PD09PT8/P0FBQVFRUX58WIWBM3x8fJuZbJeXl5+fn6enp6+vr7+5ZcO+bLe3t8bBdcjDasbCdcvFfr+/v83HcsvGftHMe9HMitbRhNbRhc/Pz9zXkd7aptfX19/f3///AOfn5+zqzO/v7////////////////////////////////////////////////////////////////////////////////////////////yH5BAEUAD8ALAAAAAAQABAAAAaEwJ9wSPwBAMUh40BoAkrIpGmAoFASUGiSJICAQM/wcBAomwOlrNZkEJ3e72d6DiAVJJZ8nk63TzQLgQtHhEckdhcciouMFQWHBRgfgpQLHhuPdh0hnJ2eHZkFDQqkpaYNmWRnq2UDJCYRCA4PtLW0DggRJj8jGSCHwMAgGSNDKElExz9BADs=';\nexport const REPORT_PERIOD_IMG = BASE64_PREFIX + 'R0lGODdhEQAQAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8EAgAGAgAIAgAKAgAMAgAOAgAABAACBAAEBAAGBAAIBAAKBAAMBAAOBAAABgACBgAEBgAGBgAIBgAKBgAMBgAOBgAACAACCAAECAAGCAAICAAKCAAMCAAOCAAACgACCgAECgAGCgAICgAKCgAMCgAOCgAADAACDAAEDAAGDAAIDAAKDAAMDAAODAAADgACDgAEDgAGDgAIDgAKDgAMDgAODgAAAAQCAAQEAAQGAAQIAAQKAAQMAAQOAAQAAgQCAgQEAgQGAgQIAgQKAgQMAgQOAgQABAQCBAQEBAQGBAQIBAQKBAQMBAQOBAQABgQCBgQEBgQGBgQIBgQKBgQMBgQOBgQACAQCCAQECAQGCAQICAQKCAQMCAQOCAQACgQCCgQECgQGCgQICgQKCgQMCgQOCgQADAQCDAQEDAQGDAQIDAQKDAQMDAQODAQADgQCDgQEDgQGDgQIDgQKDgQMDgQODgQAAAgCAAgEAAgGAAgIAAgKAAgMAAgOAAgAAggCAggEAggGAggIAggKAggMAggOAggABAgCBAgEBAgGBAgIBAgKBAgMBAgOBAgABggCBggEBggGBggIBggKBggMBggOBggACAgCCAgECAgGCAgICAgKCAgMCAgOCAgACggCCggECggGCggICggKCggMCggOCggADAgCDAgEDAgGDAgIDAgKDAgMDAgODAgADggCDggEDggGDggIDggKDggMDggODggAAAwCAAwEAAwGAAwIAAwKAAwMAAwOAAwAAgwCAgwEAgwGAgwIAgwKAgwMAgwOAgwABAwCBAwEBAwGBAwIBAwKBAwMBAwOBAwABgwCBgwEBgwGBgwIBgwKBgwMBgwOBgwACAwCCAwECAwGCAwICAwKCAwMCAwOCAwACgwCCgwECgwGCgwICgwKCgwMCgwOCgwADAwCDAwEDAwGDAwIDAwKDAwP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAAAALAAAAAARABAAAAhdAP8JBPCPoMGCAhMO/EeKocOGBBVCRHjwYMKGCjMeiCgQY8aEGyUOBGAwYsiLHxWe7DiSJEmBKx2mhMlRpkuXNEXO/BcT482XPGt6TNlzZ1CJB5IqXRqz4M+fCgMCADs=';\nexport const REPORT_PERIOD_CAUTION_IMG = BASE64_PREFIX + 'R0lGODlhEQAQAMIEAAAAAICAgMDAwP//AP///////////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAsAAAAABEAEAAAA0VICsTegKlFQr0BDKnse9s2WVOpnWNZDqF4QY7GshKpyrJIRnzPdyqVgPPySYYlW5CATMF+TKIy2AQuFdWKYMvtZp9GYgIAOw==';\n\nexport const SCENARIO_IMG = BASE64_PREFIX + 'R0lGODdhEQAQAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8EAgAGAgAIAgAKAgAMAgAOAgAABAACBAAEBAAGBAAIBAAKBAAMBAAOBAAABgACBgAEBgAGBgAIBgAKBgAMBgAOBgAACAACCAAECAAGCAAICAAKCAAMCAAOCAAACgACCgAECgAGCgAICgAKCgAMCgAOCgAADAACDAAEDAAGDAAIDAAKDAAMDAAODAAADgACDgAEDgAGDgAIDgAKDgAMDgAODgAAAAQCAAQEAAQGAAQIAAQKAAQMAAQOAAQAAgQCAgQEAgQGAgQIAgQKAgQMAgQOAgQABAQCBAQEBAQGBAQIBAQKBAQMBAQOBAQABgQCBgQEBgQGBgQIBgQKBgQMBgQOBgQACAQCCAQECAQGCAQICAQKCAQMCAQOCAQACgQCCgQECgQGCgQICgQKCgQMCgQOCgQADAQCDAQEDAQGDAQIDAQKDAQMDAQODAQADgQCDgQEDgQGDgQIDgQKDgQMDgQODgQAAAgCAAgEAAgGAAgIAAgKAAgMAAgOAAgAAggCAggEAggGAggIAggKAggMAggOAggABAgCBAgEBAgGBAgIBAgKBAgMBAgOBAgABggCBggEBggGBggIBggKBggMBggOBggACAgCCAgECAgGCAgICAgKCAgMCAgOCAgACggCCggECggGCggICggKCggMCggOCggADAgCDAgEDAgGDAgIDAgKDAgMDAgODAgADggCDggEDggGDggIDggKDggMDggODggAAAwCAAwEAAwGAAwIAAwKAAwMAAwOAAwAAgwCAgwEAgwGAgwIAgwKAgwMAgwOAgwABAwCBAwEBAwGBAwIBAwKBAwMBAwOBAwABgwCBgwEBgwGBgwIBgwKBgwMBgwOBgwACAwCCAwECAwGCAwICAwKCAwMCAwOCAwACgwCCgwECgwGCgwICgwKCgwMCgwOCgwADAwCDAwEDAwGDAwIDAwKDAwP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAAAALAAAAAARABAAAAhdAP8JBPCPoMGCAhMO/EeKocOGBBVCRHjwYMKGCjMeiCgQY8aEGyUOBGAwYsiLHxWe7DiSJEmBKx2mhMlRpkuXNEXO/BcT482XPGt6TNlzZ1CJB5IqXRqz4M+fCgMCADs=';\nexport const SHUTDOWN_EU_IMG= BASE64_PREFIX + 'R0lGODlhGQAWAMZQAAAxZwMyaAMyagMzagQzagUzaAU0agY0aA08ew88ew8+ghY+chJAghRBextBdRJBkBNCkBhEghhFkCFFeSBFfhhGkBlGkCdKfiJLkB1Mox9Noy1Ogh9PrB1Nyx1OyyJSrB5Pyx5QyyBRy/cHEytZoyVWyyJU5CZXyztZiidYyzBboyZY5CpbyytcyzBgrClb5Cdb8y5hyydb/yte5DZkrChc/zNhyyth/y1j8yxi/y1k/zNq5EFuyzRr/zVt/zhz5EBy20Fy2zl5/zl7/z2A81uU5FuX7Eyj/1Cn/1un/16s/2qs82ux83C3+XfT/5vs/f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgB/ACwAAAAAGQAWAAAH/oBQgoOEhVAbAAAbhoyFKBNQDio0C1AXKI2GKAYRFAVFTwQUDQaYmYMXDUdNS05ORkxIEZCEI7aKhAcxSTwYGDxKOweEj7YjlJYbCwNBNgMXFwM2QAEOi5sRxqGjAB84PhIXghcSPS8aAJaqxq+xABkrNRDilg8yMBzpULrGv8EbDgB0ACEAmoAQHgQs2KCMmbFo06odMHGjRAULJ3KIGAal2zdjlsq9mKAgRwoWQoa0mKEDgbh38UBesAcDhYAEBwgQ+QHgAIMBmAAKfHgw4QIUF5IscEHCgZIJpgRNNIZRY8NmiBRFtAaFZA5jKll6BEePnDl0UGwmMMbTJ0x5PGVp5jNGl67QgQUvFFW4qC7dQRMrXsy4sZbfQV5PplzZkp6gusRu5tzZ82fUx7Y0iVvatOvlU4SyLiIUCAA7';\nexport const SHUTDOWN_FACILITY_IMG = BASE64_PREFIX + 'R0lGODlhGQAZAOecAAMCAwMDAwMDBAQCBwYFEwYPDAgXCwwcDxAmExUzGBk8HCId1iEd5iMd4hxGHyIe6yQf7SQh6x9LIyhUKypYLTc42CteLzg33ixiMD837jpBx/cHEzBqNDtlPzFsNTNtNj1pQD9sQjdyOjhzOzt1PUFxQ1hYmz13P0Z1R0J9RUV8R3FvfnNxfluHYlyIZ1iNWnZ6dV6JcXd8dliSV1iTWHh+eFqTWlyUXmOKg3qCd3yDe2CWY31u+Xtx8X+EgWOYZn5w+YCFg2SZZoGFhIKGgoOIgWacaWmdbIaLh4iMiIV5+YmNi3Gkc4t/+Hmme5KI9ZeM+YqphpqP+Y2riJamkJ6U+aGX+ZqukqSb+auk+LGr9rm28by577y+5LzIy7zMt7rMvb3Ps8DOssTRscfTvcvTx87TzNDU0dDU19LT4NLU29TV5dfY59zf5t/j5eDn1ODl4uDn2uLpz+Hn4OTrzefuzOnv0ezx0O7z0fDx+PHy8/Hy9vHz8vLy+fD18PH52vD27vH18fLz+fH36/L0+/P63vP46fX75PT75/X84Pb4+vf4+vX5+/j4+fj5+fn7+Pn8+fv8+vz7/f37/fz8+/z8/Pz8/f39/f79/v3+/f7+/f7+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAsAAAAABkAGQAACP4ANwkcSLCgwYOENFGytAkRIkmTBPHBtMlOokcHB86RMaRGjiJLWPgYsmLIkiUDMgoMlEQgJj2LElFCZAcSpDwFVG6iBCNQnjRpIHFZA4gLFzqIAKhUtElHJEVsiG7hEmhqIUwEVELaJOPQpj5tNCFakyhPnkRuAqjUtKEtIS5dDGnRMicLljtwsmac1HYDo6lzsFiBlEVKnjlqC14SiKjvHjaMBjFi9KcNoTpy9BLk42gT27Z+oFQpJKVHHCBKDqXRbJBvW0xVmuR58uTNEyVsBCUmCIeKyL6D7Mhx80bNHDNtzpRhPTBIpUx9GWngsSZDBjDW35jJymirpE2ViP5s0tMXjYkKczJosAPhApoxAxgJbDSpUaQgmyD1ndNGzRs6Z7CBxxhobCfJS5gkeIkPkWDS1xkQQDDGAxF4QSEXYOS0ByUJ6rGJD4ow0lcbGUDwRgQRhPHAA2BcYUECARwAwByabILEJof0lYYYdHRBRhdnoOHFFV/8MMUVVwRAyWd9NdkWAwt80YAGMdDABBNHGnAGIHA42aQYGmjgxA84pHCCCjS88EMIOYDhRBFebmDAFEIwQYMRRliAgQs0nOABBiNM4EILTLYVBQU3GDHDDiJ4MIIDN5yQggcfOBCDDDpYol9bYaCgAgYvMMEBCZXaoEIJJSjQwQtJyiijABcBGIAACCkkgAAKuB7haQITSICAAQEEBAA7';\nexport const STACK_IMG = BASE64_PREFIX + 'R0lGODlhEgAOALMNAICAgHBwcKCgoMDAwJCQkLCwsDAwMBAQEODg4PDw8NDQ0EBAQAAAAP///wAAAAAAACH5BAEAAA0ALAAAAAASAA4AAARMsEmUqJwpXxmYAJ5EMARIXIoySEKSqtKAKI1wJJvCMMiGMIoCYCMxLIiNQAEpSTGfyQCUuThOidUr1qqVZLteLnVHLpOHl4V5zUBHAAA7';\n\nexport const TOWER_IMG = BASE64_PREFIX + 'R0lGODlhGwAbAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/AP//AAAA//8A/wD//////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBmAABmMwBmZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNmZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZmzGZm/2aZAGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb//5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZAJmZM5mZZpmZmZmZzJmZ/5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwAM8wAZswAmcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZZsyZmcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8Amf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+ZzP+Z///MAP/MM//MZv/Mmf/MzP/M////AP//M///Zv//mf//zP///ywAAAAAGwAbAAAItgAfCBxIsKBBgwASKlzIsOFCgQBUSZxIkRoAahQzqgIAUWPFix4ncnwQMaQqixhNjizp0aIfkCFXmrRIMqVHmSEtJrSpcWSKmRxh3uyYMyjPjDhbKjxKMWlGi6kepBKKVOBPpQOpNiWqUefSmFyfjqwJlmTRrEwl+lQaVeDUtE4nel0IN6zcsRDrmu2Kl2xPuxLnfv27V2xBrWoBuyz4kmnckw53EmZ51w9jxCsja3Z4sLPnggEBADs=';\nexport const TRIVIAL_EU_IMG = BASE64_PREFIX + 'R0lGODlhGQAXAPcAAAAxZwMyaAMyagMzagQzagUzaAU0agY0aA08ew88ew8+ghY+chJAghRBextBdRJBkBNCkBhEghhFkCFFeSBFfhhGkBlGkCdKfiJLkB1Mox9Noy1Ogh9PrB1Nyx1OyyJSrB5Pyx5QyyBRyytZoyVWyyJU5CZXyztZiidYyzBboyZY5CpbyytcyzBgrClb5Cdb8y5hyydb/yte5DZkrChc/zNhyyth/y1j8yxi/y1k/zNq5EFuyzRr/zVt/zhz5EBy20Fy2zl5/zl7/z2A81uU5FuX7Eyj/1Cn/1un/16s/2qs82ux83C3+XfT/5vs/f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAGQAXAAAIYgCfCBxIsKDBgwgTKlzIsKHDhxAjIgSQQuJAAE4cOCACwOKPFEh+1MggEQAPDA0A1AhBEqLJB08chIjREeKDEA9SAOjQYYPEECozYIBZ0gkGBzNqWsxpsanTp1CjSp1KtWBAADs=';\nexport const TRIVIAL_EU_CAUTION_IMG = BASE64_PREFIX + 'R0lGODlhGQAWAPcAAAAAAA8PAAAxZwMyaAMyagMzagQzagUzaAU0agY0aA08ew88ew8+ghY+chJAghRBextBdRJBkBNCkBhEgiFFeSBFfhhGkBlGkCdKfiJLkB1Moy1Ogh1Nyx1OyyJSrB5Pyx5QyyBRyytZoyVWyyJU5CZXyztZiidYyzBboyZY5CpbyytcyzBgrCdb8y5hyydb/yhc/zNhyyth/y1j8yxi/y1k/0Fuyzhz5EBy20Fy2zl7/z2A81uU5Fun/16s/3C3+fz/CP//AP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAGQAWAAAIagCFCBxIsKDBgwgTKlzIsKHDhxAjHtwgIAAAiUIQVAgAJECQixAxPPjB0SPIhw0KcAzCMsgGiB5mrPT4ESIEAR8IYCDQgcBLiAlkjLhQIkQCiQQSGLghwEEBjEIaiIBAAarVq1izat2qNSAAOw==';\nexport const TV_APP_EU_GROUP_IMG = BASE64_PREFIX + 'R0lGODlhEAAQANUAAO/v7+zqzOfn59/f39fX197aptvYkdzXkdzYkNvXkdvXkM/Pz9bRhNbRhdHMitHMe9HMfNDLe83HcsvGfsvFfr+/v8bCdcjDasbBdcO+bMO9bLe3t7+5Zb64Za+vr6enp5+fn5eXl5uZbHx8fIWBM398WH58WFhYWFFRUUFBQT8/Pz09PTw8PDs7Ozc3NzQ0NDMzM////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUADEALAAAAAAQABAAAAZ+wJhwSCwaR6qW8mQcClypzQYFEzRjg9dnsfjABkUXbEwuj10xwaoQaLvfhZVgwOJc7vh8hzWgZyQkgYKBEhp8dBYPiouMGIcsFA2DgwwTjw4HmZqbDo8iJqChoiKHYmanLgMCHikhIK+wryEpHlYEFQt9uroLFQRDAFdCwTFBADs=';\n\nexport const USER_IMG = BASE64_PREFIX + 'R0lGODlhEwAQALMAAM6aMf///84AAAAEAK2qlO/r74SChAICbsbDxv/PYzFlnAAAAP///wAAAAAAAAAAACH5BAEAAAwALAAAAAATABAAAARbkMkZapXWTrm6X1i2fd0AMlkwfglypusytMkrTh1Cd6GGL7RCggCCrWjE3mXDWCAAOpsP9zR4lKqfE3DC4hSKwyLQRd2aYfCBTDkv1Ie4QrpEgxUCAbh4Tt1SEQA7';\n\nexport const V_ELLIPSIS_IMG = BASE64_PREFIX + 'R0lGODlhEAAbAKEDABERESIiIkRERP///yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgADACwAAAAAEAAbAAACIJyPqcvtrwAQcEgKQ8C1+w9+V6VxThmm6uqh0Jht7EwXADs=';\n","/*\n * Public API Surface of oepa-ui-lib\n */\n\nexport * from './lib/common-forms.module';\nexport * from './lib/account-search-input/account-search-input.component';\nexport * from './lib/account-search-modal/account-search-modal.component';\nexport * from './lib/action-btn/oepa-action';\nexport * from './lib/action-btn/oepa-action-event';\nexport * from './lib/action-btn/action-btn.component';\nexport * from './lib/action-btn-modal/action-btn-modal.component';\nexport * from './lib/address/address.component';\nexport * from './lib/address/oepa-form-address';\nexport * from './lib/address/oepa-address.service';\nexport * from './lib/blank/blank.component';\nexport * from './lib/checkbox/checkbox.component';\nexport * from './lib/checkbox-input/checkbox-input.component';\nexport * from './lib/comment-modal/comment-modal.component';\nexport * from './lib/confirmation-modal/confirmation-modal.component';\nexport * from './lib/contact/contact.component';\nexport * from './lib/contact/oepa-form-contact';\nexport * from './lib/datepicker/datepicker.component';\nexport * from './lib/daterangepicker/daterangepicker.component';\nexport * from './lib/date-input/date-input.component';\nexport * from './lib/date-input-modal/date-input-modal.component';\nexport * from './lib/document/document-editor/document-editor.component';\nexport * from './lib/document/document-group/document-group.component';\nexport * from './lib/document/document-part/document-part.component';\nexport * from './lib/document/document-part-editor/document-part-editor.component';\nexport * from './lib/document/document-placeholder-modal/document-placeholder-modal.component';\nexport * from './lib/document/document-section/document-section.component';\nexport * from './lib/document/document.service';\nexport * from './lib/document/group-modal/group-modal.component';\nexport * from './lib/document/part-modal/part-modal.component';\nexport * from './lib/document/section-modal/section-modal.component';\nexport * from './lib/document/document-event';\nexport * from './lib/document/document-event-entity-type';\nexport * from './lib/document/document-event-type';\nexport * from './lib/document/portal-document';\nexport * from './lib/document/portal-document-class';\nexport * from './lib/document/portal-document-group';\nexport * from './lib/document/portal-document-part';\nexport * from './lib/document/portal-document-placeholder';\nexport * from './lib/document/portal-document-section';\nexport * from './lib/document/portal-document-text';\nexport * from './lib/document/portal-document-type';\nexport * from './lib/document/portal-email';\nexport * from './lib/document/portal-email-attachment';\nexport * from './lib/document/portal-email-attachment-type';\nexport * from './lib/document/portal-email-filter';\nexport * from './lib/dual-list-box/dual-list-box.component';\nexport * from './lib/dual-list-box/array.pipes';\nexport * from './lib/dual-list-box/items-moved-event';\nexport * from './lib/dual-list-box/list-box-item';\nexport * from './lib/edoc-attachment/edoc-attachment.component';\nexport * from './lib/edoc-attachment/edocument-attachment';\nexport * from './lib/edoc-attachment/edocument-attachment-metadata';\nexport * from './lib/edoc-attachment/edocument-reference';\nexport * from './lib/edoc-attachment/edoc-attachment.service';\nexport * from './lib/ebiz-address/ebiz-address.component';\nexport * from './lib/entity/entity.service';\nexport * from './lib/entity/organization-create-modal/organization-create-modal.component';\nexport * from './lib/entity/organization-search-input/organization-search-input.component';\nexport * from './lib/entity/organization-search-modal/organization-search-modal.component';\nexport * from './lib/entity/person-create-modal/person-create-modal.component';\nexport * from './lib/entity/person-search-input/person-search-input.component';\nexport * from './lib/entity/person-search-modal/person-search-modal.component';\nexport * from './lib/entity/place-create-modal/place-create-modal.component';\nexport * from './lib/entity/place-search-input/place-search-input.component';\nexport * from './lib/entity/place-search-modal/place-search-modal.component';\nexport * from './lib/esri-map/esri-map.component';\nexport * from './lib/file-upload/file-upload.component';\nexport * from './lib/lynx-image-upload/lynx-image-upload.component';\nexport * from './lib/lynx-image-upload/lynx.service';\nexport * from './lib/masks/oepa-create-integer-mask';\nexport * from './lib/masks/oepa-integer-mask-args';\nexport * from './lib/numeric-input/numeric-input.component';\nexport * from './lib/parameter/parameter';\nexport * from './lib/parameter/parameter.service';\nexport * from './lib/oepa-error-message/oepa-error-message.component';\nexport * from './lib/oepa-wait-message/oepa-wait-message.component';\nexport * from './lib/ohio-lat-long/ohio-lat-long.component';\nexport * from './lib/message/oepa-message';\nexport * from './lib/message/oepa-message-type';\nexport * from './lib/message/message.component';\nexport * from './lib/message-list/message-list.component';\nexport * from './lib/multi-file-upload/multi-file-upload.component';\nexport * from './lib/notes-modal/notes-modal.component';\nexport * from './lib/notes-modal/oepa-note';\nexport * from './lib/notes-modal/oepa-note-result';\nexport * from './lib/params-help-button/params-help-button.component';\nexport * from './lib/phone-number/phone-number.component';\nexport * from './lib/pin-modal/oepa-attestation';\nexport * from './lib/pin-modal/oepa-pin';\nexport * from './lib/pin-modal/oepa-pin.service';\nexport * from './lib/pin-modal/oepa-security-question';\nexport * from './lib/pin-modal/pin-modal.component';\nexport * from './lib/validation/form-validator';\nexport * from './lib/validation/validation.service';\nexport * from './lib/yes-no/yes-no.component';\nexport * from './lib/yes-no-boolean/yes-no.component';\nexport * from './lib/yes-no-other-input/yes-no-other-input.component';\nexport * from './lib/numeric-input.directive';\nexport * from './lib/progress-indicator/progress-info';\nexport * from './lib/select-input/select-input.component';\nexport * from './lib/server-timeout-modal/server-timeout-modal.component';\nexport * from './lib/shopping-cart/shopping-cart.service';\nexport * from './lib/shopping-cart/shopping-cart-view/shopping-cart-view-parameters';\nexport * from './lib/shopping-cart/shopping-cart-view/shopping-cart-view.component';\nexport * from './lib/shopping-cart/shopping-cart-summary/shopping-cart-summary.component';\nexport * from './lib/start-end-timepicker/start-end-timepicker.component';\nexport * from './lib/template-confirmation-modal/template-confirmation-modal.component';\nexport * from './lib/text-area-input/text-area-input.component';\nexport * from './lib/text-input/text-input.component';\nexport * from './lib/timeout-modal/timeout-modal.component';\nexport * from './lib/timepicker/timepicker.component';\n\nexport * from './lib/table/oepa-table';\nexport * from './lib/table/oepa-table-cell';\nexport * from './lib/table/oepa-table-cell-click-event';\nexport * from './lib/table/oepa-table-column';\nexport * from './lib/table/oepa-table-config';\nexport * from './lib/table/oepa-table-filter';\nexport * from './lib/table/oepa-table-filtering.directive';\nexport * from './lib/table/oepa-table-header';\nexport * from './lib/table/oepa-table-page-info';\nexport * from './lib/table/oepa-table-popover';\nexport * from './lib/table/oepa-table-row';\nexport * from './lib/table/oepa-table-sort-criterion';\nexport * from './lib/table/oepa-table-sorting.directive';\nexport * from './lib/table/table-export.service';\nexport * from './lib/table/table.component';\nexport * from './lib/table/p-table/p-table.component';\nexport * from './lib/table/table.service';\nexport * from './lib/table/oepa-table-cell-inner-html.pipe';\nexport * from './lib/table/oepa-table-cell-colspan.pipe';\nexport * from './lib/table/oepa-table-cell-value.pipe';\nexport * from './lib/table/oepa-table-cell-classname.pipe';\nexport * from './lib/table/oepa-table-cell-icon-classname.pipe';\nexport * from './lib/table/oepa-table-cell-img-src.pipe';\n\nexport * from './lib/zip-code/zip-code.component';\n\nexport * from './lib/oepa-forms.service';\n\nexport * from './lib/oepa-images';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.OepaAddressService","i2","i3","i4","i5","i1","i3.ActionBtnComponent","i1.TableService","i2.TableService","i3.TableExportService","i6","i9","i10.ActionBtnComponent","i11.OepaTableSortingDirective","i12.OepaTableFilteringDirective","i13.OepaTableCellInnerHtmlPipe","i14.OepaTableCellColSpanPipe","i15.OepaTableCellValuePipe","i16.OepaTableCellClassnamePipe","i17.OepaTableCellIconClassnamePipe","i18.OepaTableCellImgSrcPipe","i4.TableComponent","i6.TableComponent","i4.ActionBtnComponent","i5.OepaTableCellInnerHtmlPipe","i6.OepaTableCellValuePipe","i7.OepaTableCellIconClassnamePipe","i8.OepaTableCellImgSrcPipe","i9.OepaTableCellNotSelectablePipe","i10.OepaTableCellInputComponentPipe","i2.OepaTableSortingDirective","i3.OepaTableFilteringDirective","i8","i12.TableDataCellComponent","i13.TableHeaderCellComponent","i14.OepaTableFilteringDirective","i15.OepaTableCellColSpanPipe","i3.OepaFormsService","i4.EntityService","i7.AddressComponent","i8.TableComponent","i7","i8.AddressComponent","i9.TableComponent","i3.EntityService","i6.AddressComponent","i7.ContactComponent","i9.ContactComponent","i10.TableComponent","i4.DatepickerComponent","i3.YesNoComponent","i4.DocumentService","i2.DocumentPartEditorComponent","i4.EsriMapComponent","i5.YesNoComponent","i2.EdocAttachmentService","i3.DocumentService","i6.DocumentPartEditorComponent","i5.DocumentGroupComponent","i6.DocumentSectionComponent","i4.ArrayFilterPipe","i4.ArraySortPipe","i5.TableComponent","i3.OepaPinService","i3.ShoppingCartService","i1.ShoppingCartService","i2.DatepickerComponent","i10","i11","i12"],"mappings":"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"}