@tuki-io/tuki-widgets 0.0.72 → 0.0.74

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (350) hide show
  1. package/.editorconfig +16 -0
  2. package/.hintrc +14 -0
  3. package/.vscode/extensions.json +4 -0
  4. package/.vscode/launch.json +20 -0
  5. package/.vscode/tasks.json +42 -0
  6. package/README.md +25 -24
  7. package/angular.json +141 -0
  8. package/package.json +42 -7
  9. package/projects/tuki/widgets/README.md +24 -0
  10. package/projects/tuki/widgets/di2mt/api/api.endpoints.ts +26 -0
  11. package/projects/tuki/widgets/di2mt/assets/icons/details_d_icon.svg +3 -0
  12. package/{di2mt → projects/tuki/widgets/di2mt}/public-api.ts +1 -0
  13. package/{di2mt → projects/tuki/widgets/di2mt}/shared/components/summary-card/summary-card.component.html +2 -2
  14. package/{di2mt → projects/tuki/widgets/di2mt}/shared/components/summary-card/summary-card.component.scss +4 -1
  15. package/{di2mt → projects/tuki/widgets/di2mt}/shared/components/table-filters/table-filters.component.html +3 -3
  16. package/projects/tuki/widgets/di2mt/shared/components/table-filters/table-filters.component.scss +244 -0
  17. package/{user-device-manage/src → projects/tuki/widgets/di2mt/shared/constants}/app.constants.ts +96 -96
  18. package/{di2mt → projects/tuki/widgets/di2mt}/shared/types/constants.ts +2 -1
  19. package/projects/tuki/widgets/di2mt/widgets/site-upgrade/progress-bar/progress-bar.component.html +3 -0
  20. package/projects/tuki/widgets/di2mt/widgets/site-upgrade/progress-bar/progress-bar.component.scss +37 -0
  21. package/projects/tuki/widgets/di2mt/widgets/site-upgrade/progress-bar/progress-bar.component.ts +40 -0
  22. package/projects/tuki/widgets/di2mt/widgets/site-upgrade/site-upgrade-data-table/site-upgrade-data-table.component.html +158 -0
  23. package/projects/tuki/widgets/di2mt/widgets/site-upgrade/site-upgrade-data-table/site-upgrade-data-table.component.scss +430 -0
  24. package/projects/tuki/widgets/di2mt/widgets/site-upgrade/site-upgrade-data-table/site-upgrade-data-table.component.ts +362 -0
  25. package/projects/tuki/widgets/di2mt/widgets/site-upgrade/site-upgrade.module.ts +33 -0
  26. package/projects/tuki/widgets/di2mt/widgets/site-upgrade/site-upgrade.service.ts +102 -0
  27. package/projects/tuki/widgets/di2mt/widgets/site-upgrade/types/user-upgrade.ts +22 -0
  28. package/{di2mt → projects/tuki/widgets/di2mt}/widgets/user-upgrade/types/user-upgrade.ts +2 -1
  29. package/{di2mt → projects/tuki/widgets/di2mt}/widgets/user-upgrade/user-upgrade-data-table/user-upgrade-data-table.component.html +68 -13
  30. package/{di2mt → projects/tuki/widgets/di2mt}/widgets/user-upgrade/user-upgrade-data-table/user-upgrade-data-table.component.scss +73 -3
  31. package/projects/tuki/widgets/di2mt/widgets/user-upgrade/user-upgrade-data-table/user-upgrade-data-table.component.ts +313 -0
  32. package/projects/tuki/widgets/di2mt/widgets/user-upgrade/user-upgrade.module.ts +34 -0
  33. package/projects/tuki/widgets/di2mt/widgets/user-upgrade/user-upgrade.service.ts +79 -0
  34. package/{karma.conf.js → projects/tuki/widgets/karma.conf.js} +44 -44
  35. package/projects/tuki/widgets/package.json +13 -0
  36. package/{src → projects/tuki/widgets/src}/lib/widgets.component.spec.ts +23 -23
  37. package/{src → projects/tuki/widgets/src}/lib/widgets.component.ts +20 -20
  38. package/{src → projects/tuki/widgets/src}/lib/widgets.module.ts +16 -16
  39. package/{src → projects/tuki/widgets/src}/lib/widgets.service.spec.ts +16 -16
  40. package/{src → projects/tuki/widgets/src}/lib/widgets.service.ts +9 -9
  41. package/{src → projects/tuki/widgets/src}/public-api.ts +7 -7
  42. package/{src → projects/tuki/widgets/src}/test.ts +27 -27
  43. package/{users-list/src/styles → projects/tuki/widgets}/styles.scss +572 -572
  44. package/{tsconfig.lib.json → projects/tuki/widgets/tsconfig.lib.json} +36 -36
  45. package/{tsconfig.lib.prod.json → projects/tuki/widgets/tsconfig.lib.prod.json} +10 -10
  46. package/{tsconfig.spec.json → projects/tuki/widgets/tsconfig.spec.json} +17 -17
  47. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/public-api.ts +8 -8
  48. package/projects/tuki/widgets/user-device-manage/src/app.constants.ts +96 -0
  49. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/assets/icons/arrow-left.svg +5 -5
  50. package/{user-manage → projects/tuki/widgets/user-device-manage}/src/assets/icons/arrow-right.svg +5 -5
  51. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/assets/icons/close_icon_x.svg +3 -3
  52. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/assets/icons/delete_icon.svg +5 -5
  53. package/{user-manage → projects/tuki/widgets/user-device-manage}/src/assets/icons/dragger-vertical-icon.svg +3 -3
  54. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/assets/icons/vartical_divider_icon.svg +3 -3
  55. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/classes/device.ts +292 -292
  56. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/classes/line-association-interface.ts +50 -50
  57. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/classes/line-association.ts +177 -177
  58. package/{user-manage → projects/tuki/widgets/user-device-manage}/src/classes/line-call-info-display.ts +21 -21
  59. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/classes/line-directory.ts +41 -41
  60. package/{users-list → projects/tuki/widgets/user-device-manage}/src/classes/line.ts +144 -144
  61. package/{user-manage → projects/tuki/widgets/user-device-manage}/src/classes/notification.ts +40 -39
  62. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/classes/recording-options.ts +6 -6
  63. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/classes/simplified-user.ts +169 -169
  64. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/classes/site-defaults.ts +167 -167
  65. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/classes/translation-pattern.ts +50 -50
  66. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/classes/types.ts +19 -19
  67. package/{user-manage → projects/tuki/widgets/user-device-manage}/src/classes/user-interface.ts +225 -225
  68. package/{user-manage → projects/tuki/widgets/user-device-manage}/src/classes/user.ts +8 -8
  69. package/{user-manage → projects/tuki/widgets/user-device-manage}/src/common-functions.ts +16 -16
  70. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/confirm-dialog/info-dialog.component.html +14 -14
  71. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/confirm-dialog/info-dialog.component.scss +80 -80
  72. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/confirm-dialog/info-dialog.component.ts +35 -35
  73. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/device-associated-line/associated-line-row/associated-line-row.component.html +21 -21
  74. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/device-associated-line/associated-line-row/associated-line-row.component.scss +97 -97
  75. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/device-associated-line/associated-line-row/associated-line-row.component.ts +28 -28
  76. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/device-associated-line/device-associated-line-details-box/device-associated-line-details-box.component.html +5 -5
  77. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/device-associated-line/device-associated-line-details-box/device-associated-line-details-box.component.scss +19 -19
  78. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/device-associated-line/device-associated-line-details-box/device-associated-line-details-box.component.ts +13 -13
  79. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/device-associated-line/device-associated-line-extension/device-associated-line-extension.component.html +6 -6
  80. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/device-associated-line/device-associated-line-extension/device-associated-line-extension.component.scss +4 -4
  81. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/device-associated-line/device-associated-line-extension/device-associated-line-extension.component.ts +63 -63
  82. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/device-associated-line/device-associated-line.component.html +241 -241
  83. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/device-associated-line/device-associated-line.component.scss +500 -500
  84. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/device-associated-line/device-associated-line.component.ts +194 -194
  85. package/{user-manage → projects/tuki/widgets/user-device-manage}/src/device-list/device-list.component.html +27 -27
  86. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/device-list/device-list.component.scss +131 -131
  87. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/device-list/device-list.component.ts +25 -25
  88. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/device-manage-widget.component.html +209 -209
  89. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/device-manage-widget.component.scss +502 -502
  90. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/device-manage-widget.component.ts +354 -354
  91. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/environments/environment.prod.ts +9 -9
  92. package/{user-manage → projects/tuki/widgets/user-device-manage}/src/environments/environment.ts +10 -10
  93. package/{user-manage → projects/tuki/widgets/user-device-manage}/src/interseptors/auth.interceptor.ts +35 -35
  94. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/lazy-loading-select/lazy-loading-select.component.html +50 -50
  95. package/{user-manage → projects/tuki/widgets/user-device-manage}/src/lazy-loading-select/lazy-loading-select.component.scss +8 -8
  96. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/lazy-loading-select/lazy-loading-select.component.ts +81 -81
  97. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/material.module.ts +87 -87
  98. package/{user-manage → projects/tuki/widgets/user-device-manage}/src/notifications/notification.component.html +33 -33
  99. package/{user-manage → projects/tuki/widgets/user-device-manage}/src/notifications/notification.component.scss +84 -84
  100. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/notifications/notification.component.ts +46 -46
  101. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/removeKynFromIBM.service.ts +25 -25
  102. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/services/api.service.ts +87 -87
  103. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/services/common-functions.ts +17 -17
  104. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/services/device.service.ts +95 -95
  105. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/services/dns.service.ts +111 -111
  106. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/services/line.service.ts +89 -89
  107. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/services/notification.service.ts +68 -68
  108. package/{users-list → projects/tuki/widgets/user-device-manage}/src/services/removeKynFromIBM.service.ts +25 -25
  109. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/services/site-settings.service.ts +82 -82
  110. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/services/sorting-utils.service.ts +203 -203
  111. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/services/user.service.ts +283 -283
  112. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/services/utils.service.ts +87 -87
  113. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/services/validation.service.ts +829 -829
  114. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/styles/_variables.scss +90 -90
  115. package/{user-manage → projects/tuki/widgets/user-device-manage}/src/styles/form.scss +231 -231
  116. package/{user-manage → projects/tuki/widgets/user-device-manage}/src/styles/icons.scss +32 -32
  117. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/styles/styles.scss +110 -110
  118. package/{user-manage → projects/tuki/widgets/user-device-manage}/src/styles/tables.scss +30 -30
  119. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/user-device-manage.module.ts +73 -73
  120. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/utils/app-loader/app-loader.component.html +6 -6
  121. package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/utils/app-loader/app-loader.component.scss +11 -11
  122. package/{user-manage → projects/tuki/widgets/user-device-manage}/src/utils/app-loader/app-loader.ts +13 -13
  123. package/{user-manage → projects/tuki/widgets/user-manage}/public-api.ts +6 -6
  124. package/{user-manage → projects/tuki/widgets/user-manage}/src/app.constants.ts +50 -50
  125. package/{user-manage → projects/tuki/widgets/user-manage}/src/assets/icons/arrow-left.svg +5 -5
  126. package/{user-device-manage → projects/tuki/widgets/user-manage}/src/assets/icons/arrow-right.svg +5 -5
  127. package/{user-manage → projects/tuki/widgets/user-manage}/src/assets/icons/delete_icon.svg +5 -5
  128. package/{user-device-manage → projects/tuki/widgets/user-manage}/src/assets/icons/dragger-vertical-icon.svg +3 -3
  129. package/{user-manage → projects/tuki/widgets/user-manage}/src/assets/icons/vartical_divider_icon.svg +3 -3
  130. package/{user-manage → projects/tuki/widgets/user-manage}/src/classes/device.ts +232 -232
  131. package/{user-manage → projects/tuki/widgets/user-manage}/src/classes/line-association-interface.ts +43 -43
  132. package/{user-manage → projects/tuki/widgets/user-manage}/src/classes/line-association.ts +161 -161
  133. package/{user-device-manage → projects/tuki/widgets/user-manage}/src/classes/line-call-info-display.ts +21 -21
  134. package/{user-manage → projects/tuki/widgets/user-manage}/src/classes/line-directory.ts +42 -42
  135. package/{user-manage → projects/tuki/widgets/user-manage}/src/classes/line.ts +144 -144
  136. package/{user-device-manage → projects/tuki/widgets/user-manage}/src/classes/notification.ts +39 -40
  137. package/{user-manage → projects/tuki/widgets/user-manage}/src/classes/pagination.ts +1 -1
  138. package/{user-manage → projects/tuki/widgets/user-manage}/src/classes/recording-options.ts +6 -6
  139. package/{user-manage → projects/tuki/widgets/user-manage}/src/classes/simplified-user.ts +165 -165
  140. package/{user-manage → projects/tuki/widgets/user-manage}/src/classes/table-data.ts +6 -6
  141. package/{user-manage → projects/tuki/widgets/user-manage}/src/classes/translation-pattern.ts +49 -49
  142. package/{users-list → projects/tuki/widgets/user-manage}/src/classes/user-interface.ts +225 -225
  143. package/{user-manage → projects/tuki/widgets/user-manage}/src/classes/user-list.ts +42 -42
  144. package/{users-list → projects/tuki/widgets/user-manage}/src/classes/user.ts +8 -8
  145. package/{user-device-manage → projects/tuki/widgets/user-manage}/src/common-functions.ts +16 -16
  146. package/{user-device-manage → projects/tuki/widgets/user-manage}/src/device-list/device-list.component.html +27 -27
  147. package/{user-manage → projects/tuki/widgets/user-manage}/src/device-list/device-list.component.scss +131 -131
  148. package/{user-manage → projects/tuki/widgets/user-manage}/src/device-list/device-list.component.ts +25 -25
  149. package/{user-manage → projects/tuki/widgets/user-manage}/src/environments/environment.prod.ts +9 -9
  150. package/{user-device-manage → projects/tuki/widgets/user-manage}/src/environments/environment.ts +10 -10
  151. package/{user-device-manage → projects/tuki/widgets/user-manage}/src/interseptors/auth.interceptor.ts +35 -35
  152. package/{user-manage → projects/tuki/widgets/user-manage}/src/lazy-loading-select/lazy-loading-select.component.html +50 -50
  153. package/{user-device-manage → projects/tuki/widgets/user-manage}/src/lazy-loading-select/lazy-loading-select.component.scss +8 -8
  154. package/{user-manage → projects/tuki/widgets/user-manage}/src/lazy-loading-select/lazy-loading-select.component.ts +81 -81
  155. package/{user-manage → projects/tuki/widgets/user-manage}/src/material.module.ts +85 -85
  156. package/{user-device-manage → projects/tuki/widgets/user-manage}/src/notifications/notification.component.html +33 -33
  157. package/{user-device-manage → projects/tuki/widgets/user-manage}/src/notifications/notification.component.scss +84 -84
  158. package/{user-manage → projects/tuki/widgets/user-manage}/src/notifications/notification.component.ts +46 -46
  159. package/{user-manage → projects/tuki/widgets/user-manage}/src/removeKynFromIBM.service.ts +25 -25
  160. package/{user-manage → projects/tuki/widgets/user-manage}/src/services/api.service.ts +90 -90
  161. package/{user-manage → projects/tuki/widgets/user-manage}/src/services/dns.service.ts +116 -116
  162. package/{user-manage → projects/tuki/widgets/user-manage}/src/services/line.service.ts +31 -31
  163. package/{user-manage → projects/tuki/widgets/user-manage}/src/services/notification.service.ts +68 -68
  164. package/{user-device-manage → projects/tuki/widgets/user-manage}/src/services/removeKynFromIBM.service.ts +25 -25
  165. package/{user-manage → projects/tuki/widgets/user-manage}/src/services/site-settings.service.ts +35 -35
  166. package/{user-manage → projects/tuki/widgets/user-manage}/src/services/sorting-utils.service.ts +203 -203
  167. package/{user-manage → projects/tuki/widgets/user-manage}/src/services/user.service.ts +242 -242
  168. package/{user-manage → projects/tuki/widgets/user-manage}/src/services/users-search.service.ts +59 -59
  169. package/{users-list/src/utils → projects/tuki/widgets/user-manage/src/services}/utils.service.ts +71 -71
  170. package/{user-manage → projects/tuki/widgets/user-manage}/src/styles/_variables.scss +90 -90
  171. package/{user-device-manage → projects/tuki/widgets/user-manage}/src/styles/form.scss +231 -231
  172. package/{user-device-manage → projects/tuki/widgets/user-manage}/src/styles/icons.scss +32 -32
  173. package/{user-manage → projects/tuki/widgets/user-manage}/src/styles/styles.scss +110 -110
  174. package/{user-device-manage → projects/tuki/widgets/user-manage}/src/styles/tables.scss +30 -30
  175. package/{user-manage → projects/tuki/widgets/user-manage}/src/user-calling/user-calling-extension/user-calling-extension.component.html +10 -10
  176. package/{user-manage → projects/tuki/widgets/user-manage}/src/user-calling/user-calling-extension/user-calling-extension.component.scss +429 -429
  177. package/{user-manage → projects/tuki/widgets/user-manage}/src/user-calling/user-calling-extension/user-calling-extension.component.ts +63 -63
  178. package/{user-manage → projects/tuki/widgets/user-manage}/src/user-calling/user-calling.component.html +32 -32
  179. package/{user-manage → projects/tuki/widgets/user-manage}/src/user-calling/user-calling.component.scss +444 -444
  180. package/{user-manage → projects/tuki/widgets/user-manage}/src/user-calling/user-calling.component.ts +89 -89
  181. package/{user-manage → projects/tuki/widgets/user-manage}/src/user-details/notification.service.ts +68 -68
  182. package/{user-manage → projects/tuki/widgets/user-manage}/src/user-info/user-info.component.html +29 -29
  183. package/{user-manage → projects/tuki/widgets/user-manage}/src/user-info/user-info.component.scss +64 -64
  184. package/{user-manage → projects/tuki/widgets/user-manage}/src/user-info/user-info.component.ts +19 -19
  185. package/{user-manage → projects/tuki/widgets/user-manage}/src/user-manage-widget.component.html +290 -290
  186. package/{user-manage → projects/tuki/widgets/user-manage}/src/user-manage-widget.component.scss +463 -463
  187. package/{user-manage → projects/tuki/widgets/user-manage}/src/user-manage-widget.component.ts +212 -212
  188. package/{user-manage → projects/tuki/widgets/user-manage}/src/user-manage.module.ts +63 -63
  189. package/{user-manage → projects/tuki/widgets/user-manage}/src/utils/app-loader/app-loader.component.html +6 -6
  190. package/{user-manage → projects/tuki/widgets/user-manage}/src/utils/app-loader/app-loader.component.scss +11 -11
  191. package/{user-device-manage → projects/tuki/widgets/user-manage}/src/utils/app-loader/app-loader.ts +13 -13
  192. package/{users-list → projects/tuki/widgets/user-manage}/src/utils/pagination/pagination.component.html +26 -26
  193. package/{user-manage → projects/tuki/widgets/user-manage}/src/utils/pagination/pagination.component.scss +41 -41
  194. package/{user-manage → projects/tuki/widgets/user-manage}/src/utils/pagination/pagination.component.ts +41 -41
  195. package/{users-list → projects/tuki/widgets/users-list}/public-api.ts +8 -8
  196. package/{users-list → projects/tuki/widgets/users-list}/src/app.constants.ts +54 -54
  197. package/{users-list → projects/tuki/widgets/users-list}/src/assets/icons/close_icon_modal.svg +3 -3
  198. package/{users-list → projects/tuki/widgets/users-list}/src/assets/icons/move_user_to_another_location.svg +14 -14
  199. package/{users-list → projects/tuki/widgets/users-list}/src/assets/icons/white-close-icon.svg +3 -3
  200. package/{users-list → projects/tuki/widgets/users-list}/src/classes/app-location.ts +36 -36
  201. package/{users-list → projects/tuki/widgets/users-list}/src/classes/device.ts +225 -225
  202. package/{user-device-manage → projects/tuki/widgets/users-list}/src/classes/line.ts +144 -144
  203. package/{users-list → projects/tuki/widgets/users-list}/src/classes/move-user.ts +225 -225
  204. package/{users-list → projects/tuki/widgets/users-list}/src/classes/notification.ts +38 -38
  205. package/{users-list → projects/tuki/widgets/users-list}/src/classes/pagination.ts +18 -18
  206. package/{users-list → projects/tuki/widgets/users-list}/src/classes/simlified-user.ts +74 -74
  207. package/{users-list → projects/tuki/widgets/users-list}/src/classes/table-data.ts +6 -6
  208. package/{user-device-manage → projects/tuki/widgets/users-list}/src/classes/user-interface.ts +225 -225
  209. package/{users-list → projects/tuki/widgets/users-list}/src/classes/user-list.ts +47 -47
  210. package/{user-device-manage → projects/tuki/widgets/users-list}/src/classes/user.ts +8 -8
  211. package/{users-list → projects/tuki/widgets/users-list}/src/material.module.ts +94 -94
  212. package/{users-list → projects/tuki/widgets/users-list}/src/move-user-wizard/move-user-stepper/device-move-user/device-move-user-wizard.component.html +37 -37
  213. package/{users-list → projects/tuki/widgets/users-list}/src/move-user-wizard/move-user-stepper/device-move-user/device-move-user-wizard.component.scss +129 -129
  214. package/{users-list → projects/tuki/widgets/users-list}/src/move-user-wizard/move-user-stepper/device-move-user/device-move-user-wizard.component.ts +46 -46
  215. package/{users-list → projects/tuki/widgets/users-list}/src/move-user-wizard/move-user-stepper/device-move-user-tab/devices-move-user-wizard-tab.component.html +31 -31
  216. package/{users-list → projects/tuki/widgets/users-list}/src/move-user-wizard/move-user-stepper/device-move-user-tab/devices-move-user-wizard-tab.component.scss +20 -20
  217. package/{users-list → projects/tuki/widgets/users-list}/src/move-user-wizard/move-user-stepper/device-move-user-tab/devices-move-user-wizard-tab.component.ts +26 -26
  218. package/{users-list → projects/tuki/widgets/users-list}/src/move-user-wizard/move-user-stepper/move-user-stepper.component.html +222 -222
  219. package/{users-list → projects/tuki/widgets/users-list}/src/move-user-wizard/move-user-stepper/move-user-stepper.component.scss +239 -239
  220. package/{users-list → projects/tuki/widgets/users-list}/src/move-user-wizard/move-user-stepper/move-user-stepper.component.ts +206 -206
  221. package/{users-list → projects/tuki/widgets/users-list}/src/move-user-wizard/move-user-wizard.component.html +12 -12
  222. package/{users-list → projects/tuki/widgets/users-list}/src/move-user-wizard/move-user-wizard.component.scss +41 -41
  223. package/{users-list → projects/tuki/widgets/users-list}/src/move-user-wizard/move-user-wizard.component.ts +36 -36
  224. package/{users-list → projects/tuki/widgets/users-list}/src/services/api-webex.service.ts +14 -14
  225. package/{users-list → projects/tuki/widgets/users-list}/src/services/api.service.ts +90 -90
  226. package/{users-list → projects/tuki/widgets/users-list}/src/services/dns.service.ts +128 -128
  227. package/{users-list → projects/tuki/widgets/users-list}/src/services/events-communication.service.ts +11 -11
  228. package/{users-list → projects/tuki/widgets/users-list}/src/services/move-user.service.ts +59 -59
  229. package/{users-list → projects/tuki/widgets/users-list}/src/services/notification.service.ts +68 -68
  230. package/{user-manage → projects/tuki/widgets/users-list}/src/services/removeKynFromIBM.service.ts +25 -25
  231. package/{users-list → projects/tuki/widgets/users-list}/src/services/site-settings.service.ts +26 -26
  232. package/{users-list → projects/tuki/widgets/users-list}/src/services/user.service.ts +159 -159
  233. package/{users-list → projects/tuki/widgets/users-list}/src/services/users-search.service.ts +139 -137
  234. package/{styles.scss → projects/tuki/widgets/users-list/src/styles/styles.scss} +572 -572
  235. package/{users-list → projects/tuki/widgets/users-list}/src/user-list-confirm-dialog/user-list-confirm-dialog.component.html +15 -15
  236. package/{users-list → projects/tuki/widgets/users-list}/src/user-list-confirm-dialog/user-list-confirm-dialog.component.scss +103 -103
  237. package/{users-list → projects/tuki/widgets/users-list}/src/user-list-confirm-dialog/user-list-confirm-dialog.component.ts +35 -35
  238. package/{users-list → projects/tuki/widgets/users-list}/src/users-list.component.html +86 -86
  239. package/{users-list → projects/tuki/widgets/users-list}/src/users-list.component.scss +572 -572
  240. package/{users-list → projects/tuki/widgets/users-list}/src/users-list.component.ts +312 -312
  241. package/{users-list → projects/tuki/widgets/users-list}/src/users-list.module.ts +63 -63
  242. package/{users-list → projects/tuki/widgets/users-list}/src/utils/app-loader/app-loader.component.html +6 -6
  243. package/{users-list → projects/tuki/widgets/users-list}/src/utils/app-loader/app-loader.component.scss +11 -11
  244. package/{users-list → projects/tuki/widgets/users-list}/src/utils/app-loader/app-loader.ts +13 -13
  245. package/{users-list → projects/tuki/widgets/users-list}/src/utils/common-functions.ts +32 -32
  246. package/{users-list → projects/tuki/widgets/users-list}/src/utils/notifications/notification.component.html +33 -33
  247. package/{users-list → projects/tuki/widgets/users-list}/src/utils/notifications/notification.component.scss +84 -84
  248. package/{users-list → projects/tuki/widgets/users-list}/src/utils/notifications/notification.component.ts +46 -46
  249. package/{user-manage → projects/tuki/widgets/users-list}/src/utils/pagination/pagination.component.html +26 -26
  250. package/{users-list → projects/tuki/widgets/users-list}/src/utils/pagination/pagination.component.scss +41 -41
  251. package/{users-list → projects/tuki/widgets/users-list}/src/utils/pagination/pagination.component.ts +41 -41
  252. package/{user-manage/src/services → projects/tuki/widgets/users-list/src/utils}/utils.service.ts +71 -71
  253. package/projects/widgets-playground/src/app/app.component.html +109 -0
  254. package/projects/widgets-playground/src/app/app.component.scss +15 -0
  255. package/projects/widgets-playground/src/app/app.component.spec.ts +31 -0
  256. package/projects/widgets-playground/src/app/app.component.ts +31 -0
  257. package/projects/widgets-playground/src/app/app.module.ts +43 -0
  258. package/projects/widgets-playground/src/assets/.gitkeep +0 -0
  259. package/projects/widgets-playground/src/assets/icons/already_upgraded.png +0 -0
  260. package/projects/widgets-playground/src/assets/icons/check2_icon.png +0 -0
  261. package/projects/widgets-playground/src/assets/icons/check_icon.png +0 -0
  262. package/projects/widgets-playground/src/assets/icons/expand_icon.png +0 -0
  263. package/projects/widgets-playground/src/assets/icons/issue_icon.png +0 -0
  264. package/projects/widgets-playground/src/assets/icons/menu_icon.png +0 -0
  265. package/projects/widgets-playground/src/assets/icons/ready_to_upgrade.png +0 -0
  266. package/projects/widgets-playground/src/assets/icons/search_icon.png +0 -0
  267. package/projects/widgets-playground/src/assets/icons/site.png +0 -0
  268. package/projects/widgets-playground/src/assets/icons/user.png +0 -0
  269. package/projects/widgets-playground/src/assets/icons/warning_icon.png +0 -0
  270. package/projects/widgets-playground/src/favicon.ico +0 -0
  271. package/projects/widgets-playground/src/index.html +13 -0
  272. package/projects/widgets-playground/src/main.ts +7 -0
  273. package/projects/widgets-playground/src/styles.scss +23 -0
  274. package/projects/widgets-playground/tsconfig.app.json +14 -0
  275. package/projects/widgets-playground/tsconfig.spec.json +14 -0
  276. package/proxy.conf.js +23 -0
  277. package/tsconfig.json +46 -0
  278. package/di2mt/api/api.endpoints.ts +0 -20
  279. package/di2mt/shared/components/table-filters/table-filters.component.scss +0 -52
  280. package/di2mt/widgets/site-upgrade/site-upgrade-data-table/site-upgrade-data-table.component.html +0 -92
  281. package/di2mt/widgets/site-upgrade/site-upgrade-data-table/site-upgrade-data-table.component.scss +0 -187
  282. package/di2mt/widgets/site-upgrade/site-upgrade-data-table/site-upgrade-data-table.component.ts +0 -205
  283. package/di2mt/widgets/site-upgrade/site-upgrade.module.ts +0 -24
  284. package/di2mt/widgets/site-upgrade/site-upgrade.service.ts +0 -45
  285. package/di2mt/widgets/site-upgrade/types/user-upgrade.ts +0 -15
  286. package/di2mt/widgets/user-upgrade/user-upgrade-data-table/user-upgrade-data-table.component.ts +0 -218
  287. package/di2mt/widgets/user-upgrade/user-upgrade.module.ts +0 -24
  288. package/di2mt/widgets/user-upgrade/user-upgrade.service.ts +0 -73
  289. /package/{di2mt → projects/tuki/widgets/di2mt}/README.md +0 -0
  290. /package/{di2mt → projects/tuki/widgets/di2mt}/assets/icons/already_upgraded.png +0 -0
  291. /package/{di2mt → projects/tuki/widgets/di2mt}/assets/icons/check2_icon.png +0 -0
  292. /package/{di2mt → projects/tuki/widgets/di2mt}/assets/icons/check_icon.png +0 -0
  293. /package/{di2mt → projects/tuki/widgets/di2mt}/assets/icons/expand_icon.png +0 -0
  294. /package/{di2mt → projects/tuki/widgets/di2mt}/assets/icons/issue_icon.png +0 -0
  295. /package/{di2mt → projects/tuki/widgets/di2mt}/assets/icons/menu_icon.png +0 -0
  296. /package/{di2mt → projects/tuki/widgets/di2mt}/assets/icons/ready_to_upgrade.png +0 -0
  297. /package/{di2mt → projects/tuki/widgets/di2mt}/assets/icons/search_icon.png +0 -0
  298. /package/{di2mt → projects/tuki/widgets/di2mt}/assets/icons/site.png +0 -0
  299. /package/{di2mt → projects/tuki/widgets/di2mt}/assets/icons/user.png +0 -0
  300. /package/{di2mt → projects/tuki/widgets/di2mt}/assets/icons/warning_icon.png +0 -0
  301. /package/{di2mt → projects/tuki/widgets/di2mt}/ng-package.json +0 -0
  302. /package/{di2mt → projects/tuki/widgets/di2mt}/shared/components/card/card.component.html +0 -0
  303. /package/{di2mt → projects/tuki/widgets/di2mt}/shared/components/card/card.component.scss +0 -0
  304. /package/{di2mt → projects/tuki/widgets/di2mt}/shared/components/card/card.component.ts +0 -0
  305. /package/{di2mt → projects/tuki/widgets/di2mt}/shared/components/chart-card/chart-card.component.html +0 -0
  306. /package/{di2mt → projects/tuki/widgets/di2mt}/shared/components/chart-card/chart-card.component.scss +0 -0
  307. /package/{di2mt → projects/tuki/widgets/di2mt}/shared/components/chart-card/chart-card.component.ts +0 -0
  308. /package/{di2mt → projects/tuki/widgets/di2mt}/shared/components/index.ts +0 -0
  309. /package/{di2mt → projects/tuki/widgets/di2mt}/shared/components/stat-card/stat-card.component.html +0 -0
  310. /package/{di2mt → projects/tuki/widgets/di2mt}/shared/components/stat-card/stat-card.component.scss +0 -0
  311. /package/{di2mt → projects/tuki/widgets/di2mt}/shared/components/stat-card/stat-card.component.ts +0 -0
  312. /package/{di2mt → projects/tuki/widgets/di2mt}/shared/components/status-list-card/status-list-card.component.html +0 -0
  313. /package/{di2mt → projects/tuki/widgets/di2mt}/shared/components/status-list-card/status-list-card.component.scss +0 -0
  314. /package/{di2mt → projects/tuki/widgets/di2mt}/shared/components/status-list-card/status-list-card.component.ts +0 -0
  315. /package/{di2mt → projects/tuki/widgets/di2mt}/shared/components/summary-card/summary-card.component.ts +0 -0
  316. /package/{di2mt → projects/tuki/widgets/di2mt}/shared/components/table-filters/table-filters.component.ts +0 -0
  317. /package/{di2mt → projects/tuki/widgets/di2mt}/shared/material.module.ts +0 -0
  318. /package/{di2mt → projects/tuki/widgets/di2mt}/shared/services/api.service.ts +0 -0
  319. /package/{di2mt → projects/tuki/widgets/di2mt}/shared/shared.module.ts +0 -0
  320. /package/{di2mt → projects/tuki/widgets/di2mt}/shared/types/data-table.ts +0 -0
  321. /package/{di2mt → projects/tuki/widgets/di2mt}/shared/types/table/filter.ts +0 -0
  322. /package/{di2mt → projects/tuki/widgets/di2mt}/styles/tuki-widgets-theme.scss +0 -0
  323. /package/{di2mt → projects/tuki/widgets/di2mt}/styles/variables.scss +0 -0
  324. /package/{di2mt → projects/tuki/widgets/di2mt}/widgets/upgrade-overview/cards/already-upgraded-sites/already-upgraded-sites-card.component.ts +0 -0
  325. /package/{di2mt → projects/tuki/widgets/di2mt}/widgets/upgrade-overview/cards/already-upgraded-users/already-upgraded-users-card.component.ts +0 -0
  326. /package/{di2mt → projects/tuki/widgets/di2mt}/widgets/upgrade-overview/cards/preconditions-status-list/preconditions-status-list-card.component.ts +0 -0
  327. /package/{di2mt → projects/tuki/widgets/di2mt}/widgets/upgrade-overview/cards/ready-to-upgrade-sites/ready-to-upgrade-sites-card.component.html +0 -0
  328. /package/{di2mt → projects/tuki/widgets/di2mt}/widgets/upgrade-overview/cards/ready-to-upgrade-sites/ready-to-upgrade-sites-card.component.scss +0 -0
  329. /package/{di2mt → projects/tuki/widgets/di2mt}/widgets/upgrade-overview/cards/ready-to-upgrade-sites/ready-to-upgrade-sites-card.component.ts +0 -0
  330. /package/{di2mt → projects/tuki/widgets/di2mt}/widgets/upgrade-overview/cards/ready-to-upgrade-users/ready-to-upgrade-users-card.component.html +0 -0
  331. /package/{di2mt → projects/tuki/widgets/di2mt}/widgets/upgrade-overview/cards/ready-to-upgrade-users/ready-to-upgrade-users-card.component.scss +0 -0
  332. /package/{di2mt → projects/tuki/widgets/di2mt}/widgets/upgrade-overview/cards/ready-to-upgrade-users/ready-to-upgrade-users-card.component.ts +0 -0
  333. /package/{di2mt → projects/tuki/widgets/di2mt}/widgets/upgrade-overview/cards/site-infrastructure-status-list/site-infrastructure-status-list-card.component.ts +0 -0
  334. /package/{di2mt → projects/tuki/widgets/di2mt}/widgets/upgrade-overview/cards/upgrade-state-comparison-chart/upgrade-state-comparison-chart-card.component.ts +0 -0
  335. /package/{di2mt → projects/tuki/widgets/di2mt}/widgets/upgrade-overview/types/upgrade-overview.ts +0 -0
  336. /package/{di2mt → projects/tuki/widgets/di2mt}/widgets/upgrade-overview/upgrade-overview.module.ts +0 -0
  337. /package/{di2mt → projects/tuki/widgets/di2mt}/widgets/upgrade-overview/upgrade-overview.service.ts +0 -0
  338. /package/{ng-package.json → projects/tuki/widgets/ng-package.json} +0 -0
  339. /package/{user-device-manage → projects/tuki/widgets/user-device-manage}/ng-package.json +0 -0
  340. /package/{user-device-manage → projects/tuki/widgets/user-device-manage}/src/assets/icons/icon_user.svg +0 -0
  341. /package/{user-manage → projects/tuki/widgets/user-manage}/ng-package.json +0 -0
  342. /package/{user-manage → projects/tuki/widgets/user-manage}/src/assets/icons/icon_user.svg +0 -0
  343. /package/{users-list → projects/tuki/widgets/users-list}/ng-package.json +0 -0
  344. /package/{users-list → projects/tuki/widgets/users-list}/src/assets/icons/icon_user.svg +0 -0
  345. /package/{users-list → projects/tuki/widgets/users-list}/src/users-list.component.css +0 -0
  346. /package/{users-list → projects/tuki/widgets/users-list}/src/users-list.component.css.map +0 -0
  347. /package/{users-list → projects/tuki/widgets/users-list}/src/utils/app-loader/app-loader.component.css +0 -0
  348. /package/{users-list → projects/tuki/widgets/users-list}/src/utils/app-loader/app-loader.component.css.map +0 -0
  349. /package/{users-list → projects/tuki/widgets/users-list}/src/utils/pagination/pagination.component.css +0 -0
  350. /package/{users-list → projects/tuki/widgets/users-list}/src/utils/pagination/pagination.component.css.map +0 -0
@@ -0,0 +1,362 @@
1
+ import { SelectionModel } from "@angular/cdk/collections";
2
+ import { Component, OnInit, OnDestroy, inject, Input, ViewEncapsulation } from "@angular/core";
3
+ import { MatTableDataSource } from "@angular/material/table";
4
+ import { TableColumn } from "../../../shared/types/data-table";
5
+ import { TableFilter } from "../../../shared/types/table/filter";
6
+ import { SiteUpgradeRecord } from "../types/user-upgrade";
7
+ import { UpgradeOverviewService } from "../../upgrade-overview/upgrade-overview.service";
8
+ import { of, Subject, Subscription } from "rxjs";
9
+ import { takeUntil } from "rxjs";
10
+ import { BatchStatusDTO, SiteUpgradeService, STATUSES } from "../site-upgrade.service";
11
+ import { STATUS_ENTRIES } from "../../../shared/types/constants";
12
+ import { APIService } from "../../../shared/services/api.service";
13
+ import { catchError } from 'rxjs/operators';
14
+
15
+ @Component({
16
+ selector: 'tk-site-upgrade-data-table',
17
+ templateUrl: './site-upgrade-data-table.component.html',
18
+ styleUrls: ['./site-upgrade-data-table.component.scss'],
19
+ encapsulation: ViewEncapsulation.None
20
+ })
21
+ export class SiteUpgradeDataTableComponent implements OnInit, OnDestroy {
22
+ readonly siteUpgradeService = inject(SiteUpgradeService);
23
+ private readonly apiService = inject(APIService);
24
+ private sites: SiteUpgradeRecord[] = [];
25
+ readonly destroy$ = new Subject<void>();
26
+ readonly STATUS_ENTRIES = STATUS_ENTRIES
27
+
28
+ @Input() token!: string;
29
+ @Input() customerId!: string;
30
+
31
+ columns!: TableColumn[];
32
+ dataPending = false;
33
+ data!: MatTableDataSource<any>;
34
+ displayedColumns: string[] = ['site', 'ready users', 'upgraded users', 'location mapping', 'pstn trunk', 'site upgrade status', 'progressBar', 'actions', 'userUpgradeLoader'];
35
+ selection = new SelectionModel<any>(true, []);
36
+ filters: TableFilter[] = [];
37
+ private activeFilters: { [key: string]: any } = {};
38
+ private subscriptions = new Subscription();
39
+ private collectingBatchInterval: any;
40
+
41
+ statusCounts: any = {};
42
+
43
+ constructor() {
44
+ }
45
+
46
+ ngOnInit(): void {
47
+ this.dataPending = true;
48
+ this.apiService.token = this.token;
49
+ this.siteUpgradeService.customerId = this.customerId;
50
+
51
+ const subsc1 = this.siteUpgradeService.getSiteUpgradeRecords()
52
+ .pipe(takeUntil(this.destroy$))
53
+ .subscribe((records: SiteUpgradeRecord[]) => {
54
+ this.data = new MatTableDataSource<SiteUpgradeRecord>(records);
55
+ this.sites = records.slice();
56
+ this.dataPending = false;
57
+ this.setupCustomFilter();
58
+ this.initializeFilters(records);
59
+ });
60
+ this.subscriptions.add(subsc1);
61
+
62
+ const subsc2 = this.siteUpgradeService.getSiteUpgradeStatusCounts()
63
+ .pipe(takeUntil(this.destroy$))
64
+ .subscribe((statusCounts) => {
65
+ this.statusCounts['Ready'] = statusCounts['READY'] || 0;
66
+ this.statusCounts['Not Ready'] = statusCounts['NOT_READY'] || 0;
67
+ this.statusCounts['Completed'] = statusCounts['COMPLETED'] || 0;
68
+ this.statusCounts['Failed'] = statusCounts['FAILED'] || 0;
69
+ });
70
+ this.subscriptions.add(subsc2);
71
+
72
+ const subsc3 = this.siteUpgradeService.siteUpdateStatusEvent
73
+ .subscribe((updatedStatuses: BatchStatusDTO[]) => {
74
+ this.handleCheckBatchStatusResponse(updatedStatuses);
75
+ });
76
+ this.subscriptions.add(subsc3);
77
+ }
78
+
79
+ onSiteMigration(site: SiteUpgradeRecord): void {
80
+ site.pending = true;
81
+ site.isProgressBarAvailable = true;
82
+ site.isMigrationInProgress = true;
83
+ const subsc = this.siteUpgradeService.migrateSite(site.siteId)
84
+ .pipe(takeUntil(this.destroy$))
85
+ .subscribe((records: SiteUpgradeRecord[]) => {
86
+ this.runMigrationProgress(site);
87
+ });
88
+ this.subscriptions.add(subsc);
89
+
90
+ }
91
+
92
+ private runMigrationProgress(site: SiteUpgradeRecord): void {
93
+ this.updateMigrationProgress(site);
94
+
95
+ site.interval = setInterval(() => {
96
+ this.updateMigrationProgress(site);
97
+ }, 10000);
98
+
99
+ }
100
+
101
+ private updateMigrationProgress(site: SiteUpgradeRecord): void {
102
+ if (!site || !site.isMigrationInProgress) {
103
+ return;
104
+ }
105
+ this.siteUpgradeService.getMigrationBatchesStatuses()
106
+ .subscribe(
107
+ () => { },
108
+ () => {
109
+ this.resetMigrationProgress(site, 'FAILED');
110
+ }
111
+ );
112
+ }
113
+
114
+ private resetMigrationProgress(site: SiteUpgradeRecord, status?: string): void {
115
+ site.isMigrationInProgress = false;
116
+ site.pending = false;
117
+ site.isProgressBarAvailable = false;
118
+ if (site.interval) {
119
+ clearInterval(site.interval);
120
+ }
121
+ if (status) {
122
+ site.status = status;
123
+ }
124
+ }
125
+
126
+ public onCollect(site: SiteUpgradeRecord): void {
127
+ site.pending = true;
128
+ site.status = STATUSES.COLLECTING;
129
+ // const ind =
130
+ const subscription =
131
+ this.siteUpgradeService.collectSiteCache(Number(site.siteId), 'webex')
132
+ .subscribe({
133
+ error: () => site.pending = false
134
+ });
135
+ this.subscriptions.add(subscription);
136
+ this.runBatchCheckStatus();
137
+ /*setTimeout(() => {
138
+ this.initCollectInterval(site);
139
+ }, 500);*/
140
+ }
141
+
142
+ private initCollectInterval(site: SiteUpgradeRecord): void {
143
+ if (!site.interval && !site.initPending) {
144
+ const ind = this.getSiteIndex(site);
145
+ if (this.sites[ind]) {
146
+ this.sites[ind].pending = true;
147
+ }
148
+
149
+ /*this.getCUCMListAlreadyInCollectWebexCache(batch);
150
+ this.getSiteListForCollectAndBuildWebexCache(batch);
151
+
152
+ site.interval = setInterval(() => {
153
+ this.getCUCMListAlreadyInCollectWebexCache(batch);
154
+ this.getSiteListForCollectAndBuildWebexCache(batch);
155
+
156
+ }, 10000);*/
157
+ }
158
+ }
159
+
160
+ private runBatchCheckStatus(): void {
161
+ if (this.sites && this.sites.length) {
162
+ const collectingBatchesIds = this.sites
163
+ .filter(site => site.status && site.status === STATUSES.COLLECTING)
164
+ .map(site => site.siteId);
165
+
166
+ if (collectingBatchesIds.length > 0) {
167
+ this.checkBatchStatus(collectingBatchesIds);
168
+ this.collectingBatchInterval = setInterval(() => {
169
+ this.checkBatchStatus(collectingBatchesIds);
170
+ }, 10000);
171
+ }
172
+ }
173
+ }
174
+
175
+ private checkBatchStatus(batchIds: string[]): void {
176
+ const subsc = this.siteUpgradeService.getBatchesStatuses(batchIds)
177
+ .pipe(
178
+ takeUntil(this.destroy$),
179
+ catchError(() => {
180
+ clearInterval(this.collectingBatchInterval);
181
+ return of([]);
182
+ })
183
+ ).subscribe((updatedStatuses: BatchStatusDTO[]) => {
184
+ this.handleCheckBatchStatusResponse(updatedStatuses);
185
+ });
186
+ this.subscriptions.add(subsc);
187
+ }
188
+
189
+ private handleCheckBatchStatusResponse(updatedStatuses: BatchStatusDTO[]): void {
190
+ if (updatedStatuses && updatedStatuses.length && this.sites && this.sites.length) {
191
+ updatedStatuses.forEach(updatedStatus => {
192
+ const ind = this.sites.findIndex(batch => batch.siteId === updatedStatus.id);
193
+ if (ind > -1 && this.sites[ind]) {
194
+ this.sites[ind].status = updatedStatus.status;
195
+ }
196
+ });
197
+ } else {
198
+ if (this.collectingBatchInterval) {
199
+ clearInterval(this.collectingBatchInterval);
200
+ }
201
+ }
202
+ }
203
+
204
+ private getSiteIndex(site: SiteUpgradeRecord): number {
205
+ if (this.sites && this.sites.length) {
206
+ return this.sites.findIndex(siteItem => siteItem.siteId === site.siteId);
207
+ }
208
+ return -1;
209
+ }
210
+
211
+ private initializeFilters(records: SiteUpgradeRecord[]): void {
212
+ // Extract unique sites from actual data
213
+ const uniqueSites = [...new Set(records.map(record => record.siteName))];
214
+ const siteOptions = uniqueSites.map(site => ({
215
+ label: site,
216
+ value: site.toLowerCase().replace(/\s+/g, '-')
217
+ }));
218
+
219
+ // Extract unique statuses from actual data
220
+ const uniqueStatuses = [...new Set(records.map(record => record.upgradeStatus))];
221
+ const statusOptions = uniqueStatuses.map(status => ({
222
+ label: STATUS_ENTRIES[status],
223
+ value: status.toLowerCase().replace(/\s+/g, '-')
224
+ }));
225
+
226
+ this.filters = [
227
+ {
228
+ id: 'sites',
229
+ type: 'select',
230
+ columnKey: 'Site',
231
+ placeholder: 'Sites',
232
+ options: siteOptions
233
+ },
234
+ {
235
+ id: 'status',
236
+ type: 'select',
237
+ columnKey: 'Site Upgrade Status',
238
+ placeholder: 'Upgrade Status',
239
+ options: statusOptions
240
+ }
241
+ ];
242
+ }
243
+
244
+ onFilter(filterEvent: { key: string, value: any }) {
245
+ const {key, value} = filterEvent;
246
+
247
+ let filterValue: any;
248
+ if (value && value.value !== undefined) {
249
+ filterValue = value.value;
250
+ } else if (value && value.target) {
251
+ filterValue = value.target.value;
252
+ } else {
253
+ filterValue = value;
254
+ }
255
+
256
+ // Handle "All" option or empty values - remove the filter
257
+ if (filterValue === 'all' || !filterValue || filterValue === '') {
258
+ delete this.activeFilters[key];
259
+ } else {
260
+ this.activeFilters[key] = filterValue;
261
+ }
262
+
263
+ this.applyFilters();
264
+ }
265
+
266
+ private setupCustomFilter() {
267
+ this.data.filterPredicate = (data: any, filter: string) => {
268
+ const filters = JSON.parse(filter || '{}');
269
+
270
+ for (const [key, value] of Object.entries(filters)) {
271
+ if (!value) continue;
272
+
273
+ switch (key) {
274
+ case 'Site':
275
+ if (data.siteName !== this.getSiteNameFromValue(value as string)) {
276
+ return false;
277
+ }
278
+ break;
279
+ case 'Site Upgrade Status':
280
+ if (!this.matchesUpgradeStatus(data.upgradeStatus, value as string)) {
281
+ return false;
282
+ }
283
+ break;
284
+ }
285
+ }
286
+
287
+ return true;
288
+ };
289
+ }
290
+
291
+ private applyFilters() {
292
+ this.data.filter = JSON.stringify(this.activeFilters);
293
+ }
294
+
295
+ private getSiteNameFromValue(value: string): string {
296
+ // Since we're now using actual site names, just convert back from slug format
297
+ return value.split('-').map(word =>
298
+ word.charAt(0).toUpperCase() + word.slice(1)
299
+ ).join(' ');
300
+ }
301
+
302
+ private matchesUpgradeStatus(status: string, filterValue: string): boolean {
303
+ // Handle direct status matching for cleaner implementation
304
+ return status.toLowerCase().replace(/\s+/g, '-') === filterValue.toLowerCase();
305
+ }
306
+
307
+ get filteredDataCount(): number {
308
+ return this.data?.filteredData?.length || 0;
309
+ }
310
+
311
+ /** Whether the number of selected elements matches the total number of rows. */
312
+ isAllSelected() {
313
+ const numSelected = this.selection.selected.length;
314
+ const numRows = this.data?.data.length || 0;
315
+ return numSelected === numRows;
316
+ }
317
+
318
+ /** Selects all rows if they are not all selected; otherwise clear selection. */
319
+ masterToggle() {
320
+ this.isAllSelected() ?
321
+ this.selection.clear() :
322
+ this.data?.data.forEach(row => this.selection.select(row));
323
+ }
324
+
325
+ getLocationMappingClass(locationMapping: boolean): string {
326
+ return locationMapping ? 'success' : 'error';
327
+ }
328
+
329
+ getSiteUpgradeStatusClass(status: string): string {
330
+ switch (status.toLowerCase()) {
331
+ case 'ready':
332
+ return 'ready';
333
+ case 'partial ready':
334
+ return 'partial-ready';
335
+ case 'completed':
336
+ return 'completed';
337
+ case 'failed':
338
+ return 'failed';
339
+ case 'not ready':
340
+ return 'not-ready';
341
+ default:
342
+ return 'not-ready';
343
+ }
344
+ }
345
+
346
+ upgradeSite(site: SiteUpgradeRecord) {
347
+ this.siteUpgradeService.upgradeSite(site);
348
+ }
349
+
350
+ ngOnDestroy(): void {
351
+ this.destroy$.next();
352
+ this.destroy$.complete();
353
+ this.dataPending = false;
354
+
355
+ if (this.collectingBatchInterval) {
356
+ clearInterval(this.collectingBatchInterval);
357
+ }
358
+ if (this.subscriptions) {
359
+ this.subscriptions.unsubscribe();
360
+ }
361
+ }
362
+ }
@@ -0,0 +1,33 @@
1
+ import { NgModule } from "@angular/core";
2
+ import { SiteUpgradeDataTableComponent } from "./site-upgrade-data-table/site-upgrade-data-table.component";
3
+ import { CommonModule } from "@angular/common";
4
+ import { MatTableModule } from "@angular/material/table";
5
+ import { MatIconModule } from "@angular/material/icon";
6
+ import { MatButtonModule } from "@angular/material/button";
7
+ import { SharedModule } from "../../shared/shared.module";
8
+ import { MatMenuModule } from '@angular/material/menu';
9
+ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
10
+ import { ProgressBarComponent } from './progress-bar/progress-bar.component';
11
+
12
+ @NgModule({
13
+ declarations: [
14
+ SiteUpgradeDataTableComponent,
15
+ ProgressBarComponent
16
+ ],
17
+ imports: [
18
+ CommonModule,
19
+ SharedModule,
20
+ MatTableModule,
21
+ MatIconModule,
22
+ MatMenuModule,
23
+ MatButtonModule,
24
+ MatProgressSpinnerModule
25
+
26
+ ],
27
+ exports: [
28
+ SiteUpgradeDataTableComponent,
29
+ ProgressBarComponent
30
+ ]
31
+ })
32
+ export class SiteUpgradeModule {
33
+ }
@@ -0,0 +1,102 @@
1
+ import { inject, Injectable } from "@angular/core";
2
+ import { map, Observable, Subject } from "rxjs";
3
+ import { SiteUpgradeRecord } from "./types/user-upgrade";
4
+ import { API } from "../../api/api.endpoints";
5
+ import { UserUpgradeRecord } from "../user-upgrade/types/user-upgrade";
6
+ import { APIService } from "../../shared/services/api.service";
7
+
8
+ @Injectable({
9
+ providedIn: 'root'
10
+ })
11
+ export class SiteUpgradeService {
12
+ siteUpdateStatusEvent = new Subject<BatchStatusDTO[]>();
13
+ private apiService = inject(APIService);
14
+ customerId!: string;
15
+
16
+ getSiteUpgradeStatusCounts(): Observable<any> {
17
+ return this.apiService.fetch(
18
+ API.SITE_UPGRADE.GET_SITES_UPGRADE_STATUS_COUNTS.replace(':customerId', this.customerId)
19
+ );
20
+ }
21
+
22
+ getSiteUpgradeRecords(): Observable<SiteUpgradeRecord[]> {
23
+ return this.apiService.fetch(
24
+ API.SITE_UPGRADE.GET_SITES_UPGRADE_DATA.replace(':customerId', this.customerId)
25
+ ).pipe(map((resp) => {
26
+ return resp.content.map((record: any) => ({
27
+ siteId: record.siteId,
28
+ siteName: record.siteName,
29
+ totalUsers: record.totalUsers,
30
+ totalReadyUsers: record.readyUsers,
31
+ totalNotReadyUsers: record.notReadyUsers,
32
+ totalUpgradedUsers: record.totalUpgradedUsers,
33
+ totalFailedUsers: record.totalFailedToUpgradeUsers,
34
+ locationMapping: record.locationMappingStatus,
35
+ PSTNTrunk: record.pstnTrunkStatus,
36
+ upgradeStatus: record.siteUpgradeStatus
37
+ } as SiteUpgradeRecord));
38
+ }));
39
+ }
40
+
41
+ collectSiteCache(siteId: number, migrationType: string = 'webex') {
42
+ return this.apiService.post(
43
+ API.SITE_UPGRADE.WEBEX_CACHE_COLLECTION
44
+ .replace(':siteId', String(siteId))
45
+ .replace(':migrationType', migrationType),
46
+ {}
47
+ )
48
+ }
49
+
50
+ migrateSite(siteId: string): Observable<any> {
51
+ return this.apiService.post(
52
+ API.SITE_UPGRADE.MIGRATE_SITE.replace(':siteId', String(siteId)),
53
+ {}
54
+ )
55
+ }
56
+
57
+ getBatchesStatuses(batchIds: string[]): Observable<BatchStatusDTO[]> {
58
+ return this.apiService.post(
59
+ API.SITE_UPGRADE.WEBEX_BATCH_STATUS
60
+ .replace(':customerId', this.customerId),
61
+ batchIds,
62
+ false
63
+ )
64
+ .pipe(map((result: BatchStatusDTO[]) => {
65
+ this.siteUpdateStatusEvent.next(result);
66
+ return result;
67
+ }))
68
+ }
69
+
70
+ getMigrationBatchesStatuses(): Observable<BatchStatusDTO[]> {
71
+ return this.apiService.fetch(API.SITE_UPGRADE.BATCH_STATUS.replace(':customerId', this.customerId))
72
+ /*.pipe(map((result: BatchStatusDTO[]) => {
73
+ this.siteUpdateStatusEvent.next(result);
74
+ return result;
75
+ }))*/
76
+ }
77
+
78
+ // TODO: Impl the site upgrade logic here
79
+ upgradeSite(site: SiteUpgradeRecord): void {
80
+ const customerId = site.customerId;
81
+ const siteId = site.siteId;
82
+ }
83
+ }
84
+
85
+ export interface BatchStatusDTO {
86
+ id: string;
87
+ status: string;
88
+ progress: string;
89
+ migErrorsCount: string;
90
+ }
91
+
92
+ export const STATUSES = {
93
+ COMPLETED: 'Completed',
94
+ NEW: 'New',
95
+ IN_PROGRESS: 'In Progress',
96
+ FAILED_IN_ERROR: 'Failed-in error',
97
+ FAILED: 'Failed',
98
+ FAILED_WITH_RETRY: 'Failed with Retry',
99
+ COLLECTING: 'Collecting',
100
+ FAILED_COLLECTING: 'Failed on collecting',
101
+ WAITING_FOR_REVIEW: 'Waiting for review'
102
+ };
@@ -0,0 +1,22 @@
1
+ import { Status, UpgradeStatus } from "../../../shared/types/constants";
2
+
3
+ export interface SiteUpgradeRecord {
4
+ id: string;
5
+ customerId: string;
6
+ siteId: string;
7
+ siteName: string;
8
+ totalUsers: number;
9
+ totalReadyUsers: number;
10
+ totalNotReadyUsers: number;
11
+ totalUpgradedUsers: number;
12
+ totalFailedUsers: number;
13
+ locationMapping: boolean;
14
+ PSTNTrunk: boolean;
15
+ upgradeStatus: UpgradeStatus;
16
+ pending?: boolean;
17
+ initPending?: boolean;
18
+ interval?: any;
19
+ status?: string;
20
+ isProgressBarAvailable?: boolean;
21
+ isMigrationInProgress?: boolean;
22
+ };
@@ -15,4 +15,5 @@ export interface UserUpgradeRecord {
15
15
  dialPlanStatus: Status;
16
16
  dependenciesStatus: DependenciesStatus;
17
17
  upgradeStatus: Status;
18
- };
18
+ pending?: boolean;
19
+ };
@@ -1,4 +1,11 @@
1
- <div class="wrapper">
1
+ <div *ngIf="dataPending" class="overlay">
2
+ <mat-progress-spinner
3
+ class="page-spinner"
4
+ mode="indeterminate"
5
+ [diameter]="120"></mat-progress-spinner>
6
+ </div>
7
+
8
+ <div id="userUpgradeDataTable" class="wrapper">
2
9
  <div class="user-upgrade-status-wrapper">
3
10
  <tk-summary-card [description]="'Users are ready to upgrade'" [value]="statusCounts['Ready']"></tk-summary-card>
4
11
  <tk-summary-card [description]="'Users are not ready'" [value]="statusCounts['Not Ready']" [status]="'Not Ready'"></tk-summary-card>
@@ -9,11 +16,11 @@
9
16
  <tk-table-filters *ngIf="filters.length > 0" [filters]="filters" (filter)="onFilter($event)"></tk-table-filters>
10
17
  <div class="action-wrapper">
11
18
  <span>{{filteredDataCount}} Users</span>
12
- <button
13
- mat-button
14
- class="upgrade-bulk-button"
15
- color="primary"
16
- [disabled]="selection.selected.length === 0"
19
+ <button
20
+ mat-button
21
+ class="upgrade-bulk-button"
22
+ color="primary"
23
+ [disabled]="selection.selected.length === 0"
17
24
  (click)="upgradeSelectedUsers()">
18
25
  Upgrade {{ selection.selected.length === 0 ? '' : '(' + selection.selected.length + ')' }}
19
26
  </button>
@@ -24,7 +31,7 @@
24
31
  <!-- Checkbox Column -->
25
32
  <ng-container matColumnDef="select">
26
33
  <th mat-header-cell *matHeaderCellDef>
27
- <mat-checkbox
34
+ <mat-checkbox
28
35
  (change)="$event ? masterToggle() : null"
29
36
  [checked]="selection.hasValue() && isAllSelected()"
30
37
  [indeterminate]="selection.hasValue() && !isAllSelected()"
@@ -32,11 +39,11 @@
32
39
  </mat-checkbox>
33
40
  </th>
34
41
  <td mat-cell *matCellDef="let row">
35
- <mat-checkbox
42
+ <mat-checkbox
36
43
  (click)="$event.stopPropagation()"
37
44
  (change)="$event ? selection.toggle(row) : null"
38
45
  [checked]="selection.isSelected(row)"
39
- [disabled]="STATUS_ENTRIES[row.upgradeStatus] !== 'Ready'"
46
+ [disabled]="STATUS_ENTRIES[row.upgradeStatus] !== 'Ready' || row.pending"
40
47
  class="custom-checkbox">
41
48
  </mat-checkbox>
42
49
  </td>
@@ -59,7 +66,7 @@
59
66
  <td mat-cell *matCellDef="let element">
60
67
  <div class="site-info">
61
68
  <span class="site-indicator"></span>
62
- {{element.siteName}}
69
+ <span [ngClass]="{'status-ready': element.dialPlanStatus === 'READY'}">{{element.siteName}}</span>
63
70
  </div>
64
71
  </td>
65
72
  </ng-container>
@@ -92,7 +99,7 @@
92
99
  <td mat-cell *matCellDef="let element">
93
100
  <div class="status-info">
94
101
  <span class="status-indicator" [ngClass]="getStatusClass(element.dialPlanStatus)"></span>
95
- <span>{{STATUS_ENTRIES[element.dialPlanStatus]}}</span>
102
+ <span [ngClass]="{'status-ready': element.dialPlanStatus === 'READY'}">{{STATUS_ENTRIES[element.dialPlanStatus]}}</span>
96
103
  </div>
97
104
  </td>
98
105
  </ng-container>
@@ -121,11 +128,59 @@
121
128
  </div>
122
129
  </ng-template>
123
130
  </div>
131
+
124
132
  </td>
125
133
  </ng-container>
126
134
 
135
+ <ng-container matColumnDef="userUpgradeLoader">
136
+ <th mat-header-cell *matHeaderCellDef></th>
137
+ <td class="mat-progress-spinner-td" mat-cell *matCellDef="let element">
138
+
139
+ <mat-progress-spinner
140
+ *ngIf="element.pending"
141
+ class="field-spinner"
142
+ [diameter]="20"
143
+ mode="indeterminate">
144
+ </mat-progress-spinner>
145
+ </td>
146
+ </ng-container>
147
+
127
148
  <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
128
- <tr mat-row *matRowDef="let row; columns: displayedColumns;"
149
+ <tr mat-row *matRowDef="let row; columns: displayedColumns;"
129
150
  [class.selected-row]="selection.isSelected(row)"></tr>
130
151
  </table>
131
- </div>
152
+ </div>
153
+
154
+ <div class="app-pagination">
155
+ <mat-paginator
156
+ [length]="pagination.total"
157
+ [pageSize]="pagination.pageSize"
158
+ [pageSizeOptions]="pagination.pageSizeOptions"
159
+ [pageIndex]="pagination.pageIndex"
160
+ (page)="pageEvent($event)"
161
+ showFirstLastButtons>
162
+ </mat-paginator>
163
+
164
+ <!--<div class="page-indexes-box">
165
+ <mat-paginator
166
+ [id]="'commonPagination'"
167
+ [hidePageSize]="true"
168
+ [length]="pagination.total"
169
+ [pageIndex]="pagination.pageIndex"
170
+ [pageSize]="pagination.pageSize"
171
+ [pageSizeOptions]="pagination.pageSizeOptions"
172
+ (page)="pageEvent($event)">
173
+ </mat-paginator>
174
+ </div>
175
+
176
+ <div class="per-page-block">
177
+ <div class="item_per_page">Items per page:</div>
178
+ <div class="select-box select-page-size">
179
+ <mat-select (selectionChange)="changePerPageNumber($event)" #page
180
+ [id]="'commonPaginationSelect'">
181
+ <mat-option *ngFor="let option of pageSizeOptions; let i = index;" [id]="'paginationSelectOpt_' + i" [value]="option">{{option}}</mat-option>
182
+ </mat-select>
183
+ </div>
184
+
185
+ </div>-->
186
+ </div>