@tuki-io/tuki-widgets 0.0.0-watch
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.
- package/README.md +24 -0
- package/di2mt/README.md +42 -0
- package/di2mt/api/api.endpoints.d.ts +20 -0
- package/di2mt/index.d.ts +5 -0
- package/di2mt/public-api.d.ts +12 -0
- package/di2mt/shared/components/card/card.component.d.ts +6 -0
- package/di2mt/shared/components/chart-card/chart-card.component.d.ts +22 -0
- package/di2mt/shared/components/stat-card/stat-card.component.d.ts +14 -0
- package/di2mt/shared/components/status-list-card/status-list-card.component.d.ts +7 -0
- package/di2mt/shared/components/summary-card/summary-card.component.d.ts +9 -0
- package/di2mt/shared/components/table-filters/table-filters.component.d.ts +14 -0
- package/di2mt/shared/material.module.d.ts +15 -0
- package/di2mt/shared/services/api.service.d.ts +20 -0
- package/di2mt/shared/shared.module.d.ts +16 -0
- package/di2mt/shared/types/constants.d.ts +7 -0
- package/di2mt/shared/types/data-table.d.ts +5 -0
- package/di2mt/shared/types/table/filter.d.ts +16 -0
- package/di2mt/widgets/site-upgrade/site-upgrade-data-table/site-upgrade-data-table.component.d.ts +48 -0
- package/di2mt/widgets/site-upgrade/site-upgrade.module.d.ts +12 -0
- package/di2mt/widgets/site-upgrade/site-upgrade.service.d.ts +12 -0
- package/di2mt/widgets/site-upgrade/types/user-upgrade.d.ts +14 -0
- package/di2mt/widgets/upgrade-overview/cards/already-upgraded-sites/already-upgraded-sites-card.component.d.ts +19 -0
- package/di2mt/widgets/upgrade-overview/cards/already-upgraded-users/already-upgraded-users-card.component.d.ts +19 -0
- package/di2mt/widgets/upgrade-overview/cards/preconditions-status-list/preconditions-status-list-card.component.d.ts +18 -0
- package/di2mt/widgets/upgrade-overview/cards/ready-to-upgrade-sites/ready-to-upgrade-sites-card.component.d.ts +19 -0
- package/di2mt/widgets/upgrade-overview/cards/ready-to-upgrade-users/ready-to-upgrade-users-card.component.d.ts +19 -0
- package/di2mt/widgets/upgrade-overview/cards/site-infrastructure-status-list/site-infrastructure-status-list-card.component.d.ts +15 -0
- package/di2mt/widgets/upgrade-overview/cards/upgrade-state-comparison-chart/upgrade-state-comparison-chart-card.component.d.ts +18 -0
- package/di2mt/widgets/upgrade-overview/types/upgrade-overview.d.ts +56 -0
- package/di2mt/widgets/upgrade-overview/upgrade-overview.module.d.ts +15 -0
- package/di2mt/widgets/upgrade-overview/upgrade-overview.service.d.ts +17 -0
- package/di2mt/widgets/user-upgrade/types/user-upgrade.d.ts +16 -0
- package/di2mt/widgets/user-upgrade/user-upgrade-data-table/user-upgrade-data-table.component.d.ts +49 -0
- package/di2mt/widgets/user-upgrade/user-upgrade.module.d.ts +12 -0
- package/di2mt/widgets/user-upgrade/user-upgrade.service.d.ts +14 -0
- package/esm2020/di2mt/api/api.endpoints.mjs +21 -0
- package/esm2020/di2mt/public-api.mjs +23 -0
- package/esm2020/di2mt/shared/components/card/card.component.mjs +13 -0
- package/esm2020/di2mt/shared/components/chart-card/chart-card.component.mjs +62 -0
- package/esm2020/di2mt/shared/components/stat-card/stat-card.component.mjs +47 -0
- package/esm2020/di2mt/shared/components/status-list-card/status-list-card.component.mjs +17 -0
- package/esm2020/di2mt/shared/components/summary-card/summary-card.component.mjs +36 -0
- package/esm2020/di2mt/shared/components/table-filters/table-filters.component.mjs +37 -0
- package/esm2020/di2mt/shared/material.module.mjs +76 -0
- package/esm2020/di2mt/shared/services/api.service.mjs +86 -0
- package/esm2020/di2mt/shared/shared.module.mjs +61 -0
- package/esm2020/di2mt/shared/types/constants.mjs +12 -0
- package/esm2020/di2mt/shared/types/data-table.mjs +2 -0
- package/esm2020/di2mt/shared/types/table/filter.mjs +2 -0
- package/esm2020/di2mt/tuki-io-tuki-widgets-di2mt.mjs +5 -0
- package/esm2020/di2mt/widgets/site-upgrade/site-upgrade-data-table/site-upgrade-data-table.component.mjs +182 -0
- package/esm2020/di2mt/widgets/site-upgrade/site-upgrade.module.mjs +40 -0
- package/esm2020/di2mt/widgets/site-upgrade/site-upgrade.service.mjs +43 -0
- package/esm2020/di2mt/widgets/site-upgrade/types/user-upgrade.mjs +3 -0
- package/esm2020/di2mt/widgets/upgrade-overview/cards/already-upgraded-sites/already-upgraded-sites-card.component.mjs +64 -0
- package/esm2020/di2mt/widgets/upgrade-overview/cards/already-upgraded-users/already-upgraded-users-card.component.mjs +64 -0
- package/esm2020/di2mt/widgets/upgrade-overview/cards/preconditions-status-list/preconditions-status-list-card.component.mjs +68 -0
- package/esm2020/di2mt/widgets/upgrade-overview/cards/ready-to-upgrade-sites/ready-to-upgrade-sites-card.component.mjs +45 -0
- package/esm2020/di2mt/widgets/upgrade-overview/cards/ready-to-upgrade-users/ready-to-upgrade-users-card.component.mjs +45 -0
- package/esm2020/di2mt/widgets/upgrade-overview/cards/site-infrastructure-status-list/site-infrastructure-status-list-card.component.mjs +64 -0
- package/esm2020/di2mt/widgets/upgrade-overview/cards/upgrade-state-comparison-chart/upgrade-state-comparison-chart-card.component.mjs +74 -0
- package/esm2020/di2mt/widgets/upgrade-overview/types/upgrade-overview.mjs +2 -0
- package/esm2020/di2mt/widgets/upgrade-overview/upgrade-overview.module.mjs +59 -0
- package/esm2020/di2mt/widgets/upgrade-overview/upgrade-overview.service.mjs +82 -0
- package/esm2020/di2mt/widgets/user-upgrade/types/user-upgrade.mjs +3 -0
- package/esm2020/di2mt/widgets/user-upgrade/user-upgrade-data-table/user-upgrade-data-table.component.mjs +197 -0
- package/esm2020/di2mt/widgets/user-upgrade/user-upgrade.module.mjs +40 -0
- package/esm2020/di2mt/widgets/user-upgrade/user-upgrade.service.mjs +58 -0
- package/esm2020/lib/widgets.component.mjs +22 -0
- package/esm2020/lib/widgets.module.mjs +21 -0
- package/esm2020/lib/widgets.service.mjs +14 -0
- package/esm2020/public-api.mjs +7 -0
- package/esm2020/tuki-io-tuki-widgets.mjs +5 -0
- package/esm2020/user-device-manage/public-api.mjs +9 -0
- package/esm2020/user-device-manage/src/app.constants.mjs +95 -0
- package/esm2020/user-device-manage/src/classes/device.mjs +85 -0
- package/esm2020/user-device-manage/src/classes/line-association-interface.mjs +2 -0
- package/esm2020/user-device-manage/src/classes/line-association.mjs +121 -0
- package/esm2020/user-device-manage/src/classes/line-call-info-display.mjs +10 -0
- package/esm2020/user-device-manage/src/classes/line-directory.mjs +27 -0
- package/esm2020/user-device-manage/src/classes/line.mjs +18 -0
- package/esm2020/user-device-manage/src/classes/notification.mjs +32 -0
- package/esm2020/user-device-manage/src/classes/recording-options.mjs +7 -0
- package/esm2020/user-device-manage/src/classes/simplified-user.mjs +111 -0
- package/esm2020/user-device-manage/src/classes/site-defaults.mjs +21 -0
- package/esm2020/user-device-manage/src/classes/translation-pattern.mjs +32 -0
- package/esm2020/user-device-manage/src/classes/types.mjs +24 -0
- package/esm2020/user-device-manage/src/common-functions.mjs +19 -0
- package/esm2020/user-device-manage/src/confirm-dialog/info-dialog.component.mjs +34 -0
- package/esm2020/user-device-manage/src/device-associated-line/associated-line-row/associated-line-row.component.mjs +31 -0
- package/esm2020/user-device-manage/src/device-associated-line/device-associated-line-details-box/device-associated-line-details-box.component.mjs +16 -0
- package/esm2020/user-device-manage/src/device-associated-line/device-associated-line-extension/device-associated-line-extension.component.mjs +64 -0
- package/esm2020/user-device-manage/src/device-associated-line/device-associated-line.component.mjs +179 -0
- package/esm2020/user-device-manage/src/device-list/device-list.component.mjs +24 -0
- package/esm2020/user-device-manage/src/device-manage-widget.component.mjs +335 -0
- package/esm2020/user-device-manage/src/environments/environment.mjs +11 -0
- package/esm2020/user-device-manage/src/interseptors/auth.interceptor.mjs +36 -0
- package/esm2020/user-device-manage/src/lazy-loading-select/lazy-loading-select.component.mjs +74 -0
- package/esm2020/user-device-manage/src/material.module.mjs +192 -0
- package/esm2020/user-device-manage/src/notifications/notification.component.mjs +35 -0
- package/esm2020/user-device-manage/src/services/api.service.mjs +79 -0
- package/esm2020/user-device-manage/src/services/device.service.mjs +83 -0
- package/esm2020/user-device-manage/src/services/dns.service.mjs +104 -0
- package/esm2020/user-device-manage/src/services/line.service.mjs +76 -0
- package/esm2020/user-device-manage/src/services/notification.service.mjs +62 -0
- package/esm2020/user-device-manage/src/services/removeKynFromIBM.service.mjs +25 -0
- package/esm2020/user-device-manage/src/services/site-settings.service.mjs +70 -0
- package/esm2020/user-device-manage/src/services/sorting-utils.service.mjs +197 -0
- package/esm2020/user-device-manage/src/services/user.service.mjs +243 -0
- package/esm2020/user-device-manage/src/services/utils.service.mjs +87 -0
- package/esm2020/user-device-manage/src/services/validation.service.mjs +760 -0
- package/esm2020/user-device-manage/src/user-device-manage.module.mjs +107 -0
- package/esm2020/user-device-manage/src/utils/app-loader/app-loader.mjs +14 -0
- package/esm2020/user-device-manage/tuki-io-tuki-widgets-user-device-manage.mjs +5 -0
- package/esm2020/user-manage/public-api.mjs +7 -0
- package/esm2020/user-manage/src/app.constants.mjs +50 -0
- package/esm2020/user-manage/src/classes/device.mjs +37 -0
- package/esm2020/user-manage/src/classes/line-association-interface.mjs +2 -0
- package/esm2020/user-manage/src/classes/line-association.mjs +110 -0
- package/esm2020/user-manage/src/classes/line-call-info-display.mjs +10 -0
- package/esm2020/user-manage/src/classes/line-directory.mjs +27 -0
- package/esm2020/user-manage/src/classes/line.mjs +18 -0
- package/esm2020/user-manage/src/classes/notification.mjs +32 -0
- package/esm2020/user-manage/src/classes/pagination.mjs +8 -0
- package/esm2020/user-manage/src/classes/recording-options.mjs +7 -0
- package/esm2020/user-manage/src/classes/simplified-user.mjs +109 -0
- package/esm2020/user-manage/src/classes/table-data.mjs +2 -0
- package/esm2020/user-manage/src/classes/translation-pattern.mjs +32 -0
- package/esm2020/user-manage/src/classes/user-list.mjs +10 -0
- package/esm2020/user-manage/src/common-functions.mjs +19 -0
- package/esm2020/user-manage/src/device-list/device-list.component.mjs +24 -0
- package/esm2020/user-manage/src/environments/environment.mjs +11 -0
- package/esm2020/user-manage/src/interseptors/auth.interceptor.mjs +36 -0
- package/esm2020/user-manage/src/lazy-loading-select/lazy-loading-select.component.mjs +74 -0
- package/esm2020/user-manage/src/material.module.mjs +188 -0
- package/esm2020/user-manage/src/notifications/notification.component.mjs +35 -0
- package/esm2020/user-manage/src/removeKynFromIBM.service.mjs +25 -0
- package/esm2020/user-manage/src/services/api.service.mjs +79 -0
- package/esm2020/user-manage/src/services/dns.service.mjs +110 -0
- package/esm2020/user-manage/src/services/line.service.mjs +34 -0
- package/esm2020/user-manage/src/services/notification.service.mjs +62 -0
- package/esm2020/user-manage/src/services/removeKynFromIBM.service.mjs +25 -0
- package/esm2020/user-manage/src/services/site-settings.service.mjs +36 -0
- package/esm2020/user-manage/src/services/sorting-utils.service.mjs +197 -0
- package/esm2020/user-manage/src/services/user.service.mjs +207 -0
- package/esm2020/user-manage/src/services/users-search.service.mjs +50 -0
- package/esm2020/user-manage/src/services/utils.service.mjs +73 -0
- package/esm2020/user-manage/src/user-calling/user-calling-extension/user-calling-extension.component.mjs +65 -0
- package/esm2020/user-manage/src/user-calling/user-calling.component.mjs +78 -0
- package/esm2020/user-manage/src/user-info/user-info.component.mjs +20 -0
- package/esm2020/user-manage/src/user-manage-widget.component.mjs +208 -0
- package/esm2020/user-manage/src/user-manage.module.mjs +99 -0
- package/esm2020/user-manage/src/utils/app-loader/app-loader.mjs +14 -0
- package/esm2020/user-manage/src/utils/pagination/pagination.component.mjs +43 -0
- package/esm2020/user-manage/tuki-io-tuki-widgets-user-manage.mjs +5 -0
- package/esm2020/users-list/public-api.mjs +9 -0
- package/esm2020/users-list/src/app.constants.mjs +54 -0
- package/esm2020/users-list/src/classes/app-location.mjs +32 -0
- package/esm2020/users-list/src/classes/device.mjs +7 -0
- package/esm2020/users-list/src/classes/line.mjs +18 -0
- package/esm2020/users-list/src/classes/move-user.mjs +178 -0
- package/esm2020/users-list/src/classes/notification.mjs +31 -0
- package/esm2020/users-list/src/classes/pagination.mjs +8 -0
- package/esm2020/users-list/src/classes/simlified-user.mjs +50 -0
- package/esm2020/users-list/src/classes/table-data.mjs +2 -0
- package/esm2020/users-list/src/classes/user-list.mjs +14 -0
- package/esm2020/users-list/src/material.module.mjs +209 -0
- package/esm2020/users-list/src/move-user-wizard/move-user-stepper/device-move-user/device-move-user-wizard.component.mjs +38 -0
- package/esm2020/users-list/src/move-user-wizard/move-user-stepper/device-move-user-tab/devices-move-user-wizard-tab.component.mjs +23 -0
- package/esm2020/users-list/src/move-user-wizard/move-user-stepper/move-user-stepper.component.mjs +189 -0
- package/esm2020/users-list/src/move-user-wizard/move-user-wizard.component.mjs +38 -0
- package/esm2020/users-list/src/services/api-webex.service.mjs +18 -0
- package/esm2020/users-list/src/services/api.service.mjs +78 -0
- package/esm2020/users-list/src/services/dns.service.mjs +120 -0
- package/esm2020/users-list/src/services/events-communication.service.mjs +14 -0
- package/esm2020/users-list/src/services/move-user.service.mjs +53 -0
- package/esm2020/users-list/src/services/notification.service.mjs +62 -0
- package/esm2020/users-list/src/services/removeKynFromIBM.service.mjs +25 -0
- package/esm2020/users-list/src/services/site-settings.service.mjs +27 -0
- package/esm2020/users-list/src/services/user.service.mjs +142 -0
- package/esm2020/users-list/src/services/users-search.service.mjs +122 -0
- package/esm2020/users-list/src/user-list-confirm-dialog/user-list-confirm-dialog.component.mjs +34 -0
- package/esm2020/users-list/src/users-list.component.mjs +287 -0
- package/esm2020/users-list/src/users-list.module.mjs +92 -0
- package/esm2020/users-list/src/utils/app-loader/app-loader.mjs +14 -0
- package/esm2020/users-list/src/utils/common-functions.mjs +32 -0
- package/esm2020/users-list/src/utils/pagination/pagination.component.mjs +43 -0
- package/esm2020/users-list/src/utils/utils.service.mjs +73 -0
- package/esm2020/users-list/tuki-io-tuki-widgets-users-list.mjs +5 -0
- package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs +1469 -0
- package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs.map +1 -0
- package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs +3402 -0
- package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -0
- package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs +2124 -0
- package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs.map +1 -0
- package/fesm2015/tuki-io-tuki-widgets-users-list.mjs +1994 -0
- package/fesm2015/tuki-io-tuki-widgets-users-list.mjs.map +1 -0
- package/fesm2015/tuki-io-tuki-widgets.mjs +63 -0
- package/fesm2015/tuki-io-tuki-widgets.mjs.map +1 -0
- package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs +1460 -0
- package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs.map +1 -0
- package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs +3364 -0
- package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -0
- package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs +2107 -0
- package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs.map +1 -0
- package/fesm2020/tuki-io-tuki-widgets-users-list.mjs +1973 -0
- package/fesm2020/tuki-io-tuki-widgets-users-list.mjs.map +1 -0
- package/fesm2020/tuki-io-tuki-widgets.mjs +63 -0
- package/fesm2020/tuki-io-tuki-widgets.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/widgets.component.d.ts +8 -0
- package/lib/widgets.module.d.ts +7 -0
- package/lib/widgets.service.d.ts +6 -0
- package/package.json +65 -0
- package/public-api.d.ts +3 -0
- package/user-device-manage/index.d.ts +5 -0
- package/user-device-manage/public-api.d.ts +8 -0
- package/user-device-manage/src/app.constants.d.ts +74 -0
- package/user-device-manage/src/classes/device.d.ts +233 -0
- package/user-device-manage/src/classes/line-association-interface.d.ts +45 -0
- package/user-device-manage/src/classes/line-association.d.ts +62 -0
- package/user-device-manage/src/classes/line-call-info-display.d.ts +11 -0
- package/user-device-manage/src/classes/line-directory.d.ts +15 -0
- package/user-device-manage/src/classes/line.d.ts +140 -0
- package/user-device-manage/src/classes/notification.d.ts +18 -0
- package/user-device-manage/src/classes/recording-options.d.ts +5 -0
- package/user-device-manage/src/classes/simplified-user.d.ts +52 -0
- package/user-device-manage/src/classes/site-defaults.d.ts +146 -0
- package/user-device-manage/src/classes/translation-pattern.d.ts +19 -0
- package/user-device-manage/src/classes/types.d.ts +19 -0
- package/user-device-manage/src/common-functions.d.ts +1 -0
- package/user-device-manage/src/confirm-dialog/info-dialog.component.d.ts +20 -0
- package/user-device-manage/src/device-associated-line/associated-line-row/associated-line-row.component.d.ts +15 -0
- package/user-device-manage/src/device-associated-line/device-associated-line-details-box/device-associated-line-details-box.component.d.ts +7 -0
- package/user-device-manage/src/device-associated-line/device-associated-line-extension/device-associated-line-extension.component.d.ts +24 -0
- package/user-device-manage/src/device-associated-line/device-associated-line.component.d.ts +89 -0
- package/user-device-manage/src/device-list/device-list.component.d.ts +11 -0
- package/user-device-manage/src/device-manage-widget.component.d.ts +71 -0
- package/user-device-manage/src/environments/environment.d.ts +9 -0
- package/user-device-manage/src/interseptors/auth.interceptor.d.ts +9 -0
- package/user-device-manage/src/lazy-loading-select/lazy-loading-select.component.d.ts +35 -0
- package/user-device-manage/src/material.module.d.ts +29 -0
- package/user-device-manage/src/notifications/notification.component.d.ts +19 -0
- package/user-device-manage/src/services/api.service.d.ts +20 -0
- package/user-device-manage/src/services/device.service.d.ts +21 -0
- package/user-device-manage/src/services/dns.service.d.ts +14 -0
- package/user-device-manage/src/services/line.service.d.ts +33 -0
- package/user-device-manage/src/services/notification.service.d.ts +18 -0
- package/user-device-manage/src/services/removeKynFromIBM.service.d.ts +8 -0
- package/user-device-manage/src/services/site-settings.service.d.ts +25 -0
- package/user-device-manage/src/services/sorting-utils.service.d.ts +26 -0
- package/user-device-manage/src/services/user.service.d.ts +51 -0
- package/user-device-manage/src/services/utils.service.d.ts +10 -0
- package/user-device-manage/src/services/validation.service.d.ts +165 -0
- package/user-device-manage/src/user-device-manage.module.d.ts +22 -0
- package/user-device-manage/src/utils/app-loader/app-loader.d.ts +6 -0
- package/user-manage/index.d.ts +5 -0
- package/user-manage/public-api.d.ts +6 -0
- package/user-manage/src/app.constants.d.ts +29 -0
- package/user-manage/src/classes/device.d.ts +203 -0
- package/user-manage/src/classes/line-association-interface.d.ts +40 -0
- package/user-manage/src/classes/line-association.d.ts +55 -0
- package/user-manage/src/classes/line-call-info-display.d.ts +11 -0
- package/user-manage/src/classes/line-directory.d.ts +16 -0
- package/user-manage/src/classes/line.d.ts +140 -0
- package/user-manage/src/classes/notification.d.ts +18 -0
- package/user-manage/src/classes/pagination.d.ts +13 -0
- package/user-manage/src/classes/recording-options.d.ts +5 -0
- package/user-manage/src/classes/simplified-user.d.ts +50 -0
- package/user-manage/src/classes/table-data.d.ts +5 -0
- package/user-manage/src/classes/translation-pattern.d.ts +18 -0
- package/user-manage/src/classes/user-list.d.ts +34 -0
- package/user-manage/src/common-functions.d.ts +1 -0
- package/user-manage/src/device-list/device-list.component.d.ts +11 -0
- package/user-manage/src/environments/environment.d.ts +9 -0
- package/user-manage/src/interseptors/auth.interceptor.d.ts +9 -0
- package/user-manage/src/lazy-loading-select/lazy-loading-select.component.d.ts +35 -0
- package/user-manage/src/material.module.d.ts +28 -0
- package/user-manage/src/notifications/notification.component.d.ts +19 -0
- package/user-manage/src/removeKynFromIBM.service.d.ts +8 -0
- package/user-manage/src/services/api.service.d.ts +21 -0
- package/user-manage/src/services/dns.service.d.ts +14 -0
- package/user-manage/src/services/line.service.d.ts +17 -0
- package/user-manage/src/services/notification.service.d.ts +18 -0
- package/user-manage/src/services/removeKynFromIBM.service.d.ts +8 -0
- package/user-manage/src/services/site-settings.service.d.ts +9 -0
- package/user-manage/src/services/sorting-utils.service.d.ts +26 -0
- package/user-manage/src/services/user.service.d.ts +43 -0
- package/user-manage/src/services/users-search.service.d.ts +25 -0
- package/user-manage/src/services/utils.service.d.ts +9 -0
- package/user-manage/src/user-calling/user-calling-extension/user-calling-extension.component.d.ts +24 -0
- package/user-manage/src/user-calling/user-calling.component.d.ts +30 -0
- package/user-manage/src/user-info/user-info.component.d.ts +9 -0
- package/user-manage/src/user-manage-widget.component.d.ts +45 -0
- package/user-manage/src/user-manage.module.d.ts +21 -0
- package/user-manage/src/utils/app-loader/app-loader.d.ts +6 -0
- package/user-manage/src/utils/pagination/pagination.component.d.ts +18 -0
- package/users-list/index.d.ts +5 -0
- package/users-list/public-api.d.ts +8 -0
- package/users-list/src/app.constants.d.ts +36 -0
- package/users-list/src/classes/app-location.d.ts +17 -0
- package/users-list/src/classes/device.d.ts +224 -0
- package/users-list/src/classes/line.d.ts +140 -0
- package/users-list/src/classes/move-user.d.ts +85 -0
- package/users-list/src/classes/notification.d.ts +18 -0
- package/users-list/src/classes/pagination.d.ts +13 -0
- package/users-list/src/classes/simlified-user.d.ts +25 -0
- package/users-list/src/classes/table-data.d.ts +5 -0
- package/users-list/src/classes/user-list.d.ts +36 -0
- package/users-list/src/material.module.d.ts +31 -0
- package/users-list/src/move-user-wizard/move-user-stepper/device-move-user/device-move-user-wizard.component.d.ts +21 -0
- package/users-list/src/move-user-wizard/move-user-stepper/device-move-user-tab/devices-move-user-wizard-tab.component.d.ts +12 -0
- package/users-list/src/move-user-wizard/move-user-stepper/move-user-stepper.component.d.ts +55 -0
- package/users-list/src/move-user-wizard/move-user-wizard.component.d.ts +17 -0
- package/users-list/src/services/api-webex.service.d.ts +8 -0
- package/users-list/src/services/api.service.d.ts +21 -0
- package/users-list/src/services/dns.service.d.ts +18 -0
- package/users-list/src/services/events-communication.service.d.ts +8 -0
- package/users-list/src/services/move-user.service.d.ts +17 -0
- package/users-list/src/services/notification.service.d.ts +18 -0
- package/users-list/src/services/removeKynFromIBM.service.d.ts +8 -0
- package/users-list/src/services/site-settings.service.d.ts +11 -0
- package/users-list/src/services/user.service.d.ts +35 -0
- package/users-list/src/services/users-search.service.d.ts +34 -0
- package/users-list/src/user-list-confirm-dialog/user-list-confirm-dialog.component.d.ts +20 -0
- package/users-list/src/users-list.component.d.ts +60 -0
- package/users-list/src/users-list.module.d.ts +18 -0
- package/users-list/src/utils/app-loader/app-loader.d.ts +6 -0
- package/users-list/src/utils/common-functions.d.ts +2 -0
- package/users-list/src/utils/pagination/pagination.component.d.ts +18 -0
- package/users-list/src/utils/utils.service.d.ts +9 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tuki-io-tuki-widgets-di2mt.mjs","sources":["../../../../projects/tuki/widgets/di2mt/api/api.endpoints.ts","../../../../projects/tuki/widgets/di2mt/shared/services/api.service.ts","../../../../projects/tuki/widgets/di2mt/widgets/user-upgrade/user-upgrade.service.ts","../../../../projects/tuki/widgets/di2mt/shared/types/constants.ts","../../../../projects/tuki/widgets/di2mt/shared/components/summary-card/summary-card.component.ts","../../../../projects/tuki/widgets/di2mt/shared/components/summary-card/summary-card.component.html","../../../../projects/tuki/widgets/di2mt/shared/components/table-filters/table-filters.component.ts","../../../../projects/tuki/widgets/di2mt/shared/components/table-filters/table-filters.component.html","../../../../projects/tuki/widgets/di2mt/widgets/user-upgrade/user-upgrade-data-table/user-upgrade-data-table.component.ts","../../../../projects/tuki/widgets/di2mt/widgets/user-upgrade/user-upgrade-data-table/user-upgrade-data-table.component.html","../../../../projects/tuki/widgets/di2mt/shared/components/card/card.component.ts","../../../../projects/tuki/widgets/di2mt/shared/components/card/card.component.html","../../../../projects/tuki/widgets/di2mt/shared/material.module.ts","../../../../projects/tuki/widgets/di2mt/shared/components/stat-card/stat-card.component.ts","../../../../projects/tuki/widgets/di2mt/shared/components/stat-card/stat-card.component.html","../../../../projects/tuki/widgets/di2mt/shared/components/status-list-card/status-list-card.component.ts","../../../../projects/tuki/widgets/di2mt/shared/components/status-list-card/status-list-card.component.html","../../../../projects/tuki/widgets/di2mt/shared/components/chart-card/chart-card.component.ts","../../../../projects/tuki/widgets/di2mt/shared/components/chart-card/chart-card.component.html","../../../../projects/tuki/widgets/di2mt/shared/shared.module.ts","../../../../projects/tuki/widgets/di2mt/widgets/user-upgrade/user-upgrade.module.ts","../../../../projects/tuki/widgets/di2mt/widgets/site-upgrade/site-upgrade.service.ts","../../../../projects/tuki/widgets/di2mt/widgets/site-upgrade/site-upgrade-data-table/site-upgrade-data-table.component.ts","../../../../projects/tuki/widgets/di2mt/widgets/site-upgrade/site-upgrade-data-table/site-upgrade-data-table.component.html","../../../../projects/tuki/widgets/di2mt/widgets/site-upgrade/site-upgrade.module.ts","../../../../projects/tuki/widgets/di2mt/widgets/upgrade-overview/upgrade-overview.service.ts","../../../../projects/tuki/widgets/di2mt/widgets/upgrade-overview/cards/ready-to-upgrade-users/ready-to-upgrade-users-card.component.ts","../../../../projects/tuki/widgets/di2mt/widgets/upgrade-overview/cards/ready-to-upgrade-users/ready-to-upgrade-users-card.component.html","../../../../projects/tuki/widgets/di2mt/widgets/upgrade-overview/cards/ready-to-upgrade-sites/ready-to-upgrade-sites-card.component.ts","../../../../projects/tuki/widgets/di2mt/widgets/upgrade-overview/cards/ready-to-upgrade-sites/ready-to-upgrade-sites-card.component.html","../../../../projects/tuki/widgets/di2mt/widgets/upgrade-overview/cards/already-upgraded-users/already-upgraded-users-card.component.ts","../../../../projects/tuki/widgets/di2mt/widgets/upgrade-overview/cards/already-upgraded-sites/already-upgraded-sites-card.component.ts","../../../../projects/tuki/widgets/di2mt/widgets/upgrade-overview/cards/preconditions-status-list/preconditions-status-list-card.component.ts","../../../../projects/tuki/widgets/di2mt/widgets/upgrade-overview/cards/site-infrastructure-status-list/site-infrastructure-status-list-card.component.ts","../../../../projects/tuki/widgets/di2mt/widgets/upgrade-overview/cards/upgrade-state-comparison-chart/upgrade-state-comparison-chart-card.component.ts","../../../../projects/tuki/widgets/di2mt/widgets/upgrade-overview/upgrade-overview.module.ts","../../../../projects/tuki/widgets/di2mt/public-api.ts","../../../../projects/tuki/widgets/di2mt/tuki-io-tuki-widgets-di2mt.ts"],"sourcesContent":["export const API = {\r\n OVERVIEW: {\r\n GET_UPGRADE_PRECONDITIONS: '/api/webex-upgrade/customers/:customerId/preconditions/fetch',\r\n GET_SITE_INFRASTRUCTURE: '/api/webex-upgrade/customers/:customerId/infra/fetch',\r\n GET_USERS_UPGRADE_SUMMARY: '/api/webex-upgrade/customers/:customerId/users/upgrade/fetch',\r\n GET_SITES_UPGRADE_SUMMARY: '/api/webex-upgrade/customers/:customerId/sites/upgrade/fetch',\r\n GET_USERS_UPGRADE_READINESS: '/api/webex-upgrade/customers/:customerId/users/readiness/fetch',\r\n GET_SITES_UPGRADE_READINESS: '/api/webex-upgrade/customers/:customerId/sites/readiness/fetch'\r\n },\r\n USER_UPGRADE: {\r\n GET_USERS_UPGRADE_DATA: '/api/webex-upgrade/customers/:customerId/user-upgrade',\r\n GET_USERS_UPGRADE_STATUS_COUNTS: '/api/webex-upgrade/customers/:customerId/user-upgrades/status-counts',\r\n UPGRADE_USER: '/api/migration/webex/sites/:siteId/users/:userId'\r\n },\r\n SITE_UPGRADE: {\r\n GET_SITES_UPGRADE_DATA: '/api/webex-upgrade/customers/:customerId/site-upgrades',\r\n GET_SITES_UPGRADE_STATUS_COUNTS: '/api/webex-upgrade/customers/:customerId/site-upgrades/status-counts',\r\n UPGRADE_SITE: '/api/migration/webex/sites/:siteId'\r\n }\r\n};","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class APIService {\r\n public token: any;\r\n apiUrl = window.location.protocol + '//' + window.location.hostname + '/dcp';\r\n constructor(\r\n private httpClient: HttpClient\r\n ) {\r\n this.token = 'eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbkBjb3JyZW5ldC5jb20iLCJyb2xlcyI6IlNVUEVSX1VTRVIiLCJpYXQiOjE3NTUwODUyMzgsImV4cCI6MTc1NTEwMzIzOH0.X1CKx-OBZvSs7Bzr_4SWW2ulBgHNkYZrmVuv6V7FZyo'\r\n // this.apiUrl = window.location.protocol + '//' + window.location.host + '/dcp';\r\n this.apiUrl = 'https://dev.tuki.io/webex';\r\n // this.apiUrl = 'http://localhost:8088/dcp';\r\n }\r\n\r\n fetch(url: string, params?: any, cache?: boolean): Observable<any> {\r\n const headers = this.getHeaders(cache);\r\n params = params || {};\r\n return this.httpClient.get(this.apiUrl + url, {params: this.prepareEncodedParams(params), headers});\r\n }\r\n\r\n post(url: string, body: any, params = {}): Observable<any> {\r\n body = body || null;\r\n const headers = this.getHeaders();\r\n return this.httpClient.post(this.apiUrl + url, body, {params: this.prepareEncodedParams(params), headers});\r\n }\r\n\r\n // use when response extended data is necessary:\r\n postExtended(url: string, body = null, params = {}, headers = {}) {\r\n headers = headers || this.getHeaders();\r\n return this.httpClient.post(this.apiUrl + url, body, {\r\n headers,\r\n observe: 'response',\r\n params: this.prepareEncodedParams(params)\r\n });\r\n }\r\n\r\n put(url: string, body = null, params = {}) {\r\n const headers = this.getHeaders();\r\n return this.httpClient.put(this.apiUrl + url, body, {headers, params: this.prepareEncodedParams(params)});\r\n }\r\n\r\n delete(url: string, params = {}) {\r\n const headers = this.getHeaders();\r\n return this.httpClient.delete(this.apiUrl + url, {headers, params: this.prepareEncodedParams(params)});\r\n }\r\n\r\n fetchPagination(url: string, pageSize: number, pageNumber: number, additionalParams = {}, cache?: boolean): Observable<any> {\r\n const copyAdditionalParams = JSON.parse(JSON.stringify(additionalParams));\r\n const params = Object.assign(copyAdditionalParams, {size: pageSize.toString(), page: pageNumber.toString()});\r\n return this.fetch(url, params, cache) as Observable<any>;\r\n }\r\n\r\n private prepareEncodedParams(params: any) {\r\n const result: any = {};\r\n\r\n if (!params) {\r\n return {};\r\n }\r\n for (const key of Object.keys(params)) {\r\n if (params[key]) {\r\n const stringParam = params[key].toString();\r\n result[key] = stringParam.includes('+') ? encodeURIComponent(stringParam) : stringParam;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n private getHeaders(cache?: boolean): HttpHeaders {\r\n let headers = new HttpHeaders();\r\n if (cache) {\r\n headers = headers.append('_Cache', 'true ');\r\n }\r\n const token = this.token || this.getParameterByName('token');\r\n headers = headers.append('Authorization', 'Bearer '+ token);\r\n return headers;\r\n }\r\n\r\n private getParameterByName(name: any, url = window.location.href) {\r\n name = name.replace(/[\\[\\]]/g, '\\\\$&');\r\n var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),\r\n results = regex.exec(url);\r\n if (!results) return null;\r\n if (!results[2]) return '';\r\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\r\n }\r\n\r\n}\r\n","import { inject, Injectable } from \"@angular/core\";\r\nimport { MatTableDataSource } from \"@angular/material/table\";\r\nimport { UserUpgradeRecord } from \"./types/user-upgrade\";\r\nimport { catchError, map, Observable, of, throwError } from \"rxjs\";\r\nimport { API } from \"../../api/api.endpoints\";\r\nimport { APIService } from \"../../shared/services/api.service\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserUpgradeService {\r\n private apiService = inject(APIService);\r\n\r\n customerId!: string;\r\n\r\n usersDataSource!: UserUpgradeRecord[];\r\n filteredUsersDataSource!: UserUpgradeRecord[];\r\n\r\n // TODO: Impl the user upgrade logic here\r\n bulkUpgrade(users: UserUpgradeRecord[]): Observable<unknown> {\r\n const entities = users.map(record => ({ cucmId: record.cucmId, entityId: record.userId }));\r\n const customerId = users[0].customerId;\r\n const siteId = users[0].siteId;\r\n\r\n const body = {\r\n customerId,\r\n siteId,\r\n entities: {\r\n 'PERSON': entities\r\n }\r\n };\r\n\r\n console.log(body);\r\n \r\n // This is not done yet...\r\n return this.apiService.post(\r\n API.USER_UPGRADE.UPGRADE_USER.replace(':siteId', siteId).replace(':userId', users[0].userId),\r\n body,\r\n {}\r\n ).pipe(catchError((err) => of(err)));\r\n }\r\n\r\n getUserUpgradeStatusCounts(): Observable<any> {\r\n return this.apiService.fetch(\r\n API.USER_UPGRADE.GET_USERS_UPGRADE_STATUS_COUNTS.replace(':customerId', this.customerId)\r\n );\r\n }\r\n\r\n getUserUpgradeRecords(): Observable<UserUpgradeRecord[]> {\r\n return this.apiService.fetch(\r\n API.USER_UPGRADE.GET_USERS_UPGRADE_DATA.replace(':customerId', this.customerId)\r\n ).pipe(map((resp) => { \r\n return resp.content as UserUpgradeRecord[];\r\n\r\n // This was added because of mapping issues with BE resp;\r\n\r\n // return resp.content.map((record: UserUpgradeRecord) => ({\r\n // userId: record.userId,\r\n // userName: record.userName,\r\n // customerId: record.customerId,\r\n // siteId: record.siteId,\r\n // siteName: record.siteName,\r\n // devices: record.devices,\r\n // cucmId: record.cucmId,\r\n // primaryExtension: record.primaryExtension,\r\n // deviceStatus: record.deviceStatus,\r\n // dialPlanStatus: record.dialPlanStatus,\r\n // dependenciesStatus: record.dependenciesStatus,\r\n // upgradeStatus: record.upgradeStatus\r\n // } as UserUpgradeRecord));\r\n }));\r\n }\r\n}","export type Status = 'Ready' | 'Not Ready' | 'Partial Ready' | 'Failed' | 'Completed';\r\n\r\nexport const STATUS_ENTRIES: { [key: string]: Status } = {\r\n READY: 'Ready',\r\n NOT_READY: 'Not Ready',\r\n PARTIAL_READY: 'Partial Ready',\r\n FAILED: 'Failed',\r\n COMPLETED: 'Completed'\r\n};\r\n\r\nexport const DEPENDENCIES_STATUS: { [key: string]: string } = {\r\n DEPENDENCIES_FOUND: 'Dependencies found',\r\n NO_DEPENDENCIES: 'No dependencies',\r\n};","import { Component, Input } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: 'tk-summary-card',\r\n templateUrl: './summary-card.component.html',\r\n styleUrls: ['./summary-card.component.scss']\r\n})\r\nexport class SummaryCardComponent {\r\n @Input() value: number = 41;\r\n @Input() status: string = 'Ready';\r\n @Input() description!: string;\r\n\r\n getStatusClass(status: string): string {\r\n switch (status?.toLowerCase()) {\r\n case 'ready':\r\n return 'ready';\r\n case 'not ready':\r\n return 'not-ready';\r\n case 'failed':\r\n return 'failed';\r\n case 'completed':\r\n return 'completed';\r\n default:\r\n return 'not-ready';\r\n }\r\n }\r\n}","<article class=\"summary-card\">\r\n <header class=\"summary-card__header\">\r\n <h2>{{ value }}</h2>\r\n </header>\r\n <div class=\"summary__card-description\">\r\n <span>{{ description }}</span>\r\n <div class=\"summary__card-status-wrapper\">\r\n <span class=\"summary__card-status-indicator\" [ngClass]=\"getStatusClass(status)\"></span>\r\n <span>{{ status }}</span>\r\n </div>\r\n </div>\r\n</article>","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\r\nimport { FilterKind, TableFilter } from \"../../types/table/filter\";\r\n\r\n@Component({\r\n selector: 'tk-table-filters',\r\n templateUrl: './table-filters.component.html',\r\n styleUrls: ['./table-filters.component.scss']\r\n})\r\nexport class TableFiltersComponent implements OnInit {\r\n @Input() filters!: TableFilter[];\r\n\r\n @Output() filter = new EventEmitter<{ key: string, value: any }>()\r\n\r\n ngOnInit(): void {\r\n if (this.filters) {\r\n this.filters.forEach(filter => {\r\n if (filter.type === 'select' && !filter.options.some(opt => opt.value === 'all')) {\r\n filter.options.unshift({ label: 'All', value: 'all' });\r\n }\r\n });\r\n }\r\n }\r\n\r\n onFilter(key: string, value: any): void {\r\n const val = { key, value };\r\n this.filter.emit(val);\r\n }\r\n}","<div class=\"filters-wrapper\">\r\n <ng-container *ngFor=\"let filter of filters\">\r\n <div class=\"filter\">\r\n <ng-container [ngSwitch]=\"filter.type\">\r\n <!-- Search Input with Material Design -->\r\n <mat-form-field *ngSwitchCase=\"'search'\" appearance=\"outline\" class=\"search-field\">\r\n <mat-label>{{ filter.placeholder }}</mat-label>\r\n <input matInput \r\n [placeholder]=\"filter.placeholder\"\r\n (input)=\"onFilter(filter.columnKey, $event)\">\r\n <mat-icon matPrefix class=\"search-icon\">\r\n <img src=\"/assets/icons/search_icon.png\" alt=\"Search\" />\r\n </mat-icon>\r\n </mat-form-field>\r\n\r\n <!-- Select Dropdown with Material Design -->\r\n <mat-form-field *ngSwitchCase=\"'select'\" appearance=\"outline\" class=\"select-field\">\r\n <mat-label>{{ filter.placeholder }}</mat-label>\r\n <mat-select (selectionChange)=\"onFilter(filter.columnKey, $event)\">\r\n <mat-option *ngFor=\"let option of filter.options\" [value]=\"option.value\">\r\n {{ option.label }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n</div>","import { SelectionModel } from \"@angular/cdk/collections\";\r\nimport { Component, OnInit, OnDestroy, inject, Input, ViewEncapsulation } from \"@angular/core\";\r\nimport { MatTableDataSource } from \"@angular/material/table\";\r\nimport { TableColumn } from \"../../../shared/types/data-table\";\r\nimport { TableFilter } from \"../../../shared/types/table/filter\";\r\nimport { UpgradeOverviewService } from \"../../upgrade-overview/upgrade-overview.service\";\r\nimport { Subject } from \"rxjs\";\r\nimport { takeUntil } from \"rxjs\";\r\nimport { UserUpgradeService } from \"../user-upgrade.service\";\r\nimport { DEPENDENCIES_STATUS, Status, STATUS_ENTRIES } from \"../../../shared/types/constants\";\r\nimport { UserUpgradeRecord } from \"../types/user-upgrade\";\r\nimport { APIService } from \"../../../shared/services/api.service\";\r\n\r\n@Component({\r\n selector: 'tk-user-upgrade-data-table',\r\n templateUrl: './user-upgrade-data-table.component.html',\r\n styleUrls: ['./user-upgrade-data-table.component.scss'],\r\n // encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class UserUpgradeDataTableComponent implements OnInit, OnDestroy {\r\n private destroy$ = new Subject<void>();\r\n private userUpgradeService = inject(UserUpgradeService);\r\n private apiService = inject(APIService);\r\n readonly STATUS_ENTRIES = STATUS_ENTRIES;\r\n readonly DEPENDENCIES_STATUS = DEPENDENCIES_STATUS;\r\n\r\n @Input() token!: string;\r\n @Input() customerId!: string;\r\n\r\n columns!: TableColumn[];\r\n data!: MatTableDataSource<UserUpgradeRecord>;\r\n displayedColumns: string[] = ['select', 'user', 'site', 'device', 'dialPlanStatus', 'dependencies', 'userUpgradeStatus'];\r\n selection = new SelectionModel<UserUpgradeRecord>(true, []);\r\n filters: TableFilter[] = [];\r\n\r\n statusCounts: any = {};\r\n\r\n private activeFilters: { [key: string]: any } = {};\r\n\r\n ngOnInit(): void {\r\n this.apiService.token = this.token;\r\n this.userUpgradeService.customerId = this.customerId;\r\n \r\n this.userUpgradeService.getUserUpgradeRecords()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((records) => {\r\n this.data = new MatTableDataSource(records);\r\n this.setupCustomFilter();\r\n this.initializeFilters(records);\r\n });\r\n\r\n this.userUpgradeService.getUserUpgradeStatusCounts()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((statusCounts) => {\r\n this.statusCounts['Ready'] = statusCounts['READY'] || 0;\r\n this.statusCounts['Not Ready'] = statusCounts['NOT_READY'] || 0;\r\n this.statusCounts['Completed'] = statusCounts['COMPLETED'] || 0;\r\n this.statusCounts['Failed'] = statusCounts['FAILED'] || 0;\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n private initializeFilters(records: any[]): void {\r\n // Extract unique sites from actual data\r\n const uniqueSites = [...new Set(records.map(record => record.siteName))];\r\n const siteOptions = uniqueSites.map(site => ({\r\n label: site,\r\n value: site.toLowerCase().replace(/\\s+/g, '-')\r\n }));\r\n\r\n // Extract unique statuses from actual data\r\n const uniqueStatuses = [...new Set(records.map(record => record.upgradeStatus))];\r\n const statusOptions = uniqueStatuses.map(status => ({\r\n label: STATUS_ENTRIES[status],\r\n value: status.toLowerCase().replace(/\\s+/g, '-')\r\n }));\r\n\r\n this.filters = [\r\n {\r\n id: 'userName',\r\n type: 'search',\r\n columnKey: 'User',\r\n placeholder: 'Search users...',\r\n options: []\r\n },\r\n {\r\n id: 'sites',\r\n type: 'select',\r\n columnKey: 'Site',\r\n placeholder: 'Sites',\r\n options: siteOptions\r\n },\r\n {\r\n id: 'status',\r\n type: 'select',\r\n columnKey: 'User Upgrade Status',\r\n placeholder: 'Upgrade Status',\r\n options: statusOptions\r\n }\r\n ];\r\n }\r\n\r\n /** Whether the number of selected elements matches the total number of rows. */\r\n isAllSelected() {\r\n const numSelected = this.selection.selected.length;\r\n const numRows = this.data?.data.length ?? 0;\r\n return numSelected === numRows;\r\n }\r\n\r\n /** Selects all rows if they are not all selected; otherwise clear selection. */\r\n masterToggle() {\r\n this.isAllSelected() ?\r\n this.selection.clear() :\r\n this.data?.data.forEach(row => this.selection.select(row));\r\n }\r\n\r\n upgradeUser(user: UserUpgradeRecord): void {\r\n this.userUpgradeService.bulkUpgrade([user])\r\n }\r\n \r\n upgradeSelectedUsers(): void {\r\n this.userUpgradeService.bulkUpgrade(this.selection.selected);\r\n }\r\n\r\n onFilter(filterEvent: { key: string, value: any }) {\r\n const { key, value } = filterEvent;\r\n\r\n let filterValue: any;\r\n if (value && value.value !== undefined) {\r\n filterValue = value.value;\r\n } else if (value && value.target) {\r\n filterValue = value.target.value;\r\n } else {\r\n filterValue = value;\r\n }\r\n\r\n // Handle \"All\" option or empty values - remove the filter\r\n if (filterValue === 'all' || !filterValue || filterValue === '') {\r\n delete this.activeFilters[key];\r\n } else {\r\n this.activeFilters[key] = filterValue;\r\n }\r\n\r\n this.applyFilters();\r\n }\r\n\r\n private setupCustomFilter() {\r\n this.data.filterPredicate = (data: any, filter: string) => {\r\n const filters = JSON.parse(filter || '{}');\r\n\r\n for (const [key, value] of Object.entries(filters)) {\r\n if (!value) continue;\r\n\r\n switch (key) {\r\n case 'User':\r\n const searchTerm = (value as string).toLowerCase();\r\n if (!data.userName.toLowerCase().includes(searchTerm)) {\r\n return false;\r\n }\r\n break;\r\n case 'Site':\r\n if (data.siteName !== this.getSiteNameFromValue(value as string)) {\r\n return false;\r\n }\r\n break;\r\n case 'User Upgrade Status':\r\n if (!this.matchesUpgradeStatus(data.upgradeStatus, value as string)) {\r\n return false;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n }\r\n\r\n private applyFilters() {\r\n this.data.filter = JSON.stringify(this.activeFilters);\r\n }\r\n\r\n get filteredDataCount(): number {\r\n return this.data?.filteredData?.length || 0;\r\n }\r\n\r\n private getSiteNameFromValue(value: string): string {\r\n // Since we're now using actual site names, just convert back from slug format\r\n return value.split('-').map(word =>\r\n word.charAt(0).toUpperCase() + word.slice(1)\r\n ).join(' ');\r\n }\r\n\r\n private matchesUpgradeStatus(status: string, filterValue: string): boolean {\r\n // Handle direct status matching for cleaner implementation\r\n return status.toLowerCase().replace(/\\s+/g, '-') === filterValue.toLowerCase();\r\n }\r\n\r\n getStatusClass(status: string): string {\r\n switch (status.toLowerCase()) {\r\n case 'ready':\r\n return 'ready';\r\n case 'not ready':\r\n return 'not-ready';\r\n case 'partial ready':\r\n return 'partial-ready';\r\n case 'completed':\r\n return 'completed';\r\n case 'failed':\r\n return 'failed';\r\n default:\r\n return 'not-ready';\r\n }\r\n }\r\n}","<div class=\"wrapper\">\r\n <div class=\"user-upgrade-status-wrapper\">\r\n <tk-summary-card [description]=\"'Users are ready to upgrade'\" [value]=\"statusCounts['Ready']\"></tk-summary-card>\r\n <tk-summary-card [description]=\"'Users are not ready'\" [value]=\"statusCounts['Not Ready']\" [status]=\"'Not Ready'\"></tk-summary-card>\r\n <tk-summary-card [description]=\"'Users failed to upgrade'\" [value]=\"statusCounts['Failed']\" [status]=\"'Failed'\"></tk-summary-card>\r\n <tk-summary-card [description]=\"'Successfully upgraded'\" [value]=\"statusCounts['Completed']\" [status]=\"'Completed'\"></tk-summary-card>\r\n </div>\r\n <div class=\"table-action-panel\">\r\n <tk-table-filters *ngIf=\"filters.length > 0\" [filters]=\"filters\" (filter)=\"onFilter($event)\"></tk-table-filters>\r\n <div class=\"action-wrapper\">\r\n <span>{{filteredDataCount}} Users</span>\r\n <button \r\n mat-button \r\n class=\"upgrade-bulk-button\" \r\n color=\"primary\" \r\n [disabled]=\"selection.selected.length === 0\" \r\n (click)=\"upgradeSelectedUsers()\">\r\n Upgrade {{ selection.selected.length === 0 ? '' : '(' + selection.selected.length + ')' }}\r\n </button>\r\n </div>\r\n </div>\r\n <table mat-table [dataSource]=\"data\" class=\"user-upgrade-table\">\r\n\r\n <!-- Checkbox Column -->\r\n <ng-container matColumnDef=\"select\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <mat-checkbox \r\n (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\r\n class=\"custom-checkbox\">\r\n </mat-checkbox>\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox \r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selection.toggle(row) : null\"\r\n [checked]=\"selection.isSelected(row)\"\r\n [disabled]=\"STATUS_ENTRIES[row.upgradeStatus] !== 'Ready'\"\r\n class=\"custom-checkbox\">\r\n </mat-checkbox>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- User Column -->\r\n <ng-container matColumnDef=\"user\">\r\n <th mat-header-cell *matHeaderCellDef>User</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <div class=\"user-info\">\r\n <div class=\"user-name\">{{element.userName}}</div>\r\n <div class=\"user-email\">{{element.userName}}</div>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Site Column -->\r\n <ng-container matColumnDef=\"site\">\r\n <th mat-header-cell *matHeaderCellDef>Site</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <div class=\"site-info\">\r\n <span class=\"site-indicator\"></span>\r\n {{element.siteName}}\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Device Column -->\r\n <ng-container matColumnDef=\"device\">\r\n <th mat-header-cell *matHeaderCellDef>Device</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <div class=\"device-info\">\r\n <div *ngIf=\"element.devices.length > 1\">\r\n <div class=\"device-name-wrapper\">\r\n <span class=\"device-indicator\"></span>\r\n <span class=\"device-name\">Multiple devices</span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"element.devices.length === 1\">\r\n <div class=\"device-name-wrapper\">\r\n <span class=\"device-indicator\"></span>\r\n <span class=\"device-name\">{{element.devices[0]}}</span>\r\n </div>\r\n <span class=\"device-model\">{{ element.primaryExtension || 'No Extension' }}</span>\r\n </div>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Dial Plan Status Column -->\r\n <ng-container matColumnDef=\"dialPlanStatus\">\r\n <th mat-header-cell *matHeaderCellDef>Dial Plan Status</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <div class=\"status-info\">\r\n <span class=\"status-indicator\" [ngClass]=\"getStatusClass(element.dialPlanStatus)\"></span>\r\n <span>{{STATUS_ENTRIES[element.dialPlanStatus]}}</span>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Dependencies Column -->\r\n <ng-container matColumnDef=\"dependencies\">\r\n <th mat-header-cell *matHeaderCellDef>Dependencies</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <span *ngIf=\"DEPENDENCIES_STATUS[element.dependenciesStatus] === 'Dependencies found'\" class=\"dependencies-text\">{{DEPENDENCIES_STATUS[element.dependenciesStatus]}}</span>\r\n <span *ngIf=\"DEPENDENCIES_STATUS[element.dependenciesStatus] === 'No dependencies'\">—</span>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- User Upgrade Status Column -->\r\n <ng-container matColumnDef=\"userUpgradeStatus\">\r\n <th mat-header-cell *matHeaderCellDef>User Upgrade Status</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <div class=\"upgrade-status-cell\">\r\n <ng-container *ngIf=\"STATUS_ENTRIES[element.upgradeStatus] === 'Ready'; else statusBlock\">\r\n <button mat-button color=\"primary\" class=\"upgrade-button\" (click)=\"upgradeUser(element)\">Upgrade</button>\r\n </ng-container>\r\n <ng-template #statusBlock>\r\n <div class=\"status-info\">\r\n <span class=\"status-indicator\" [ngClass]=\"getStatusClass(element.upgradeStatus)\"></span>\r\n <span>{{STATUS_ENTRIES[element.upgradeStatus]}}</span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\" \r\n [class.selected-row]=\"selection.isSelected(row)\"></tr>\r\n </table>\r\n</div>","import { Component, Input } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: 'tk-card',\r\n templateUrl: './card.component.html',\r\n styleUrls: ['./card.component.scss']\r\n})\r\nexport class CardComponent {\r\n @Input() title!: string;\r\n}","<article class=\"card\">\r\n <header class=\"card__header\">\r\n <h2>{{ title }}</h2>\r\n <div class=\"card__menu-button\">\r\n <img width=\"18\" src=\"/assets/icons/menu_icon.png\" alt=\"Menu Icon\">\r\n </div>\r\n </header>\r\n <div class=\"card__content\">\r\n <ng-content select=\"card-content\"></ng-content>\r\n </div>\r\n</article>","import { NgModule } from \"@angular/core\";\r\nimport { MatProgressBarModule } from \"@angular/material/progress-bar\"\r\nimport { MatTableModule } from \"@angular/material/table\";\r\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\r\nimport { MatCheckboxModule } from \"@angular/material/checkbox\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatInputModule } from \"@angular/material/input\";\r\nimport { MatSelectModule } from \"@angular/material/select\";\r\n\r\n@NgModule({\r\n imports: [\r\n MatProgressBarModule,\r\n MatTooltipModule,\r\n MatTableModule,\r\n MatCheckboxModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatSelectModule\r\n ],\r\n exports: [\r\n MatProgressBarModule,\r\n MatTooltipModule,\r\n MatTableModule,\r\n MatCheckboxModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatSelectModule\r\n ]\r\n})\r\nexport class MaterialModule { }","import { Component, Input, OnInit } from \"@angular/core\";\r\nimport { SitesUpgradeReadiness, SitesUpgradeSummary, UsersUpgradeReadiness, UsersUpgradeSummary } from \"../../../widgets/upgrade-overview/types/upgrade-overview\";\r\n\r\n@Component({\r\n selector: 'tk-stat-card',\r\n templateUrl: './stat-card.component.html',\r\n styleUrls: ['./stat-card.component.scss']\r\n})\r\nexport class StatCardComponent implements OnInit {\r\n @Input() title!: string;\r\n @Input() type!: 'site' | 'user';\r\n @Input() readinessStats: any;\r\n @Input() upgradeStatus!: 'ready' | 'already';\r\n\r\n stats: any;\r\n\r\n ngOnInit() { \r\n if (this.type === 'user') {\r\n this.stats = {\r\n id: this.readinessStats?.id,\r\n customerId: this.readinessStats?.customerId,\r\n total: this.readinessStats?.['totalUsers'],\r\n totalReady: this.readinessStats?.['totalReadyUsers'],\r\n totalUpgraded: this.readinessStats?.['totalUpgradedUsers'],\r\n }\r\n } else {\r\n this.stats = {\r\n id: this.readinessStats?.id,\r\n customerId: this.readinessStats?.customerId,\r\n total: this.readinessStats?.['totalSites'],\r\n totalReady: this.readinessStats?.['totalReadySites'],\r\n totalUpgraded: this.readinessStats?.['totalUpgradedSites'],\r\n }\r\n }\r\n }\r\n\r\n get readyPercentage() {\r\n return (this.stats?.totalReady / this.stats?.total * 100) >> 0;\r\n }\r\n\r\n get upgradedPercentage() {\r\n return (this.stats?.totalUpgraded / this.stats?.total * 100) >> 0;\r\n }\r\n}","<tk-card [title]=\"title\">\r\n <ng-container ngProjectAs=\"card-content\">\r\n <div class=\"card__content-info\">\r\n <div class=\"card__content-wrapper\">\r\n <img width=\"42\" [src]=\"'/assets/icons/' + type + '.png'\" alt=\"\" />\r\n <div class=\"card__content-text\">\r\n <div class=\"card__content-label\">\r\n {{ upgradeStatus === 'ready' ? stats?.totalReady : stats?.totalUpgraded }} \r\n {{ type === 'user' ? 'Users' : 'Sites' }}</div>\r\n <div class=\"card__content-description\">{{ upgradeStatus === 'ready' ? 'Ready to Upgrade' : 'Already Upgraded' }}</div>\r\n </div>\r\n </div>\r\n <div class=\"card__content-wrapper\">\r\n <img\r\n *ngIf=\"upgradeStatus === 'ready'\"\r\n height=\"48\"\r\n src=\"/assets/icons/ready_to_upgrade.png\"\r\n alt=\"\"\r\n />\r\n <img\r\n *ngIf=\"upgradeStatus === 'already'\"\r\n height=\"48\"\r\n src=\"/assets/icons/already_upgraded.png\"\r\n alt=\"\"\r\n />\r\n </div>\r\n </div>\r\n <div class=\"card__content-progress-wrapper\">\r\n <div class=\"card__content-progress\">\r\n <div class=\"card__content-progress-label\">\r\n <span>{{ readyPercentage }}%</span>\r\n <span>From all {{ stats?.total }} {{ type === 'user' ? 'users' : 'sites' }}</span>\r\n </div>\r\n <div class=\"card__content-progress-bar\">\r\n <div\r\n class=\"card__content-progress-bar-fill ready\"\r\n [class.already]=\"upgradeStatus === 'already'\"\r\n [style.width.%]=\"readyPercentage\"\r\n ></div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"upgradeStatus === 'already'\" class=\"card__content-progress\">\r\n <div class=\"card__content-progress-label\">\r\n <span>{{ upgradedPercentage }}%</span>\r\n <span>From all {{ stats?.totalReady }} ready {{ type === 'user' ? 'users' : 'sites' }}</span>\r\n </div>\r\n <div class=\"card__content-progress-bar\">\r\n <div\r\n class=\"card__content-progress-bar-fill ready\"\r\n [class.already]=\"upgradeStatus === 'already'\"\r\n [style.width.%]=\"upgradedPercentage\"\r\n ></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</tk-card>\r\n","import { Component, Input } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"tk-status-list-card\",\r\n templateUrl: \"./status-list-card.component.html\",\r\n styleUrls: [\"./status-list-card.component.scss\"]\r\n})\r\nexport class StatusListCardComponent {\r\n @Input() title!: string;\r\n @Input() items!: any;\r\n}","<tk-card [title]=\"title\">\r\n <ng-container ngProjectAs=\"card-content\">\r\n <div class=\"card__list-wrapper\">\r\n <div class=\"card__list-item\" *ngFor=\"let item of items\">\r\n <img *ngIf=\"item.status\" src=\"{{ 'assets/icons/check_icon.png' }}\" alt=\"\">\r\n <img *ngIf=\"!item.status\" src=\"{{ 'assets/icons/warning_icon.png' }}\" alt=\"\">\r\n <div class=\"card__item-info\">\r\n <div class=\"card__item-text\">\r\n <div class=\"card__item-label\">\r\n {{ item.label }}\r\n </div>\r\n <div class=\"card__item-description\">\r\n {{ item.description }}\r\n </div>\r\n </div>\r\n <div *ngIf=\"title.includes('Site')\" class=\"card__item-stats\">\r\n <div class=\"card__item-numbers\">\r\n {{ item.value }}/{{ item.totalSites }}\r\n </div>\r\n <div class=\"card__item-numbers-description\">\r\n Ready/All\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</tk-card>","import { Component, Input, OnInit } from \"@angular/core\";\r\nimport { ApexChart, ApexPlotOptions, ApexLegend, ApexDataLabels, ApexNonAxisChartSeries } from \"ng-apexcharts\";\r\n\r\nexport type ChartOptions = {\r\n series: ApexNonAxisChartSeries;\r\n chart: ApexChart;\r\n labels: string[];\r\n colors: string[];\r\n legend: ApexLegend;\r\n plotOptions: ApexPlotOptions;\r\n dataLabels: ApexDataLabels;\r\n};\r\n\r\n@Component({\r\n selector: 'tk-chart-card',\r\n templateUrl: './chart-card.component.html',\r\n styleUrls: ['./chart-card.component.scss']\r\n})\r\nexport class ChartCardComponent implements OnInit {\r\n @Input() title!: string;\r\n @Input() totalUpgraded!: number;\r\n @Input() totalNotUpgraded!: number;\r\n\r\n public chartOptions!: ChartOptions;\r\n\r\n ngOnInit() {\r\n this.initChartOptions();\r\n }\r\n\r\n private initChartOptions(): void {\r\n if (this.totalUpgraded === 0)\r\n this.totalNotUpgraded = 100;\r\n\r\n this.chartOptions = {\r\n series: [this.totalUpgraded, this.totalNotUpgraded],\r\n chart: {\r\n type: \"donut\",\r\n height: 250\r\n },\r\n labels: [\"MT\", \"DI\"],\r\n colors: [\"#808080\", \"#2E8B57\"],\r\n legend: {\r\n position: \"right\",\r\n offsetY: 0,\r\n fontSize: \"14px\",\r\n markers: {\r\n width: 16,\r\n height: 16,\r\n radius: 2\r\n },\r\n itemMargin: {\r\n horizontal: 20,\r\n vertical: 2\r\n },\r\n formatter: function (seriesName, opts) {\r\n return seriesName + \" \" + ((opts.w.globals.series[opts.seriesIndex] / (opts.w.globals.series[0] + opts.w.globals.series[1]) * 100) >> 0) + \"%\";\r\n }\r\n },\r\n plotOptions: {\r\n pie: {\r\n donut: {\r\n size: \"75%\"\r\n }\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n }\r\n };\r\n }\r\n}","<tk-card [title]=\"title\">\r\n <ng-container ngProjectAs=\"card-content\">\r\n <div class=\"chart-container\">\r\n <apx-chart\r\n [series]=\"chartOptions.series\"\r\n [chart]=\"chartOptions.chart\"\r\n [labels]=\"chartOptions.labels\"\r\n [colors]=\"chartOptions.colors\"\r\n [legend]=\"chartOptions.legend\"\r\n [plotOptions]=\"chartOptions.plotOptions\"\r\n [dataLabels]=\"chartOptions.dataLabels\">\r\n </apx-chart>\r\n </div>\r\n </ng-container>\r\n</tk-card>","import { NgModule } from \"@angular/core\";\r\nimport { CardComponent } from \"./components/card/card.component\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { MaterialModule } from \"./material.module\";\r\nimport { StatCardComponent } from \"./components/stat-card/stat-card.component\";\r\nimport { StatusListCardComponent } from \"./components/status-list-card/status-list-card.component\";\r\nimport { ChartCardComponent } from \"./components/chart-card/chart-card.component\";\r\nimport { NgApexchartsModule } from \"ng-apexcharts\"\r\nimport { MatTableModule } from \"@angular/material/table\";\r\nimport { TableFiltersComponent } from \"./components/table-filters/table-filters.component\";\r\nimport { HttpClientModule } from \"@angular/common/http\";\r\nimport { SummaryCardComponent } from \"./components/summary-card/summary-card.component\";\r\n\r\n@NgModule({\r\n declarations: [\r\n CardComponent,\r\n StatCardComponent,\r\n StatusListCardComponent,\r\n ChartCardComponent,\r\n SummaryCardComponent,\r\n TableFiltersComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n MaterialModule,\r\n NgApexchartsModule,\r\n HttpClientModule\r\n ],\r\n exports: [\r\n CardComponent,\r\n StatCardComponent,\r\n StatusListCardComponent,\r\n ChartCardComponent,\r\n SummaryCardComponent,\r\n TableFiltersComponent\r\n ]\r\n})\r\nexport class SharedModule {}","import { NgModule } from \"@angular/core\";\r\nimport { UserUpgradeDataTableComponent } from \"./user-upgrade-data-table/user-upgrade-data-table.component\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatTableModule } from \"@angular/material/table\";\r\nimport { SharedModule } from \"../../shared/shared.module\";\r\nimport { MatCheckboxModule } from \"@angular/material/checkbox\";\r\n\r\n@NgModule({\r\n declarations: [\r\n UserUpgradeDataTableComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n MatTableModule,\r\n MatButtonModule,\r\n MatCheckboxModule\r\n ],\r\n exports: [\r\n UserUpgradeDataTableComponent\r\n ]\r\n})\r\nexport class UserUpgradeModule {}","import { inject, Injectable } from \"@angular/core\";\r\nimport { map, Observable } from \"rxjs\";\r\nimport { SiteUpgradeRecord } from \"./types/user-upgrade\";\r\nimport { API } from \"../../api/api.endpoints\";\r\nimport { UserUpgradeRecord } from \"../user-upgrade/types/user-upgrade\";\r\nimport { APIService } from \"../../shared/services/api.service\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SiteUpgradeService {\r\n private apiService = inject(APIService);\r\n customerId!: string;\r\n\r\n getSiteUpgradeStatusCounts(): Observable<any> {\r\n return this.apiService.fetch(\r\n API.SITE_UPGRADE.GET_SITES_UPGRADE_STATUS_COUNTS.replace(':customerId', this.customerId)\r\n );\r\n }\r\n\r\n getSiteUpgradeRecords(): Observable<SiteUpgradeRecord[]> {\r\n return this.apiService.fetch(\r\n API.SITE_UPGRADE.GET_SITES_UPGRADE_DATA.replace(':customerId', this.customerId)\r\n ).pipe(map((resp) => {\r\n return resp.content.map((record: any) => ({\r\n siteId: record.siteId,\r\n siteName: record.siteName,\r\n totalUsers: record.totalUsers,\r\n totalReadyUsers: record.readyUsers,\r\n totalNotReadyUsers: record.notReadyUsers,\r\n totalUpgradedUsers: record.totalUpgradedUsers,\r\n totalFailedUsers: record.totalFailedToUpgradeUsers,\r\n locationMapping: record.locationMappingStatus,\r\n PSTNTrunk: record.pstnTrunkStatus,\r\n upgradeStatus: record.siteUpgradeStatus\r\n } as SiteUpgradeRecord));\r\n }));\r\n }\r\n\r\n // TODO: Impl the site upgrade logic here\r\n upgradeSite(site: SiteUpgradeRecord): void {\r\n const customerId = site.customerId;\r\n const siteId = site.siteId;\r\n }\r\n}","import { SelectionModel } from \"@angular/cdk/collections\";\r\nimport { Component, OnInit, OnDestroy, inject, Input, ViewEncapsulation } from \"@angular/core\";\r\nimport { MatTableDataSource } from \"@angular/material/table\";\r\nimport { TableColumn } from \"../../../shared/types/data-table\";\r\nimport { TableFilter } from \"../../../shared/types/table/filter\";\r\nimport { SiteUpgradeRecord } from \"../types/user-upgrade\";\r\nimport { UpgradeOverviewService } from \"../../upgrade-overview/upgrade-overview.service\";\r\nimport { Subject } from \"rxjs\";\r\nimport { takeUntil } from \"rxjs\";\r\nimport { SiteUpgradeService } from \"../site-upgrade.service\";\r\nimport { STATUS_ENTRIES } from \"../../../shared/types/constants\";\r\nimport { APIService } from \"../../../shared/services/api.service\";\r\n\r\n@Component({\r\n selector: 'tk-site-upgrade-data-table',\r\n templateUrl: './site-upgrade-data-table.component.html',\r\n styleUrls: ['./site-upgrade-data-table.component.scss'],\r\n // encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class SiteUpgradeDataTableComponent implements OnInit, OnDestroy {\r\n readonly siteUpgradeService = inject(SiteUpgradeService);\r\n private readonly apiService = inject(APIService);\r\n readonly destroy$ = new Subject<void>();\r\n readonly STATUS_ENTRIES = STATUS_ENTRIES\r\n\r\n @Input() token!: string;\r\n @Input() customerId!: string;\r\n\r\n columns!: TableColumn[];\r\n data!: MatTableDataSource<any>;\r\n displayedColumns: string[] = ['site', 'ready users', 'upgraded users', 'location mapping', 'pstn trunk', 'site upgrade status'];\r\n selection = new SelectionModel<any>(true, []);\r\n filters: TableFilter[] = [];\r\n private activeFilters: { [key: string]: any } = {};\r\n\r\n statusCounts: any = {};\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.apiService.token = this.token;\r\n this.siteUpgradeService.customerId = this.customerId;\r\n\r\n this.siteUpgradeService.getSiteUpgradeRecords()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((records: SiteUpgradeRecord[]) => {\r\n this.data = new MatTableDataSource<SiteUpgradeRecord>(records);\r\n this.setupCustomFilter();\r\n this.initializeFilters(records);\r\n });\r\n\r\n this.siteUpgradeService.getSiteUpgradeStatusCounts()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((statusCounts) => {\r\n this.statusCounts['Ready'] = statusCounts['READY'] || 0;\r\n this.statusCounts['Not Ready'] = statusCounts['NOT_READY'] || 0;\r\n this.statusCounts['Completed'] = statusCounts['COMPLETED'] || 0;\r\n this.statusCounts['Failed'] = statusCounts['FAILED'] || 0;\r\n });\r\n }\r\n\r\n private initializeFilters(records: SiteUpgradeRecord[]): void {\r\n // Extract unique sites from actual data\r\n const uniqueSites = [...new Set(records.map(record => record.siteName))];\r\n const siteOptions = uniqueSites.map(site => ({\r\n label: site,\r\n value: site.toLowerCase().replace(/\\s+/g, '-')\r\n }));\r\n\r\n // Extract unique statuses from actual data\r\n const uniqueStatuses = [...new Set(records.map(record => record.upgradeStatus))];\r\n const statusOptions = uniqueStatuses.map(status => ({\r\n label: STATUS_ENTRIES[status],\r\n value: status.toLowerCase().replace(/\\s+/g, '-')\r\n }));\r\n\r\n this.filters = [\r\n {\r\n id: 'sites',\r\n type: 'select',\r\n columnKey: 'Site',\r\n placeholder: 'Sites',\r\n options: siteOptions\r\n },\r\n {\r\n id: 'status',\r\n type: 'select',\r\n columnKey: 'Site Upgrade Status',\r\n placeholder: 'Upgrade Status',\r\n options: statusOptions\r\n }\r\n ];\r\n }\r\n\r\n onFilter(filterEvent: { key: string, value: any }) {\r\n const { key, value } = filterEvent;\r\n\r\n let filterValue: any;\r\n if (value && value.value !== undefined) {\r\n filterValue = value.value;\r\n } else if (value && value.target) {\r\n filterValue = value.target.value;\r\n } else {\r\n filterValue = value;\r\n }\r\n\r\n // Handle \"All\" option or empty values - remove the filter\r\n if (filterValue === 'all' || !filterValue || filterValue === '') {\r\n delete this.activeFilters[key];\r\n } else {\r\n this.activeFilters[key] = filterValue;\r\n }\r\n\r\n this.applyFilters();\r\n }\r\n\r\n private setupCustomFilter() {\r\n this.data.filterPredicate = (data: any, filter: string) => {\r\n const filters = JSON.parse(filter || '{}');\r\n\r\n for (const [key, value] of Object.entries(filters)) {\r\n if (!value) continue;\r\n\r\n switch (key) {\r\n case 'Site':\r\n if (data.siteName !== this.getSiteNameFromValue(value as string)) {\r\n return false;\r\n }\r\n break;\r\n case 'Site Upgrade Status':\r\n if (!this.matchesUpgradeStatus(data.upgradeStatus, value as string)) {\r\n return false;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n }\r\n\r\n private applyFilters() {\r\n this.data.filter = JSON.stringify(this.activeFilters);\r\n }\r\n\r\n private getSiteNameFromValue(value: string): string {\r\n // Since we're now using actual site names, just convert back from slug format\r\n return value.split('-').map(word =>\r\n word.charAt(0).toUpperCase() + word.slice(1)\r\n ).join(' ');\r\n }\r\n\r\n private matchesUpgradeStatus(status: string, filterValue: string): boolean {\r\n // Handle direct status matching for cleaner implementation\r\n return status.toLowerCase().replace(/\\s+/g, '-') === filterValue.toLowerCase();\r\n }\r\n\r\n get filteredDataCount(): number {\r\n return this.data?.filteredData?.length || 0;\r\n }\r\n\r\n /** Whether the number of selected elements matches the total number of rows. */\r\n isAllSelected() {\r\n const numSelected = this.selection.selected.length;\r\n const numRows = this.data?.data.length || 0;\r\n return numSelected === numRows;\r\n }\r\n\r\n /** Selects all rows if they are not all selected; otherwise clear selection. */\r\n masterToggle() {\r\n this.isAllSelected() ?\r\n this.selection.clear() :\r\n this.data?.data.forEach(row => this.selection.select(row));\r\n }\r\n\r\n getLocationMappingClass(locationMapping: boolean): string {\r\n return locationMapping ? 'success' : 'error';\r\n }\r\n\r\n getSiteUpgradeStatusClass(status: string): string {\r\n switch (status.toLowerCase()) {\r\n case 'ready':\r\n return 'ready';\r\n case 'partial ready':\r\n return 'partial-ready';\r\n case 'completed':\r\n return 'completed';\r\n case 'failed':\r\n return 'failed';\r\n case 'not ready':\r\n return 'not-ready';\r\n default:\r\n return 'not-ready';\r\n }\r\n }\r\n\r\n upgradeSite(site: SiteUpgradeRecord) {\r\n this.siteUpgradeService.upgradeSite(site);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}","<div class=\"wrapper\">\r\n <div class=\"site-upgrade-status-wrapper\">\r\n <tk-summary-card [description]=\"'Sites are ready to upgrade'\" [value]=\"statusCounts['Ready']\"></tk-summary-card>\r\n <tk-summary-card [description]=\"'Sites are not ready'\" [value]=\"statusCounts['Not Ready']\" [status]=\"'Not Ready'\"></tk-summary-card>\r\n <tk-summary-card [description]=\"'Sites failed to upgrade'\" [value]=\"statusCounts['Failed']\" [status]=\"'Failed'\"></tk-summary-card>\r\n <tk-summary-card [description]=\"'Successfully upgraded'\" [value]=\"statusCounts['Completed']\" [status]=\"'Completed'\"></tk-summary-card>\r\n </div>\r\n <div class=\"table-action-panel\">\r\n <tk-table-filters *ngIf=\"filters.length > 0\" [filters]=\"filters\" (filter)=\"onFilter($event)\"></tk-table-filters>\r\n <div class=\"action-wrapper\">\r\n <span>{{filteredDataCount}} Sites</span>\r\n </div>\r\n </div>\r\n <table mat-table [dataSource]=\"data\" class=\"site-upgrade-table\">\r\n\r\n <!-- Site Column -->\r\n <ng-container matColumnDef=\"site\">\r\n <th mat-header-cell *matHeaderCellDef>Site</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <div class=\"site-info\">\r\n <span class=\"site-indicator\"></span>\r\n {{element.siteName}}\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Ready Users Column -->\r\n <ng-container matColumnDef=\"ready users\">\r\n <th mat-header-cell *matHeaderCellDef>Ready Users</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <div class=\"user-count-info\">\r\n <div class=\"user-count\">{{element.totalReadyUsers}}/{{element.totalUsers}}</div>\r\n <div class=\"user-label\">Ready/Total</div>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Upgraded Users Column --> \r\n <ng-container matColumnDef=\"upgraded users\">\r\n <th mat-header-cell *matHeaderCellDef>Upgraded Users</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <div class=\"user-count-info\">\r\n <div class=\"user-count\">{{element.totalUpgradedUsers}}/{{element.totalUsers}}</div>\r\n <div class=\"user-label\">Upgraded/Total</div>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Location Mapping Column -->\r\n <ng-container matColumnDef=\"location mapping\">\r\n <th mat-header-cell *matHeaderCellDef>Location Mapping</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <div class=\"status-icon-cell\">\r\n <img *ngIf=\"element.locationMapping\" src=\"/assets/icons/check2_icon.png\" alt=\"Location Mapping Enabled\"/>\r\n <img *ngIf=\"!element.locationMapping\" src=\"/assets/icons/issue_icon.png\" alt=\"Location Mapping Disabled\"/>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- PSTN Trunk Column -->\r\n <ng-container matColumnDef=\"pstn trunk\">\r\n <th mat-header-cell *matHeaderCellDef>PSTN Trunk</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <div class=\"status-icon-cell\">\r\n <img *ngIf=\"element.PSTNTrunk\" src=\"/assets/icons/check2_icon.png\" alt=\"PSTN Trunk Enabled\"/>\r\n <img *ngIf=\"!element.PSTNTrunk\" src=\"/assets/icons/issue_icon.png\" alt=\"PSTN Trunk Disabled\"/>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Site Upgrade Status Column -->\r\n <ng-container matColumnDef=\"site upgrade status\">\r\n <th mat-header-cell *matHeaderCellDef>Site Upgrade Status</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <div class=\"upgrade-status-cell\">\r\n <ng-container *ngIf=\"STATUS_ENTRIES[element.upgradeStatus] === 'Ready'; else statusBlock\">\r\n <button mat-button color=\"primary\" class=\"upgrade-button\" (click)=\"upgradeSite(element)\">Upgrade</button>\r\n </ng-container>\r\n <ng-template #statusBlock>\r\n <div class=\"status-info\">\r\n <span class=\"status-indicator\" [ngClass]=\"getSiteUpgradeStatusClass(element.upgradeStatus)\"></span>\r\n <span>{{ STATUS_ENTRIES[element.upgradeStatus] }}</span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\r\n</table>\r\n</div>","import { NgModule } from \"@angular/core\";\r\nimport { SiteUpgradeDataTableComponent } from \"./site-upgrade-data-table/site-upgrade-data-table.component\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { MatTableModule } from \"@angular/material/table\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { SharedModule } from \"../../shared/shared.module\";\r\n\r\n@NgModule({\r\n declarations: [\r\n SiteUpgradeDataTableComponent\r\n ],\r\n imports: [\r\n CommonModule, \r\n SharedModule,\r\n MatTableModule,\r\n MatIconModule,\r\n MatButtonModule\r\n ],\r\n exports: [\r\n SiteUpgradeDataTableComponent\r\n ]\r\n})\r\nexport class SiteUpgradeModule { }","import { Injectable } from \"@angular/core\";\r\nimport { APIService } from \"../../shared/services/api.service\";\r\nimport { SiteInfrastructureSummary, SitesUpgradeReadiness, SitesUpgradeSummary, UpgradePreconditions, UsersUpgradeReadiness, UsersUpgradeSummary } from \"./types/upgrade-overview\";\r\nimport { map, Observable } from \"rxjs\";\r\nimport { API } from \"../../api/api.endpoints\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UpgradeOverviewService {\r\n customerId!: string;\r\n\r\n constructor(private apiService: APIService) { }\r\n\r\n getUpgradePreconditions(): Observable<UpgradePreconditions> {\r\n return this.apiService.fetch(\r\n API.OVERVIEW.GET_UPGRADE_PRECONDITIONS.replace(':customerId', this.customerId)\r\n ).pipe(map((resp) => {\r\n return {\r\n id: resp.id,\r\n customerId: resp.customerId,\r\n controlHubIntegration: resp.controlHubIntegration,\r\n numberOfAvailableLicences: resp.availableLicences\r\n };\r\n }));\r\n }\r\n\r\n getSiteInfrastructureSummary(): Observable<SiteInfrastructureSummary> {\r\n return this.apiService.fetch(\r\n API.OVERVIEW.GET_SITE_INFRASTRUCTURE.replace(':customerId', this.customerId)\r\n ).pipe(map((resp) => {\r\n return {\r\n id: resp.id,\r\n customerId: resp.customerId,\r\n totalSites: resp.totalSites,\r\n totalLocations: resp.totalLocations,\r\n totalPSTNs: resp.totalPSTNS\r\n };\r\n }));\r\n }\r\n\r\n getUsersUpgradeSummary(): Observable<UsersUpgradeSummary> {\r\n return this.apiService.fetch(\r\n API.OVERVIEW.GET_USERS_UPGRADE_SUMMARY.replace(':customerId', this.customerId)\r\n ).pipe(map((resp) => {\r\n return {\r\n id: resp.id,\r\n customerId: resp.customerId,\r\n totalUsers: resp.totalUsers,\r\n totalReadyUsers: resp.totalUsersReady,\r\n totalUpgradedUsers: resp.totalUsersUpgraded\r\n };\r\n }));\r\n }\r\n\r\n getSitesUpgradeSummary(): Observable<SitesUpgradeSummary> {\r\n return this.apiService.fetch(\r\n API.OVERVIEW.GET_SITES_UPGRADE_SUMMARY.replace(':customerId', this.customerId)\r\n ).pipe(map((resp) => {\r\n return {\r\n id: resp.id,\r\n customerId: resp.customerId,\r\n totalSites: resp.totalSites,\r\n totalReadySites: resp.totalSitesReady,\r\n totalUpgradedSites: resp.totalSitesUpgraded\r\n };\r\n }));\r\n }\r\n\r\n getUsersUpgradeReadiness(): Observable<UsersUpgradeReadiness> {\r\n return this.apiService.fetch(\r\n API.OVERVIEW.GET_USERS_UPGRADE_READINESS.replace(':customerId', this.customerId)\r\n ).pipe(map((resp) => {\r\n return {\r\n id: resp.id,\r\n customerId: resp.customerId,\r\n totalUsers: resp.totalUsers,\r\n totalReadyUsers: resp.totalUsersReady\r\n };\r\n }));\r\n }\r\n\r\n getSitesUpgradeReadiness(): Observable<SitesUpgradeReadiness> {\r\n return this.apiService.fetch(\r\n API.OVERVIEW.GET_SITES_UPGRADE_READINESS.replace(':customerId', this.customerId)\r\n ).pipe(map((resp) => {\r\n return {\r\n id: resp.id,\r\n customerId: resp.customerId,\r\n totalSites: resp.totalSites,\r\n totalReadySites: resp.totalSitesReady\r\n };\r\n }));\r\n }\r\n}","import { Component, Input, OnInit, OnDestroy, inject } from \"@angular/core\";\r\nimport { UpgradeOverviewService } from \"../../upgrade-overview.service\";\r\nimport { UsersUpgradeReadiness } from \"../../types/upgrade-overview\";\r\nimport { Subject } from \"rxjs\";\r\nimport { takeUntil } from \"rxjs\";\r\nimport { APIService } from \"../../../../shared/services/api.service\";\r\n\r\n@Component({\r\n selector: 'tk-ready-to-upgrade-users-card',\r\n templateUrl: './ready-to-upgrade-users-card.component.html',\r\n styleUrls: ['./ready-to-upgrade-users-card.component.scss']\r\n})\r\nexport class ReadyToUpgradeUsersCardComponent implements OnInit, OnDestroy {\r\n private apiService = inject(APIService);\r\n private upgradeOverviewService = inject(UpgradeOverviewService);\r\n private destroy$ = new Subject<void>();\r\n\r\n @Input() token!: string;\r\n @Input() customerId!: string;\r\n\r\n title: string = 'Ready Users';\r\n type: any = 'user';\r\n readinessStats!: UsersUpgradeReadiness;\r\n upgradeStatus: any = 'ready';\r\n\r\n loading: boolean = false;\r\n\r\n ngOnInit(): void {\r\n this.apiService.token = this.token;\r\n this.upgradeOverviewService.customerId = this.customerId;\r\n \r\n this.loading = true;\r\n this.upgradeOverviewService.getUsersUpgradeReadiness()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((stats) => {\r\n this.readinessStats = stats;\r\n this.loading = false;\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}"," <tk-stat-card\r\n *ngIf=\"!loading\"\r\n [title]=\"title\"\r\n [type]=\"type\"\r\n [readinessStats]=\"readinessStats\"\r\n [upgradeStatus]=\"upgradeStatus\">\r\n </tk-stat-card>","import { Component, Input, OnInit, OnDestroy, inject } from \"@angular/core\";\r\nimport { UpgradeOverviewService } from \"../../upgrade-overview.service\";\r\nimport { SitesUpgradeReadiness } from \"../../types/upgrade-overview\";\r\nimport { Subject } from \"rxjs\";\r\nimport { takeUntil } from \"rxjs\";\r\nimport { APIService } from \"../../../../shared/services/api.service\";\r\n\r\n@Component({\r\n selector: 'tk-ready-to-upgrade-sites-card',\r\n templateUrl: './ready-to-upgrade-sites-card.component.html',\r\n styleUrls: ['./ready-to-upgrade-sites-card.component.scss']\r\n})\r\nexport class ReadyToUpgradeSitesCardComponent implements OnInit, OnDestroy {\r\n private apiService = inject(APIService);\r\n private upgradeOverviewService = inject(UpgradeOverviewService);\r\n private destroy$ = new Subject<void>();\r\n\r\n @Input() token!: string;\r\n @Input() customerId!: string;\r\n\r\n title: string = 'Ready Sites';\r\n type: any = 'site';\r\n readinessStats!: SitesUpgradeReadiness;\r\n upgradeStatus: any = 'ready';\r\n\r\n loading: boolean = false;\r\n\r\n ngOnInit(): void {\r\n this.apiService.token = this.token;\r\n this.upgradeOverviewService.customerId = this.customerId;\r\n \r\n this.loading = true;\r\n this.upgradeOverviewService.getSitesUpgradeReadiness()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((stats) => {\r\n this.readinessStats = stats;\r\n this.loading = false;\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}"," <tk-stat-card\r\n *ngIf=\"!loading\"\r\n [title]=\"title\"\r\n [type]=\"type\"\r\n [readinessStats]=\"readinessStats\"\r\n [upgradeStatus]=\"upgradeStatus\">\r\n </tk-stat-card>","import { Component, Input, OnInit, OnDestroy, inject } from \"@angular/core\";\r\nimport { UpgradeOverviewService } from \"../../upgrade-overview.service\";\r\nimport { UsersUpgradeSummary } from \"../../types/upgrade-overview\";\r\nimport { Subject } from \"rxjs\";\r\nimport { takeUntil } from \"rxjs\";\r\nimport { APIService } from \"../../../../shared/services/api.service\";\r\n\r\n\r\n@Component({\r\n selector: 'tk-already-upgraded-users-card',\r\n template: `\r\n <tk-stat-card\r\n *ngIf=\"!loading\"\r\n [title]=\"title\"\r\n [type]=\"type\"\r\n [readinessStats]=\"readinessStats\"\r\n [upgradeStatus]=\"upgradeStatus\"\r\n ></tk-stat-card>\r\n `\r\n})\r\nexport class AlreadyUpgradedUsersCardComponent implements OnInit, OnDestroy {\r\n private apiService = inject(APIService);\r\n private upgradeOverviewService = inject(UpgradeOverviewService);\r\n private destroy$ = new Subject<void>();\r\n\r\n @Input() token!: string;\r\n @Input() customerId!: string;\r\n\r\n title: string = 'Upgraded Users';\r\n type: any = 'user';\r\n readinessStats!: UsersUpgradeSummary;\r\n upgradeStatus: any = 'already';\r\n\r\n loading: boolean = false;\r\n\r\n ngOnInit(): void {\r\n this.apiService.token = this.token;\r\n this.upgradeOverviewService.customerId = this.customerId;\r\n\r\n this.loading = true;\r\n this.upgradeOverviewService.getUsersUpgradeSummary()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((stats) => {\r\n this.readinessStats = stats;\r\n this.loading = false;\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}","import { Component, Input, OnInit, OnDestroy, inject } from \"@angular/core\";\r\nimport { UpgradeOverviewService } from \"../../upgrade-overview.service\";\r\nimport { SitesUpgradeSummary } from \"../../types/upgrade-overview\";\r\nimport { Subject } from \"rxjs\";\r\nimport { takeUntil } from \"rxjs\";\r\nimport { APIService } from \"../../../../shared/services/api.service\";\r\n\r\n@Component({\r\n selector: 'tk-already-upgraded-sites-card',\r\n template: `\r\n <tk-stat-card\r\n *ngIf=\"!loading\"\r\n [title]=\"title\"\r\n [type]=\"type\"\r\n [readinessStats]=\"readinessStats\"\r\n [upgradeStatus]=\"upgradeStatus\"\r\n ></tk-stat-card>\r\n `\r\n})\r\nexport class AlreadyUpgradedSitesCardComponent implements OnInit, OnDestroy {\r\n private apiService = inject(APIService);\r\n private upgradeOverviewService = inject(UpgradeOverviewService);\r\n private destroy$ = new Subject<void>();\r\n\r\n @Input() token!: string;\r\n @Input() customerId!: string;\r\n\r\n title: string = 'Upgraded Sites';\r\n type: 'site' | 'user' = 'site';\r\n readinessStats!: SitesUpgradeSummary;\r\n upgradeStatus: any = 'already';\r\n\r\n loading: boolean = false;\r\n\r\n ngOnInit(): void {\r\n this.apiService.token = this.token;\r\n this.upgradeOverviewService.customerId = this.customerId;\r\n\r\n this.loading = true;\r\n this.upgradeOverviewService.getSitesUpgradeSummary()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((stats) => {\r\n this.readinessStats = stats;\r\n this.loading = false;\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}","import { Component, inject, Input, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { UpgradePreconditions } from \"../../types/upgrade-overview\";\r\nimport { UpgradeOverviewService } from \"../../upgrade-overview.service\";\r\nimport { Subject, takeUntil } from \"rxjs\";\r\nimport { APIService } from \"../../../../shared/services/api.service\";\r\n\r\n\r\n@Component({\r\n selector: 'tk-preconditions-status-list-card',\r\n template: `\r\n <tk-status-list-card \r\n [title]=\"title\"\r\n [items]=\"items\"\r\n ></tk-status-list-card>\r\n `,\r\n styles: [` :host { width: 100%; } `]\r\n})\r\nexport class PreconditionsStatusListCardComponent implements OnInit, OnDestroy {\r\n private apiService = inject(APIService);\r\n private destroy$ = new Subject<void>();\r\n private upgradeOverviewService = inject(UpgradeOverviewService);\r\n\r\n @Input() token!: string;\r\n @Input() customerId!: string;\r\n\r\n title: string = 'Preconditions';\r\n preconditions!: UpgradePreconditions;\r\n\r\n items: any;\r\n\r\n ngOnInit(): void {\r\n this.apiService.token = this.token;\r\n this.upgradeOverviewService.customerId = this.customerId;\r\n \r\n this.upgradeOverviewService.getUpgradePreconditions()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((resp) => {\r\n this.preconditions = resp;\r\n this.init();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n private init(): void {\r\n this.items = [\r\n {\r\n label: 'Control Hub Integration',\r\n description: 'Control Hub Connectivity',\r\n status: this.preconditions.controlHubIntegration === 'CONNECTED'\r\n },\r\n {\r\n label: 'SIP Trunk (Local Gateway)',\r\n description: 'CUCM trunk connectivity estabilished',\r\n status: false\r\n },\r\n {\r\n label: `${this.preconditions.numberOfAvailableLicences} Available User Licences`,\r\n description: 'Webex calling licences provisioned and assgined',\r\n status: this.preconditions.numberOfAvailableLicences > 0\r\n }\r\n ];\r\n }\r\n}","import { Component, Input, OnInit, OnDestroy, inject } from \"@angular/core\";\r\nimport { SiteInfrastructureSummary } from \"../../types/upgrade-overview\";\r\nimport { UpgradeOverviewService } from \"../../upgrade-overview.service\";\r\nimport { Subject } from \"rxjs\";\r\nimport { takeUntil } from \"rxjs\";\r\nimport { APIService } from \"../../../../shared/services/api.service\";\r\n\r\n@Component({\r\n selector: 'tk-site-infrastructure-status-list-card',\r\n template: `\r\n <tk-status-list-card \r\n [title]=\"title\"\r\n [items]=\"items\"\r\n ></tk-status-list-card>\r\n `,\r\n styles: [` :host { width: 100%; } `]\r\n})\r\nexport class SiteInfrastructureStatusListCardComponent implements OnInit {\r\n title: string = 'Site Infrastructure';\r\n items: any;\r\n\r\n @Input() token!: string;\r\n @Input() customerId!: string;\r\n\r\n private apiService = inject(APIService);\r\n private upgradeOverviewService = inject(UpgradeOverviewService);\r\n private destroy$ = new Subject<void>();\r\n\r\n ngOnInit(): void {\r\n this.apiService.token = this.token;\r\n this.upgradeOverviewService.customerId = this.customerId;\r\n\r\n this.upgradeOverviewService.getSiteInfrastructureSummary()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((siteInfrastructure) => {\r\n this.items = [\r\n {\r\n label: 'PSTN Trunk',\r\n description: 'Public network connectivity',\r\n status: false,\r\n totalSites: siteInfrastructure.totalSites,\r\n value: siteInfrastructure.totalPSTNs\r\n },\r\n {\r\n label: 'Location Mapping',\r\n description: 'Sites defined in Control Hub with proper configuration',\r\n status: false,\r\n totalSites: siteInfrastructure.totalSites,\r\n value: siteInfrastructure.totalLocations\r\n }\r\n ];\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}","import { Component, Input, OnInit, OnDestroy, inject } from \"@angular/core\";\r\nimport { UpgradeOverviewService } from \"../../upgrade-overview.service\";\r\nimport { UsersUpgradeSummary, SitesUpgradeSummary } from \"../../types/upgrade-overview\";\r\nimport { Subject } from \"rxjs\";\r\nimport { takeUntil } from \"rxjs\";\r\nimport { APIService } from \"../../../../shared/services/api.service\";\r\n\r\n@Component({\r\n selector: \"tk-upgrade-state-comparison-chart-card\",\r\n template: `\r\n <tk-chart-card\r\n *ngIf=\"!loading\"\r\n [title]=\"title\"\r\n [totalUpgraded]=\"totalUpgraded\"\r\n [totalNotUpgraded]=\"totalNotUpgraded\"\r\n ></tk-chart-card>\r\n `,\r\n styles: [`\r\n :host {\r\n width: 100%\r\n } \r\n `]\r\n})\r\nexport class UpgradeStateComparisonChartCardComponent implements OnInit, OnDestroy {\r\n private apiService = inject(APIService);\r\n private upgradeOverviewService = inject(UpgradeOverviewService);\r\n private destroy$ = new Subject<void>();\r\n \r\n @Input() type: 'Users' | 'Sites' = 'Users';\r\n @Input() token!: string;\r\n @Input() customerId!: string;\r\n\r\n title!: string;\r\n totalUpgraded!: number;\r\n totalNotUpgraded!: number;\r\n\r\n loading = false;\r\n\r\n ngOnInit(): void {\r\n this.apiService.token = this.token;\r\n this.upgradeOverviewService.customerId = this.customerId;\r\n\r\n this.totalUpgraded = 0;\r\n this.totalNotUpgraded = 0;\r\n this.loading = true;\r\n this.title = `Upgraded vs. Not Upgraded ${this.type}`;\r\n if (this.type === 'Sites') {\r\n this.upgradeOverviewService.getSitesUpgradeSummary()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((stats: any) => {\r\n this.totalUpgraded = parseInt(stats.totalUpgradedSites);\r\n this.totalNotUpgraded = parseInt(stats.totalReadySites);\r\n this.loading = false;\r\n });\r\n } else {\r\n this.upgradeOverviewService.getUsersUpgradeSummary()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((stats: any) => {\r\n this.totalUpgraded = parseInt(stats.totalUpgradedUsers);\r\n this.totalNotUpgraded = parseInt(stats.totalReadyUsers);\r\n this.loading = false;\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}","import { NgModule } from \"@angular/core\";\r\nimport { ReadyToUpgradeUsersCardComponent } from \"./cards/ready-to-upgrade-users/ready-to-upgrade-users-card.component\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { SharedModule } from \"../../shared/shared.module\";\r\nimport { ReadyToUpgradeSitesCardComponent } from \"./cards/ready-to-upgrade-sites/ready-to-upgrade-sites-card.component\";\r\nimport { AlreadyUpgradedUsersCardComponent } from \"./cards/already-upgraded-users/already-upgraded-users-card.component\";\r\nimport { AlreadyUpgradedSitesCardComponent } from \"./cards/already-upgraded-sites/already-upgraded-sites-card.component\";\r\nimport { PreconditionsStatusListCardComponent } from \"./cards/preconditions-status-list/preconditions-status-list-card.component\";\r\nimport { SiteInfrastructureStatusListCardComponent } from \"./cards/site-infrastructure-status-list/site-infrastructure-status-list-card.component\";\r\nimport { UpgradeStateComparisonChartCardComponent } from \"./cards/upgrade-state-comparison-chart/upgrade-state-comparison-chart-card.component\";\r\nimport { APIService } from \"../../shared/services/api.service\";\r\nimport { UserUpgradeService } from \"../user-upgrade/user-upgrade.service\";\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ReadyToUpgradeUsersCardComponent,\r\n ReadyToUpgradeSitesCardComponent,\r\n AlreadyUpgradedUsersCardComponent,\r\n AlreadyUpgradedSitesCardComponent,\r\n PreconditionsStatusListCardComponent,\r\n SiteInfrastructureStatusListCardComponent,\r\n UpgradeStateComparisonChartCardComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule\r\n ],\r\n exports: [\r\n ReadyToUpgradeUsersCardComponent,\r\n ReadyToUpgradeSitesCardComponent,\r\n AlreadyUpgradedUsersCardComponent,\r\n AlreadyUpgradedSitesCardComponent,\r\n PreconditionsStatusListCardComponent,\r\n SiteInfrastructureStatusListCardComponent,\r\n UpgradeStateComparisonChartCardComponent\r\n ],\r\n providers: [\r\n \r\n ]\r\n})\r\nexport class UpgradeOverviewModule {}","/*\r\n * Public API Surface of @tuki-io/tuki-widgets\r\n */\r\n\r\n// Shared Components\r\n// export * from './shared/shared.module';\r\n\r\n// Widget Modules\r\nexport * from './widgets/user-upgrade/user-upgrade.module';\r\nexport * from './widgets/site-upgrade/site-upgrade.module';\r\nexport * from './widgets/upgrade-overview/upgrade-overview.module';\r\n\r\n// Components\r\n// export * from './shared/components/index';\r\nexport * from './widgets/user-upgrade/user-upgrade-data-table/user-upgrade-data-table.component';\r\nexport * from './widgets/site-upgrade/site-upgrade-data-table/site-upgrade-data-table.component';\r\nexport * from './widgets/upgrade-overview/cards/already-upgraded-sites/already-upgraded-sites-card.component';\r\nexport * from './widgets/upgrade-overview/cards/already-upgraded-users/already-upgraded-users-card.component';\r\nexport * from './widgets/upgrade-overview/cards/ready-to-upgrade-sites/ready-to-upgrade-sites-card.component';\r\nexport * from './widgets/upgrade-overview/cards/ready-to-upgrade-users/ready-to-upgrade-users-card.component';\r\nexport * from './widgets/upgrade-overview/cards/preconditions-status-list/preconditions-status-list-card.component';\r\nexport * from './widgets/upgrade-overview/cards/site-infrastructure-status-list/site-infrastructure-status-list-card.component';\r\nexport * from './widgets/upgrade-overview/cards/upgrade-state-comparison-chart/upgrade-state-comparison-chart-card.component';\r\n\r\n// Types\r\n// export * from './shared/types/data-table';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.SummaryCardComponent","i3.TableFiltersComponent","i4","i5","i6","i2.CardComponent","i1.APIService","i2.StatCardComponent","i1.StatusListCardComponent","i2.ChartCardComponent"],"mappings":"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"}
|