@resolveio/client-lib-core 0.0.1

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 (350) hide show
  1. package/esm2020/lib/account-manager.service.mjs +213 -0
  2. package/esm2020/lib/auth/auth-guard.service.mjs +137 -0
  3. package/esm2020/lib/auth/auth-permissions.service.mjs +24 -0
  4. package/esm2020/lib/auth/auth.service.mjs +241 -0
  5. package/esm2020/lib/auth/auth365.component.mjs +44 -0
  6. package/esm2020/lib/auth/can-deactivate-guard.service.mjs +13 -0
  7. package/esm2020/lib/auth/enroll.component.mjs +81 -0
  8. package/esm2020/lib/auth/forgot-password.component.mjs +82 -0
  9. package/esm2020/lib/core.component.mjs +488 -0
  10. package/esm2020/lib/core.module.mjs +179 -0
  11. package/esm2020/lib/core.service.mjs +96 -0
  12. package/esm2020/lib/directive/focus.mjs +22 -0
  13. package/esm2020/lib/directive/scroll.mjs +55 -0
  14. package/esm2020/lib/home/about-us.component.mjs +34 -0
  15. package/esm2020/lib/home/contact-us.component.mjs +57 -0
  16. package/esm2020/lib/home/demo.component.mjs +59 -0
  17. package/esm2020/lib/home/home.component.mjs +105 -0
  18. package/esm2020/lib/home/home.module.mjs +50 -0
  19. package/esm2020/lib/logger/logger.component.mjs +221 -0
  20. package/esm2020/lib/models/app-status.model.mjs +2 -0
  21. package/esm2020/lib/models/collection-document.model.mjs +2 -0
  22. package/esm2020/lib/models/cron-job.model.mjs +2 -0
  23. package/esm2020/lib/models/dialog.model.mjs +2 -0
  24. package/esm2020/lib/models/file.model.mjs +2 -0
  25. package/esm2020/lib/models/log-method-latency.model.mjs +2 -0
  26. package/esm2020/lib/models/navbar-main-tab.model.mjs +2 -0
  27. package/esm2020/lib/models/pagination.model.mjs +2 -0
  28. package/esm2020/lib/models/permission.model.mjs +2 -0
  29. package/esm2020/lib/models/select-data-label.model.mjs +2 -0
  30. package/esm2020/lib/models/subscription.model.mjs +2 -0
  31. package/esm2020/lib/models/support-ticket.model.mjs +2 -0
  32. package/esm2020/lib/models/user-group.model.mjs +2 -0
  33. package/esm2020/lib/models/user.model.mjs +2 -0
  34. package/esm2020/lib/offline-db.mjs +519 -0
  35. package/esm2020/lib/offline-manager.service.mjs +107 -0
  36. package/esm2020/lib/pipes/domsanitizor.pipe.mjs +28 -0
  37. package/esm2020/lib/pipes/filter.pipe.mjs +36 -0
  38. package/esm2020/lib/pipes/json-parse.pipe.mjs +29 -0
  39. package/esm2020/lib/pipes/minus-currency.pipe.mjs +16 -0
  40. package/esm2020/lib/pipes/phone.pipe.mjs +47 -0
  41. package/esm2020/lib/pipes/pipe.module.mjs +54 -0
  42. package/esm2020/lib/pipes/reverse-list.pipe.mjs +17 -0
  43. package/esm2020/lib/pipes/titlecase.pipe.mjs +22 -0
  44. package/esm2020/lib/resolveio-class.mjs +41 -0
  45. package/esm2020/lib/shared/shared.module.mjs +91 -0
  46. package/esm2020/lib/socket-manager.service.mjs +360 -0
  47. package/esm2020/lib/socket.service.mjs +129 -0
  48. package/esm2020/lib/standard-pages/contactus/contactus.component.mjs +45 -0
  49. package/esm2020/lib/standard-pages/faq/faq.component.mjs +45 -0
  50. package/esm2020/lib/standard-pages/features/features.component.mjs +23 -0
  51. package/esm2020/lib/standard-pages/home/home.component.mjs +38 -0
  52. package/esm2020/lib/standard-pages/howitwork/howitwork.component.mjs +23 -0
  53. package/esm2020/lib/standard-pages/loginsignup/loginsignup.component.mjs +23 -0
  54. package/esm2020/lib/standard-pages/pricing/pricing.component.mjs +37 -0
  55. package/esm2020/lib/standard-pages/standard-pages.module.mjs +69 -0
  56. package/esm2020/lib/support-ticket/detail/support-ticket-detail.component.mjs +204 -0
  57. package/esm2020/lib/support-ticket/edit/support-ticket-edit.component.mjs +122 -0
  58. package/esm2020/lib/support-ticket/list/support-ticket-list.component.mjs +137 -0
  59. package/esm2020/lib/support-ticket/new/support-ticket-new.component.mjs +115 -0
  60. package/esm2020/lib/support-ticket/support-ticket.component.mjs +63 -0
  61. package/esm2020/lib/support-ticket/support-ticket.module.mjs +57 -0
  62. package/esm2020/lib/support-ticket/support-ticket.routing.mjs +20 -0
  63. package/esm2020/lib/support-ticket/support-ticket.service.mjs +17 -0
  64. package/esm2020/lib/token-manager.service.mjs +24 -0
  65. package/esm2020/lib/user-settings/settings/users-settings.component.mjs +312 -0
  66. package/esm2020/lib/user-settings/user-settings.component.mjs +57 -0
  67. package/esm2020/lib/user-settings/user-settings.module.mjs +58 -0
  68. package/esm2020/lib/user-settings/user-settings.permission.mjs +10 -0
  69. package/esm2020/lib/user-settings/user-settings.routing.mjs +14 -0
  70. package/esm2020/lib/user-settings/user-settings.service.mjs +17 -0
  71. package/esm2020/lib/util/action-name.helper.mjs +9 -0
  72. package/esm2020/lib/util/aws.service.mjs +79 -0
  73. package/esm2020/lib/util/common.helper.mjs +140 -0
  74. package/esm2020/lib/util/validation.service.mjs +177 -0
  75. package/esm2020/lib/util/window-resize.service.mjs +24 -0
  76. package/esm2020/lib/util/window.service.mjs +16 -0
  77. package/esm2020/lib/widgets/alert/alert.model.mjs +2 -0
  78. package/esm2020/lib/widgets/alert/alert.service.mjs +76 -0
  79. package/esm2020/lib/widgets/chartjs/chart.component.mjs +86 -0
  80. package/esm2020/lib/widgets/chartjs/chart.module.mjs +17 -0
  81. package/esm2020/lib/widgets/collapse-table/collapse-table.component.mjs +79 -0
  82. package/esm2020/lib/widgets/collapse-table/collapse-table.module.mjs +36 -0
  83. package/esm2020/lib/widgets/data-table/data-table.component.mjs +77 -0
  84. package/esm2020/lib/widgets/data-table/data-table.model.mjs +2 -0
  85. package/esm2020/lib/widgets/data-table/data-table.module.mjs +43 -0
  86. package/esm2020/lib/widgets/date-shortcut/date-shortcut.component.mjs +195 -0
  87. package/esm2020/lib/widgets/date-shortcut/date-shortcut.module.mjs +34 -0
  88. package/esm2020/lib/widgets/dialog/dialog.confirm.content.mjs +63 -0
  89. package/esm2020/lib/widgets/dialog/dialog.error.content.mjs +57 -0
  90. package/esm2020/lib/widgets/dialog/dialog.input.content.mjs +197 -0
  91. package/esm2020/lib/widgets/dialog/dialog.login.content.mjs +348 -0
  92. package/esm2020/lib/widgets/dialog/dialog.notify.content.mjs +57 -0
  93. package/esm2020/lib/widgets/dialog/dialog.register.content.mjs +330 -0
  94. package/esm2020/lib/widgets/dialog/dialog.select-data-labels.content.mjs +191 -0
  95. package/esm2020/lib/widgets/dialog/dialog.select-datetime.content.mjs +140 -0
  96. package/esm2020/lib/widgets/dialog/dialog.service.mjs +71 -0
  97. package/esm2020/lib/widgets/file/file-upload.component.mjs +440 -0
  98. package/esm2020/lib/widgets/file/file-upload.module.mjs +50 -0
  99. package/esm2020/lib/widgets/form-button/form-button.component.mjs +91 -0
  100. package/esm2020/lib/widgets/form-button/form-button.module.mjs +30 -0
  101. package/esm2020/lib/widgets/navbar-main/navbar-main.component.mjs +209 -0
  102. package/esm2020/lib/widgets/navbar-module/navbar-module.component.mjs +138 -0
  103. package/esm2020/lib/widgets/navbar-module/navbar-module.model.mjs +2 -0
  104. package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/ng-bootstrap-tour.service.mjs +14 -0
  105. package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/ng-bootstrap.module.mjs +34 -0
  106. package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/step-option.interface.mjs +2 -0
  107. package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/tour-anchor.directive.mjs +76 -0
  108. package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/tour-step-template.component.mjs +70 -0
  109. package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/tour-step-template.service.mjs +10 -0
  110. package/esm2020/lib/widgets/responsive-button-group/responsive-button-group.component.mjs +38 -0
  111. package/esm2020/lib/widgets/responsive-button-group/responsive-button-group.module.mjs +26 -0
  112. package/esm2020/lib/widgets/scheduler/scheduler.component.mjs +185 -0
  113. package/esm2020/lib/widgets/scheduler/scheduler.module.mjs +39 -0
  114. package/esm2020/lib/widgets/sort-table/sort-table-header.component.mjs +67 -0
  115. package/esm2020/lib/widgets/sort-table/sort-table-ngfor.component.mjs +48 -0
  116. package/esm2020/lib/widgets/sort-table/sort-table.directive.mjs +174 -0
  117. package/esm2020/lib/widgets/sort-table/sort-table.module.mjs +40 -0
  118. package/esm2020/lib/widgets/user-role/user-role.component.mjs +27 -0
  119. package/esm2020/lib/widgets/user-role/user-role.module.mjs +26 -0
  120. package/esm2020/public_api.mjs +109 -0
  121. package/esm2020/resolveio-client-lib-core.mjs +5 -0
  122. package/fesm2015/resolveio-client-lib-core.mjs +8856 -0
  123. package/fesm2015/resolveio-client-lib-core.mjs.map +1 -0
  124. package/fesm2020/resolveio-client-lib-core.mjs +8849 -0
  125. package/fesm2020/resolveio-client-lib-core.mjs.map +1 -0
  126. package/lib/account-manager.service.d.ts +42 -0
  127. package/lib/auth/auth-guard.service.d.ts +25 -0
  128. package/lib/auth/auth-permissions.service.d.ts +10 -0
  129. package/lib/auth/auth.service.d.ts +29 -0
  130. package/lib/auth/auth365.component.d.ts +20 -0
  131. package/lib/auth/can-deactivate-guard.service.d.ts +11 -0
  132. package/lib/auth/enroll.component.d.ts +28 -0
  133. package/lib/auth/forgot-password.component.d.ts +28 -0
  134. package/lib/core.component.d.ts +69 -0
  135. package/lib/core.module.d.ts +32 -0
  136. package/lib/core.service.d.ts +53 -0
  137. package/lib/directive/focus.d.ts +10 -0
  138. package/lib/directive/scroll.d.ts +20 -0
  139. package/lib/home/about-us.component.d.ts +15 -0
  140. package/lib/home/contact-us.component.d.ts +20 -0
  141. package/lib/home/demo.component.d.ts +25 -0
  142. package/lib/home/home.component.d.ts +33 -0
  143. package/lib/home/home.module.d.ts +13 -0
  144. package/lib/logger/logger.component.d.ts +37 -0
  145. package/lib/models/app-status.model.d.ts +4 -0
  146. package/lib/models/collection-document.model.d.ts +6 -0
  147. package/lib/models/cron-job.model.d.ts +13 -0
  148. package/lib/models/dialog.model.d.ts +18 -0
  149. package/lib/models/file.model.d.ts +9 -0
  150. package/lib/models/log-method-latency.model.d.ts +7 -0
  151. package/lib/models/navbar-main-tab.model.d.ts +14 -0
  152. package/lib/models/pagination.model.d.ts +17 -0
  153. package/lib/models/permission.model.d.ts +13 -0
  154. package/lib/models/select-data-label.model.d.ts +9 -0
  155. package/lib/models/subscription.model.d.ts +19 -0
  156. package/lib/models/support-ticket.model.d.ts +71 -0
  157. package/lib/models/user-group.model.d.ts +19 -0
  158. package/lib/models/user.model.d.ts +70 -0
  159. package/lib/offline-db.d.ts +28 -0
  160. package/lib/offline-manager.service.d.ts +23 -0
  161. package/lib/pipes/domsanitizor.pipe.d.ts +10 -0
  162. package/lib/pipes/filter.pipe.d.ts +12 -0
  163. package/lib/pipes/json-parse.pipe.d.ts +7 -0
  164. package/lib/pipes/minus-currency.pipe.d.ts +7 -0
  165. package/lib/pipes/phone.pipe.d.ts +7 -0
  166. package/lib/pipes/pipe.module.d.ts +13 -0
  167. package/lib/pipes/reverse-list.pipe.d.ts +6 -0
  168. package/lib/pipes/titlecase.pipe.d.ts +7 -0
  169. package/lib/resolveio-class.d.ts +26 -0
  170. package/lib/shared/shared.module.d.ts +16 -0
  171. package/lib/socket-manager.service.d.ts +33 -0
  172. package/lib/socket.service.d.ts +33 -0
  173. package/lib/standard-pages/contactus/contactus.component.d.ts +17 -0
  174. package/lib/standard-pages/faq/faq.component.d.ts +17 -0
  175. package/lib/standard-pages/features/features.component.d.ts +12 -0
  176. package/lib/standard-pages/home/home.component.d.ts +14 -0
  177. package/lib/standard-pages/howitwork/howitwork.component.d.ts +12 -0
  178. package/lib/standard-pages/loginsignup/loginsignup.component.d.ts +12 -0
  179. package/lib/standard-pages/pricing/pricing.component.d.ts +14 -0
  180. package/lib/standard-pages/standard-pages.module.d.ts +17 -0
  181. package/lib/support-ticket/detail/support-ticket-detail.component.d.ts +32 -0
  182. package/lib/support-ticket/edit/support-ticket-edit.component.d.ts +30 -0
  183. package/lib/support-ticket/list/support-ticket-list.component.d.ts +26 -0
  184. package/lib/support-ticket/new/support-ticket-new.component.d.ts +26 -0
  185. package/lib/support-ticket/support-ticket.component.d.ts +20 -0
  186. package/lib/support-ticket/support-ticket.module.d.ts +16 -0
  187. package/lib/support-ticket/support-ticket.routing.d.ts +3 -0
  188. package/lib/support-ticket/support-ticket.service.d.ts +9 -0
  189. package/lib/token-manager.service.d.ts +11 -0
  190. package/lib/user-settings/settings/users-settings.component.d.ts +57 -0
  191. package/lib/user-settings/user-settings.component.d.ts +20 -0
  192. package/lib/user-settings/user-settings.module.d.ts +15 -0
  193. package/lib/user-settings/user-settings.permission.d.ts +2 -0
  194. package/lib/user-settings/user-settings.routing.d.ts +3 -0
  195. package/lib/user-settings/user-settings.service.d.ts +9 -0
  196. package/lib/util/action-name.helper.d.ts +1 -0
  197. package/lib/util/aws.service.d.ts +16 -0
  198. package/lib/util/common.helper.d.ts +12 -0
  199. package/lib/util/validation.service.d.ts +85 -0
  200. package/lib/util/window-resize.service.d.ts +12 -0
  201. package/lib/util/window.service.d.ts +6 -0
  202. package/lib/widgets/alert/alert.model.d.ts +1 -0
  203. package/lib/widgets/alert/alert.service.d.ts +11 -0
  204. package/lib/widgets/chartjs/chart.component.d.ts +22 -0
  205. package/lib/widgets/chartjs/chart.module.d.ts +8 -0
  206. package/lib/widgets/collapse-table/collapse-table.component.d.ts +23 -0
  207. package/lib/widgets/collapse-table/collapse-table.module.d.ts +9 -0
  208. package/lib/widgets/data-table/data-table.component.d.ts +23 -0
  209. package/lib/widgets/data-table/data-table.model.d.ts +13 -0
  210. package/lib/widgets/data-table/data-table.module.d.ts +12 -0
  211. package/lib/widgets/date-shortcut/date-shortcut.component.d.ts +20 -0
  212. package/lib/widgets/date-shortcut/date-shortcut.module.d.ts +10 -0
  213. package/lib/widgets/dialog/dialog.confirm.content.d.ts +12 -0
  214. package/lib/widgets/dialog/dialog.error.content.d.ts +11 -0
  215. package/lib/widgets/dialog/dialog.input.content.d.ts +18 -0
  216. package/lib/widgets/dialog/dialog.login.content.d.ts +16 -0
  217. package/lib/widgets/dialog/dialog.notify.content.d.ts +11 -0
  218. package/lib/widgets/dialog/dialog.register.content.d.ts +13 -0
  219. package/lib/widgets/dialog/dialog.select-data-labels.content.d.ts +22 -0
  220. package/lib/widgets/dialog/dialog.select-datetime.content.d.ts +16 -0
  221. package/lib/widgets/dialog/dialog.service.d.ts +18 -0
  222. package/lib/widgets/file/file-upload.component.d.ts +49 -0
  223. package/lib/widgets/file/file-upload.module.d.ts +14 -0
  224. package/lib/widgets/form-button/form-button.component.d.ts +14 -0
  225. package/lib/widgets/form-button/form-button.module.d.ts +9 -0
  226. package/lib/widgets/navbar-main/navbar-main.component.d.ts +52 -0
  227. package/lib/widgets/navbar-module/navbar-module.component.d.ts +24 -0
  228. package/lib/widgets/navbar-module/navbar-module.model.d.ts +13 -0
  229. package/lib/widgets/ngx-tour-ng-bootstrap/ng-bootstrap-tour.service.d.ts +7 -0
  230. package/lib/widgets/ngx-tour-ng-bootstrap/ng-bootstrap.module.d.ts +17 -0
  231. package/lib/widgets/ngx-tour-ng-bootstrap/step-option.interface.d.ts +5 -0
  232. package/lib/widgets/ngx-tour-ng-bootstrap/tour-anchor.directive.d.ts +26 -0
  233. package/lib/widgets/ngx-tour-ng-bootstrap/tour-step-template.component.d.ts +20 -0
  234. package/lib/widgets/ngx-tour-ng-bootstrap/tour-step-template.service.d.ts +9 -0
  235. package/lib/widgets/responsive-button-group/responsive-button-group.component.d.ts +17 -0
  236. package/lib/widgets/responsive-button-group/responsive-button-group.module.d.ts +8 -0
  237. package/lib/widgets/scheduler/scheduler.component.d.ts +50 -0
  238. package/lib/widgets/scheduler/scheduler.module.d.ts +11 -0
  239. package/lib/widgets/sort-table/sort-table-header.component.d.ts +23 -0
  240. package/lib/widgets/sort-table/sort-table-ngfor.component.d.ts +17 -0
  241. package/lib/widgets/sort-table/sort-table.directive.d.ts +48 -0
  242. package/lib/widgets/sort-table/sort-table.module.d.ts +11 -0
  243. package/lib/widgets/user-role/user-role.component.d.ts +10 -0
  244. package/lib/widgets/user-role/user-role.module.d.ts +8 -0
  245. package/package.json +72 -0
  246. package/public_api.d.ts +105 -0
  247. package/resolveio-client-lib-core.d.ts +5 -0
  248. package/src/assets/css/font-awesome.css +2338 -0
  249. package/src/assets/css/home-page-layout.css +7221 -0
  250. package/src/assets/css/home-page-theme.css +1157 -0
  251. package/src/assets/css/leaflet.css +629 -0
  252. package/src/assets/css/owl.carousel.min.css +1 -0
  253. package/src/assets/css/owl.theme.min.css +1 -0
  254. package/src/assets/css/style.css +1283 -0
  255. package/src/assets/css/tablet.css +18 -0
  256. package/src/assets/css/toastr.css +192 -0
  257. package/src/assets/images/ResolveIO.png +0 -0
  258. package/src/assets/images/ResolveIO_white.png +0 -0
  259. package/src/assets/images/contactus/Contact_bnr.jpg +0 -0
  260. package/src/assets/images/contactus/cont-comp.png +0 -0
  261. package/src/assets/images/contactus/cont-mail.png +0 -0
  262. package/src/assets/images/contactus/cont-phone.png +0 -0
  263. package/src/assets/images/contactus/form-img.png +0 -0
  264. package/src/assets/images/contactus/user.png +0 -0
  265. package/src/assets/images/faq/Faq-form.png +0 -0
  266. package/src/assets/images/faq/clientlogo1.jpg +0 -0
  267. package/src/assets/images/faq/clientlogo2.jpg +0 -0
  268. package/src/assets/images/faq/clientlogo3.jpg +0 -0
  269. package/src/assets/images/faq/clientlogo4.jpg +0 -0
  270. package/src/assets/images/faq/clientlogo5.jpg +0 -0
  271. package/src/assets/images/faq/faq_banner copy.jpg +0 -0
  272. package/src/assets/images/faq/faq_banner.jpg +0 -0
  273. package/src/assets/images/faq/faqwomen.jpg +0 -0
  274. package/src/assets/images/faq/mail-input.png +0 -0
  275. package/src/assets/images/faq/user-input.png +0 -0
  276. package/src/assets/images/favicon-32x32.png +0 -0
  277. package/src/assets/images/features/future-bnr.jpg +0 -0
  278. package/src/assets/images/features/polygon.png +0 -0
  279. package/src/assets/images/home/banner-1.jpg +0 -0
  280. package/src/assets/images/home/booking.png +0 -0
  281. package/src/assets/images/home/client.jpg +0 -0
  282. package/src/assets/images/home/client2.jpg +0 -0
  283. package/src/assets/images/home/clientlogo1.jpg +0 -0
  284. package/src/assets/images/home/clientlogo2.jpg +0 -0
  285. package/src/assets/images/home/clientlogo3.jpg +0 -0
  286. package/src/assets/images/home/clientlogo4.jpg +0 -0
  287. package/src/assets/images/home/clientlogo5.jpg +0 -0
  288. package/src/assets/images/home/easy_invoicing.png +0 -0
  289. package/src/assets/images/home/inventory.png +0 -0
  290. package/src/assets/images/home/manage.png +0 -0
  291. package/src/assets/images/home/more.png +0 -0
  292. package/src/assets/images/home/order_management.png +0 -0
  293. package/src/assets/images/home/plan.png +0 -0
  294. package/src/assets/images/home-page/AjaxLoader.gif +0 -0
  295. package/src/assets/images/home-page/ResolveIO_white.png +0 -0
  296. package/src/assets/images/home-page/abt_thumb.png +0 -0
  297. package/src/assets/images/home-page/aero_icon_right_white.png +0 -0
  298. package/src/assets/images/home-page/arrow_btn.png +0 -0
  299. package/src/assets/images/home-page/banner_thumb.png +0 -0
  300. package/src/assets/images/home-page/blank.gif +0 -0
  301. package/src/assets/images/home-page/close_icon.png +0 -0
  302. package/src/assets/images/home-page/contact_bg.jpg +0 -0
  303. package/src/assets/images/home-page/email_icon.png +0 -0
  304. package/src/assets/images/home-page/fancybox_loading.gif +0 -0
  305. package/src/assets/images/home-page/fancybox_loading@2x.gif +0 -0
  306. package/src/assets/images/home-page/fancybox_overlay.png +0 -0
  307. package/src/assets/images/home-page/fancybox_sprite.png +0 -0
  308. package/src/assets/images/home-page/fancybox_sprite@2x.png +0 -0
  309. package/src/assets/images/home-page/header_center_after.png +0 -0
  310. package/src/assets/images/home-page/header_left_after.png +0 -0
  311. package/src/assets/images/home-page/home_banner_1.jpg +0 -0
  312. package/src/assets/images/home-page/logo.png +0 -0
  313. package/src/assets/images/home-page/logo_thumb_ace.png +0 -0
  314. package/src/assets/images/home-page/logo_thumb_acquire.png +0 -0
  315. package/src/assets/images/home-page/logo_thumb_chemtech.jpeg +0 -0
  316. package/src/assets/images/home-page/logo_thumb_cherokee.png +0 -0
  317. package/src/assets/images/home-page/logo_thumb_coilchem.png +0 -0
  318. package/src/assets/images/home-page/logo_thumb_dcs.png +0 -0
  319. package/src/assets/images/home-page/logo_thumb_integrity.png +0 -0
  320. package/src/assets/images/home-page/logo_thumb_intrepid.png +0 -0
  321. package/src/assets/images/home-page/logo_thumb_omt.png +0 -0
  322. package/src/assets/images/home-page/logo_thumb_quantum.png +0 -0
  323. package/src/assets/images/home-page/logo_thumb_smartchemical.png +0 -0
  324. package/src/assets/images/home-page/logo_thumb_terra.png +0 -0
  325. package/src/assets/images/home-page/logo_thumb_truechem.png +0 -0
  326. package/src/assets/images/home-page/password_icon.png +0 -0
  327. package/src/assets/images/home-page/phone_icon.png +0 -0
  328. package/src/assets/images/home-page/software_icon_1.png +0 -0
  329. package/src/assets/images/home-page/software_icon_2.png +0 -0
  330. package/src/assets/images/home-page/software_sec_bg.jpg +0 -0
  331. package/src/assets/images/home-page/software_thumb.png +0 -0
  332. package/src/assets/images/home-page/white_arrow_btn.png +0 -0
  333. package/src/assets/images/howitwork/add-booking.png +0 -0
  334. package/src/assets/images/howitwork/add-order.png +0 -0
  335. package/src/assets/images/howitwork/add-stuff.png +0 -0
  336. package/src/assets/images/howitwork/how_banner.jpg +0 -0
  337. package/src/assets/images/howitwork/howimg1.png +0 -0
  338. package/src/assets/images/howitwork/howimg2.png +0 -0
  339. package/src/assets/images/howitwork/step-check.png +0 -0
  340. package/src/assets/images/loginsignup/formimg.jpg +0 -0
  341. package/src/assets/images/loginsignup/login-logo.png +0 -0
  342. package/src/assets/images/owl.video.play.png +0 -0
  343. package/src/assets/images/pricing/Pricing_banner.jpg +0 -0
  344. package/src/assets/images/pricing/clientlogo1.jpg +0 -0
  345. package/src/assets/images/pricing/clientlogo2.jpg +0 -0
  346. package/src/assets/images/pricing/clientlogo3.jpg +0 -0
  347. package/src/assets/images/pricing/clientlogo4.jpg +0 -0
  348. package/src/assets/images/pricing/clientlogo5.jpg +0 -0
  349. package/src/assets/images/pricing/info-ico.png +0 -0
  350. package/src/assets/scss/toastr.scss +201 -0
@@ -0,0 +1,122 @@
1
+ import { Component, ViewChild } from '@angular/core';
2
+ import { SupportTicketService } from '../support-ticket.service';
3
+ import { Validators } from '@angular/forms';
4
+ import { ActivatedRoute } from '@angular/router';
5
+ import { ProviderService, BaseComponent } from '../../resolveio-class';
6
+ import { DialogService } from '../../widgets/dialog/dialog.service';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/router";
9
+ import * as i2 from "../support-ticket.service";
10
+ import * as i3 from "../../resolveio-class";
11
+ import * as i4 from "../../widgets/dialog/dialog.service";
12
+ import * as i5 from "@ng-bootstrap/ng-bootstrap";
13
+ import * as i6 from "../../widgets/form-button/form-button.component";
14
+ import * as i7 from "@angular/forms";
15
+ import * as i8 from "@angular/common";
16
+ export class SupportTicketEditComponent extends BaseComponent {
17
+ constructor(_route, _sts, _services, _ds) {
18
+ super(_services);
19
+ this._route = _route;
20
+ this._sts = _sts;
21
+ this._services = _services;
22
+ this._ds = _ds;
23
+ this.subscription$ = [];
24
+ this.disableFormButton = false;
25
+ }
26
+ ngOnInit() {
27
+ this.id = this._route.snapshot.params['id'];
28
+ this._sts.setSelectedSupportTicket(this.id.toString());
29
+ this.form = this._services._fb.group({
30
+ _id: [''],
31
+ __v: [0],
32
+ type: ['', [Validators.required]],
33
+ priority: ['', [Validators.required]],
34
+ issue: ['', [Validators.required]],
35
+ support_ticket_number: [null],
36
+ support_ticket_number_string: [null],
37
+ status: ['Opened'],
38
+ substatus: ['New'],
39
+ client: [''],
40
+ id_client: ['', [Validators.required]],
41
+ messages: [[]],
42
+ date_created: [null],
43
+ date_created_string: [''],
44
+ id_user_created: [this._services._account.getUser()._id],
45
+ user_created: [this._services._account.getUser().fullname],
46
+ billable: [false, [Validators.required]],
47
+ date_investigation: [null],
48
+ date_closed: [null],
49
+ files: [[]],
50
+ current_watchers: [[]],
51
+ client_user: [null],
52
+ users_assigned: [[]],
53
+ bill_description: [''],
54
+ tasks: [[]],
55
+ notes: [[]],
56
+ difficulty: [1]
57
+ });
58
+ this._services._socket.call('supportGetSupportTicketWithId', this.id, (err, res) => {
59
+ if (!res) {
60
+ this._services._router.navigateByUrl('/support-ticket/list');
61
+ this._ds.error('Could not find support ticket');
62
+ return;
63
+ }
64
+ this.data = res;
65
+ this.loadForm();
66
+ });
67
+ }
68
+ ngOnDestroy() {
69
+ this.subscription$.forEach(sub => {
70
+ sub.unsubscribe();
71
+ });
72
+ }
73
+ loadForm() {
74
+ this.form.patchValue(this.data);
75
+ }
76
+ onTypeChange() {
77
+ if (this.form.controls.type.value === 'System Impairment') {
78
+ this.form.controls.priority.setValue('High');
79
+ this.form.controls.billable.setValue(false);
80
+ }
81
+ else if (this.form.controls.type.value === 'Request New Feature') {
82
+ this.form.controls.priority.setValue('Low');
83
+ this.form.controls.billable.setValue(true);
84
+ }
85
+ else if (this.form.controls.type.value === 'General Inquery') {
86
+ this.form.controls.priority.setValue('Low');
87
+ this.form.controls.billable.setValue(true);
88
+ }
89
+ else {
90
+ this.form.controls.priority.setValue('');
91
+ this.form.controls.billable.setValue(false);
92
+ }
93
+ }
94
+ submitForm(form) {
95
+ this.disableFormButton = true;
96
+ this._services._socket.call('supportUpdateSupportTicket', this.form.value, (err, res) => {
97
+ if (res) {
98
+ this._services._alert.setAlert('info', 'Editing support ticket, please wait');
99
+ this._services._router.navigateByUrl('/support-ticket/detail/' + this.id);
100
+ }
101
+ else {
102
+ this._ds.error('Could not edit support ticket');
103
+ this._services._socket.call('insertErrorLog', 'Support-ticket-edit - update support ticket', [
104
+ this.form.value, err
105
+ ]);
106
+ }
107
+ });
108
+ }
109
+ }
110
+ SupportTicketEditComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: SupportTicketEditComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.SupportTicketService }, { token: i3.ProviderService }, { token: i4.DialogService }], target: i0.ɵɵFactoryTarget.Component });
111
+ SupportTicketEditComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: SupportTicketEditComponent, selector: "ng-component", providers: [ProviderService], viewQueries: [{ propertyName: "fileUpload", first: true, predicate: ["fileUpload"], descendants: true, static: true }, { propertyName: "selectType", first: true, predicate: ["selectType"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<style>\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n</style>\n\n<div class=\"col-lg-12\">\n <form [formGroup]=\"form\" novalidate (ngSubmit)=\"submitForm(form)\">\n <div class=\"row\">\n <ngb-accordion #acc=\"ngbAccordion\" activeIds=\"supportTicketInfo\">\n <ngb-panel id=\"supportTicketInfo\">\n <ng-template ngbPanelTitle>\n <div> \n <label class=\"label-accordion\">Support Ticket Info</label>\n <i *ngIf=\"!acc.activeIds.includes('supportTicketInfo')\" class=\"fa fa-plus pull-right\" aria-hidden=\"true\"></i>\n <i *ngIf=\"acc.activeIds.includes('supportTicketInfo')\" class=\"fa fa-minus pull-right\" aria-hidden=\"true\"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"form-group\">\n <label class=\"form-control-label\">Support Ticket Type</label>\n <em *ngIf=\"!form.controls.type.valid\">- Required</em>\n <select [ngClass]=\"['form-control', form.controls.type.valid ? 'is-valid' : 'is-invalid']\" formControlName=\"type\" (change)=\"onTypeChange()\">\n <option value=\"\">Select Type</option>\n <option value=\"General Inquery\">General Inquery</option>\n <option value=\"System Impairment\">System Impairment</option>\n <option value=\"Request New Feature\">Request New Feature</option>\n </select>\n <div class=\"invalid-feedback\" *ngIf=\"!form.controls.type.valid\">Type is required</div>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-lg-12\">\n <div class=\"form-group\">\n <label class=\"form-control-label\">Problem Description</label>\n <em *ngIf=\"!form.controls.issue.valid\">- Required</em>\n <textarea formControlName=\"issue\" [ngClass]=\"['form-control', form.controls.issue.valid ? 'is-valid' : 'is-invalid' ]\" [rows]=\"5\" style=\"overflow-x: hidden\"></textarea>\n <div class=\"invalid-feedback\" *ngIf=\"!form.controls.issue.valid\">Problem Description is required</div>\n </div>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n </ngb-accordion>\n </div>\n <div class=\"row\" style=\"padding-top: 15px;\">\n <form-button [form]=\"form\" [disabled]=\"disableFormButton\"></form-button>\n </div>\n </form>\n</div>\n ", styles: ["\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n"], components: [{ type: i5.NgbAccordion, selector: "ngb-accordion", inputs: ["animation", "activeIds", "closeOthers", "destroyOnHide", "type"], outputs: ["panelChange", "shown", "hidden"], exportAs: ["ngbAccordion"] }, { type: i6.FormButtonComponent, selector: "form-button", inputs: ["form", "disabled"] }], directives: [{ type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.NgbPanel, selector: "ngb-panel", inputs: ["disabled", "id", "title", "type", "cardClass"], outputs: ["shown", "hidden"] }, { type: i5.NgbPanelTitle, selector: "ng-template[ngbPanelTitle]" }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgbPanelContent, selector: "ng-template[ngbPanelContent]" }, { type: i7.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i7.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }] });
112
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: SupportTicketEditComponent, decorators: [{
113
+ type: Component,
114
+ args: [{ providers: [ProviderService], template: "<style>\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n</style>\n\n<div class=\"col-lg-12\">\n <form [formGroup]=\"form\" novalidate (ngSubmit)=\"submitForm(form)\">\n <div class=\"row\">\n <ngb-accordion #acc=\"ngbAccordion\" activeIds=\"supportTicketInfo\">\n <ngb-panel id=\"supportTicketInfo\">\n <ng-template ngbPanelTitle>\n <div> \n <label class=\"label-accordion\">Support Ticket Info</label>\n <i *ngIf=\"!acc.activeIds.includes('supportTicketInfo')\" class=\"fa fa-plus pull-right\" aria-hidden=\"true\"></i>\n <i *ngIf=\"acc.activeIds.includes('supportTicketInfo')\" class=\"fa fa-minus pull-right\" aria-hidden=\"true\"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"form-group\">\n <label class=\"form-control-label\">Support Ticket Type</label>\n <em *ngIf=\"!form.controls.type.valid\">- Required</em>\n <select [ngClass]=\"['form-control', form.controls.type.valid ? 'is-valid' : 'is-invalid']\" formControlName=\"type\" (change)=\"onTypeChange()\">\n <option value=\"\">Select Type</option>\n <option value=\"General Inquery\">General Inquery</option>\n <option value=\"System Impairment\">System Impairment</option>\n <option value=\"Request New Feature\">Request New Feature</option>\n </select>\n <div class=\"invalid-feedback\" *ngIf=\"!form.controls.type.valid\">Type is required</div>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-lg-12\">\n <div class=\"form-group\">\n <label class=\"form-control-label\">Problem Description</label>\n <em *ngIf=\"!form.controls.issue.valid\">- Required</em>\n <textarea formControlName=\"issue\" [ngClass]=\"['form-control', form.controls.issue.valid ? 'is-valid' : 'is-invalid' ]\" [rows]=\"5\" style=\"overflow-x: hidden\"></textarea>\n <div class=\"invalid-feedback\" *ngIf=\"!form.controls.issue.valid\">Problem Description is required</div>\n </div>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n </ngb-accordion>\n </div>\n <div class=\"row\" style=\"padding-top: 15px;\">\n <form-button [form]=\"form\" [disabled]=\"disableFormButton\"></form-button>\n </div>\n </form>\n</div>\n " }]
115
+ }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.SupportTicketService }, { type: i3.ProviderService }, { type: i4.DialogService }]; }, propDecorators: { fileUpload: [{
116
+ type: ViewChild,
117
+ args: ['fileUpload', { static: true }]
118
+ }], selectType: [{
119
+ type: ViewChild,
120
+ args: ['selectType', { static: true }]
121
+ }] } });
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydC10aWNrZXQtZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvc3VwcG9ydC10aWNrZXQvZWRpdC9zdXBwb3J0LXRpY2tldC1lZGl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9zdXBwb3J0LXRpY2tldC9lZGl0L3N1cHBvcnQtdGlja2V0LWVkaXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7Ozs7Ozs7QUFPcEUsTUFBTSxPQUFPLDBCQUEyQixTQUFRLGFBQWE7SUFjNUQsWUFBb0IsTUFBc0IsRUFBVSxJQUEwQixFQUFVLFNBQTBCLEVBQVUsR0FBa0I7UUFDN0ksS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBREUsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFzQjtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBZTtRQU45SSxrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFJbkMsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO0lBSTFCLENBQUM7SUFFRCxRQUFRO1FBQ1AsSUFBSSxDQUFDLEVBQUUs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SUFFRCxVQUFVLENBQUMsSUFBSTtRQUNkLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFFOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLDRCQUE0QixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ3ZGLElBQUksR0FBRyxFQUFFO2dCQUNSLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUscUNBQXFDLENBQUMsQ0FBQztnQkFDOUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUMxRTtpQkFDSTtnQkFDSixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO2dCQUNoRCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsNkNBQTZDLEVBQUU7b0JBQzVGLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUc7aUJBQ3BCLENBQUMsQ0FBQzthQUNIO1FBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOzt1SEE3R1csMEJBQTBCOzJHQUExQiwwQkFBMEIsdUNBSjNCLENBQUMsZUFBZSxDQUFDLGtSQ1Y3Qiw2MkdBK0RJOzJGRGpEUywwQkFBMEI7a0JBTHRDLFNBQVM7Z0NBQ0UsQ0FBQyxlQUFlLENBQUM7a01BTWMsVUFBVTtzQkFBbkQsU0FBUzt1QkFBRSxZQUFZLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUNFLFVBQVU7c0JBQW5ELFNBQVM7dUJBQUUsWUFBWSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3VwcG9ydFRpY2tldFNlcnZpY2UgfSBmcm9tICcuLi9zdXBwb3J0LXRpY2tldC5zZXJ2aWNlJztcbmltcG9ydCB7IFZhbGlkYXRvcnMsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUHJvdmlkZXJTZXJ2aWNlLCBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcmVzb2x2ZWlvLWNsYXNzJztcbmltcG9ydCB7IFN1cHBvcnRUaWNrZXRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zdXBwb3J0LXRpY2tldC5tb2RlbCc7XG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vd2lkZ2V0cy9kaWFsb2cvZGlhbG9nLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcblx0cHJvdmlkZXJzOiBbUHJvdmlkZXJTZXJ2aWNlXSxcblx0dGVtcGxhdGVVcmw6ICcuL3N1cHBvcnQtdGlja2V0LWVkaXQuY29tcG9uZW50Lmh0bWwnXG59KVxuXG5leHBvcnQgY2xhc3MgU3VwcG9ydFRpY2tldEVkaXRDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kgeyBcblxuXHRAVmlld0NoaWxkICgnZmlsZVVwbG9hZCcsIHtzdGF0aWM6IHRydWV9KSBmaWxlVXBsb2FkO1xuXHRAVmlld0NoaWxkICgnc2VsZWN0VHlwZScsIHtzdGF0aWM6IHRydWV9KSBzZWxlY3RUeXBlO1xuXG5cdGlkOiBzdHJpbmc7XG5cdGRhdGE6IFN1cHBvcnRUaWNrZXRNb2RlbDtcblx0XG5cdHN1YnNjcmlwdGlvbiQ6IFN1YnNjcmlwdGlvbltdID0gW107XG5cblx0Zm9ybTogRm9ybUdyb3VwO1xuXG5cdGRpc2FibGVGb3JtQnV0dG9uID0gZmFsc2U7XG5cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBfcm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcml2YXRlIF9zdHM6IFN1cHBvcnRUaWNrZXRTZXJ2aWNlLCBwcml2YXRlIF9zZXJ2aWNlczogUHJvdmlkZXJTZXJ2aWNlLCBwcml2YXRlIF9kczogRGlhbG9nU2VydmljZSkge1xuXHRcdHN1cGVyKF9zZXJ2aWNlcyk7XG5cdH1cblxuXHRuZ09uSW5pdCgpIHtcblx0XHR0aGlzLmlkID0gdGhpcy5fcm91dGUuc25hcHNob3QucGFyYW1zWydpZCddO1xuXHRcdHRoaXMuX3N0cy5zZXRTZWxlY3RlZFN1cHBvcnRUaWNrZXQodGhpcy5pZC50b1N0cmluZygpKTtcblxuXHRcdHRoaXMuZm9ybSA9IHRoaXMuX3NlcnZpY2VzLl9mYi5ncm91cCh7XG5cdFx0XHRfaWQ6IFsnJ10sXG5cdFx0XHRfX3Y6IFswXSxcblx0XHRcdHR5cGU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcblx0XHRcdHByaW9yaXR5OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG5cdFx0XHRpc3N1ZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuXHRcdFx0c3VwcG9ydF90aWNrZXRfbnVtYmVyOiBbbnVsbF0sXG5cdFx0XHRzdXBwb3J0X3RpY2tldF9udW1iZXJfc3RyaW5nOiBbbnVsbF0sXG5cdFx0XHRzdGF0dXM6IFsnT3BlbmVkJ10sXG5cdFx0XHRzdWJzdGF0dXM6IFsnTmV3J10sXG5cdFx0XHRjbGllbnQ6IFsnJ10sXG5cdFx0XHRpZF9jbGllbnQ6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcblx0XHRcdG1lc3NhZ2VzOiBbW11dLFxuXHRcdFx0ZGF0ZV9jcmVhdGVkOiBbbnVsbF0sXG5cdFx0XHRkYXRlX2NyZWF0ZWRfc3RyaW5nOiBbJyddLFxuXHRcdFx0aWRfdXNlcl9jcmVhdGVkOiBbdGhpcy5fc2VydmljZXMuX2FjY291bnQuZ2V0VXNlcigpLl9pZF0sXG5cdFx0XHR1c2VyX2NyZWF0ZWQ6IFt0aGlzLl9zZXJ2aWNlcy5fYWNjb3VudC5nZXRVc2VyKCkuZnVsbG5hbWVdLFxuXHRcdFx0YmlsbGFibGU6IFtmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcblx0XHRcdGRhdGVfaW52ZXN0aWdhdGlvbjogW251bGxdLFxuXHRcdFx0ZGF0ZV9jbG9zZWQ6IFtudWxsXSxcblx0XHRcdGZpbGVzOiBbW11dLFxuXHRcdFx0Y3VycmVudF93YXRjaGVyczogW1tdXSxcblx0XHRcdGNsaWVudF91c2VyOiBbbnVsbF0sXG5cdFx0XHR1c2Vyc19hc3NpZ25lZDogW1tdXSxcblx0XHRcdGJpbGxfZGVzY3JpcHRpb246IFsnJ10sXG5cdFx0XHR0YXNrczogW1tdXSxcblx0XHRcdG5vdGVzOiBbW11dLFxuXHRcdFx0ZGlmZmljdWx0eTogWzFdXG5cdFx0fSk7XG5cblx0XHR0aGlzLl9zZXJ2aWNlcy5fc29ja2V0LmNhbGwoJ3N1cHBvcnRHZXRTdXBwb3J0VGlja2V0V2l0aElkJywgdGhpcy5pZCwgKGVyciwgcmVzKSA9PiB7XG5cdFx0XHRpZiAoIXJlcykge1xuXHRcdFx0XHR0aGlzLl9zZXJ2aWNlcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoJy9zdXBwb3J0LXRpY2tldC9saXN0Jyk7XG5cdFx0XHRcdHRoaXMuX2RzLmVycm9yKCdDb3VsZCBub3QgZmluZCBzdXBwb3J0IHRpY2tldCcpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuZGF0YSA9IHJlcztcblxuXHRcdFx0dGhpcy5sb2FkRm9ybSgpO1xuXHRcdH0pO1xuXHR9XG5cblx0bmdPbkRlc3Ryb3koKSB7XG5cdFx0dGhpcy5zdWJzY3JpcHRpb24kLmZvckVhY2goc3ViID0+IHtcblx0XHRcdHN1Yi51bnN1YnNjcmliZSgpO1xuXHRcdH0pO1xuXHR9XG5cblx0bG9hZEZvcm0oKSB7XG5cdFx0dGhpcy5mb3JtLnBhdGNoVmFsdWUodGhpcy5kYXRhKTtcblx0fVxuXG5cdG9uVHlwZUNoYW5nZSgpIHtcblx0XHRpZiAodGhpcy5mb3JtLmNvbnRyb2xzLnR5cGUudmFsdWUgPT09ICdTeXN0ZW0gSW1wYWlybWVudCcpIHtcblx0XHRcdHRoaXMuZm9ybS5jb250cm9scy5wcmlvcml0eS5zZXRWYWx1ZSgnSGlnaCcpO1xuXHRcdFx0dGhpcy5mb3JtLmNvbnRyb2xzLmJpbGxhYmxlLnNldFZhbHVlKGZhbHNlKTtcblx0XHR9XG5cdFx0ZWxzZSBpZiAodGhpcy5mb3JtLmNvbnRyb2xzLnR5cGUudmFsdWUgPT09ICdSZXF1ZXN0IE5ldyBGZWF0dXJlJykge1xuXHRcdFx0dGhpcy5mb3JtLmNvbnRyb2xzLnByaW9yaXR5LnNldFZhbHVlKCdMb3cnKTtcblx0XHRcdHRoaXMuZm9ybS5jb250cm9scy5iaWxsYWJsZS5zZXRWYWx1ZSh0cnVlKTtcblx0XHR9XG5cdFx0ZWxzZSBpZiAodGhpcy5mb3JtLmNvbnRyb2xzLnR5cGUudmFsdWUgPT09ICdHZW5lcmFsIElucXVlcnknKSB7XG5cdFx0XHR0aGlzLmZvcm0uY29udHJvbHMucHJpb3JpdHkuc2V0VmFsdWUoJ0xvdycpO1xuXHRcdFx0dGhpcy5mb3JtLmNvbnRyb2xzLmJpbGxhYmxlLnNldFZhbHVlKHRydWUpO1xuXHRcdH1cblx0XHRlbHNlIHtcblx0XHRcdHRoaXMuZm9ybS5jb250cm9scy5wcmlvcml0eS5zZXRWYWx1ZSgnJyk7XG5cdFx0XHR0aGlzLmZvcm0uY29udHJvbHMuYmlsbGFibGUuc2V0VmFsdWUoZmFsc2UpO1xuXHRcdH1cblx0fVxuXG5cdHN1Ym1pdEZvcm0oZm9ybSkge1xuXHRcdHRoaXMuZGlzYWJsZUZvcm1CdXR0b24gPSB0cnVlO1xuXG5cdFx0dGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsKCdzdXBwb3J0VXBkYXRlU3VwcG9ydFRpY2tldCcsIHRoaXMuZm9ybS52YWx1ZSwgKGVyciwgcmVzKSA9PiB7XG5cdFx0XHRpZiAocmVzKSB7XG5cdFx0XHRcdHRoaXMuX3NlcnZpY2VzLl9hbGVydC5zZXRBbGVydCgnaW5mbycsICdFZGl0aW5nIHN1cHBvcnQgdGlja2V0LCBwbGVhc2Ugd2FpdCcpO1xuXHRcdFx0XHR0aGlzLl9zZXJ2aWNlcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoJy9zdXBwb3J0LXRpY2tldC9kZXRhaWwvJyArIHRoaXMuaWQpO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSB7XG5cdFx0XHRcdHRoaXMuX2RzLmVycm9yKCdDb3VsZCBub3QgZWRpdCBzdXBwb3J0IHRpY2tldCcpO1xuXHRcdFx0XHR0aGlzLl9zZXJ2aWNlcy5fc29ja2V0LmNhbGwoJ2luc2VydEVycm9yTG9nJywgJ1N1cHBvcnQtdGlja2V0LWVkaXQgLSB1cGRhdGUgc3VwcG9ydCB0aWNrZXQnLCBbXG5cdFx0XHRcdFx0dGhpcy5mb3JtLnZhbHVlLCBlcnJcblx0XHRcdFx0XSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cbn1cbiIsIjxzdHlsZT5cbiAgICAubGFiZWwtYWNjb3JkaW9uIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIGNvbG9yOiBibGFjaztcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMHB4O1xuICAgIH1cblxuICAgIC5mYS1wbHVzIHtcbiAgICAgICAgY29sb3I6IGJsYWNrO1xuICAgIH1cblxuICAgIC5mYS1taW51cyB7XG4gICAgICAgIGNvbG9yOiBibGFjaztcbiAgICB9XG48L3N0eWxlPlxuXG48ZGl2IGNsYXNzPVwiY29sLWxnLTEyXCI+XG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgbm92YWxpZGF0ZSAobmdTdWJtaXQpPVwic3VibWl0Rm9ybShmb3JtKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICA8bmdiLWFjY29yZGlvbiAjYWNjPVwibmdiQWNjb3JkaW9uXCIgYWN0aXZlSWRzPVwic3VwcG9ydFRpY2tldEluZm9cIj5cbiAgICAgICAgICAgICAgICA8bmdiLXBhbmVsIGlkPVwic3VwcG9ydFRpY2tldEluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYlBhbmVsVGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbC1hY2NvcmRpb25cIj5TdXBwb3J0IFRpY2tldCBJbmZvPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIiFhY2MuYWN0aXZlSWRzLmluY2x1ZGVzKCdzdXBwb3J0VGlja2V0SW5mbycpXCIgY2xhc3M9XCJmYSBmYS1wbHVzIHB1bGwtcmlnaHRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJhY2MuYWN0aXZlSWRzLmluY2x1ZGVzKCdzdXBwb3J0VGlja2V0SW5mbycpXCIgY2xhc3M9XCJmYSBmYS1taW51cyBwdWxsLXJpZ2h0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JQYW5lbENvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jb250cm9sLWxhYmVsXCI+U3VwcG9ydCBUaWNrZXQgVHlwZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gKm5nSWY9XCIhZm9ybS5jb250cm9scy50eXBlLnZhbGlkXCI+LSBSZXF1aXJlZDwvZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBbbmdDbGFzc109XCJbJ2Zvcm0tY29udHJvbCcsIGZvcm0uY29udHJvbHMudHlwZS52YWxpZCA/ICdpcy12YWxpZCcgOiAnaXMtaW52YWxpZCddXCIgZm9ybUNvbnRyb2xOYW1lPVwidHlwZVwiIChjaGFuZ2UpPVwib25UeXBlQ2hhbmdlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlNlbGVjdCBUeXBlPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJHZW5lcmFsIElucXVlcnlcIj5HZW5lcmFsIElucXVlcnk8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlN5c3RlbSBJbXBhaXJtZW50XCI+U3lzdGVtIEltcGFpcm1lbnQ8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlJlcXVlc3QgTmV3IEZlYXR1cmVcIj5SZXF1ZXN0IE5ldyBGZWF0dXJlPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwiIWZvcm0uY29udHJvbHMudHlwZS52YWxpZFwiPlR5cGUgaXMgcmVxdWlyZWQ8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wtbGFiZWxcIj5Qcm9ibGVtIERlc2NyaXB0aW9uPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSAqbmdJZj1cIiFmb3JtLmNvbnRyb2xzLmlzc3VlLnZhbGlkXCI+LSBSZXF1aXJlZDwvZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgZm9ybUNvbnRyb2xOYW1lPVwiaXNzdWVcIiBbbmdDbGFzc109XCJbJ2Zvcm0tY29udHJvbCcsIGZvcm0uY29udHJvbHMuaXNzdWUudmFsaWQgPyAnaXMtdmFsaWQnIDogJ2lzLWludmFsaWQnIF1cIiBbcm93c109XCI1XCIgc3R5bGU9XCJvdmVyZmxvdy14OiBoaWRkZW5cIj48L3RleHRhcmVhPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cIiFmb3JtLmNvbnRyb2xzLmlzc3VlLnZhbGlkXCI+UHJvYmxlbSBEZXNjcmlwdGlvbiBpcyByZXF1aXJlZDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvbmdiLXBhbmVsPlxuICAgICAgICAgICAgPC9uZ2ItYWNjb3JkaW9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwicGFkZGluZy10b3A6IDE1cHg7XCI+XG4gICAgICAgICAgICA8Zm9ybS1idXR0b24gW2Zvcm1dPVwiZm9ybVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlRm9ybUJ1dHRvblwiPjwvZm9ybS1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbjwvZGl2PlxuICAgICJdfQ==
@@ -0,0 +1,137 @@
1
+ import { Component } from '@angular/core';
2
+ import { ActivatedRoute } from '@angular/router';
3
+ import { SupportTicketService } from '../support-ticket.service';
4
+ import { ProviderService, BaseComponent } from '../../resolveio-class';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../support-ticket.service";
7
+ import * as i2 from "@angular/router";
8
+ import * as i3 from "../../resolveio-class";
9
+ import * as i4 from "../../widgets/data-table/data-table.component";
10
+ import * as i5 from "@angular/forms";
11
+ export class SupportTicketListComponent extends BaseComponent {
12
+ constructor(_sts, _route, _services) {
13
+ super(_services);
14
+ this._sts = _sts;
15
+ this._route = _route;
16
+ this._services = _services;
17
+ this.subscription$ = [];
18
+ this.columns = [
19
+ { name: 'Support Ticket #', data: 'support_ticket_number' },
20
+ { name: 'Date Created', data: 'date_created' },
21
+ { name: 'Type', data: 'type' },
22
+ { name: 'Issue', data: 'issue' },
23
+ { name: 'Status', data: 'status' },
24
+ { name: 'Created By', data: 'user_created' }
25
+ ];
26
+ this.tableData = {
27
+ searchString: '',
28
+ entriesPerPage: '25',
29
+ pageNum: 1,
30
+ sortColumn: '',
31
+ sortOrder: 'desc',
32
+ filters: {
33
+ status: 'Opened',
34
+ substatus: 'All'
35
+ }
36
+ };
37
+ this.totalItems = 1000;
38
+ }
39
+ ngOnInit() {
40
+ this._sts.setSelectedSupportTicket('0');
41
+ this.route$ = this._route.queryParams.subscribe(() => {
42
+ let keys = Object.keys(this.tableData);
43
+ let filterKeys = Object.keys(this.tableData.filters);
44
+ if (this._route.snapshot.queryParamMap.keys.length) {
45
+ keys.splice(keys.indexOf('filters', 1));
46
+ filterKeys.forEach(key => {
47
+ keys.push('filters.' + key);
48
+ });
49
+ keys.filter(a => a in this._route.snapshot.queryParams).forEach(key => {
50
+ if (key.includes('filters.')) {
51
+ let tmpKey = key;
52
+ tmpKey = tmpKey.replace('filters.', '');
53
+ this.tableData.filters[tmpKey] = this._route.snapshot.queryParams[key];
54
+ }
55
+ else {
56
+ this.tableData[key] = this._route.snapshot.queryParams[key];
57
+ }
58
+ });
59
+ }
60
+ else {
61
+ this.tableData = {
62
+ searchString: '',
63
+ entriesPerPage: '25',
64
+ pageNum: 1,
65
+ sortColumn: '',
66
+ sortOrder: 'desc',
67
+ filters: {
68
+ status: 'Opened',
69
+ substatus: 'All'
70
+ }
71
+ };
72
+ }
73
+ this.queryData();
74
+ });
75
+ }
76
+ ngOnDestroy() {
77
+ this.subscription$.forEach(sub => {
78
+ sub.unsubscribe();
79
+ });
80
+ this.route$.unsubscribe();
81
+ }
82
+ onQueryDataChanged() {
83
+ let queryParams = {};
84
+ let keys = Object.keys(this.tableData);
85
+ let filterKeys = Object.keys(this.tableData.filters);
86
+ keys.forEach(key => {
87
+ if (key === 'filters') {
88
+ filterKeys.forEach(filterKey => {
89
+ queryParams['filters.' + filterKey] = this.tableData.filters[filterKey];
90
+ });
91
+ }
92
+ else {
93
+ queryParams[key] = this.tableData[key];
94
+ }
95
+ });
96
+ this._services._router.navigate(['/support-ticket/list'], { queryParams });
97
+ }
98
+ queryData() {
99
+ let fields = {};
100
+ this.columns.forEach(col => {
101
+ fields[col.data] = 1;
102
+ });
103
+ const options = {
104
+ limit: parseInt(this.tableData.entriesPerPage),
105
+ skip: (this.tableData.pageNum - 1) * parseInt(this.tableData.entriesPerPage),
106
+ sort: this.tableData.sortColumn ? { [this.tableData.sortColumn]: (this.tableData.sortOrder === 'asc' ? 1 : -1) } : { name: 1 },
107
+ fields: fields
108
+ };
109
+ let filters = [{ prop: 'client', data: this._services._app.client.getValue() }];
110
+ if (this.tableData.filters['status'] !== 'All') {
111
+ filters.push({ prop: 'status', data: this.tableData.filters['status'] });
112
+ }
113
+ if (this.tableData.filters['substatus'] !== 'All') {
114
+ filters.push({ prop: 'substatus', data: this.tableData.filters['substatus'] });
115
+ }
116
+ this._services._socket.call('supportticketsWithOptions', options, this.tableData.searchString, filters, (err, res) => {
117
+ this.support_tickets = res;
118
+ });
119
+ this._services._socket.call('supportticketCount', this.tableData.searchString, filters, (err, res) => {
120
+ if (err) {
121
+ this._services._socket.call('insertErrorLog', 'countQuery - resolveioSupportList', [
122
+ err
123
+ ]);
124
+ }
125
+ else {
126
+ this.totalItems = res;
127
+ }
128
+ });
129
+ }
130
+ }
131
+ SupportTicketListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: SupportTicketListComponent, deps: [{ token: i1.SupportTicketService }, { token: i2.ActivatedRoute }, { token: i3.ProviderService }], target: i0.ɵɵFactoryTarget.Component });
132
+ SupportTicketListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: SupportTicketListComponent, selector: "ng-component", providers: [ProviderService], usesInheritance: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-sm-6\">\n <b>Filter Support Ticket By Status</b><br>\n <select class=\"form-control\" [(ngModel)]=\"tableData.filters['status']\" (change)=\"onQueryDataChanged()\" tourAnchor=\"supportListFilter\">\n <option value=\"All\">All</option>\n <option value=\"Opened\">Opened</option>\n <option value=\"Resolved\">Resolved</option>\n </select>\n </div>\n <div class=\"col-sm-6\">\n <b>Filter Support Ticket By Sub-Status</b><br>\n <select class=\"form-control\" [(ngModel)]=\"tableData.filters['substatus']\" (change)=\"onQueryDataChanged()\">\n <option value=\"All\">All</option>\n <option value=\"Investigating\">Investigating</option>\n <option value=\"Awaiting Customer Interaction\">Awaiting Customer Interaction</option>\n <option value=\"Resolved\">Resolved</option>\n </select>\n </div>\n</div>\n<div class=\"row\">\n <div class=\"col-md-12\">\n <div style=\"padding-left: 15px; padding-right: 15px; padding-top: 15px;\">\n <data-table #dataTable\n [urlClick]=\"'/support-ticket/detail/'\"\n [columns]=\"columns\"\n [data]=\"support_tickets\"\n [collapseSize]=\"990\"\n [searchTitle]=\"'Search For Support Ticket...'\"\n [totalItems]=\"totalItems\"\n (onChangeTableData)=\"onQueryDataChanged()\"\n [tableData]=\"tableData\"\n tourAnchor=\"supportListDatatable\">\n </data-table>\n </div>\n </div>\n</div>\n ", components: [{ type: i4.DatatableComponent, selector: "data-table", inputs: ["urlClick", "columns", "data", "collapseSize", "searchTitle", "totalItems", "tableData"], outputs: ["onChangeTableData"] }], directives: [{ type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }] });
133
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: SupportTicketListComponent, decorators: [{
134
+ type: Component,
135
+ args: [{ providers: [ProviderService], template: "<div class=\"row\">\n <div class=\"col-sm-6\">\n <b>Filter Support Ticket By Status</b><br>\n <select class=\"form-control\" [(ngModel)]=\"tableData.filters['status']\" (change)=\"onQueryDataChanged()\" tourAnchor=\"supportListFilter\">\n <option value=\"All\">All</option>\n <option value=\"Opened\">Opened</option>\n <option value=\"Resolved\">Resolved</option>\n </select>\n </div>\n <div class=\"col-sm-6\">\n <b>Filter Support Ticket By Sub-Status</b><br>\n <select class=\"form-control\" [(ngModel)]=\"tableData.filters['substatus']\" (change)=\"onQueryDataChanged()\">\n <option value=\"All\">All</option>\n <option value=\"Investigating\">Investigating</option>\n <option value=\"Awaiting Customer Interaction\">Awaiting Customer Interaction</option>\n <option value=\"Resolved\">Resolved</option>\n </select>\n </div>\n</div>\n<div class=\"row\">\n <div class=\"col-md-12\">\n <div style=\"padding-left: 15px; padding-right: 15px; padding-top: 15px;\">\n <data-table #dataTable\n [urlClick]=\"'/support-ticket/detail/'\"\n [columns]=\"columns\"\n [data]=\"support_tickets\"\n [collapseSize]=\"990\"\n [searchTitle]=\"'Search For Support Ticket...'\"\n [totalItems]=\"totalItems\"\n (onChangeTableData)=\"onQueryDataChanged()\"\n [tableData]=\"tableData\"\n tourAnchor=\"supportListDatatable\">\n </data-table>\n </div>\n </div>\n</div>\n " }]
136
+ }], ctorParameters: function () { return [{ type: i1.SupportTicketService }, { type: i2.ActivatedRoute }, { type: i3.ProviderService }]; } });
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydC10aWNrZXQtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvc3VwcG9ydC10aWNrZXQvbGlzdC9zdXBwb3J0LXRpY2tldC1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9zdXBwb3J0LXRpY2tldC9saXN0L3N1cHBvcnQtdGlja2V0LWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR2pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7QUFRdkUsTUFBTSxPQUFPLDBCQUEyQixTQUFRLGFBQWE7SUErQjVELFlBQW9CLElBQTBCLEVBQVUsTUFBc0IsRUFBVSxTQUEwQjtRQUNqSCxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFERSxTQUFJLEdBQUosSUFBSSxDQUFzQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUF6QmxILGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUVuQyxZQUFPLEdBQTJCO1lBQ2pDLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBQztZQUMxRCxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBQztZQUM3QyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtZQUM5QixFQUFFLElBQUksRUFBRSxPQUFPLEVB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SSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUM7WUFDOUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDO1lBQzVFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7WUFDL0gsTUFBTSxFQUFFLE1BQU07U0FDZCxDQUFDO1FBRUYsSUFBSSxPQUFPLEdBQUcsQ0FBQyxFQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBQyxDQUFDLENBQUM7UUFDOUUsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxLQUFLLEVBQUU7WUFDL0MsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFDLENBQUMsQ0FBQztTQUN2RTtRQUNELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssS0FBSyxFQUFFO1lBQ2xELE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBQyxDQUFDLENBQUM7U0FDN0U7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNwSCxJQUFJLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDcEcsSUFBSSxHQUFHLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLG1DQUFtQyxFQUFFO29CQUNsRixHQUFHO2lCQUNILENBQUMsQ0FBQzthQUNIO2lCQUNJO2dCQUNKLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO2FBQ3RCO1FBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOzt1SEFoSlcsMEJBQTBCOzJHQUExQiwwQkFBMEIsdUNBSDNCLENBQUMsZUFBZSxDQUFDLGlEQ1Y3Qiw0bkRBb0NJOzJGRHZCUywwQkFBMEI7a0JBSnRDLFNBQVM7Z0NBQ0UsQ0FBQyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdXBwb3J0VGlja2V0U2VydmljZSB9IGZyb20gJy4uL3N1cHBvcnQtdGlja2V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEYXRhdGFibGVNb2RlbCwgRGF0YXRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vLi4vd2lkZ2V0cy9kYXRhLXRhYmxlL2RhdGEtdGFibGUubW9kZWwnO1xuaW1wb3J0IHsgUHJvdmlkZXJTZXJ2aWNlLCBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcmVzb2x2ZWlvLWNsYXNzJztcbmltcG9ydCB7IFN1cHBvcnRUaWNrZXRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zdXBwb3J0LXRpY2tldC5tb2RlbCc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uT3B0aW9ucyB9IGZyb20gJy4uLy4uL21vZGVscy9wYWdpbmF0aW9uLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG5cdHByb3ZpZGVyczogW1Byb3ZpZGVyU2VydmljZV0sXG5cdHRlbXBsYXRlVXJsOiAnLi9zdXBwb3J0LXRpY2tldC1saXN0LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBTdXBwb3J0VGlja2V0TGlzdENvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7IFxuXG5cdHJvdXRlJDogU3Vic2NyaXB0aW9uO1xuXG5cdHN1cHBvcnRfdGlja2V0czogU3VwcG9ydFRpY2tldE1vZGVsO1xuXG5cdHN1YnNjcmlwdGlvbiQ6IFN1YnNjcmlwdGlvbltdID0gW107XG5cblx0Y29sdW1uczogQXJyYXk8RGF0YXRhYmxlQ29sdW1uPiA9IFtcblx0XHR7IG5hbWU6ICdTdXBwb3J0IFRpY2tldCAjJywgZGF0YTogJ3N1cHBvcnRfdGlja2V0X251bWJlcid9LFxuXHRcdHsgbmFtZTogJ0RhdGUgQ3JlYXRlZCcsIGRhdGE6ICdkYXRlX2NyZWF0ZWQnfSxcblx0XHR7IG5hbWU6ICdUeXBlJywgZGF0YTogJ3R5cGUnIH0sXG5cdFx0eyBuYW1lOiAnSXNzdWUnLCBkYXRhOiAnaXNzdWUnIH0sXG5cdFx0eyBuYW1lOiAnU3RhdHVzJywgZGF0YTogJ3N0YXR1cyd9LFxuXHRcdHsgbmFtZTogJ0NyZWF0ZWQgQnknLCBkYXRhOiAndXNlcl9jcmVhdGVkJ31cblx0XTtcblxuXHR0YWJsZURhdGE6IERhdGF0YWJsZU1vZGVsID0ge1xuXHRcdHNlYXJjaFN0cmluZzogJycsXG5cdFx0ZW50cmllc1BlclBhZ2U6ICcyNScsXG5cdFx0cGFnZU51bTogMSxcblx0XHRzb3J0Q29sdW1uOiAnJyxcblx0XHRzb3J0T3JkZXI6ICdkZXNjJyxcblx0XHRmaWx0ZXJzOiB7XG5cdFx0XHRzdGF0dXM6ICdPcGVuZWQnLFxuXHRcdFx0c3Vic3RhdHVzOiAnQWxsJ1xuXHRcdH1cblx0fTtcblxuXHR0b3RhbEl0ZW1zID0gMTAwMDtcblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIF9zdHM6IFN1cHBvcnRUaWNrZXRTZXJ2aWNlLCBwcml2YXRlIF9yb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgX3NlcnZpY2VzOiBQcm92aWRlclNlcnZpY2UpIHtcblx0XHRzdXBlcihfc2VydmljZXMpO1xuXHR9XG5cblx0bmdPbkluaXQoKSB7XG5cdFx0dGhpcy5fc3RzLnNldFNlbGVjdGVkU3VwcG9ydFRpY2tldCgnMCcpO1xuXG5cdFx0dGhpcy5yb3V0ZSQgPSB0aGlzLl9yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoKCkgPT4ge1xuXG5cdFx0XHRsZXQga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMudGFibGVEYXRhKTtcblx0XHRcdGxldCBmaWx0ZXJLZXlzID0gT2JqZWN0LmtleXModGhpcy50YWJsZURhdGEuZmlsdGVycyk7XG5cblx0XHRcdGlmICh0aGlzLl9yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwLmtleXMubGVuZ3RoKSB7XG5cdFx0XHRcdGtleXMuc3BsaWNlKGtleXMuaW5kZXhPZignZmlsdGVycycsIDEpKTtcblxuXHRcdFx0XHRmaWx0ZXJLZXlzLmZvckVhY2goa2V5ID0+IHtcblx0XHRcdFx0XHRrZXlzLnB1c2goJ2ZpbHRlcnMuJyArIGtleSk7XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdGtleXMuZmlsdGVyKGEgPT4gYSBpbiB0aGlzLl9yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcykuZm9yRWFjaChrZXkgPT4ge1xuXHRcdFx0XHRcdGlmIChrZXkuaW5jbHVkZXMoJ2ZpbHRlcnMuJykpIHtcblx0XHRcdFx0XHRcdGxldCB0bXBLZXkgPSBrZXk7XG5cdFx0XHRcdFx0XHR0bXBLZXkgPSB0bXBLZXkucmVwbGFjZSgnZmlsdGVycy4nLCAnJyk7XG5cdFx0XHRcdFx0XHR0aGlzLnRhYmxlRGF0YS5maWx0ZXJzW3RtcEtleV0gPSB0aGlzLl9yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1trZXldO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdHRoaXMudGFibGVEYXRhW2tleV0gPSB0aGlzLl9yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1trZXldO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0dGhpcy50YWJsZURhdGEgPSB7XG5cdFx0XHRcdFx0c2VhcmNoU3RyaW5nOiAnJyxcblx0XHRcdFx0XHRlbnRyaWVzUGVyUGFnZTogJzI1Jyxcblx0XHRcdFx0XHRwYWdlTnVtOiAxLFxuXHRcdFx0XHRcdHNvcnRDb2x1bW46ICcnLFxuXHRcdFx0XHRcdHNvcnRPcmRlcjogJ2Rlc2MnLFxuXHRcdFx0XHRcdGZpbHRlcnM6IHtcblx0XHRcdFx0XHRcdHN0YXR1czogJ09wZW5lZCcsXG5cdFx0XHRcdFx0XHRzdWJzdGF0dXM6ICdBbGwnXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLnF1ZXJ5RGF0YSgpO1xuXHRcdH0pO1xuXHR9XG5cblx0bmdPbkRlc3Ryb3koKSB7XG5cdFx0dGhpcy5zdWJzY3JpcHRpb24kLmZvckVhY2goc3ViID0+IHtcblx0XHRcdHN1Yi51bnN1YnNjcmliZSgpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5yb3V0ZSQudW5zdWJzY3JpYmUoKTtcblx0fVxuXG5cdG9uUXVlcnlEYXRhQ2hhbmdlZCgpIHtcblx0XHRsZXQgcXVlcnlQYXJhbXMgPSB7fTtcblxuXHRcdGxldCBrZXlzID0gT2JqZWN0LmtleXModGhpcy50YWJsZURhdGEpO1xuXHRcdGxldCBmaWx0ZXJLZXlzID0gT2JqZWN0LmtleXModGhpcy50YWJsZURhdGEuZmlsdGVycyk7XG5cblx0XHRrZXlzLmZvckVhY2goa2V5ID0+IHtcblx0XHRcdGlmIChrZXkgPT09ICdmaWx0ZXJzJykge1xuXHRcdFx0XHRmaWx0ZXJLZXlzLmZvckVhY2goZmlsdGVyS2V5ID0+IHtcblx0XHRcdFx0XHRxdWVyeVBhcmFtc1snZmlsdGVycy4nICsgZmlsdGVyS2V5XSA9IHRoaXMudGFibGVEYXRhLmZpbHRlcnNbZmlsdGVyS2V5XTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0cXVlcnlQYXJhbXNba2V5XSA9IHRoaXMudGFibGVEYXRhW2tleV07XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHR0aGlzLl9zZXJ2aWNlcy5fcm91dGVyLm5hdmlnYXRlKFsnL3N1cHBvcnQtdGlja2V0L2xpc3QnXSwgeyBxdWVyeVBhcmFtcyB9ICk7XG5cdH1cblxuXHRxdWVyeURhdGEoKSB7XG5cblx0XHRsZXQgZmllbGRzID0ge307XG5cblx0XHR0aGlzLmNvbHVtbnMuZm9yRWFjaChjb2wgPT4ge1xuXHRcdFx0ZmllbGRzW2NvbC5kYXRhXSA9IDE7XG5cdFx0fSk7XG5cblx0XHRjb25zdCBvcHRpb25zOiBQYWdpbmF0aW9uT3B0aW9ucyA9IHtcblx0XHRcdGxpbWl0OiBwYXJzZUludCh0aGlzLnRhYmxlRGF0YS5lbnRyaWVzUGVyUGFnZSksXG5cdFx0XHRza2lwOiAodGhpcy50YWJsZURhdGEucGFnZU51bSAtIDEpICogcGFyc2VJbnQodGhpcy50YWJsZURhdGEuZW50cmllc1BlclBhZ2UpLFxuXHRcdFx0c29ydDogdGhpcy50YWJsZURhdGEuc29ydENvbHVtbiA/IHsgW3RoaXMudGFibGVEYXRhLnNvcnRDb2x1bW5dIDogKHRoaXMudGFibGVEYXRhLnNvcnRPcmRlciA9PT0gJ2FzYycgPyAxIDogLTEpIH0gOiB7IG5hbWU6IDEgfSxcblx0XHRcdGZpZWxkczogZmllbGRzXG5cdFx0fTtcblxuXHRcdGxldCBmaWx0ZXJzID0gW3twcm9wOiAnY2xpZW50JywgZGF0YTogdGhpcy5fc2VydmljZXMuX2FwcC5jbGllbnQuZ2V0VmFsdWUoKX1dO1xuXHRcdGlmICh0aGlzLnRhYmxlRGF0YS5maWx0ZXJzWydzdGF0dXMnXSAhPT0gJ0FsbCcpIHtcblx0XHRcdGZpbHRlcnMucHVzaCh7cHJvcDogJ3N0YXR1cycsIGRhdGE6IHRoaXMudGFibGVEYXRhLmZpbHRlcnNbJ3N0YXR1cyddfSk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLnRhYmxlRGF0YS5maWx0ZXJzWydzdWJzdGF0dXMnXSAhPT0gJ0FsbCcpIHtcblx0XHRcdGZpbHRlcnMucHVzaCh7cHJvcDogJ3N1YnN0YXR1cycsIGRhdGE6IHRoaXMudGFibGVEYXRhLmZpbHRlcnNbJ3N1YnN0YXR1cyddfSk7XG5cdFx0fVxuXHRcdFxuXHRcdHRoaXMuX3NlcnZpY2VzLl9zb2NrZXQuY2FsbCgnc3VwcG9ydHRpY2tldHNXaXRoT3B0aW9ucycsIG9wdGlvbnMsIHRoaXMudGFibGVEYXRhLnNlYXJjaFN0cmluZywgZmlsdGVycywgKGVyciwgcmVzKSA9PiB7XG5cdFx0XHR0aGlzLnN1cHBvcnRfdGlja2V0cyA9IHJlcztcblx0XHR9KTtcblxuXHRcdHRoaXMuX3NlcnZpY2VzLl9zb2NrZXQuY2FsbCgnc3VwcG9ydHRpY2tldENvdW50JywgdGhpcy50YWJsZURhdGEuc2VhcmNoU3RyaW5nLCBmaWx0ZXJzLCAoZXJyLCByZXMpID0+IHtcblx0XHRcdGlmIChlcnIpIHtcblx0XHRcdFx0dGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsKCdpbnNlcnRFcnJvckxvZycsICdjb3VudFF1ZXJ5IC0gcmVzb2x2ZWlvU3VwcG9ydExpc3QnLCBbXG5cdFx0XHRcdFx0ZXJyXG5cdFx0XHRcdF0pO1xuXHRcdFx0fSBcblx0XHRcdGVsc2Uge1xuXHRcdFx0XHR0aGlzLnRvdGFsSXRlbXMgPSByZXM7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cbiAgICAgICAgPGI+RmlsdGVyIFN1cHBvcnQgVGlja2V0IEJ5IFN0YXR1czwvYj48YnI+XG4gICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cInRhYmxlRGF0YS5maWx0ZXJzWydzdGF0dXMnXVwiIChjaGFuZ2UpPVwib25RdWVyeURhdGFDaGFuZ2VkKClcIiB0b3VyQW5jaG9yPVwic3VwcG9ydExpc3RGaWx0ZXJcIj5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJBbGxcIj5BbGw8L29wdGlvbj5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJPcGVuZWRcIj5PcGVuZWQ8L29wdGlvbj5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJSZXNvbHZlZFwiPlJlc29sdmVkPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxuICAgICAgICA8Yj5GaWx0ZXIgU3VwcG9ydCBUaWNrZXQgQnkgU3ViLVN0YXR1czwvYj48YnI+XG4gICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cInRhYmxlRGF0YS5maWx0ZXJzWydzdWJzdGF0dXMnXVwiIChjaGFuZ2UpPVwib25RdWVyeURhdGFDaGFuZ2VkKClcIj5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJBbGxcIj5BbGw8L29wdGlvbj5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJJbnZlc3RpZ2F0aW5nXCI+SW52ZXN0aWdhdGluZzwvb3B0aW9uPlxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIkF3YWl0aW5nIEN1c3RvbWVyIEludGVyYWN0aW9uXCI+QXdhaXRpbmcgQ3VzdG9tZXIgSW50ZXJhY3Rpb248L29wdGlvbj5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJSZXNvbHZlZFwiPlJlc29sdmVkPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICA8ZGl2IHN0eWxlPVwicGFkZGluZy1sZWZ0OiAxNXB4OyBwYWRkaW5nLXJpZ2h0OiAxNXB4OyBwYWRkaW5nLXRvcDogMTVweDtcIj5cbiAgICAgICAgICAgIDxkYXRhLXRhYmxlICNkYXRhVGFibGVcbiAgICAgICAgICAgICAgICBbdXJsQ2xpY2tdPVwiJy9zdXBwb3J0LXRpY2tldC9kZXRhaWwvJ1wiXG4gICAgICAgICAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXG4gICAgICAgICAgICAgICAgW2RhdGFdPVwic3VwcG9ydF90aWNrZXRzXCJcbiAgICAgICAgICAgICAgICBbY29sbGFwc2VTaXplXT1cIjk5MFwiXG4gICAgICAgICAgICAgICAgW3NlYXJjaFRpdGxlXT1cIidTZWFyY2ggRm9yIFN1cHBvcnQgVGlja2V0Li4uJ1wiXG4gICAgICAgICAgICAgICAgW3RvdGFsSXRlbXNdPVwidG90YWxJdGVtc1wiXG4gICAgICAgICAgICAgICAgKG9uQ2hhbmdlVGFibGVEYXRhKT1cIm9uUXVlcnlEYXRhQ2hhbmdlZCgpXCJcbiAgICAgICAgICAgICAgICBbdGFibGVEYXRhXT1cInRhYmxlRGF0YVwiXG4gICAgICAgICAgICAgICAgdG91ckFuY2hvcj1cInN1cHBvcnRMaXN0RGF0YXRhYmxlXCI+XG4gICAgICAgICAgICA8L2RhdGEtdGFibGU+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4gICAgIl19
@@ -0,0 +1,115 @@
1
+ import { Component, ChangeDetectorRef, ViewChild } from '@angular/core';
2
+ import { SupportTicketService } from '../support-ticket.service';
3
+ import { Validators } from '@angular/forms';
4
+ import { ProviderService, BaseComponent } from '../../resolveio-class';
5
+ import { DialogService } from '../../widgets/dialog/dialog.service';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../support-ticket.service";
8
+ import * as i2 from "../../resolveio-class";
9
+ import * as i3 from "../../widgets/dialog/dialog.service";
10
+ import * as i4 from "@ng-bootstrap/ng-bootstrap";
11
+ import * as i5 from "../../widgets/form-button/form-button.component";
12
+ import * as i6 from "@angular/forms";
13
+ import * as i7 from "@angular/common";
14
+ export class SupportTicketNewComponent extends BaseComponent {
15
+ constructor(_sts, _cd, _services, _ds) {
16
+ super(_services);
17
+ this._sts = _sts;
18
+ this._cd = _cd;
19
+ this._services = _services;
20
+ this._ds = _ds;
21
+ this.subscription$ = [];
22
+ this.disableFormButton = false;
23
+ this.submit = false;
24
+ }
25
+ ngOnInit() {
26
+ this._sts.setSelectedSupportTicket('0');
27
+ this.form = this._services._fb.group({
28
+ __v: [0],
29
+ type: ['', [Validators.required]],
30
+ priority: ['', [Validators.required]],
31
+ issue: ['', [Validators.required]],
32
+ support_ticket_number: [0],
33
+ support_ticket_number_string: ['0'],
34
+ status: ['Opened'],
35
+ substatus: ['New'],
36
+ client: [this._services._app.client.getValue()],
37
+ id_client: [this._services._app.client.getValue()],
38
+ messages: [[]],
39
+ date_created: [null],
40
+ date_created_string: [''],
41
+ id_user_created: [this._services._account.getUser()._id],
42
+ user_created: [this._services._account.getUser().fullname],
43
+ billable: [false, [Validators.required]],
44
+ date_investigation: [null],
45
+ date_closed: [null],
46
+ files: [[]],
47
+ current_watchers: [[]],
48
+ client_user: [{
49
+ id_user: this._services._account.getUser()._id,
50
+ user: this._services._account.getUser().fullname,
51
+ email: this._services._account.getUser().email ? this._services._account.getUser().email : ''
52
+ }],
53
+ tasks: [[]],
54
+ notes: [[]],
55
+ users_assigned: [[]],
56
+ bill_description: [''],
57
+ difficulty: [1]
58
+ });
59
+ }
60
+ ngOnDestroy() {
61
+ this.subscription$.forEach(sub => {
62
+ sub.unsubscribe();
63
+ });
64
+ }
65
+ canDeactivate() {
66
+ return true;
67
+ }
68
+ onTypeChange() {
69
+ if (this.form.controls.type.value === 'System Impairment') {
70
+ this.form.controls.priority.setValue('High');
71
+ this.form.controls.billable.setValue(false);
72
+ }
73
+ else if (this.form.controls.type.value === 'Request New Feature') {
74
+ this.form.controls.priority.setValue('Low');
75
+ this.form.controls.billable.setValue(true);
76
+ }
77
+ else if (this.form.controls.type.value === 'General Inquery') {
78
+ this.form.controls.priority.setValue('Low');
79
+ this.form.controls.billable.setValue(true);
80
+ }
81
+ else {
82
+ this.form.controls.priority.setValue('');
83
+ this.form.controls.billable.setValue(false);
84
+ }
85
+ }
86
+ submitForm(form) {
87
+ this.submit = true;
88
+ this.disableFormButton = true;
89
+ let now = new Date();
90
+ this.form.controls.date_created.setValue(now);
91
+ this.form.controls.date_created_string.setValue(now.getFullYear() + '/' + (now.getMonth() + 1) + '/' + now.getDate());
92
+ this._services._socket.call('supportInsertSupportTicket', this.form.value, (err, res) => {
93
+ if (res) {
94
+ this._services._alert.setAlert('success', 'Support ticket has been created');
95
+ this._services._router.navigateByUrl('/support-ticket/detail/' + res);
96
+ }
97
+ else {
98
+ this._ds.error('Could not create new support ticket.');
99
+ this._services._socket.call('insertErrorLog', 'Support Ticket New - insert support ticket', [
100
+ this.form.value, err
101
+ ]);
102
+ }
103
+ });
104
+ }
105
+ }
106
+ SupportTicketNewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: SupportTicketNewComponent, deps: [{ token: i1.SupportTicketService }, { token: i0.ChangeDetectorRef }, { token: i2.ProviderService }, { token: i3.DialogService }], target: i0.ɵɵFactoryTarget.Component });
107
+ SupportTicketNewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: SupportTicketNewComponent, selector: "ng-component", providers: [ProviderService], viewQueries: [{ propertyName: "fileUpload", first: true, predicate: ["fileUpload"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<style>\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n</style>\n\n<div class=\"col-lg-12\">\n <form [formGroup]=\"form\" novalidate (ngSubmit)=\"submitForm(form)\">\n <div class=\"row\">\n <ngb-accordion #acc=\"ngbAccordion\" activeIds=\"supportTicketInfo\">\n <ngb-panel id=\"supportTicketInfo\">\n <ng-template ngbPanelTitle>\n <div> \n <label class=\"label-accordion\">Support Ticket Info</label>\n <i *ngIf=\"!acc.activeIds.includes('supportTicketInfo')\" class=\"fa fa-plus pull-right\" aria-hidden=\"true\"></i>\n <i *ngIf=\"acc.activeIds.includes('supportTicketInfo')\" class=\"fa fa-minus pull-right\" aria-hidden=\"true\"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"form-group\">\n <label class=\"form-control-label\">Support Ticket Type</label>\n <em *ngIf=\"!form.controls.type.valid\">- Required</em>\n <select [ngClass]=\"['form-control', form.controls.type.valid ? 'is-valid' : 'is-invalid']\" formControlName=\"type\" (change)=\"onTypeChange()\" tourAnchor=\"supportNewSelect\">\n <option value=\"\">Select Type</option>\n <option value=\"General Inquery\">General Inquery</option>\n <option value=\"System Impairment\">System Impairment</option>\n <option value=\"Request New Feature\">Request New Feature</option>\n </select>\n <div class=\"invalid-feedback\" *ngIf=\"!form.controls.type.valid\">Type is required</div>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-lg-12\">\n <div class=\"form-group\">\n <label class=\"form-control-label\">Problem/Feature Description</label>\n <em *ngIf=\"!form.controls.issue.valid\">- Required</em>\n <textarea formControlName=\"issue\" [ngClass]=\"['form-control', form.controls.issue.valid ? 'is-valid' : 'is-invalid' ]\" [rows]=\"5\" style=\"overflow-x: hidden\" tourAnchor=\"supportNewInput\"></textarea>\n <div class=\"invalid-feedback\" *ngIf=\"!form.controls.issue.valid\">Description is required</div>\n </div>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n </ngb-accordion>\n </div>\n <div class=\"row\" style=\"padding-top: 15px;\">\n <form-button [form]=\"form\" [disabled]=\"disableFormButton\" tourAnchor=\"supportNewSubmit\"></form-button>\n </div>\n </form>\n</div>\n", styles: ["\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n"], components: [{ type: i4.NgbAccordion, selector: "ngb-accordion", inputs: ["animation", "activeIds", "closeOthers", "destroyOnHide", "type"], outputs: ["panelChange", "shown", "hidden"], exportAs: ["ngbAccordion"] }, { type: i5.FormButtonComponent, selector: "form-button", inputs: ["form", "disabled"] }], directives: [{ type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i4.NgbPanel, selector: "ngb-panel", inputs: ["disabled", "id", "title", "type", "cardClass"], outputs: ["shown", "hidden"] }, { type: i4.NgbPanelTitle, selector: "ng-template[ngbPanelTitle]" }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgbPanelContent, selector: "ng-template[ngbPanelContent]" }, { type: i6.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i6.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }] });
108
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: SupportTicketNewComponent, decorators: [{
109
+ type: Component,
110
+ args: [{ providers: [ProviderService], template: "<style>\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n</style>\n\n<div class=\"col-lg-12\">\n <form [formGroup]=\"form\" novalidate (ngSubmit)=\"submitForm(form)\">\n <div class=\"row\">\n <ngb-accordion #acc=\"ngbAccordion\" activeIds=\"supportTicketInfo\">\n <ngb-panel id=\"supportTicketInfo\">\n <ng-template ngbPanelTitle>\n <div> \n <label class=\"label-accordion\">Support Ticket Info</label>\n <i *ngIf=\"!acc.activeIds.includes('supportTicketInfo')\" class=\"fa fa-plus pull-right\" aria-hidden=\"true\"></i>\n <i *ngIf=\"acc.activeIds.includes('supportTicketInfo')\" class=\"fa fa-minus pull-right\" aria-hidden=\"true\"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"form-group\">\n <label class=\"form-control-label\">Support Ticket Type</label>\n <em *ngIf=\"!form.controls.type.valid\">- Required</em>\n <select [ngClass]=\"['form-control', form.controls.type.valid ? 'is-valid' : 'is-invalid']\" formControlName=\"type\" (change)=\"onTypeChange()\" tourAnchor=\"supportNewSelect\">\n <option value=\"\">Select Type</option>\n <option value=\"General Inquery\">General Inquery</option>\n <option value=\"System Impairment\">System Impairment</option>\n <option value=\"Request New Feature\">Request New Feature</option>\n </select>\n <div class=\"invalid-feedback\" *ngIf=\"!form.controls.type.valid\">Type is required</div>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-lg-12\">\n <div class=\"form-group\">\n <label class=\"form-control-label\">Problem/Feature Description</label>\n <em *ngIf=\"!form.controls.issue.valid\">- Required</em>\n <textarea formControlName=\"issue\" [ngClass]=\"['form-control', form.controls.issue.valid ? 'is-valid' : 'is-invalid' ]\" [rows]=\"5\" style=\"overflow-x: hidden\" tourAnchor=\"supportNewInput\"></textarea>\n <div class=\"invalid-feedback\" *ngIf=\"!form.controls.issue.valid\">Description is required</div>\n </div>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n </ngb-accordion>\n </div>\n <div class=\"row\" style=\"padding-top: 15px;\">\n <form-button [form]=\"form\" [disabled]=\"disableFormButton\" tourAnchor=\"supportNewSubmit\"></form-button>\n </div>\n </form>\n</div>\n" }]
111
+ }], ctorParameters: function () { return [{ type: i1.SupportTicketService }, { type: i0.ChangeDetectorRef }, { type: i2.ProviderService }, { type: i3.DialogService }]; }, propDecorators: { fileUpload: [{
112
+ type: ViewChild,
113
+ args: ['fileUpload', { static: true }]
114
+ }] } });
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydC10aWNrZXQtbmV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9zdXBwb3J0LXRpY2tldC9uZXcvc3VwcG9ydC10aWNrZXQtbmV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9zdXBwb3J0LXRpY2tldC9uZXcvc3VwcG9ydC10aWNrZXQtbmV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7Ozs7OztBQU9wRSxNQUFNLE9BQU8seUJBQTBCLFNBQVEsYUFBYTtJQVkzRCxZQUFvQixJQUEwQixFQUFVLEdBQXNCLEVBQVUsU0FBMEIsRUFBVSxHQUFrQjtRQUM3SSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFERSxTQUFJLEdBQUosSUFBSSxDQUFzQjtRQUFVLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFlO1FBUjlJLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUluQyxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFFMUIsV0FBTSxHQUFHLEtBQUssQ0FBQztJQUlmLENBQUM7SUFFRCxRQUFRO1FBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0Is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aW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3VwcG9ydFRpY2tldFNlcnZpY2UgfSBmcm9tICcuLi9zdXBwb3J0LXRpY2tldC5zZXJ2aWNlJztcbmltcG9ydCB7IFZhbGlkYXRvcnMsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUHJvdmlkZXJTZXJ2aWNlLCBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcmVzb2x2ZWlvLWNsYXNzJztcbmltcG9ydCB7IHBhZCB9IGZyb20gJy4uLy4uL3V0aWwvY29tbW9uLmhlbHBlcic7XG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vd2lkZ2V0cy9kaWFsb2cvZGlhbG9nLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcblx0cHJvdmlkZXJzOiBbUHJvdmlkZXJTZXJ2aWNlXSxcblx0dGVtcGxhdGVVcmw6ICcuL3N1cHBvcnQtdGlja2V0LW5ldy5jb21wb25lbnQuaHRtbCdcbn0pXG5cbmV4cG9ydCBjbGFzcyBTdXBwb3J0VGlja2V0TmV3Q29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHsgXG5cblx0QFZpZXdDaGlsZCAoJ2ZpbGVVcGxvYWQnLCB7c3RhdGljOiB0cnVlfSkgZmlsZVVwbG9hZDtcblx0XG5cdHN1YnNjcmlwdGlvbiQ6IFN1YnNjcmlwdGlvbltdID0gW107XG5cblx0Zm9ybTogRm9ybUdyb3VwO1xuXG5cdGRpc2FibGVGb3JtQnV0dG9uID0gZmFsc2U7XG5cblx0c3VibWl0ID0gZmFsc2U7XG5cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBfc3RzOiBTdXBwb3J0VGlja2V0U2VydmljZSwgcHJpdmF0ZSBfY2Q6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIF9zZXJ2aWNlczogUHJvdmlkZXJTZXJ2aWNlLCBwcml2YXRlIF9kczogRGlhbG9nU2VydmljZSkge1xuXHRcdHN1cGVyKF9zZXJ2aWNlcyk7XG5cdH1cblxuXHRuZ09uSW5pdCgpIHtcblx0XHR0aGlzLl9zdHMuc2V0U2VsZWN0ZWRTdXBwb3J0VGlja2V0KCcwJyk7XG5cblx0XHR0aGlzLmZvcm0gPSB0aGlzLl9zZXJ2aWNlcy5fZmIuZ3JvdXAoe1xuXHRcdFx0X192OiBbMF0sXG5cdFx0XHR0eXBlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG5cdFx0XHRwcmlvcml0eTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuXHRcdFx0aXNzdWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcblx0XHRcdHN1cHBvcnRfdGlja2V0X251bWJlcjogWzBdLFxuXHRcdFx0c3VwcG9ydF90aWNrZXRfbnVtYmVyX3N0cmluZzogWycwJ10sXG5cdFx0XHRzdGF0dXM6IFsnT3BlbmVkJ10sXG5cdFx0XHRzdWJzdGF0dXM6IFsnTmV3J10sXG5cdFx0XHRjbGllbnQ6IFt0aGlzLl9zZXJ2aWNlcy5fYXBwLmNsaWVudC5nZXRWYWx1ZSgpXSxcblx0XHRcdGlkX2NsaWVudDogW3RoaXMuX3NlcnZpY2VzLl9hcHAuY2xpZW50LmdldFZhbHVlKCldLFxuXHRcdFx0bWVzc2FnZXM6IFtbXV0sXG5cdFx0XHRkYXRlX2NyZWF0ZWQ6IFtudWxsXSxcblx0XHRcdGRhdGVfY3JlYXRlZF9zdHJpbmc6IFsnJ10sXG5cdFx0XHRpZF91c2VyX2NyZWF0ZWQ6IFt0aGlzLl9zZXJ2aWNlcy5fYWNjb3VudC5nZXRVc2VyKCkuX2lkXSxcblx0XHRcdHVzZXJfY3JlYXRlZDogW3RoaXMuX3NlcnZpY2VzLl9hY2NvdW50LmdldFVzZXIoKS5mdWxsbmFtZV0sXG5cdFx0XHRiaWxsYWJsZTogW2ZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuXHRcdFx0ZGF0ZV9pbnZlc3RpZ2F0aW9uOiBbbnVsbF0sXG5cdFx0XHRkYXRlX2Nsb3NlZDogW251bGxdLFxuXHRcdFx0ZmlsZXM6IFtbXV0sXG5cdFx0XHRjdXJyZW50X3dhdGNoZXJzOiBbW11dLFxuXHRcdFx0Y2xpZW50X3VzZXI6IFt7XG5cdFx0XHRcdGlkX3VzZXI6IHRoaXMuX3NlcnZpY2VzLl9hY2NvdW50LmdldFVzZXIoKS5faWQsXG5cdFx0XHRcdHVzZXI6IHRoaXMuX3NlcnZpY2VzLl9hY2NvdW50LmdldFVzZXIoKS5mdWxsbmFtZSxcblx0XHRcdFx0ZW1haWw6IHRoaXMuX3NlcnZpY2VzLl9hY2NvdW50LmdldFVzZXIoKS5lbWFpbCA/IHRoaXMuX3NlcnZpY2VzLl9hY2NvdW50LmdldFVzZXIoKS5lbWFpbCA6ICcnXG5cdFx0XHR9XSxcblx0XHRcdHRhc2tzOiBbW11dLFxuXHRcdFx0bm90ZXM6IFtbXV0sXG5cdFx0XHR1c2Vyc19hc3NpZ25lZDogW1tdXSxcblx0XHRcdGJpbGxfZGVzY3JpcHRpb246IFsnJ10sXG5cdFx0XHRkaWZmaWN1bHR5OiBbMV1cblx0XHR9KTtcblx0fVxuXG5cdG5nT25EZXN0cm95KCkge1xuXHRcdHRoaXMuc3Vic2NyaXB0aW9uJC5mb3JFYWNoKHN1YiA9PiB7XG5cdFx0XHRzdWIudW5zdWJzY3JpYmUoKTtcblx0XHR9KTtcblx0fVxuXG5cdGNhbkRlYWN0aXZhdGUoKSB7XHRcdFx0XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRvblR5cGVDaGFuZ2UoKSB7XG5cdFx0aWYgKHRoaXMuZm9ybS5jb250cm9scy50eXBlLnZhbHVlID09PSAnU3lzdGVtIEltcGFpcm1lbnQnKSB7XG5cdFx0XHR0aGlzLmZvcm0uY29udHJvbHMucHJpb3JpdHkuc2V0VmFsdWUoJ0hpZ2gnKTtcblx0XHRcdHRoaXMuZm9ybS5jb250cm9scy5iaWxsYWJsZS5zZXRWYWx1ZShmYWxzZSk7XG5cdFx0fVxuXHRcdGVsc2UgaWYgKHRoaXMuZm9ybS5jb250cm9scy50eXBlLnZhbHVlID09PSAnUmVxdWVzdCBOZXcgRmVhdHVyZScpIHtcblx0XHRcdHRoaXMuZm9ybS5jb250cm9scy5wcmlvcml0eS5zZXRWYWx1ZSgnTG93Jyk7XG5cdFx0XHR0aGlzLmZvcm0uY29udHJvbHMuYmlsbGFibGUuc2V0VmFsdWUodHJ1ZSk7XG5cdFx0fVxuXHRcdGVsc2UgaWYgKHRoaXMuZm9ybS5jb250cm9scy50eXBlLnZhbHVlID09PSAnR2VuZXJhbCBJbnF1ZXJ5Jykge1xuXHRcdFx0dGhpcy5mb3JtLmNvbnRyb2xzLnByaW9yaXR5LnNldFZhbHVlKCdMb3cnKTtcblx0XHRcdHRoaXMuZm9ybS5jb250cm9scy5iaWxsYWJsZS5zZXRWYWx1ZSh0cnVlKTtcblx0XHR9XG5cdFx0ZWxzZSB7XG5cdFx0XHR0aGlzLmZvcm0uY29udHJvbHMucHJpb3JpdHkuc2V0VmFsdWUoJycpO1xuXHRcdFx0dGhpcy5mb3JtLmNvbnRyb2xzLmJpbGxhYmxlLnNldFZhbHVlKGZhbHNlKTtcblx0XHR9XG5cdH1cblxuXHRzdWJtaXRGb3JtKGZvcm0pIHtcblxuXHRcdHRoaXMuc3VibWl0ID0gdHJ1ZTtcblxuXHRcdHRoaXMuZGlzYWJsZUZvcm1CdXR0b24gPSB0cnVlO1xuXG5cdFx0bGV0IG5vdyA9IG5ldyBEYXRlKCk7XG5cdFx0dGhpcy5mb3JtLmNvbnRyb2xzLmRhdGVfY3JlYXRlZC5zZXRWYWx1ZShub3cpO1xuXHRcdHRoaXMuZm9ybS5jb250cm9scy5kYXRlX2NyZWF0ZWRfc3RyaW5nLnNldFZhbHVlKG5vdy5nZXRGdWxsWWVhcigpICsgJy8nICsgKG5vdy5nZXRNb250aCgpICsgMSkgKyAnLycgKyBub3cuZ2V0RGF0ZSgpKTtcblxuXHRcdHRoaXMuX3NlcnZpY2VzLl9zb2NrZXQuY2FsbCgnc3VwcG9ydEluc2VydFN1cHBvcnRUaWNrZXQnLCB0aGlzLmZvcm0udmFsdWUsIChlcnIsIHJlcykgPT4ge1xuXHRcdFx0aWYgKHJlcykge1xuXHRcdFx0XHR0aGlzLl9zZXJ2aWNlcy5fYWxlcnQuc2V0QWxlcnQoJ3N1Y2Nlc3MnLCAnU3VwcG9ydCB0aWNrZXQgaGFzIGJlZW4gY3JlYXRlZCcpO1xuXHRcdFx0XHR0aGlzLl9zZXJ2aWNlcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoJy9zdXBwb3J0LXRpY2tldC9kZXRhaWwvJyArIHJlcyk7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0dGhpcy5fZHMuZXJyb3IoJ0NvdWxkIG5vdCBjcmVhdGUgbmV3IHN1cHBvcnQgdGlja2V0LicpO1xuXHRcdFx0XHR0aGlzLl9zZXJ2aWNlcy5fc29ja2V0LmNhbGwoJ2luc2VydEVycm9yTG9nJywgJ1N1cHBvcnQgVGlja2V0IE5ldyAtIGluc2VydCBzdXBwb3J0IHRpY2tldCcsIFtcblx0XHRcdFx0XHR0aGlzLmZvcm0udmFsdWUsIGVyclxuXHRcdFx0XHRdKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxufVxuIiwiPHN0eWxlPlxuICAgIC5sYWJlbC1hY2NvcmRpb24ge1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgY29sb3I6IGJsYWNrO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwcHg7XG4gICAgfVxuXG4gICAgLmZhLXBsdXMge1xuICAgICAgICBjb2xvcjogYmxhY2s7XG4gICAgfVxuXG4gICAgLmZhLW1pbnVzIHtcbiAgICAgICAgY29sb3I6IGJsYWNrO1xuICAgIH1cbjwvc3R5bGU+XG5cbjxkaXYgY2xhc3M9XCJjb2wtbGctMTJcIj5cbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBub3ZhbGlkYXRlIChuZ1N1Ym1pdCk9XCJzdWJtaXRGb3JtKGZvcm0pXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxuZ2ItYWNjb3JkaW9uICNhY2M9XCJuZ2JBY2NvcmRpb25cIiBhY3RpdmVJZHM9XCJzdXBwb3J0VGlja2V0SW5mb1wiPlxuICAgICAgICAgICAgICAgIDxuZ2ItcGFuZWwgaWQ9XCJzdXBwb3J0VGlja2V0SW5mb1wiPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiUGFuZWxUaXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsLWFjY29yZGlvblwiPlN1cHBvcnQgVGlja2V0IEluZm88L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiIWFjYy5hY3RpdmVJZHMuaW5jbHVkZXMoJ3N1cHBvcnRUaWNrZXRJbmZvJylcIiBjbGFzcz1cImZhIGZhLXBsdXMgcHVsbC1yaWdodFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImFjYy5hY3RpdmVJZHMuaW5jbHVkZXMoJ3N1cHBvcnRUaWNrZXRJbmZvJylcIiBjbGFzcz1cImZhIGZhLW1pbnVzIHB1bGwtcmlnaHRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYlBhbmVsQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wtbGFiZWxcIj5TdXBwb3J0IFRpY2tldCBUeXBlPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSAqbmdJZj1cIiFmb3JtLmNvbnRyb2xzLnR5cGUudmFsaWRcIj4tIFJlcXVpcmVkPC9lbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IFtuZ0NsYXNzXT1cIlsnZm9ybS1jb250cm9sJywgZm9ybS5jb250cm9scy50eXBlLnZhbGlkID8gJ2lzLXZhbGlkJyA6ICdpcy1pbnZhbGlkJ11cIiBmb3JtQ29udHJvbE5hbWU9XCJ0eXBlXCIgKGNoYW5nZSk9XCJvblR5cGVDaGFuZ2UoKVwiIHRvdXJBbmNob3I9XCJzdXBwb3J0TmV3U2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5TZWxlY3QgVHlwZTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiR2VuZXJhbCBJbnF1ZXJ5XCI+R2VuZXJhbCBJbnF1ZXJ5PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJTeXN0ZW0gSW1wYWlybWVudFwiPlN5c3RlbSBJbXBhaXJtZW50PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJSZXF1ZXN0IE5ldyBGZWF0dXJlXCI+UmVxdWVzdCBOZXcgRmVhdHVyZTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cIiFmb3JtLmNvbnRyb2xzLnR5cGUudmFsaWRcIj5UeXBlIGlzIHJlcXVpcmVkPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jb250cm9sLWxhYmVsXCI+UHJvYmxlbS9GZWF0dXJlIERlc2NyaXB0aW9uPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSAqbmdJZj1cIiFmb3JtLmNvbnRyb2xzLmlzc3VlLnZhbGlkXCI+LSBSZXF1aXJlZDwvZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgZm9ybUNvbnRyb2xOYW1lPVwiaXNzdWVcIiBbbmdDbGFzc109XCJbJ2Zvcm0tY29udHJvbCcsIGZvcm0uY29udHJvbHMuaXNzdWUudmFsaWQgPyAnaXMtdmFsaWQnIDogJ2lzLWludmFsaWQnIF1cIiBbcm93c109XCI1XCIgc3R5bGU9XCJvdmVyZmxvdy14OiBoaWRkZW5cIiB0b3VyQW5jaG9yPVwic3VwcG9ydE5ld0lucHV0XCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCIhZm9ybS5jb250cm9scy5pc3N1ZS52YWxpZFwiPkRlc2NyaXB0aW9uIGlzIHJlcXVpcmVkPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9uZ2ItcGFuZWw+XG4gICAgICAgICAgICA8L25nYi1hY2NvcmRpb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJwYWRkaW5nLXRvcDogMTVweDtcIj5cbiAgICAgICAgICAgIDxmb3JtLWJ1dHRvbiBbZm9ybV09XCJmb3JtXCIgW2Rpc2FibGVkXT1cImRpc2FibGVGb3JtQnV0dG9uXCIgdG91ckFuY2hvcj1cInN1cHBvcnROZXdTdWJtaXRcIj48L2Zvcm0tYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,63 @@
1
+ import { Component } from '@angular/core';
2
+ import { SupportTicketService } from './support-ticket.service';
3
+ import { ProviderService, BaseComponent } from '../resolveio-class';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./support-ticket.service";
6
+ import * as i2 from "../resolveio-class";
7
+ import * as i3 from "@angular/router";
8
+ export class SupportTicketComponent extends BaseComponent {
9
+ constructor(_sts, _services) {
10
+ super(_services);
11
+ this._sts = _sts;
12
+ this._services = _services;
13
+ }
14
+ ngOnInit() {
15
+ this.selectedResolveIOSupport$ = this._sts.selectedSupportTicket.subscribe(val => this.selectedResolveIOSupportChanged(val));
16
+ }
17
+ ngOnDestroy() {
18
+ this._sts.setSelectedSupportTicket('0');
19
+ this.selectedResolveIOSupport$.unsubscribe();
20
+ }
21
+ selectedResolveIOSupportChanged(id) {
22
+ if (id !== '0') {
23
+ this._services._socket.call('supportGetSupportTicketWithId', id, (err, res) => {
24
+ if (!res) {
25
+ this.setResolveIOSupportModuleMenuData();
26
+ }
27
+ else {
28
+ this.setResolveIOSupportModuleMenuData(id, res);
29
+ }
30
+ });
31
+ }
32
+ else {
33
+ this.setResolveIOSupportModuleMenuData();
34
+ }
35
+ }
36
+ setResolveIOSupportModuleMenuData(id, st) {
37
+ let tabs = [];
38
+ tabs.push({ link: '/support-ticket/list', params: null, label: 'List', tourAnchor: 'navBarModuleSupportList' });
39
+ tabs.push({ link: '/support-ticket/new', params: null, label: 'New', tourAnchor: 'navBarModuleSupportNew' });
40
+ tabs.push({ link: '/support-ticket/detail', params: id || '0', label: 'Details' });
41
+ if (this._services._account.isUserSuperAdmin() || (st && st.id_user_created === this._services._account.getUser()._id)) {
42
+ tabs.push({ link: '/support-ticket/edit', params: id || '0', label: 'Edit' });
43
+ }
44
+ this.menuData = {
45
+ title: 'Support Center',
46
+ module: 'Support Ticket',
47
+ description_name: 'Support Ticket #',
48
+ description: st ? st.support_ticket_number_string : '',
49
+ tabs: tabs
50
+ };
51
+ this._services._app.setNavbarModuleData(this.menuData);
52
+ }
53
+ }
54
+ SupportTicketComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: SupportTicketComponent, deps: [{ token: i1.SupportTicketService }, { token: i2.ProviderService }], target: i0.ɵɵFactoryTarget.Component });
55
+ SupportTicketComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: SupportTicketComponent, selector: "ng-component", providers: [ProviderService], usesInheritance: true, ngImport: i0, template: '<router-outlet></router-outlet>', isInline: true, directives: [{ type: i3.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] });
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: SupportTicketComponent, decorators: [{
57
+ type: Component,
58
+ args: [{
59
+ providers: [ProviderService],
60
+ template: '<router-outlet></router-outlet>'
61
+ }]
62
+ }], ctorParameters: function () { return [{ type: i1.SupportTicketService }, { type: i2.ProviderService }]; } });
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydC10aWNrZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3N1cHBvcnQtdGlja2V0L3N1cHBvcnQtdGlja2V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUVwRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7OztBQVFwRSxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsYUFBYTtJQU14RCxZQUFvQixJQUEwQixFQUFVLFNBQTBCO1FBQ2pGLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQURFLFNBQUksR0FBSixJQUFJLENBQXNCO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBaUI7SUFFbEYsQ0FBQztJQUVELFFBQVE7UUFDUCxJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQ3pFLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFDLEdBQUcsQ0FBQyxDQUNoRCxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXhDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRUQsK0JBQStCLENBQUMsRUFBVTtRQUN6QyxJQUFJLEVBQUUsS0FBSyxHQUFHLEVBQUU7WUFDZixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsK0JBQStCLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO2dCQUM3RSxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUNULElBQUksQ0FBQyxpQ0FBaUMsRUFBRSxDQUFDO2lCQUN6QztxQkFDSTtvQkFDSixJQUFJLENBQUMsaUNBQWlDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO2lCQUNoRDtZQUNGLENBQUMsQ0FBQyxDQUFDO1NBQ0g7YUFDSTtZQUNKLElBQUksQ0FBQyxpQ0FBaUMsRUFBRSxDQUFDO1NBQ3pDO0lBQ0YsQ0FBQztJQUVELGlDQUFpQyxDQUFDLEVBQVcsRUFBRSxFQUF1QjtRQUNyRSxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7UUFFZCxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUseUJBQXlCLEVBQUMsQ0FBQyxDQUFDO1FBQzlHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSx3QkFBd0IsRUFBQyxDQUFDLENBQUM7UUFDM0csSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSx3QkFBd0IsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQztRQUNqRixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLGVBQWUsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN2SCxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFDO1NBQzVFO1FBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRztZQUNmLEtBQUssRUFBRSxnQkFBZ0I7WUFDdkIsTUFBTSxFQUFFLGdCQUFnQjtZQUN4QixnQkFBZ0IsRUFBRSxrQkFBa0I7WUFDcEMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3RELElBQUksRUFBRSxJQUFJO1NBQ1YsQ0FBQztRQUVGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4RCxDQUFDOzttSEF6RFcsc0JBQXNCO3VHQUF0QixzQkFBc0IsdUNBSnZCLENBQUMsZUFBZSxDQUFDLGlEQUNsQixpQ0FBaUM7MkZBRy9CLHNCQUFzQjtrQkFMbEMsU0FBUzttQkFBQztvQkFDVixTQUFTLEVBQUUsQ0FBQyxlQUFlLENBQUM7b0JBQzVCLFFBQVEsRUFBRSxpQ0FBaUM7aUJBQzNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmJhck1vZGVsIH0gZnJvbSAnLi4vd2lkZ2V0cy9uYXZiYXItbW9kdWxlL25hdmJhci1tb2R1bGUubW9kZWwnO1xuaW1wb3J0IHsgU3VwcG9ydFRpY2tldFNlcnZpY2UgfSBmcm9tICcuL3N1cHBvcnQtdGlja2V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQcm92aWRlclNlcnZpY2UsIEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9yZXNvbHZlaW8tY2xhc3MnO1xuaW1wb3J0IHsgU3VwcG9ydFRpY2tldE1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3N1cHBvcnQtdGlja2V0Lm1vZGVsJztcblxuQENvbXBvbmVudCh7XG5cdHByb3ZpZGVyczogW1Byb3ZpZGVyU2VydmljZV0sXG5cdHRlbXBsYXRlOiAnPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0Pidcbn0pXG5cbmV4cG9ydCBjbGFzcyBTdXBwb3J0VGlja2V0Q29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHsgXG5cblx0c2VsZWN0ZWRSZXNvbHZlSU9TdXBwb3J0JDogU3Vic2NyaXB0aW9uO1xuXG5cdG1lbnVEYXRhOiBOYXZiYXJNb2RlbDtcblx0XG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgX3N0czogU3VwcG9ydFRpY2tldFNlcnZpY2UsIHByaXZhdGUgX3NlcnZpY2VzOiBQcm92aWRlclNlcnZpY2UpIHtcblx0XHRzdXBlcihfc2VydmljZXMpO1xuXHR9XG5cblx0bmdPbkluaXQoKSB7XG5cdFx0dGhpcy5zZWxlY3RlZFJlc29sdmVJT1N1cHBvcnQkID0gdGhpcy5fc3RzLnNlbGVjdGVkU3VwcG9ydFRpY2tldC5zdWJzY3JpYmUoXG5cdFx0XHR2YWwgPT4gdGhpcy5zZWxlY3RlZFJlc29sdmVJT1N1cHBvcnRDaGFuZ2VkKHZhbClcblx0XHQpO1xuXHR9XG5cblx0bmdPbkRlc3Ryb3koKSB7XG5cdFx0dGhpcy5fc3RzLnNldFNlbGVjdGVkU3VwcG9ydFRpY2tldCgnMCcpO1xuXG5cdFx0dGhpcy5zZWxlY3RlZFJlc29sdmVJT1N1cHBvcnQkLnVuc3Vic2NyaWJlKCk7XG5cdH1cblxuXHRzZWxlY3RlZFJlc29sdmVJT1N1cHBvcnRDaGFuZ2VkKGlkOiBzdHJpbmcpIHtcblx0XHRpZiAoaWQgIT09ICcwJykge1xuXHRcdFx0dGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsKCdzdXBwb3J0R2V0U3VwcG9ydFRpY2tldFdpdGhJZCcsIGlkLCAoZXJyLCByZXMpID0+IHtcblx0XHRcdFx0aWYgKCFyZXMpIHtcblx0XHRcdFx0XHR0aGlzLnNldFJlc29sdmVJT1N1cHBvcnRNb2R1bGVNZW51RGF0YSgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMuc2V0UmVzb2x2ZUlPU3VwcG9ydE1vZHVsZU1lbnVEYXRhKGlkLCByZXMpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0ZWxzZSB7XG5cdFx0XHR0aGlzLnNldFJlc29sdmVJT1N1cHBvcnRNb2R1bGVNZW51RGF0YSgpO1xuXHRcdH1cblx0fVxuXG5cdHNldFJlc29sdmVJT1N1cHBvcnRNb2R1bGVNZW51RGF0YShpZD86IHN0cmluZywgc3Q/OiBTdXBwb3J0VGlja2V0TW9kZWwpIHtcblx0XHRsZXQgdGFicyA9IFtdO1xuXG5cdFx0dGFicy5wdXNoKHtsaW5rOiAnL3N1cHBvcnQtdGlja2V0L2xpc3QnLCBwYXJhbXM6IG51bGwsIGxhYmVsOiAnTGlzdCcsIHRvdXJBbmNob3I6ICduYXZCYXJNb2R1bGVTdXBwb3J0TGlzdCd9KTtcblx0XHR0YWJzLnB1c2goe2xpbms6ICcvc3VwcG9ydC10aWNrZXQvbmV3JywgcGFyYW1zOiBudWxsLCBsYWJlbDogJ05ldycsIHRvdXJBbmNob3I6ICduYXZCYXJNb2R1bGVTdXBwb3J0TmV3J30pO1xuXHRcdHRhYnMucHVzaCh7bGluazogJy9zdXBwb3J0LXRpY2tldC9kZXRhaWwnLCBwYXJhbXM6IGlkIHx8ICcwJywgbGFiZWw6ICdEZXRhaWxzJ30pO1xuXHRcdGlmICh0aGlzLl9zZXJ2aWNlcy5fYWNjb3VudC5pc1VzZXJTdXBlckFkbWluKCkgfHwgKHN0ICYmIHN0LmlkX3VzZXJfY3JlYXRlZCA9PT0gdGhpcy5fc2VydmljZXMuX2FjY291bnQuZ2V0VXNlcigpLl9pZCkpIHtcblx0XHRcdHRhYnMucHVzaCh7bGluazogJy9zdXBwb3J0LXRpY2tldC9lZGl0JywgcGFyYW1zOiBpZCB8fCAnMCcsIGxhYmVsOiAnRWRpdCd9KTtcblx0XHR9XG5cblx0XHR0aGlzLm1lbnVEYXRhID0ge1xuXHRcdFx0dGl0bGU6ICdTdXBwb3J0IENlbnRlcicsXG5cdFx0XHRtb2R1bGU6ICdTdXBwb3J0IFRpY2tldCcsXG5cdFx0XHRkZXNjcmlwdGlvbl9uYW1lOiAnU3VwcG9ydCBUaWNrZXQgIycsXG5cdFx0XHRkZXNjcmlwdGlvbjogc3QgPyBzdC5zdXBwb3J0X3RpY2tldF9udW1iZXJfc3RyaW5nIDogJycsXG5cdFx0XHR0YWJzOiB0YWJzXG5cdFx0fTtcblxuXHRcdHRoaXMuX3NlcnZpY2VzLl9hcHAuc2V0TmF2YmFyTW9kdWxlRGF0YSh0aGlzLm1lbnVEYXRhKTtcblx0fVxufVxuIl19