@bnsights/bbsf-admin-portal 1.1.49 → 1.1.50

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 (256) hide show
  1. package/README.md +4 -0
  2. package/bnsights-bbsf-admin-portal-1.1.50.tgz +0 -0
  3. package/esm2022/lib/Pages/ActiveDirectories/active-directory/active-directory.component.mjs +3 -3
  4. package/esm2022/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.mjs +1 -1
  5. package/esm2022/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.mjs +16 -9
  6. package/esm2022/lib/Pages/_layout/components/aside/aside.component.mjs +3 -3
  7. package/esm2022/lib/Pages/_layout/components/topbar/topbar.component.mjs +15 -22
  8. package/esm2022/lib/Pages/anonymouslayout/activation/activation.component.mjs +1 -1
  9. package/esm2022/lib/Pages/anonymouslayout/anonymouslayout.component.mjs +1 -1
  10. package/esm2022/lib/Pages/anonymouslayout/anonymouslayout.module.mjs +1 -1
  11. package/esm2022/lib/Pages/anonymouslayout/change-password/change-password.component.mjs +1 -1
  12. package/esm2022/lib/Pages/anonymouslayout/forgot-password/forgot-password.component.mjs +1 -1
  13. package/esm2022/lib/Pages/anonymouslayout/login/login.component.mjs +1 -1
  14. package/esm2022/lib/Pages/anonymouslayout/rest-password/rest-password.component.mjs +1 -1
  15. package/esm2022/lib/Pages/anonymouslayout/upload-license/upload-license.component.mjs +1 -1
  16. package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration-edit/auth-configuration-edit.component.mjs +4 -4
  17. package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration.component.mjs +3 -3
  18. package/esm2022/lib/Pages/configurations/configuration/configuration.component.mjs +167 -99
  19. package/esm2022/lib/Pages/core/authentication/admin.guard.mjs +7 -4
  20. package/esm2022/lib/Pages/core/authentication/auth.guard.mjs +1 -1
  21. package/esm2022/lib/Pages/departments/department/department.component.mjs +108 -30
  22. package/esm2022/lib/Pages/departments/department-info/department-info.component.mjs +1 -1
  23. package/esm2022/lib/Pages/documents/add-document/add-document.component.mjs +1 -1
  24. package/esm2022/lib/Pages/documents/document-master-layouts/document-master-layouts.component.mjs +1 -1
  25. package/esm2022/lib/Pages/documents/document-template-info/document-template-info.component.mjs +1 -1
  26. package/esm2022/lib/Pages/documents/edit-document/edit-document.component.mjs +1 -1
  27. package/esm2022/lib/Pages/documents/edit-document-template/edit-document-template.component.mjs +1 -1
  28. package/esm2022/lib/Pages/helpCenter/help-center/help-center.component.mjs +96 -15
  29. package/esm2022/lib/Pages/helpCenter/help-center-preview/help-center-preview.component.mjs +1 -1
  30. package/esm2022/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.mjs +1 -1
  31. package/esm2022/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.mjs +1 -1
  32. package/esm2022/lib/Pages/home/home.component.mjs +17 -6
  33. package/esm2022/lib/Pages/home/home.module.mjs +1 -1
  34. package/esm2022/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.mjs +1 -1
  35. package/esm2022/lib/Pages/jobs/jobs/jobs.component.mjs +1 -1
  36. package/esm2022/lib/Pages/license/license/license.component.mjs +1 -1
  37. package/esm2022/lib/Pages/license/license.module.mjs +1 -1
  38. package/esm2022/lib/Pages/localizations/localizations-replace-text/localizations-replace-text.component.mjs +1 -1
  39. package/esm2022/lib/Pages/localizations/localizations.component.mjs +1 -1
  40. package/esm2022/lib/Pages/localizations/localizations.module.mjs +1 -1
  41. package/esm2022/lib/Pages/logs/log/log.component.mjs +1 -1
  42. package/esm2022/lib/Pages/lookups/lookup/lookup.component.mjs +1 -1
  43. package/esm2022/lib/Pages/lookups/lookup-group/lookup-group.component.mjs +1 -1
  44. package/esm2022/lib/Pages/lookups/lookup-item/lookup-item.component.mjs +1 -1
  45. package/esm2022/lib/Pages/notifications/add-notification/add-notification.component.mjs +85 -58
  46. package/esm2022/lib/Pages/notifications/edit-email/edit-email.component.mjs +1 -1
  47. package/esm2022/lib/Pages/notifications/edit-notification/edit-notification.component.mjs +55 -26
  48. package/esm2022/lib/Pages/notifications/edit-sms/edit-sms.component.mjs +1 -1
  49. package/esm2022/lib/Pages/notifications/master-layouts/master-layouts.component.mjs +68 -16
  50. package/esm2022/lib/Pages/notifications/notifications.module.mjs +2 -2
  51. package/esm2022/lib/Pages/notifications/notifications.routing.mjs +66 -0
  52. package/esm2022/lib/Pages/notifications/template-info/template-info.component.mjs +1 -1
  53. package/esm2022/lib/Pages/notifications/templates/templates.component.mjs +105 -58
  54. package/esm2022/lib/Pages/organization/add-organization/add-organization.component.mjs +107 -0
  55. package/esm2022/lib/Pages/organization/add-organization/index.mjs +2 -0
  56. package/esm2022/lib/Pages/organization/edit-organization/edit-organization.component.mjs +115 -0
  57. package/esm2022/lib/Pages/organization/edit-organization/index.mjs +2 -0
  58. package/esm2022/lib/Pages/organization/index.mjs +7 -0
  59. package/esm2022/lib/Pages/organization/list-organization/index.mjs +2 -0
  60. package/esm2022/lib/Pages/organization/list-organization/list-organization.component.mjs +181 -0
  61. package/esm2022/lib/Pages/organization/organization.component.mjs +15 -0
  62. package/esm2022/lib/Pages/organization/organization.module.mjs +89 -0
  63. package/esm2022/lib/Pages/organization/organization.routing.mjs +36 -0
  64. package/esm2022/lib/Pages/providers/provider/provider.component.mjs +98 -43
  65. package/esm2022/lib/Pages/publicHolidays/public-holiday/public-holiday.component.mjs +1 -1
  66. package/esm2022/lib/Pages/roles/permission-set-info/permission-set-info.component.mjs +3 -3
  67. package/esm2022/lib/Pages/roles/permissions/permissions.component.mjs +73 -33
  68. package/esm2022/lib/Pages/roles/permissionsets/permissionsets.component.mjs +166 -105
  69. package/esm2022/lib/Pages/roles/roles-routing.module.mjs +24 -7
  70. package/esm2022/lib/Pages/sectors/sector/sector.component.mjs +83 -16
  71. package/esm2022/lib/Pages/sectors/sector-info/sector-info.component.mjs +2 -1
  72. package/esm2022/lib/Pages/sectors/sectors-department-info/sectors-department-info.component.mjs +1 -1
  73. package/esm2022/lib/Pages/shared/Services/ActiveDirectoryService.service.mjs +1 -1
  74. package/esm2022/lib/Pages/shared/Services/AnonymousLayoutService.service.mjs +1 -1
  75. package/esm2022/lib/Pages/shared/Services/ConfigurationsService.service.mjs +4 -1
  76. package/esm2022/lib/Pages/shared/Services/DepartmentService.service.mjs +7 -3
  77. package/esm2022/lib/Pages/shared/Services/DocumentHeaderAndFooterTemplate.service.mjs +1 -1
  78. package/esm2022/lib/Pages/shared/Services/DocumentTemplateService.service.mjs +1 -1
  79. package/esm2022/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.mjs +6 -1
  80. package/esm2022/lib/Pages/shared/Services/HelpCenterService.service.mjs +7 -3
  81. package/esm2022/lib/Pages/shared/Services/ImpersonationRuleService.service.mjs +1 -1
  82. package/esm2022/lib/Pages/shared/Services/JobsService.service.mjs +1 -1
  83. package/esm2022/lib/Pages/shared/Services/LicenseService.service.mjs +1 -1
  84. package/esm2022/lib/Pages/shared/Services/LogsService.mjs +1 -1
  85. package/esm2022/lib/Pages/shared/Services/LookupGroupsService.service.mjs +1 -1
  86. package/esm2022/lib/Pages/shared/Services/LookupService.service.mjs +1 -1
  87. package/esm2022/lib/Pages/shared/Services/PermissionSetService.service.mjs +7 -3
  88. package/esm2022/lib/Pages/shared/Services/PermissionsService.service.mjs +1 -1
  89. package/esm2022/lib/Pages/shared/Services/PublicHolidayService.service.mjs +1 -1
  90. package/esm2022/lib/Pages/shared/Services/SectorService.service.mjs +4 -1
  91. package/esm2022/lib/Pages/shared/Services/TemplateService.service.mjs +4 -3
  92. package/esm2022/lib/Pages/shared/Services/WorkFlowVersionService.service.mjs +1 -1
  93. package/esm2022/lib/Pages/shared/Services/WorkflowActivityService.service.mjs +1 -1
  94. package/esm2022/lib/Pages/shared/Services/WorkflowInstanceService.service.mjs +1 -1
  95. package/esm2022/lib/Pages/shared/Services/WorkflowLogVariablesService.service.mjs +1 -1
  96. package/esm2022/lib/Pages/shared/Services/WorkflowService.service.mjs +1 -1
  97. package/esm2022/lib/Pages/shared/Services/WorkflowVariablesService.service.mjs +1 -1
  98. package/esm2022/lib/Pages/shared/Services/injectionModuleService.service.mjs +52 -22
  99. package/esm2022/lib/Pages/shared/Services/localizationsService.service .mjs +1 -1
  100. package/esm2022/lib/Pages/shared/Services/organization.service.mjs +36 -0
  101. package/esm2022/lib/Pages/shared/Services/provider.service.mjs +1 -1
  102. package/esm2022/lib/Pages/shared/Services/survey-question.service.mjs +1 -1
  103. package/esm2022/lib/Pages/shared/Services/survey.service.mjs +1 -1
  104. package/esm2022/lib/Pages/shared/Services/userService.service.mjs +1 -1
  105. package/esm2022/lib/Pages/shared/components/external-url/external-url.component.mjs +1 -1
  106. package/esm2022/lib/Pages/shared/components/survey/add-survey/add-survey.component.mjs +1 -1
  107. package/esm2022/lib/Pages/shared/components/survey/delete-survey/delete-survey.component.mjs +1 -1
  108. package/esm2022/lib/Pages/shared/components/survey/duplicate-survey/duplicate-survey.component.mjs +1 -1
  109. package/esm2022/lib/Pages/shared/components/survey/edit-survey/edit-survey.component.mjs +1 -1
  110. package/esm2022/lib/Pages/shared/components/survey/submissions/delete-submission/delete-submission.component.mjs +1 -1
  111. package/esm2022/lib/Pages/shared/components/survey/submissions/eliminate-submission/eliminate-submission.component.mjs +1 -1
  112. package/esm2022/lib/Pages/shared/components/survey/submissions/uneliminate-submission/uneliminate-submission.component.mjs +1 -1
  113. package/esm2022/lib/Pages/shared/components/survey/survey-info/add-question/add-question.component.mjs +1 -1
  114. package/esm2022/lib/Pages/shared/components/survey/survey-info/delete-question/delete-question.component.mjs +1 -1
  115. package/esm2022/lib/Pages/shared/components/survey/survey-info/edit-question/edit-question.component.mjs +1 -1
  116. package/esm2022/lib/Pages/shared/components/survey/survey-info/preview/preview.component.mjs +1 -1
  117. package/esm2022/lib/Pages/shared/components/survey/survey-info/publish-survey/publish-survey.component.mjs +1 -1
  118. package/esm2022/lib/Pages/shared/components/survey/survey-info/result-question/result.component.mjs +1 -1
  119. package/esm2022/lib/Pages/shared/components/survey/survey-info/take-survey/take-survey.component.mjs +1 -1
  120. package/esm2022/lib/Pages/shared/components/survey/survey-info/unpublish-survey/unpublish-survey.component.mjs +1 -1
  121. package/esm2022/lib/Pages/shared/components/survey-form-item/survey-form-item.component.mjs +1 -1
  122. package/esm2022/lib/Pages/shared/config.service.mjs +17 -0
  123. package/esm2022/lib/Pages/shared/constants.mjs +2 -1
  124. package/esm2022/lib/Pages/shared/index.mjs +14 -0
  125. package/esm2022/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.mjs +36 -3
  126. package/esm2022/lib/Pages/shared/models/DepartmentModels/DepartmentModel.mjs +1 -1
  127. package/esm2022/lib/Pages/shared/models/DocumentsModels/DocumentHeaderAndFooterTemplate.mjs +1 -1
  128. package/esm2022/lib/Pages/shared/models/DocumentsModels/DocumentTemplateDTO.mjs +1 -1
  129. package/esm2022/lib/Pages/shared/models/DocumentsModels/DocumentTemplateInfoDTO.mjs +1 -1
  130. package/esm2022/lib/Pages/shared/models/HelpCenterModels/HelpCenterItemModel.mjs +1 -1
  131. package/esm2022/lib/Pages/shared/models/ImpersonationRuleModels/ImpersonationRuleModel.mjs +1 -1
  132. package/esm2022/lib/Pages/shared/models/ImpersonationRuleModels/ParticipantModel.mjs +1 -1
  133. package/esm2022/lib/Pages/shared/models/InjectedModuleModel/InjectedModule.mjs +1 -1
  134. package/esm2022/lib/Pages/shared/models/LicenseModel/LicenseModel.mjs +1 -1
  135. package/esm2022/lib/Pages/shared/models/LocalizationModels/EditResourceModel.mjs +1 -1
  136. package/esm2022/lib/Pages/shared/models/LocalizationModels/UploadJsonVM.mjs +1 -1
  137. package/esm2022/lib/Pages/shared/models/Lookups/LookupGroupModel.mjs +1 -1
  138. package/esm2022/lib/Pages/shared/models/Lookups/LookupItem.mjs +1 -1
  139. package/esm2022/lib/Pages/shared/models/Lookups/LookupModel.mjs +1 -1
  140. package/esm2022/lib/Pages/shared/models/NotificationsModels/EmailHeaderAndFooterTemplate.mjs +9 -6
  141. package/esm2022/lib/Pages/shared/models/NotificationsModels/EmailTemplateInfoDTO.mjs +1 -1
  142. package/esm2022/lib/Pages/shared/models/NotificationsModels/EmailTemplateTesterModel.mjs +1 -1
  143. package/esm2022/lib/Pages/shared/models/NotificationsModels/SMSTemplateInfoDTO.mjs +1 -1
  144. package/esm2022/lib/Pages/shared/models/NotificationsModels/SMSTemplateTesterModel.mjs +1 -1
  145. package/esm2022/lib/Pages/shared/models/NotificationsModels/SendEmailTemplateModel.mjs +1 -1
  146. package/esm2022/lib/Pages/shared/models/NotificationsModels/TemplateDTO.mjs +1 -2
  147. package/esm2022/lib/Pages/shared/models/NotificationsModels/TemplateEditViewModel.mjs +1 -1
  148. package/esm2022/lib/Pages/shared/models/PermissionsModels/PermissionModel.mjs +17 -3
  149. package/esm2022/lib/Pages/shared/models/PermissionsModels/PermissionSetModel.mjs +17 -3
  150. package/esm2022/lib/Pages/shared/models/PublicHolidayModels/PublicHolidayModel.mjs +1 -1
  151. package/esm2022/lib/Pages/shared/models/SectorModels/SectorModel.mjs +1 -1
  152. package/esm2022/lib/Pages/shared/models/SurveyModels/add-survey-submissio.mjs +1 -1
  153. package/esm2022/lib/Pages/shared/models/SurveyModels/survey-field-options.mjs +1 -1
  154. package/esm2022/lib/Pages/shared/models/SurveyModels/survey-question-option.mjs +1 -1
  155. package/esm2022/lib/Pages/shared/models/SurveyModels/survey-question.mjs +1 -1
  156. package/esm2022/lib/Pages/shared/models/UserModels/AddUserModel.mjs +1 -1
  157. package/esm2022/lib/Pages/shared/models/UserModels/DropdownsResponseModel.mjs +3 -1
  158. package/esm2022/lib/Pages/shared/models/UserModels/EditUserModel.mjs +1 -1
  159. package/esm2022/lib/Pages/shared/models/UserModels/ExportedFileDTO.mjs +3 -0
  160. package/esm2022/lib/Pages/shared/models/UserModels/FilteredUsersRequestModel.mjs +9 -0
  161. package/esm2022/lib/Pages/shared/models/UserModels/UserListingViewModel.mjs +8 -0
  162. package/esm2022/lib/Pages/shared/models/UserModels/UserModelDTO.mjs +41 -0
  163. package/esm2022/lib/Pages/shared/models/UserModels/UserSearchParamDTO.mjs +1 -1
  164. package/esm2022/lib/Pages/shared/models/UserModels/UsersCountsDTO.mjs +3 -0
  165. package/esm2022/lib/Pages/shared/models/UserModels/index.mjs +13 -0
  166. package/esm2022/lib/Pages/shared/models/WorkflowModels/VariableLookupModel.mjs +1 -1
  167. package/esm2022/lib/Pages/shared/models/WorkflowModels/WFActivityModel.mjs +1 -1
  168. package/esm2022/lib/Pages/shared/models/WorkflowModels/WFCreationModel.mjs +1 -1
  169. package/esm2022/lib/Pages/shared/models/WorkflowModels/WFVariableModel.mjs +1 -1
  170. package/esm2022/lib/Pages/shared/models/index.mjs +24 -0
  171. package/esm2022/lib/Pages/shared/models/organization/organization.model.mjs +15 -0
  172. package/esm2022/lib/Pages/shared/modules/public-survey.module.mjs +1 -1
  173. package/esm2022/lib/Pages/shared/modules/survey.module.mjs +1 -1
  174. package/esm2022/lib/Pages/users/users.component.mjs +143 -60
  175. package/esm2022/lib/Pages/users/users.module.mjs +1 -1
  176. package/esm2022/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.mjs +1 -1
  177. package/esm2022/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.mjs +1 -1
  178. package/esm2022/lib/Pages/workflows/instance-info/instance-info.component.mjs +1 -1
  179. package/esm2022/lib/Pages/workflows/tabs/tabs.component.mjs +1 -1
  180. package/esm2022/lib/Pages/workflows/version-info/version-info.component.mjs +1 -1
  181. package/esm2022/lib/Pages/workflows/workflow/workflow.component.mjs +1 -1
  182. package/esm2022/lib/masterlayout.component.mjs +8 -14
  183. package/esm2022/lib/masterlayout.module.mjs +2 -25
  184. package/esm2022/lib/masterlayout.routing.mjs +43 -0
  185. package/fesm2022/bnsights-bbsf-admin-portal.mjs +2516 -1136
  186. package/fesm2022/bnsights-bbsf-admin-portal.mjs.map +1 -1
  187. package/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.d.ts +5 -2
  188. package/lib/Pages/_layout/components/topbar/topbar.component.d.ts +2 -8
  189. package/lib/Pages/configurations/configuration/configuration.component.d.ts +21 -8
  190. package/lib/Pages/core/authentication/admin.guard.d.ts +3 -2
  191. package/lib/Pages/departments/department/department.component.d.ts +15 -3
  192. package/lib/Pages/helpCenter/help-center/help-center.component.d.ts +16 -3
  193. package/lib/Pages/home/home.component.d.ts +5 -2
  194. package/lib/Pages/notifications/add-notification/add-notification.component.d.ts +16 -5
  195. package/lib/Pages/notifications/edit-notification/edit-notification.component.d.ts +15 -4
  196. package/lib/Pages/notifications/master-layouts/master-layouts.component.d.ts +17 -5
  197. package/lib/Pages/notifications/notifications.module.d.ts +1 -1
  198. package/lib/Pages/notifications/templates/templates.component.d.ts +13 -3
  199. package/lib/Pages/organization/add-organization/add-organization.component.d.ts +36 -0
  200. package/lib/Pages/organization/add-organization/index.d.ts +1 -0
  201. package/lib/Pages/organization/edit-organization/edit-organization.component.d.ts +36 -0
  202. package/lib/Pages/organization/edit-organization/index.d.ts +1 -0
  203. package/lib/Pages/organization/index.d.ts +6 -0
  204. package/lib/Pages/organization/list-organization/index.d.ts +1 -0
  205. package/lib/Pages/organization/list-organization/list-organization.component.d.ts +59 -0
  206. package/lib/Pages/organization/organization.component.d.ts +8 -0
  207. package/lib/Pages/organization/organization.module.d.ts +24 -0
  208. package/lib/Pages/organization/organization.routing.d.ts +7 -0
  209. package/lib/Pages/providers/provider/provider.component.d.ts +17 -8
  210. package/lib/Pages/roles/permissions/permissions.component.d.ts +14 -5
  211. package/lib/Pages/roles/permissionsets/permissionsets.component.d.ts +21 -8
  212. package/lib/Pages/sectors/sector/sector.component.d.ts +12 -1
  213. package/lib/Pages/shared/Services/ConfigurationsService.service.d.ts +2 -1
  214. package/lib/Pages/shared/Services/DepartmentService.service.d.ts +2 -1
  215. package/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.d.ts +2 -0
  216. package/lib/Pages/shared/Services/HelpCenterService.service.d.ts +2 -1
  217. package/lib/Pages/shared/Services/PermissionSetService.service.d.ts +2 -1
  218. package/lib/Pages/shared/Services/SectorService.service.d.ts +1 -0
  219. package/lib/Pages/shared/Services/TemplateService.service.d.ts +1 -1
  220. package/lib/Pages/shared/Services/injectionModuleService.service.d.ts +2 -0
  221. package/lib/Pages/shared/Services/organization.service.d.ts +17 -0
  222. package/lib/Pages/shared/Services/userService.service.d.ts +4 -1
  223. package/lib/Pages/shared/config.service.d.ts +8 -0
  224. package/lib/Pages/shared/constants.d.ts +1 -0
  225. package/lib/Pages/shared/index.d.ts +5 -0
  226. package/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.d.ts +32 -28
  227. package/lib/Pages/shared/models/DepartmentModels/DepartmentModel.d.ts +1 -0
  228. package/lib/Pages/shared/models/HelpCenterModels/HelpCenterItemModel.d.ts +1 -0
  229. package/lib/Pages/shared/models/NotificationsModels/EmailHeaderAndFooterTemplate.d.ts +8 -6
  230. package/lib/Pages/shared/models/NotificationsModels/TemplateDTO.d.ts +0 -1
  231. package/lib/Pages/shared/models/PermissionsModels/PermissionModel.d.ts +17 -5
  232. package/lib/Pages/shared/models/PermissionsModels/PermissionSetModel.d.ts +20 -8
  233. package/lib/Pages/shared/models/SectorModels/SectorModel.d.ts +1 -0
  234. package/lib/Pages/shared/models/UserModels/DropdownsResponseModel.d.ts +2 -0
  235. package/lib/Pages/shared/models/UserModels/EditUserModel.d.ts +1 -0
  236. package/lib/Pages/shared/models/UserModels/ExportedFileDTO.d.ts +4 -0
  237. package/lib/Pages/shared/models/UserModels/FilteredUsersRequestModel.d.ts +7 -0
  238. package/lib/Pages/shared/models/UserModels/UserListingViewModel.d.ts +10 -0
  239. package/lib/Pages/shared/models/UserModels/UserModelDTO.d.ts +38 -0
  240. package/lib/Pages/shared/models/UserModels/UserSearchParamDTO.d.ts +1 -0
  241. package/lib/Pages/shared/models/UserModels/UsersCountsDTO.d.ts +5 -0
  242. package/lib/Pages/shared/models/UserModels/index.d.ts +12 -0
  243. package/lib/Pages/shared/models/index.d.ts +2 -0
  244. package/lib/Pages/shared/models/organization/organization.model.d.ts +22 -0
  245. package/lib/Pages/users/users.component.d.ts +17 -7
  246. package/lib/masterlayout.component.d.ts +1 -2
  247. package/lib/masterlayout.module.d.ts +1 -1
  248. package/package.json +7 -7
  249. package/src/lib/assets/images/menu/organization.svg +16 -0
  250. package/src/lib/assets/sass/custom-styles.scss +2 -2
  251. package/src/lib/assets/sass/style.scss +1 -0
  252. package/bnsights-bbsf-admin-portal-1.1.49.tgz +0 -0
  253. package/esm2022/lib/Pages/notifications/notifications-routing.module.mjs +0 -39
  254. package/esm2022/lib/masterlayout-routing.module.mjs +0 -41
  255. /package/lib/Pages/notifications/{notifications-routing.module.d.ts → notifications.routing.d.ts} +0 -0
  256. /package/lib/{masterlayout-routing.module.d.ts → masterlayout.routing.d.ts} +0 -0
@@ -0,0 +1,107 @@
1
+ import { Component, Input, ViewChild } from '@angular/core';
2
+ import { PageInfoService } from '../../../_metronic/core/services/page-info.service';
3
+ import { FormGroup } from '@angular/forms';
4
+ import { ControlLayout, FormOptions, ImageType, ImageUploadOptions, InputType, MultiLingualTextBoxOptions, TextBoxOptions } from '@bnsights/bbsf-controls';
5
+ import { OrganizationModel } from '../../shared/models/organization/organization.model';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../../_metronic/core/services/page-info.service";
8
+ import * as i2 from "@bnsights/bbsf-utilities";
9
+ import * as i3 from "@ng-bootstrap/ng-bootstrap";
10
+ import * as i4 from "../../shared/Services/organization.service";
11
+ import * as i5 from "@bnsights/bbsf-controls";
12
+ import * as i6 from "ng-inline-svg-2";
13
+ export class AddOrganizationComponent {
14
+ constructor(pageInfoService, utilityService, environmentService, modalService, service, requestHandlerService, authService) {
15
+ this.pageInfoService = pageInfoService;
16
+ this.utilityService = utilityService;
17
+ this.environmentService = environmentService;
18
+ this.modalService = modalService;
19
+ this.service = service;
20
+ this.requestHandlerService = requestHandlerService;
21
+ this.authService = authService;
22
+ this.form = new FormGroup({});
23
+ this.addModelFunc = () => {
24
+ let ResultModel = this.form.value;
25
+ let model = new OrganizationModel();
26
+ model.name = ResultModel[this.multiLingualNameOptions.name];
27
+ model.defaultLanguage = ResultModel[this.languageOptions.name];
28
+ model.defaultTimeZone = ResultModel[this.timeZoneOptions.name];
29
+ model.identifier = ResultModel[this.identifierOptions.name];
30
+ model.logoFileDTO = ResultModel[this.logoOptions.name];
31
+ return Array(model);
32
+ };
33
+ this.addOrganizationFunc = (model) => {
34
+ return this.service.addOrganization(model);
35
+ };
36
+ this.onSuccess = () => {
37
+ this.pagingElement.reinitializePaging();
38
+ };
39
+ }
40
+ ngOnInit() {
41
+ PageInfoService.PageTitle = this.utilityService.getResourceValue("Organization");
42
+ PageInfoService.PageBreadcrumbs = [
43
+ { title: this.utilityService.getResourceValue("Home"), path: '/Admin/Home', isSeparator: false, isActive: false },
44
+ { title: '', path: '', isSeparator: true, isActive: false }
45
+ ];
46
+ this.pageInfoService.calculateTitle();
47
+ this.pageInfoService.calculateBreadcrumbs();
48
+ }
49
+ //#region add modal
50
+ showModal() {
51
+ this.utilityService.startBlockUI();
52
+ this.form = new FormGroup({});
53
+ this.formOptions = new FormOptions();
54
+ this.formOptions.formGroup = this.form;
55
+ this.formOptions.getModelFunction = this.addModelFunc;
56
+ this.formOptions.serviceSubmitFunction = this.addOrganizationFunc;
57
+ this.formOptions.onSuccessHandler = this.onSuccess;
58
+ this.formOptions.pagingReference = this.pagingElement;
59
+ this.multiLingualNameOptions = new MultiLingualTextBoxOptions();
60
+ this.multiLingualNameOptions.name = "Name";
61
+ this.multiLingualNameOptions.arabicLabelKey = "NameInArabic";
62
+ this.multiLingualNameOptions.englishLabelKey = "NameInEnglish";
63
+ this.multiLingualNameOptions.isRequired = true;
64
+ this.multiLingualNameOptions.maxLength = 100;
65
+ this.languageOptions = new TextBoxOptions();
66
+ this.languageOptions.name = "language";
67
+ this.languageOptions.labelKey = "Language";
68
+ this.languageOptions.type = InputType.Text;
69
+ this.languageOptions.value = null;
70
+ this.languageOptions.isRequired = true;
71
+ this.languageOptions.maxLength = 64;
72
+ this.timeZoneOptions = new TextBoxOptions();
73
+ this.timeZoneOptions.name = "timeZone";
74
+ this.timeZoneOptions.labelKey = "TimeZone";
75
+ this.timeZoneOptions.type = InputType.Text;
76
+ this.timeZoneOptions.value = null;
77
+ this.timeZoneOptions.isRequired = true;
78
+ this.timeZoneOptions.maxLength = 64;
79
+ this.identifierOptions = new TextBoxOptions();
80
+ this.identifierOptions.name = "identifier";
81
+ this.identifierOptions.labelKey = "identifier";
82
+ this.identifierOptions.type = InputType.Text;
83
+ this.identifierOptions.value = null;
84
+ this.identifierOptions.isRequired = true;
85
+ this.identifierOptions.maxLength = 64;
86
+ this.logoOptions = new ImageUploadOptions();
87
+ this.logoOptions.name = "LogoFileDTO";
88
+ this.logoOptions.labelKey = "Logo";
89
+ this.logoOptions.viewType = ControlLayout.Vertical;
90
+ this.logoOptions.fileUploadAcceptsTypes = [ImageType.ImageTypes];
91
+ this.logoOptions.isRequired = false;
92
+ this.modalService.open(this.modal, { size: 'xl' });
93
+ this.utilityService.stopBlockUI();
94
+ }
95
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: AddOrganizationComponent, deps: [{ token: i1.PageInfoService }, { token: i2.UtilityService }, { token: i2.EnvironmentService }, { token: i3.NgbModal }, { token: i4.OrganizationService }, { token: i2.RequestHandlerService }, { token: i2.AuthService }], target: i0.ɵɵFactoryTarget.Component }); }
96
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: AddOrganizationComponent, selector: "lib-add-organization", inputs: { pagingElement: "pagingElement" }, viewQueries: [{ propertyName: "modal", first: true, predicate: ["addModal"], descendants: true }], ngImport: i0, template: "<ng-template #addModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" (click)=\"modal.dismiss()\" class=\"btn btn-sm btn-icon btn-active-color-primary\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{ utilityService.getResourceValue('Add') }}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"formOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"multiLingualNameOptions\" [group]=\"form\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"languageOptions\" [group]=\"form\"> </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"timeZoneOptions\" [group]=\"form\"> </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <BBSF-ImageUpload [options]=\"logoOptions\" [group]=\"form\"> </BBSF-ImageUpload>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button\r\n type=\"button\"\r\n #closeOrganizationModal\r\n id=\"closeOrganizationModal\"\r\n data-dismiss=\"modal\"\r\n aria-label=\"Close\"\r\n class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{ utilityService.getResourceValue('CancelLabel') }}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{ utilityService.getResourceValue('SaveLabel') }}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n", dependencies: [{ kind: "component", type: i5.MultiLingualTextBoxComponent, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i5.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["onChange", "onBlur"] }, { kind: "component", type: i5.ImageUploaderComponent, selector: "BBSF-ImageUpload", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i5.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["onChange"] }, { kind: "directive", type: i6.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["inlineSVG", "resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "setSVGAttributes", "removeSVGAttributes", "forceEvalStyles", "evalScripts", "fallbackImgUrl", "fallbackSVG", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }] }); }
97
+ }
98
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: AddOrganizationComponent, decorators: [{
99
+ type: Component,
100
+ args: [{ selector: 'lib-add-organization', template: "<ng-template #addModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" (click)=\"modal.dismiss()\" class=\"btn btn-sm btn-icon btn-active-color-primary\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{ utilityService.getResourceValue('Add') }}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"formOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"multiLingualNameOptions\" [group]=\"form\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"languageOptions\" [group]=\"form\"> </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"timeZoneOptions\" [group]=\"form\"> </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <BBSF-ImageUpload [options]=\"logoOptions\" [group]=\"form\"> </BBSF-ImageUpload>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button\r\n type=\"button\"\r\n #closeOrganizationModal\r\n id=\"closeOrganizationModal\"\r\n data-dismiss=\"modal\"\r\n aria-label=\"Close\"\r\n class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{ utilityService.getResourceValue('CancelLabel') }}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{ utilityService.getResourceValue('SaveLabel') }}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n" }]
101
+ }], ctorParameters: () => [{ type: i1.PageInfoService }, { type: i2.UtilityService }, { type: i2.EnvironmentService }, { type: i3.NgbModal }, { type: i4.OrganizationService }, { type: i2.RequestHandlerService }, { type: i2.AuthService }], propDecorators: { pagingElement: [{
102
+ type: Input
103
+ }], modal: [{
104
+ type: ViewChild,
105
+ args: ["addModal", { static: false }]
106
+ }] } });
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLW9yZ2FuaXphdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL29yZ2FuaXphdGlvbi9hZGQtb3JnYW5pemF0aW9uL2FkZC1vcmdhbml6YXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9vcmdhbml6YXRpb24vYWRkLW9yZ2FuaXphdGlvbi9hZGQtb3JnYW5pemF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFFckYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsMEJBQTBCLEVBQW1CLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVLLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDOzs7Ozs7OztBQVF4RixNQUFNLE9BQU8sd0JBQXdCO0lBWW5DLFlBQ1UsZUFBZ0MsRUFDakMsY0FBOEIsRUFDN0Isa0JBQXNDLEVBQ3RDLFlBQXNCLEVBQ3RCLE9BQTRCLEVBQzVCLHFCQUE0QyxFQUM1QyxXQUF3QjtRQU54QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDakMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzdCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsaUJBQVksR0FBWixZQUFZLENBQVU7UUFDdEIsWUFBTyxH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LElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO1FBQzNDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQzdELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDO1FBQy9ELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQy9DLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBRTdDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7UUFDdkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQzNDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFDM0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFFcEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQztRQUN2QyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7UUFDM0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztRQUMzQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUVwQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUM5QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQztRQUMzQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQztRQUMvQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFDN0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDcEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDekMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFFdEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsYUFBYSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztRQUNuQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDO1FBQ25ELElBQUksQ0FBQyxXQUFXLENBQUMsc0JBQXNCLEdBQUcsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBRXBDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFxQixDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNwQyxDQUFDOzhHQXhGVSx3QkFBd0I7a0dBQXhCLHdCQUF3QiwyTUNkckMsKzlEQTRDQTs7MkZEOUJhLHdCQUF3QjtrQkFKcEMsU0FBUzsrQkFDRSxzQkFBc0I7eVFBS3ZCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ29DLEtBQUs7c0JBQTlDLFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9yZ2FuaXphdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvU2VydmljZXMvb3JnYW5pemF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fbWV0cm9uaWMvY29yZS9zZXJ2aWNlcy9wYWdlLWluZm8uc2VydmljZSc7XHJcbmltcG9ydCB7IE5nYk1vZGFsLCBOZ2JNb2RhbE9wdGlvbnMgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29udHJvbExheW91dCwgRm9ybU9wdGlvbnMsIEltYWdlVHlwZSwgSW1hZ2VVcGxvYWRPcHRpb25zLCBJbnB1dFR5cGUsIE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zLCBQYWdpbmdDb21wb25lbnQsIFRleHRCb3hPcHRpb25zIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMnO1xyXG5pbXBvcnQgeyBPcmdhbml6YXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvb3JnYW5pemF0aW9uL29yZ2FuaXphdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UsIEVudmlyb25tZW50U2VydmljZSwgUmVxdWVzdEhhbmRsZXJTZXJ2aWNlLCBBdXRoU2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1hZGQtb3JnYW5pemF0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWRkLW9yZ2FuaXphdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBZGRPcmdhbml6YXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKSBwYWdpbmdFbGVtZW50OiBQYWdpbmdDb21wb25lbnQ8YW55PjtcclxuICBAVmlld0NoaWxkKFwiYWRkTW9kYWxcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIG1vZGFsOiBFbGVtZW50UmVmO1xyXG4gIGZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBmb3JtT3B0aW9uczogRm9ybU9wdGlvbnM7XHJcbiAgbXVsdGlMaW5ndWFsTmFtZU9wdGlvbnM6IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIGxhbmd1YWdlT3B0aW9uczogVGV4dEJveE9wdGlvbnM7XHJcbiAgdGltZVpvbmVPcHRpb25zOiBUZXh0Qm94T3B0aW9ucztcclxuICBsb2dvT3B0aW9uczogSW1hZ2VVcGxvYWRPcHRpb25zO1xyXG4gIGlkZW50aWZpZXJPcHRpb25zOiBUZXh0Qm94T3B0aW9ucztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHBhZ2VJbmZvU2VydmljZTogUGFnZUluZm9TZXJ2aWNlLFxyXG4gICAgcHVibGljIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgZW52aXJvbm1lbnRTZXJ2aWNlOiBFbnZpcm9ubWVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsXHJcbiAgICBwcml2YXRlIHNlcnZpY2U6IE9yZ2FuaXphdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTogUmVxdWVzdEhhbmRsZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlVGl0bGUgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJPcmdhbml6YXRpb25cIik7XHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZUJyZWFkY3J1bWJzID0gW1xyXG4gICAgICB7IHRpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJIb21lXCIpLCBwYXRoOiAnL0FkbWluL0hvbWUnLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICB7IHRpdGxlOiAnJywgcGF0aDogJycsIGlzU2VwYXJhdG9yOiB0cnVlLCBpc0FjdGl2ZTogZmFsc2UgfVxyXG5cclxuICAgIF07XHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVUaXRsZSgpO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlQnJlYWRjcnVtYnMoKTtcclxuICB9XHJcblxyXG5cclxuICAvLyNyZWdpb24gYWRkIG1vZGFsXHJcbiAgc2hvd01vZGFsKCkge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKTtcclxuICAgIHRoaXMuZm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG5cclxuICAgIHRoaXMuZm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgIHRoaXMuZm9ybU9wdGlvbnMuZm9ybUdyb3VwID0gdGhpcy5mb3JtO1xyXG4gICAgdGhpcy5mb3JtT3B0aW9ucy5nZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5hZGRNb2RlbEZ1bmM7XHJcbiAgICB0aGlzLmZvcm1PcHRpb25zLnNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuYWRkT3JnYW5pemF0aW9uRnVuYztcclxuICAgIHRoaXMuZm9ybU9wdGlvbnMub25TdWNjZXNzSGFuZGxlciA9IHRoaXMub25TdWNjZXNzO1xyXG4gICAgdGhpcy5mb3JtT3B0aW9ucy5wYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnQ7XHJcblxyXG4gICAgdGhpcy5tdWx0aUxpbmd1YWxOYW1lT3B0aW9ucyA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5tdWx0aUxpbmd1YWxOYW1lT3B0aW9ucy5uYW1lID0gXCJOYW1lXCI7XHJcbiAgICB0aGlzLm11bHRpTGluZ3VhbE5hbWVPcHRpb25zLmFyYWJpY0xhYmVsS2V5ID0gXCJOYW1lSW5BcmFiaWNcIjtcclxuICAgIHRoaXMubXVsdGlMaW5ndWFsTmFtZU9wdGlvbnMuZW5nbGlzaExhYmVsS2V5ID0gXCJOYW1lSW5FbmdsaXNoXCI7XHJcbiAgICB0aGlzLm11bHRpTGluZ3VhbE5hbWVPcHRpb25zLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5tdWx0aUxpbmd1YWxOYW1lT3B0aW9ucy5tYXhMZW5ndGggPSAxMDA7XHJcblxyXG4gICAgdGhpcy5sYW5ndWFnZU9wdGlvbnMgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMubGFuZ3VhZ2VPcHRpb25zLm5hbWUgPSBcImxhbmd1YWdlXCI7XHJcbiAgICB0aGlzLmxhbmd1YWdlT3B0aW9ucy5sYWJlbEtleSA9IFwiTGFuZ3VhZ2VcIjtcclxuICAgIHRoaXMubGFuZ3VhZ2VPcHRpb25zLnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgIHRoaXMubGFuZ3VhZ2VPcHRpb25zLnZhbHVlID0gbnVsbDtcclxuICAgIHRoaXMubGFuZ3VhZ2VPcHRpb25zLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5sYW5ndWFnZU9wdGlvbnMubWF4TGVuZ3RoID0gNjQ7XHJcblxyXG4gICAgdGhpcy50aW1lWm9uZU9wdGlvbnMgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMudGltZVpvbmVPcHRpb25zLm5hbWUgPSBcInRpbWVab25lXCI7XHJcbiAgICB0aGlzLnRpbWVab25lT3B0aW9ucy5sYWJlbEtleSA9IFwiVGltZVpvbmVcIjtcclxuICAgIHRoaXMudGltZVpvbmVPcHRpb25zLnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgIHRoaXMudGltZVpvbmVPcHRpb25zLnZhbHVlID0gbnVsbDtcclxuICAgIHRoaXMudGltZVpvbmVPcHRpb25zLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgdGhpcy50aW1lWm9uZU9wdGlvbnMubWF4TGVuZ3RoID0gNjQ7XHJcblxyXG4gICAgdGhpcy5pZGVudGlmaWVyT3B0aW9ucyA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5pZGVudGlmaWVyT3B0aW9ucy5uYW1lID0gXCJpZGVudGlmaWVyXCI7XHJcbiAgICB0aGlzLmlkZW50aWZpZXJPcHRpb25zLmxhYmVsS2V5ID0gXCJpZGVudGlmaWVyXCI7XHJcbiAgICB0aGlzLmlkZW50aWZpZXJPcHRpb25zLnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgIHRoaXMuaWRlbnRpZmllck9wdGlvbnMudmFsdWUgPSBudWxsO1xyXG4gICAgdGhpcy5pZGVudGlmaWVyT3B0aW9ucy5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgIHRoaXMuaWRlbnRpZmllck9wdGlvbnMubWF4TGVuZ3RoID0gNjQ7XHJcblxyXG4gICAgdGhpcy5sb2dvT3B0aW9ucyA9IG5ldyBJbWFnZVVwbG9hZE9wdGlvbnMoKTtcclxuICAgIHRoaXMubG9nb09wdGlvbnMubmFtZSA9IFwiTG9nb0ZpbGVEVE9cIjtcclxuICAgIHRoaXMubG9nb09wdGlvbnMubGFiZWxLZXkgPSBcIkxvZ29cIjtcclxuICAgIHRoaXMubG9nb09wdGlvbnMudmlld1R5cGUgPSBDb250cm9sTGF5b3V0LlZlcnRpY2FsO1xyXG4gICAgdGhpcy5sb2dvT3B0aW9ucy5maWxlVXBsb2FkQWNjZXB0c1R5cGVzID0gW0ltYWdlVHlwZS5JbWFnZVR5cGVzXTtcclxuICAgIHRoaXMubG9nb09wdGlvbnMuaXNSZXF1aXJlZCA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy5tb2RhbCwgeyBzaXplOiAneGwnIH0gYXMgTmdiTW9kYWxPcHRpb25zKTtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICB9XHJcblxyXG5cclxuICBhZGRNb2RlbEZ1bmMgPSAoKTogT3JnYW5pemF0aW9uTW9kZWxbXSA9PiB7XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLmZvcm0udmFsdWUgYXMgYW55O1xyXG4gICAgbGV0IG1vZGVsOiBPcmdhbml6YXRpb25Nb2RlbCA9IG5ldyBPcmdhbml6YXRpb25Nb2RlbCgpO1xyXG5cclxuICAgIG1vZGVsLm5hbWUgPSBSZXN1bHRNb2RlbFt0aGlzLm11bHRpTGluZ3VhbE5hbWVPcHRpb25zLm5hbWVdO1xyXG4gICAgbW9kZWwuZGVmYXVsdExhbmd1YWdlID0gUmVzdWx0TW9kZWxbdGhpcy5sYW5ndWFnZU9wdGlvbnMubmFtZV07XHJcbiAgICBtb2RlbC5kZWZhdWx0VGltZVpvbmUgPSBSZXN1bHRNb2RlbFt0aGlzLnRpbWVab25lT3B0aW9ucy5uYW1lXTtcclxuICAgIG1vZGVsLmlkZW50aWZpZXIgPSBSZXN1bHRNb2RlbFt0aGlzLmlkZW50aWZpZXJPcHRpb25zLm5hbWVdO1xyXG4gICAgbW9kZWwubG9nb0ZpbGVEVE8gPSBSZXN1bHRNb2RlbFt0aGlzLmxvZ29PcHRpb25zLm5hbWVdO1xyXG5cclxuICAgIHJldHVybiBBcnJheShtb2RlbCk7XHJcbiAgfTtcclxuXHJcbiAgYWRkT3JnYW5pemF0aW9uRnVuYyA9IChtb2RlbDogT3JnYW5pemF0aW9uTW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VydmljZS5hZGRPcmdhbml6YXRpb24obW9kZWwpO1xyXG4gIH07XHJcblxyXG4gIG9uU3VjY2VzcyA9ICgpID0+IHtcclxuICAgIHRoaXMucGFnaW5nRWxlbWVudC5yZWluaXRpYWxpemVQYWdpbmcoKTtcclxuICB9O1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxufVxyXG4iLCI8bmctdGVtcGxhdGUgI2FkZE1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdBZGQnKSB9fTwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiZm9ybU9wdGlvbnNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwibXVsdGlMaW5ndWFsTmFtZU9wdGlvbnNcIiBbZ3JvdXBdPVwiZm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJsYW5ndWFnZU9wdGlvbnNcIiBbZ3JvdXBdPVwiZm9ybVwiPiA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwidGltZVpvbmVPcHRpb25zXCIgW2dyb3VwXT1cImZvcm1cIj4gPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtSW1hZ2VVcGxvYWQgW29wdGlvbnNdPVwibG9nb09wdGlvbnNcIiBbZ3JvdXBdPVwiZm9ybVwiPiA8L0JCU0YtSW1hZ2VVcGxvYWQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgI2Nsb3NlT3JnYW5pemF0aW9uTW9kYWxcclxuICAgICAgICAgIGlkPVwiY2xvc2VPcmdhbml6YXRpb25Nb2RhbFwiXHJcbiAgICAgICAgICBkYXRhLWRpc21pc3M9XCJtb2RhbFwiXHJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xvc2VcIlxyXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTMgYnRuLXNtXCJcclxuICAgICAgICAgIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgIHt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0NhbmNlbExhYmVsJykgfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdTYXZlTGFiZWwnKSB9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './add-organization.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL29yZ2FuaXphdGlvbi9hZGQtb3JnYW5pemF0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsOEJBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FkZC1vcmdhbml6YXRpb24uY29tcG9uZW50JztcclxuIl19
@@ -0,0 +1,115 @@
1
+ import { Component, Input, ViewChild } from '@angular/core';
2
+ import { PageInfoService } from '../../../_metronic/core/services/page-info.service';
3
+ import { FormGroup } from '@angular/forms';
4
+ import { ControlLayout, EnglishArabicDTO, FormOptions, ImageType, ImageUploadOptions, InputType, MultiLingualTextBoxOptions, TextBoxOptions } from '@bnsights/bbsf-controls';
5
+ import { OrganizationModel } from '../../shared/models/organization/organization.model';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../../_metronic/core/services/page-info.service";
8
+ import * as i2 from "@bnsights/bbsf-utilities";
9
+ import * as i3 from "@ng-bootstrap/ng-bootstrap";
10
+ import * as i4 from "../../shared/Services/organization.service";
11
+ import * as i5 from "@bnsights/bbsf-controls";
12
+ import * as i6 from "ng-inline-svg-2";
13
+ export class EditOrganizationComponent {
14
+ constructor(pageInfoService, utilityService, environmentService, modalService, service, requestHandlerService, authService) {
15
+ this.pageInfoService = pageInfoService;
16
+ this.utilityService = utilityService;
17
+ this.environmentService = environmentService;
18
+ this.modalService = modalService;
19
+ this.service = service;
20
+ this.requestHandlerService = requestHandlerService;
21
+ this.authService = authService;
22
+ this.form = new FormGroup({});
23
+ this.editModelFunc = () => {
24
+ let ResultModel = this.form.value;
25
+ let model = new OrganizationModel();
26
+ model.name = ResultModel[this.multiLingualNameOptions.name];
27
+ model.defaultLanguage = ResultModel[this.languageOptions.name];
28
+ model.defaultTimeZone = ResultModel[this.timeZoneOptions.name];
29
+ model.identifier = ResultModel[this.identifierOptions.name];
30
+ model.logoFileDTO = ResultModel[this.logoOptions.name];
31
+ return Array(model);
32
+ };
33
+ this.editOrganizationFunc = (model) => {
34
+ return this.service.editOrganization(model);
35
+ };
36
+ this.onSuccess = () => {
37
+ this.pagingElement.reinitializePaging();
38
+ };
39
+ }
40
+ ngOnInit() {
41
+ PageInfoService.PageTitle = this.utilityService.getResourceValue("Organization");
42
+ PageInfoService.PageBreadcrumbs = [
43
+ { title: this.utilityService.getResourceValue("Home"), path: '/Admin/Home', isSeparator: false, isActive: false },
44
+ { title: '', path: '', isSeparator: true, isActive: false }
45
+ ];
46
+ this.pageInfoService.calculateTitle();
47
+ this.pageInfoService.calculateBreadcrumbs();
48
+ }
49
+ //#region add modal
50
+ showModal(id) {
51
+ this.utilityService.startBlockUI();
52
+ this.form = new FormGroup({});
53
+ this.formOptions = new FormOptions();
54
+ this.formOptions.formGroup = this.form;
55
+ this.formOptions.getModelFunction = this.editModelFunc;
56
+ this.formOptions.serviceSubmitFunction = this.editOrganizationFunc;
57
+ this.formOptions.onSuccessHandler = this.onSuccess;
58
+ this.formOptions.pagingReference = this.pagingElement;
59
+ this.service.getOrganization(id).subscribe(res => {
60
+ let name = new EnglishArabicDTO();
61
+ let result = res.model;
62
+ name.arabic = result.name.arabic;
63
+ name.english = result.name.english;
64
+ this.multiLingualNameOptions = new MultiLingualTextBoxOptions();
65
+ this.multiLingualNameOptions.name = "Name";
66
+ this.multiLingualNameOptions.arabicLabelKey = "NameInArabic";
67
+ this.multiLingualNameOptions.englishLabelKey = "NameInEnglish";
68
+ this.multiLingualNameOptions.isRequired = true;
69
+ this.multiLingualNameOptions.value = name;
70
+ this.multiLingualNameOptions.maxLength = 100;
71
+ this.languageOptions = new TextBoxOptions();
72
+ this.languageOptions.name = "language";
73
+ this.languageOptions.labelKey = "Language";
74
+ this.languageOptions.type = InputType.Text;
75
+ this.languageOptions.value = result.defaultLanguage;
76
+ this.languageOptions.isRequired = true;
77
+ this.languageOptions.maxLength = 64;
78
+ this.timeZoneOptions = new TextBoxOptions();
79
+ this.timeZoneOptions.name = "timeZone";
80
+ this.timeZoneOptions.labelKey = "TimeZone";
81
+ this.timeZoneOptions.type = InputType.Text;
82
+ this.timeZoneOptions.value = result.defaultTimeZone;
83
+ this.timeZoneOptions.isRequired = true;
84
+ this.timeZoneOptions.maxLength = 64;
85
+ this.identifierOptions = new TextBoxOptions();
86
+ this.identifierOptions.name = "identifier";
87
+ this.identifierOptions.labelKey = "identifier";
88
+ this.identifierOptions.type = InputType.Text;
89
+ this.identifierOptions.value = result.identifier;
90
+ this.identifierOptions.isRequired = true;
91
+ this.identifierOptions.maxLength = 64;
92
+ this.logoOptions = new ImageUploadOptions();
93
+ this.logoOptions.name = "LogoFileDTO";
94
+ this.logoOptions.labelKey = "Logo";
95
+ this.logoOptions.viewType = ControlLayout.Vertical;
96
+ this.logoOptions.fileUploadAcceptsTypes = [ImageType.ImageTypes];
97
+ this.logoOptions.isRequired = false;
98
+ this.logoOptions.value = result.logoFileDTO;
99
+ this.modalService.open(this.modal, { size: 'xl' });
100
+ this.utilityService.stopBlockUI();
101
+ });
102
+ }
103
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: EditOrganizationComponent, deps: [{ token: i1.PageInfoService }, { token: i2.UtilityService }, { token: i2.EnvironmentService }, { token: i3.NgbModal }, { token: i4.OrganizationService }, { token: i2.RequestHandlerService }, { token: i2.AuthService }], target: i0.ɵɵFactoryTarget.Component }); }
104
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: EditOrganizationComponent, selector: "lib-edit-organization", inputs: { pagingElement: "pagingElement" }, viewQueries: [{ propertyName: "modal", first: true, predicate: ["editModal"], descendants: true }], ngImport: i0, template: "<ng-template #editModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" (click)=\"modal.dismiss()\" class=\"btn btn-sm btn-icon btn-active-color-primary\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{ utilityService.getResourceValue('Add') }}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"formOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"multiLingualNameOptions\" [group]=\"form\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"languageOptions\" [group]=\"form\"> </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"timeZoneOptions\" [group]=\"form\"> </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <BBSF-ImageUpload [options]=\"logoOptions\" [group]=\"form\"> </BBSF-ImageUpload>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button\r\n type=\"button\"\r\n #closeOrganizationModal\r\n id=\"closeOrganizationModal\"\r\n data-dismiss=\"modal\"\r\n aria-label=\"Close\"\r\n class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{ utilityService.getResourceValue('CancelLabel') }}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{ utilityService.getResourceValue('SaveLabel') }}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n", dependencies: [{ kind: "component", type: i5.MultiLingualTextBoxComponent, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i5.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["onChange", "onBlur"] }, { kind: "component", type: i5.ImageUploaderComponent, selector: "BBSF-ImageUpload", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i5.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["onChange"] }, { kind: "directive", type: i6.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["inlineSVG", "resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "setSVGAttributes", "removeSVGAttributes", "forceEvalStyles", "evalScripts", "fallbackImgUrl", "fallbackSVG", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }] }); }
105
+ }
106
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: EditOrganizationComponent, decorators: [{
107
+ type: Component,
108
+ args: [{ selector: 'lib-edit-organization', template: "<ng-template #editModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" (click)=\"modal.dismiss()\" class=\"btn btn-sm btn-icon btn-active-color-primary\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{ utilityService.getResourceValue('Add') }}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"formOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"multiLingualNameOptions\" [group]=\"form\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"languageOptions\" [group]=\"form\"> </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"timeZoneOptions\" [group]=\"form\"> </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <BBSF-ImageUpload [options]=\"logoOptions\" [group]=\"form\"> </BBSF-ImageUpload>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button\r\n type=\"button\"\r\n #closeOrganizationModal\r\n id=\"closeOrganizationModal\"\r\n data-dismiss=\"modal\"\r\n aria-label=\"Close\"\r\n class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{ utilityService.getResourceValue('CancelLabel') }}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{ utilityService.getResourceValue('SaveLabel') }}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n" }]
109
+ }], ctorParameters: () => [{ type: i1.PageInfoService }, { type: i2.UtilityService }, { type: i2.EnvironmentService }, { type: i3.NgbModal }, { type: i4.OrganizationService }, { type: i2.RequestHandlerService }, { type: i2.AuthService }], propDecorators: { pagingElement: [{
110
+ type: Input
111
+ }], modal: [{
112
+ type: ViewChild,
113
+ args: ["editModal", { static: false }]
114
+ }] } });
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1vcmdhbml6YXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9vcmdhbml6YXRpb24vZWRpdC1vcmdhbml6YXRpb24vZWRpdC1vcmdhbml6YXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9vcmdhbml6YXRpb24vZWRpdC1vcmdhbml6YXRpb24vZWRpdC1vcmdhbml6YXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUVyRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSwwQkFBMEIsRUFBbUIsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUwsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scURBQXFELENBQUM7Ozs7Ozs7O0FBUXhGLE1BQU0sT0FBTyx5QkFBeUI7SUFZcEMsWUFDVSxlQUFnQyxFQUNqQyxjQUE4QixFQUM3QixrQkFBc0MsRUFDdEMsWUFBc0IsRUFDdEIsT0FBNEIsRUFDNUIscUJBQTRDLEVBQzVDLFdBQXdCO1FBTnhCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDN0IsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxpQkFBWSxHQUFaLFlBQVks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LGFBQWEsQ0FBQyxRQUFRLENBQUM7WUFDbkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsR0FBRyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNqRSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDcEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQztZQUU1QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBcUIsQ0FBQyxDQUFDO1lBQ3RFLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFFTCxDQUFDOzhHQW5HVSx5QkFBeUI7a0dBQXpCLHlCQUF5Qiw2TUNkdEMsZytEQTRDQTs7MkZEOUJhLHlCQUF5QjtrQkFKckMsU0FBUzsrQkFDRSx1QkFBdUI7eVFBS3hCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ3FDLEtBQUs7c0JBQS9DLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9yZ2FuaXphdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvU2VydmljZXMvb3JnYW5pemF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fbWV0cm9uaWMvY29yZS9zZXJ2aWNlcy9wYWdlLWluZm8uc2VydmljZSc7XHJcbmltcG9ydCB7IE5nYk1vZGFsLCBOZ2JNb2RhbE9wdGlvbnMgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29udHJvbExheW91dCwgRW5nbGlzaEFyYWJpY0RUTywgRm9ybU9wdGlvbnMsIEltYWdlVHlwZSwgSW1hZ2VVcGxvYWRPcHRpb25zLCBJbnB1dFR5cGUsIE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zLCBQYWdpbmdDb21wb25lbnQsIFRleHRCb3hPcHRpb25zIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMnO1xyXG5pbXBvcnQgeyBPcmdhbml6YXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvb3JnYW5pemF0aW9uL29yZ2FuaXphdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UsIEVudmlyb25tZW50U2VydmljZSwgUmVxdWVzdEhhbmRsZXJTZXJ2aWNlLCBBdXRoU2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1lZGl0LW9yZ2FuaXphdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2VkaXQtb3JnYW5pemF0aW9uLmNvbXBvbmVudC5odG1sJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEVkaXRPcmdhbml6YXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKSBwYWdpbmdFbGVtZW50OiBQYWdpbmdDb21wb25lbnQ8YW55PjtcclxuICBAVmlld0NoaWxkKFwiZWRpdE1vZGFsXCIsIHsgc3RhdGljOiBmYWxzZSB9KSBtb2RhbDogRWxlbWVudFJlZjtcclxuICBmb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgZm9ybU9wdGlvbnM6IEZvcm1PcHRpb25zO1xyXG4gIG11bHRpTGluZ3VhbE5hbWVPcHRpb25zOiBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucztcclxuICBsYW5ndWFnZU9wdGlvbnM6IFRleHRCb3hPcHRpb25zO1xyXG4gIHRpbWVab25lT3B0aW9uczogVGV4dEJveE9wdGlvbnM7XHJcbiAgbG9nb09wdGlvbnM6IEltYWdlVXBsb2FkT3B0aW9ucztcclxuICBpZGVudGlmaWVyT3B0aW9uczogVGV4dEJveE9wdGlvbnM7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBwYWdlSW5mb1NlcnZpY2U6IFBhZ2VJbmZvU2VydmljZSxcclxuICAgIHB1YmxpYyB1dGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGVudmlyb25tZW50U2VydmljZTogRW52aXJvbm1lbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxyXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBPcmdhbml6YXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZXF1ZXN0SGFuZGxlclNlcnZpY2U6IFJlcXVlc3RIYW5kbGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZVRpdGxlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiT3JnYW5pemF0aW9uXCIpO1xyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VCcmVhZGNydW1icyA9IFtcclxuICAgICAgeyB0aXRsZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSG9tZVwiKSwgcGF0aDogJy9BZG1pbi9Ib21lJywgaXNTZXBhcmF0b3I6IGZhbHNlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgeyB0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlIH1cclxuICAgIF07XHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVUaXRsZSgpO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlQnJlYWRjcnVtYnMoKTtcclxuICB9XHJcblxyXG5cclxuICAvLyNyZWdpb24gYWRkIG1vZGFsXHJcbiAgc2hvd01vZGFsKGlkOiBzdHJpbmcpIHtcclxuXHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG4gICAgdGhpcy5mb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcblxyXG4gICAgdGhpcy5mb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgdGhpcy5mb3JtT3B0aW9ucy5mb3JtR3JvdXAgPSB0aGlzLmZvcm07XHJcbiAgICB0aGlzLmZvcm1PcHRpb25zLmdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmVkaXRNb2RlbEZ1bmM7XHJcbiAgICB0aGlzLmZvcm1PcHRpb25zLnNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZWRpdE9yZ2FuaXphdGlvbkZ1bmM7XHJcbiAgICB0aGlzLmZvcm1PcHRpb25zLm9uU3VjY2Vzc0hhbmRsZXIgPSB0aGlzLm9uU3VjY2VzcztcclxuICAgIHRoaXMuZm9ybU9wdGlvbnMucGFnaW5nUmVmZXJlbmNlID0gdGhpcy5wYWdpbmdFbGVtZW50O1xyXG5cclxuICAgIHRoaXMuc2VydmljZS5nZXRPcmdhbml6YXRpb24oaWQpLnN1YnNjcmliZShyZXMgPT4ge1xyXG5cclxuICAgICAgbGV0IG5hbWUgPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgICBsZXQgcmVzdWx0ID0gcmVzLm1vZGVsO1xyXG4gICAgICBuYW1lLmFyYWJpYyA9IHJlc3VsdC5uYW1lLmFyYWJpYztcclxuICAgICAgbmFtZS5lbmdsaXNoID0gcmVzdWx0Lm5hbWUuZW5nbGlzaDtcclxuXHJcbiAgICAgIHRoaXMubXVsdGlMaW5ndWFsTmFtZU9wdGlvbnMgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5tdWx0aUxpbmd1YWxOYW1lT3B0aW9ucy5uYW1lID0gXCJOYW1lXCI7XHJcbiAgICAgIHRoaXMubXVsdGlMaW5ndWFsTmFtZU9wdGlvbnMuYXJhYmljTGFiZWxLZXkgPSBcIk5hbWVJbkFyYWJpY1wiO1xyXG4gICAgICB0aGlzLm11bHRpTGluZ3VhbE5hbWVPcHRpb25zLmVuZ2xpc2hMYWJlbEtleSA9IFwiTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgICB0aGlzLm11bHRpTGluZ3VhbE5hbWVPcHRpb25zLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLm11bHRpTGluZ3VhbE5hbWVPcHRpb25zLnZhbHVlID0gbmFtZTtcclxuICAgICAgdGhpcy5tdWx0aUxpbmd1YWxOYW1lT3B0aW9ucy5tYXhMZW5ndGggPSAxMDA7XHJcblxyXG4gICAgICB0aGlzLmxhbmd1YWdlT3B0aW9ucyA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmxhbmd1YWdlT3B0aW9ucy5uYW1lID0gXCJsYW5ndWFnZVwiO1xyXG4gICAgICB0aGlzLmxhbmd1YWdlT3B0aW9ucy5sYWJlbEtleSA9IFwiTGFuZ3VhZ2VcIjtcclxuICAgICAgdGhpcy5sYW5ndWFnZU9wdGlvbnMudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLmxhbmd1YWdlT3B0aW9ucy52YWx1ZSA9IHJlc3VsdC5kZWZhdWx0TGFuZ3VhZ2U7XHJcbiAgICAgIHRoaXMubGFuZ3VhZ2VPcHRpb25zLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmxhbmd1YWdlT3B0aW9ucy5tYXhMZW5ndGggPSA2NDtcclxuXHJcbiAgICAgIHRoaXMudGltZVpvbmVPcHRpb25zID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMudGltZVpvbmVPcHRpb25zLm5hbWUgPSBcInRpbWVab25lXCI7XHJcbiAgICAgIHRoaXMudGltZVpvbmVPcHRpb25zLmxhYmVsS2V5ID0gXCJUaW1lWm9uZVwiO1xyXG4gICAgICB0aGlzLnRpbWVab25lT3B0aW9ucy50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMudGltZVpvbmVPcHRpb25zLnZhbHVlID0gcmVzdWx0LmRlZmF1bHRUaW1lWm9uZTtcclxuICAgICAgdGhpcy50aW1lWm9uZU9wdGlvbnMuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMudGltZVpvbmVPcHRpb25zLm1heExlbmd0aCA9IDY0O1xyXG5cclxuICAgICAgdGhpcy5pZGVudGlmaWVyT3B0aW9ucyA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmlkZW50aWZpZXJPcHRpb25zLm5hbWUgPSBcImlkZW50aWZpZXJcIjtcclxuICAgICAgdGhpcy5pZGVudGlmaWVyT3B0aW9ucy5sYWJlbEtleSA9IFwiaWRlbnRpZmllclwiO1xyXG4gICAgICB0aGlzLmlkZW50aWZpZXJPcHRpb25zLnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5pZGVudGlmaWVyT3B0aW9ucy52YWx1ZSA9IHJlc3VsdC5pZGVudGlmaWVyO1xyXG4gICAgICB0aGlzLmlkZW50aWZpZXJPcHRpb25zLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmlkZW50aWZpZXJPcHRpb25zLm1heExlbmd0aCA9IDY0O1xyXG5cclxuICAgICAgdGhpcy5sb2dvT3B0aW9ucyA9IG5ldyBJbWFnZVVwbG9hZE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5sb2dvT3B0aW9ucy5uYW1lID0gXCJMb2dvRmlsZURUT1wiO1xyXG4gICAgICB0aGlzLmxvZ29PcHRpb25zLmxhYmVsS2V5ID0gXCJMb2dvXCI7XHJcbiAgICAgIHRoaXMubG9nb09wdGlvbnMudmlld1R5cGUgPSBDb250cm9sTGF5b3V0LlZlcnRpY2FsO1xyXG4gICAgICB0aGlzLmxvZ29PcHRpb25zLmZpbGVVcGxvYWRBY2NlcHRzVHlwZXMgPSBbSW1hZ2VUeXBlLkltYWdlVHlwZXNdO1xyXG4gICAgICB0aGlzLmxvZ29PcHRpb25zLmlzUmVxdWlyZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5sb2dvT3B0aW9ucy52YWx1ZSA9IHJlc3VsdC5sb2dvRmlsZURUTztcclxuXHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy5tb2RhbCwgeyBzaXplOiAneGwnIH0gYXMgTmdiTW9kYWxPcHRpb25zKTtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIGVkaXRNb2RlbEZ1bmMgPSAoKTogT3JnYW5pemF0aW9uTW9kZWxbXSA9PiB7XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLmZvcm0udmFsdWUgYXMgYW55O1xyXG4gICAgbGV0IG1vZGVsOiBPcmdhbml6YXRpb25Nb2RlbCA9IG5ldyBPcmdhbml6YXRpb25Nb2RlbCgpO1xyXG5cclxuICAgIG1vZGVsLm5hbWUgPSBSZXN1bHRNb2RlbFt0aGlzLm11bHRpTGluZ3VhbE5hbWVPcHRpb25zLm5hbWVdO1xyXG4gICAgbW9kZWwuZGVmYXVsdExhbmd1YWdlID0gUmVzdWx0TW9kZWxbdGhpcy5sYW5ndWFnZU9wdGlvbnMubmFtZV07XHJcbiAgICBtb2RlbC5kZWZhdWx0VGltZVpvbmUgPSBSZXN1bHRNb2RlbFt0aGlzLnRpbWVab25lT3B0aW9ucy5uYW1lXTtcclxuICAgIG1vZGVsLmlkZW50aWZpZXIgPSBSZXN1bHRNb2RlbFt0aGlzLmlkZW50aWZpZXJPcHRpb25zLm5hbWVdO1xyXG4gICAgbW9kZWwubG9nb0ZpbGVEVE8gPSBSZXN1bHRNb2RlbFt0aGlzLmxvZ29PcHRpb25zLm5hbWVdO1xyXG5cclxuICAgIHJldHVybiBBcnJheShtb2RlbCk7XHJcbiAgfTtcclxuXHJcbiAgZWRpdE9yZ2FuaXphdGlvbkZ1bmMgPSAobW9kZWw6IE9yZ2FuaXphdGlvbk1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLnNlcnZpY2UuZWRpdE9yZ2FuaXphdGlvbihtb2RlbCk7XHJcbiAgfTtcclxuXHJcbiAgb25TdWNjZXNzID0gKCkgPT4ge1xyXG4gICAgdGhpcy5wYWdpbmdFbGVtZW50LnJlaW5pdGlhbGl6ZVBhZ2luZygpO1xyXG4gIH07XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG59XHJcbiIsIjxuZy10ZW1wbGF0ZSAjZWRpdE1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdBZGQnKSB9fTwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiZm9ybU9wdGlvbnNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwibXVsdGlMaW5ndWFsTmFtZU9wdGlvbnNcIiBbZ3JvdXBdPVwiZm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJsYW5ndWFnZU9wdGlvbnNcIiBbZ3JvdXBdPVwiZm9ybVwiPiA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwidGltZVpvbmVPcHRpb25zXCIgW2dyb3VwXT1cImZvcm1cIj4gPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtSW1hZ2VVcGxvYWQgW29wdGlvbnNdPVwibG9nb09wdGlvbnNcIiBbZ3JvdXBdPVwiZm9ybVwiPiA8L0JCU0YtSW1hZ2VVcGxvYWQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgI2Nsb3NlT3JnYW5pemF0aW9uTW9kYWxcclxuICAgICAgICAgIGlkPVwiY2xvc2VPcmdhbml6YXRpb25Nb2RhbFwiXHJcbiAgICAgICAgICBkYXRhLWRpc21pc3M9XCJtb2RhbFwiXHJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xvc2VcIlxyXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTMgYnRuLXNtXCJcclxuICAgICAgICAgIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgIHt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0NhbmNlbExhYmVsJykgfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdTYXZlTGFiZWwnKSB9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './edit-organization.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL29yZ2FuaXphdGlvbi9lZGl0LW9yZ2FuaXphdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9lZGl0LW9yZ2FuaXphdGlvbi5jb21wb25lbnQnO1xyXG4iXX0=
@@ -0,0 +1,7 @@
1
+ export * from './add-organization';
2
+ export * from './edit-organization';
3
+ export * from './list-organization';
4
+ export * from './organization.component';
5
+ export * from './organization.module';
6
+ export * from './organization.routing';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL29yZ2FuaXphdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYWRkLW9yZ2FuaXphdGlvbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vZWRpdC1vcmdhbml6YXRpb24nO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpc3Qtb3JnYW5pemF0aW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9vcmdhbml6YXRpb24uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9vcmdhbml6YXRpb24ubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9vcmdhbml6YXRpb24ucm91dGluZyc7XHJcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './list-organization.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL29yZ2FuaXphdGlvbi9saXN0LW9yZ2FuaXphdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saXN0LW9yZ2FuaXphdGlvbi5jb21wb25lbnQnO1xyXG4iXX0=
@@ -0,0 +1,181 @@
1
+ import { ConfirmationModalOptions, FilterItem, FilterType, InputType, PagingOptions, PermissionSets, TextBoxOptions } from '@bnsights/bbsf-controls';
2
+ import { Component, ViewChild } from '@angular/core';
3
+ import { PageInfoService } from '../../../_metronic/core/services/page-info.service';
4
+ import { FormGroup } from '@angular/forms';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../../../_metronic/core/services/page-info.service";
7
+ import * as i2 from "@bnsights/bbsf-utilities";
8
+ import * as i3 from "../../shared/Services/organization.service";
9
+ import * as i4 from "@angular/common";
10
+ import * as i5 from "ng-block-ui";
11
+ import * as i6 from "@bnsights/bbsf-controls";
12
+ import * as i7 from "@angular/material/menu";
13
+ import * as i8 from "@ng-bootstrap/ng-bootstrap";
14
+ import * as i9 from "../../empty-data/empty-data.component";
15
+ import * as i10 from "../edit-organization/edit-organization.component";
16
+ import * as i11 from "../add-organization/add-organization.component";
17
+ export class ListOrganizationComponent {
18
+ //#endregion
19
+ constructor(pageInfoService, utilityService, environmentService, service, authService) {
20
+ this.pageInfoService = pageInfoService;
21
+ this.utilityService = utilityService;
22
+ this.environmentService = environmentService;
23
+ this.service = service;
24
+ this.authService = authService;
25
+ //Page requirements
26
+ this.ApiUrl = this.service.ApiUrl;
27
+ this.permissionSets = PermissionSets;
28
+ this.isMultiTenancyAllowed = false;
29
+ this.isSuperAdmin = false;
30
+ //Filter and paging components
31
+ this.form = new FormGroup({});
32
+ this.filterForm = new FormGroup({});
33
+ this.showFilter = false;
34
+ this.pagingResult = [];
35
+ this.filteredPagingResult = [];
36
+ this.pagingOptions = new PagingOptions();
37
+ this.showPageContent = false;
38
+ this.isFilterLoaded = false;
39
+ this.deleteControlLoaded = false;
40
+ this.activateControlLoaded = false;
41
+ this.deleteOrganization = (id) => {
42
+ return this.service.deleteOrganization(id);
43
+ };
44
+ this.activateOrganization = (id) => {
45
+ var isActivated = this.pagingResult.find(p => p.iD_GUID == id).organizationIsActivated;
46
+ let orgID = isActivated ? null : JSON.stringify(id);
47
+ return this.service.activateOrDeactivateOrganization(orgID);
48
+ };
49
+ this.onActivateOrganizationSuccess = (result) => {
50
+ this.authService.handleAccessTokenWithoutLanguage(result.val);
51
+ };
52
+ this.currentUserProfile = this.authService.getCurrentUser().profile;
53
+ let isMultiTenancyAllowed = this.environmentService.getAllowMultiTenancy();
54
+ this.adminWithMultitenanEnabled = isMultiTenancyAllowed && this.currentUserProfile.permissionSetSID == this.permissionSets.Admin;
55
+ }
56
+ //#region events
57
+ ngOnInit() {
58
+ this.showPageContent = true;
59
+ //Page header (breadcrumb and title)
60
+ PageInfoService.PageTitle = this.utilityService.getResourceValue("Permissions");
61
+ PageInfoService.PageBreadcrumbs = [
62
+ { title: this.utilityService.getResourceValue("Home"), path: '/Admin/Home', isSeparator: false, isActive: false },
63
+ { title: '', path: '', isSeparator: true, isActive: false }
64
+ ];
65
+ this.pageInfoService.calculateTitle();
66
+ this.pageInfoService.calculateBreadcrumbs();
67
+ this.ProductionMode = this.environmentService.getProductionMode();
68
+ this.isMultiTenancyAllowed = this.environmentService.getAllowMultiTenancy();
69
+ this.currentUserProfile = this.authService.getCurrentUser().profile;
70
+ this.isSuperAdmin = this.currentUserProfile.permissionSetSID == this.permissionSets.Admin;
71
+ //initialize page
72
+ this.initializePage();
73
+ }
74
+ //#endregion
75
+ //#region Paging functions
76
+ setListResult(result) {
77
+ this.pagingResult = result;
78
+ this.showPageContent = true;
79
+ this.filteredPagingResult = this.pagingResult;
80
+ }
81
+ //#endregion
82
+ //#region initialize page
83
+ initializePage() {
84
+ //#region input field options
85
+ this.searchTextBox = new TextBoxOptions();
86
+ this.searchTextBox.name = "searchTextBox";
87
+ this.searchTextBox.hideLabel = true;
88
+ this.searchTextBox.type = InputType.Text;
89
+ this.searchTextBox.placeholder = this.utilityService.getResourceValue("SearchByName");
90
+ //#endregion
91
+ this.textInputFilter = new FilterItem();
92
+ this.textInputFilter.formControlName = this.searchTextBox.name;
93
+ this.textInputFilter.actionParameterName = "searchText";
94
+ this.textInputFilter.isFormControl = true;
95
+ this.textInputFilter.filterType = FilterType.TextBox;
96
+ this.pagingOptions.actionPostURL = this.ApiUrl + 'getOrganizationByFilter';
97
+ this.pagingOptions.onKeyPressFiltersControlNames = [this.searchTextBox.name];
98
+ this.pagingOptions.filters = [
99
+ ...this.pagingOptions.filters,
100
+ this.textInputFilter
101
+ ];
102
+ this.isFilterLoaded = true;
103
+ }
104
+ //#endregion
105
+ //#region modal methods
106
+ showAddModal() {
107
+ this.addOrganizationModal.showModal();
108
+ }
109
+ showEditModal(id) {
110
+ this.editOrganizationModal.showModal(id);
111
+ }
112
+ showDeleteModal(id) {
113
+ this.deleteControlLoaded = false;
114
+ this.deletedOrganizationId = id;
115
+ this.deleteConfirmationOptions = new ConfirmationModalOptions();
116
+ this.deleteConfirmationOptions.serviceSubmitFunction = this.deleteOrganization;
117
+ this.deleteConfirmationOptions.serviceSubmitModel = Array(this.deletedOrganizationId);
118
+ this.deleteConfirmationOptions.pagingReference = this.pagingElement;
119
+ this.deleteControlLoaded = true;
120
+ setTimeout(() => {
121
+ this.confirmationModalControl.showModal();
122
+ }, 200);
123
+ }
124
+ showActivateModal(id) {
125
+ var isActivated = this.pagingResult.find(p => p.iD_GUID == id).organizationIsActivated;
126
+ let confirmationBtn;
127
+ let confirmationBody;
128
+ let confirmationHeader;
129
+ if (isActivated) {
130
+ confirmationBtn = this.utilityService.getResourceValue("CancelImpersonate");
131
+ confirmationBody = this.utilityService.getResourceValue("CancelImpersonateOrganizationConfirmationBody");
132
+ confirmationHeader = this.utilityService.getResourceValue("CancelImpersonateOrganizationConfirmation");
133
+ }
134
+ else {
135
+ confirmationBtn = this.utilityService.getResourceValue("Impersonate");
136
+ confirmationBody = this.utilityService.getResourceValue("ImpersonateOrganizationConfirmationBody");
137
+ confirmationHeader = this.utilityService.getResourceValue("ImpersonateOrganizationConfirmation");
138
+ }
139
+ this.activateControlLoaded = false;
140
+ this.activatedOrganizationId = id;
141
+ this.activateConfirmationOptions = new ConfirmationModalOptions();
142
+ this.activateConfirmationOptions.submitButtonText = confirmationBtn;
143
+ this.activateConfirmationOptions.confirmationBody = confirmationBody;
144
+ this.activateConfirmationOptions.confirmationHeader = confirmationHeader;
145
+ this.activateConfirmationOptions.serviceSubmitFunction = this.activateOrganization;
146
+ this.activateConfirmationOptions.serviceSubmitModel = Array(this.activatedOrganizationId);
147
+ this.activateConfirmationOptions.disableSuccessNotification = true;
148
+ this.activateConfirmationOptions.pagingReference = this.pagingElement;
149
+ this.activateConfirmationOptions.onSuccessHandler = this.onActivateOrganizationSuccess;
150
+ this.activateControlLoaded = true;
151
+ setTimeout(() => {
152
+ this.activateConfirmationModalControl.showModal();
153
+ }, 200);
154
+ }
155
+ getActivateText(orgID) {
156
+ var isActivated = this.pagingResult.find(p => p.iD_GUID == orgID).organizationIsActivated;
157
+ return isActivated ? this.utilityService.getResourceValue("CancelImpersonate") : this.utilityService.getResourceValue("Impersonate");
158
+ }
159
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ListOrganizationComponent, deps: [{ token: i1.PageInfoService }, { token: i2.UtilityService }, { token: i2.EnvironmentService }, { token: i3.OrganizationService }, { token: i2.AuthService }], target: i0.ɵɵFactoryTarget.Component }); }
160
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.6", type: ListOrganizationComponent, selector: "lib-list-organization", viewQueries: [{ propertyName: "pagingElement", first: true, predicate: ["pagingElement"], descendants: true }, { propertyName: "confirmationModalControl", first: true, predicate: ["confirmationModalControl"], descendants: true }, { propertyName: "addOrganizationModal", first: true, predicate: ["addOrganizationModal"], descendants: true }, { propertyName: "editOrganizationModal", first: true, predicate: ["editOrganizationModal"], descendants: true }, { propertyName: "activateConfirmationModalControl", first: true, predicate: ["activateConfirmationModalControl"], descendants: true }], ngImport: i0, template: "<block-ui></block-ui>\r\n\r\n<!-- #region page content -->\r\n<div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-header border-0 pt-5\">\r\n <div class=\"card-title align-items-start flex-column\" *ngIf=\"isFilterLoaded\">\r\n <BBSF-TextBox [options]=\"searchTextBox\" [group]=\"form\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n @if (isSuperAdmin) {\r\n <button type=\"button\" class=\"btn btn-sm btn-primary\" title=\"Add\" (click)=\"showAddModal()\">\r\n <i class=\"fas fa-plus me-1\"></i>\r\n {{ utilityService.getResourceValue('Add') }}\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3\">\r\n <div class=\"table-responsive\">\r\n <!-- #region permission list -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('Name') }}</th>\r\n <th class=\"min-w-50px\">{{ utilityService.getResourceValue('Action') }}</th>\r\n </tr>\r\n </thead>\r\n <tbody id=\"listingContainer\" class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let organization of filteredPagingResult\">\r\n <td>\r\n {{ organization.name }}\r\n </td>\r\n <td>\r\n <div *ngIf=\"isSuperAdmin\">\r\n <button mat-button [matMenuTriggerFor]=\"menu\" class=\"btn btn-sm btn-icon btn-light btn-active-light-primary\">\r\n <i class=\"fa fa-ellipsis-h\" aria-hidden=\"true\"></i>\r\n </button>\r\n <mat-menu class=\"mat-menu-content\" #menu=\"matMenu\">\r\n <a class=\"drop-item px-3\" ngbDropdownItem (click)=\"showEditModal(organization.iD_GUID)\">\r\n <span class=\"drop-link px-3\">{{ utilityService.getResourceValue('Edit') }}</span>\r\n </a>\r\n <a ngbDropdownItem class=\"drop-item px-3\" (click)=\"showDeleteModal(organization.iD_GUID)\">\r\n <span class=\"drop-link px-3\">{{ utilityService.getResourceValue('Delete') }}</span>\r\n </a>\r\n <a *ngIf=\"adminWithMultitenanEnabled\" ngbDropdownItem class=\"drop-item px-3\" (click)=\"showActivateModal(organization.iD_GUID)\">\r\n <span class=\"drop-link px-3\">\r\n {{ getActivateText(organization.iD_GUID) }}\r\n </span>\r\n </a>\r\n </mat-menu>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"filteredPagingResult.length == 0\">\r\n <td [attr.colspan]=\"ProductionMode ? '3' : '4'\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <!-- #endregion -->\r\n </div>\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setListResult($event)\" *ngIf=\"isFilterLoaded\" [options]=\"pagingOptions\" [group]=\"form\" #pagingElement> </BBSF-Paging>\r\n </div>\r\n </div>\r\n</div>\r\n<!-- #endregion -->\r\n\r\n<lib-add-organization [pagingElement]=\"pagingElement\" #addOrganizationModal></lib-add-organization>\r\n<lib-edit-organization [pagingElement]=\"pagingElement\" #editOrganizationModal></lib-edit-organization>\r\n<BBSF-ConfirmationModal\r\n *ngIf=\"deleteControlLoaded\"\r\n [options]=\"deleteConfirmationOptions\"\r\n id=\"confirmationModalControl\"\r\n #confirmationModalControl></BBSF-ConfirmationModal>\r\n\r\n <BBSF-ConfirmationModal\r\n *ngIf=\"activateControlLoaded\"\r\n [options]=\"activateConfirmationOptions\"\r\n id=\"activateConfirmationModalControl\"\r\n #activateConfirmationModalControl></BBSF-ConfirmationModal>\r\n", dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.BlockUIComponent, selector: "block-ui", inputs: ["name", "message", "delayStart", "delayStop", "template"] }, { kind: "component", type: i6.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["onChange", "onBlur"] }, { kind: "component", type: i6.PagingComponent, selector: "BBSF-Paging", inputs: ["options", "group"], outputs: ["Items"] }, { kind: "component", type: i6.ConfirmationModalComponent, selector: "BBSF-ConfirmationModal", inputs: ["options"] }, { kind: "component", type: i7.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i8.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["tabindex", "disabled"] }, { kind: "component", type: i9.EmptyDataComponent, selector: "lib-empty-data", inputs: ["Message", "ShowImage", "ImgURL"] }, { kind: "component", type: i10.EditOrganizationComponent, selector: "lib-edit-organization", inputs: ["pagingElement"] }, { kind: "component", type: i11.AddOrganizationComponent, selector: "lib-add-organization", inputs: ["pagingElement"] }] }); }
161
+ }
162
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ListOrganizationComponent, decorators: [{
163
+ type: Component,
164
+ args: [{ selector: 'lib-list-organization', template: "<block-ui></block-ui>\r\n\r\n<!-- #region page content -->\r\n<div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-header border-0 pt-5\">\r\n <div class=\"card-title align-items-start flex-column\" *ngIf=\"isFilterLoaded\">\r\n <BBSF-TextBox [options]=\"searchTextBox\" [group]=\"form\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n @if (isSuperAdmin) {\r\n <button type=\"button\" class=\"btn btn-sm btn-primary\" title=\"Add\" (click)=\"showAddModal()\">\r\n <i class=\"fas fa-plus me-1\"></i>\r\n {{ utilityService.getResourceValue('Add') }}\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3\">\r\n <div class=\"table-responsive\">\r\n <!-- #region permission list -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('Name') }}</th>\r\n <th class=\"min-w-50px\">{{ utilityService.getResourceValue('Action') }}</th>\r\n </tr>\r\n </thead>\r\n <tbody id=\"listingContainer\" class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let organization of filteredPagingResult\">\r\n <td>\r\n {{ organization.name }}\r\n </td>\r\n <td>\r\n <div *ngIf=\"isSuperAdmin\">\r\n <button mat-button [matMenuTriggerFor]=\"menu\" class=\"btn btn-sm btn-icon btn-light btn-active-light-primary\">\r\n <i class=\"fa fa-ellipsis-h\" aria-hidden=\"true\"></i>\r\n </button>\r\n <mat-menu class=\"mat-menu-content\" #menu=\"matMenu\">\r\n <a class=\"drop-item px-3\" ngbDropdownItem (click)=\"showEditModal(organization.iD_GUID)\">\r\n <span class=\"drop-link px-3\">{{ utilityService.getResourceValue('Edit') }}</span>\r\n </a>\r\n <a ngbDropdownItem class=\"drop-item px-3\" (click)=\"showDeleteModal(organization.iD_GUID)\">\r\n <span class=\"drop-link px-3\">{{ utilityService.getResourceValue('Delete') }}</span>\r\n </a>\r\n <a *ngIf=\"adminWithMultitenanEnabled\" ngbDropdownItem class=\"drop-item px-3\" (click)=\"showActivateModal(organization.iD_GUID)\">\r\n <span class=\"drop-link px-3\">\r\n {{ getActivateText(organization.iD_GUID) }}\r\n </span>\r\n </a>\r\n </mat-menu>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"filteredPagingResult.length == 0\">\r\n <td [attr.colspan]=\"ProductionMode ? '3' : '4'\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <!-- #endregion -->\r\n </div>\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setListResult($event)\" *ngIf=\"isFilterLoaded\" [options]=\"pagingOptions\" [group]=\"form\" #pagingElement> </BBSF-Paging>\r\n </div>\r\n </div>\r\n</div>\r\n<!-- #endregion -->\r\n\r\n<lib-add-organization [pagingElement]=\"pagingElement\" #addOrganizationModal></lib-add-organization>\r\n<lib-edit-organization [pagingElement]=\"pagingElement\" #editOrganizationModal></lib-edit-organization>\r\n<BBSF-ConfirmationModal\r\n *ngIf=\"deleteControlLoaded\"\r\n [options]=\"deleteConfirmationOptions\"\r\n id=\"confirmationModalControl\"\r\n #confirmationModalControl></BBSF-ConfirmationModal>\r\n\r\n <BBSF-ConfirmationModal\r\n *ngIf=\"activateControlLoaded\"\r\n [options]=\"activateConfirmationOptions\"\r\n id=\"activateConfirmationModalControl\"\r\n #activateConfirmationModalControl></BBSF-ConfirmationModal>\r\n" }]
165
+ }], ctorParameters: () => [{ type: i1.PageInfoService }, { type: i2.UtilityService }, { type: i2.EnvironmentService }, { type: i3.OrganizationService }, { type: i2.AuthService }], propDecorators: { pagingElement: [{
166
+ type: ViewChild,
167
+ args: ['pagingElement', { static: false }]
168
+ }], confirmationModalControl: [{
169
+ type: ViewChild,
170
+ args: ['confirmationModalControl', { static: false }]
171
+ }], addOrganizationModal: [{
172
+ type: ViewChild,
173
+ args: ["addOrganizationModal", { static: false }]
174
+ }], editOrganizationModal: [{
175
+ type: ViewChild,
176
+ args: ["editOrganizationModal", { static: false }]
177
+ }], activateConfirmationModalControl: [{
178
+ type: ViewChild,
179
+ args: ['activateConfirmationModalControl', { static: false }]
180
+ }] } });
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1vcmdhbml6YXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9vcmdhbml6YXRpb24vbGlzdC1vcmdhbml6YXRpb24vbGlzdC1vcmdhbml6YXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9vcmdhbml6YXRpb24vbGlzdC1vcmdhbml6YXRpb24vbGlzdC1vcmdhbml6YXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE4Qix3QkFBd0IsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBbUIsYUFBYSxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsTSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFHckYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBUzNDLE1BQU0sT0FBTyx5QkFBeUI7SUEwQ25DLFlBQVk7SUFFYixZQUNVLGVBQWdDLEVBQ2pDLGNBQThCLEVBQzdCLGtCQUFzQyxFQUN0QyxPQUE0QixFQUM1QixXQUF3QjtRQUp4QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDakMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzdCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7UUFDNUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFoRGxDLG1CQUFtQjtRQUNuQixXQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8s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QUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDbkksQ0FBQzs4R0F4TFUseUJBQXlCO2tHQUF6Qix5QkFBeUIsMm9CQ2R0QyxzaUlBb0ZBOzsyRkR0RWEseUJBQXlCO2tCQUpyQyxTQUFTOytCQUNFLHVCQUF1Qjs4TUF1QmMsYUFBYTtzQkFBM0QsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQU1hLHdCQUF3QjtzQkFBakYsU0FBUzt1QkFBQywwQkFBMEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBS0Ysb0JBQW9CO3NCQUF6RSxTQUFTO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDRyxxQkFBcUI7c0JBQTNFLFNBQVM7dUJBQUMsdUJBQXVCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQVNjLGdDQUFnQztzQkFBakcsU0FBUzt1QkFBQyxrQ0FBa0MsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudCwgQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zLCBGaWx0ZXJJdGVtLCBGaWx0ZXJUeXBlLCBJbnB1dFR5cGUsIFBhZ2luZ0NvbXBvbmVudCwgUGFnaW5nT3B0aW9ucywgUGVybWlzc2lvblNldHMsIFRleHRCb3hPcHRpb25zIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19tZXRyb25pYy9jb3JlL3NlcnZpY2VzL3BhZ2UtaW5mby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT3JnYW5pemF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9TZXJ2aWNlcy9vcmdhbml6YXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlLCBFbnZpcm9ubWVudFNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBQZXJtaXNzaW9uTGlzdE1vZGVsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9QZXJtaXNzaW9uc01vZGVscy9QZXJtaXNzaW9uTW9kZWwnO1xyXG5pbXBvcnQgeyBBZGRPcmdhbml6YXRpb25Db21wb25lbnQgfSBmcm9tICcuLi9hZGQtb3JnYW5pemF0aW9uJztcclxuaW1wb3J0IHsgRWRpdE9yZ2FuaXphdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL2VkaXQtb3JnYW5pemF0aW9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWxpc3Qtb3JnYW5pemF0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC1vcmdhbml6YXRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGlzdE9yZ2FuaXphdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLy9QYWdlIHJlcXVpcmVtZW50c1xyXG4gIEFwaVVybCA9IHRoaXMuc2VydmljZS5BcGlVcmw7XHJcbiAgUHJvZHVjdGlvbk1vZGU6IGJvb2xlYW47XHJcbiAgY3VycmVudFVzZXJQcm9maWxlOiBhbnk7XHJcbiAgcGVybWlzc2lvblNldHMgPSBQZXJtaXNzaW9uU2V0cztcclxuICBpc011bHRpVGVuYW5jeUFsbG93ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1N1cGVyQWRtaW46IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy9GaWx0ZXIgYW5kIHBhZ2luZyBjb21wb25lbnRzXHJcbiAgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIGZpbHRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBzZWFyY2hUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICBzaG93RmlsdGVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcGFnaW5nUmVzdWx0OiBQZXJtaXNzaW9uTGlzdE1vZGVsW10gPSBbXTtcclxuICBmaWx0ZXJlZFBhZ2luZ1Jlc3VsdDogUGVybWlzc2lvbkxpc3RNb2RlbFtdID0gW107XHJcbiAgcGFnaW5nT3B0aW9uczogUGFnaW5nT3B0aW9ucyA9IG5ldyBQYWdpbmdPcHRpb25zKCk7XHJcbiAgdGV4dElucHV0RmlsdGVyOiBGaWx0ZXJJdGVtO1xyXG4gIHNob3dQYWdlQ29udGVudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzRmlsdGVyTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgncGFnaW5nRWxlbWVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwYWdpbmdFbGVtZW50OiBQYWdpbmdDb21wb25lbnQ8YW55PjtcclxuXHJcbiAgLy8jcmVnaW9uIGRlbGV0ZSBtb2RhbCBkYXRhXHJcbiAgZGVsZXRlZE9yZ2FuaXphdGlvbklkOiBzdHJpbmc7XHJcbiAgZGVsZXRlQ29uZmlybWF0aW9uT3B0aW9uczogQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zO1xyXG4gIGRlbGV0ZUNvbnRyb2xMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdjb25maXJtYXRpb25Nb2RhbENvbnRyb2wnLCB7IHN0YXRpYzogZmFsc2UgfSkgY29uZmlybWF0aW9uTW9kYWxDb250cm9sOiBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudDtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIG1vZGFsc1xyXG5cclxuICBAVmlld0NoaWxkKFwiYWRkT3JnYW5pemF0aW9uTW9kYWxcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIGFkZE9yZ2FuaXphdGlvbk1vZGFsOiBBZGRPcmdhbml6YXRpb25Db21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZChcImVkaXRPcmdhbml6YXRpb25Nb2RhbFwiLCB7IHN0YXRpYzogZmFsc2UgfSkgZWRpdE9yZ2FuaXphdGlvbk1vZGFsOiBFZGl0T3JnYW5pemF0aW9uQ29tcG9uZW50O1xyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgIC8vI3JlZ2lvbiBhY3RpdmF0ZSBtb2RhbCBkYXRhXHJcbiAgIGFkbWluV2l0aE11bHRpdGVuYW5FbmFibGVkOmJvb2xlYW47XHJcbiAgIGFjdGl2YXRlZE9yZ2FuaXphdGlvbklkOiBzdHJpbmc7XHJcbiAgIGFjdGl2YXRlQ29uZmlybWF0aW9uT3B0aW9uczogQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zO1xyXG4gICBhY3RpdmF0ZUNvbnRyb2xMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgQFZpZXdDaGlsZCgnYWN0aXZhdGVDb25maXJtYXRpb25Nb2RhbENvbnRyb2wnLCB7IHN0YXRpYzogZmFsc2UgfSkgYWN0aXZhdGVDb25maXJtYXRpb25Nb2RhbENvbnRyb2w6IENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50O1xyXG4gICAvLyNlbmRyZWdpb25cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHBhZ2VJbmZvU2VydmljZTogUGFnZUluZm9TZXJ2aWNlLFxyXG4gICAgcHVibGljIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgZW52aXJvbm1lbnRTZXJ2aWNlOiBFbnZpcm9ubWVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNlcnZpY2U6IE9yZ2FuaXphdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5jdXJyZW50VXNlclByb2ZpbGUgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldEN1cnJlbnRVc2VyKCkucHJvZmlsZTtcclxuICAgIGxldCBpc011bHRpVGVuYW5jeUFsbG93ZWQgPSB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRBbGxvd011bHRpVGVuYW5jeSgpO1xyXG4gICAgdGhpcy5hZG1pbldpdGhNdWx0aXRlbmFuRW5hYmxlZD1pc011bHRpVGVuYW5jeUFsbG93ZWQgJiYgdGhpcy5jdXJyZW50VXNlclByb2ZpbGUucGVybWlzc2lvblNldFNJRCA9PSB0aGlzLnBlcm1pc3Npb25TZXRzLkFkbWluO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vI3JlZ2lvbiBldmVudHNcclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc2hvd1BhZ2VDb250ZW50ID0gdHJ1ZTtcclxuXHJcbiAgICAvL1BhZ2UgaGVhZGVyIChicmVhZGNydW1iIGFuZCB0aXRsZSlcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlVGl0bGUgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQZXJtaXNzaW9uc1wiKTtcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlQnJlYWRjcnVtYnMgPSBbXHJcbiAgICAgIHsgdGl0bGU6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkhvbWVcIiksIHBhdGg6ICcvQWRtaW4vSG9tZScsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9XHJcblxyXG4gICAgXTtcclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZVRpdGxlKCk7XHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVCcmVhZGNydW1icygpO1xyXG4gICAgdGhpcy5Qcm9kdWN0aW9uTW9kZSA9IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldFByb2R1Y3Rpb25Nb2RlKCk7XHJcbiAgICB0aGlzLmlzTXVsdGlUZW5hbmN5QWxsb3dlZCA9IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEFsbG93TXVsdGlUZW5hbmN5KCk7XHJcbiAgICB0aGlzLmN1cnJlbnRVc2VyUHJvZmlsZSA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0Q3VycmVudFVzZXIoKS5wcm9maWxlO1xyXG4gICAgdGhpcy5pc1N1cGVyQWRtaW4gPSB0aGlzLmN1cnJlbnRVc2VyUHJvZmlsZS5wZXJtaXNzaW9uU2V0U0lEID09IHRoaXMucGVybWlzc2lvblNldHMuQWRtaW47XHJcblxyXG4gICAgLy9pbml0aWFsaXplIHBhZ2VcclxuICAgIHRoaXMuaW5pdGlhbGl6ZVBhZ2UoKTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBQYWdpbmcgZnVuY3Rpb25zXHJcbiAgc2V0TGlzdFJlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMucGFnaW5nUmVzdWx0ID0gcmVzdWx0O1xyXG4gICAgdGhpcy5zaG93UGFnZUNvbnRlbnQgPSB0cnVlO1xyXG4gICAgdGhpcy5maWx0ZXJlZFBhZ2luZ1Jlc3VsdCA9IHRoaXMucGFnaW5nUmVzdWx0O1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIGluaXRpYWxpemUgcGFnZVxyXG4gIGluaXRpYWxpemVQYWdlKCkge1xyXG4gICAgLy8jcmVnaW9uIGlucHV0IGZpZWxkIG9wdGlvbnNcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94Lm5hbWUgPSBcInNlYXJjaFRleHRCb3hcIjtcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5oaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5wbGFjZWhvbGRlciA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlYXJjaEJ5TmFtZVwiKTtcclxuXHJcbiAgICAvLyNlbmRyZWdpb25cclxuXHJcbiAgICB0aGlzLnRleHRJbnB1dEZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLnRleHRJbnB1dEZpbHRlci5mb3JtQ29udHJvbE5hbWUgPSB0aGlzLnNlYXJjaFRleHRCb3gubmFtZTtcclxuICAgIHRoaXMudGV4dElucHV0RmlsdGVyLmFjdGlvblBhcmFtZXRlck5hbWUgPSBcInNlYXJjaFRleHRcIjtcclxuICAgIHRoaXMudGV4dElucHV0RmlsdGVyLmlzRm9ybUNvbnRyb2wgPSB0cnVlO1xyXG4gICAgdGhpcy50ZXh0SW5wdXRGaWx0ZXIuZmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuVGV4dEJveDtcclxuXHJcbiAgICB0aGlzLnBhZ2luZ09wdGlvbnMuYWN0aW9uUG9zdFVSTCA9IHRoaXMuQXBpVXJsICsgJ2dldE9yZ2FuaXphdGlvbkJ5RmlsdGVyJztcclxuICAgIHRoaXMucGFnaW5nT3B0aW9ucy5vbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lcyA9IFt0aGlzLnNlYXJjaFRleHRCb3gubmFtZV07XHJcbiAgICB0aGlzLnBhZ2luZ09wdGlvbnMuZmlsdGVycyA9IFtcclxuICAgICAgLi4udGhpcy5wYWdpbmdPcHRpb25zLmZpbHRlcnMsXHJcbiAgICAgIHRoaXMudGV4dElucHV0RmlsdGVyXHJcbiAgICBdO1xyXG4gICAgdGhpcy5pc0ZpbHRlckxvYWRlZCA9IHRydWU7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gbW9kYWwgbWV0aG9kc1xyXG4gIHNob3dBZGRNb2RhbCgpIHtcclxuICAgIHRoaXMuYWRkT3JnYW5pemF0aW9uTW9kYWwuc2hvd01vZGFsKCk7XHJcbiAgfVxyXG5cclxuICBzaG93RWRpdE1vZGFsKGlkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZWRpdE9yZ2FuaXphdGlvbk1vZGFsLnNob3dNb2RhbChpZCk7XHJcbiAgfVxyXG5cclxuICBzaG93RGVsZXRlTW9kYWwoaWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5kZWxldGVDb250cm9sTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmRlbGV0ZWRPcmdhbml6YXRpb25JZCA9IGlkO1xyXG4gICAgdGhpcy5kZWxldGVDb25maXJtYXRpb25PcHRpb25zID0gbmV3IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucygpO1xyXG4gICAgdGhpcy5kZWxldGVDb25maXJtYXRpb25PcHRpb25zLnNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZGVsZXRlT3JnYW5pemF0aW9uO1xyXG4gICAgdGhpcy5kZWxldGVDb25maXJtYXRpb25PcHRpb25zLnNlcnZpY2VTdWJtaXRNb2RlbCA9IEFycmF5KHRoaXMuZGVsZXRlZE9yZ2FuaXphdGlvbklkKTtcclxuICAgIHRoaXMuZGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5wYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnQ7XHJcbiAgICB0aGlzLmRlbGV0ZUNvbnRyb2xMb2FkZWQgPSB0cnVlO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbC5zaG93TW9kYWwoKTtcclxuICAgIH0sIDIwMCk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVPcmdhbml6YXRpb24gPSAoaWQ6IHN0cmluZykgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VydmljZS5kZWxldGVPcmdhbml6YXRpb24oaWQpO1xyXG4gIH07XHJcblxyXG4gIHNob3dBY3RpdmF0ZU1vZGFsKGlkOiBzdHJpbmcpIHtcclxuICAgIHZhciBpc0FjdGl2YXRlZD10aGlzLnBhZ2luZ1Jlc3VsdC5maW5kKHA9PnAuaURfR1VJRD09aWQpLm9yZ2FuaXphdGlvbklzQWN0aXZhdGVkO1xyXG5cclxuICAgIGxldCBjb25maXJtYXRpb25CdG46IHN0cmluZztcclxuICAgIGxldCBjb25maXJtYXRpb25Cb2R5OiBzdHJpbmc7XHJcbiAgICBsZXQgY29uZmlybWF0aW9uSGVhZGVyOiBzdHJpbmc7XHJcbiAgICBpZihpc0FjdGl2YXRlZCl7XHJcbiAgICAgIGNvbmZpcm1hdGlvbkJ0bj10aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDYW5jZWxJbXBlcnNvbmF0ZVwiKTtcclxuICAgICAgY29uZmlybWF0aW9uQm9keT10aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDYW5jZWxJbXBlcnNvbmF0ZU9yZ2FuaXphdGlvbkNvbmZpcm1hdGlvbkJvZHlcIik7XHJcbiAgICAgIGNvbmZpcm1hdGlvbkhlYWRlcj10aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDYW5jZWxJbXBlcnNvbmF0ZU9yZ2FuaXphdGlvbkNvbmZpcm1hdGlvblwiKTtcclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgIGNvbmZpcm1hdGlvbkJ0bj10aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJJbXBlcnNvbmF0ZVwiKTtcclxuICAgICAgY29uZmlybWF0aW9uQm9keT10aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJJbXBlcnNvbmF0ZU9yZ2FuaXphdGlvbkNvbmZpcm1hdGlvbkJvZHlcIik7XHJcbiAgICAgIGNvbmZpcm1hdGlvbkhlYWRlcj10aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJJbXBlcnNvbmF0ZU9yZ2FuaXphdGlvbkNvbmZpcm1hdGlvblwiKTtcclxuXHJcbiAgICB9XHJcbiAgICB0aGlzLmFjdGl2YXRlQ29udHJvbExvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5hY3RpdmF0ZWRPcmdhbml6YXRpb25JZCA9IGlkO1xyXG4gICAgdGhpcy5hY3RpdmF0ZUNvbmZpcm1hdGlvbk9wdGlvbnMgPSBuZXcgQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zKCk7XHJcbiAgICB0aGlzLmFjdGl2YXRlQ29uZmlybWF0aW9uT3B0aW9ucy5zdWJtaXRCdXR0b25UZXh0PWNvbmZpcm1hdGlvbkJ0bjtcclxuICAgIHRoaXMuYWN0aXZhdGVDb25maXJtYXRpb25PcHRpb25zLmNvbmZpcm1hdGlvbkJvZHk9Y29uZmlybWF0aW9uQm9keTtcclxuICAgIHRoaXMuYWN0aXZhdGVDb25maXJtYXRpb25PcHRpb25zLmNvbmZpcm1hdGlvbkhlYWRlcj1jb25maXJtYXRpb25IZWFkZXI7XHJcbiAgICB0aGlzLmFjdGl2YXRlQ29uZmlybWF0aW9uT3B0aW9ucy5zZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmFjdGl2YXRlT3JnYW5pemF0aW9uO1xyXG4gICAgdGhpcy5hY3RpdmF0ZUNvbmZpcm1hdGlvbk9wdGlvbnMuc2VydmljZVN1Ym1pdE1vZGVsID0gQXJyYXkodGhpcy5hY3RpdmF0ZWRPcmdhbml6YXRpb25JZCk7XHJcbiAgICB0aGlzLmFjdGl2YXRlQ29uZmlybWF0aW9uT3B0aW9ucy5kaXNhYmxlU3VjY2Vzc05vdGlmaWNhdGlvbj10cnVlO1xyXG4gICAgdGhpcy5hY3RpdmF0ZUNvbmZpcm1hdGlvbk9wdGlvbnMucGFnaW5nUmVmZXJlbmNlID0gdGhpcy5wYWdpbmdFbGVtZW50O1xyXG4gICAgdGhpcy5hY3RpdmF0ZUNvbmZpcm1hdGlvbk9wdGlvbnMub25TdWNjZXNzSGFuZGxlcj10aGlzLm9uQWN0aXZhdGVPcmdhbml6YXRpb25TdWNjZXNzO1xyXG4gICAgdGhpcy5hY3RpdmF0ZUNvbnRyb2xMb2FkZWQgPSB0cnVlO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmFjdGl2YXRlQ29uZmlybWF0aW9uTW9kYWxDb250cm9sLnNob3dNb2RhbCgpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcbiAgYWN0aXZhdGVPcmdhbml6YXRpb24gPSAoaWQ6IHN0cmluZykgPT4ge1xyXG4gICAgdmFyIGlzQWN0aXZhdGVkPXRoaXMucGFnaW5nUmVzdWx0LmZpbmQocD0+cC5pRF9HVUlEPT1pZCkub3JnYW5pemF0aW9uSXNBY3RpdmF0ZWQ7XHJcbiAgICBsZXQgb3JnSUQ9aXNBY3RpdmF0ZWQ/bnVsbDpKU09OLnN0cmluZ2lmeShpZCk7XHJcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmFjdGl2YXRlT3JEZWFjdGl2YXRlT3JnYW5pemF0aW9uKG9yZ0lEKTtcclxuICB9O1xyXG4gIGdldEFjdGl2YXRlVGV4dChvcmdJRDpzdHJpbmcpe1xyXG4gICAgdmFyIGlzQWN0aXZhdGVkPXRoaXMucGFnaW5nUmVzdWx0LmZpbmQocD0+cC5pRF9HVUlEPT1vcmdJRCkub3JnYW5pemF0aW9uSXNBY3RpdmF0ZWQ7XHJcbiAgICByZXR1cm4gaXNBY3RpdmF0ZWQ/dGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsSW1wZXJzb25hdGVcIik6dGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSW1wZXJzb25hdGVcIik7XHJcbiAgfVxyXG4gIG9uQWN0aXZhdGVPcmdhbml6YXRpb25TdWNjZXNzPShyZXN1bHQpPT57XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmhhbmRsZUFjY2Vzc1Rva2VuV2l0aG91dExhbmd1YWdlKHJlc3VsdC52YWwpO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbn1cclxuIiwiPGJsb2NrLXVpPjwvYmxvY2stdWk+XHJcblxyXG48IS0tICNyZWdpb24gcGFnZSBjb250ZW50IC0tPlxyXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1jdXN0b20taFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTVcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIiAqbmdJZj1cImlzRmlsdGVyTG9hZGVkXCI+XHJcbiAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJzZWFyY2hUZXh0Qm94XCIgW2dyb3VwXT1cImZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICBAaWYgKGlzU3VwZXJBZG1pbikge1xyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5XCIgdGl0bGU9XCJBZGRcIiAoY2xpY2spPVwic2hvd0FkZE1vZGFsKClcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtcGx1cyBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAgICB7eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdBZGQnKSB9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgPCEtLSAjcmVnaW9uIHBlcm1pc3Npb24gbGlzdCAtLT5cclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlclwiPlxyXG4gICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnTmFtZScpIH19PC90aD5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy01MHB4XCI+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnQWN0aW9uJykgfX08L3RoPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgIDx0Ym9keSBpZD1cImxpc3RpbmdDb250YWluZXJcIiBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IG9yZ2FuaXphdGlvbiBvZiBmaWx0ZXJlZFBhZ2luZ1Jlc3VsdFwiPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIHt7IG9yZ2FuaXphdGlvbi5uYW1lIH19XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNTdXBlckFkbWluXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tbGlnaHQgYnRuLWFjdGl2ZS1saWdodC1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lbGxpcHNpcy1oXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1tZW51IGNsYXNzPVwibWF0LW1lbnUtY29udGVudFwiICNtZW51PVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcC1pdGVtIHB4LTNcIiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cInNob3dFZGl0TW9kYWwob3JnYW5pemF0aW9uLmlEX0dVSUQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3AtbGluayBweC0zXCI+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnRWRpdCcpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBuZ2JEcm9wZG93bkl0ZW0gY2xhc3M9XCJkcm9wLWl0ZW0gcHgtM1wiIChjbGljayk9XCJzaG93RGVsZXRlTW9kYWwob3JnYW5pemF0aW9uLmlEX0dVSUQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3AtbGluayBweC0zXCI+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnRGVsZXRlJykgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwiYWRtaW5XaXRoTXVsdGl0ZW5hbkVuYWJsZWRcIiBuZ2JEcm9wZG93bkl0ZW0gY2xhc3M9XCJkcm9wLWl0ZW0gcHgtM1wiIChjbGljayk9XCJzaG93QWN0aXZhdGVNb2RhbChvcmdhbml6YXRpb24uaURfR1VJRClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1saW5rIHB4LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0QWN0aXZhdGVUZXh0KG9yZ2FuaXphdGlvbi5pRF9HVUlEKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDx0ciAqbmdJZj1cImZpbHRlcmVkUGFnaW5nUmVzdWx0Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgPHRkIFthdHRyLmNvbHNwYW5dPVwiUHJvZHVjdGlvbk1vZGUgPyAnMycgOiAnNCdcIj5cclxuICAgICAgICAgICAgICAgIDxsaWItZW1wdHktZGF0YT48L2xpYi1lbXB0eS1kYXRhPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJvcmRlci0wXCI+XHJcbiAgICAgIDxCQlNGLVBhZ2luZyAoSXRlbXMpPVwic2V0TGlzdFJlc3VsdCgkZXZlbnQpXCIgKm5nSWY9XCJpc0ZpbHRlckxvYWRlZFwiIFtvcHRpb25zXT1cInBhZ2luZ09wdGlvbnNcIiBbZ3JvdXBdPVwiZm9ybVwiICNwYWdpbmdFbGVtZW50PiA8L0JCU0YtUGFnaW5nPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG48bGliLWFkZC1vcmdhbml6YXRpb24gW3BhZ2luZ0VsZW1lbnRdPVwicGFnaW5nRWxlbWVudFwiICNhZGRPcmdhbml6YXRpb25Nb2RhbD48L2xpYi1hZGQtb3JnYW5pemF0aW9uPlxyXG48bGliLWVkaXQtb3JnYW5pemF0aW9uIFtwYWdpbmdFbGVtZW50XT1cInBhZ2luZ0VsZW1lbnRcIiAjZWRpdE9yZ2FuaXphdGlvbk1vZGFsPjwvbGliLWVkaXQtb3JnYW5pemF0aW9uPlxyXG48QkJTRi1Db25maXJtYXRpb25Nb2RhbFxyXG4gICpuZ0lmPVwiZGVsZXRlQ29udHJvbExvYWRlZFwiXHJcbiAgW29wdGlvbnNdPVwiZGVsZXRlQ29uZmlybWF0aW9uT3B0aW9uc1wiXHJcbiAgaWQ9XCJjb25maXJtYXRpb25Nb2RhbENvbnRyb2xcIlxyXG4gICNjb25maXJtYXRpb25Nb2RhbENvbnRyb2w+PC9CQlNGLUNvbmZpcm1hdGlvbk1vZGFsPlxyXG5cclxuICA8QkJTRi1Db25maXJtYXRpb25Nb2RhbFxyXG4gICpuZ0lmPVwiYWN0aXZhdGVDb250cm9sTG9hZGVkXCJcclxuICBbb3B0aW9uc109XCJhY3RpdmF0ZUNvbmZpcm1hdGlvbk9wdGlvbnNcIlxyXG4gIGlkPVwiYWN0aXZhdGVDb25maXJtYXRpb25Nb2RhbENvbnRyb2xcIlxyXG4gICNhY3RpdmF0ZUNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbD48L0JCU0YtQ29uZmlybWF0aW9uTW9kYWw+XHJcbiJdfQ==