@tuki-io/tuki-widgets 0.0.219-dev.53 → 0.0.219-dev.55
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 -24
- package/contact-center/cc-import/cc-import.module.d.ts +13 -0
- package/contact-center/cc-import/cc-import.service.d.ts +85 -0
- package/contact-center/cc-import/components/import-contact-center-panel/import-contact-center-panel.component.d.ts +56 -0
- package/contact-center/cc-import/components/import-contact-center-wizard/import-contact-center-wizard.component.d.ts +77 -0
- package/contact-center/cc-import/components/import-contact-center-wizard/import-contact-center-wizard.types.d.ts +3 -0
- package/contact-center/cc-import/constants/cc-import.constants.d.ts +37 -0
- package/contact-center/cc-import/mock/cc-import.mock.d.ts +4 -0
- package/contact-center/cc-import/types/cc-import.d.ts +73 -0
- package/contact-center/cc-import/types/uccx.d.ts +109 -0
- package/contact-center/cc-readiness/cc-readiness.module.d.ts +3 -3
- package/contact-center/public-api.d.ts +8 -0
- package/contact-center/shared/api.endpoints.d.ts +25 -0
- package/contact-center/shared/api.service.d.ts +3 -1
- package/contact-center/shared/components/card/card.component.d.ts +13 -0
- package/contact-center/shared/dcp-api.service.d.ts +15 -0
- package/contact-center/shared/shared.module.d.ts +11 -5
- package/esm2020/contact-center/cc-import/cc-import.module.mjs +45 -0
- package/esm2020/contact-center/cc-import/cc-import.service.mjs +228 -0
- package/esm2020/contact-center/cc-import/components/import-contact-center-panel/import-contact-center-panel.component.mjs +144 -0
- package/esm2020/contact-center/cc-import/components/import-contact-center-wizard/import-contact-center-wizard.component.mjs +243 -0
- package/esm2020/contact-center/cc-import/components/import-contact-center-wizard/import-contact-center-wizard.types.mjs +3 -0
- package/esm2020/contact-center/cc-import/constants/cc-import.constants.mjs +62 -0
- package/esm2020/contact-center/cc-import/mock/cc-import.mock.mjs +78 -0
- package/esm2020/contact-center/cc-import/types/cc-import.mjs +2 -0
- package/esm2020/contact-center/cc-import/types/uccx.mjs +24 -0
- package/esm2020/contact-center/cc-readiness/cc-readiness.module.mjs +7 -6
- package/esm2020/contact-center/cc-readiness/cc-readiness.service.mjs +1 -1
- package/esm2020/contact-center/cc-readiness/widgets/licences-requirement/licences-requirement.component.mjs +7 -7
- package/esm2020/contact-center/cc-readiness/widgets/summary-grid/summary-grid.component.mjs +2 -2
- package/esm2020/contact-center/public-api.mjs +9 -1
- package/esm2020/contact-center/shared/api.endpoints.mjs +26 -1
- package/esm2020/contact-center/shared/api.service.mjs +8 -3
- package/esm2020/contact-center/shared/components/card/card.component.mjs +24 -0
- package/esm2020/contact-center/shared/dcp-api.service.mjs +26 -0
- package/esm2020/contact-center/shared/shared.module.mjs +15 -5
- package/esm2020/di2mt/widgets/site-upgrade/progress-bar/progress-bar.component.mjs +3 -3
- package/esm2020/di2mt/widgets/site-upgrade/site-upgrade-data-table/site-upgrade-data-table.component.mjs +2 -2
- package/esm2020/di2mt/widgets/upgrade-overview/cards/pending-activation-users/pending-activation-users.component.mjs +17 -17
- package/esm2020/lib/widgets.component.mjs +9 -9
- package/esm2020/lib/widgets.module.mjs +1 -1
- package/esm2020/lib/widgets.service.mjs +1 -1
- package/esm2020/locations/public-api.mjs +1 -1
- package/esm2020/locations/src/app.constants.mjs +1 -1
- package/esm2020/locations/src/location-confirm-dialog/location-confirm-dialog.component.mjs +3 -3
- package/esm2020/locations/src/locations.component.mjs +47 -15
- package/esm2020/locations/src/locations.module.mjs +1 -1
- package/esm2020/locations/src/material.module.mjs +1 -1
- package/esm2020/locations/src/services/api.service.mjs +1 -1
- package/esm2020/locations/src/services/locations.service.mjs +1 -1
- package/esm2020/locations/src/types/location.mjs +1 -1
- package/esm2020/locations/src/utils/app-loader/app-loader.mjs +3 -3
- package/esm2020/meetings/src/app.constants.mjs +1 -1
- package/esm2020/meetings/src/components/live-meetings/live-meetings.component.mjs +3 -3
- package/esm2020/meetings/src/components/meeting-spaces/meeting-spaces.component.mjs +3 -3
- package/esm2020/meetings/src/meetings.component.mjs +3 -3
- package/esm2020/meetings/src/meetings.module.mjs +1 -1
- package/esm2020/meetings/src/services/live-meetings.service.mjs +1 -1
- package/esm2020/meetings/src/services/meeting-spaces.service.mjs +1 -1
- package/esm2020/meetings/src/types/live-meeting.mjs +1 -1
- package/esm2020/meetings/src/types/meeting-space.mjs +1 -1
- package/esm2020/meetings/src/utils/app-loader/app-loader.mjs +3 -3
- package/esm2020/public-api.mjs +1 -1
- package/esm2020/user-creation/src/app.constants.mjs +1 -1
- package/esm2020/user-creation/src/classes/notification.mjs +1 -1
- package/esm2020/user-creation/src/classes/site.mjs +1 -1
- package/esm2020/user-creation/src/environments/environment.mjs +1 -1
- package/esm2020/user-creation/src/interfaces/user-creation-wizard.interfaces.mjs +1 -1
- package/esm2020/user-creation/src/shared/components/notification/notification.component.mjs +3 -3
- package/esm2020/user-creation/src/shared/pipes/truncate.pipe.mjs +1 -1
- package/esm2020/user-creation/src/shared/services/notification.service.mjs +1 -1
- package/esm2020/user-creation/src/shared/services/user-creation-api.service.mjs +1 -1
- package/esm2020/user-creation/src/shared/services/utils.mjs +1 -1
- package/esm2020/user-creation/src/utils/app-loader/app-loader.mjs +3 -3
- package/esm2020/user-creation/src/utils/build-savable-end-user.mjs +1 -1
- package/esm2020/user-creation/src/utils/device-default-prefix.mjs +1 -1
- package/esm2020/user-creation/src/utils/device-name-dynamic-tokens.mjs +1 -1
- package/esm2020/user-creation/src/utils/device-name-validation.mjs +1 -1
- package/esm2020/user-creation/src/utils/model.mjs +1 -1
- package/esm2020/user-creation/src/utils/parse-device-name-rule.mjs +1 -1
- package/esm2020/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.component.mjs +3 -3
- package/esm2020/user-device-manage/public-api.mjs +4 -1
- package/esm2020/user-device-manage/src/app.constants.mjs +9 -3
- package/esm2020/user-device-manage/src/associate-lines/associate-lines.component.mjs +311 -0
- package/esm2020/user-device-manage/src/classes/device.mjs +1 -1
- package/esm2020/user-device-manage/src/classes/deviceProfile.mjs +1 -1
- package/esm2020/user-device-manage/src/classes/line-association-interface.mjs +1 -1
- package/esm2020/user-device-manage/src/classes/line-association.mjs +1 -1
- package/esm2020/user-device-manage/src/classes/line-call-info-display.mjs +1 -1
- package/esm2020/user-device-manage/src/classes/line-directory.mjs +1 -1
- package/esm2020/user-device-manage/src/classes/line.mjs +1 -1
- package/esm2020/user-device-manage/src/classes/notification.mjs +1 -1
- package/esm2020/user-device-manage/src/classes/recording-options.mjs +1 -1
- package/esm2020/user-device-manage/src/classes/simplified-user.mjs +1 -1
- package/esm2020/user-device-manage/src/classes/site-defaults.mjs +1 -1
- package/esm2020/user-device-manage/src/classes/translation-pattern.mjs +1 -1
- package/esm2020/user-device-manage/src/classes/types.mjs +1 -1
- package/esm2020/user-device-manage/src/common-functions.mjs +1 -1
- package/esm2020/user-device-manage/src/confirm-dialog/info-dialog.component.mjs +3 -3
- package/esm2020/user-device-manage/src/device-associated-line/associated-line-row/associated-line-row.component.mjs +3 -3
- package/esm2020/user-device-manage/src/device-associated-line/device-associated-line-details-box/device-associated-line-details-box.component.mjs +3 -3
- package/esm2020/user-device-manage/src/device-associated-line/device-associated-line-extension/device-associated-line-extension.component.mjs +3 -3
- package/esm2020/user-device-manage/src/device-associated-line/device-associated-line.component.mjs +1 -1
- package/esm2020/user-device-manage/src/device-info/device-info.component.mjs +3 -3
- package/esm2020/user-device-manage/src/device-manage-widget.component.mjs +34 -17
- package/esm2020/user-device-manage/src/device-settings/device-settings.component.mjs +207 -0
- package/esm2020/user-device-manage/src/environments/environment.mjs +1 -1
- package/esm2020/user-device-manage/src/interseptors/auth.interceptor.mjs +1 -1
- package/esm2020/user-device-manage/src/lazy-loading-select/lazy-loading-select.component.mjs +3 -3
- package/esm2020/user-device-manage/src/line-key-config/line-key-config.component.mjs +401 -0
- package/esm2020/user-device-manage/src/material.module.mjs +1 -1
- package/esm2020/user-device-manage/src/notifications/notification.component.mjs +3 -3
- package/esm2020/user-device-manage/src/pipes/mac-address.pipe.mjs +1 -1
- package/esm2020/user-device-manage/src/services/api.service.mjs +1 -1
- package/esm2020/user-device-manage/src/services/device.service.mjs +32 -2
- package/esm2020/user-device-manage/src/services/dns.service.mjs +1 -1
- package/esm2020/user-device-manage/src/services/line.service.mjs +1 -1
- package/esm2020/user-device-manage/src/services/notification.service.mjs +1 -1
- package/esm2020/user-device-manage/src/services/removeKynFromIBM.service.mjs +1 -1
- package/esm2020/user-device-manage/src/services/site-settings.service.mjs +1 -1
- package/esm2020/user-device-manage/src/services/sorting-utils.service.mjs +1 -1
- package/esm2020/user-device-manage/src/services/user.service.mjs +34 -6
- package/esm2020/user-device-manage/src/services/utils.service.mjs +1 -1
- package/esm2020/user-device-manage/src/services/validation.service.mjs +1 -1
- package/esm2020/user-device-manage/src/user-device-manage.module.mjs +19 -4
- package/esm2020/user-device-manage/src/utils/app-loader/app-loader.mjs +3 -3
- package/esm2020/user-manage/public-api.mjs +1 -1
- package/esm2020/user-manage/src/app.constants.mjs +1 -1
- package/esm2020/user-manage/src/classes/device.mjs +1 -1
- package/esm2020/user-manage/src/classes/line-association-interface.mjs +1 -1
- package/esm2020/user-manage/src/classes/line-association.mjs +1 -1
- package/esm2020/user-manage/src/classes/line-call-info-display.mjs +1 -1
- package/esm2020/user-manage/src/classes/line-directory.mjs +1 -1
- package/esm2020/user-manage/src/classes/line.mjs +1 -1
- package/esm2020/user-manage/src/classes/notification.mjs +1 -1
- package/esm2020/user-manage/src/classes/pagination.mjs +1 -1
- package/esm2020/user-manage/src/classes/recording-options.mjs +1 -1
- package/esm2020/user-manage/src/classes/simplified-user.mjs +1 -1
- package/esm2020/user-manage/src/classes/table-data.mjs +1 -1
- package/esm2020/user-manage/src/classes/translation-pattern.mjs +1 -1
- package/esm2020/user-manage/src/classes/user-list.mjs +1 -1
- package/esm2020/user-manage/src/common-functions.mjs +1 -1
- package/esm2020/user-manage/src/device-list/device-list.component.mjs +3 -3
- package/esm2020/user-manage/src/device-list/device-row/device-row.component.mjs +3 -3
- package/esm2020/user-manage/src/environments/environment.mjs +1 -1
- package/esm2020/user-manage/src/interseptors/auth.interceptor.mjs +1 -1
- package/esm2020/user-manage/src/lazy-loading-select/lazy-loading-select.component.mjs +3 -3
- package/esm2020/user-manage/src/material.module.mjs +1 -1
- package/esm2020/user-manage/src/notifications/notification.component.mjs +3 -3
- package/esm2020/user-manage/src/removeKynFromIBM.service.mjs +1 -1
- package/esm2020/user-manage/src/services/api.service.mjs +1 -1
- package/esm2020/user-manage/src/services/dcp-api.service.mjs +1 -1
- package/esm2020/user-manage/src/services/dns.service.mjs +1 -1
- package/esm2020/user-manage/src/services/line.service.mjs +1 -1
- package/esm2020/user-manage/src/services/notification.service.mjs +1 -1
- package/esm2020/user-manage/src/services/removeKynFromIBM.service.mjs +1 -1
- package/esm2020/user-manage/src/services/site-settings.service.mjs +1 -1
- package/esm2020/user-manage/src/services/sorting-utils.service.mjs +1 -1
- package/esm2020/user-manage/src/services/user.service.mjs +1 -1
- package/esm2020/user-manage/src/services/utils.service.mjs +1 -1
- package/esm2020/user-manage/src/user-calling/user-calling-extension/user-calling-extension.component.mjs +3 -3
- package/esm2020/user-manage/src/user-info/user-info.component.mjs +3 -3
- package/esm2020/user-manage/src/user-manage-widget.component.mjs +2 -2
- package/esm2020/user-manage/src/user-manage.module.mjs +1 -1
- package/esm2020/user-manage/src/utils/app-loader/app-loader.mjs +3 -3
- package/esm2020/user-manage/src/utils/pagination/pagination.component.mjs +3 -3
- package/esm2020/users-list/public-api.mjs +1 -1
- package/esm2020/users-list/src/app.constants.mjs +1 -1
- package/esm2020/users-list/src/classes/app-location.mjs +1 -1
- package/esm2020/users-list/src/classes/device.mjs +1 -1
- package/esm2020/users-list/src/classes/line.mjs +1 -1
- package/esm2020/users-list/src/classes/move-user.mjs +1 -1
- package/esm2020/users-list/src/classes/notification.mjs +1 -1
- package/esm2020/users-list/src/classes/simlified-user.mjs +1 -1
- package/esm2020/users-list/src/classes/table-data.mjs +1 -1
- package/esm2020/users-list/src/classes/user-list.mjs +1 -1
- package/esm2020/users-list/src/move-user-wizard/move-user-stepper/device-move-user/device-move-user-wizard.component.mjs +3 -3
- package/esm2020/users-list/src/move-user-wizard/move-user-stepper/device-move-user-tab/devices-move-user-wizard-tab.component.mjs +3 -3
- package/esm2020/users-list/src/move-user-wizard/move-user-wizard.component.mjs +3 -3
- package/esm2020/users-list/src/services/api-webex.service.mjs +1 -1
- package/esm2020/users-list/src/services/api.service.mjs +1 -1
- package/esm2020/users-list/src/services/dns.service.mjs +1 -1
- package/esm2020/users-list/src/services/events-communication.service.mjs +1 -1
- package/esm2020/users-list/src/services/notification.service.mjs +1 -1
- package/esm2020/users-list/src/services/removeKynFromIBM.service.mjs +1 -1
- package/esm2020/users-list/src/services/site-settings.service.mjs +1 -1
- package/esm2020/users-list/src/services/user.service.mjs +1 -1
- package/esm2020/users-list/src/user-list-confirm-dialog/user-list-confirm-dialog.component.mjs +3 -3
- package/esm2020/users-list/src/utils/app-loader/app-loader.mjs +3 -3
- package/esm2020/users-list/src/utils/common-functions.mjs +1 -1
- package/esm2020/users-list/src/utils/notifications/notification.component.mjs +3 -3
- package/esm2020/users-list/src/utils/utils.service.mjs +1 -1
- package/esm2020/workspaces/public-api.mjs +1 -1
- package/esm2020/workspaces/src/app.constants.mjs +1 -1
- package/esm2020/workspaces/src/components/workspace-detail/workspace-detail.component.mjs +17 -4
- package/esm2020/workspaces/src/components/workspace-device-detail/workspace-device-detail.component.mjs +66 -0
- package/esm2020/workspaces/src/components/workspaces-filters/workspaces-filters.component.mjs +3 -3
- package/esm2020/workspaces/src/components/workspaces-table/workspaces-table.component.mjs +6 -3
- package/esm2020/workspaces/src/material.module.mjs +1 -1
- package/esm2020/workspaces/src/services/api.service.mjs +1 -1
- package/esm2020/workspaces/src/services/workspace-detail.service.mjs +43 -1
- package/esm2020/workspaces/src/services/workspaces-migration.service.mjs +1 -1
- package/esm2020/workspaces/src/services/workspaces.service.mjs +2 -1
- package/esm2020/workspaces/src/types/workspace.mjs +1 -1
- package/esm2020/workspaces/src/utils/app-loader/app-loader.mjs +3 -3
- package/esm2020/workspaces/src/utils/device-icon.mjs +1 -1
- package/esm2020/workspaces/src/workspaces.component.mjs +8 -8
- package/esm2020/workspaces/src/workspaces.module.mjs +4 -1
- package/fesm2015/tuki-io-tuki-widgets-contact-center.mjs +999 -128
- package/fesm2015/tuki-io-tuki-widgets-contact-center.mjs.map +1 -1
- package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs +20 -20
- package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
- package/fesm2015/tuki-io-tuki-widgets-locations.mjs +51 -18
- package/fesm2015/tuki-io-tuki-widgets-locations.mjs.map +1 -1
- package/fesm2015/tuki-io-tuki-widgets-meetings.mjs +8 -8
- package/fesm2015/tuki-io-tuki-widgets-meetings.mjs.map +1 -1
- package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs +6 -6
- package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs.map +1 -1
- package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs +1029 -51
- package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
- package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs +18 -18
- package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
- package/fesm2015/tuki-io-tuki-widgets-users-list.mjs +12 -12
- package/fesm2015/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
- package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs +151 -25
- package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs.map +1 -1
- package/fesm2015/tuki-io-tuki-widgets.mjs +8 -8
- package/fesm2015/tuki-io-tuki-widgets.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-contact-center.mjs +990 -128
- package/fesm2020/tuki-io-tuki-widgets-contact-center.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs +20 -20
- package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-locations.mjs +50 -18
- package/fesm2020/tuki-io-tuki-widgets-locations.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-meetings.mjs +8 -8
- package/fesm2020/tuki-io-tuki-widgets-meetings.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs +6 -6
- package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs +1012 -50
- package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs +18 -18
- package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-users-list.mjs +12 -12
- package/fesm2020/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs +142 -25
- package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets.mjs +8 -8
- package/fesm2020/tuki-io-tuki-widgets.mjs.map +1 -1
- package/locations/src/locations.component.d.ts +7 -4
- package/locations/src/services/locations.service.d.ts +1 -0
- package/locations/src/types/location.d.ts +1 -0
- package/package.json +1 -1
- package/user-device-manage/public-api.d.ts +3 -0
- package/user-device-manage/src/app.constants.d.ts +6 -0
- package/user-device-manage/src/associate-lines/associate-lines.component.d.ts +95 -0
- package/user-device-manage/src/classes/device.d.ts +15 -0
- package/user-device-manage/src/classes/deviceProfile.d.ts +5 -0
- package/user-device-manage/src/device-associated-line/device-associated-line.component.d.ts +1 -0
- package/user-device-manage/src/device-manage-widget.component.d.ts +6 -1
- package/user-device-manage/src/device-settings/device-settings.component.d.ts +53 -0
- package/user-device-manage/src/line-key-config/line-key-config.component.d.ts +84 -0
- package/user-device-manage/src/services/device.service.d.ts +6 -1
- package/user-device-manage/src/services/user.service.d.ts +2 -1
- package/user-device-manage/src/user-device-manage.module.d.ts +10 -7
- package/workspaces/src/components/workspace-detail/workspace-detail.component.d.ts +6 -1
- package/workspaces/src/components/workspace-device-detail/workspace-device-detail.component.d.ts +25 -0
- package/workspaces/src/components/workspaces-table/workspaces-table.component.d.ts +1 -0
- package/workspaces/src/services/workspace-detail.service.d.ts +2 -0
- package/workspaces/src/types/workspace.d.ts +19 -0
- package/workspaces/src/workspaces.module.d.ts +8 -7
- package/contact-center/cc-readiness/components/card/card.component.d.ts +0 -6
- package/esm2020/contact-center/cc-readiness/components/card/card.component.mjs +0 -13
package/README.md
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
# Widgets
|
|
2
|
-
|
|
3
|
-
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 14.2.0.
|
|
4
|
-
|
|
5
|
-
## Code scaffolding
|
|
6
|
-
|
|
7
|
-
Run `ng generate component component-name --project widgets` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project widgets`.
|
|
8
|
-
> Note: Don't forget to add `--project widgets` or else it will be added to the default project in your `angular.json` file.
|
|
9
|
-
|
|
10
|
-
## Build
|
|
11
|
-
|
|
12
|
-
Run `ng build widgets` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
13
|
-
|
|
14
|
-
## Publishing
|
|
15
|
-
|
|
16
|
-
After building your library with `ng build widgets`, go to the dist folder `cd dist/widgets` and run `npm publish`.
|
|
17
|
-
|
|
18
|
-
## Running unit tests
|
|
19
|
-
|
|
20
|
-
Run `ng test widgets` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
21
|
-
|
|
22
|
-
## Further help
|
|
23
|
-
|
|
24
|
-
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
|
1
|
+
# Widgets
|
|
2
|
+
|
|
3
|
+
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 14.2.0.
|
|
4
|
+
|
|
5
|
+
## Code scaffolding
|
|
6
|
+
|
|
7
|
+
Run `ng generate component component-name --project widgets` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project widgets`.
|
|
8
|
+
> Note: Don't forget to add `--project widgets` or else it will be added to the default project in your `angular.json` file.
|
|
9
|
+
|
|
10
|
+
## Build
|
|
11
|
+
|
|
12
|
+
Run `ng build widgets` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
13
|
+
|
|
14
|
+
## Publishing
|
|
15
|
+
|
|
16
|
+
After building your library with `ng build widgets`, go to the dist folder `cd dist/widgets` and run `npm publish`.
|
|
17
|
+
|
|
18
|
+
## Running unit tests
|
|
19
|
+
|
|
20
|
+
Run `ng test widgets` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
21
|
+
|
|
22
|
+
## Further help
|
|
23
|
+
|
|
24
|
+
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "./components/import-contact-center-panel/import-contact-center-panel.component";
|
|
3
|
+
import * as i2 from "./components/import-contact-center-wizard/import-contact-center-wizard.component";
|
|
4
|
+
import * as i3 from "@angular/common";
|
|
5
|
+
import * as i4 from "@angular/common/http";
|
|
6
|
+
import * as i5 from "ng-apexcharts";
|
|
7
|
+
import * as i6 from "@angular/material/stepper";
|
|
8
|
+
import * as i7 from "../shared/shared.module";
|
|
9
|
+
export declare class CcImportModule {
|
|
10
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CcImportModule, never>;
|
|
11
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<CcImportModule, [typeof i1.ImportContactCenterPanelComponent, typeof i2.ImportContactCenterWizardComponent], [typeof i3.CommonModule, typeof i4.HttpClientModule, typeof i5.NgApexchartsModule, typeof i6.MatStepperModule, typeof i7.SharedModule], [typeof i1.ImportContactCenterPanelComponent, typeof i2.ImportContactCenterWizardComponent]>;
|
|
12
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<CcImportModule>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import { ContactCenter, ContactCenterEntities, ImportResult } from './types/cc-import';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class CcImportService {
|
|
5
|
+
private readonly api;
|
|
6
|
+
private readonly dcpApi;
|
|
7
|
+
/**
|
|
8
|
+
* Answer everything from `mock/cc-import.mock.ts` instead of calling the backend.
|
|
9
|
+
*
|
|
10
|
+
* Note this is all-or-nothing: with it off, the contact-center list, the entity
|
|
11
|
+
* overview and the import all hit real endpoints. Compatibility scoring is the
|
|
12
|
+
* exception - see {@link resolveCompatibility}.
|
|
13
|
+
*/
|
|
14
|
+
useMockData: boolean;
|
|
15
|
+
setToken(token: string): void;
|
|
16
|
+
setHost(host: string): void;
|
|
17
|
+
/** Base URL of the dcp host, which serves the UCCX application list. */
|
|
18
|
+
setDcpHost(dcpHost: string): void;
|
|
19
|
+
/**
|
|
20
|
+
* Every UCCX contact center Tuki can import.
|
|
21
|
+
*
|
|
22
|
+
* A "contact center" is a UCCX application. The list comes from the dcp
|
|
23
|
+
* application cache; whether each one has already been imported is joined on from
|
|
24
|
+
* the per-AEF-script call-flow migration states.
|
|
25
|
+
*/
|
|
26
|
+
fetchContactCenters(customerId: number): Observable<ContactCenter[]>;
|
|
27
|
+
/**
|
|
28
|
+
* Application-centric entity breakdown: everything Tuki will create on import.
|
|
29
|
+
*
|
|
30
|
+
* Note this only ever returns entities the backend has actually linked to the
|
|
31
|
+
* application. Where that linkage is missing the groups come back empty rather
|
|
32
|
+
* than padded with unrelated entities of the right type.
|
|
33
|
+
*/
|
|
34
|
+
fetchContactCenterEntities(customerId: number, contactCenter: ContactCenter): Observable<ContactCenterEntities>;
|
|
35
|
+
/**
|
|
36
|
+
* Kicks off the UCCX -> Webex Contact Center import of one contact center, as a
|
|
37
|
+
* single migration unit: every entity of the application goes in one request.
|
|
38
|
+
*
|
|
39
|
+
* The endpoint is synchronous and answers with an XLSX tracker rather than a job
|
|
40
|
+
* id - execution and progress tracking are defined in a separate ticket.
|
|
41
|
+
*
|
|
42
|
+
* @param siteId required by the backend when a Resource Group is in scope.
|
|
43
|
+
* @param locationId required by the backend when a Trigger is in scope.
|
|
44
|
+
*/
|
|
45
|
+
importContactCenter(customerId: number, applicationId: string, siteId?: string, locationId?: string): Observable<ImportResult>;
|
|
46
|
+
/**
|
|
47
|
+
* Every UCCX entity belonging to one application, gathered across the batches.
|
|
48
|
+
*
|
|
49
|
+
* UCCX batches hold one entity type each, so this reads them all and keeps the
|
|
50
|
+
* items whose `applicationName` matches. The narrowing is done here rather than
|
|
51
|
+
* through the endpoint's own `applicationName` param because that param answers
|
|
52
|
+
* `[]` on dev2 even for items that plainly carry the name.
|
|
53
|
+
*/
|
|
54
|
+
private fetchApplicationItems;
|
|
55
|
+
/** The items endpoint nests items one level; older responses come back flat. */
|
|
56
|
+
private flattenItems;
|
|
57
|
+
/** The same entity can be carried by more than one batch. */
|
|
58
|
+
private dedupeItems;
|
|
59
|
+
private groupEntities;
|
|
60
|
+
private toContactCenters;
|
|
61
|
+
/** UCCX wraps the backing script as `SCRIPT[Foo.aef]`; the widget shows `Foo.aef`. */
|
|
62
|
+
private toScriptName;
|
|
63
|
+
/**
|
|
64
|
+
* Whether Tuki has already imported this contact center.
|
|
65
|
+
*
|
|
66
|
+
* The application record carries its own `migrationStatus`, but it is null
|
|
67
|
+
* throughout dev2, so this falls back to the per-AEF-script call-flow state.
|
|
68
|
+
*/
|
|
69
|
+
private resolveMigrationState;
|
|
70
|
+
/**
|
|
71
|
+
* Turns an AEF compatibility score into a status.
|
|
72
|
+
*
|
|
73
|
+
* The scoring API does not exist yet - the AEF step mapping is still a pending
|
|
74
|
+
* input on the ticket - so when the backend sends no score every contact center
|
|
75
|
+
* falls back to "requires review": the status that offers both destinations and
|
|
76
|
+
* claims nothing about compatibility we have not actually measured.
|
|
77
|
+
*
|
|
78
|
+
* Once the backend returns `compatibilityScore`, the thresholds below take over
|
|
79
|
+
* with no further change here.
|
|
80
|
+
*/
|
|
81
|
+
private resolveCompatibility;
|
|
82
|
+
private asArray;
|
|
83
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CcImportService, never>;
|
|
84
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<CcImportService>;
|
|
85
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
|
|
2
|
+
import { ApexChart, ApexDataLabels, ApexLegend, ApexNonAxisChartSeries, ApexPlotOptions, ApexStates, ApexTooltip } from 'ng-apexcharts';
|
|
3
|
+
import { ContactCenter, ImportPanelSegment } from '../../types/cc-import';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
interface PanelChartOptions {
|
|
6
|
+
series: ApexNonAxisChartSeries;
|
|
7
|
+
chart: ApexChart;
|
|
8
|
+
labels: string[];
|
|
9
|
+
colors: string[];
|
|
10
|
+
legend: ApexLegend;
|
|
11
|
+
plotOptions: ApexPlotOptions;
|
|
12
|
+
dataLabels: ApexDataLabels;
|
|
13
|
+
tooltip: ApexTooltip;
|
|
14
|
+
states: ApexStates;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* "Import Contact center" panel: how many UCCX contact centers were detected, how many
|
|
18
|
+
* have been imported, and an Import button that asks the host to open the import wizard.
|
|
19
|
+
*/
|
|
20
|
+
export declare class ImportContactCenterPanelComponent implements OnInit, OnChanges, OnDestroy {
|
|
21
|
+
customerId: number;
|
|
22
|
+
host: string;
|
|
23
|
+
/** Base URL of the dcp host, which serves the UCCX application list. */
|
|
24
|
+
dcpHost: string;
|
|
25
|
+
token: string;
|
|
26
|
+
/** Serve mock data instead of calling the UCCX migration API. */
|
|
27
|
+
useMockData: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Asked for the import wizard, carrying the contact centers already loaded here so
|
|
30
|
+
* the wizard opens without refetching them. The host renders
|
|
31
|
+
* `cc-import-contact-center-wizard` as a page in response.
|
|
32
|
+
*/
|
|
33
|
+
importRequested: EventEmitter<ContactCenter[]>;
|
|
34
|
+
private readonly ccImportService;
|
|
35
|
+
private subscription?;
|
|
36
|
+
readonly title = "Import Contact center";
|
|
37
|
+
readonly tooltip = "Contact centers detected in the connected UCCX environment, and where each one can migrate to.";
|
|
38
|
+
segments: ImportPanelSegment[];
|
|
39
|
+
chartOptions: PanelChartOptions;
|
|
40
|
+
total: number;
|
|
41
|
+
loading: boolean;
|
|
42
|
+
error: boolean;
|
|
43
|
+
private contactCenters;
|
|
44
|
+
ngOnInit(): void;
|
|
45
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
46
|
+
ngOnDestroy(): void;
|
|
47
|
+
onImport(): void;
|
|
48
|
+
/** Call after an import has run so the donut picks up the new counts. */
|
|
49
|
+
refresh(): void;
|
|
50
|
+
private load;
|
|
51
|
+
private buildViewModel;
|
|
52
|
+
private buildChartOptions;
|
|
53
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ImportContactCenterPanelComponent, never>;
|
|
54
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ImportContactCenterPanelComponent, "cc-import-contact-center-panel", never, { "customerId": "customerId"; "host": "host"; "dcpHost": "dcpHost"; "token": "token"; "useMockData": "useMockData"; }, { "importRequested": "importRequested"; }, never, never, false, never>;
|
|
55
|
+
}
|
|
56
|
+
export {};
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
|
|
2
|
+
import { StepperSelectionEvent } from '@angular/cdk/stepper';
|
|
3
|
+
import { MatStepper } from '@angular/material/stepper';
|
|
4
|
+
import { ContactCenter, ContactCenterEntityGroup, ImportResult } from '../../types/cc-import';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
/**
|
|
7
|
+
* Full-page "Import contact center" wizard: pick a UCCX contact center, review the
|
|
8
|
+
* entities Tuki will create for it, then start the import.
|
|
9
|
+
*
|
|
10
|
+
* Rendered as a page by the host app (like `tk-user-creation-wizard`), not as a dialog -
|
|
11
|
+
* the host swaps it in when the panel's Import button is pressed and swaps it back out
|
|
12
|
+
* on `cancel` / `imported`.
|
|
13
|
+
*/
|
|
14
|
+
export declare class ImportContactCenterWizardComponent implements OnInit, OnChanges, OnDestroy {
|
|
15
|
+
title: string;
|
|
16
|
+
customerId: number;
|
|
17
|
+
host: string;
|
|
18
|
+
/** Base URL of the dcp host, which serves the UCCX application list. */
|
|
19
|
+
dcpHost: string;
|
|
20
|
+
token: string;
|
|
21
|
+
/** Serve mock data instead of calling the UCCX migration API. */
|
|
22
|
+
useMockData: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Contact centers the caller has already loaded (the panel has them), so the wizard
|
|
25
|
+
* opens without a second round trip. Left unset, the wizard fetches them itself.
|
|
26
|
+
*/
|
|
27
|
+
contactCenters: ContactCenter[] | null;
|
|
28
|
+
cancel: EventEmitter<void>;
|
|
29
|
+
imported: EventEmitter<ImportResult>;
|
|
30
|
+
private readonly ccImportService;
|
|
31
|
+
private subscriptions;
|
|
32
|
+
readonly customerAssistNotice = "This contact center may also be supported by Customer Assist. Check compatibility before continuing.";
|
|
33
|
+
readonly customerAssistMarkerTooltip = "May also be supported by Customer Assist.";
|
|
34
|
+
selectedIndex: number;
|
|
35
|
+
/** Contact centers awaiting review - the ones there is something to import. */
|
|
36
|
+
options: ContactCenter[];
|
|
37
|
+
/** `options` narrowed by the picker's search box. */
|
|
38
|
+
filteredOptions: ContactCenter[];
|
|
39
|
+
searchTerm: string;
|
|
40
|
+
selected: ContactCenter | null;
|
|
41
|
+
noticeDismissed: boolean;
|
|
42
|
+
loading: boolean;
|
|
43
|
+
error: boolean;
|
|
44
|
+
entityGroups: ContactCenterEntityGroup[];
|
|
45
|
+
/** Which entity group the Overview step's tab bar is showing. */
|
|
46
|
+
activeGroupIndex: number;
|
|
47
|
+
entitiesLoading: boolean;
|
|
48
|
+
entitiesError: boolean;
|
|
49
|
+
importing: boolean;
|
|
50
|
+
importError: boolean;
|
|
51
|
+
ngOnInit(): void;
|
|
52
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
53
|
+
ngOnDestroy(): void;
|
|
54
|
+
get canGoNext(): boolean;
|
|
55
|
+
/** The Customer Assist advisory, until the user dismisses it or picks something else. */
|
|
56
|
+
get showCustomerAssistNotice(): boolean;
|
|
57
|
+
get canImport(): boolean;
|
|
58
|
+
onCancel(): void;
|
|
59
|
+
onSelect(applicationId: string): void;
|
|
60
|
+
get activeGroup(): ContactCenterEntityGroup | undefined;
|
|
61
|
+
selectGroup(index: number): void;
|
|
62
|
+
dismissNotice(): void;
|
|
63
|
+
onSearch(event: Event): void;
|
|
64
|
+
/** Resets the search box each time the picker's panel is closed. */
|
|
65
|
+
onPanelToggle(opened: boolean): void;
|
|
66
|
+
onStepSelectionChange(event: StepperSelectionEvent): void;
|
|
67
|
+
onNext(stepper: MatStepper): void;
|
|
68
|
+
onPrevious(stepper: MatStepper): void;
|
|
69
|
+
runImport(): void;
|
|
70
|
+
private stepIdAt;
|
|
71
|
+
private load;
|
|
72
|
+
private setOptions;
|
|
73
|
+
private filter;
|
|
74
|
+
private loadEntities;
|
|
75
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ImportContactCenterWizardComponent, never>;
|
|
76
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ImportContactCenterWizardComponent, "cc-import-contact-center-wizard", never, { "title": "title"; "customerId": "customerId"; "host": "host"; "dcpHost": "dcpHost"; "token": "token"; "useMockData": "useMockData"; "contactCenters": "contactCenters"; }, { "cancel": "cancel"; "imported": "imported"; }, never, never, false, never>;
|
|
77
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { ImportPanelSlice } from '../types/cc-import';
|
|
2
|
+
export declare const CHART_COLORS: {
|
|
3
|
+
readonly customerAssist: "#177A5C";
|
|
4
|
+
readonly webexContactCenter: "#D0D0D0";
|
|
5
|
+
readonly requiresReview: "#1268E3";
|
|
6
|
+
};
|
|
7
|
+
/** Compatibility score thresholds, per the ticket's scoring table. */
|
|
8
|
+
export declare const COMPATIBILITY_THRESHOLDS: {
|
|
9
|
+
/** 80-100 - migrates to Customer Assist with no functional loss. */
|
|
10
|
+
readonly migratable: 80;
|
|
11
|
+
/** 60-79 - migrates to Customer Assist, minor unsupported steps dropped. */
|
|
12
|
+
readonly requiresReview: 60;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Slices of the panel's pie chart, in order: the recommended destination for every
|
|
16
|
+
* contact center detected in the connected UCCX environment.
|
|
17
|
+
*
|
|
18
|
+
* The panel is slice-driven, so re-cutting the chart when the design changes means
|
|
19
|
+
* editing this array - no component change.
|
|
20
|
+
*/
|
|
21
|
+
export declare const IMPORT_PANEL_SLICES: ImportPanelSlice[];
|
|
22
|
+
/**
|
|
23
|
+
* How UCCX entity types roll up into the groups the Overview step shows, in display
|
|
24
|
+
* order. Types not listed here get a group of their own under their raw type name,
|
|
25
|
+
* so nothing the backend returns is silently dropped.
|
|
26
|
+
*/
|
|
27
|
+
export declare const OVERVIEW_ENTITY_GROUPS: {
|
|
28
|
+
label: string;
|
|
29
|
+
types: string[];
|
|
30
|
+
}[];
|
|
31
|
+
export declare const IMPORT_PANEL_TITLE = "Import Contact center";
|
|
32
|
+
export declare const IMPORT_PANEL_TOOLTIP = "Contact centers detected in the connected UCCX environment, and where each one can migrate to.";
|
|
33
|
+
export declare const IMPORT_WIZARD_TITLE = "Contact Center";
|
|
34
|
+
/** Shown once a "requires review" contact center is picked. Dismissible. */
|
|
35
|
+
export declare const CUSTOMER_ASSIST_NOTICE = "This contact center may also be supported by Customer Assist. Check compatibility before continuing.";
|
|
36
|
+
/** Tooltip on the marker the picker puts next to those same contact centers. */
|
|
37
|
+
export declare const CUSTOMER_ASSIST_MARKER_TOOLTIP = "May also be supported by Customer Assist.";
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { ContactCenter, ContactCenterEntities } from '../types/cc-import';
|
|
2
|
+
/** 100 contact centers: 70 migratable, 20 unsupported, 10 still to be imported. */
|
|
3
|
+
export declare function mockContactCenters(): ContactCenter[];
|
|
4
|
+
export declare function mockContactCenterEntities(contactCenter: ContactCenter): ContactCenterEntities;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How well a contact center's AEF script maps onto Customer Assist, from the
|
|
3
|
+
* compatibility score: <60 unsupported, 60-79 requires review, 80-100 migratable.
|
|
4
|
+
*
|
|
5
|
+
* `null` means the backend did not supply a score. The AEF scoring API does not
|
|
6
|
+
* exist yet (the scoring mapping document is still a pending input on the ticket),
|
|
7
|
+
* so today this is always filled in locally - see `CcImportService`.
|
|
8
|
+
*/
|
|
9
|
+
export type ContactCenterCompatibilityStatus = 'migratable' | 'requires-review' | 'unsupported';
|
|
10
|
+
/** Whether Tuki has already imported this contact center. Derived from real data. */
|
|
11
|
+
export type ContactCenterMigrationState = 'migrated' | 'not-migrated';
|
|
12
|
+
/** One UCCX application (contact center) that Tuki can import. */
|
|
13
|
+
export interface ContactCenter {
|
|
14
|
+
/**
|
|
15
|
+
* Identity of the contact center. UCCX has no application id of its own - the
|
|
16
|
+
* application *name* is the key every backend endpoint filters on - so this
|
|
17
|
+
* carries the name for real data.
|
|
18
|
+
*/
|
|
19
|
+
applicationId: string;
|
|
20
|
+
applicationName: string;
|
|
21
|
+
/** AEF file backing the application, e.g. "Operations_AA_Queue_Fixed.aef". */
|
|
22
|
+
scriptName: string;
|
|
23
|
+
/** The UCCX server it was collected from, needed by the per-application endpoints. */
|
|
24
|
+
uccxIp?: string;
|
|
25
|
+
compatibilityStatus: ContactCenterCompatibilityStatus;
|
|
26
|
+
/** The 0-100 score behind `compatibilityStatus`, when the backend supplied one. */
|
|
27
|
+
compatibilityScore?: number;
|
|
28
|
+
migrationState: ContactCenterMigrationState;
|
|
29
|
+
/**
|
|
30
|
+
* Advisory flag: a "requires review" contact center can go to Customer Assist as
|
|
31
|
+
* well as to Webex Contact Center. Surfaced as a marker in the picker and a notice
|
|
32
|
+
* once selected - it does not block the import.
|
|
33
|
+
*/
|
|
34
|
+
customerAssistCapable?: boolean;
|
|
35
|
+
}
|
|
36
|
+
/** One row of the import "Overview" step, e.g. { label: 'Queues', items: ['Sales_Queue'] }. */
|
|
37
|
+
export interface ContactCenterEntityGroup {
|
|
38
|
+
label: string;
|
|
39
|
+
items: string[];
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Application-centric entity breakdown: everything Tuki will create for this
|
|
43
|
+
* contact center, packaged as a single migration unit.
|
|
44
|
+
*/
|
|
45
|
+
export interface ContactCenterEntities {
|
|
46
|
+
applicationId: string;
|
|
47
|
+
groups: ContactCenterEntityGroup[];
|
|
48
|
+
}
|
|
49
|
+
/** Declarative description of one pie slice / legend row of the panel. */
|
|
50
|
+
export interface ImportPanelSlice {
|
|
51
|
+
label: string;
|
|
52
|
+
color: string;
|
|
53
|
+
tooltip: string;
|
|
54
|
+
/** Which contact centers fall into this slice. */
|
|
55
|
+
match: (contactCenter: ContactCenter) => boolean;
|
|
56
|
+
}
|
|
57
|
+
/** A slice once it has been resolved against real data. */
|
|
58
|
+
export interface ImportPanelSegment {
|
|
59
|
+
label: string;
|
|
60
|
+
color: string;
|
|
61
|
+
tooltip: string;
|
|
62
|
+
count: number;
|
|
63
|
+
percentage: number;
|
|
64
|
+
}
|
|
65
|
+
export interface ImportResult {
|
|
66
|
+
applicationId: string;
|
|
67
|
+
accepted: boolean;
|
|
68
|
+
/**
|
|
69
|
+
* The XLSX migration tracker the backend answers with. Execution and progress
|
|
70
|
+
* tracking are defined in a separate ticket; this is simply what came back.
|
|
71
|
+
*/
|
|
72
|
+
report?: Blob;
|
|
73
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The UCCX migration payloads as the backend returns them, mirroring
|
|
3
|
+
* webex-ops-client's `pages/contact-center/interfaces/uccx-batch.interface.ts`.
|
|
4
|
+
* Only the fields this widget reads are declared.
|
|
5
|
+
*/
|
|
6
|
+
/** The UCCX server a batch/application was collected from. */
|
|
7
|
+
export interface UccxHost {
|
|
8
|
+
id?: number;
|
|
9
|
+
host?: string;
|
|
10
|
+
name?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* One UCCX application, as the dcp application cache returns it. Note this is a
|
|
14
|
+
* different shape from {@link UccxBatch} - webex-ops-client types the same endpoint
|
|
15
|
+
* as `UccxBatch[]` but only ever reads `.name` and `.uccx.host` off it.
|
|
16
|
+
*/
|
|
17
|
+
export interface UccxApplication {
|
|
18
|
+
id: number;
|
|
19
|
+
name: string;
|
|
20
|
+
/** Wrapped by UCCX as `SCRIPT[Foo.aef]`; see `CcImportService.toScriptName`. */
|
|
21
|
+
scriptName?: string | null;
|
|
22
|
+
description?: string;
|
|
23
|
+
type?: string;
|
|
24
|
+
enabled?: boolean;
|
|
25
|
+
/** Present on the payload, null throughout dev2 - see `resolveMigrationState`. */
|
|
26
|
+
migrationStatus?: string | null;
|
|
27
|
+
aefFiles?: string[] | null;
|
|
28
|
+
uccx?: UccxHost;
|
|
29
|
+
}
|
|
30
|
+
/** One migratable UCCX entity: a CSQ, a prompt, an agent, a script, ... */
|
|
31
|
+
export interface UccxItem {
|
|
32
|
+
id: number | null;
|
|
33
|
+
name: string;
|
|
34
|
+
files: string[];
|
|
35
|
+
/** One of {@link UCCX_ITEM_TYPE}. */
|
|
36
|
+
type: string;
|
|
37
|
+
/**
|
|
38
|
+
* The application this entity belongs to - the application-centric link.
|
|
39
|
+
* Populated per entity type by the backend's dependency analysis; on dev2 only
|
|
40
|
+
* Trigger items carry it, everything else is null.
|
|
41
|
+
*/
|
|
42
|
+
applicationName?: string | null;
|
|
43
|
+
batchId?: number;
|
|
44
|
+
sourceUCCXIp: string;
|
|
45
|
+
destination: string;
|
|
46
|
+
customerId: number;
|
|
47
|
+
migrate?: boolean;
|
|
48
|
+
}
|
|
49
|
+
/** The request/response envelope the migrate endpoint expects. */
|
|
50
|
+
export interface UccxItemsWrapper {
|
|
51
|
+
/** Items grouped by batch - the backend takes a list of lists. */
|
|
52
|
+
uccxItemsList: UccxItem[][];
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* A batch groups UCCX entities of one type. A single application is therefore
|
|
56
|
+
* spread across several batches, which is why the entity overview has to fan out.
|
|
57
|
+
*/
|
|
58
|
+
export interface UccxBatch {
|
|
59
|
+
/** A number on the wire, despite webex-ops-client typing it as a string. */
|
|
60
|
+
id: number | string;
|
|
61
|
+
name: string;
|
|
62
|
+
/**
|
|
63
|
+
* Everything below is optional on purpose: the same shape is returned by the
|
|
64
|
+
* batch endpoints and by the dcp application cache, and the latter fills in
|
|
65
|
+
* far fewer fields.
|
|
66
|
+
*/
|
|
67
|
+
type?: string;
|
|
68
|
+
applicationName?: string;
|
|
69
|
+
applicationNames?: string;
|
|
70
|
+
sourceUccxIp?: string;
|
|
71
|
+
size?: number;
|
|
72
|
+
destination?: string;
|
|
73
|
+
customerId?: number;
|
|
74
|
+
aefFiles?: string[];
|
|
75
|
+
uccx?: UccxHost;
|
|
76
|
+
/**
|
|
77
|
+
* Compatibility score for the application's AEF script, 0-100.
|
|
78
|
+
* Not served yet - see `CcImportService.resolveCompatibility`.
|
|
79
|
+
*/
|
|
80
|
+
compatibilityScore?: number;
|
|
81
|
+
}
|
|
82
|
+
/** Per-AEF-script migration state, keyed by `scriptName` + `uccxIp`. */
|
|
83
|
+
export interface CallFlowMigrationStatus {
|
|
84
|
+
id: number;
|
|
85
|
+
scriptName: string;
|
|
86
|
+
/** NEW | EDITING | READY_FOR_MIGRATION | MIGRATED | MIGRATION_FAILED | CONVERTING */
|
|
87
|
+
status: string;
|
|
88
|
+
type: string;
|
|
89
|
+
uccxIp: string;
|
|
90
|
+
customerId: number;
|
|
91
|
+
}
|
|
92
|
+
/** The `type` values a {@link UccxItem} can carry. */
|
|
93
|
+
export declare const UCCX_ITEM_TYPE: {
|
|
94
|
+
readonly RESOURCE_GROUP: "Resource Group";
|
|
95
|
+
readonly TRIGGER: "Trigger";
|
|
96
|
+
readonly SCRIPT: "Script";
|
|
97
|
+
readonly APPLICATION: "Application";
|
|
98
|
+
readonly CSQ: "CSQ";
|
|
99
|
+
readonly DOCUMENT: "Document";
|
|
100
|
+
readonly PHONE_BOOK: "Phone Book";
|
|
101
|
+
readonly PROMPT: "Prompt";
|
|
102
|
+
readonly REASON_CODE: "Reason Code";
|
|
103
|
+
readonly RESOURCE: "Resource";
|
|
104
|
+
readonly SKILL: "Skill";
|
|
105
|
+
readonly TEAM: "Team";
|
|
106
|
+
readonly WRAP_UP_CODE: "Wrap Up Code";
|
|
107
|
+
};
|
|
108
|
+
/** The only call-flow state that counts as imported. */
|
|
109
|
+
export declare const CALL_FLOW_MIGRATED = "MIGRATED";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as i0 from "@angular/core";
|
|
2
2
|
import * as i1 from "./widgets/licences-requirement/licences-requirement.component";
|
|
3
3
|
import * as i2 from "./widgets/summary-grid/summary-grid.component";
|
|
4
|
-
import * as i3 from "
|
|
5
|
-
import * as i4 from "
|
|
4
|
+
import * as i3 from "@angular/common";
|
|
5
|
+
import * as i4 from "../shared/shared.module";
|
|
6
6
|
import * as i5 from "@angular/common/http";
|
|
7
7
|
import * as i6 from "ng-apexcharts";
|
|
8
8
|
import * as i7 from "@angular/material/table";
|
|
@@ -14,6 +14,6 @@ import * as i12 from "@angular/material/core";
|
|
|
14
14
|
import * as i13 from "@angular/material/paginator";
|
|
15
15
|
export declare class CcReadinessModule {
|
|
16
16
|
static ɵfac: i0.ɵɵFactoryDeclaration<CcReadinessModule, never>;
|
|
17
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<CcReadinessModule, [typeof i1.LicencesRequirementComponent, typeof i2.SummaryGridComponent, typeof i3.
|
|
17
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<CcReadinessModule, [typeof i1.LicencesRequirementComponent, typeof i2.SummaryGridComponent], [typeof i3.CommonModule, typeof i4.SharedModule, typeof i5.HttpClientModule, typeof i6.NgApexchartsModule, typeof i7.MatTableModule, typeof i8.MatButtonModule, typeof i9.MatCheckboxModule, typeof i10.MatSelectModule, typeof i11.MatProgressSpinnerModule, typeof i12.MatOptionModule, typeof i13.MatPaginatorModule, typeof i10.MatSelectModule], [typeof i1.LicencesRequirementComponent, typeof i2.SummaryGridComponent]>;
|
|
18
18
|
static ɵinj: i0.ɵɵInjectorDeclaration<CcReadinessModule>;
|
|
19
19
|
}
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
export * from './cc-readiness/cc-readiness.module';
|
|
2
2
|
export * from './cc-script-editor/cc-script-editor.module';
|
|
3
|
+
export * from './cc-import/cc-import.module';
|
|
3
4
|
export * from './cc-readiness/widgets/summary-grid/summary-grid.component';
|
|
4
5
|
export * from './cc-readiness/widgets/licences-requirement/licences-requirement.component';
|
|
5
6
|
export * from './cc-script-editor/cc-script-editor.component';
|
|
7
|
+
export * from './cc-import/components/import-contact-center-panel/import-contact-center-panel.component';
|
|
8
|
+
export * from './cc-import/components/import-contact-center-wizard/import-contact-center-wizard.component';
|
|
9
|
+
export * from './cc-import/cc-import.service';
|
|
10
|
+
export * from './cc-import/types/cc-import';
|
|
11
|
+
export * from './cc-import/types/uccx';
|
|
12
|
+
export * from './cc-import/constants/cc-import.constants';
|
|
13
|
+
export * from './cc-import/components/import-contact-center-wizard/import-contact-center-wizard.types';
|
|
@@ -3,4 +3,29 @@ export declare const API: {
|
|
|
3
3
|
UCCX_SERVER_ENTITY_STATS: (customerId: number) => string;
|
|
4
4
|
LICENSE_USAGE_SUMMARY: (customerId: number) => string;
|
|
5
5
|
};
|
|
6
|
+
/**
|
|
7
|
+
* The application-centric UCCX migration endpoints, as used by webex-ops-client
|
|
8
|
+
* (`ContactCenterService` / `constants.json`). There is no dedicated
|
|
9
|
+
* "contact center" API - a contact center *is* a UCCX application, and its
|
|
10
|
+
* entities are reached through the e2emigration batches that carry it.
|
|
11
|
+
*/
|
|
12
|
+
UCCX: {
|
|
13
|
+
/** Every UCCX application known for the customer. Served by the **dcp** host. */
|
|
14
|
+
APPLICATION_NAMES: (customerId: number) => string;
|
|
15
|
+
/** All UCCX batches for the customer, one per entity type. */
|
|
16
|
+
BATCHES: (customerId: number) => string;
|
|
17
|
+
/**
|
|
18
|
+
* The entities of one batch.
|
|
19
|
+
*
|
|
20
|
+
* It also takes an `applicationName` param, but on dev2 that filter answers
|
|
21
|
+
* `[]` for every application - including ones whose items *do* carry a
|
|
22
|
+
* matching `applicationName` - so the widget reads the batch unfiltered and
|
|
23
|
+
* narrows on the item field itself.
|
|
24
|
+
*/
|
|
25
|
+
BATCH_ITEMS: (customerId: number, batchId: string | number) => string;
|
|
26
|
+
/** Per-AEF-script migration state (NEW / MIGRATED / MIGRATION_FAILED / ...). */
|
|
27
|
+
CALL_FLOW_MIGRATION_STATUSES: (customerId: number) => string;
|
|
28
|
+
/** Runs the UCCX -> Webex Contact Center migration. Responds with an XLSX tracker. */
|
|
29
|
+
MIGRATE: (customerId: number) => string;
|
|
30
|
+
};
|
|
6
31
|
};
|
|
@@ -7,7 +7,9 @@ export declare class APIService {
|
|
|
7
7
|
apiUrl: string;
|
|
8
8
|
constructor(httpClient: HttpClient);
|
|
9
9
|
fetch(url: string, params?: any, cache?: boolean): Observable<any>;
|
|
10
|
-
post(url: string, body: any, params?: {}
|
|
10
|
+
post(url: string, body: any, params?: {}, options?: {
|
|
11
|
+
responseType?: 'json' | 'blob';
|
|
12
|
+
}): Observable<any>;
|
|
11
13
|
postExtended(url: string, body?: null, params?: {}, headers?: {}): Observable<import("@angular/common/http").HttpResponse<Object>>;
|
|
12
14
|
put(url: string, body?: null, params?: {}): Observable<Object>;
|
|
13
15
|
delete(url: string, params?: {}): Observable<Object>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
/**
|
|
3
|
+
* Standard contact-center panel chrome. Content goes into the `card-content` slot;
|
|
4
|
+
* `card-title-adornment` takes a small element rendered next to the title (info icon,
|
|
5
|
+
* badge).
|
|
6
|
+
*/
|
|
7
|
+
export declare class CardComponent {
|
|
8
|
+
title: string;
|
|
9
|
+
/** Tightens the padding and inner spacing for compact panels. */
|
|
10
|
+
dense: boolean;
|
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CardComponent, never>;
|
|
12
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CardComponent, "tk-card", never, { "title": "title"; "dense": "dense"; }, {}, never, ["card-title-adornment", "card-content"], false, never>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { APIService } from './api.service';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Same contract as {@link APIService}, pointed at the **dcp** host instead of the
|
|
5
|
+
* main API host. A handful of UCCX endpoints (application names, file downloads,
|
|
6
|
+
* dependency analysis) are only served there - webex-ops-client does the same thing
|
|
7
|
+
* with its `ContactCenterService.customUrl`.
|
|
8
|
+
*
|
|
9
|
+
* Registered separately from `APIService` so each keeps its own `apiUrl`/`token`.
|
|
10
|
+
*/
|
|
11
|
+
export declare class DcpApiService extends APIService {
|
|
12
|
+
apiUrl: string;
|
|
13
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DcpApiService, never>;
|
|
14
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<DcpApiService>;
|
|
15
|
+
}
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
import * as i0 from "@angular/core";
|
|
2
|
-
import * as i1 from "
|
|
3
|
-
import * as i2 from "
|
|
4
|
-
import * as i3 from "
|
|
5
|
-
import * as i4 from "
|
|
2
|
+
import * as i1 from "./components/card/card.component";
|
|
3
|
+
import * as i2 from "@angular/common";
|
|
4
|
+
import * as i3 from "./material.module";
|
|
5
|
+
import * as i4 from "ng-apexcharts";
|
|
6
|
+
import * as i5 from "@angular/common/http";
|
|
7
|
+
/**
|
|
8
|
+
* Presentational building blocks shared by the contact-center widgets.
|
|
9
|
+
* Widget modules import this to pick up the standard card chrome plus the
|
|
10
|
+
* Material/Apex modules they all need.
|
|
11
|
+
*/
|
|
6
12
|
export declare class SharedModule {
|
|
7
13
|
static ɵfac: i0.ɵɵFactoryDeclaration<SharedModule, never>;
|
|
8
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<SharedModule,
|
|
14
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<SharedModule, [typeof i1.CardComponent], [typeof i2.CommonModule, typeof i3.MaterialModule, typeof i4.NgApexchartsModule, typeof i5.HttpClientModule], [typeof i3.MaterialModule, typeof i1.CardComponent]>;
|
|
9
15
|
static ɵinj: i0.ɵɵInjectorDeclaration<SharedModule>;
|
|
10
16
|
}
|