@tuki-io/tuki-widgets 0.0.32 → 0.0.35
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/esm2020/lib/widgets.component.mjs +22 -22
- package/esm2020/lib/widgets.module.mjs +21 -21
- package/esm2020/lib/widgets.service.mjs +14 -14
- package/esm2020/public-api.mjs +7 -7
- package/esm2020/tuki-io-tuki-widgets.mjs +4 -4
- package/esm2020/user-device-manage/public-api.mjs +9 -9
- package/esm2020/user-device-manage/src/app.constants.mjs +95 -95
- package/esm2020/user-device-manage/src/classes/device.mjs +85 -85
- package/esm2020/user-device-manage/src/classes/line-association-interface.mjs +2 -2
- package/esm2020/user-device-manage/src/classes/line-association.mjs +121 -121
- package/esm2020/user-device-manage/src/classes/line-call-info-display.mjs +10 -10
- package/esm2020/user-device-manage/src/classes/line-directory.mjs +27 -27
- package/esm2020/user-device-manage/src/classes/line.mjs +18 -18
- package/esm2020/user-device-manage/src/classes/notification.mjs +32 -32
- package/esm2020/user-device-manage/src/classes/recording-options.mjs +7 -7
- package/esm2020/user-device-manage/src/classes/simplified-user.mjs +111 -111
- package/esm2020/user-device-manage/src/classes/site-defaults.mjs +21 -21
- package/esm2020/user-device-manage/src/classes/translation-pattern.mjs +32 -32
- package/esm2020/user-device-manage/src/classes/types.mjs +24 -24
- package/esm2020/user-device-manage/src/common-functions.mjs +19 -19
- package/esm2020/user-device-manage/src/confirm-dialog/info-dialog.component.mjs +34 -34
- package/esm2020/user-device-manage/src/device-associated-line/associated-line-row/associated-line-row.component.mjs +31 -31
- package/esm2020/user-device-manage/src/device-associated-line/device-associated-line-details-box/device-associated-line-details-box.component.mjs +16 -16
- package/esm2020/user-device-manage/src/device-associated-line/device-associated-line-extension/device-associated-line-extension.component.mjs +64 -64
- package/esm2020/user-device-manage/src/device-associated-line/device-associated-line.component.mjs +179 -179
- package/esm2020/user-device-manage/src/device-list/device-list.component.mjs +24 -24
- package/esm2020/user-device-manage/src/device-manage-widget.component.mjs +335 -335
- package/esm2020/user-device-manage/src/environments/environment.mjs +11 -11
- package/esm2020/user-device-manage/src/interseptors/auth.interceptor.mjs +36 -36
- package/esm2020/user-device-manage/src/lazy-loading-select/lazy-loading-select.component.mjs +74 -74
- package/esm2020/user-device-manage/src/material.module.mjs +192 -192
- package/esm2020/user-device-manage/src/notifications/notification.component.mjs +35 -35
- package/esm2020/user-device-manage/src/services/api.service.mjs +79 -79
- package/esm2020/user-device-manage/src/services/device.service.mjs +83 -83
- package/esm2020/user-device-manage/src/services/dns.service.mjs +104 -104
- package/esm2020/user-device-manage/src/services/line.service.mjs +76 -76
- package/esm2020/user-device-manage/src/services/notification.service.mjs +62 -62
- package/esm2020/user-device-manage/src/services/removeKynFromIBM.service.mjs +25 -25
- package/esm2020/user-device-manage/src/services/site-settings.service.mjs +70 -70
- package/esm2020/user-device-manage/src/services/sorting-utils.service.mjs +197 -197
- package/esm2020/user-device-manage/src/services/user.service.mjs +243 -243
- package/esm2020/user-device-manage/src/services/utils.service.mjs +87 -87
- package/esm2020/user-device-manage/src/services/validation.service.mjs +760 -760
- package/esm2020/user-device-manage/src/user-device-manage.module.mjs +107 -107
- package/esm2020/user-device-manage/src/utils/app-loader/app-loader.mjs +14 -14
- package/esm2020/user-device-manage/tuki-io-tuki-widgets-user-device-manage.mjs +4 -4
- package/esm2020/user-manage/public-api.mjs +7 -7
- package/esm2020/user-manage/src/app.constants.mjs +50 -50
- package/esm2020/user-manage/src/classes/device.mjs +37 -37
- package/esm2020/user-manage/src/classes/line-association-interface.mjs +2 -2
- package/esm2020/user-manage/src/classes/line-association.mjs +110 -110
- package/esm2020/user-manage/src/classes/line-call-info-display.mjs +10 -10
- package/esm2020/user-manage/src/classes/line-directory.mjs +27 -27
- package/esm2020/user-manage/src/classes/line.mjs +18 -18
- package/esm2020/user-manage/src/classes/notification.mjs +32 -32
- package/esm2020/user-manage/src/classes/pagination.mjs +8 -8
- package/esm2020/user-manage/src/classes/recording-options.mjs +7 -7
- package/esm2020/user-manage/src/classes/simplified-user.mjs +109 -109
- package/esm2020/user-manage/src/classes/table-data.mjs +2 -2
- package/esm2020/user-manage/src/classes/translation-pattern.mjs +32 -32
- package/esm2020/user-manage/src/classes/user-list.mjs +10 -10
- package/esm2020/user-manage/src/common-functions.mjs +19 -19
- package/esm2020/user-manage/src/device-list/device-list.component.mjs +24 -24
- package/esm2020/user-manage/src/environments/environment.mjs +11 -11
- package/esm2020/user-manage/src/interseptors/auth.interceptor.mjs +36 -36
- package/esm2020/user-manage/src/lazy-loading-select/lazy-loading-select.component.mjs +74 -74
- package/esm2020/user-manage/src/material.module.mjs +188 -188
- package/esm2020/user-manage/src/notifications/notification.component.mjs +35 -35
- package/esm2020/user-manage/src/removeKynFromIBM.service.mjs +25 -25
- package/esm2020/user-manage/src/services/api.service.mjs +79 -79
- package/esm2020/user-manage/src/services/dns.service.mjs +110 -110
- package/esm2020/user-manage/src/services/line.service.mjs +34 -34
- package/esm2020/user-manage/src/services/notification.service.mjs +62 -62
- package/esm2020/user-manage/src/services/removeKynFromIBM.service.mjs +25 -25
- package/esm2020/user-manage/src/services/site-settings.service.mjs +36 -36
- package/esm2020/user-manage/src/services/sorting-utils.service.mjs +197 -197
- package/esm2020/user-manage/src/services/user.service.mjs +207 -207
- package/esm2020/user-manage/src/services/users-search.service.mjs +49 -49
- package/esm2020/user-manage/src/services/utils.service.mjs +73 -73
- package/esm2020/user-manage/src/user-calling/user-calling-extension/user-calling-extension.component.mjs +65 -65
- package/esm2020/user-manage/src/user-calling/user-calling.component.mjs +78 -78
- package/esm2020/user-manage/src/user-info/user-info.component.mjs +20 -20
- package/esm2020/user-manage/src/user-manage-widget.component.mjs +208 -208
- package/esm2020/user-manage/src/user-manage.module.mjs +99 -99
- package/esm2020/user-manage/src/utils/app-loader/app-loader.mjs +14 -14
- package/esm2020/user-manage/src/utils/pagination/pagination.component.mjs +43 -43
- package/esm2020/user-manage/tuki-io-tuki-widgets-user-manage.mjs +4 -4
- package/esm2020/users-list/public-api.mjs +9 -9
- package/esm2020/users-list/src/app.constants.mjs +50 -50
- package/esm2020/users-list/src/classes/device.mjs +7 -7
- package/esm2020/users-list/src/classes/line.mjs +18 -18
- package/esm2020/users-list/src/classes/notification.mjs +31 -31
- package/esm2020/users-list/src/classes/pagination.mjs +8 -8
- package/esm2020/users-list/src/classes/simlified-user.mjs +50 -50
- package/esm2020/users-list/src/classes/table-data.mjs +2 -2
- package/esm2020/users-list/src/classes/user-list.mjs +13 -13
- package/esm2020/users-list/src/material.module.mjs +209 -209
- package/esm2020/users-list/src/move-user-wizard/move-user-stepper/move-user-stepper.component.mjs +95 -95
- package/esm2020/users-list/src/move-user-wizard/move-user-wizard.component.mjs +35 -35
- package/esm2020/users-list/src/services/api-webex.service.mjs +17 -17
- package/esm2020/users-list/src/services/api.service.mjs +78 -78
- package/esm2020/users-list/src/services/dns.service.mjs +120 -120
- package/esm2020/users-list/src/services/events-communication.service.mjs +14 -14
- package/esm2020/users-list/src/services/notification.service.mjs +62 -62
- package/esm2020/users-list/src/services/removeKynFromIBM.service.mjs +25 -25
- package/esm2020/users-list/src/services/user.service.mjs +150 -150
- package/esm2020/users-list/src/services/users-search.service.mjs +120 -120
- package/esm2020/users-list/src/user-list-confirm-dialog/user-list-confirm-dialog.component.mjs +34 -34
- package/esm2020/users-list/src/users-list.component.mjs +260 -259
- package/esm2020/users-list/src/users-list.module.mjs +80 -80
- package/esm2020/users-list/src/utils/app-loader/app-loader.mjs +14 -14
- package/esm2020/users-list/src/utils/common-functions.mjs +19 -19
- package/esm2020/users-list/src/utils/pagination/pagination.component.mjs +43 -43
- package/esm2020/users-list/src/utils/utils.service.mjs +73 -73
- package/esm2020/users-list/tuki-io-tuki-widgets-users-list.mjs +4 -4
- package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs +3277 -3277
- package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
- package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs +2004 -2004
- package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
- package/fesm2015/tuki-io-tuki-widgets-users-list.mjs +1429 -1428
- package/fesm2015/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
- package/fesm2015/tuki-io-tuki-widgets.mjs +48 -48
- package/fesm2015/tuki-io-tuki-widgets.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs +3239 -3239
- package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs +1987 -1987
- package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-users-list.mjs +1418 -1417
- package/fesm2020/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets.mjs +48 -48
- package/fesm2020/tuki-io-tuki-widgets.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/widgets.component.d.ts +8 -8
- package/lib/widgets.module.d.ts +7 -7
- package/lib/widgets.service.d.ts +6 -6
- package/package.json +1 -1
- package/public-api.d.ts +3 -3
- package/user-device-manage/index.d.ts +5 -5
- package/user-device-manage/public-api.d.ts +8 -8
- package/user-device-manage/src/app.constants.d.ts +74 -74
- package/user-device-manage/src/classes/device.d.ts +233 -233
- package/user-device-manage/src/classes/line-association-interface.d.ts +45 -45
- package/user-device-manage/src/classes/line-association.d.ts +62 -62
- package/user-device-manage/src/classes/line-call-info-display.d.ts +11 -11
- package/user-device-manage/src/classes/line-directory.d.ts +15 -15
- package/user-device-manage/src/classes/line.d.ts +140 -140
- package/user-device-manage/src/classes/notification.d.ts +18 -18
- package/user-device-manage/src/classes/recording-options.d.ts +5 -5
- package/user-device-manage/src/classes/simplified-user.d.ts +52 -52
- package/user-device-manage/src/classes/site-defaults.d.ts +146 -146
- package/user-device-manage/src/classes/translation-pattern.d.ts +19 -19
- package/user-device-manage/src/classes/types.d.ts +19 -19
- package/user-device-manage/src/common-functions.d.ts +1 -1
- package/user-device-manage/src/confirm-dialog/info-dialog.component.d.ts +20 -20
- package/user-device-manage/src/device-associated-line/associated-line-row/associated-line-row.component.d.ts +15 -15
- package/user-device-manage/src/device-associated-line/device-associated-line-details-box/device-associated-line-details-box.component.d.ts +7 -7
- package/user-device-manage/src/device-associated-line/device-associated-line-extension/device-associated-line-extension.component.d.ts +24 -24
- package/user-device-manage/src/device-associated-line/device-associated-line.component.d.ts +89 -89
- package/user-device-manage/src/device-list/device-list.component.d.ts +11 -11
- package/user-device-manage/src/device-manage-widget.component.d.ts +71 -71
- package/user-device-manage/src/environments/environment.d.ts +9 -9
- package/user-device-manage/src/interseptors/auth.interceptor.d.ts +9 -9
- package/user-device-manage/src/lazy-loading-select/lazy-loading-select.component.d.ts +35 -35
- package/user-device-manage/src/material.module.d.ts +29 -29
- package/user-device-manage/src/notifications/notification.component.d.ts +19 -19
- package/user-device-manage/src/services/api.service.d.ts +20 -20
- package/user-device-manage/src/services/device.service.d.ts +21 -21
- package/user-device-manage/src/services/dns.service.d.ts +14 -14
- package/user-device-manage/src/services/line.service.d.ts +33 -33
- package/user-device-manage/src/services/notification.service.d.ts +18 -18
- package/user-device-manage/src/services/removeKynFromIBM.service.d.ts +8 -8
- package/user-device-manage/src/services/site-settings.service.d.ts +25 -25
- package/user-device-manage/src/services/sorting-utils.service.d.ts +26 -26
- package/user-device-manage/src/services/user.service.d.ts +51 -51
- package/user-device-manage/src/services/utils.service.d.ts +10 -10
- package/user-device-manage/src/services/validation.service.d.ts +165 -165
- package/user-device-manage/src/user-device-manage.module.d.ts +22 -22
- package/user-device-manage/src/utils/app-loader/app-loader.d.ts +6 -6
- package/user-manage/index.d.ts +5 -5
- package/user-manage/public-api.d.ts +6 -6
- package/user-manage/src/app.constants.d.ts +29 -29
- package/user-manage/src/classes/device.d.ts +203 -203
- package/user-manage/src/classes/line-association-interface.d.ts +40 -40
- package/user-manage/src/classes/line-association.d.ts +55 -55
- package/user-manage/src/classes/line-call-info-display.d.ts +11 -11
- package/user-manage/src/classes/line-directory.d.ts +16 -16
- package/user-manage/src/classes/line.d.ts +140 -140
- package/user-manage/src/classes/notification.d.ts +18 -18
- package/user-manage/src/classes/pagination.d.ts +13 -13
- package/user-manage/src/classes/recording-options.d.ts +5 -5
- package/user-manage/src/classes/simplified-user.d.ts +50 -50
- package/user-manage/src/classes/table-data.d.ts +5 -5
- package/user-manage/src/classes/translation-pattern.d.ts +18 -18
- package/user-manage/src/classes/user-list.d.ts +34 -34
- package/user-manage/src/common-functions.d.ts +1 -1
- package/user-manage/src/device-list/device-list.component.d.ts +11 -11
- package/user-manage/src/environments/environment.d.ts +9 -9
- package/user-manage/src/interseptors/auth.interceptor.d.ts +9 -9
- package/user-manage/src/lazy-loading-select/lazy-loading-select.component.d.ts +35 -35
- package/user-manage/src/material.module.d.ts +28 -28
- package/user-manage/src/notifications/notification.component.d.ts +19 -19
- package/user-manage/src/removeKynFromIBM.service.d.ts +8 -8
- package/user-manage/src/services/api.service.d.ts +21 -21
- package/user-manage/src/services/dns.service.d.ts +14 -14
- package/user-manage/src/services/line.service.d.ts +17 -17
- package/user-manage/src/services/notification.service.d.ts +18 -18
- package/user-manage/src/services/removeKynFromIBM.service.d.ts +8 -8
- package/user-manage/src/services/site-settings.service.d.ts +9 -9
- package/user-manage/src/services/sorting-utils.service.d.ts +26 -26
- package/user-manage/src/services/user.service.d.ts +43 -43
- package/user-manage/src/services/users-search.service.d.ts +25 -25
- package/user-manage/src/services/utils.service.d.ts +9 -9
- package/user-manage/src/user-calling/user-calling-extension/user-calling-extension.component.d.ts +24 -24
- package/user-manage/src/user-calling/user-calling.component.d.ts +30 -30
- package/user-manage/src/user-info/user-info.component.d.ts +9 -9
- package/user-manage/src/user-manage-widget.component.d.ts +45 -45
- package/user-manage/src/user-manage.module.d.ts +21 -21
- package/user-manage/src/utils/app-loader/app-loader.d.ts +6 -6
- package/user-manage/src/utils/pagination/pagination.component.d.ts +18 -18
- package/users-list/index.d.ts +5 -5
- package/users-list/public-api.d.ts +8 -8
- package/users-list/src/app.constants.d.ts +32 -32
- package/users-list/src/classes/device.d.ts +224 -224
- package/users-list/src/classes/line.d.ts +140 -140
- package/users-list/src/classes/notification.d.ts +18 -18
- package/users-list/src/classes/pagination.d.ts +13 -13
- package/users-list/src/classes/simlified-user.d.ts +25 -25
- package/users-list/src/classes/table-data.d.ts +5 -5
- package/users-list/src/classes/user-list.d.ts +36 -36
- package/users-list/src/material.module.d.ts +31 -31
- package/users-list/src/move-user-wizard/move-user-stepper/move-user-stepper.component.d.ts +25 -25
- package/users-list/src/move-user-wizard/move-user-wizard.component.d.ts +16 -16
- package/users-list/src/services/api-webex.service.d.ts +8 -8
- package/users-list/src/services/api.service.d.ts +21 -21
- package/users-list/src/services/dns.service.d.ts +18 -18
- package/users-list/src/services/events-communication.service.d.ts +8 -8
- package/users-list/src/services/notification.service.d.ts +18 -18
- package/users-list/src/services/removeKynFromIBM.service.d.ts +8 -8
- package/users-list/src/services/user.service.d.ts +34 -34
- package/users-list/src/services/users-search.service.d.ts +34 -34
- package/users-list/src/user-list-confirm-dialog/user-list-confirm-dialog.component.d.ts +20 -20
- package/users-list/src/users-list.component.d.ts +59 -59
- package/users-list/src/users-list.module.d.ts +16 -16
- package/users-list/src/utils/app-loader/app-loader.d.ts +6 -6
- package/users-list/src/utils/common-functions.d.ts +1 -1
- package/users-list/src/utils/pagination/pagination.component.d.ts +18 -18
- package/users-list/src/utils/utils.service.d.ts +9 -9
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Component, ViewEncapsulation, Inject, Injectable, EventEmitter, Input, Output, NgModule } from '@angular/core';
|
|
3
|
-
import * as i10 from '@angular/material/table';
|
|
3
|
+
import * as i10$1 from '@angular/material/table';
|
|
4
4
|
import { MatTableDataSource, MatTableModule } from '@angular/material/table';
|
|
5
5
|
import * as i1 from '@angular/material/dialog';
|
|
6
6
|
import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
|
|
@@ -15,7 +15,7 @@ import * as i4$1 from '@angular/material/button';
|
|
|
15
15
|
import { MatButtonModule } from '@angular/material/button';
|
|
16
16
|
import * as i3$1 from '@angular/material/progress-spinner';
|
|
17
17
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
18
|
-
import * as i11
|
|
18
|
+
import * as i11 from '@angular/material/menu';
|
|
19
19
|
import { MatMenuModule } from '@angular/material/menu';
|
|
20
20
|
import * as i4 from '@angular/material/core';
|
|
21
21
|
import { MatNativeDateModule } from '@angular/material/core';
|
|
@@ -30,7 +30,9 @@ import * as i7 from '@angular/material/input';
|
|
|
30
30
|
import { MatInputModule } from '@angular/material/input';
|
|
31
31
|
import * as i9 from '@angular/material/stepper';
|
|
32
32
|
import { MatStepperModule } from '@angular/material/stepper';
|
|
33
|
-
import * as
|
|
33
|
+
import * as i10 from '@angular/material/checkbox';
|
|
34
|
+
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
35
|
+
import * as i12 from '@angular/material/radio';
|
|
34
36
|
import { MatRadioModule } from '@angular/material/radio';
|
|
35
37
|
import { BrowserModule } from '@angular/platform-browser';
|
|
36
38
|
import { MatExpansionModule } from '@angular/material/expansion';
|
|
@@ -44,1468 +46,1467 @@ import { DragDropModule } from '@angular/cdk/drag-drop';
|
|
|
44
46
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
45
47
|
import { MatTabsModule } from '@angular/material/tabs';
|
|
46
48
|
import { MatCardModule } from '@angular/material/card';
|
|
47
|
-
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
48
49
|
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
49
50
|
|
|
50
|
-
class UserListConfirmDialogComponent {
|
|
51
|
-
constructor(dialogRef, data) {
|
|
52
|
-
this.dialogRef = dialogRef;
|
|
53
|
-
this.data = data;
|
|
54
|
-
this.confirmButtonText = 'OK';
|
|
55
|
-
this.message = '';
|
|
56
|
-
this.title = '';
|
|
57
|
-
}
|
|
58
|
-
ngOnInit() {
|
|
59
|
-
this.confirmButtonText = this.data.confirmButtonText || '';
|
|
60
|
-
this.message = this.data.message || '';
|
|
61
|
-
this.title = this.data.title || '';
|
|
62
|
-
}
|
|
63
|
-
onClose(val) {
|
|
64
|
-
this.dialogRef.close(val);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
UserListConfirmDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserListConfirmDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
68
|
-
UserListConfirmDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: UserListConfirmDialogComponent, selector: "app-info-dialog", ngImport: i0, template: "<div id=\"info-dialog\" class=\"app-dialog\" aria-labelledby=\"info-dialog-label\" role=\"dialog\">\n <h3 *ngIf=\"title\" class=\"app-dialog-title\">{{title}}</h3>\n <div mat-dialog-content *ngIf=\"message\" class=\"app-dialog-content\">\n <div [innerHTML]=\"message\"></div>\n </div>\n <div mat-dialog-actions class=\"flex-gap-container\">\n <button class=\"app-dialog-button app-dialog-cancel-button\" (click)=\"onClose(false)\">\n Cancel\n </button>\n <button class=\"app-dialog-button app-dialog-confirm-button\" (click)=\"onClose(true)\">\n {{confirmButtonText}}\n </button>\n </div>\n</div>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap\";#info-dialog{min-height:150px;width:400px;box-sizing:border-box;position:relative}#info-dialog .fa{font-size:35px;margin:0 auto 20px;display:block;text-align:center;color:#009fdb;cursor:default}.scroll-content{overflow-y:auto;margin:auto;max-height:150px;width:100%}.app-dialog{font-family:Inter,Inter,sans-serif}.app-dialog .app-dialog-title{text-align:center;font-weight:600;font-size:16px;font-family:Inter,Inter,sans-serif;margin:0 0 24px}.app-dialog .flex-gap-container{gap:16px;position:absolute;right:0;bottom:0;gap:15px;display:flex}.app-dialog .app-dialog-content{color:#000000b3;font-size:14px}.app-dialog-button{height:32px;padding:10px 12px;text-align:center;border-radius:50px;box-shadow:none;line-height:11px;border:none;font-size:14px;font-family:Inter,Inter,sans-serif;cursor:pointer}.app-dialog-cancel-button{border:1px solid rgba(0,0,0,.5);color:#000}.app-dialog-confirm-button{background:#F23933;color:#fff}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
69
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserListConfirmDialogComponent, decorators: [{
|
|
70
|
-
type: Component,
|
|
71
|
-
args: [{ selector: 'app-info-dialog', encapsulation: ViewEncapsulation.None, template: "<div id=\"info-dialog\" class=\"app-dialog\" aria-labelledby=\"info-dialog-label\" role=\"dialog\">\n <h3 *ngIf=\"title\" class=\"app-dialog-title\">{{title}}</h3>\n <div mat-dialog-content *ngIf=\"message\" class=\"app-dialog-content\">\n <div [innerHTML]=\"message\"></div>\n </div>\n <div mat-dialog-actions class=\"flex-gap-container\">\n <button class=\"app-dialog-button app-dialog-cancel-button\" (click)=\"onClose(false)\">\n Cancel\n </button>\n <button class=\"app-dialog-button app-dialog-confirm-button\" (click)=\"onClose(true)\">\n {{confirmButtonText}}\n </button>\n </div>\n</div>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap\";#info-dialog{min-height:150px;width:400px;box-sizing:border-box;position:relative}#info-dialog .fa{font-size:35px;margin:0 auto 20px;display:block;text-align:center;color:#009fdb;cursor:default}.scroll-content{overflow-y:auto;margin:auto;max-height:150px;width:100%}.app-dialog{font-family:Inter,Inter,sans-serif}.app-dialog .app-dialog-title{text-align:center;font-weight:600;font-size:16px;font-family:Inter,Inter,sans-serif;margin:0 0 24px}.app-dialog .flex-gap-container{gap:16px;position:absolute;right:0;bottom:0;gap:15px;display:flex}.app-dialog .app-dialog-content{color:#000000b3;font-size:14px}.app-dialog-button{height:32px;padding:10px 12px;text-align:center;border-radius:50px;box-shadow:none;line-height:11px;border:none;font-size:14px;font-family:Inter,Inter,sans-serif;cursor:pointer}.app-dialog-cancel-button{border:1px solid rgba(0,0,0,.5);color:#000}.app-dialog-confirm-button{background:#F23933;color:#fff}\n"] }]
|
|
72
|
-
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: InfoDialogConfig, decorators: [{
|
|
73
|
-
type: Inject,
|
|
74
|
-
args: [MAT_DIALOG_DATA]
|
|
75
|
-
}] }]; } });
|
|
76
|
-
class InfoDialogConfig {
|
|
51
|
+
class UserListConfirmDialogComponent {
|
|
52
|
+
constructor(dialogRef, data) {
|
|
53
|
+
this.dialogRef = dialogRef;
|
|
54
|
+
this.data = data;
|
|
55
|
+
this.confirmButtonText = 'OK';
|
|
56
|
+
this.message = '';
|
|
57
|
+
this.title = '';
|
|
58
|
+
}
|
|
59
|
+
ngOnInit() {
|
|
60
|
+
this.confirmButtonText = this.data.confirmButtonText || '';
|
|
61
|
+
this.message = this.data.message || '';
|
|
62
|
+
this.title = this.data.title || '';
|
|
63
|
+
}
|
|
64
|
+
onClose(val) {
|
|
65
|
+
this.dialogRef.close(val);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
UserListConfirmDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserListConfirmDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
69
|
+
UserListConfirmDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: UserListConfirmDialogComponent, selector: "app-info-dialog", ngImport: i0, template: "<div id=\"info-dialog\" class=\"app-dialog\" aria-labelledby=\"info-dialog-label\" role=\"dialog\">\r\n <h3 *ngIf=\"title\" class=\"app-dialog-title\">{{title}}</h3>\r\n <div mat-dialog-content *ngIf=\"message\" class=\"app-dialog-content\">\r\n <div [innerHTML]=\"message\"></div>\r\n </div>\r\n <div mat-dialog-actions class=\"flex-gap-container\">\r\n <button class=\"app-dialog-button app-dialog-cancel-button\" (click)=\"onClose(false)\">\r\n Cancel\r\n </button>\r\n <button class=\"app-dialog-button app-dialog-confirm-button\" (click)=\"onClose(true)\">\r\n {{confirmButtonText}}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap\";#info-dialog{min-height:150px;width:400px;box-sizing:border-box;position:relative}#info-dialog .fa{font-size:35px;margin:0 auto 20px;display:block;text-align:center;color:#009fdb;cursor:default}.scroll-content{overflow-y:auto;margin:auto;max-height:150px;width:100%}.app-dialog{font-family:Inter,Inter,sans-serif}.app-dialog .app-dialog-title{text-align:center;font-weight:600;font-size:16px;font-family:Inter,Inter,sans-serif;margin:0 0 24px}.app-dialog .flex-gap-container{gap:16px;position:absolute;right:0;bottom:0;gap:15px;display:flex}.app-dialog .app-dialog-content{color:#000000b3;font-size:14px}.app-dialog-button{height:32px;padding:10px 12px;text-align:center;border-radius:50px;box-shadow:none;line-height:11px;border:none;font-size:14px;font-family:Inter,Inter,sans-serif;cursor:pointer}.app-dialog-cancel-button{border:1px solid rgba(0,0,0,.5);color:#000}.app-dialog-confirm-button{background:#F23933;color:#fff}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserListConfirmDialogComponent, decorators: [{
|
|
71
|
+
type: Component,
|
|
72
|
+
args: [{ selector: 'app-info-dialog', encapsulation: ViewEncapsulation.None, template: "<div id=\"info-dialog\" class=\"app-dialog\" aria-labelledby=\"info-dialog-label\" role=\"dialog\">\r\n <h3 *ngIf=\"title\" class=\"app-dialog-title\">{{title}}</h3>\r\n <div mat-dialog-content *ngIf=\"message\" class=\"app-dialog-content\">\r\n <div [innerHTML]=\"message\"></div>\r\n </div>\r\n <div mat-dialog-actions class=\"flex-gap-container\">\r\n <button class=\"app-dialog-button app-dialog-cancel-button\" (click)=\"onClose(false)\">\r\n Cancel\r\n </button>\r\n <button class=\"app-dialog-button app-dialog-confirm-button\" (click)=\"onClose(true)\">\r\n {{confirmButtonText}}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap\";#info-dialog{min-height:150px;width:400px;box-sizing:border-box;position:relative}#info-dialog .fa{font-size:35px;margin:0 auto 20px;display:block;text-align:center;color:#009fdb;cursor:default}.scroll-content{overflow-y:auto;margin:auto;max-height:150px;width:100%}.app-dialog{font-family:Inter,Inter,sans-serif}.app-dialog .app-dialog-title{text-align:center;font-weight:600;font-size:16px;font-family:Inter,Inter,sans-serif;margin:0 0 24px}.app-dialog .flex-gap-container{gap:16px;position:absolute;right:0;bottom:0;gap:15px;display:flex}.app-dialog .app-dialog-content{color:#000000b3;font-size:14px}.app-dialog-button{height:32px;padding:10px 12px;text-align:center;border-radius:50px;box-shadow:none;line-height:11px;border:none;font-size:14px;font-family:Inter,Inter,sans-serif;cursor:pointer}.app-dialog-cancel-button{border:1px solid rgba(0,0,0,.5);color:#000}.app-dialog-confirm-button{background:#F23933;color:#fff}\n"] }]
|
|
73
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: InfoDialogConfig, decorators: [{
|
|
74
|
+
type: Inject,
|
|
75
|
+
args: [MAT_DIALOG_DATA]
|
|
76
|
+
}] }]; } });
|
|
77
|
+
class InfoDialogConfig {
|
|
77
78
|
}
|
|
78
79
|
|
|
79
|
-
const getSavableData = (model, exclude) => {
|
|
80
|
-
let result = Object.keys(model);
|
|
81
|
-
if (exclude && exclude.length) {
|
|
82
|
-
result = result.filter(key => !exclude.some(item => item === key));
|
|
83
|
-
}
|
|
84
|
-
return result.reduce((result, key) => {
|
|
85
|
-
if (model[key] instanceof Array && model[key].length && model[key][0].getSavableData) {
|
|
86
|
-
result[key] = model[key].map((item) => item.getSavableData());
|
|
87
|
-
}
|
|
88
|
-
else if (model[key] instanceof Object && model[key].getSavableData) {
|
|
89
|
-
result[key] = model[key].getSavableData();
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
result[key] = model[key];
|
|
93
|
-
}
|
|
94
|
-
return result;
|
|
95
|
-
}, {});
|
|
80
|
+
const getSavableData = (model, exclude) => {
|
|
81
|
+
let result = Object.keys(model);
|
|
82
|
+
if (exclude && exclude.length) {
|
|
83
|
+
result = result.filter(key => !exclude.some(item => item === key));
|
|
84
|
+
}
|
|
85
|
+
return result.reduce((result, key) => {
|
|
86
|
+
if (model[key] instanceof Array && model[key].length && model[key][0].getSavableData) {
|
|
87
|
+
result[key] = model[key].map((item) => item.getSavableData());
|
|
88
|
+
}
|
|
89
|
+
else if (model[key] instanceof Object && model[key].getSavableData) {
|
|
90
|
+
result[key] = model[key].getSavableData();
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
result[key] = model[key];
|
|
94
|
+
}
|
|
95
|
+
return result;
|
|
96
|
+
}, {});
|
|
96
97
|
};
|
|
97
98
|
|
|
98
|
-
const API = {
|
|
99
|
-
USER_TOKEN: '/api/provision/:siteId/users/:userId/token',
|
|
100
|
-
UPDATE_USER_FIELDS: '/api/provision/:siteId/userFields/:token',
|
|
101
|
-
PERSIST_USER_CACHE: '/api/provision/:siteId/saveUser/:token',
|
|
102
|
-
USER_BY_ID: '/api/provision/:siteId/users/:userId',
|
|
103
|
-
QUICK_USERS_SEARCH: "/api/search/quickusers",
|
|
104
|
-
DELETE_USER: "/api/search/quickusers",
|
|
105
|
-
MOVE_USER: "/api/migration/webex/singlemigration/features/PERSON",
|
|
106
|
-
AVAILABLE_DN_IN_RANGES: "/api/sites/:siteId/available-dn-in-ranges",
|
|
107
|
-
DELETE_LINE: "/api/provision/:siteId/deleteLine/:pkid/:token",
|
|
108
|
-
DISASSOCIATE_LINE: "/api/provision/:siteId/:deviceName/deleteLineAssociation/:linePkid/:token",
|
|
109
|
-
CHECK_DELETE_LINE: "/api/provision/:siteId/checklinedeletion",
|
|
110
|
-
ASSOCIATE_LINE: "/api/provision/:siteId/:deviceName/createLineAssociation/:token",
|
|
111
|
-
CHECK_DESTINATION_NUMBER: "/api/provision/:siteId/check-dn",
|
|
112
|
-
UPDATE_LINE_FIELDS: "/api/provision/:siteId/lineFields/:pkid/:token",
|
|
113
|
-
UPDATE_DEVICE_FIELDS: "/api/provision/:siteId/deviceFields/:deviceName/:token",
|
|
114
|
-
WEBEX_USERS: "/api/webex/provisioning/customers/:customerId/users",
|
|
115
|
-
MIGRATED_USERS: "/api/search/migratedusers",
|
|
116
|
-
REVERT_WEBEX_USER: "/api/webex/provisioning/customers/:customerId/persons/:webexUUID/removecallinglicense",
|
|
117
|
-
PHONE_NUMBERS: "/api/search/webex/customers/:customerId/locations/:locationId/phonenumbers"
|
|
118
|
-
};
|
|
119
|
-
const REGEX_PATTERN = {
|
|
120
|
-
EMAIL: '^(([^<>()\\[\\]\\\\.,;:\\s@"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@"]+)*)|(".+"))' +
|
|
121
|
-
'@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,62}[a-zA-Z0-9])' +
|
|
122
|
-
'?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,62}[a-zA-Z0-9])?)*$'
|
|
123
|
-
};
|
|
124
|
-
const PAGINATION_DEFAULTS = {
|
|
125
|
-
SIZE: 10,
|
|
126
|
-
INDEX: 0
|
|
127
|
-
};
|
|
128
|
-
const PAGINATION_SIZE_OPTIONS = [
|
|
129
|
-
10,
|
|
130
|
-
50,
|
|
131
|
-
100,
|
|
132
|
-
500
|
|
133
|
-
];
|
|
134
|
-
const CUCS_TO_IGNORE = [
|
|
135
|
-
189,
|
|
136
|
-
194,
|
|
137
|
-
191,
|
|
138
|
-
190
|
|
139
|
-
];
|
|
140
|
-
const CUCMS_TO_IGNORE = [
|
|
141
|
-
249,
|
|
142
|
-
255,
|
|
143
|
-
251,
|
|
144
|
-
250
|
|
145
|
-
];
|
|
99
|
+
const API = {
|
|
100
|
+
USER_TOKEN: '/api/provision/:siteId/users/:userId/token',
|
|
101
|
+
UPDATE_USER_FIELDS: '/api/provision/:siteId/userFields/:token',
|
|
102
|
+
PERSIST_USER_CACHE: '/api/provision/:siteId/saveUser/:token',
|
|
103
|
+
USER_BY_ID: '/api/provision/:siteId/users/:userId',
|
|
104
|
+
QUICK_USERS_SEARCH: "/api/search/quickusers",
|
|
105
|
+
DELETE_USER: "/api/search/quickusers",
|
|
106
|
+
MOVE_USER: "/api/migration/webex/singlemigration/features/PERSON",
|
|
107
|
+
AVAILABLE_DN_IN_RANGES: "/api/sites/:siteId/available-dn-in-ranges",
|
|
108
|
+
DELETE_LINE: "/api/provision/:siteId/deleteLine/:pkid/:token",
|
|
109
|
+
DISASSOCIATE_LINE: "/api/provision/:siteId/:deviceName/deleteLineAssociation/:linePkid/:token",
|
|
110
|
+
CHECK_DELETE_LINE: "/api/provision/:siteId/checklinedeletion",
|
|
111
|
+
ASSOCIATE_LINE: "/api/provision/:siteId/:deviceName/createLineAssociation/:token",
|
|
112
|
+
CHECK_DESTINATION_NUMBER: "/api/provision/:siteId/check-dn",
|
|
113
|
+
UPDATE_LINE_FIELDS: "/api/provision/:siteId/lineFields/:pkid/:token",
|
|
114
|
+
UPDATE_DEVICE_FIELDS: "/api/provision/:siteId/deviceFields/:deviceName/:token",
|
|
115
|
+
WEBEX_USERS: "/api/webex/provisioning/customers/:customerId/users",
|
|
116
|
+
MIGRATED_USERS: "/api/search/migratedusers",
|
|
117
|
+
REVERT_WEBEX_USER: "/api/webex/provisioning/customers/:customerId/persons/:webexUUID/removecallinglicense",
|
|
118
|
+
PHONE_NUMBERS: "/api/search/webex/customers/:customerId/locations/:locationId/phonenumbers"
|
|
119
|
+
};
|
|
120
|
+
const REGEX_PATTERN = {
|
|
121
|
+
EMAIL: '^(([^<>()\\[\\]\\\\.,;:\\s@"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@"]+)*)|(".+"))' +
|
|
122
|
+
'@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,62}[a-zA-Z0-9])' +
|
|
123
|
+
'?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,62}[a-zA-Z0-9])?)*$'
|
|
124
|
+
};
|
|
125
|
+
const PAGINATION_DEFAULTS = {
|
|
126
|
+
SIZE: 10,
|
|
127
|
+
INDEX: 0
|
|
128
|
+
};
|
|
129
|
+
const PAGINATION_SIZE_OPTIONS = [
|
|
130
|
+
10,
|
|
131
|
+
50,
|
|
132
|
+
100,
|
|
133
|
+
500
|
|
134
|
+
];
|
|
135
|
+
const CUCS_TO_IGNORE = [
|
|
136
|
+
189,
|
|
137
|
+
194,
|
|
138
|
+
191,
|
|
139
|
+
190
|
|
140
|
+
];
|
|
141
|
+
const CUCMS_TO_IGNORE = [
|
|
142
|
+
249,
|
|
143
|
+
255,
|
|
144
|
+
251,
|
|
145
|
+
250
|
|
146
|
+
];
|
|
146
147
|
const MAX_INTEGER = 2147483647;
|
|
147
148
|
|
|
148
|
-
class SimplifiedUser {
|
|
149
|
-
constructor(user) {
|
|
150
|
-
if (user) {
|
|
151
|
-
this.userid = user.userid;
|
|
152
|
-
this.email = user.email;
|
|
153
|
-
this.firstName = user.firstName;
|
|
154
|
-
this.lastName = user.lastName;
|
|
155
|
-
this.token = user.token;
|
|
156
|
-
}
|
|
157
|
-
this.initForm();
|
|
158
|
-
}
|
|
159
|
-
initForm() {
|
|
160
|
-
const formBuilder = new FormBuilder();
|
|
161
|
-
const formSettings = {
|
|
162
|
-
userid: [{ value: this.userid || '', disabled: true }, [Validators.required, Validators.maxLength(128)]],
|
|
163
|
-
email: [{ value: this.email || '', disabled: true }, [
|
|
164
|
-
Validators.pattern(REGEX_PATTERN.EMAIL),
|
|
165
|
-
Validators.required
|
|
166
|
-
]],
|
|
167
|
-
firstName: [{ value: this.firstName || '', disabled: true }],
|
|
168
|
-
lastName: [{ value: this.lastName || '', disabled: true }, Validators.required],
|
|
169
|
-
};
|
|
170
|
-
this.form = formBuilder.group(formSettings);
|
|
171
|
-
}
|
|
172
|
-
toggleEditMode() {
|
|
173
|
-
this.editMode = !this.editMode;
|
|
174
|
-
['userid', 'email', 'firstName', 'lastName'].forEach(token => {
|
|
175
|
-
if (this.editMode) {
|
|
176
|
-
this.form.get(token)?.enable();
|
|
177
|
-
}
|
|
178
|
-
else {
|
|
179
|
-
this.form.get(token)?.disable();
|
|
180
|
-
}
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
|
-
getSavableData() {
|
|
184
|
-
const excludedFields = ['form', 'editMode', 'viewMode', 'token', 'hasModifiedCache'];
|
|
185
|
-
return getSavableData(this, excludedFields);
|
|
186
|
-
}
|
|
187
|
-
equal(userToCompare) {
|
|
188
|
-
if (!userToCompare) {
|
|
189
|
-
return false;
|
|
190
|
-
}
|
|
191
|
-
return JSON.stringify(this.getSavableData()) === JSON.stringify(userToCompare.getSavableData());
|
|
192
|
-
}
|
|
149
|
+
class SimplifiedUser {
|
|
150
|
+
constructor(user) {
|
|
151
|
+
if (user) {
|
|
152
|
+
this.userid = user.userid;
|
|
153
|
+
this.email = user.email;
|
|
154
|
+
this.firstName = user.firstName;
|
|
155
|
+
this.lastName = user.lastName;
|
|
156
|
+
this.token = user.token;
|
|
157
|
+
}
|
|
158
|
+
this.initForm();
|
|
159
|
+
}
|
|
160
|
+
initForm() {
|
|
161
|
+
const formBuilder = new FormBuilder();
|
|
162
|
+
const formSettings = {
|
|
163
|
+
userid: [{ value: this.userid || '', disabled: true }, [Validators.required, Validators.maxLength(128)]],
|
|
164
|
+
email: [{ value: this.email || '', disabled: true }, [
|
|
165
|
+
Validators.pattern(REGEX_PATTERN.EMAIL),
|
|
166
|
+
Validators.required
|
|
167
|
+
]],
|
|
168
|
+
firstName: [{ value: this.firstName || '', disabled: true }],
|
|
169
|
+
lastName: [{ value: this.lastName || '', disabled: true }, Validators.required],
|
|
170
|
+
};
|
|
171
|
+
this.form = formBuilder.group(formSettings);
|
|
172
|
+
}
|
|
173
|
+
toggleEditMode() {
|
|
174
|
+
this.editMode = !this.editMode;
|
|
175
|
+
['userid', 'email', 'firstName', 'lastName'].forEach(token => {
|
|
176
|
+
if (this.editMode) {
|
|
177
|
+
this.form.get(token)?.enable();
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
this.form.get(token)?.disable();
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
getSavableData() {
|
|
185
|
+
const excludedFields = ['form', 'editMode', 'viewMode', 'token', 'hasModifiedCache'];
|
|
186
|
+
return getSavableData(this, excludedFields);
|
|
187
|
+
}
|
|
188
|
+
equal(userToCompare) {
|
|
189
|
+
if (!userToCompare) {
|
|
190
|
+
return false;
|
|
191
|
+
}
|
|
192
|
+
return JSON.stringify(this.getSavableData()) === JSON.stringify(userToCompare.getSavableData());
|
|
193
|
+
}
|
|
193
194
|
}
|
|
194
195
|
|
|
195
|
-
class UtilsService {
|
|
196
|
-
static sortSortArrayByProperty(array, sortBy) {
|
|
197
|
-
if (!array) {
|
|
198
|
-
return null;
|
|
199
|
-
}
|
|
200
|
-
return array.sort((a, b) => {
|
|
201
|
-
if (!a[sortBy] && !b[sortBy]) {
|
|
202
|
-
return 0;
|
|
203
|
-
}
|
|
204
|
-
if (a[sortBy] && !b[sortBy]) {
|
|
205
|
-
return 1;
|
|
206
|
-
}
|
|
207
|
-
if (!a[sortBy] && b[sortBy]) {
|
|
208
|
-
return -1;
|
|
209
|
-
}
|
|
210
|
-
const positionA = a[sortBy];
|
|
211
|
-
const positionB = b[sortBy];
|
|
212
|
-
return (positionA < positionB) ? -1 : (positionA > positionB) ? 1 : 0;
|
|
213
|
-
});
|
|
214
|
-
}
|
|
215
|
-
static diff(origObject, updatedObj, path, keysToIgnore) {
|
|
216
|
-
let result = [];
|
|
217
|
-
if (Object.is(origObject, updatedObj)) {
|
|
218
|
-
return undefined;
|
|
219
|
-
}
|
|
220
|
-
if (!updatedObj || typeof updatedObj !== 'object') {
|
|
221
|
-
return updatedObj;
|
|
222
|
-
}
|
|
223
|
-
const concat = Array.from(new Set([...Object.keys(origObject || {}), ...Object.keys(updatedObj || {})]));
|
|
224
|
-
const filter = keysToIgnore ? concat.filter(key => !keysToIgnore.includes(key)) : concat;
|
|
225
|
-
filter
|
|
226
|
-
.forEach(key => {
|
|
227
|
-
if (typeof updatedObj[key] === 'object' && typeof origObject[key] === 'object') {
|
|
228
|
-
if (UtilsService.differs(updatedObj[key], origObject[key])) {
|
|
229
|
-
const newPath = `${path}${path ? '.' : ''}${key}`;
|
|
230
|
-
const values = UtilsService.diff(origObject[key], updatedObj[key], newPath, keysToIgnore);
|
|
231
|
-
if (values !== undefined) {
|
|
232
|
-
result = [...result, ...values];
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
else if (updatedObj && !origObject || updatedObj[key] !== origObject[key] && !Object.is(origObject[key], updatedObj[key])) {
|
|
237
|
-
const value = updatedObj ? UtilsService.formatIfEmpty(updatedObj[key]) : null;
|
|
238
|
-
result.push(`${path}${path ? '.' : ''}${key}=${value}`);
|
|
239
|
-
}
|
|
240
|
-
});
|
|
241
|
-
return result;
|
|
242
|
-
}
|
|
243
|
-
static formatIfEmpty(value) {
|
|
244
|
-
if (value) {
|
|
245
|
-
return value;
|
|
246
|
-
}
|
|
247
|
-
switch (typeof value) {
|
|
248
|
-
case 'boolean':
|
|
249
|
-
return value;
|
|
250
|
-
case 'string':
|
|
251
|
-
return '';
|
|
252
|
-
default:
|
|
253
|
-
return null;
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
static differs(obj1, obj2) {
|
|
257
|
-
return JSON.stringify(obj1) !== JSON.stringify(obj2);
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
UtilsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UtilsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
261
|
-
UtilsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UtilsService });
|
|
262
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UtilsService, decorators: [{
|
|
263
|
-
type: Injectable
|
|
196
|
+
class UtilsService {
|
|
197
|
+
static sortSortArrayByProperty(array, sortBy) {
|
|
198
|
+
if (!array) {
|
|
199
|
+
return null;
|
|
200
|
+
}
|
|
201
|
+
return array.sort((a, b) => {
|
|
202
|
+
if (!a[sortBy] && !b[sortBy]) {
|
|
203
|
+
return 0;
|
|
204
|
+
}
|
|
205
|
+
if (a[sortBy] && !b[sortBy]) {
|
|
206
|
+
return 1;
|
|
207
|
+
}
|
|
208
|
+
if (!a[sortBy] && b[sortBy]) {
|
|
209
|
+
return -1;
|
|
210
|
+
}
|
|
211
|
+
const positionA = a[sortBy];
|
|
212
|
+
const positionB = b[sortBy];
|
|
213
|
+
return (positionA < positionB) ? -1 : (positionA > positionB) ? 1 : 0;
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
static diff(origObject, updatedObj, path, keysToIgnore) {
|
|
217
|
+
let result = [];
|
|
218
|
+
if (Object.is(origObject, updatedObj)) {
|
|
219
|
+
return undefined;
|
|
220
|
+
}
|
|
221
|
+
if (!updatedObj || typeof updatedObj !== 'object') {
|
|
222
|
+
return updatedObj;
|
|
223
|
+
}
|
|
224
|
+
const concat = Array.from(new Set([...Object.keys(origObject || {}), ...Object.keys(updatedObj || {})]));
|
|
225
|
+
const filter = keysToIgnore ? concat.filter(key => !keysToIgnore.includes(key)) : concat;
|
|
226
|
+
filter
|
|
227
|
+
.forEach(key => {
|
|
228
|
+
if (typeof updatedObj[key] === 'object' && typeof origObject[key] === 'object') {
|
|
229
|
+
if (UtilsService.differs(updatedObj[key], origObject[key])) {
|
|
230
|
+
const newPath = `${path}${path ? '.' : ''}${key}`;
|
|
231
|
+
const values = UtilsService.diff(origObject[key], updatedObj[key], newPath, keysToIgnore);
|
|
232
|
+
if (values !== undefined) {
|
|
233
|
+
result = [...result, ...values];
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
else if (updatedObj && !origObject || updatedObj[key] !== origObject[key] && !Object.is(origObject[key], updatedObj[key])) {
|
|
238
|
+
const value = updatedObj ? UtilsService.formatIfEmpty(updatedObj[key]) : null;
|
|
239
|
+
result.push(`${path}${path ? '.' : ''}${key}=${value}`);
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
return result;
|
|
243
|
+
}
|
|
244
|
+
static formatIfEmpty(value) {
|
|
245
|
+
if (value) {
|
|
246
|
+
return value;
|
|
247
|
+
}
|
|
248
|
+
switch (typeof value) {
|
|
249
|
+
case 'boolean':
|
|
250
|
+
return value;
|
|
251
|
+
case 'string':
|
|
252
|
+
return '';
|
|
253
|
+
default:
|
|
254
|
+
return null;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
static differs(obj1, obj2) {
|
|
258
|
+
return JSON.stringify(obj1) !== JSON.stringify(obj2);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
UtilsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UtilsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
262
|
+
UtilsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UtilsService });
|
|
263
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UtilsService, decorators: [{
|
|
264
|
+
type: Injectable
|
|
264
265
|
}] });
|
|
265
266
|
|
|
266
|
-
class APIService {
|
|
267
|
-
constructor(httpClient) {
|
|
268
|
-
this.httpClient = httpClient;
|
|
269
|
-
this.apiUrl = window.location.protocol + '//' + window.location.hostname + '/dcp';
|
|
270
|
-
}
|
|
271
|
-
fetch(url, params = {}, cache) {
|
|
272
|
-
const headers = this.getHeaders(cache);
|
|
273
|
-
return this.httpClient.get(this.apiUrl + url, { params: this.prepareEncodedParams(params), headers });
|
|
274
|
-
}
|
|
275
|
-
post(url, body, params = {}) {
|
|
276
|
-
body = body || null;
|
|
277
|
-
const headers = this.getHeaders();
|
|
278
|
-
return this.httpClient.post(this.apiUrl + url, body, { params: this.prepareEncodedParams(params), headers });
|
|
279
|
-
}
|
|
280
|
-
// use when response extended data is necessary:
|
|
281
|
-
postExtended(url, body = null, params = {}, headers = {}) {
|
|
282
|
-
headers = headers || this.getHeaders();
|
|
283
|
-
return this.httpClient.post(this.apiUrl + url, body, {
|
|
284
|
-
headers,
|
|
285
|
-
observe: 'response',
|
|
286
|
-
params: this.prepareEncodedParams(params)
|
|
287
|
-
});
|
|
288
|
-
}
|
|
289
|
-
put(url, body = null, params = {}) {
|
|
290
|
-
const headers = this.getHeaders();
|
|
291
|
-
return this.httpClient.put(this.apiUrl + url, body, { headers, params: this.prepareEncodedParams(params) });
|
|
292
|
-
}
|
|
293
|
-
delete(url, params = {}) {
|
|
294
|
-
const headers = this.getHeaders();
|
|
295
|
-
return this.httpClient.delete(this.apiUrl + url, { headers, params: this.prepareEncodedParams(params) });
|
|
296
|
-
}
|
|
297
|
-
fetchPagination(url, pageSize, pageNumber, additionalParams = {}, cache) {
|
|
298
|
-
const copyAdditionalParams = JSON.parse(JSON.stringify(additionalParams));
|
|
299
|
-
const params = Object.assign(copyAdditionalParams, { size: pageSize.toString(), page: pageNumber.toString() });
|
|
300
|
-
return this.fetch(url, params, cache);
|
|
301
|
-
}
|
|
302
|
-
prepareEncodedParams(params) {
|
|
303
|
-
const result = {};
|
|
304
|
-
if (!params) {
|
|
305
|
-
return {};
|
|
306
|
-
}
|
|
307
|
-
for (const key of Object.keys(params)) {
|
|
308
|
-
if (params[key]) {
|
|
309
|
-
const stringParam = params[key].toString();
|
|
310
|
-
result[key] = stringParam.includes('+') ? encodeURIComponent(stringParam) : stringParam;
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
return result;
|
|
314
|
-
}
|
|
315
|
-
getHeaders(cache) {
|
|
316
|
-
let headers = new HttpHeaders();
|
|
317
|
-
if (cache) {
|
|
318
|
-
headers = headers.append('_Cache', 'true ');
|
|
319
|
-
}
|
|
320
|
-
const token = this.token || this.getParameterByName('token');
|
|
321
|
-
headers = headers.append('Authorization', 'Bearer ' + token);
|
|
322
|
-
return headers;
|
|
323
|
-
}
|
|
324
|
-
getParameterByName(name, url = window.location.href) {
|
|
325
|
-
name = name.replace(/[\[\]]/g, '\\$&');
|
|
326
|
-
var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'), results = regex.exec(url);
|
|
327
|
-
if (!results)
|
|
328
|
-
return null;
|
|
329
|
-
if (!results[2])
|
|
330
|
-
return '';
|
|
331
|
-
return decodeURIComponent(results[2].replace(/\+/g, ' '));
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
APIService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: APIService, deps: [{ token: i1$1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
335
|
-
APIService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: APIService });
|
|
336
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: APIService, decorators: [{
|
|
337
|
-
type: Injectable
|
|
267
|
+
class APIService {
|
|
268
|
+
constructor(httpClient) {
|
|
269
|
+
this.httpClient = httpClient;
|
|
270
|
+
this.apiUrl = window.location.protocol + '//' + window.location.hostname + '/dcp';
|
|
271
|
+
}
|
|
272
|
+
fetch(url, params = {}, cache) {
|
|
273
|
+
const headers = this.getHeaders(cache);
|
|
274
|
+
return this.httpClient.get(this.apiUrl + url, { params: this.prepareEncodedParams(params), headers });
|
|
275
|
+
}
|
|
276
|
+
post(url, body, params = {}) {
|
|
277
|
+
body = body || null;
|
|
278
|
+
const headers = this.getHeaders();
|
|
279
|
+
return this.httpClient.post(this.apiUrl + url, body, { params: this.prepareEncodedParams(params), headers });
|
|
280
|
+
}
|
|
281
|
+
// use when response extended data is necessary:
|
|
282
|
+
postExtended(url, body = null, params = {}, headers = {}) {
|
|
283
|
+
headers = headers || this.getHeaders();
|
|
284
|
+
return this.httpClient.post(this.apiUrl + url, body, {
|
|
285
|
+
headers,
|
|
286
|
+
observe: 'response',
|
|
287
|
+
params: this.prepareEncodedParams(params)
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
put(url, body = null, params = {}) {
|
|
291
|
+
const headers = this.getHeaders();
|
|
292
|
+
return this.httpClient.put(this.apiUrl + url, body, { headers, params: this.prepareEncodedParams(params) });
|
|
293
|
+
}
|
|
294
|
+
delete(url, params = {}) {
|
|
295
|
+
const headers = this.getHeaders();
|
|
296
|
+
return this.httpClient.delete(this.apiUrl + url, { headers, params: this.prepareEncodedParams(params) });
|
|
297
|
+
}
|
|
298
|
+
fetchPagination(url, pageSize, pageNumber, additionalParams = {}, cache) {
|
|
299
|
+
const copyAdditionalParams = JSON.parse(JSON.stringify(additionalParams));
|
|
300
|
+
const params = Object.assign(copyAdditionalParams, { size: pageSize.toString(), page: pageNumber.toString() });
|
|
301
|
+
return this.fetch(url, params, cache);
|
|
302
|
+
}
|
|
303
|
+
prepareEncodedParams(params) {
|
|
304
|
+
const result = {};
|
|
305
|
+
if (!params) {
|
|
306
|
+
return {};
|
|
307
|
+
}
|
|
308
|
+
for (const key of Object.keys(params)) {
|
|
309
|
+
if (params[key]) {
|
|
310
|
+
const stringParam = params[key].toString();
|
|
311
|
+
result[key] = stringParam.includes('+') ? encodeURIComponent(stringParam) : stringParam;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
return result;
|
|
315
|
+
}
|
|
316
|
+
getHeaders(cache) {
|
|
317
|
+
let headers = new HttpHeaders();
|
|
318
|
+
if (cache) {
|
|
319
|
+
headers = headers.append('_Cache', 'true ');
|
|
320
|
+
}
|
|
321
|
+
const token = this.token || this.getParameterByName('token');
|
|
322
|
+
headers = headers.append('Authorization', 'Bearer ' + token);
|
|
323
|
+
return headers;
|
|
324
|
+
}
|
|
325
|
+
getParameterByName(name, url = window.location.href) {
|
|
326
|
+
name = name.replace(/[\[\]]/g, '\\$&');
|
|
327
|
+
var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'), results = regex.exec(url);
|
|
328
|
+
if (!results)
|
|
329
|
+
return null;
|
|
330
|
+
if (!results[2])
|
|
331
|
+
return '';
|
|
332
|
+
return decodeURIComponent(results[2].replace(/\+/g, ' '));
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
APIService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: APIService, deps: [{ token: i1$1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
336
|
+
APIService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: APIService });
|
|
337
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: APIService, decorators: [{
|
|
338
|
+
type: Injectable
|
|
338
339
|
}], ctorParameters: function () { return [{ type: i1$1.HttpClient }]; } });
|
|
339
340
|
|
|
340
|
-
class ApiWebexService extends APIService {
|
|
341
|
-
constructor(httpClient) {
|
|
342
|
-
super(httpClient);
|
|
343
|
-
//this.apiUrl = window.location.protocol + "//"+ window.location.hostname + environment.apiAuthUrl;
|
|
344
|
-
this.apiUrl = 'https://webex.car-west.net/webex';
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
ApiWebexService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiWebexService, deps: [{ token: i1$1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
348
|
-
ApiWebexService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiWebexService });
|
|
349
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiWebexService, decorators: [{
|
|
350
|
-
type: Injectable
|
|
341
|
+
class ApiWebexService extends APIService {
|
|
342
|
+
constructor(httpClient) {
|
|
343
|
+
super(httpClient);
|
|
344
|
+
//this.apiUrl = window.location.protocol + "//"+ window.location.hostname + environment.apiAuthUrl;
|
|
345
|
+
this.apiUrl = 'https://webex.car-west.net/webex';
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
ApiWebexService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiWebexService, deps: [{ token: i1$1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
349
|
+
ApiWebexService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiWebexService });
|
|
350
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiWebexService, decorators: [{
|
|
351
|
+
type: Injectable
|
|
351
352
|
}], ctorParameters: function () { return [{ type: i1$1.HttpClient }]; } });
|
|
352
353
|
|
|
353
|
-
class UserService {
|
|
354
|
-
constructor(apiService, apiWebexService) {
|
|
355
|
-
this.apiService = apiService;
|
|
356
|
-
this.apiWebexService = apiWebexService;
|
|
357
|
-
this.siteId = -1;
|
|
358
|
-
this.userId = '';
|
|
359
|
-
this.userIdExistPending = false;
|
|
360
|
-
this.hasExistedUserId = false;
|
|
361
|
-
}
|
|
362
|
-
ngOnInit() {
|
|
363
|
-
console.log(this.siteId);
|
|
364
|
-
}
|
|
365
|
-
fetchUserToken(siteId, userId) {
|
|
366
|
-
this.siteId = siteId;
|
|
367
|
-
this.userId = userId;
|
|
368
|
-
return this.apiService.fetch(API.USER_TOKEN.replace(':siteId', String(this.siteId)).replace(':userId', encodeURIComponent(encodeURIComponent(userId))))
|
|
369
|
-
.pipe(map((result) => {
|
|
370
|
-
const token = Object.keys(result)[0];
|
|
371
|
-
this.setSimplifiedUser(Object.values(result)[0], token);
|
|
372
|
-
}));
|
|
373
|
-
// .pipe(this.handleError(false, true));
|
|
374
|
-
}
|
|
375
|
-
updateUserFields(body) {
|
|
376
|
-
if (!this.userId || !this.siteId || !this.user?.token) {
|
|
377
|
-
return;
|
|
378
|
-
}
|
|
379
|
-
return this.apiService.post(API.UPDATE_USER_FIELDS.replace(':siteId', String(this.siteId)).replace(':token', this.user.token), body);
|
|
380
|
-
// .pipe(this.handleError(false, true));
|
|
381
|
-
}
|
|
382
|
-
moveUser(customerId, user) {
|
|
383
|
-
// return new Observable<boolean>(observer => {
|
|
384
|
-
// setTimeout(() => {
|
|
385
|
-
// observer.next(true);
|
|
386
|
-
//
|
|
387
|
-
// }, 80000);
|
|
388
|
-
// });
|
|
389
|
-
return this.apiWebexService.post(API.MOVE_USER, this.getMoveUserBody(customerId, user));
|
|
390
|
-
// .pipe(this.handleError(true, true));
|
|
391
|
-
}
|
|
392
|
-
moveUserToMT(customerId, user) {
|
|
393
|
-
// return new Observable<boolean>(observer => {
|
|
394
|
-
// setTimeout(() => {
|
|
395
|
-
// observer.next(true);
|
|
396
|
-
//
|
|
397
|
-
// }, 80000);
|
|
398
|
-
// });
|
|
399
|
-
return this.apiWebexService.post(API.MOVE_USER, this.getMoveUserBody(customerId, user));
|
|
400
|
-
// .pipe(this.handleError(true, true));
|
|
401
|
-
}
|
|
402
|
-
moveUserToDI(customerId, user) {
|
|
403
|
-
// return new Observable<boolean>(observer => {
|
|
404
|
-
// setTimeout(() => {
|
|
405
|
-
// observer.next(true);
|
|
406
|
-
//
|
|
407
|
-
// }, 80000);
|
|
408
|
-
// });
|
|
409
|
-
const URL = API.REVERT_WEBEX_USER.replace(':customerId', customerId).replace(':webexUUID', String(user.webexUUID));
|
|
410
|
-
return this.apiWebexService.post(URL, this.getMoveUserBody(customerId, user));
|
|
411
|
-
// .pipe(this.handleError(true, true));
|
|
412
|
-
}
|
|
413
|
-
getMoveUserBody(customerId, user) {
|
|
414
|
-
return {
|
|
415
|
-
customerId: customerId,
|
|
416
|
-
entities: {
|
|
417
|
-
PERSON: [{ cucmId: user.cucmId, entityId: user.userid }]
|
|
418
|
-
}
|
|
419
|
-
};
|
|
420
|
-
}
|
|
421
|
-
deleteUser(siteId, userId) {
|
|
422
|
-
return this.apiService.delete(API.DELETE_USER.replace(':siteId', String(siteId)).replace(':userId', encodeURIComponent(encodeURIComponent(userId))));
|
|
423
|
-
// .pipe(this.handleError(true, true));
|
|
424
|
-
}
|
|
425
|
-
fetchUserById(id) {
|
|
426
|
-
this.userIdExistPending = true;
|
|
427
|
-
return this.apiService.fetch(API.USER_BY_ID.replace(':siteId', String(this.siteId)).replace(':userId', encodeURIComponent(encodeURIComponent(id))))
|
|
428
|
-
.pipe(map(result => {
|
|
429
|
-
this.userIdExistPending = false;
|
|
430
|
-
return result;
|
|
431
|
-
}));
|
|
432
|
-
}
|
|
433
|
-
persistCacheChanges() {
|
|
434
|
-
const params = {
|
|
435
|
-
excludeDeviceExtraOptions: true
|
|
436
|
-
};
|
|
437
|
-
return this.processUserChangesToCache()
|
|
438
|
-
.pipe(map((result) => {
|
|
439
|
-
return this.apiService.post(API.PERSIST_USER_CACHE.replace(':siteId', String(this.siteId)).replace(':token', this.user.token), {}, params)
|
|
440
|
-
.subscribe(() => {
|
|
441
|
-
});
|
|
442
|
-
// .pipe(map((user) => {
|
|
443
|
-
// // this.setUser(user, false, this.user.token);
|
|
444
|
-
// this.user.hasModifiedCache = false;
|
|
445
|
-
// }))
|
|
446
|
-
// .pipe(this.handleError(true, true));
|
|
447
|
-
}));
|
|
448
|
-
}
|
|
449
|
-
processUserChangesToCache() {
|
|
450
|
-
const calls = [];
|
|
451
|
-
const body = UtilsService.diff(this.originUser.getSavableData(), this.user.getSavableData(), 'user');
|
|
452
|
-
if (body) {
|
|
453
|
-
calls.push(this.updateUserFields(body));
|
|
454
|
-
}
|
|
455
|
-
if (!calls?.length) {
|
|
456
|
-
return of(this.user);
|
|
457
|
-
}
|
|
458
|
-
return forkJoin(calls)
|
|
459
|
-
.pipe(map((responses) => {
|
|
460
|
-
// ApiUserResponse
|
|
461
|
-
this.handleSaveUserResponse(responses);
|
|
462
|
-
}));
|
|
463
|
-
// .pipe(this.handleError(false, true));
|
|
464
|
-
}
|
|
465
|
-
hasUnsavedChanges() {
|
|
466
|
-
return !this.user.equal(this.originUser);
|
|
467
|
-
}
|
|
468
|
-
setSimplifiedUser(user, token) {
|
|
469
|
-
this.user = new SimplifiedUser(user);
|
|
470
|
-
const copiedUser = JSON.parse(JSON.stringify(user));
|
|
471
|
-
this.originUser = new SimplifiedUser(copiedUser);
|
|
472
|
-
this.user.token = this.user.token || token;
|
|
473
|
-
this.originUser.token = this.originUser.token || token;
|
|
474
|
-
}
|
|
475
|
-
handleSaveUserResponse(responses) {
|
|
476
|
-
if (!responses?.length) {
|
|
477
|
-
return;
|
|
478
|
-
}
|
|
479
|
-
for (let len = responses.length, i = len - 1; i >= 0; i--) {
|
|
480
|
-
if (responses[i] && responses[i].currentUpdatedUser) {
|
|
481
|
-
// this.setUser(responses[i].currentUpdatedUser, false, this.user.token);
|
|
482
|
-
this.user.hasModifiedCache = true;
|
|
483
|
-
return;
|
|
484
|
-
}
|
|
485
|
-
}
|
|
486
|
-
}
|
|
487
|
-
}
|
|
488
|
-
UserService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserService, deps: [{ token: APIService }, { token: ApiWebexService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
489
|
-
UserService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserService });
|
|
490
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserService, decorators: [{
|
|
491
|
-
type: Injectable
|
|
354
|
+
class UserService {
|
|
355
|
+
constructor(apiService, apiWebexService) {
|
|
356
|
+
this.apiService = apiService;
|
|
357
|
+
this.apiWebexService = apiWebexService;
|
|
358
|
+
this.siteId = -1;
|
|
359
|
+
this.userId = '';
|
|
360
|
+
this.userIdExistPending = false;
|
|
361
|
+
this.hasExistedUserId = false;
|
|
362
|
+
}
|
|
363
|
+
ngOnInit() {
|
|
364
|
+
console.log(this.siteId);
|
|
365
|
+
}
|
|
366
|
+
fetchUserToken(siteId, userId) {
|
|
367
|
+
this.siteId = siteId;
|
|
368
|
+
this.userId = userId;
|
|
369
|
+
return this.apiService.fetch(API.USER_TOKEN.replace(':siteId', String(this.siteId)).replace(':userId', encodeURIComponent(encodeURIComponent(userId))))
|
|
370
|
+
.pipe(map((result) => {
|
|
371
|
+
const token = Object.keys(result)[0];
|
|
372
|
+
this.setSimplifiedUser(Object.values(result)[0], token);
|
|
373
|
+
}));
|
|
374
|
+
// .pipe(this.handleError(false, true));
|
|
375
|
+
}
|
|
376
|
+
updateUserFields(body) {
|
|
377
|
+
if (!this.userId || !this.siteId || !this.user?.token) {
|
|
378
|
+
return;
|
|
379
|
+
}
|
|
380
|
+
return this.apiService.post(API.UPDATE_USER_FIELDS.replace(':siteId', String(this.siteId)).replace(':token', this.user.token), body);
|
|
381
|
+
// .pipe(this.handleError(false, true));
|
|
382
|
+
}
|
|
383
|
+
moveUser(customerId, user) {
|
|
384
|
+
// return new Observable<boolean>(observer => {
|
|
385
|
+
// setTimeout(() => {
|
|
386
|
+
// observer.next(true);
|
|
387
|
+
//
|
|
388
|
+
// }, 80000);
|
|
389
|
+
// });
|
|
390
|
+
return this.apiWebexService.post(API.MOVE_USER, this.getMoveUserBody(customerId, user));
|
|
391
|
+
// .pipe(this.handleError(true, true));
|
|
392
|
+
}
|
|
393
|
+
moveUserToMT(customerId, user) {
|
|
394
|
+
// return new Observable<boolean>(observer => {
|
|
395
|
+
// setTimeout(() => {
|
|
396
|
+
// observer.next(true);
|
|
397
|
+
//
|
|
398
|
+
// }, 80000);
|
|
399
|
+
// });
|
|
400
|
+
return this.apiWebexService.post(API.MOVE_USER, this.getMoveUserBody(customerId, user));
|
|
401
|
+
// .pipe(this.handleError(true, true));
|
|
402
|
+
}
|
|
403
|
+
moveUserToDI(customerId, user) {
|
|
404
|
+
// return new Observable<boolean>(observer => {
|
|
405
|
+
// setTimeout(() => {
|
|
406
|
+
// observer.next(true);
|
|
407
|
+
//
|
|
408
|
+
// }, 80000);
|
|
409
|
+
// });
|
|
410
|
+
const URL = API.REVERT_WEBEX_USER.replace(':customerId', customerId).replace(':webexUUID', String(user.webexUUID));
|
|
411
|
+
return this.apiWebexService.post(URL, this.getMoveUserBody(customerId, user));
|
|
412
|
+
// .pipe(this.handleError(true, true));
|
|
413
|
+
}
|
|
414
|
+
getMoveUserBody(customerId, user) {
|
|
415
|
+
return {
|
|
416
|
+
customerId: customerId,
|
|
417
|
+
entities: {
|
|
418
|
+
PERSON: [{ cucmId: user.cucmId, entityId: user.userid }]
|
|
419
|
+
}
|
|
420
|
+
};
|
|
421
|
+
}
|
|
422
|
+
deleteUser(siteId, userId) {
|
|
423
|
+
return this.apiService.delete(API.DELETE_USER.replace(':siteId', String(siteId)).replace(':userId', encodeURIComponent(encodeURIComponent(userId))));
|
|
424
|
+
// .pipe(this.handleError(true, true));
|
|
425
|
+
}
|
|
426
|
+
fetchUserById(id) {
|
|
427
|
+
this.userIdExistPending = true;
|
|
428
|
+
return this.apiService.fetch(API.USER_BY_ID.replace(':siteId', String(this.siteId)).replace(':userId', encodeURIComponent(encodeURIComponent(id))))
|
|
429
|
+
.pipe(map(result => {
|
|
430
|
+
this.userIdExistPending = false;
|
|
431
|
+
return result;
|
|
432
|
+
}));
|
|
433
|
+
}
|
|
434
|
+
persistCacheChanges() {
|
|
435
|
+
const params = {
|
|
436
|
+
excludeDeviceExtraOptions: true
|
|
437
|
+
};
|
|
438
|
+
return this.processUserChangesToCache()
|
|
439
|
+
.pipe(map((result) => {
|
|
440
|
+
return this.apiService.post(API.PERSIST_USER_CACHE.replace(':siteId', String(this.siteId)).replace(':token', this.user.token), {}, params)
|
|
441
|
+
.subscribe(() => {
|
|
442
|
+
});
|
|
443
|
+
// .pipe(map((user) => {
|
|
444
|
+
// // this.setUser(user, false, this.user.token);
|
|
445
|
+
// this.user.hasModifiedCache = false;
|
|
446
|
+
// }))
|
|
447
|
+
// .pipe(this.handleError(true, true));
|
|
448
|
+
}));
|
|
449
|
+
}
|
|
450
|
+
processUserChangesToCache() {
|
|
451
|
+
const calls = [];
|
|
452
|
+
const body = UtilsService.diff(this.originUser.getSavableData(), this.user.getSavableData(), 'user');
|
|
453
|
+
if (body) {
|
|
454
|
+
calls.push(this.updateUserFields(body));
|
|
455
|
+
}
|
|
456
|
+
if (!calls?.length) {
|
|
457
|
+
return of(this.user);
|
|
458
|
+
}
|
|
459
|
+
return forkJoin(calls)
|
|
460
|
+
.pipe(map((responses) => {
|
|
461
|
+
// ApiUserResponse
|
|
462
|
+
this.handleSaveUserResponse(responses);
|
|
463
|
+
}));
|
|
464
|
+
// .pipe(this.handleError(false, true));
|
|
465
|
+
}
|
|
466
|
+
hasUnsavedChanges() {
|
|
467
|
+
return !this.user.equal(this.originUser);
|
|
468
|
+
}
|
|
469
|
+
setSimplifiedUser(user, token) {
|
|
470
|
+
this.user = new SimplifiedUser(user);
|
|
471
|
+
const copiedUser = JSON.parse(JSON.stringify(user));
|
|
472
|
+
this.originUser = new SimplifiedUser(copiedUser);
|
|
473
|
+
this.user.token = this.user.token || token;
|
|
474
|
+
this.originUser.token = this.originUser.token || token;
|
|
475
|
+
}
|
|
476
|
+
handleSaveUserResponse(responses) {
|
|
477
|
+
if (!responses?.length) {
|
|
478
|
+
return;
|
|
479
|
+
}
|
|
480
|
+
for (let len = responses.length, i = len - 1; i >= 0; i--) {
|
|
481
|
+
if (responses[i] && responses[i].currentUpdatedUser) {
|
|
482
|
+
// this.setUser(responses[i].currentUpdatedUser, false, this.user.token);
|
|
483
|
+
this.user.hasModifiedCache = true;
|
|
484
|
+
return;
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
UserService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserService, deps: [{ token: APIService }, { token: ApiWebexService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
490
|
+
UserService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserService });
|
|
491
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserService, decorators: [{
|
|
492
|
+
type: Injectable
|
|
492
493
|
}], ctorParameters: function () { return [{ type: APIService }, { type: ApiWebexService }]; } });
|
|
493
494
|
|
|
494
|
-
const TTL_DEFAULT = 30000;
|
|
495
|
-
const TTL_LONG_DEFAULT = 45000;
|
|
496
|
-
var NotificationType;
|
|
497
|
-
(function (NotificationType) {
|
|
498
|
-
NotificationType["info"] = "info";
|
|
499
|
-
NotificationType["error"] = "error";
|
|
500
|
-
NotificationType["success"] = "success";
|
|
501
|
-
NotificationType["warning"] = "warning";
|
|
502
|
-
})(NotificationType || (NotificationType = {}));
|
|
503
|
-
class Notification {
|
|
504
|
-
constructor(data) {
|
|
505
|
-
this.ttl = TTL_DEFAULT;
|
|
506
|
-
Object.assign(this, data || {});
|
|
507
|
-
if (this.ttl === undefined) {
|
|
508
|
-
this.ttl = this.message && this.message.length && this.message.length < 80 ? TTL_DEFAULT : TTL_LONG_DEFAULT;
|
|
509
|
-
}
|
|
510
|
-
}
|
|
511
|
-
isInfo() {
|
|
512
|
-
return this.type === NotificationType.info;
|
|
513
|
-
}
|
|
514
|
-
isError() {
|
|
515
|
-
return this.type === NotificationType.error;
|
|
516
|
-
}
|
|
517
|
-
isSuccess() {
|
|
518
|
-
return this.type === NotificationType.success;
|
|
519
|
-
}
|
|
520
|
-
isWarning() {
|
|
521
|
-
return this.type === NotificationType.warning;
|
|
522
|
-
}
|
|
495
|
+
const TTL_DEFAULT = 30000;
|
|
496
|
+
const TTL_LONG_DEFAULT = 45000;
|
|
497
|
+
var NotificationType;
|
|
498
|
+
(function (NotificationType) {
|
|
499
|
+
NotificationType["info"] = "info";
|
|
500
|
+
NotificationType["error"] = "error";
|
|
501
|
+
NotificationType["success"] = "success";
|
|
502
|
+
NotificationType["warning"] = "warning";
|
|
503
|
+
})(NotificationType || (NotificationType = {}));
|
|
504
|
+
class Notification {
|
|
505
|
+
constructor(data) {
|
|
506
|
+
this.ttl = TTL_DEFAULT;
|
|
507
|
+
Object.assign(this, data || {});
|
|
508
|
+
if (this.ttl === undefined) {
|
|
509
|
+
this.ttl = this.message && this.message.length && this.message.length < 80 ? TTL_DEFAULT : TTL_LONG_DEFAULT;
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
isInfo() {
|
|
513
|
+
return this.type === NotificationType.info;
|
|
514
|
+
}
|
|
515
|
+
isError() {
|
|
516
|
+
return this.type === NotificationType.error;
|
|
517
|
+
}
|
|
518
|
+
isSuccess() {
|
|
519
|
+
return this.type === NotificationType.success;
|
|
520
|
+
}
|
|
521
|
+
isWarning() {
|
|
522
|
+
return this.type === NotificationType.warning;
|
|
523
|
+
}
|
|
523
524
|
}
|
|
524
525
|
|
|
525
|
-
const SUCCESS_TIME = 5000;
|
|
526
|
-
const INACTIVE_SESSION_MESSAGE = 'Your session was lost due to inactivity. Please login again';
|
|
527
|
-
const INACTIVE_SESSION = 'SESSION_INACTIVE';
|
|
528
|
-
class NotificationService {
|
|
529
|
-
constructor() {
|
|
530
|
-
this.listChange = new Subject();
|
|
531
|
-
this.max = 0;
|
|
532
|
-
this.list = [];
|
|
533
|
-
}
|
|
534
|
-
error(message, ttl) {
|
|
535
|
-
this.notify('error', message, ttl);
|
|
536
|
-
}
|
|
537
|
-
success(message, ttl) {
|
|
538
|
-
this.notify('success', message, (!ttl) ? SUCCESS_TIME : ttl);
|
|
539
|
-
}
|
|
540
|
-
warning(message, ttl) {
|
|
541
|
-
this.notify('warning', message, ttl);
|
|
542
|
-
}
|
|
543
|
-
info(message, ttl) {
|
|
544
|
-
this.notify('info', message, ttl);
|
|
545
|
-
}
|
|
546
|
-
notify(type, message, ttl) {
|
|
547
|
-
const found = this.list.find((n) => n.message === message);
|
|
548
|
-
if (found) {
|
|
549
|
-
this.remove(found);
|
|
550
|
-
}
|
|
551
|
-
const notification = new Notification({
|
|
552
|
-
id: ++this.max,
|
|
553
|
-
type, message, ttl
|
|
554
|
-
});
|
|
555
|
-
if (notification.ttl > 0) {
|
|
556
|
-
notification.timerId = setTimeout(() => this.remove(notification, true), notification.ttl);
|
|
557
|
-
}
|
|
558
|
-
this.list.push(notification);
|
|
559
|
-
this.listChange.next(this.list);
|
|
560
|
-
}
|
|
561
|
-
remove(notification, auto) {
|
|
562
|
-
if (!auto && notification.timerId) {
|
|
563
|
-
// clear timeout in case of manual remove
|
|
564
|
-
clearInterval(notification.timerId);
|
|
565
|
-
}
|
|
566
|
-
this.list = this.list.filter(n => n.id !== notification.id);
|
|
567
|
-
this.listChange.next(this.list);
|
|
568
|
-
}
|
|
569
|
-
removeInactiveSessionError() {
|
|
570
|
-
if (!this.list || !this.list.length) {
|
|
571
|
-
return;
|
|
572
|
-
}
|
|
573
|
-
this.list = this.list.filter(n => n.message !== INACTIVE_SESSION_MESSAGE && n.message !== INACTIVE_SESSION);
|
|
574
|
-
this.listChange.next(this.list);
|
|
575
|
-
}
|
|
576
|
-
}
|
|
577
|
-
NotificationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NotificationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
578
|
-
NotificationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NotificationService });
|
|
579
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NotificationService, decorators: [{
|
|
580
|
-
type: Injectable
|
|
526
|
+
const SUCCESS_TIME = 5000;
|
|
527
|
+
const INACTIVE_SESSION_MESSAGE = 'Your session was lost due to inactivity. Please login again';
|
|
528
|
+
const INACTIVE_SESSION = 'SESSION_INACTIVE';
|
|
529
|
+
class NotificationService {
|
|
530
|
+
constructor() {
|
|
531
|
+
this.listChange = new Subject();
|
|
532
|
+
this.max = 0;
|
|
533
|
+
this.list = [];
|
|
534
|
+
}
|
|
535
|
+
error(message, ttl) {
|
|
536
|
+
this.notify('error', message, ttl);
|
|
537
|
+
}
|
|
538
|
+
success(message, ttl) {
|
|
539
|
+
this.notify('success', message, (!ttl) ? SUCCESS_TIME : ttl);
|
|
540
|
+
}
|
|
541
|
+
warning(message, ttl) {
|
|
542
|
+
this.notify('warning', message, ttl);
|
|
543
|
+
}
|
|
544
|
+
info(message, ttl) {
|
|
545
|
+
this.notify('info', message, ttl);
|
|
546
|
+
}
|
|
547
|
+
notify(type, message, ttl) {
|
|
548
|
+
const found = this.list.find((n) => n.message === message);
|
|
549
|
+
if (found) {
|
|
550
|
+
this.remove(found);
|
|
551
|
+
}
|
|
552
|
+
const notification = new Notification({
|
|
553
|
+
id: ++this.max,
|
|
554
|
+
type, message, ttl
|
|
555
|
+
});
|
|
556
|
+
if (notification.ttl > 0) {
|
|
557
|
+
notification.timerId = setTimeout(() => this.remove(notification, true), notification.ttl);
|
|
558
|
+
}
|
|
559
|
+
this.list.push(notification);
|
|
560
|
+
this.listChange.next(this.list);
|
|
561
|
+
}
|
|
562
|
+
remove(notification, auto) {
|
|
563
|
+
if (!auto && notification.timerId) {
|
|
564
|
+
// clear timeout in case of manual remove
|
|
565
|
+
clearInterval(notification.timerId);
|
|
566
|
+
}
|
|
567
|
+
this.list = this.list.filter(n => n.id !== notification.id);
|
|
568
|
+
this.listChange.next(this.list);
|
|
569
|
+
}
|
|
570
|
+
removeInactiveSessionError() {
|
|
571
|
+
if (!this.list || !this.list.length) {
|
|
572
|
+
return;
|
|
573
|
+
}
|
|
574
|
+
this.list = this.list.filter(n => n.message !== INACTIVE_SESSION_MESSAGE && n.message !== INACTIVE_SESSION);
|
|
575
|
+
this.listChange.next(this.list);
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
NotificationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NotificationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
579
|
+
NotificationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NotificationService });
|
|
580
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NotificationService, decorators: [{
|
|
581
|
+
type: Injectable
|
|
581
582
|
}], ctorParameters: function () { return []; } });
|
|
582
583
|
|
|
583
|
-
class ListUser {
|
|
584
|
-
constructor(user, roleName) {
|
|
585
|
-
this.devices = [];
|
|
586
|
-
this.deviceProfiles = [];
|
|
587
|
-
if (user) {
|
|
588
|
-
Object.assign(this, user);
|
|
589
|
-
}
|
|
590
|
-
if (roleName) {
|
|
591
|
-
this.roleName = roleName;
|
|
592
|
-
}
|
|
593
|
-
}
|
|
584
|
+
class ListUser {
|
|
585
|
+
constructor(user, roleName) {
|
|
586
|
+
this.devices = [];
|
|
587
|
+
this.deviceProfiles = [];
|
|
588
|
+
if (user) {
|
|
589
|
+
Object.assign(this, user);
|
|
590
|
+
}
|
|
591
|
+
if (roleName) {
|
|
592
|
+
this.roleName = roleName;
|
|
593
|
+
}
|
|
594
|
+
}
|
|
594
595
|
}
|
|
595
596
|
|
|
596
|
-
class RemoveKynFromIBMService {
|
|
597
|
-
constructor() {
|
|
598
|
-
}
|
|
599
|
-
removeCUCMS(date, customerId) {
|
|
600
|
-
if (customerId === 8) {
|
|
601
|
-
return date.filter((val) => !CUCMS_TO_IGNORE.includes(Math.round(val.cucmId)));
|
|
602
|
-
}
|
|
603
|
-
return date;
|
|
604
|
-
}
|
|
605
|
-
removeCUCS(date, customerId) {
|
|
606
|
-
if (customerId === 8) {
|
|
607
|
-
return date.filter((val) => !CUCS_TO_IGNORE.includes(Math.round(val.cucId)));
|
|
608
|
-
}
|
|
609
|
-
return date;
|
|
610
|
-
}
|
|
611
|
-
}
|
|
612
|
-
RemoveKynFromIBMService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RemoveKynFromIBMService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
613
|
-
RemoveKynFromIBMService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RemoveKynFromIBMService });
|
|
614
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RemoveKynFromIBMService, decorators: [{
|
|
615
|
-
type: Injectable
|
|
597
|
+
class RemoveKynFromIBMService {
|
|
598
|
+
constructor() {
|
|
599
|
+
}
|
|
600
|
+
removeCUCMS(date, customerId) {
|
|
601
|
+
if (customerId === 8) {
|
|
602
|
+
return date.filter((val) => !CUCMS_TO_IGNORE.includes(Math.round(val.cucmId)));
|
|
603
|
+
}
|
|
604
|
+
return date;
|
|
605
|
+
}
|
|
606
|
+
removeCUCS(date, customerId) {
|
|
607
|
+
if (customerId === 8) {
|
|
608
|
+
return date.filter((val) => !CUCS_TO_IGNORE.includes(Math.round(val.cucId)));
|
|
609
|
+
}
|
|
610
|
+
return date;
|
|
611
|
+
}
|
|
612
|
+
}
|
|
613
|
+
RemoveKynFromIBMService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RemoveKynFromIBMService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
614
|
+
RemoveKynFromIBMService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RemoveKynFromIBMService });
|
|
615
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RemoveKynFromIBMService, decorators: [{
|
|
616
|
+
type: Injectable
|
|
616
617
|
}], ctorParameters: function () { return []; } });
|
|
617
618
|
|
|
618
|
-
class UsersSearchService {
|
|
619
|
-
constructor(apiService, webexApiService, removeKynFromIBMService) {
|
|
620
|
-
this.apiService = apiService;
|
|
621
|
-
this.webexApiService = webexApiService;
|
|
622
|
-
this.removeKynFromIBMService = removeKynFromIBMService;
|
|
623
|
-
this.siteId = -1;
|
|
624
|
-
this.userId = '';
|
|
625
|
-
this.userIdExistPending = false;
|
|
626
|
-
this.hasExistedUserId = false;
|
|
627
|
-
this.pageSize = PAGINATION_DEFAULTS.SIZE;
|
|
628
|
-
this.pageIndex = PAGINATION_DEFAULTS.SIZE;
|
|
629
|
-
this.pageSizeOptions = PAGINATION_SIZE_OPTIONS;
|
|
630
|
-
this.foundUsers$ = new BehaviorSubject(null);
|
|
631
|
-
}
|
|
632
|
-
getPagination() {
|
|
633
|
-
return {
|
|
634
|
-
total: this.total,
|
|
635
|
-
pageSizeOptions: this.pageSizeOptions,
|
|
636
|
-
pageSize: this.pageSize,
|
|
637
|
-
pageIndex: this.pageIndex
|
|
638
|
-
};
|
|
639
|
-
}
|
|
640
|
-
setDefaultValues() {
|
|
641
|
-
this.total = 0;
|
|
642
|
-
this.pageSize = PAGINATION_DEFAULTS.SIZE;
|
|
643
|
-
this.pageIndex = PAGINATION_DEFAULTS.INDEX;
|
|
644
|
-
this.pageSizeOptions = PAGINATION_SIZE_OPTIONS;
|
|
645
|
-
}
|
|
646
|
-
quickRegularUsersSearch(searchParams, isMigratedUsersOnly, pageSize) {
|
|
647
|
-
console.log('searchParams = ', searchParams);
|
|
648
|
-
this.searchParams = searchParams || { customerid: this.customerId, siteid: this.siteId };
|
|
649
|
-
return this.apiService.fetchPagination(API.QUICK_USERS_SEARCH, this.pageSize, pageSize || this.pageIndex, this.searchParams)
|
|
650
|
-
.pipe(map((res) => {
|
|
651
|
-
// this.totals = this.totals || {};
|
|
652
|
-
// this.totals['users'] = res.total;
|
|
653
|
-
// this.foundUsers$.next(this.removeKynFromIBMService.removeCUCMS(users, this.customerId));
|
|
654
|
-
if (!isMigratedUsersOnly) {
|
|
655
|
-
const users = res.pageData && res.pageData.length ? res.pageData
|
|
656
|
-
.map(user => new ListUser(user, 'Dedicated Instance Calling user')) : [];
|
|
657
|
-
if (this.migratedUsersIds?.length) {
|
|
658
|
-
this.setMigratedPropToUsers(users);
|
|
659
|
-
}
|
|
660
|
-
this.total = res.total;
|
|
661
|
-
this.foundUsers$.next(users);
|
|
662
|
-
}
|
|
663
|
-
else {
|
|
664
|
-
this.migratedUsersIds = res.pageData && res.pageData.length ? res.pageData
|
|
665
|
-
.map(user => user.userid) : [];
|
|
666
|
-
}
|
|
667
|
-
}));
|
|
668
|
-
// .pipe(this.handleError(true));
|
|
669
|
-
}
|
|
670
|
-
quickWebexUsersSearch(searchParams, isMigratedUsersOnly, pageSize) {
|
|
671
|
-
this.searchParams = searchParams || { customerid: this.customerId, siteid: this.siteId };
|
|
672
|
-
return this.webexApiService.fetchPagination(API.QUICK_USERS_SEARCH, this.pageSize, pageSize || this.pageIndex, this.searchParams)
|
|
673
|
-
.pipe(map((res) => {
|
|
674
|
-
if (!isMigratedUsersOnly) {
|
|
675
|
-
const users = res.pageData && res.pageData.length ? res.pageData
|
|
676
|
-
.map(user => new ListUser(user, 'Dedicated Instance Calling user')) : [];
|
|
677
|
-
if (this.migratedUsersIds?.length) {
|
|
678
|
-
this.setMigratedPropToUsers(users);
|
|
679
|
-
}
|
|
680
|
-
this.total = res.total;
|
|
681
|
-
this.foundUsers$.next(users);
|
|
682
|
-
}
|
|
683
|
-
else {
|
|
684
|
-
this.migratedUsersIds = res.pageData && res.pageData.length ? res.pageData
|
|
685
|
-
.map(user => user.userid) : [];
|
|
686
|
-
}
|
|
687
|
-
}));
|
|
688
|
-
// .pipe(this.handleError(true));
|
|
689
|
-
}
|
|
690
|
-
getMigratedUsers(customerId) {
|
|
691
|
-
return this.webexApiService.fetch(API.WEBEX_USERS.replace(':customerId', String(customerId)), {})
|
|
692
|
-
.pipe(map((result) => {
|
|
693
|
-
if (result && result.length) {
|
|
694
|
-
this.migratedUsers = result.filter((user) => user.webexUUID && user.devices && user.devices.length);
|
|
695
|
-
}
|
|
696
|
-
}));
|
|
697
|
-
}
|
|
698
|
-
getMigratedWebexUsers(customerId) {
|
|
699
|
-
const params = { customerid: customerId, type: 'PERSON' };
|
|
700
|
-
return this.webexApiService.fetch(API.MIGRATED_USERS.replace(':customerId', String(customerId)), params, true)
|
|
701
|
-
.pipe(map((result) => {
|
|
702
|
-
}));
|
|
703
|
-
}
|
|
704
|
-
setMigratedPropToUsers(users) {
|
|
705
|
-
users.forEach((user) => {
|
|
706
|
-
const migratedUser = this.migratedUsers.filter((migratedUser) => migratedUser.userid === user.email);
|
|
707
|
-
if (migratedUser && migratedUser[0]) {
|
|
708
|
-
user.roleName = '';
|
|
709
|
-
user.isMigrated = true;
|
|
710
|
-
user.status = 'Migrated';
|
|
711
|
-
user.webexUUID = migratedUser[0].webexUUID;
|
|
712
|
-
}
|
|
713
|
-
else {
|
|
714
|
-
user.roleName = 'Dedicated Instance Calling user';
|
|
715
|
-
user.isMigrated = false;
|
|
716
|
-
user.status = 'Active';
|
|
717
|
-
user.webexUUID = '';
|
|
718
|
-
}
|
|
719
|
-
});
|
|
720
|
-
console.log('users ttt', users);
|
|
721
|
-
}
|
|
722
|
-
}
|
|
723
|
-
UsersSearchService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersSearchService, deps: [{ token: APIService }, { token: ApiWebexService }, { token: RemoveKynFromIBMService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
724
|
-
UsersSearchService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersSearchService });
|
|
725
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersSearchService, decorators: [{
|
|
726
|
-
type: Injectable
|
|
619
|
+
class UsersSearchService {
|
|
620
|
+
constructor(apiService, webexApiService, removeKynFromIBMService) {
|
|
621
|
+
this.apiService = apiService;
|
|
622
|
+
this.webexApiService = webexApiService;
|
|
623
|
+
this.removeKynFromIBMService = removeKynFromIBMService;
|
|
624
|
+
this.siteId = -1;
|
|
625
|
+
this.userId = '';
|
|
626
|
+
this.userIdExistPending = false;
|
|
627
|
+
this.hasExistedUserId = false;
|
|
628
|
+
this.pageSize = PAGINATION_DEFAULTS.SIZE;
|
|
629
|
+
this.pageIndex = PAGINATION_DEFAULTS.SIZE;
|
|
630
|
+
this.pageSizeOptions = PAGINATION_SIZE_OPTIONS;
|
|
631
|
+
this.foundUsers$ = new BehaviorSubject(null);
|
|
632
|
+
}
|
|
633
|
+
getPagination() {
|
|
634
|
+
return {
|
|
635
|
+
total: this.total,
|
|
636
|
+
pageSizeOptions: this.pageSizeOptions,
|
|
637
|
+
pageSize: this.pageSize,
|
|
638
|
+
pageIndex: this.pageIndex
|
|
639
|
+
};
|
|
640
|
+
}
|
|
641
|
+
setDefaultValues() {
|
|
642
|
+
this.total = 0;
|
|
643
|
+
this.pageSize = PAGINATION_DEFAULTS.SIZE;
|
|
644
|
+
this.pageIndex = PAGINATION_DEFAULTS.INDEX;
|
|
645
|
+
this.pageSizeOptions = PAGINATION_SIZE_OPTIONS;
|
|
646
|
+
}
|
|
647
|
+
quickRegularUsersSearch(searchParams, isMigratedUsersOnly, pageSize) {
|
|
648
|
+
console.log('searchParams = ', searchParams);
|
|
649
|
+
this.searchParams = searchParams || { customerid: this.customerId, siteid: this.siteId };
|
|
650
|
+
return this.apiService.fetchPagination(API.QUICK_USERS_SEARCH, this.pageSize, pageSize || this.pageIndex, this.searchParams)
|
|
651
|
+
.pipe(map((res) => {
|
|
652
|
+
// this.totals = this.totals || {};
|
|
653
|
+
// this.totals['users'] = res.total;
|
|
654
|
+
// this.foundUsers$.next(this.removeKynFromIBMService.removeCUCMS(users, this.customerId));
|
|
655
|
+
if (!isMigratedUsersOnly) {
|
|
656
|
+
const users = res.pageData && res.pageData.length ? res.pageData
|
|
657
|
+
.map(user => new ListUser(user, 'Dedicated Instance Calling user')) : [];
|
|
658
|
+
if (this.migratedUsersIds?.length) {
|
|
659
|
+
this.setMigratedPropToUsers(users);
|
|
660
|
+
}
|
|
661
|
+
this.total = res.total;
|
|
662
|
+
this.foundUsers$.next(users);
|
|
663
|
+
}
|
|
664
|
+
else {
|
|
665
|
+
this.migratedUsersIds = res.pageData && res.pageData.length ? res.pageData
|
|
666
|
+
.map(user => user.userid) : [];
|
|
667
|
+
}
|
|
668
|
+
}));
|
|
669
|
+
// .pipe(this.handleError(true));
|
|
670
|
+
}
|
|
671
|
+
quickWebexUsersSearch(searchParams, isMigratedUsersOnly, pageSize) {
|
|
672
|
+
this.searchParams = searchParams || { customerid: this.customerId, siteid: this.siteId };
|
|
673
|
+
return this.webexApiService.fetchPagination(API.QUICK_USERS_SEARCH, this.pageSize, pageSize || this.pageIndex, this.searchParams)
|
|
674
|
+
.pipe(map((res) => {
|
|
675
|
+
if (!isMigratedUsersOnly) {
|
|
676
|
+
const users = res.pageData && res.pageData.length ? res.pageData
|
|
677
|
+
.map(user => new ListUser(user, 'Dedicated Instance Calling user')) : [];
|
|
678
|
+
if (this.migratedUsersIds?.length) {
|
|
679
|
+
this.setMigratedPropToUsers(users);
|
|
680
|
+
}
|
|
681
|
+
this.total = res.total;
|
|
682
|
+
this.foundUsers$.next(users);
|
|
683
|
+
}
|
|
684
|
+
else {
|
|
685
|
+
this.migratedUsersIds = res.pageData && res.pageData.length ? res.pageData
|
|
686
|
+
.map(user => user.userid) : [];
|
|
687
|
+
}
|
|
688
|
+
}));
|
|
689
|
+
// .pipe(this.handleError(true));
|
|
690
|
+
}
|
|
691
|
+
getMigratedUsers(customerId) {
|
|
692
|
+
return this.webexApiService.fetch(API.WEBEX_USERS.replace(':customerId', String(customerId)), {})
|
|
693
|
+
.pipe(map((result) => {
|
|
694
|
+
if (result && result.length) {
|
|
695
|
+
this.migratedUsers = result.filter((user) => user.webexUUID && user.devices && user.devices.length);
|
|
696
|
+
}
|
|
697
|
+
}));
|
|
698
|
+
}
|
|
699
|
+
getMigratedWebexUsers(customerId) {
|
|
700
|
+
const params = { customerid: customerId, type: 'PERSON' };
|
|
701
|
+
return this.webexApiService.fetch(API.MIGRATED_USERS.replace(':customerId', String(customerId)), params, true)
|
|
702
|
+
.pipe(map((result) => {
|
|
703
|
+
}));
|
|
704
|
+
}
|
|
705
|
+
setMigratedPropToUsers(users) {
|
|
706
|
+
users.forEach((user) => {
|
|
707
|
+
const migratedUser = this.migratedUsers.filter((migratedUser) => migratedUser.userid === user.email);
|
|
708
|
+
if (migratedUser && migratedUser[0]) {
|
|
709
|
+
user.roleName = '';
|
|
710
|
+
user.isMigrated = true;
|
|
711
|
+
user.status = 'Migrated';
|
|
712
|
+
user.webexUUID = migratedUser[0].webexUUID;
|
|
713
|
+
}
|
|
714
|
+
else {
|
|
715
|
+
user.roleName = 'Dedicated Instance Calling user';
|
|
716
|
+
user.isMigrated = false;
|
|
717
|
+
user.status = 'Active';
|
|
718
|
+
user.webexUUID = '';
|
|
719
|
+
}
|
|
720
|
+
});
|
|
721
|
+
console.log('users ttt', users);
|
|
722
|
+
}
|
|
723
|
+
}
|
|
724
|
+
UsersSearchService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersSearchService, deps: [{ token: APIService }, { token: ApiWebexService }, { token: RemoveKynFromIBMService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
725
|
+
UsersSearchService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersSearchService });
|
|
726
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersSearchService, decorators: [{
|
|
727
|
+
type: Injectable
|
|
727
728
|
}], ctorParameters: function () { return [{ type: APIService }, { type: ApiWebexService }, { type: RemoveKynFromIBMService }]; } });
|
|
728
729
|
|
|
729
|
-
class PaginationComponent {
|
|
730
|
-
constructor() {
|
|
731
|
-
this.pageEmitter = new EventEmitter();
|
|
732
|
-
this.pageNumberChangeEmitter = new EventEmitter();
|
|
733
|
-
this.pageSizeOptions = PAGINATION_SIZE_OPTIONS;
|
|
734
|
-
}
|
|
735
|
-
ngOnInit() {
|
|
736
|
-
}
|
|
737
|
-
pageEvent(event) {
|
|
738
|
-
this.pageEmitter.emit(event);
|
|
739
|
-
}
|
|
740
|
-
changePerPageNumber(event) {
|
|
741
|
-
this.pageNumberChangeEmitter.emit(event.value);
|
|
742
|
-
}
|
|
743
|
-
}
|
|
744
|
-
PaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
745
|
-
PaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PaginationComponent, selector: "app-pagination", inputs: { pagination: "pagination", showPageSizeOptions: "showPageSizeOptions", showRefreshButton: "showRefreshButton", lengthPending: "lengthPending" }, outputs: { pageEmitter: "pageEmitter", pageNumberChangeEmitter: "pageNumberChangeEmitter" }, ngImport: i0, template: "<div class=\"flex-box pagination\">\n <div class=\"page-indexes-box\">\n <mat-paginator\n [id]=\"'commonPagination'\"\n [hidePageSize]=\"true\"\n [length]=\"pagination.total\"\n [pageIndex]=\"pagination.pageIndex\"\n [pageSize]=\"pagination.pageSize\"\n [pageSizeOptions]=\"pagination.pageSizeOptions\"\n (page)=\"pageEvent($event)\">\n </mat-paginator>\n <mat-spinner class=\"length-spinner\" [diameter]=\"20\" mode=\"indeterminate\" *ngIf=\"lengthPending\">\n </mat-spinner>\n </div>\n\n <div class=\"flex-box per-page-block\" *ngIf=\"showPageSizeOptions\">\n <div class=\"item_per_page\">Items per page:</div>\n <div class=\"select-box select-page-size\">\n <mat-select [(ngModel)]=\"pagination.pageSize\" (selectionChange)=\"changePerPageNumber($event)\" #page\n [id]=\"'commonPaginationSelect'\">\n <mat-option *ngFor=\"let option of pageSizeOptions; let i = index;\" [id]=\"'paginationSelectOpt_' + i\" [value]=\"option\">{{option}}</mat-option>\n </mat-select>\n </div>\n\n </div>\n</div>\n", styles: [".search-header-refresh-icon{align-items:center;line-height:54px;margin-left:10px}button[mat-icon-button] i{font-size:18px}mat-spinner.length-spinner{position:absolute;right:120px}h3,.search-header-refresh-icon{float:left}.page-options,.mat-paginator{float:right}.per-page-block mat-form-field{width:70px!important}.per-page-block span{margin-right:20px}.pagination{display:flex;justify-content:flex-end}.select-page-size{width:60px;margin:0 0 0 15px;padding:0 10px}.item_per_page{line-height:35px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }] });
|
|
746
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PaginationComponent, decorators: [{
|
|
747
|
-
type: Component,
|
|
748
|
-
args: [{ selector: 'app-pagination', template: "<div class=\"flex-box pagination\">\n <div class=\"page-indexes-box\">\n <mat-paginator\n [id]=\"'commonPagination'\"\n [hidePageSize]=\"true\"\n [length]=\"pagination.total\"\n [pageIndex]=\"pagination.pageIndex\"\n [pageSize]=\"pagination.pageSize\"\n [pageSizeOptions]=\"pagination.pageSizeOptions\"\n (page)=\"pageEvent($event)\">\n </mat-paginator>\n <mat-spinner class=\"length-spinner\" [diameter]=\"20\" mode=\"indeterminate\" *ngIf=\"lengthPending\">\n </mat-spinner>\n </div>\n\n <div class=\"flex-box per-page-block\" *ngIf=\"showPageSizeOptions\">\n <div class=\"item_per_page\">Items per page:</div>\n <div class=\"select-box select-page-size\">\n <mat-select [(ngModel)]=\"pagination.pageSize\" (selectionChange)=\"changePerPageNumber($event)\" #page\n [id]=\"'commonPaginationSelect'\">\n <mat-option *ngFor=\"let option of pageSizeOptions; let i = index;\" [id]=\"'paginationSelectOpt_' + i\" [value]=\"option\">{{option}}</mat-option>\n </mat-select>\n </div>\n\n </div>\n</div>\n", styles: [".search-header-refresh-icon{align-items:center;line-height:54px;margin-left:10px}button[mat-icon-button] i{font-size:18px}mat-spinner.length-spinner{position:absolute;right:120px}h3,.search-header-refresh-icon{float:left}.page-options,.mat-paginator{float:right}.per-page-block mat-form-field{width:70px!important}.per-page-block span{margin-right:20px}.pagination{display:flex;justify-content:flex-end}.select-page-size{width:60px;margin:0 0 0 15px;padding:0 10px}.item_per_page{line-height:35px}\n"] }]
|
|
749
|
-
}], ctorParameters: function () { return []; }, propDecorators: { pagination: [{
|
|
750
|
-
type: Input
|
|
751
|
-
}], showPageSizeOptions: [{
|
|
752
|
-
type: Input
|
|
753
|
-
}], showRefreshButton: [{
|
|
754
|
-
type: Input
|
|
755
|
-
}], lengthPending: [{
|
|
756
|
-
type: Input
|
|
757
|
-
}], pageEmitter: [{
|
|
758
|
-
type: Output
|
|
759
|
-
}], pageNumberChangeEmitter: [{
|
|
760
|
-
type: Output
|
|
730
|
+
class PaginationComponent {
|
|
731
|
+
constructor() {
|
|
732
|
+
this.pageEmitter = new EventEmitter();
|
|
733
|
+
this.pageNumberChangeEmitter = new EventEmitter();
|
|
734
|
+
this.pageSizeOptions = PAGINATION_SIZE_OPTIONS;
|
|
735
|
+
}
|
|
736
|
+
ngOnInit() {
|
|
737
|
+
}
|
|
738
|
+
pageEvent(event) {
|
|
739
|
+
this.pageEmitter.emit(event);
|
|
740
|
+
}
|
|
741
|
+
changePerPageNumber(event) {
|
|
742
|
+
this.pageNumberChangeEmitter.emit(event.value);
|
|
743
|
+
}
|
|
744
|
+
}
|
|
745
|
+
PaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
746
|
+
PaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PaginationComponent, selector: "app-pagination", inputs: { pagination: "pagination", showPageSizeOptions: "showPageSizeOptions", showRefreshButton: "showRefreshButton", lengthPending: "lengthPending" }, outputs: { pageEmitter: "pageEmitter", pageNumberChangeEmitter: "pageNumberChangeEmitter" }, ngImport: i0, template: "<div class=\"flex-box pagination\">\r\n <div class=\"page-indexes-box\">\r\n <mat-paginator\r\n [id]=\"'commonPagination'\"\r\n [hidePageSize]=\"true\"\r\n [length]=\"pagination.total\"\r\n [pageIndex]=\"pagination.pageIndex\"\r\n [pageSize]=\"pagination.pageSize\"\r\n [pageSizeOptions]=\"pagination.pageSizeOptions\"\r\n (page)=\"pageEvent($event)\">\r\n </mat-paginator>\r\n <mat-spinner class=\"length-spinner\" [diameter]=\"20\" mode=\"indeterminate\" *ngIf=\"lengthPending\">\r\n </mat-spinner>\r\n </div>\r\n\r\n <div class=\"flex-box per-page-block\" *ngIf=\"showPageSizeOptions\">\r\n <div class=\"item_per_page\">Items per page:</div>\r\n <div class=\"select-box select-page-size\">\r\n <mat-select [(ngModel)]=\"pagination.pageSize\" (selectionChange)=\"changePerPageNumber($event)\" #page\r\n [id]=\"'commonPaginationSelect'\">\r\n <mat-option *ngFor=\"let option of pageSizeOptions; let i = index;\" [id]=\"'paginationSelectOpt_' + i\" [value]=\"option\">{{option}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n", styles: [".search-header-refresh-icon{align-items:center;line-height:54px;margin-left:10px}button[mat-icon-button] i{font-size:18px}mat-spinner.length-spinner{position:absolute;right:120px}h3,.search-header-refresh-icon{float:left}.page-options,.mat-paginator{float:right}.per-page-block mat-form-field{width:70px!important}.per-page-block span{margin-right:20px}.pagination{display:flex;justify-content:flex-end}.select-page-size{width:60px;margin:0 0 0 15px;padding:0 10px}.item_per_page{line-height:35px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }] });
|
|
747
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PaginationComponent, decorators: [{
|
|
748
|
+
type: Component,
|
|
749
|
+
args: [{ selector: 'app-pagination', template: "<div class=\"flex-box pagination\">\r\n <div class=\"page-indexes-box\">\r\n <mat-paginator\r\n [id]=\"'commonPagination'\"\r\n [hidePageSize]=\"true\"\r\n [length]=\"pagination.total\"\r\n [pageIndex]=\"pagination.pageIndex\"\r\n [pageSize]=\"pagination.pageSize\"\r\n [pageSizeOptions]=\"pagination.pageSizeOptions\"\r\n (page)=\"pageEvent($event)\">\r\n </mat-paginator>\r\n <mat-spinner class=\"length-spinner\" [diameter]=\"20\" mode=\"indeterminate\" *ngIf=\"lengthPending\">\r\n </mat-spinner>\r\n </div>\r\n\r\n <div class=\"flex-box per-page-block\" *ngIf=\"showPageSizeOptions\">\r\n <div class=\"item_per_page\">Items per page:</div>\r\n <div class=\"select-box select-page-size\">\r\n <mat-select [(ngModel)]=\"pagination.pageSize\" (selectionChange)=\"changePerPageNumber($event)\" #page\r\n [id]=\"'commonPaginationSelect'\">\r\n <mat-option *ngFor=\"let option of pageSizeOptions; let i = index;\" [id]=\"'paginationSelectOpt_' + i\" [value]=\"option\">{{option}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n", styles: [".search-header-refresh-icon{align-items:center;line-height:54px;margin-left:10px}button[mat-icon-button] i{font-size:18px}mat-spinner.length-spinner{position:absolute;right:120px}h3,.search-header-refresh-icon{float:left}.page-options,.mat-paginator{float:right}.per-page-block mat-form-field{width:70px!important}.per-page-block span{margin-right:20px}.pagination{display:flex;justify-content:flex-end}.select-page-size{width:60px;margin:0 0 0 15px;padding:0 10px}.item_per_page{line-height:35px}\n"] }]
|
|
750
|
+
}], ctorParameters: function () { return []; }, propDecorators: { pagination: [{
|
|
751
|
+
type: Input
|
|
752
|
+
}], showPageSizeOptions: [{
|
|
753
|
+
type: Input
|
|
754
|
+
}], showRefreshButton: [{
|
|
755
|
+
type: Input
|
|
756
|
+
}], lengthPending: [{
|
|
757
|
+
type: Input
|
|
758
|
+
}], pageEmitter: [{
|
|
759
|
+
type: Output
|
|
760
|
+
}], pageNumberChangeEmitter: [{
|
|
761
|
+
type: Output
|
|
761
762
|
}] } });
|
|
762
763
|
|
|
763
|
-
class AppLoaderComponent {
|
|
764
|
-
constructor() {
|
|
765
|
-
}
|
|
766
|
-
}
|
|
767
|
-
AppLoaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AppLoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
768
|
-
AppLoaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AppLoaderComponent, selector: "app-loader", ngImport: i0, template: "<div class=\"overlay\">\n <mat-progress-spinner\n class=\"page-spinner\"\n mode=\"indeterminate\"\n [diameter]=\"120\"></mat-progress-spinner>\n</div>\n", styles: [".overlay{position:fixed;width:100%;height:100%;inset:0;background-color:#fff3;z-index:200}\n"], dependencies: [{ kind: "component", type: i3$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
769
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AppLoaderComponent, decorators: [{
|
|
770
|
-
type: Component,
|
|
771
|
-
args: [{ selector: 'app-loader', encapsulation: ViewEncapsulation.None, template: "<div class=\"overlay\">\n <mat-progress-spinner\n class=\"page-spinner\"\n mode=\"indeterminate\"\n [diameter]=\"120\"></mat-progress-spinner>\n</div>\n", styles: [".overlay{position:fixed;width:100%;height:100%;inset:0;background-color:#fff3;z-index:200}\n"] }]
|
|
764
|
+
class AppLoaderComponent {
|
|
765
|
+
constructor() {
|
|
766
|
+
}
|
|
767
|
+
}
|
|
768
|
+
AppLoaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AppLoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
769
|
+
AppLoaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AppLoaderComponent, selector: "app-loader", ngImport: i0, template: "<div class=\"overlay\">\r\n <mat-progress-spinner\r\n class=\"page-spinner\"\r\n mode=\"indeterminate\"\r\n [diameter]=\"120\"></mat-progress-spinner>\r\n</div>\r\n", styles: [".overlay{position:fixed;width:100%;height:100%;inset:0;background-color:#fff3;z-index:200}\n"], dependencies: [{ kind: "component", type: i3$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
770
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AppLoaderComponent, decorators: [{
|
|
771
|
+
type: Component,
|
|
772
|
+
args: [{ selector: 'app-loader', encapsulation: ViewEncapsulation.None, template: "<div class=\"overlay\">\r\n <mat-progress-spinner\r\n class=\"page-spinner\"\r\n mode=\"indeterminate\"\r\n [diameter]=\"120\"></mat-progress-spinner>\r\n</div>\r\n", styles: [".overlay{position:fixed;width:100%;height:100%;inset:0;background-color:#fff3;z-index:200}\n"] }]
|
|
772
773
|
}], ctorParameters: function () { return []; } });
|
|
773
774
|
|
|
774
|
-
var EntityChangeType;
|
|
775
|
-
(function (EntityChangeType) {
|
|
776
|
-
EntityChangeType["added"] = "added";
|
|
777
|
-
EntityChangeType["updated"] = "updated";
|
|
778
|
-
EntityChangeType["existing"] = "existing";
|
|
779
|
-
EntityChangeType["removed"] = "removed";
|
|
780
|
-
EntityChangeType["unassociated"] = "unassociated";
|
|
781
|
-
})(EntityChangeType || (EntityChangeType = {}));
|
|
782
|
-
var DnRangeType;
|
|
783
|
-
(function (DnRangeType) {
|
|
784
|
-
DnRangeType["extension"] = "EXTENSION";
|
|
785
|
-
DnRangeType["cpg"] = "CPG";
|
|
786
|
-
DnRangeType["callpark"] = "CALLPARK";
|
|
787
|
-
DnRangeType["huntgroup"] = "HUNTGROUP";
|
|
788
|
-
DnRangeType["meetme"] = "MEETME";
|
|
789
|
-
DnRangeType["did"] = "DID";
|
|
775
|
+
var EntityChangeType;
|
|
776
|
+
(function (EntityChangeType) {
|
|
777
|
+
EntityChangeType["added"] = "added";
|
|
778
|
+
EntityChangeType["updated"] = "updated";
|
|
779
|
+
EntityChangeType["existing"] = "existing";
|
|
780
|
+
EntityChangeType["removed"] = "removed";
|
|
781
|
+
EntityChangeType["unassociated"] = "unassociated";
|
|
782
|
+
})(EntityChangeType || (EntityChangeType = {}));
|
|
783
|
+
var DnRangeType;
|
|
784
|
+
(function (DnRangeType) {
|
|
785
|
+
DnRangeType["extension"] = "EXTENSION";
|
|
786
|
+
DnRangeType["cpg"] = "CPG";
|
|
787
|
+
DnRangeType["callpark"] = "CALLPARK";
|
|
788
|
+
DnRangeType["huntgroup"] = "HUNTGROUP";
|
|
789
|
+
DnRangeType["meetme"] = "MEETME";
|
|
790
|
+
DnRangeType["did"] = "DID";
|
|
790
791
|
})(DnRangeType || (DnRangeType = {}));
|
|
791
792
|
|
|
792
|
-
class DnsService {
|
|
793
|
-
constructor(apiService, apiWebexService) {
|
|
794
|
-
this.apiService = apiService;
|
|
795
|
-
this.apiWebexService = apiWebexService;
|
|
796
|
-
this.availableNumbers = {};
|
|
797
|
-
this.phoneNumbers = [];
|
|
798
|
-
}
|
|
799
|
-
getNumberRange(siteId, routePartition, withdids, from, pageSize) {
|
|
800
|
-
// @ts-ignore
|
|
801
|
-
if (this.availableNumbers[routePartition]?.length) {
|
|
802
|
-
return new Observable(observer => {
|
|
803
|
-
// @ts-ignore
|
|
804
|
-
observer.next(this.availableNumbers[routePartition]);
|
|
805
|
-
});
|
|
806
|
-
}
|
|
807
|
-
this.availableDidPatternsMappedToDn = {};
|
|
808
|
-
pageSize = pageSize ? pageSize : 20;
|
|
809
|
-
const params = { dntype: DnRangeType.extension, routepartition: routePartition, size: pageSize, page: 0 };
|
|
810
|
-
if (withdids) {
|
|
811
|
-
// @ts-ignore
|
|
812
|
-
params['withdids'] = 'true';
|
|
813
|
-
}
|
|
814
|
-
if (from) {
|
|
815
|
-
// @ts-ignore
|
|
816
|
-
params['from'] = from;
|
|
817
|
-
}
|
|
818
|
-
// @ts-ignore
|
|
819
|
-
this.availableNumbers[routePartition] = this.availableNumbers[routePartition] || [];
|
|
820
|
-
return this.apiService.fetch(API.AVAILABLE_DN_IN_RANGES.replace(':siteId', siteId), params)
|
|
821
|
-
.pipe(map((res) => {
|
|
822
|
-
res.availableNumberList.forEach((availableNumber) => {
|
|
823
|
-
this.setAvailableDidMappedToDn(availableNumber);
|
|
824
|
-
// @ts-ignore
|
|
825
|
-
this.availableNumbers[routePartition] = [...this.availableNumbers[routePartition], ...this.getUnwrapNumberRange(availableNumber)];
|
|
826
|
-
});
|
|
827
|
-
}));
|
|
828
|
-
// .pipe(this.handleError(true, false));
|
|
829
|
-
}
|
|
830
|
-
setAvailableDidMappedToDn(availableNumber) {
|
|
831
|
-
if (availableNumber.unUsedNumbersWithDids && availableNumber.unUsedNumbersWithDids.length) {
|
|
832
|
-
availableNumber.unUsedNumbersWithDids.forEach((numberWithDids) => {
|
|
833
|
-
const dn = numberWithDids['unUsedNumber'];
|
|
834
|
-
this.availableDidPatternsMappedToDn[dn] = [{}];
|
|
835
|
-
if (numberWithDids['translationPatternList'] && numberWithDids['translationPatternList'].length > 0) {
|
|
836
|
-
this.availableDidPatternsMappedToDn[dn] = numberWithDids['translationPatternList'];
|
|
837
|
-
this.availableDidPatternsMappedToDn[dn][0]['mappedDids'] = [{}];
|
|
838
|
-
if (numberWithDids['mappedDids'] && numberWithDids['mappedDids'].length > 0) {
|
|
839
|
-
this.availableDidPatternsMappedToDn[dn][0]['mappedDids'] = numberWithDids['mappedDids'];
|
|
840
|
-
}
|
|
841
|
-
}
|
|
842
|
-
this.availableDidPatternsMappedToDn[dn][0]['vm'] = numberWithDids['vm'];
|
|
843
|
-
});
|
|
844
|
-
}
|
|
845
|
-
}
|
|
846
|
-
getUnwrapNumberRange(availableNumber) {
|
|
847
|
-
let unwrapNumberRange = this.unwrapNumberRange(availableNumber.phoneNumberRange.from, availableNumber.phoneNumberRange.to)
|
|
848
|
-
.map((unwrappedNumber) => {
|
|
849
|
-
const dn = availableNumber.phoneNumberRange.prefix + unwrappedNumber;
|
|
850
|
-
let str = dn;
|
|
851
|
-
if (this.availableDidPatternsMappedToDn[dn] && this.availableDidPatternsMappedToDn[dn].length > 0) {
|
|
852
|
-
if (this.availableDidPatternsMappedToDn[dn][0]['mappedDids'] && this.availableDidPatternsMappedToDn[dn][0]['mappedDids'].length > 0) {
|
|
853
|
-
str += ' DID: ' + (this.availableDidPatternsMappedToDn[dn][0]['mappedDids'].length > 1 ? 'multiple' :
|
|
854
|
-
this.availableDidPatternsMappedToDn[dn][0]['mappedDids'][0]);
|
|
855
|
-
}
|
|
856
|
-
if (this.availableDidPatternsMappedToDn[dn][0]['vm']) {
|
|
857
|
-
str += ' In Use - VM';
|
|
858
|
-
}
|
|
859
|
-
}
|
|
860
|
-
return str;
|
|
861
|
-
});
|
|
862
|
-
unwrapNumberRange = unwrapNumberRange.filter((unwrappedNumber) => !availableNumber.usedNumbers.includes(unwrappedNumber));
|
|
863
|
-
return unwrapNumberRange;
|
|
864
|
-
}
|
|
865
|
-
unwrapNumberRange(start, end) {
|
|
866
|
-
const regExp = /(^0+)/;
|
|
867
|
-
let leadingZeros = '';
|
|
868
|
-
const matches = start.match(regExp);
|
|
869
|
-
if (matches) {
|
|
870
|
-
leadingZeros = matches[1];
|
|
871
|
-
}
|
|
872
|
-
const startNumeric = new Big(start);
|
|
873
|
-
const endNumeric = new Big(end);
|
|
874
|
-
// @ts-ignore
|
|
875
|
-
return Array.from({ length: (endNumeric.minus(startNumeric).plus(new Big(1)).toFixed(0)) }, (v, k) => {
|
|
876
|
-
const number = String(startNumeric.plus(new Big(k)).toFixed(0));
|
|
877
|
-
if ((leadingZeros + number).length > start.length) {
|
|
878
|
-
leadingZeros = leadingZeros.substr(1);
|
|
879
|
-
}
|
|
880
|
-
return leadingZeros + number;
|
|
881
|
-
});
|
|
882
|
-
}
|
|
883
|
-
fetchPhoneNumbers(customerId, locationId) {
|
|
884
|
-
const params = {
|
|
885
|
-
available: true,
|
|
886
|
-
numberType: 'NUMBER'
|
|
887
|
-
};
|
|
888
|
-
return this.apiWebexService.fetch(API.PHONE_NUMBERS.replace(':customerId', String(customerId)).replace(':locationId', locationId), params)
|
|
889
|
-
.pipe(map((result) => {
|
|
890
|
-
if (result?.length) {
|
|
891
|
-
this.phoneNumbers = result.map((item) => item.phoneNumber);
|
|
892
|
-
}
|
|
893
|
-
return result;
|
|
894
|
-
}));
|
|
895
|
-
}
|
|
896
|
-
}
|
|
897
|
-
DnsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DnsService, deps: [{ token: APIService }, { token: ApiWebexService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
898
|
-
DnsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DnsService });
|
|
899
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DnsService, decorators: [{
|
|
900
|
-
type: Injectable
|
|
793
|
+
class DnsService {
|
|
794
|
+
constructor(apiService, apiWebexService) {
|
|
795
|
+
this.apiService = apiService;
|
|
796
|
+
this.apiWebexService = apiWebexService;
|
|
797
|
+
this.availableNumbers = {};
|
|
798
|
+
this.phoneNumbers = [];
|
|
799
|
+
}
|
|
800
|
+
getNumberRange(siteId, routePartition, withdids, from, pageSize) {
|
|
801
|
+
// @ts-ignore
|
|
802
|
+
if (this.availableNumbers[routePartition]?.length) {
|
|
803
|
+
return new Observable(observer => {
|
|
804
|
+
// @ts-ignore
|
|
805
|
+
observer.next(this.availableNumbers[routePartition]);
|
|
806
|
+
});
|
|
807
|
+
}
|
|
808
|
+
this.availableDidPatternsMappedToDn = {};
|
|
809
|
+
pageSize = pageSize ? pageSize : 20;
|
|
810
|
+
const params = { dntype: DnRangeType.extension, routepartition: routePartition, size: pageSize, page: 0 };
|
|
811
|
+
if (withdids) {
|
|
812
|
+
// @ts-ignore
|
|
813
|
+
params['withdids'] = 'true';
|
|
814
|
+
}
|
|
815
|
+
if (from) {
|
|
816
|
+
// @ts-ignore
|
|
817
|
+
params['from'] = from;
|
|
818
|
+
}
|
|
819
|
+
// @ts-ignore
|
|
820
|
+
this.availableNumbers[routePartition] = this.availableNumbers[routePartition] || [];
|
|
821
|
+
return this.apiService.fetch(API.AVAILABLE_DN_IN_RANGES.replace(':siteId', siteId), params)
|
|
822
|
+
.pipe(map((res) => {
|
|
823
|
+
res.availableNumberList.forEach((availableNumber) => {
|
|
824
|
+
this.setAvailableDidMappedToDn(availableNumber);
|
|
825
|
+
// @ts-ignore
|
|
826
|
+
this.availableNumbers[routePartition] = [...this.availableNumbers[routePartition], ...this.getUnwrapNumberRange(availableNumber)];
|
|
827
|
+
});
|
|
828
|
+
}));
|
|
829
|
+
// .pipe(this.handleError(true, false));
|
|
830
|
+
}
|
|
831
|
+
setAvailableDidMappedToDn(availableNumber) {
|
|
832
|
+
if (availableNumber.unUsedNumbersWithDids && availableNumber.unUsedNumbersWithDids.length) {
|
|
833
|
+
availableNumber.unUsedNumbersWithDids.forEach((numberWithDids) => {
|
|
834
|
+
const dn = numberWithDids['unUsedNumber'];
|
|
835
|
+
this.availableDidPatternsMappedToDn[dn] = [{}];
|
|
836
|
+
if (numberWithDids['translationPatternList'] && numberWithDids['translationPatternList'].length > 0) {
|
|
837
|
+
this.availableDidPatternsMappedToDn[dn] = numberWithDids['translationPatternList'];
|
|
838
|
+
this.availableDidPatternsMappedToDn[dn][0]['mappedDids'] = [{}];
|
|
839
|
+
if (numberWithDids['mappedDids'] && numberWithDids['mappedDids'].length > 0) {
|
|
840
|
+
this.availableDidPatternsMappedToDn[dn][0]['mappedDids'] = numberWithDids['mappedDids'];
|
|
841
|
+
}
|
|
842
|
+
}
|
|
843
|
+
this.availableDidPatternsMappedToDn[dn][0]['vm'] = numberWithDids['vm'];
|
|
844
|
+
});
|
|
845
|
+
}
|
|
846
|
+
}
|
|
847
|
+
getUnwrapNumberRange(availableNumber) {
|
|
848
|
+
let unwrapNumberRange = this.unwrapNumberRange(availableNumber.phoneNumberRange.from, availableNumber.phoneNumberRange.to)
|
|
849
|
+
.map((unwrappedNumber) => {
|
|
850
|
+
const dn = availableNumber.phoneNumberRange.prefix + unwrappedNumber;
|
|
851
|
+
let str = dn;
|
|
852
|
+
if (this.availableDidPatternsMappedToDn[dn] && this.availableDidPatternsMappedToDn[dn].length > 0) {
|
|
853
|
+
if (this.availableDidPatternsMappedToDn[dn][0]['mappedDids'] && this.availableDidPatternsMappedToDn[dn][0]['mappedDids'].length > 0) {
|
|
854
|
+
str += ' DID: ' + (this.availableDidPatternsMappedToDn[dn][0]['mappedDids'].length > 1 ? 'multiple' :
|
|
855
|
+
this.availableDidPatternsMappedToDn[dn][0]['mappedDids'][0]);
|
|
856
|
+
}
|
|
857
|
+
if (this.availableDidPatternsMappedToDn[dn][0]['vm']) {
|
|
858
|
+
str += ' In Use - VM';
|
|
859
|
+
}
|
|
860
|
+
}
|
|
861
|
+
return str;
|
|
862
|
+
});
|
|
863
|
+
unwrapNumberRange = unwrapNumberRange.filter((unwrappedNumber) => !availableNumber.usedNumbers.includes(unwrappedNumber));
|
|
864
|
+
return unwrapNumberRange;
|
|
865
|
+
}
|
|
866
|
+
unwrapNumberRange(start, end) {
|
|
867
|
+
const regExp = /(^0+)/;
|
|
868
|
+
let leadingZeros = '';
|
|
869
|
+
const matches = start.match(regExp);
|
|
870
|
+
if (matches) {
|
|
871
|
+
leadingZeros = matches[1];
|
|
872
|
+
}
|
|
873
|
+
const startNumeric = new Big(start);
|
|
874
|
+
const endNumeric = new Big(end);
|
|
875
|
+
// @ts-ignore
|
|
876
|
+
return Array.from({ length: (endNumeric.minus(startNumeric).plus(new Big(1)).toFixed(0)) }, (v, k) => {
|
|
877
|
+
const number = String(startNumeric.plus(new Big(k)).toFixed(0));
|
|
878
|
+
if ((leadingZeros + number).length > start.length) {
|
|
879
|
+
leadingZeros = leadingZeros.substr(1);
|
|
880
|
+
}
|
|
881
|
+
return leadingZeros + number;
|
|
882
|
+
});
|
|
883
|
+
}
|
|
884
|
+
fetchPhoneNumbers(customerId, locationId) {
|
|
885
|
+
const params = {
|
|
886
|
+
available: true,
|
|
887
|
+
numberType: 'NUMBER'
|
|
888
|
+
};
|
|
889
|
+
return this.apiWebexService.fetch(API.PHONE_NUMBERS.replace(':customerId', String(customerId)).replace(':locationId', locationId), params)
|
|
890
|
+
.pipe(map((result) => {
|
|
891
|
+
if (result?.length) {
|
|
892
|
+
this.phoneNumbers = result.map((item) => item.phoneNumber);
|
|
893
|
+
}
|
|
894
|
+
return result;
|
|
895
|
+
}));
|
|
896
|
+
}
|
|
897
|
+
}
|
|
898
|
+
DnsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DnsService, deps: [{ token: APIService }, { token: ApiWebexService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
899
|
+
DnsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DnsService });
|
|
900
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DnsService, decorators: [{
|
|
901
|
+
type: Injectable
|
|
901
902
|
}], ctorParameters: function () { return [{ type: APIService }, { type: ApiWebexService }]; } });
|
|
902
903
|
|
|
903
|
-
// for test only
|
|
904
|
-
const LOCATION = 'Y2lzY29zcGFyazovL3VzL0xPQ0FUSU9OLzE2YjY0NjljLTBjZmQtNDJjMS1iOWJjLTUyN2FlZTNhN2RlOQ';
|
|
905
|
-
class MoveUserStepperComponent {
|
|
906
|
-
get currentNumber() {
|
|
907
|
-
if (this.user?.devices?.length && this.user.devices[0]?.lineAssociations && this.user.devices[0].lineAssociations[0]) {
|
|
908
|
-
return this.user.devices[0].lineAssociations[0].directoryNumber.directoryNumber;
|
|
909
|
-
}
|
|
910
|
-
return '';
|
|
911
|
-
}
|
|
912
|
-
constructor(dnsService) {
|
|
913
|
-
this.dnsService = dnsService;
|
|
914
|
-
this.runMoveUser = new EventEmitter();
|
|
915
|
-
this.cancel = new EventEmitter();
|
|
916
|
-
this.isLinear =
|
|
917
|
-
this.phoneNumberPending = false;
|
|
918
|
-
}
|
|
919
|
-
ngOnInit() {
|
|
920
|
-
if (this.user) {
|
|
921
|
-
this.user.moveType = {
|
|
922
|
-
phoneNumber: '1',
|
|
923
|
-
extension: '1'
|
|
924
|
-
};
|
|
925
|
-
}
|
|
926
|
-
}
|
|
927
|
-
onStepChange(event) {
|
|
928
|
-
// alert('step change ' + event.selectedIndex);
|
|
929
|
-
/*if (event.selectedIndex === 4) {
|
|
930
|
-
this.runMoveUser.emit();
|
|
931
|
-
}*/
|
|
932
|
-
}
|
|
933
|
-
selectPhoneNumberMigrationType(event) {
|
|
934
|
-
if (event.value && event.value === '2') {
|
|
935
|
-
this.getPhoneNumbers();
|
|
936
|
-
}
|
|
937
|
-
}
|
|
938
|
-
onPhoneNumberChange(event) {
|
|
939
|
-
this.user.newNumber;
|
|
940
|
-
}
|
|
941
|
-
onExtensionCHange(event) {
|
|
942
|
-
this.user.newExtension;
|
|
943
|
-
}
|
|
944
|
-
isFieldAvailable(type, value) {
|
|
945
|
-
if (this.user?.moveType) {
|
|
946
|
-
return this.user.moveType[type] && this.user.moveType[type] === value;
|
|
947
|
-
}
|
|
948
|
-
return false;
|
|
949
|
-
}
|
|
950
|
-
getPhoneNumbers() {
|
|
951
|
-
this.phoneNumberPending = true;
|
|
952
|
-
this.dnsService.fetchPhoneNumbers(this.customerId, LOCATION)
|
|
953
|
-
.subscribe(() => {
|
|
954
|
-
this.phoneNumberPending = false;
|
|
955
|
-
}, () => this.phoneNumberPending = false);
|
|
956
|
-
}
|
|
957
|
-
goNextStep(stepper) {
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
[
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
}
|
|
970
|
-
MoveUserStepperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MoveUserStepperComponent, deps: [{ token: DnsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
971
|
-
MoveUserStepperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: MoveUserStepperComponent, selector: "app-move-user-stepper", inputs: { user: "user", customerId: "customerId" }, outputs: { runMoveUser: "runMoveUser", cancel: "cancel" }, ngImport: i0, template: "<mat-stepper *ngIf=\"user?.moveType\" (selectionChange)=\"onStepChange($event)\" [linear]=\"isLinear\" labelPosition=\"bottom\" #stepper>\n <mat-step>\n <div class=\"step-title\">Step 1: Select location</div>\n<!-- <form>-->\n <ng-template matStepLabel>Select location</ng-template>\n <mat-label class=\"mat-label\">Phone number</mat-label>\n <mat-radio-group\n class=\"radio-group\"\n [(ngModel)]=\"user.moveType.phoneNumber\"\n name=\"phoneNumber\" (change)=\"selectPhoneNumberMigrationType($event)\">\n <mat-radio-button class=\"radio-button\" value=\"1\" color=\"primary\">Keep current number {{currentNumber}}</mat-radio-button>\n <mat-radio-button class=\"radio-button\" value=\"2\" color=\"primary\">Select a new number</mat-radio-button>\n\n <div *ngIf=\"user.moveType.phoneNumber === '2'\" class=\"select-container\">\n <mat-progress-spinner *ngIf=\"phoneNumberPending\"\n class=\"field-spinner\" mode=\"indeterminate\"\n [diameter]=\"30\"></mat-progress-spinner>\n\n <mat-select class=\"select\" placeholder=\"Select number\" [(ngModel)]=\"user.newNumber\"\n (selectionChange)=\"onPhoneNumberChange($event)\">\n <mat-option *ngFor=\"let option of dnsService.phoneNumbers\" value=\"option\">{{option}}</mat-option>\n </mat-select>\n </div>\n\n <mat-radio-button class=\"radio-button\" value=\"3\" color=\"primary\">Remove number</mat-radio-button>\n </mat-radio-group>\n <mat-label class=\"mat-label\">Extension</mat-label>\n <mat-radio-group class=\"radio-group\" name=\"extension\"\n [(ngModel)]=\"user.moveType.extension\">\n <mat-radio-button class=\"radio-button\" value=\"1\" color=\"primary\">Keep current extension</mat-radio-button>\n <mat-radio-button class=\"radio-button\" value=\"2\" color=\"primary\">Select a new extension</mat-radio-button>\n <mat-form-field *ngIf=\"user.moveType.extension === '2'\" appearance=\"outline\">\n <input matInput type=\"text\" (change)=\"onExtensionCHange($event)\"\n [(ngModel)]=\"user.newExtension\"\n [placeholder]=\"'Enter extension'\" />\n </mat-form-field>\n\n <mat-radio-button class=\"radio-button\" value=\"3\" color=\"primary\">Remove extension</mat-radio-button>\n </mat-radio-group>\n<!-- </form>-->\n <div class=\"step-actions\">\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">Next</button>\n <button mat-button class=\"webex-btn btn-cancel\" (click)=\"cancel.emit()\">Cancel</button>\n </div>\n </mat-step>\n <!--<mat-step [aria-labelledby]=\"true ? 'disabled_af' : null\">\n <div class=\"step-title\">Step 2: Device eligibility check</div>\n <ng-template matStepLabel>Device eligibility check</ng-template>\n <form></form>\n <div class=\"step-actions\">\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">Next</button>\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>Previous</button>\n </div>\n </mat-step>-->\n <!--<mat-step [aria-labelledby]=\"true ? 'disabled_af' : null\">\n <div class=\"step-title\">Step 3: Validation</div>\n <form>\n <ng-template matStepLabel>Validation</ng-template>\n <mat-label class=\"mat-label\">Validation Success!</mat-label>\n <p class=\"validation-text\">There is no issue for moving this user to the new location, $MTlocationname. Please be aware of the changes below once the user is being moved to the new location.</p>\n <mat-label class=\"mat-label\">Expected changes</mat-label>\n <ul>\n <li>Tablet device (TABAVICK) needs to be reconfigured with Webex App. User will receive an email with link to download.</li>\n <li>Cisco 8875 (SEP751FC9BAB854) will not be migrated.</li>\n <li>The user will be removed from Call Park Group.</li>\n <li>If the device is using the location level device settings, the device will pick up the new location device settings once the user is moved. If some of the device settings are overwritten at the user level, these user level settings will be retained and the rest of the settings will be picked up at the higher level (organization or location) settings.</li>\n <li>If the current location has a different recording service from the one of the new location, the recording of this user may be lost after moving location.</li>\n </ul>\n <div>\n <mat-checkbox class=\"checkbox\" checked=\"true\" color=\"primary\">I confirm that I understand these conditions. I acknowledge the changes.</mat-checkbox>\n </div>\n </form>\n <div class=\"step-actions\">\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">Next</button>\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>Previous</button>\n </div>\n </mat-step>-->\n <mat-step>\n <div class=\"step-title\">Step 2: Result</div>\n <ng-template matStepLabel>Result</ng-template>\n <form>\n <mat-label class=\"mat-label\">Moving user has been successfully initiated!</mat-label>\n <p class=\"validation-text\">\n The user will be moved to the new location, $MTlocationname.\n <br>\n For the progress of move, please visit the <a class=\"form-link\" href=\"#\">user details</a>.\n </p>\n </form>\n <div class=\"step-actions\">\n <button mat-button class=\"webex-btn btn-done\" matStepperNext (click)=\"runMoveUser.emit()\">Done</button>\n </div>\n </mat-step>\n </mat-stepper>\n", styles: [".mat-stepper-horizontal{height:-moz-fit-content;height:fit-content;max-height:750px;margin:0 auto;width:70%;background-color:transparent}.mat-stepper-horizontal .mat-horizontal-stepper-header-container{margin:0 auto;width:800px}.mat-stepper-horizontal .mat-step-icon{width:18px;height:18px;border:3px solid hsl(0,0%,50.2%)}.mat-stepper-horizontal .mat-step-icon-selected{background-color:#c6c6c6!important;border-color:#19487d}.mat-stepper-horizontal .mat-step-icon-state-number{background-color:#fff}.mat-stepper-horizontal .mat-step-icon-state-edit,.mat-stepper-horizontal .mat-step-header .mat-step-icon-state-done{background-color:#1170cf;border-color:#1170cf}.mat-stepper-horizontal .mat-step-icon-content{display:none}.mat-stepper-horizontal .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child):before,.mat-stepper-horizontal [dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child):before,.mat-stepper-horizontal .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child):after,.mat-stepper-horizontal [dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child):after{border-top-width:3px!important}.mat-stepper-horizontal .mat-horizontal-stepper-header:before,.mat-stepper-horizontal .mat-horizontal-stepper-header:after,.mat-stepper-horizontal .mat-stepper-horizontal-line{border-top-width:3px!important;background-color:#7b7b7b}::ng-deep .mat-step-header[aria-labelledby=disabled_af]{pointer-events:none!important;cursor:not-allowed}::ng-deep .mat-step-header[aria-labelledby=disabled_af] .mat-step-icon,::ng-deep .mat-step-header[aria-labelledby=disabled_af] .mat-step-label{cursor:not-allowed;opacity:.6}.mat-mdc-form-field{margin-top:16px}.mat-label{font-size:16px;font-weight:600;margin:1rem 0}.step-title{font-size:28px;font-weight:700;margin:.5rem 0 1.5rem 2rem}.validation-text{margin-top:.5rem;margin-bottom:2rem}ul{padding:.5rem 2rem;margin-top:.5rem;margin-bottom:2rem}form{background-color:#fff;padding:2.5rem;height:350px;max-height:700px;border-radius:.5rem}.form-link{text-decoration:none;color:#007bff}.radio-group{display:flex;flex-direction:column;margin:15px 0;align-items:flex-start}.radio-button{margin:.5rem 0}.select{width:350px;padding:.5rem;margin:.5rem 0;border:1px solid #a0a0a0;border-radius:.5rem}.step-actions{display:flex;flex-flow:row-reverse;margin-top:2rem;gap:1rem}.webex-btn{border:1px solid black;border-radius:1rem;cursor:pointer;gap:1rem}.btn-next{background-color:#000;color:#fff}.btn-cancel,.btn-done{background-color:#fff;color:#000}.app-icon{height:20px;width:20px;display:inline-block;cursor:pointer;background-repeat:no-repeat;background-position:center}.icon-close{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath d%3D%22M12.0005 13.0538L6.92737 18.1269C6.78892 18.2654 6.61489 18.3362 6.40527 18.3394C6.19567 18.3426 6.01844 18.2718 5.87357 18.1269C5.72869 17.982 5.65625 17.8064 5.65625 17.6C5.65625 17.3936 5.72869 17.218 5.87357 17.0731L10.9466 12L5.87357 6.92689C5.73511 6.78844 5.66427 6.6144 5.66107 6.40479C5.65786 6.19519 5.72869 6.01795 5.87357 5.87309C6.01844 5.7282 6.19407 5.65576 6.40047 5.65576C6.60687 5.65576 6.78251 5.7282 6.92737 5.87309L12.0005 10.9462L17.0736 5.87309C17.212 5.73462 17.3861 5.66379 17.5957 5.66059C17.8053 5.65737 17.9825 5.7282 18.1274 5.87309C18.2723 6.01795 18.3447 6.19359 18.3447 6.39999C18.3447 6.60639 18.2723 6.78202 18.1274 6.92689L13.0543 12L18.1274 17.0731C18.2658 17.2115 18.3367 17.3856 18.3399 17.5952C18.3431 17.8048 18.2723 17.982 18.1274 18.1269C17.9825 18.2718 17.8069 18.3442 17.6005 18.3442C17.3941 18.3442 17.2184 18.2718 17.0736 18.1269L12.0005 13.0538Z%22 fill%3D%22%23333333%22%2F%3E%3C%2Fsvg%3E\")}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i4$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i6$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i9.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "directive", type: i9.MatStepLabel, selector: "[matStepLabel]" }, { kind: "component", type: i9.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["selectedIndex", "disableRipple", "color", "labelPosition", "headerPosition", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { kind: "directive", type: i9.MatStepperNext, selector: "button[matStepperNext]", inputs: ["type"] }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "directive", type: i11.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { kind: "component", type: i11.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }] });
|
|
972
|
-
|
|
973
|
-
type:
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
type: Output
|
|
904
|
+
// for test only
|
|
905
|
+
const LOCATION = 'Y2lzY29zcGFyazovL3VzL0xPQ0FUSU9OLzE2YjY0NjljLTBjZmQtNDJjMS1iOWJjLTUyN2FlZTNhN2RlOQ';
|
|
906
|
+
class MoveUserStepperComponent {
|
|
907
|
+
get currentNumber() {
|
|
908
|
+
if (this.user?.devices?.length && this.user.devices[0]?.lineAssociations && this.user.devices[0].lineAssociations[0]) {
|
|
909
|
+
return this.user.devices[0].lineAssociations[0].directoryNumber.directoryNumber;
|
|
910
|
+
}
|
|
911
|
+
return '';
|
|
912
|
+
}
|
|
913
|
+
constructor(dnsService) {
|
|
914
|
+
this.dnsService = dnsService;
|
|
915
|
+
this.runMoveUser = new EventEmitter();
|
|
916
|
+
this.cancel = new EventEmitter();
|
|
917
|
+
this.isLinear = false;
|
|
918
|
+
this.phoneNumberPending = false;
|
|
919
|
+
}
|
|
920
|
+
ngOnInit() {
|
|
921
|
+
if (this.user) {
|
|
922
|
+
this.user.moveType = {
|
|
923
|
+
phoneNumber: '1',
|
|
924
|
+
extension: '1'
|
|
925
|
+
};
|
|
926
|
+
}
|
|
927
|
+
}
|
|
928
|
+
onStepChange(event) {
|
|
929
|
+
// alert('step change ' + event.selectedIndex);
|
|
930
|
+
/*if (event.selectedIndex === 4) {
|
|
931
|
+
this.runMoveUser.emit();
|
|
932
|
+
}*/
|
|
933
|
+
}
|
|
934
|
+
selectPhoneNumberMigrationType(event) {
|
|
935
|
+
if (event.value && event.value === '2') {
|
|
936
|
+
this.getPhoneNumbers();
|
|
937
|
+
}
|
|
938
|
+
}
|
|
939
|
+
onPhoneNumberChange(event) {
|
|
940
|
+
this.user.newNumber;
|
|
941
|
+
}
|
|
942
|
+
onExtensionCHange(event) {
|
|
943
|
+
this.user.newExtension;
|
|
944
|
+
}
|
|
945
|
+
isFieldAvailable(type, value) {
|
|
946
|
+
if (this.user?.moveType) {
|
|
947
|
+
return this.user.moveType[type] && this.user.moveType[type] === value;
|
|
948
|
+
}
|
|
949
|
+
return false;
|
|
950
|
+
}
|
|
951
|
+
getPhoneNumbers() {
|
|
952
|
+
this.phoneNumberPending = true;
|
|
953
|
+
this.dnsService.fetchPhoneNumbers(this.customerId, LOCATION)
|
|
954
|
+
.subscribe(() => {
|
|
955
|
+
this.phoneNumberPending = false;
|
|
956
|
+
}, () => this.phoneNumberPending = false);
|
|
957
|
+
}
|
|
958
|
+
goNextStep(stepper) {
|
|
959
|
+
const currentStep = stepper.selectedIndex;
|
|
960
|
+
if (currentStep === 1) {
|
|
961
|
+
stepper.selectedIndex = 3;
|
|
962
|
+
}
|
|
963
|
+
// else if (currentStep === 3) { stepper.selectedIndex = 0; }
|
|
964
|
+
[
|
|
965
|
+
stepper.steps.get(1),
|
|
966
|
+
stepper.steps.get(2)
|
|
967
|
+
].map(step => step ? step.completed = true : undefined);
|
|
968
|
+
}
|
|
969
|
+
}
|
|
970
|
+
MoveUserStepperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MoveUserStepperComponent, deps: [{ token: DnsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
971
|
+
MoveUserStepperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: MoveUserStepperComponent, selector: "app-move-user-stepper", inputs: { user: "user", customerId: "customerId" }, outputs: { runMoveUser: "runMoveUser", cancel: "cancel" }, ngImport: i0, template: "<mat-stepper *ngIf=\"user?.moveType\" [linear]=\"isLinear\" labelPosition=\"bottom\" #stepper>\r\n <mat-step>\r\n <div class=\"step-title\">Step 1: Select location</div>\r\n<!-- <form>-->\r\n <ng-template matStepLabel>Select location</ng-template>\r\n <mat-label class=\"mat-label\">Phone number</mat-label>\r\n <mat-radio-group\r\n class=\"radio-group\"\r\n [(ngModel)]=\"user.moveType.phoneNumber\"\r\n name=\"phoneNumber\" (change)=\"selectPhoneNumberMigrationType($event)\">\r\n <mat-radio-button class=\"radio-button\" value=\"1\" color=\"primary\">Keep current number {{currentNumber}}</mat-radio-button>\r\n <mat-radio-button class=\"radio-button\" value=\"2\" color=\"primary\">Select a new number</mat-radio-button>\r\n\r\n <div *ngIf=\"user.moveType.phoneNumber === '2'\" class=\"select-container\">\r\n <mat-progress-spinner *ngIf=\"phoneNumberPending\"\r\n class=\"field-spinner\" mode=\"indeterminate\"\r\n [diameter]=\"30\"></mat-progress-spinner>\r\n\r\n <mat-select class=\"select\" placeholder=\"Select number\" [(ngModel)]=\"user.newNumber\"\r\n (selectionChange)=\"onPhoneNumberChange($event)\">\r\n <mat-option *ngFor=\"let option of dnsService.phoneNumbers\" value=\"option\">{{option}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n <mat-radio-button class=\"radio-button\" value=\"3\" color=\"primary\">Remove number</mat-radio-button>\r\n </mat-radio-group>\r\n <mat-label class=\"mat-label\">Extension</mat-label>\r\n <mat-radio-group class=\"radio-group\" name=\"extension\"\r\n [(ngModel)]=\"user.moveType.extension\">\r\n <mat-radio-button class=\"radio-button\" value=\"1\" color=\"primary\">Keep current extension</mat-radio-button>\r\n <mat-radio-button class=\"radio-button\" value=\"2\" color=\"primary\">Select a new extension</mat-radio-button>\r\n <mat-form-field *ngIf=\"user.moveType.extension === '2'\" appearance=\"outline\">\r\n <input matInput type=\"text\" (change)=\"onExtensionCHange($event)\"\r\n [(ngModel)]=\"user.newExtension\"\r\n [placeholder]=\"'Enter extension'\" />\r\n </mat-form-field>\r\n\r\n <mat-radio-button class=\"radio-button\" value=\"3\" color=\"primary\">Remove extension</mat-radio-button>\r\n </mat-radio-group>\r\n<!-- </form>-->\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">Next</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" (click)=\"cancel.emit()\">Cancel</button>\r\n </div>\r\n </mat-step>\r\n <mat-step [aria-labelledby]=\"'disabled_af'\">\r\n <div class=\"step-title\">Step 2: Device eligibility check</div>\r\n <ng-template matStepLabel>Device eligibility check</ng-template>\r\n <form></form>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">Next</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>Previous</button>\r\n </div>\r\n </mat-step>\r\n <mat-step [aria-labelledby]=\"'disabled_af'\">\r\n <div class=\"step-title\">Step 3: Validation</div>\r\n <form>\r\n <ng-template matStepLabel>Validation</ng-template>\r\n <mat-label class=\"mat-label\">Validation Success!</mat-label>\r\n <p class=\"validation-text\">There is no issue for moving this user to the new location, $MTlocationname. Please be aware of the changes below once the user is being moved to the new location.</p>\r\n <mat-label class=\"mat-label\">Expected changes</mat-label>\r\n <ul>\r\n <li>Tablet device (TABAVICK) needs to be reconfigured with Webex App. User will receive an email with link to download.</li>\r\n <li>Cisco 8875 (SEP751FC9BAB854) will not be migrated.</li>\r\n <li>The user will be removed from Call Park Group.</li>\r\n <li>If the device is using the location level device settings, the device will pick up the new location device settings once the user is moved. If some of the device settings are overwritten at the user level, these user level settings will be retained and the rest of the settings will be picked up at the higher level (organization or location) settings.</li>\r\n <li>If the current location has a different recording service from the one of the new location, the recording of this user may be lost after moving location.</li>\r\n </ul>\r\n <div>\r\n <mat-checkbox class=\"checkbox\" checked=\"true\" color=\"primary\">I confirm that I understand these conditions. I acknowledge the changes.</mat-checkbox>\r\n </div>\r\n </form>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">Next</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>Previous</button>\r\n </div>\r\n </mat-step>\r\n <mat-step>\r\n <div class=\"step-title\">Step 2: Result</div>\r\n <ng-template matStepLabel>Result</ng-template>\r\n <form>\r\n <mat-label class=\"mat-label\">Moving user has been successfully initiated!</mat-label>\r\n <p class=\"validation-text\">\r\n The user will be moved to the new location, Paris.\r\n <br>\r\n For the progress of move, please visit the <a class=\"form-link\" href=\"#\">user details</a>.\r\n </p>\r\n </form>\r\n <div class=\"step-actions\">\r\n<!-- <button mat-button class=\"webex-btn btn-done\" matStepperNext (click)=\"cancel.emit()\">Done</button>-->\r\n <button mat-button class=\"webex-btn btn-done\" matStepperNext (click)=\"runMoveUser.emit()\">Done</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>Previous</button>\r\n </div>\r\n </mat-step>\r\n </mat-stepper>\r\n", styles: [".mat-stepper-horizontal{height:-moz-fit-content;height:fit-content;max-height:750px;margin:0 auto;width:70%;background-color:transparent}.mat-stepper-horizontal .mat-horizontal-stepper-header-container{margin:0 auto;width:800px}.mat-stepper-horizontal .mat-step-icon{width:18px;height:18px;border:3px solid hsl(0,0%,50.2%)}.mat-stepper-horizontal .mat-step-icon-selected{background-color:#c6c6c6!important;border-color:#19487d}.mat-stepper-horizontal .mat-step-icon-state-number{background-color:#fff}.mat-stepper-horizontal .mat-step-icon-state-edit,.mat-stepper-horizontal .mat-step-header .mat-step-icon-state-done{background-color:#1170cf;border-color:#1170cf}.mat-stepper-horizontal .mat-step-icon-content{display:none}.mat-stepper-horizontal .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child):before,.mat-stepper-horizontal [dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child):before,.mat-stepper-horizontal .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child):after,.mat-stepper-horizontal [dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child):after{border-top-width:3px!important}.mat-stepper-horizontal .mat-horizontal-stepper-header:before,.mat-stepper-horizontal .mat-horizontal-stepper-header:after,.mat-stepper-horizontal .mat-stepper-horizontal-line{border-top-width:3px!important;background-color:#7b7b7b}::ng-deep .mat-step-header[aria-labelledby=disabled_af]{pointer-events:none!important;cursor:not-allowed}::ng-deep .mat-step-header[aria-labelledby=disabled_af] .mat-step-icon,::ng-deep .mat-step-header[aria-labelledby=disabled_af] .mat-step-label{cursor:not-allowed;opacity:.6}.mat-mdc-form-field{margin-top:16px}.mat-label{font-size:16px;font-weight:600;margin:1rem 0}.step-title{font-size:28px;font-weight:700;margin:.5rem 0 1.5rem 2rem}.validation-text{margin-top:.5rem;margin-bottom:2rem}ul{padding:.5rem 2rem;margin-top:.5rem;margin-bottom:2rem}form{background-color:#fff;padding:2.5rem;min-height:350px;border-radius:.5rem}.form-link{text-decoration:none;color:#007bff}.radio-group{display:flex;flex-direction:column;margin:15px 0;align-items:flex-start}.radio-button{margin:.5rem 0}.select{width:350px;padding:.5rem;margin:.5rem 0;border:1px solid #a0a0a0;border-radius:.5rem}.step-actions{display:flex;flex-flow:row-reverse;margin-top:2rem;gap:1rem}.webex-btn{border:1px solid black;border-radius:1rem;cursor:pointer;gap:1rem}.btn-next{background-color:#000;color:#fff}.btn-cancel,.btn-done{background-color:#fff;color:#000}.select-container{position:relative}.select-container .mat-progress-spinner{position:absolute;left:45%;top:35px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i4$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i6$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i9.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "directive", type: i9.MatStepLabel, selector: "[matStepLabel]" }, { kind: "component", type: i9.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["selectedIndex", "disableRipple", "color", "labelPosition", "headerPosition", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { kind: "directive", type: i9.MatStepperNext, selector: "button[matStepperNext]", inputs: ["type"] }, { kind: "directive", type: i9.MatStepperPrevious, selector: "button[matStepperPrevious]", inputs: ["type"] }, { kind: "component", type: i10.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "directive", type: i12.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { kind: "component", type: i12.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }] });
|
|
972
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MoveUserStepperComponent, decorators: [{
|
|
973
|
+
type: Component,
|
|
974
|
+
args: [{ selector: 'app-move-user-stepper', template: "<mat-stepper *ngIf=\"user?.moveType\" [linear]=\"isLinear\" labelPosition=\"bottom\" #stepper>\r\n <mat-step>\r\n <div class=\"step-title\">Step 1: Select location</div>\r\n<!-- <form>-->\r\n <ng-template matStepLabel>Select location</ng-template>\r\n <mat-label class=\"mat-label\">Phone number</mat-label>\r\n <mat-radio-group\r\n class=\"radio-group\"\r\n [(ngModel)]=\"user.moveType.phoneNumber\"\r\n name=\"phoneNumber\" (change)=\"selectPhoneNumberMigrationType($event)\">\r\n <mat-radio-button class=\"radio-button\" value=\"1\" color=\"primary\">Keep current number {{currentNumber}}</mat-radio-button>\r\n <mat-radio-button class=\"radio-button\" value=\"2\" color=\"primary\">Select a new number</mat-radio-button>\r\n\r\n <div *ngIf=\"user.moveType.phoneNumber === '2'\" class=\"select-container\">\r\n <mat-progress-spinner *ngIf=\"phoneNumberPending\"\r\n class=\"field-spinner\" mode=\"indeterminate\"\r\n [diameter]=\"30\"></mat-progress-spinner>\r\n\r\n <mat-select class=\"select\" placeholder=\"Select number\" [(ngModel)]=\"user.newNumber\"\r\n (selectionChange)=\"onPhoneNumberChange($event)\">\r\n <mat-option *ngFor=\"let option of dnsService.phoneNumbers\" value=\"option\">{{option}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n <mat-radio-button class=\"radio-button\" value=\"3\" color=\"primary\">Remove number</mat-radio-button>\r\n </mat-radio-group>\r\n <mat-label class=\"mat-label\">Extension</mat-label>\r\n <mat-radio-group class=\"radio-group\" name=\"extension\"\r\n [(ngModel)]=\"user.moveType.extension\">\r\n <mat-radio-button class=\"radio-button\" value=\"1\" color=\"primary\">Keep current extension</mat-radio-button>\r\n <mat-radio-button class=\"radio-button\" value=\"2\" color=\"primary\">Select a new extension</mat-radio-button>\r\n <mat-form-field *ngIf=\"user.moveType.extension === '2'\" appearance=\"outline\">\r\n <input matInput type=\"text\" (change)=\"onExtensionCHange($event)\"\r\n [(ngModel)]=\"user.newExtension\"\r\n [placeholder]=\"'Enter extension'\" />\r\n </mat-form-field>\r\n\r\n <mat-radio-button class=\"radio-button\" value=\"3\" color=\"primary\">Remove extension</mat-radio-button>\r\n </mat-radio-group>\r\n<!-- </form>-->\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">Next</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" (click)=\"cancel.emit()\">Cancel</button>\r\n </div>\r\n </mat-step>\r\n <mat-step [aria-labelledby]=\"'disabled_af'\">\r\n <div class=\"step-title\">Step 2: Device eligibility check</div>\r\n <ng-template matStepLabel>Device eligibility check</ng-template>\r\n <form></form>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">Next</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>Previous</button>\r\n </div>\r\n </mat-step>\r\n <mat-step [aria-labelledby]=\"'disabled_af'\">\r\n <div class=\"step-title\">Step 3: Validation</div>\r\n <form>\r\n <ng-template matStepLabel>Validation</ng-template>\r\n <mat-label class=\"mat-label\">Validation Success!</mat-label>\r\n <p class=\"validation-text\">There is no issue for moving this user to the new location, $MTlocationname. Please be aware of the changes below once the user is being moved to the new location.</p>\r\n <mat-label class=\"mat-label\">Expected changes</mat-label>\r\n <ul>\r\n <li>Tablet device (TABAVICK) needs to be reconfigured with Webex App. User will receive an email with link to download.</li>\r\n <li>Cisco 8875 (SEP751FC9BAB854) will not be migrated.</li>\r\n <li>The user will be removed from Call Park Group.</li>\r\n <li>If the device is using the location level device settings, the device will pick up the new location device settings once the user is moved. If some of the device settings are overwritten at the user level, these user level settings will be retained and the rest of the settings will be picked up at the higher level (organization or location) settings.</li>\r\n <li>If the current location has a different recording service from the one of the new location, the recording of this user may be lost after moving location.</li>\r\n </ul>\r\n <div>\r\n <mat-checkbox class=\"checkbox\" checked=\"true\" color=\"primary\">I confirm that I understand these conditions. I acknowledge the changes.</mat-checkbox>\r\n </div>\r\n </form>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">Next</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>Previous</button>\r\n </div>\r\n </mat-step>\r\n <mat-step>\r\n <div class=\"step-title\">Step 2: Result</div>\r\n <ng-template matStepLabel>Result</ng-template>\r\n <form>\r\n <mat-label class=\"mat-label\">Moving user has been successfully initiated!</mat-label>\r\n <p class=\"validation-text\">\r\n The user will be moved to the new location, Paris.\r\n <br>\r\n For the progress of move, please visit the <a class=\"form-link\" href=\"#\">user details</a>.\r\n </p>\r\n </form>\r\n <div class=\"step-actions\">\r\n<!-- <button mat-button class=\"webex-btn btn-done\" matStepperNext (click)=\"cancel.emit()\">Done</button>-->\r\n <button mat-button class=\"webex-btn btn-done\" matStepperNext (click)=\"runMoveUser.emit()\">Done</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>Previous</button>\r\n </div>\r\n </mat-step>\r\n </mat-stepper>\r\n", styles: [".mat-stepper-horizontal{height:-moz-fit-content;height:fit-content;max-height:750px;margin:0 auto;width:70%;background-color:transparent}.mat-stepper-horizontal .mat-horizontal-stepper-header-container{margin:0 auto;width:800px}.mat-stepper-horizontal .mat-step-icon{width:18px;height:18px;border:3px solid hsl(0,0%,50.2%)}.mat-stepper-horizontal .mat-step-icon-selected{background-color:#c6c6c6!important;border-color:#19487d}.mat-stepper-horizontal .mat-step-icon-state-number{background-color:#fff}.mat-stepper-horizontal .mat-step-icon-state-edit,.mat-stepper-horizontal .mat-step-header .mat-step-icon-state-done{background-color:#1170cf;border-color:#1170cf}.mat-stepper-horizontal .mat-step-icon-content{display:none}.mat-stepper-horizontal .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child):before,.mat-stepper-horizontal [dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child):before,.mat-stepper-horizontal .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child):after,.mat-stepper-horizontal [dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child):after{border-top-width:3px!important}.mat-stepper-horizontal .mat-horizontal-stepper-header:before,.mat-stepper-horizontal .mat-horizontal-stepper-header:after,.mat-stepper-horizontal .mat-stepper-horizontal-line{border-top-width:3px!important;background-color:#7b7b7b}::ng-deep .mat-step-header[aria-labelledby=disabled_af]{pointer-events:none!important;cursor:not-allowed}::ng-deep .mat-step-header[aria-labelledby=disabled_af] .mat-step-icon,::ng-deep .mat-step-header[aria-labelledby=disabled_af] .mat-step-label{cursor:not-allowed;opacity:.6}.mat-mdc-form-field{margin-top:16px}.mat-label{font-size:16px;font-weight:600;margin:1rem 0}.step-title{font-size:28px;font-weight:700;margin:.5rem 0 1.5rem 2rem}.validation-text{margin-top:.5rem;margin-bottom:2rem}ul{padding:.5rem 2rem;margin-top:.5rem;margin-bottom:2rem}form{background-color:#fff;padding:2.5rem;min-height:350px;border-radius:.5rem}.form-link{text-decoration:none;color:#007bff}.radio-group{display:flex;flex-direction:column;margin:15px 0;align-items:flex-start}.radio-button{margin:.5rem 0}.select{width:350px;padding:.5rem;margin:.5rem 0;border:1px solid #a0a0a0;border-radius:.5rem}.step-actions{display:flex;flex-flow:row-reverse;margin-top:2rem;gap:1rem}.webex-btn{border:1px solid black;border-radius:1rem;cursor:pointer;gap:1rem}.btn-next{background-color:#000;color:#fff}.btn-cancel,.btn-done{background-color:#fff;color:#000}.select-container{position:relative}.select-container .mat-progress-spinner{position:absolute;left:45%;top:35px}\n"] }]
|
|
975
|
+
}], ctorParameters: function () { return [{ type: DnsService }]; }, propDecorators: { user: [{
|
|
976
|
+
type: Input
|
|
977
|
+
}], customerId: [{
|
|
978
|
+
type: Input
|
|
979
|
+
}], runMoveUser: [{
|
|
980
|
+
type: Output
|
|
981
|
+
}], cancel: [{
|
|
982
|
+
type: Output
|
|
983
983
|
}] } });
|
|
984
984
|
|
|
985
|
-
class MoveUserWizardComponent {
|
|
986
|
-
constructor(dnsService) {
|
|
987
|
-
this.dnsService = dnsService;
|
|
988
|
-
this.closeMoveUserWizard = new EventEmitter();
|
|
989
|
-
this.runMoveUser = new EventEmitter();
|
|
990
|
-
this.dataPending = false;
|
|
991
|
-
}
|
|
992
|
-
onClose() {
|
|
993
|
-
this.closeMoveUserWizard.emit();
|
|
994
|
-
}
|
|
995
|
-
onRunMoveUser() {
|
|
996
|
-
this.runMoveUser.emit();
|
|
997
|
-
}
|
|
998
|
-
}
|
|
999
|
-
MoveUserWizardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MoveUserWizardComponent, deps: [{ token: DnsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1000
|
-
MoveUserWizardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: MoveUserWizardComponent, selector: "app-move-user-wizard", inputs: { user: "user", customerId: "customerId" }, outputs: { closeMoveUserWizard: "closeMoveUserWizard", runMoveUser: "runMoveUser" }, ngImport: i0, template: "<app-loader *ngIf=\"dataPending\"></app-loader>\n<div class=\"move-user-stepper-container\">\n <header class=\"move-user-header\">\n <div class=\"move-user-header__title\">Move User</div>\n <div class=\"move-user-header__close\">\n <span class=\"app-icon icon-close\" (click)=\"onClose()\"></span>\n </div>\n </header>\n <app-move-user-stepper *ngIf=\"user\" [customerId]=\"customerId\" [user]=\"user\" (cancel)=\"onClose()\"\n (runMoveUser)=\"onRunMoveUser()\"></app-move-user-stepper>\n</div>\n", styles: [".move-user-header{background-color:#1170cf;height:45px;padding:1rem 1.5rem;display:flex;align-items:center;justify-content:space-between;color:#fff;font-size:18px;font-weight:500}.move-user-header__close{cursor:pointer}.move-user-header__close i{font-size:25px;font-weight:100}.app-icon{height:20px;width:20px;display:inline-block;cursor:pointer;background-repeat:no-repeat;background-position:center}.icon-close{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath d%3D%22M12.0005 13.0538L6.92737 18.1269C6.78892 18.2654 6.61489 18.3362 6.40527 18.3394C6.19567 18.3426 6.01844 18.2718 5.87357 18.1269C5.72869 17.982 5.65625 17.8064 5.65625 17.6C5.65625 17.3936 5.72869 17.218 5.87357 17.0731L10.9466 12L5.87357 6.92689C5.73511 6.78844 5.66427 6.6144 5.66107 6.40479C5.65786 6.19519 5.72869 6.01795 5.87357 5.87309C6.01844 5.7282 6.19407 5.65576 6.40047 5.65576C6.60687 5.65576 6.78251 5.7282 6.92737 5.87309L12.0005 10.9462L17.0736 5.87309C17.212 5.73462 17.3861 5.66379 17.5957 5.66059C17.8053 5.65737 17.9825 5.7282 18.1274 5.87309C18.2723 6.01795 18.3447 6.19359 18.3447 6.39999C18.3447 6.60639 18.2723 6.78202 18.1274 6.92689L13.0543 12L18.1274 17.0731C18.2658 17.2115 18.3367 17.3856 18.3399 17.5952C18.3431 17.8048 18.2723 17.982 18.1274 18.1269C17.9825 18.2718 17.8069 18.3442 17.6005 18.3442C17.3941 18.3442 17.2184 18.2718 17.0736 18.1269L12.0005 13.0538Z%22 fill%3D%22%23333333%22%2F%3E%3C%2Fsvg%3E\")}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: AppLoaderComponent, selector: "app-loader" }, { kind: "component", type: MoveUserStepperComponent, selector: "app-move-user-stepper", inputs: ["user", "customerId"], outputs: ["runMoveUser", "cancel"] }] });
|
|
1001
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MoveUserWizardComponent, decorators: [{
|
|
1002
|
-
type: Component,
|
|
1003
|
-
args: [{ selector: 'app-move-user-wizard', template: "<app-loader *ngIf=\"dataPending\"></app-loader>\n<div class=\"move-user-stepper-container\">\n <header class=\"move-user-header\">\n <div class=\"move-user-header__title\">Move User</div>\n <div class=\"move-user-header__close\">\n <span class=\"app-icon icon-close\" (click)=\"onClose()\"></span>\n </div>\n </header>\n <app-move-user-stepper *ngIf=\"user\" [customerId]=\"customerId\" [user]=\"user\" (cancel)=\"onClose()\"\n (runMoveUser)=\"onRunMoveUser()\"></app-move-user-stepper>\n</div>\n", styles: [".move-user-header{background-color:#1170cf;height:45px;padding:1rem 1.5rem;display:flex;align-items:center;justify-content:space-between;color:#fff;font-size:18px;font-weight:500}.move-user-header__close{cursor:pointer}.move-user-header__close i{font-size:25px;font-weight:100}.app-icon{height:20px;width:20px;display:inline-block;cursor:pointer;background-repeat:no-repeat;background-position:center}.icon-close{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath d%3D%22M12.0005 13.0538L6.92737 18.1269C6.78892 18.2654 6.61489 18.3362 6.40527 18.3394C6.19567 18.3426 6.01844 18.2718 5.87357 18.1269C5.72869 17.982 5.65625 17.8064 5.65625 17.6C5.65625 17.3936 5.72869 17.218 5.87357 17.0731L10.9466 12L5.87357 6.92689C5.73511 6.78844 5.66427 6.6144 5.66107 6.40479C5.65786 6.19519 5.72869 6.01795 5.87357 5.87309C6.01844 5.7282 6.19407 5.65576 6.40047 5.65576C6.60687 5.65576 6.78251 5.7282 6.92737 5.87309L12.0005 10.9462L17.0736 5.87309C17.212 5.73462 17.3861 5.66379 17.5957 5.66059C17.8053 5.65737 17.9825 5.7282 18.1274 5.87309C18.2723 6.01795 18.3447 6.19359 18.3447 6.39999C18.3447 6.60639 18.2723 6.78202 18.1274 6.92689L13.0543 12L18.1274 17.0731C18.2658 17.2115 18.3367 17.3856 18.3399 17.5952C18.3431 17.8048 18.2723 17.982 18.1274 18.1269C17.9825 18.2718 17.8069 18.3442 17.6005 18.3442C17.3941 18.3442 17.2184 18.2718 17.0736 18.1269L12.0005 13.0538Z%22 fill%3D%22%23333333%22%2F%3E%3C%2Fsvg%3E\")}\n"] }]
|
|
1004
|
-
}], ctorParameters: function () { return [{ type: DnsService }]; }, propDecorators: { user: [{
|
|
1005
|
-
type: Input
|
|
1006
|
-
}], customerId: [{
|
|
1007
|
-
type: Input
|
|
1008
|
-
}], closeMoveUserWizard: [{
|
|
1009
|
-
type: Output
|
|
1010
|
-
}], runMoveUser: [{
|
|
1011
|
-
type: Output
|
|
985
|
+
class MoveUserWizardComponent {
|
|
986
|
+
constructor(dnsService) {
|
|
987
|
+
this.dnsService = dnsService;
|
|
988
|
+
this.closeMoveUserWizard = new EventEmitter();
|
|
989
|
+
this.runMoveUser = new EventEmitter();
|
|
990
|
+
this.dataPending = false;
|
|
991
|
+
}
|
|
992
|
+
onClose() {
|
|
993
|
+
this.closeMoveUserWizard.emit();
|
|
994
|
+
}
|
|
995
|
+
onRunMoveUser() {
|
|
996
|
+
this.runMoveUser.emit();
|
|
997
|
+
}
|
|
998
|
+
}
|
|
999
|
+
MoveUserWizardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MoveUserWizardComponent, deps: [{ token: DnsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1000
|
+
MoveUserWizardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: MoveUserWizardComponent, selector: "app-move-user-wizard", inputs: { user: "user", customerId: "customerId" }, outputs: { closeMoveUserWizard: "closeMoveUserWizard", runMoveUser: "runMoveUser" }, ngImport: i0, template: "<app-loader *ngIf=\"dataPending\"></app-loader>\r\n<div class=\"move-user-stepper-container\">\r\n <header class=\"move-user-header\">\r\n <div class=\"move-user-header__title\">Move User {{user.userid}}</div>\r\n <div class=\"move-user-header__close\">\r\n <span class=\"app-icon icon-white-close\" (click)=\"onClose()\"></span>\r\n </div>\r\n </header>\r\n <app-move-user-stepper *ngIf=\"user\" [customerId]=\"customerId\" [user]=\"user\" (cancel)=\"onClose()\"\r\n (runMoveUser)=\"onRunMoveUser()\"></app-move-user-stepper>\r\n</div>\r\n", styles: [".move-user-header{background-color:#1170cf;height:45px;padding:1rem 1.5rem;display:flex;align-items:center;justify-content:space-between;color:#fff;font-size:18px;font-weight:500}.move-user-header__close{cursor:pointer}.move-user-header__close i{font-size:25px;font-weight:100}.app-icon{height:20px;width:20px;display:inline-block;cursor:pointer;background-repeat:no-repeat;background-position:center}.icon-close{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cpath d%3D%22M12.0005 13.0538L6.92737 18.1269C6.78892 18.2654 6.61489 18.3362 6.40527 18.3394C6.19567 18.3426 6.01844 18.2718 5.87357 18.1269C5.72869 17.982 5.65625 17.8064 5.65625 17.6C5.65625 17.3936 5.72869 17.218 5.87357 17.0731L10.9466 12L5.87357 6.92689C5.73511 6.78844 5.66427 6.6144 5.66107 6.40479C5.65786 6.19519 5.72869 6.01795 5.87357 5.87309C6.01844 5.7282 6.19407 5.65576 6.40047 5.65576C6.60687 5.65576 6.78251 5.7282 6.92737 5.87309L12.0005 10.9462L17.0736 5.87309C17.212 5.73462 17.3861 5.66379 17.5957 5.66059C17.8053 5.65737 17.9825 5.7282 18.1274 5.87309C18.2723 6.01795 18.3447 6.19359 18.3447 6.39999C18.3447 6.60639 18.2723 6.78202 18.1274 6.92689L13.0543 12L18.1274 17.0731C18.2658 17.2115 18.3367 17.3856 18.3399 17.5952C18.3431 17.8048 18.2723 17.982 18.1274 18.1269C17.9825 18.2718 17.8069 18.3442 17.6005 18.3442C17.3941 18.3442 17.2184 18.2718 17.0736 18.1269L12.0005 13.0538Z%22 fill%3D%22%23333333%22%2F%3E%0D%3C%2Fsvg%3E%0D\")}.icon-white-close{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath d%3D%22M13.0606 11.9998L19.2803 5.78001C19.35 5.71038 19.4052 5.6277 19.4429 5.53672C19.4806 5.44573 19.5 5.34822 19.5 5.24974C19.5 5.15126 19.4806 5.05374 19.4429 4.96276C19.4052 4.87177 19.3499 4.7891 19.2803 4.71947C19.2107 4.64983 19.128 4.5946 19.037 4.55691C18.946 4.51923 18.8485 4.49983 18.75 4.49983C18.6515 4.49984 18.554 4.51924 18.463 4.55692C18.3721 4.59461 18.2894 4.64985 18.2198 4.71949L12 10.9392L5.78026 4.71949C5.71077 4.64921 5.62807 4.59335 5.53691 4.55514C5.44576 4.51692 5.34795 4.49711 5.24911 4.49683C5.15027 4.49655 5.05235 4.51581 4.96098 4.55351C4.86961 4.59121 4.78659 4.64659 4.7167 4.71648C4.64681 4.78638 4.59143 4.8694 4.55374 4.96077C4.51605 5.05214 4.49679 5.15006 4.49707 5.2489C4.49736 5.34774 4.51718 5.44555 4.5554 5.5367C4.59361 5.62786 4.64947 5.71055 4.71976 5.78004L10.9395 11.9998L4.71976 18.2195C4.65013 18.2892 4.59489 18.3718 4.5572 18.4628C4.51951 18.5538 4.50011 18.6513 4.50011 18.7498C4.50011 18.8483 4.51951 18.9458 4.5572 19.0368C4.59488 19.1278 4.65012 19.2105 4.71976 19.2801C4.7894 19.3497 4.87207 19.405 4.96305 19.4427C5.05403 19.4803 5.15155 19.4997 5.25003 19.4997C5.34851 19.4997 5.44603 19.4803 5.53701 19.4427C5.628 19.405 5.71067 19.3497 5.78031 19.2801L12.0001 13.0603L18.2198 19.2801C18.3604 19.4207 18.5512 19.4997 18.7501 19.4997C18.949 19.4997 19.1397 19.4207 19.2804 19.2801C19.421 19.1395 19.5 18.9487 19.5 18.7498C19.5 18.5509 19.421 18.3602 19.2804 18.2195L13.0606 11.9998Z%22 fill%3D%22white%22 fill-opacity%3D%220.95%22%2F%3E%3C%2Fsvg%3E\")}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: AppLoaderComponent, selector: "app-loader" }, { kind: "component", type: MoveUserStepperComponent, selector: "app-move-user-stepper", inputs: ["user", "customerId"], outputs: ["runMoveUser", "cancel"] }] });
|
|
1001
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MoveUserWizardComponent, decorators: [{
|
|
1002
|
+
type: Component,
|
|
1003
|
+
args: [{ selector: 'app-move-user-wizard', template: "<app-loader *ngIf=\"dataPending\"></app-loader>\r\n<div class=\"move-user-stepper-container\">\r\n <header class=\"move-user-header\">\r\n <div class=\"move-user-header__title\">Move User {{user.userid}}</div>\r\n <div class=\"move-user-header__close\">\r\n <span class=\"app-icon icon-white-close\" (click)=\"onClose()\"></span>\r\n </div>\r\n </header>\r\n <app-move-user-stepper *ngIf=\"user\" [customerId]=\"customerId\" [user]=\"user\" (cancel)=\"onClose()\"\r\n (runMoveUser)=\"onRunMoveUser()\"></app-move-user-stepper>\r\n</div>\r\n", styles: [".move-user-header{background-color:#1170cf;height:45px;padding:1rem 1.5rem;display:flex;align-items:center;justify-content:space-between;color:#fff;font-size:18px;font-weight:500}.move-user-header__close{cursor:pointer}.move-user-header__close i{font-size:25px;font-weight:100}.app-icon{height:20px;width:20px;display:inline-block;cursor:pointer;background-repeat:no-repeat;background-position:center}.icon-close{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cpath d%3D%22M12.0005 13.0538L6.92737 18.1269C6.78892 18.2654 6.61489 18.3362 6.40527 18.3394C6.19567 18.3426 6.01844 18.2718 5.87357 18.1269C5.72869 17.982 5.65625 17.8064 5.65625 17.6C5.65625 17.3936 5.72869 17.218 5.87357 17.0731L10.9466 12L5.87357 6.92689C5.73511 6.78844 5.66427 6.6144 5.66107 6.40479C5.65786 6.19519 5.72869 6.01795 5.87357 5.87309C6.01844 5.7282 6.19407 5.65576 6.40047 5.65576C6.60687 5.65576 6.78251 5.7282 6.92737 5.87309L12.0005 10.9462L17.0736 5.87309C17.212 5.73462 17.3861 5.66379 17.5957 5.66059C17.8053 5.65737 17.9825 5.7282 18.1274 5.87309C18.2723 6.01795 18.3447 6.19359 18.3447 6.39999C18.3447 6.60639 18.2723 6.78202 18.1274 6.92689L13.0543 12L18.1274 17.0731C18.2658 17.2115 18.3367 17.3856 18.3399 17.5952C18.3431 17.8048 18.2723 17.982 18.1274 18.1269C17.9825 18.2718 17.8069 18.3442 17.6005 18.3442C17.3941 18.3442 17.2184 18.2718 17.0736 18.1269L12.0005 13.0538Z%22 fill%3D%22%23333333%22%2F%3E%0D%3C%2Fsvg%3E%0D\")}.icon-white-close{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath d%3D%22M13.0606 11.9998L19.2803 5.78001C19.35 5.71038 19.4052 5.6277 19.4429 5.53672C19.4806 5.44573 19.5 5.34822 19.5 5.24974C19.5 5.15126 19.4806 5.05374 19.4429 4.96276C19.4052 4.87177 19.3499 4.7891 19.2803 4.71947C19.2107 4.64983 19.128 4.5946 19.037 4.55691C18.946 4.51923 18.8485 4.49983 18.75 4.49983C18.6515 4.49984 18.554 4.51924 18.463 4.55692C18.3721 4.59461 18.2894 4.64985 18.2198 4.71949L12 10.9392L5.78026 4.71949C5.71077 4.64921 5.62807 4.59335 5.53691 4.55514C5.44576 4.51692 5.34795 4.49711 5.24911 4.49683C5.15027 4.49655 5.05235 4.51581 4.96098 4.55351C4.86961 4.59121 4.78659 4.64659 4.7167 4.71648C4.64681 4.78638 4.59143 4.8694 4.55374 4.96077C4.51605 5.05214 4.49679 5.15006 4.49707 5.2489C4.49736 5.34774 4.51718 5.44555 4.5554 5.5367C4.59361 5.62786 4.64947 5.71055 4.71976 5.78004L10.9395 11.9998L4.71976 18.2195C4.65013 18.2892 4.59489 18.3718 4.5572 18.4628C4.51951 18.5538 4.50011 18.6513 4.50011 18.7498C4.50011 18.8483 4.51951 18.9458 4.5572 19.0368C4.59488 19.1278 4.65012 19.2105 4.71976 19.2801C4.7894 19.3497 4.87207 19.405 4.96305 19.4427C5.05403 19.4803 5.15155 19.4997 5.25003 19.4997C5.34851 19.4997 5.44603 19.4803 5.53701 19.4427C5.628 19.405 5.71067 19.3497 5.78031 19.2801L12.0001 13.0603L18.2198 19.2801C18.3604 19.4207 18.5512 19.4997 18.7501 19.4997C18.949 19.4997 19.1397 19.4207 19.2804 19.2801C19.421 19.1395 19.5 18.9487 19.5 18.7498C19.5 18.5509 19.421 18.3602 19.2804 18.2195L13.0606 11.9998Z%22 fill%3D%22white%22 fill-opacity%3D%220.95%22%2F%3E%3C%2Fsvg%3E\")}\n"] }]
|
|
1004
|
+
}], ctorParameters: function () { return [{ type: DnsService }]; }, propDecorators: { user: [{
|
|
1005
|
+
type: Input
|
|
1006
|
+
}], customerId: [{
|
|
1007
|
+
type: Input
|
|
1008
|
+
}], closeMoveUserWizard: [{
|
|
1009
|
+
type: Output
|
|
1010
|
+
}], runMoveUser: [{
|
|
1011
|
+
type: Output
|
|
1012
1012
|
}] } });
|
|
1013
1013
|
|
|
1014
|
-
const DISPLAYED_COLS = ['user-icon', 'name', 'email', 'status', 'role', 'actions'];
|
|
1015
|
-
const LOCAL_STORAGE = {
|
|
1016
|
-
USER_IN_MIGRATION: 'userIdInMigration'
|
|
1017
|
-
};
|
|
1018
|
-
class UsersListComponent {
|
|
1019
|
-
get form() {
|
|
1020
|
-
return this.userService?.user?.form;
|
|
1021
|
-
}
|
|
1022
|
-
constructor(userService, apiService, apiWebexService, notifications, usersSearchService, dialog) {
|
|
1023
|
-
this.userService = userService;
|
|
1024
|
-
this.apiService = apiService;
|
|
1025
|
-
this.apiWebexService = apiWebexService;
|
|
1026
|
-
this.notifications = notifications;
|
|
1027
|
-
this.usersSearchService = usersSearchService;
|
|
1028
|
-
this.dialog = dialog;
|
|
1029
|
-
this.openUser = new EventEmitter();
|
|
1030
|
-
this.userMoved = new EventEmitter();
|
|
1031
|
-
this.switchToWizard = new EventEmitter();
|
|
1032
|
-
this.displayedColumns = DISPLAYED_COLS;
|
|
1033
|
-
this.showMoveUserWizard = false;
|
|
1034
|
-
}
|
|
1035
|
-
ngOnInit() {
|
|
1036
|
-
this.usersSearchService.setDefaultValues();
|
|
1037
|
-
this.usersSearchService.customerId = this.customerId;
|
|
1038
|
-
this.usersSearchService.siteId = this.siteId;
|
|
1039
|
-
this.apiService.token = this.token;
|
|
1040
|
-
this.apiWebexService.token = this.token;
|
|
1041
|
-
this.apiService.apiUrl = this.host + '/dcp';
|
|
1042
|
-
this.apiWebexService.apiUrl = this.host + '/webex';
|
|
1043
|
-
this.getMigratedUsers();
|
|
1044
|
-
this.searchSubscription = this.usersSearchService.foundUsers$
|
|
1045
|
-
.subscribe((users) => {
|
|
1046
|
-
this.initializeDataSource(users);
|
|
1047
|
-
});
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
this.usersSearchService.
|
|
1052
|
-
this.
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
this.
|
|
1057
|
-
this.
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
this.usersSearchService.
|
|
1062
|
-
this.
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
this.
|
|
1071
|
-
this.
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
this.
|
|
1077
|
-
this.
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
this.
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
this.
|
|
1088
|
-
this.
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
this.
|
|
1094
|
-
this.
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
this.
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
this.
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
this.users[index].
|
|
1115
|
-
this.users[index].
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
this.users[index].
|
|
1120
|
-
this.users[index].
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
this.users
|
|
1129
|
-
this.
|
|
1130
|
-
this.
|
|
1131
|
-
this.
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
const
|
|
1146
|
-
const
|
|
1147
|
-
const
|
|
1148
|
-
indexes.
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
this.
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
this.
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
this.
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
this.usersSearchService.
|
|
1190
|
-
|
|
1191
|
-
.
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
this.
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
this.
|
|
1219
|
-
this.
|
|
1220
|
-
this.
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
this.
|
|
1232
|
-
|
|
1233
|
-
}
|
|
1234
|
-
|
|
1235
|
-
UsersListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: UsersListComponent, selector: "app-users-list", inputs: { token: "token", customerId: "customerId", siteId: "siteId", host: "host" }, outputs: { openUser: "openUser", userMoved: "userMoved", switchToWizard: "switchToWizard" }, ngImport: i0, template: "<app-loader *ngIf=\"dataPending\"></app-loader>\n<div *ngIf=\"!showMoveUserWizard\" id=\"users-list\">\n <app-pagination\n [pagination]=\"usersSearchService.getPagination()\"\n [showPageSizeOptions]=\"true\"\n (pageNumberChangeEmitter)=\"pageNumberChangeEvent($event)\"\n (pageEmitter)=\"pageEvent($event)\">\n </app-pagination>\nnew users list 2\n <table class=\"webex-table\" mat-table *ngIf=\"users?.length\" #table [dataSource]=\"dataSource\">\n\n <ng-container matColumnDef=\"user-icon\">\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\"></th>\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\n (click)=\"onUserClick(user)\">\n <span class=\"icon-webex-box\"><span class=\"icon-webex icon-webex-user\"></span></span>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"name\">\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">First / Last Name</th>\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\n (click)=\"onUserClick(user)\"> {{ user.firstName }} {{ user.lastName }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"email\">\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Email</th>\n <td class=\"user-site\" [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\n mat-cell *matCellDef=\"let user\" (click)=\"onUserClick(user)\">\n {{ user.email }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"status\">\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Status</th>\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\n (click)=\"onUserClick(user)\">\n <span class=\"icon-user-status icon-user-status-active\"></span>{{user.status}}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\"></th>\n <td class=\"user-site\" mat-cell *matCellDef=\"let user, let i = index\"\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\">\n <mat-progress-spinner class=\"field-spinner\"\n [diameter]=\"20\"\n mode=\"indeterminate\"\n *ngIf=\"user.status === 'In Progress'\"></mat-progress-spinner>\n <button *ngIf=\"!(moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid)\"\n class=\"button-action-dot\" mat-icon-button [matMenuTriggerFor]=\"menu\">\n <div class=\"icon-actions-dots\">\n <span class=\"icon-dot\">.</span>\n <span class=\"icon-dot\">.</span>\n <span class=\"icon-dot\">.</span>\n </div>\n </button>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item [disabled]=\"true\">Resend Invitation</button>\n <button mat-menu-item [disabled]=\"true\">Reset Password</button>\n <button *ngIf=\"!user.isMigrated\" mat-menu-item (click)=\"onMoveUser(user, i, 'QuickMove')\">Quick Move User</button>\n <button *ngIf=\"!user.isMigrated\" mat-menu-item (click)=\"onMoveUser(user, i, 'MT')\">Move User to MT</button>\n <button *ngIf=\"user.isMigrated\" mat-menu-item (click)=\"onMoveUser(user, i, 'DI')\">Move User to DI</button>\n <button mat-menu-item [disabled]=\"true\">Deactivate User</button>\n <button mat-menu-item [disabled]=\"true\">Delete User</button>\n </mat-menu>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"role\">\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Administrator Role</th>\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\" (click)=\"onUserClick(user)\">{{ user.roleName || '' }}</td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n</div>\n\n<app-move-user-wizard *ngIf=\"showMoveUserWizard\" [user]=\"moveUser\"\n [customerId]=\"customerId\" (runMoveUser)=\"runMoveUserToMT()\"\n (closeMoveUserWizard)=\"closeMoveUserWizard()\"></app-move-user-wizard>\n", styles: ["@import\"https://fonts.googleapis.com/css?family=Poppins:400,100,200,300,500,600,800,700,900\";table.mat-table{border-spacing:0;width:100%}::ng-deep .mat-paginator{background:none}.icon-user-status{width:.5rem;height:.5rem;border-radius:50%;background-color:#707070;margin:0 5px 0 0}.icon-user-status.icon-user-status-active{background-color:#1d805f;display:inline-block}.mat-select{height:100%;line-height:35px}.mat-form-field-wrapper{padding-bottom:0!important}.mat-form-field{padding:0;max-width:300px}.fa:hover{color:#0d56aa!important}.mat-icon-button{background:transparent}.icon-webex-box{width:2rem;height:2rem;font-size:.7rem;line-height:1rem;display:inline-block;background:#d0d0d0;border-radius:2rem;line-height:40px;text-align:center}.icon-webex{filter:invert(12%) sepia(14%) saturate(4%) hue-rotate(354deg) brightness(103%) contrast(90%);background-repeat:no-repeat;background-position:center;display:inline-block;height:1rem;width:1rem}.icon-webex-user{background-image:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22UTF-8%22%3F%3E%3Csvg id%3D%22a%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 viewBox%3D%220 0 16.67 15.56%22%3E%3Cdefs%3E%3Cstyle%3E.b%7Bfill%3Anone%3Bstroke%3A%232c355d%3Bstroke-width%3A1.4px%3B%7D%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cpath class%3D%22b%22 d%3D%22M4.87%2C3.89c0-1.72%2C1.51-3.19%2C3.47-3.19s3.47%2C1.47%2C3.47%2C3.19-1.51%2C3.19-3.47%2C3.19-3.47-1.47-3.47-3.19ZM.7%2C12.64c0-.37%2C.19-.76%2C.67-1.17%2C.48-.41%2C1.17-.78%2C2-1.09%2C1.66-.62%2C3.66-.93%2C4.97-.93s3.31%2C.31%2C4.97%2C.93c.83%2C.31%2C1.52%2C.68%2C2%2C1.09%2C.47%2C.41%2C.67%2C.8%2C.67%2C1.17v2.22H.7v-2.22Z%22%2F%3E%3C%2Fsvg%3E\")}.icon-user-status{display:inline-block}*{margin:0}body{background:#f7f7f7}body,th,td{font-family:Poppins,Poppins,sans-serif;font-size:14px}th{color:#0000008a;text-align:left}td{box-sizing:border-box;padding:10px 5px 10px 0}.content-box{margin:auto;position:relative;width:95%}.content-box table{width:100%}.edit-icon-td{width:50px;position:relative}.edit-icon-td button{position:absolute;top:4px}.mat-progress-spinner circle,.mat-spinner circle{stroke:#009fdb!important}.data-loader{position:absolute;top:calc(50% - 25px);left:calc(50% - 25px)}.flex-box{display:flex;justify-content:flex-start}.user-info-box{background:white;display:grid;grid-template-columns:30% 70%;border-radius:8px;border:rgba(0,0,0,.2) 1px solid;padding:24px;font-weight:400;font-size:14px}.user-info-box h3{display:block;font-weight:500;font-size:16px}.mat-divider{margin:5px 0!important}.info-boxes-container{padding:24px 0;display:flex;flex-direction:column;gap:24px}.header-box{height:60px;width:100%;line-height:60px;background:white;border-bottom:1px solid #dedddd}.header-box .header-back-block{float:left}.header-box .header-button-block{float:right}.webex-table{width:100%;margin:auto}.webex-table tr{border-bottom:1px solid #dedede}.webex-table th{background:#f7f7f7;color:#636363;font-size:12px}.webex-table td{background:#fff;color:#000;font-size:14px}.webex-table tr:hover td:not(.disabled-user-row){background:#ededed;cursor:pointer}.webex-table th.mat-header-cell,.webex-table td.mat-cell,.webex-table td.mat-footer-cell{border-bottom:1px solid #dedede}.webex-table tr.mat-header-row{height:37px}.mat-form-field{padding:0 0 5px;width:93%}.mat-form-field.mat-form-field-disabled{border-bottom:none}.mat-error{color:#c73636;margin:13px 0 0}.select-box{border-radius:30px;background:#F3F6F6;border:1px solid #E2E9EF;height:35px;position:relative}.select-box select{border:none!important;background:transparent;height:100%;width:92%;margin:auto;display:block}option:focus,option:focus-visible{border:none!important;outline:none!important}option{height:30px;cursor:pointer;color:#636363}option:hover{background:#ededed!important}.mat-select{height:100%!important;line-height:35px!important}.info-holder,.input-holder{display:grid;grid-template-columns:30% 70%;align-items:baseline}.info-holder__name,.input-holder__name{font-weight:500!important;font-size:14px!important}.info-holder__inputs .input-holder,.input-holder__inputs .input-holder{display:grid;grid-template-columns:30% 70%;align-items:baseline}.info-holder__inputs .input-holder__name,.input-holder__inputs .input-holder__name{font-weight:400!important;font-size:14px!important}.mat-form-field-wrapper,.mat-form-field-flex{height:30px!important}.mat-form-field-appearance-outline .mat-form-field-outline,.mat-form-field-outline .mat-form-field-outline-thick{height:35px!important}.mat-select{line-height:20px!important}.mat-form-field-appearance-outline .mat-form-field-infix{padding:14px 12px 10px;border-top:0;max-width:300px}.mat-tab-group{font-family:Inter,sans-serif}.mat-tab-label{font-weight:500!important;font-size:14px!important;height:auto!important;min-width:auto!important;padding:0!important}.mat-ink-bar{background-color:#000000e6!important;height:3px!important}.mat-form-field-wrapper{padding-bottom:0}.mat-form-field{max-width:300px}table{border-collapse:collapse;border-spacing:0}.mat-form-field-appearance-outline .mat-form-field-infix{padding:0!important}.mat-divider{margin:12px 0}::ng-deep .mat-form-field-wrapper{height:30px}::ng-deep .mat-form-field-flex{height:30px}::ng-deep .mat-form-field-appearance-outline .mat-form-field-outline{height:35px}:ng-deep .mat-form-field-outline .mat-form-field-outline-thick{height:35px}::ng-deep .mat-select{line-height:20px}::ng-deep .mat-form-field-infix{border-top:0px!important}::ng-deep .mat-paginator{background:transparent!important}::ng-deep .mat-paginator-container{min-height:30px!important}::ng-deep .mat-paginator-range-label{margin:0 10px 0 24px!important;font-size:15px!important}::ng-deep .pagination{font-size:13px;color:#0000008a}::ng-deep .per-page-block{display:flex;line-height:42px!important}::ng-deep .item_per_page{line-height:42px!important}::ng-deep .select-page-size{line-height:42px!important}::ng-deep mat-progress-spinner.page-spinner{position:fixed;margin:auto;inset:0}::ng-deep mat-progress-spinner.field-spinner{position:relative;margin:-20px auto auto}::ng-deep mat-progress-spinner.tab-spinner{position:relative;margin:0 auto auto}.icon-dot{display:block;color:#4f4f4f;font-size:16px;line-height:5px}.button-action-dot:hover{background:#dfdfdf}.button-action-dot{padding:0 5px 5px;border-radius:.25rem}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i10.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i10.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i10.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i10.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i10.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i10.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i10.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i10.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i10.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i10.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i11$1.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i11$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i11$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: PaginationComponent, selector: "app-pagination", inputs: ["pagination", "showPageSizeOptions", "showRefreshButton", "lengthPending"], outputs: ["pageEmitter", "pageNumberChangeEmitter"] }, { kind: "component", type: AppLoaderComponent, selector: "app-loader" }, { kind: "component", type: MoveUserWizardComponent, selector: "app-move-user-wizard", inputs: ["user", "customerId"], outputs: ["closeMoveUserWizard", "runMoveUser"] }] });
|
|
1236
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersListComponent, decorators: [{
|
|
1237
|
-
|
|
1238
|
-
args: [{ selector: 'app-users-list', template: "<app-loader *ngIf=\"dataPending\"></app-loader>\n<div *ngIf=\"!showMoveUserWizard\" id=\"users-list\">\n <app-pagination\n [pagination]=\"usersSearchService.getPagination()\"\n [showPageSizeOptions]=\"true\"\n (pageNumberChangeEmitter)=\"pageNumberChangeEvent($event)\"\n (pageEmitter)=\"pageEvent($event)\">\n </app-pagination>\nnew users list 2\n <table class=\"webex-table\" mat-table *ngIf=\"users?.length\" #table [dataSource]=\"dataSource\">\n\n <ng-container matColumnDef=\"user-icon\">\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\"></th>\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\n (click)=\"onUserClick(user)\">\n <span class=\"icon-webex-box\"><span class=\"icon-webex icon-webex-user\"></span></span>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"name\">\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">First / Last Name</th>\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\n (click)=\"onUserClick(user)\"> {{ user.firstName }} {{ user.lastName }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"email\">\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Email</th>\n <td class=\"user-site\" [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\n mat-cell *matCellDef=\"let user\" (click)=\"onUserClick(user)\">\n {{ user.email }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"status\">\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Status</th>\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\n (click)=\"onUserClick(user)\">\n <span class=\"icon-user-status icon-user-status-active\"></span>{{user.status}}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\"></th>\n <td class=\"user-site\" mat-cell *matCellDef=\"let user, let i = index\"\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\">\n <mat-progress-spinner class=\"field-spinner\"\n [diameter]=\"20\"\n mode=\"indeterminate\"\n *ngIf=\"user.status === 'In Progress'\"></mat-progress-spinner>\n <button *ngIf=\"!(moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid)\"\n class=\"button-action-dot\" mat-icon-button [matMenuTriggerFor]=\"menu\">\n <div class=\"icon-actions-dots\">\n <span class=\"icon-dot\">.</span>\n <span class=\"icon-dot\">.</span>\n <span class=\"icon-dot\">.</span>\n </div>\n </button>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item [disabled]=\"true\">Resend Invitation</button>\n <button mat-menu-item [disabled]=\"true\">Reset Password</button>\n <button *ngIf=\"!user.isMigrated\" mat-menu-item (click)=\"onMoveUser(user, i, 'QuickMove')\">Quick Move User</button>\n <button *ngIf=\"!user.isMigrated\" mat-menu-item (click)=\"onMoveUser(user, i, 'MT')\">Move User to MT</button>\n <button *ngIf=\"user.isMigrated\" mat-menu-item (click)=\"onMoveUser(user, i, 'DI')\">Move User to DI</button>\n <button mat-menu-item [disabled]=\"true\">Deactivate User</button>\n <button mat-menu-item [disabled]=\"true\">Delete User</button>\n </mat-menu>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"role\">\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Administrator Role</th>\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\" (click)=\"onUserClick(user)\">{{ user.roleName || '' }}</td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n</div>\n\n<app-move-user-wizard *ngIf=\"showMoveUserWizard\" [user]=\"moveUser\"\n [customerId]=\"customerId\" (runMoveUser)=\"runMoveUserToMT()\"\n (closeMoveUserWizard)=\"closeMoveUserWizard()\"></app-move-user-wizard>\n", styles: ["@import\"https://fonts.googleapis.com/css?family=Poppins:400,100,200,300,500,600,800,700,900\";table.mat-table{border-spacing:0;width:100%}::ng-deep .mat-paginator{background:none}.icon-user-status{width:.5rem;height:.5rem;border-radius:50%;background-color:#707070;margin:0 5px 0 0}.icon-user-status.icon-user-status-active{background-color:#1d805f;display:inline-block}.mat-select{height:100%;line-height:35px}.mat-form-field-wrapper{padding-bottom:0!important}.mat-form-field{padding:0;max-width:300px}.fa:hover{color:#0d56aa!important}.mat-icon-button{background:transparent}.icon-webex-box{width:2rem;height:2rem;font-size:.7rem;line-height:1rem;display:inline-block;background:#d0d0d0;border-radius:2rem;line-height:40px;text-align:center}.icon-webex{filter:invert(12%) sepia(14%) saturate(4%) hue-rotate(354deg) brightness(103%) contrast(90%);background-repeat:no-repeat;background-position:center;display:inline-block;height:1rem;width:1rem}.icon-webex-user{background-image:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22UTF-8%22%3F%3E%3Csvg id%3D%22a%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 viewBox%3D%220 0 16.67 15.56%22%3E%3Cdefs%3E%3Cstyle%3E.b%7Bfill%3Anone%3Bstroke%3A%232c355d%3Bstroke-width%3A1.4px%3B%7D%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cpath class%3D%22b%22 d%3D%22M4.87%2C3.89c0-1.72%2C1.51-3.19%2C3.47-3.19s3.47%2C1.47%2C3.47%2C3.19-1.51%2C3.19-3.47%2C3.19-3.47-1.47-3.47-3.19ZM.7%2C12.64c0-.37%2C.19-.76%2C.67-1.17%2C.48-.41%2C1.17-.78%2C2-1.09%2C1.66-.62%2C3.66-.93%2C4.97-.93s3.31%2C.31%2C4.97%2C.93c.83%2C.31%2C1.52%2C.68%2C2%2C1.09%2C.47%2C.41%2C.67%2C.8%2C.67%2C1.17v2.22H.7v-2.22Z%22%2F%3E%3C%2Fsvg%3E\")}.icon-user-status{display:inline-block}*{margin:0}body{background:#f7f7f7}body,th,td{font-family:Poppins,Poppins,sans-serif;font-size:14px}th{color:#0000008a;text-align:left}td{box-sizing:border-box;padding:10px 5px 10px 0}.content-box{margin:auto;position:relative;width:95%}.content-box table{width:100%}.edit-icon-td{width:50px;position:relative}.edit-icon-td button{position:absolute;top:4px}.mat-progress-spinner circle,.mat-spinner circle{stroke:#009fdb!important}.data-loader{position:absolute;top:calc(50% - 25px);left:calc(50% - 25px)}.flex-box{display:flex;justify-content:flex-start}.user-info-box{background:white;display:grid;grid-template-columns:30% 70%;border-radius:8px;border:rgba(0,0,0,.2) 1px solid;padding:24px;font-weight:400;font-size:14px}.user-info-box h3{display:block;font-weight:500;font-size:16px}.mat-divider{margin:5px 0!important}.info-boxes-container{padding:24px 0;display:flex;flex-direction:column;gap:24px}.header-box{height:60px;width:100%;line-height:60px;background:white;border-bottom:1px solid #dedddd}.header-box .header-back-block{float:left}.header-box .header-button-block{float:right}.webex-table{width:100%;margin:auto}.webex-table tr{border-bottom:1px solid #dedede}.webex-table th{background:#f7f7f7;color:#636363;font-size:12px}.webex-table td{background:#fff;color:#000;font-size:14px}.webex-table tr:hover td:not(.disabled-user-row){background:#ededed;cursor:pointer}.webex-table th.mat-header-cell,.webex-table td.mat-cell,.webex-table td.mat-footer-cell{border-bottom:1px solid #dedede}.webex-table tr.mat-header-row{height:37px}.mat-form-field{padding:0 0 5px;width:93%}.mat-form-field.mat-form-field-disabled{border-bottom:none}.mat-error{color:#c73636;margin:13px 0 0}.select-box{border-radius:30px;background:#F3F6F6;border:1px solid #E2E9EF;height:35px;position:relative}.select-box select{border:none!important;background:transparent;height:100%;width:92%;margin:auto;display:block}option:focus,option:focus-visible{border:none!important;outline:none!important}option{height:30px;cursor:pointer;color:#636363}option:hover{background:#ededed!important}.mat-select{height:100%!important;line-height:35px!important}.info-holder,.input-holder{display:grid;grid-template-columns:30% 70%;align-items:baseline}.info-holder__name,.input-holder__name{font-weight:500!important;font-size:14px!important}.info-holder__inputs .input-holder,.input-holder__inputs .input-holder{display:grid;grid-template-columns:30% 70%;align-items:baseline}.info-holder__inputs .input-holder__name,.input-holder__inputs .input-holder__name{font-weight:400!important;font-size:14px!important}.mat-form-field-wrapper,.mat-form-field-flex{height:30px!important}.mat-form-field-appearance-outline .mat-form-field-outline,.mat-form-field-outline .mat-form-field-outline-thick{height:35px!important}.mat-select{line-height:20px!important}.mat-form-field-appearance-outline .mat-form-field-infix{padding:14px 12px 10px;border-top:0;max-width:300px}.mat-tab-group{font-family:Inter,sans-serif}.mat-tab-label{font-weight:500!important;font-size:14px!important;height:auto!important;min-width:auto!important;padding:0!important}.mat-ink-bar{background-color:#000000e6!important;height:3px!important}.mat-form-field-wrapper{padding-bottom:0}.mat-form-field{max-width:300px}table{border-collapse:collapse;border-spacing:0}.mat-form-field-appearance-outline .mat-form-field-infix{padding:0!important}.mat-divider{margin:12px 0}::ng-deep .mat-form-field-wrapper{height:30px}::ng-deep .mat-form-field-flex{height:30px}::ng-deep .mat-form-field-appearance-outline .mat-form-field-outline{height:35px}:ng-deep .mat-form-field-outline .mat-form-field-outline-thick{height:35px}::ng-deep .mat-select{line-height:20px}::ng-deep .mat-form-field-infix{border-top:0px!important}::ng-deep .mat-paginator{background:transparent!important}::ng-deep .mat-paginator-container{min-height:30px!important}::ng-deep .mat-paginator-range-label{margin:0 10px 0 24px!important;font-size:15px!important}::ng-deep .pagination{font-size:13px;color:#0000008a}::ng-deep .per-page-block{display:flex;line-height:42px!important}::ng-deep .item_per_page{line-height:42px!important}::ng-deep .select-page-size{line-height:42px!important}::ng-deep mat-progress-spinner.page-spinner{position:fixed;margin:auto;inset:0}::ng-deep mat-progress-spinner.field-spinner{position:relative;margin:-20px auto auto}::ng-deep mat-progress-spinner.tab-spinner{position:relative;margin:0 auto auto}.icon-dot{display:block;color:#4f4f4f;font-size:16px;line-height:5px}.button-action-dot:hover{background:#dfdfdf}.button-action-dot{padding:0 5px 5px;border-radius:.25rem}\n"] }]
|
|
1239
|
-
}], ctorParameters: function () { return [{ type: UserService }, { type: APIService }, { type: ApiWebexService }, { type: NotificationService }, { type: UsersSearchService }, { type: i1.MatDialog }]; }, propDecorators: { token: [{
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1014
|
+
const DISPLAYED_COLS = ['user-icon', 'name', 'email', 'status', 'role', 'actions'];
|
|
1015
|
+
const LOCAL_STORAGE = {
|
|
1016
|
+
USER_IN_MIGRATION: 'userIdInMigration'
|
|
1017
|
+
};
|
|
1018
|
+
class UsersListComponent {
|
|
1019
|
+
get form() {
|
|
1020
|
+
return this.userService?.user?.form;
|
|
1021
|
+
}
|
|
1022
|
+
constructor(userService, apiService, apiWebexService, notifications, usersSearchService, dialog) {
|
|
1023
|
+
this.userService = userService;
|
|
1024
|
+
this.apiService = apiService;
|
|
1025
|
+
this.apiWebexService = apiWebexService;
|
|
1026
|
+
this.notifications = notifications;
|
|
1027
|
+
this.usersSearchService = usersSearchService;
|
|
1028
|
+
this.dialog = dialog;
|
|
1029
|
+
this.openUser = new EventEmitter();
|
|
1030
|
+
this.userMoved = new EventEmitter();
|
|
1031
|
+
this.switchToWizard = new EventEmitter();
|
|
1032
|
+
this.displayedColumns = DISPLAYED_COLS;
|
|
1033
|
+
this.showMoveUserWizard = false;
|
|
1034
|
+
}
|
|
1035
|
+
ngOnInit() {
|
|
1036
|
+
this.usersSearchService.setDefaultValues();
|
|
1037
|
+
this.usersSearchService.customerId = this.customerId;
|
|
1038
|
+
this.usersSearchService.siteId = this.siteId;
|
|
1039
|
+
this.apiService.token = this.token;
|
|
1040
|
+
this.apiWebexService.token = this.token;
|
|
1041
|
+
this.apiService.apiUrl = this.host + '/dcp';
|
|
1042
|
+
this.apiWebexService.apiUrl = this.host + '/webex';
|
|
1043
|
+
this.getMigratedUsers();
|
|
1044
|
+
this.searchSubscription = this.usersSearchService.foundUsers$
|
|
1045
|
+
.subscribe((users) => {
|
|
1046
|
+
this.initializeDataSource(users);
|
|
1047
|
+
});
|
|
1048
|
+
console.log('users list paris 333');
|
|
1049
|
+
}
|
|
1050
|
+
pageNumberChangeEvent(perPageNumber) {
|
|
1051
|
+
this.usersSearchService.pageSize = perPageNumber;
|
|
1052
|
+
this.usersSearchService.pageIndex = 0;
|
|
1053
|
+
this.runSearch();
|
|
1054
|
+
}
|
|
1055
|
+
closeMoveUserWizard() {
|
|
1056
|
+
this.moveUser = null;
|
|
1057
|
+
this.showMoveUserWizard = false;
|
|
1058
|
+
this.switchToWizard.emit(false);
|
|
1059
|
+
}
|
|
1060
|
+
pageEvent(event) {
|
|
1061
|
+
this.usersSearchService.pageSize = event.pageSize;
|
|
1062
|
+
this.usersSearchService.pageIndex = event.pageIndex;
|
|
1063
|
+
this.runSearch();
|
|
1064
|
+
}
|
|
1065
|
+
onUserClick(user) {
|
|
1066
|
+
this.openUser.emit(user);
|
|
1067
|
+
}
|
|
1068
|
+
moveUserToMT(user, index) {
|
|
1069
|
+
if (user && user.siteId && user.userid) {
|
|
1070
|
+
this.moveUserPending = true;
|
|
1071
|
+
this.moveInProgressUserId = user.userid;
|
|
1072
|
+
this.setStatusToUser(index, 'In Progress');
|
|
1073
|
+
localStorage.setItem(LOCAL_STORAGE.USER_IN_MIGRATION, user.userid);
|
|
1074
|
+
const subscription = this.userService.moveUserToMT(this.customerId, user)
|
|
1075
|
+
.subscribe(() => {
|
|
1076
|
+
this.moveUser = null;
|
|
1077
|
+
this.moveUserIndex = null;
|
|
1078
|
+
this.getMigratedUsers();
|
|
1079
|
+
}, () => {
|
|
1080
|
+
this.removeUserInMigrationProgress();
|
|
1081
|
+
this.setStatusToUser(index, 'Migration Error');
|
|
1082
|
+
});
|
|
1083
|
+
}
|
|
1084
|
+
}
|
|
1085
|
+
moveUserToDI(user, index) {
|
|
1086
|
+
if (user && user.siteId && user.webexUUID) {
|
|
1087
|
+
this.moveUserPending = true;
|
|
1088
|
+
this.moveInProgressUserId = user.userid;
|
|
1089
|
+
this.users[index].status = 'In Progress';
|
|
1090
|
+
localStorage.setItem(LOCAL_STORAGE.USER_IN_MIGRATION, user.userid);
|
|
1091
|
+
const subscription = this.userService.moveUserToDI(this.customerId, user)
|
|
1092
|
+
.subscribe(() => {
|
|
1093
|
+
this.removeUserInMigrationProgress();
|
|
1094
|
+
this.setStatusToUser(index, 'Active');
|
|
1095
|
+
this.users[index].webexUUID = '';
|
|
1096
|
+
if (this.usersSearchService.migratedUsers && this.usersSearchService.migratedUsers.length) {
|
|
1097
|
+
this.usersSearchService.migratedUsers = this.usersSearchService.migratedUsers.filter((migratedUser) => migratedUser.userid !== user.email);
|
|
1098
|
+
}
|
|
1099
|
+
}, () => {
|
|
1100
|
+
this.removeUserInMigrationProgress();
|
|
1101
|
+
this.setStatusToUser(index, 'Migration Error');
|
|
1102
|
+
});
|
|
1103
|
+
}
|
|
1104
|
+
}
|
|
1105
|
+
removeUserInMigrationProgress() {
|
|
1106
|
+
localStorage.removeItem(LOCAL_STORAGE.USER_IN_MIGRATION);
|
|
1107
|
+
this.moveInProgressUserId = '';
|
|
1108
|
+
this.moveUserPending = false;
|
|
1109
|
+
}
|
|
1110
|
+
setStatusToUser(index, status) {
|
|
1111
|
+
if (this.users && this.users[index]) {
|
|
1112
|
+
this.users[index].status = status;
|
|
1113
|
+
if (status === 'Migrated') {
|
|
1114
|
+
this.users[index].roleName = '';
|
|
1115
|
+
this.users[index].isMigrated = true;
|
|
1116
|
+
this.users[index].status = status;
|
|
1117
|
+
}
|
|
1118
|
+
else {
|
|
1119
|
+
this.users[index].roleName = 'Dedicated Instance Calling user';
|
|
1120
|
+
this.users[index].isMigrated = false;
|
|
1121
|
+
this.users[index].status = status;
|
|
1122
|
+
}
|
|
1123
|
+
}
|
|
1124
|
+
this.dataSource = new MatTableDataSource(this.users);
|
|
1125
|
+
}
|
|
1126
|
+
initializeDataSource(users) {
|
|
1127
|
+
if (users?.length) {
|
|
1128
|
+
// this.setRandomUserRole(users);
|
|
1129
|
+
this.users = users;
|
|
1130
|
+
this.setUserMigrationProgress();
|
|
1131
|
+
this.usersSearchService.setMigratedPropToUsers(this.users);
|
|
1132
|
+
this.dataSource = new MatTableDataSource(users);
|
|
1133
|
+
}
|
|
1134
|
+
}
|
|
1135
|
+
setUserRole() {
|
|
1136
|
+
if (this.users?.length) {
|
|
1137
|
+
this.users.forEach(user => {
|
|
1138
|
+
if (!user.isMigrated) {
|
|
1139
|
+
user.roleName = 'Dedicated Instance Calling user';
|
|
1140
|
+
}
|
|
1141
|
+
});
|
|
1142
|
+
}
|
|
1143
|
+
}
|
|
1144
|
+
setRandomUserRole(users) {
|
|
1145
|
+
const max = Math.round(this.usersSearchService.pageSize - this.usersSearchService.pageSize / 4);
|
|
1146
|
+
const min = Math.round(this.usersSearchService.pageSize / 2);
|
|
1147
|
+
const randomAmount = Math.round(Math.random() * (max - min) + min);
|
|
1148
|
+
const indexes = this.getArrayOfRandomUserIndexes(randomAmount);
|
|
1149
|
+
indexes.forEach(index => {
|
|
1150
|
+
if (users[index]) {
|
|
1151
|
+
users[index].roleName = 'Dedicated Instance Calling user';
|
|
1152
|
+
}
|
|
1153
|
+
});
|
|
1154
|
+
}
|
|
1155
|
+
getArrayOfRandomUserIndexes(randomAmount) {
|
|
1156
|
+
const indexes = [];
|
|
1157
|
+
while (randomAmount > 0) {
|
|
1158
|
+
const index = Math.round(Math.random() * (this.usersSearchService.pageSize - 1));
|
|
1159
|
+
indexes.push(index);
|
|
1160
|
+
randomAmount--;
|
|
1161
|
+
}
|
|
1162
|
+
return indexes;
|
|
1163
|
+
}
|
|
1164
|
+
runSearch() {
|
|
1165
|
+
this.dataPending = true;
|
|
1166
|
+
this.usersSearchService.quickRegularUsersSearch()
|
|
1167
|
+
.subscribe(() => {
|
|
1168
|
+
this.dataPending = false;
|
|
1169
|
+
}, () => {
|
|
1170
|
+
this.dataPending = false;
|
|
1171
|
+
this.notifications.error('The data can not be received');
|
|
1172
|
+
});
|
|
1173
|
+
}
|
|
1174
|
+
setUserMigrationProgress() {
|
|
1175
|
+
const userIdInMigration = localStorage.getItem(LOCAL_STORAGE.USER_IN_MIGRATION);
|
|
1176
|
+
if (userIdInMigration) {
|
|
1177
|
+
const index = this.users.findIndex(user => user.userid === userIdInMigration);
|
|
1178
|
+
this.moveInProgressUserId = index > -1 ? this.users[index].userid : '';
|
|
1179
|
+
this.moveUserPending = index > -1;
|
|
1180
|
+
}
|
|
1181
|
+
}
|
|
1182
|
+
getMigratedUsers() {
|
|
1183
|
+
this.dataPending = true;
|
|
1184
|
+
const searchParams = {
|
|
1185
|
+
customerid: this.customerId,
|
|
1186
|
+
siteid: this.siteId,
|
|
1187
|
+
'cloud-only': 'true'
|
|
1188
|
+
};
|
|
1189
|
+
// this.usersSearchService.quickWebexUsersSearch(searchParams, true, MAX_INTEGER)
|
|
1190
|
+
this.usersSearchService.getMigratedUsers(this.customerId)
|
|
1191
|
+
// this.usersSearchService.getMigratedWebexUsers(this.customerId)
|
|
1192
|
+
.subscribe(() => {
|
|
1193
|
+
const userIdInMigration = localStorage.getItem(LOCAL_STORAGE.USER_IN_MIGRATION);
|
|
1194
|
+
if (userIdInMigration && this.usersSearchService.migratedUsers.filter((migratedUser) => migratedUser.userid === userIdInMigration)) {
|
|
1195
|
+
localStorage.removeItem(LOCAL_STORAGE.USER_IN_MIGRATION);
|
|
1196
|
+
}
|
|
1197
|
+
this.runSearch();
|
|
1198
|
+
}, () => {
|
|
1199
|
+
this.dataPending = false;
|
|
1200
|
+
this.notifications.error('The data can not be received');
|
|
1201
|
+
});
|
|
1202
|
+
}
|
|
1203
|
+
onMoveUser(user, index, type) {
|
|
1204
|
+
const dialogRef = this.dialog.open(UserListConfirmDialogComponent, {
|
|
1205
|
+
data: {
|
|
1206
|
+
title: `Move user to ${type}?`,
|
|
1207
|
+
message: `You\'re sure that you want to move ${user.userid} to ${type}?`,
|
|
1208
|
+
confirmButtonText: 'Yes, continue'
|
|
1209
|
+
}
|
|
1210
|
+
});
|
|
1211
|
+
dialogRef.beforeClosed().subscribe((result) => {
|
|
1212
|
+
if (result) {
|
|
1213
|
+
switch (type) {
|
|
1214
|
+
case 'QuickMove':
|
|
1215
|
+
this.moveUserToMT(user, index);
|
|
1216
|
+
break;
|
|
1217
|
+
case 'MT':
|
|
1218
|
+
this.moveUser = user;
|
|
1219
|
+
this.moveUserIndex = index;
|
|
1220
|
+
this.showMoveUserWizard = true;
|
|
1221
|
+
this.switchToWizard.emit(true);
|
|
1222
|
+
break;
|
|
1223
|
+
case 'DI':
|
|
1224
|
+
this.moveUserToDI(user, index);
|
|
1225
|
+
break;
|
|
1226
|
+
}
|
|
1227
|
+
}
|
|
1228
|
+
});
|
|
1229
|
+
}
|
|
1230
|
+
runMoveUserToMT() {
|
|
1231
|
+
this.showMoveUserWizard = false;
|
|
1232
|
+
this.moveUserToMT(this.moveUser, this.moveUserIndex);
|
|
1233
|
+
}
|
|
1234
|
+
}
|
|
1235
|
+
UsersListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersListComponent, deps: [{ token: UserService }, { token: APIService }, { token: ApiWebexService }, { token: NotificationService }, { token: UsersSearchService }, { token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
1236
|
+
UsersListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: UsersListComponent, selector: "app-users-list", inputs: { token: "token", customerId: "customerId", siteId: "siteId", host: "host" }, outputs: { openUser: "openUser", userMoved: "userMoved", switchToWizard: "switchToWizard" }, ngImport: i0, template: "<app-loader *ngIf=\"dataPending\"></app-loader>\r\n<div *ngIf=\"!showMoveUserWizard\" id=\"users-list\">\r\n <app-pagination\r\n [pagination]=\"usersSearchService.getPagination()\"\r\n [showPageSizeOptions]=\"true\"\r\n (pageNumberChangeEmitter)=\"pageNumberChangeEvent($event)\"\r\n (pageEmitter)=\"pageEvent($event)\">\r\n </app-pagination>\r\n <table class=\"webex-table\" mat-table *ngIf=\"users?.length\" #table [dataSource]=\"dataSource\">\r\n\r\n <ng-container matColumnDef=\"user-icon\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\"></th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\r\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\r\n (click)=\"onUserClick(user)\">\r\n <span class=\"icon-webex-box\"><span class=\"icon-webex icon-webex-user\"></span></span>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"name\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">First / Last Name</th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\r\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\r\n (click)=\"onUserClick(user)\"> {{ user.firstName }} {{ user.lastName }}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"email\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Email</th>\r\n <td class=\"user-site\" [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\r\n mat-cell *matCellDef=\"let user\" (click)=\"onUserClick(user)\">\r\n {{ user.email }}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"status\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Status</th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\r\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\r\n (click)=\"onUserClick(user)\">\r\n <span class=\"icon-user-status icon-user-status-active\"></span>{{user.status}}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"actions\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\"></th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user, let i = index\"\r\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\">\r\n <mat-progress-spinner class=\"field-spinner\"\r\n [diameter]=\"20\"\r\n mode=\"indeterminate\"\r\n *ngIf=\"user.status === 'In Progress'\"></mat-progress-spinner>\r\n <button *ngIf=\"!(moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid)\"\r\n class=\"button-action-dot\" mat-icon-button [matMenuTriggerFor]=\"menu\">\r\n <div class=\"icon-actions-dots\">\r\n <span class=\"icon-dot\">.</span>\r\n <span class=\"icon-dot\">.</span>\r\n <span class=\"icon-dot\">.</span>\r\n </div>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item [disabled]=\"true\">Resend Invitation</button>\r\n <button mat-menu-item [disabled]=\"true\">Reset Password</button>\r\n <button *ngIf=\"!user.isMigrated\" mat-menu-item (click)=\"onMoveUser(user, i, 'QuickMove')\">Quick Move User</button>\r\n <button *ngIf=\"!user.isMigrated\" mat-menu-item (click)=\"onMoveUser(user, i, 'MT')\">Move User to MT</button>\r\n <button *ngIf=\"user.isMigrated\" mat-menu-item (click)=\"onMoveUser(user, i, 'DI')\">Move User to DI</button>\r\n <button mat-menu-item [disabled]=\"true\">Deactivate User</button>\r\n <button mat-menu-item [disabled]=\"true\">Delete User</button>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"role\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Administrator Role</th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\" (click)=\"onUserClick(user)\">{{ user.roleName || '' }}</td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\r\n </table>\r\n</div>\r\n\r\n<app-move-user-wizard *ngIf=\"showMoveUserWizard\" [user]=\"moveUser\"\r\n [customerId]=\"customerId\" (runMoveUser)=\"runMoveUserToMT()\"\r\n (closeMoveUserWizard)=\"closeMoveUserWizard()\"></app-move-user-wizard>\r\n", styles: ["@import\"https://fonts.googleapis.com/css?family=Poppins:400,100,200,300,500,600,800,700,900\";table.mat-table{border-spacing:0;width:100%}::ng-deep .mat-paginator{background:none}.icon-user-status{width:.5rem;height:.5rem;border-radius:50%;background-color:#707070;margin:0 5px 0 0}.icon-user-status.icon-user-status-active{background-color:#1d805f;display:inline-block}.mat-select{height:100%;line-height:35px}.mat-form-field-wrapper{padding-bottom:0!important}.mat-form-field{padding:0;max-width:300px}.fa:hover{color:#0d56aa!important}.mat-icon-button{background:transparent}.icon-webex-box{width:2rem;height:2rem;font-size:.7rem;line-height:1rem;display:inline-block;background:#d0d0d0;border-radius:2rem;line-height:40px;text-align:center}.icon-webex{filter:invert(12%) sepia(14%) saturate(4%) hue-rotate(354deg) brightness(103%) contrast(90%);background-repeat:no-repeat;background-position:center;display:inline-block;height:1rem;width:1rem}.icon-webex-user{background-image:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22UTF-8%22%3F%3E%3Csvg id%3D%22a%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 viewBox%3D%220 0 16.67 15.56%22%3E%3Cdefs%3E%3Cstyle%3E.b%7Bfill%3Anone%3Bstroke%3A%232c355d%3Bstroke-width%3A1.4px%3B%7D%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cpath class%3D%22b%22 d%3D%22M4.87%2C3.89c0-1.72%2C1.51-3.19%2C3.47-3.19s3.47%2C1.47%2C3.47%2C3.19-1.51%2C3.19-3.47%2C3.19-3.47-1.47-3.47-3.19ZM.7%2C12.64c0-.37%2C.19-.76%2C.67-1.17%2C.48-.41%2C1.17-.78%2C2-1.09%2C1.66-.62%2C3.66-.93%2C4.97-.93s3.31%2C.31%2C4.97%2C.93c.83%2C.31%2C1.52%2C.68%2C2%2C1.09%2C.47%2C.41%2C.67%2C.8%2C.67%2C1.17v2.22H.7v-2.22Z%22%2F%3E%3C%2Fsvg%3E\")}.icon-user-status{display:inline-block}*{margin:0}body{background:#f7f7f7}body,th,td{font-family:Poppins,Poppins,sans-serif;font-size:14px}th{color:#0000008a;text-align:left}td{box-sizing:border-box;padding:10px 5px 10px 0}.content-box{margin:auto;position:relative;width:95%}.content-box table{width:100%}.edit-icon-td{width:50px;position:relative}.edit-icon-td button{position:absolute;top:4px}.mat-progress-spinner circle,.mat-spinner circle{stroke:#009fdb!important}.data-loader{position:absolute;top:calc(50% - 25px);left:calc(50% - 25px)}.flex-box{display:flex;justify-content:flex-start}.user-info-box{background:white;display:grid;grid-template-columns:30% 70%;border-radius:8px;border:rgba(0,0,0,.2) 1px solid;padding:24px;font-weight:400;font-size:14px}.user-info-box h3{display:block;font-weight:500;font-size:16px}.mat-divider{margin:5px 0!important}.info-boxes-container{padding:24px 0;display:flex;flex-direction:column;gap:24px}.header-box{height:60px;width:100%;line-height:60px;background:white;border-bottom:1px solid #dedddd}.header-box .header-back-block{float:left}.header-box .header-button-block{float:right}.webex-table{width:100%;margin:auto}.webex-table tr{border-bottom:1px solid #dedede}.webex-table th{background:#f7f7f7;color:#636363;font-size:12px}.webex-table td{background:#fff;color:#000;font-size:14px}.webex-table tr:hover td:not(.disabled-user-row){background:#ededed;cursor:pointer}.webex-table th.mat-header-cell,.webex-table td.mat-cell,.webex-table td.mat-footer-cell{border-bottom:1px solid #dedede}.webex-table tr.mat-header-row{height:37px}.mat-form-field{padding:0 0 5px;width:93%}.mat-form-field.mat-form-field-disabled{border-bottom:none}.mat-error{color:#c73636;margin:13px 0 0}.select-box{border-radius:30px;background:#F3F6F6;border:1px solid #E2E9EF;height:35px;position:relative}.select-box select{border:none!important;background:transparent;height:100%;width:92%;margin:auto;display:block}option:focus,option:focus-visible{border:none!important;outline:none!important}option{height:30px;cursor:pointer;color:#636363}option:hover{background:#ededed!important}.mat-select{height:100%!important;line-height:35px!important}.info-holder,.input-holder{display:grid;grid-template-columns:30% 70%;align-items:baseline}.info-holder__name,.input-holder__name{font-weight:500!important;font-size:14px!important}.info-holder__inputs .input-holder,.input-holder__inputs .input-holder{display:grid;grid-template-columns:30% 70%;align-items:baseline}.info-holder__inputs .input-holder__name,.input-holder__inputs .input-holder__name{font-weight:400!important;font-size:14px!important}.mat-form-field-wrapper,.mat-form-field-flex{height:30px!important}.mat-form-field-appearance-outline .mat-form-field-outline,.mat-form-field-outline .mat-form-field-outline-thick{height:35px!important}.mat-select{line-height:20px!important}.mat-form-field-appearance-outline .mat-form-field-infix{padding:14px 12px 10px;border-top:0;max-width:300px}.mat-tab-group{font-family:Inter,sans-serif}.mat-tab-label{font-weight:500!important;font-size:14px!important;height:auto!important;min-width:auto!important;padding:0!important}.mat-ink-bar{background-color:#000000e6!important;height:3px!important}.mat-form-field-wrapper{padding-bottom:0}.mat-form-field{max-width:300px}table{border-collapse:collapse;border-spacing:0}.mat-form-field-appearance-outline .mat-form-field-infix{padding:0!important}.mat-divider{margin:12px 0}::ng-deep .mat-form-field-wrapper{height:30px}::ng-deep .mat-form-field-flex{height:30px}::ng-deep .mat-form-field-appearance-outline .mat-form-field-outline{height:35px}:ng-deep .mat-form-field-outline .mat-form-field-outline-thick{height:35px}::ng-deep .mat-select{line-height:20px}::ng-deep .mat-form-field-infix{border-top:0px!important}::ng-deep .mat-paginator{background:transparent!important}::ng-deep .mat-paginator-container{min-height:30px!important}::ng-deep .mat-paginator-range-label{margin:0 10px 0 24px!important;font-size:15px!important}::ng-deep .pagination{font-size:13px;color:#0000008a}::ng-deep .per-page-block{display:flex;line-height:42px!important}::ng-deep .item_per_page{line-height:42px!important}::ng-deep .select-page-size{line-height:42px!important}::ng-deep mat-progress-spinner.page-spinner{position:fixed;margin:auto;inset:0}::ng-deep mat-progress-spinner.field-spinner{position:relative;margin:-20px auto auto}::ng-deep mat-progress-spinner.tab-spinner{position:relative;margin:0 auto auto}.icon-dot{display:block;color:#4f4f4f;font-size:16px;line-height:5px}.button-action-dot:hover{background:#dfdfdf}.button-action-dot{padding:0 5px 5px;border-radius:.25rem}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i10$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i10$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i10$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i10$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i10$1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i10$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i10$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i10$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i10$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i10$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i11.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i11.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i11.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: PaginationComponent, selector: "app-pagination", inputs: ["pagination", "showPageSizeOptions", "showRefreshButton", "lengthPending"], outputs: ["pageEmitter", "pageNumberChangeEmitter"] }, { kind: "component", type: AppLoaderComponent, selector: "app-loader" }, { kind: "component", type: MoveUserWizardComponent, selector: "app-move-user-wizard", inputs: ["user", "customerId"], outputs: ["closeMoveUserWizard", "runMoveUser"] }] });
|
|
1237
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersListComponent, decorators: [{
|
|
1238
|
+
type: Component,
|
|
1239
|
+
args: [{ selector: 'app-users-list', template: "<app-loader *ngIf=\"dataPending\"></app-loader>\r\n<div *ngIf=\"!showMoveUserWizard\" id=\"users-list\">\r\n <app-pagination\r\n [pagination]=\"usersSearchService.getPagination()\"\r\n [showPageSizeOptions]=\"true\"\r\n (pageNumberChangeEmitter)=\"pageNumberChangeEvent($event)\"\r\n (pageEmitter)=\"pageEvent($event)\">\r\n </app-pagination>\r\n <table class=\"webex-table\" mat-table *ngIf=\"users?.length\" #table [dataSource]=\"dataSource\">\r\n\r\n <ng-container matColumnDef=\"user-icon\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\"></th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\r\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\r\n (click)=\"onUserClick(user)\">\r\n <span class=\"icon-webex-box\"><span class=\"icon-webex icon-webex-user\"></span></span>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"name\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">First / Last Name</th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\r\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\r\n (click)=\"onUserClick(user)\"> {{ user.firstName }} {{ user.lastName }}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"email\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Email</th>\r\n <td class=\"user-site\" [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\r\n mat-cell *matCellDef=\"let user\" (click)=\"onUserClick(user)\">\r\n {{ user.email }}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"status\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Status</th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\r\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\r\n (click)=\"onUserClick(user)\">\r\n <span class=\"icon-user-status icon-user-status-active\"></span>{{user.status}}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"actions\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\"></th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user, let i = index\"\r\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\">\r\n <mat-progress-spinner class=\"field-spinner\"\r\n [diameter]=\"20\"\r\n mode=\"indeterminate\"\r\n *ngIf=\"user.status === 'In Progress'\"></mat-progress-spinner>\r\n <button *ngIf=\"!(moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid)\"\r\n class=\"button-action-dot\" mat-icon-button [matMenuTriggerFor]=\"menu\">\r\n <div class=\"icon-actions-dots\">\r\n <span class=\"icon-dot\">.</span>\r\n <span class=\"icon-dot\">.</span>\r\n <span class=\"icon-dot\">.</span>\r\n </div>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item [disabled]=\"true\">Resend Invitation</button>\r\n <button mat-menu-item [disabled]=\"true\">Reset Password</button>\r\n <button *ngIf=\"!user.isMigrated\" mat-menu-item (click)=\"onMoveUser(user, i, 'QuickMove')\">Quick Move User</button>\r\n <button *ngIf=\"!user.isMigrated\" mat-menu-item (click)=\"onMoveUser(user, i, 'MT')\">Move User to MT</button>\r\n <button *ngIf=\"user.isMigrated\" mat-menu-item (click)=\"onMoveUser(user, i, 'DI')\">Move User to DI</button>\r\n <button mat-menu-item [disabled]=\"true\">Deactivate User</button>\r\n <button mat-menu-item [disabled]=\"true\">Delete User</button>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"role\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Administrator Role</th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\" (click)=\"onUserClick(user)\">{{ user.roleName || '' }}</td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\r\n </table>\r\n</div>\r\n\r\n<app-move-user-wizard *ngIf=\"showMoveUserWizard\" [user]=\"moveUser\"\r\n [customerId]=\"customerId\" (runMoveUser)=\"runMoveUserToMT()\"\r\n (closeMoveUserWizard)=\"closeMoveUserWizard()\"></app-move-user-wizard>\r\n", styles: ["@import\"https://fonts.googleapis.com/css?family=Poppins:400,100,200,300,500,600,800,700,900\";table.mat-table{border-spacing:0;width:100%}::ng-deep .mat-paginator{background:none}.icon-user-status{width:.5rem;height:.5rem;border-radius:50%;background-color:#707070;margin:0 5px 0 0}.icon-user-status.icon-user-status-active{background-color:#1d805f;display:inline-block}.mat-select{height:100%;line-height:35px}.mat-form-field-wrapper{padding-bottom:0!important}.mat-form-field{padding:0;max-width:300px}.fa:hover{color:#0d56aa!important}.mat-icon-button{background:transparent}.icon-webex-box{width:2rem;height:2rem;font-size:.7rem;line-height:1rem;display:inline-block;background:#d0d0d0;border-radius:2rem;line-height:40px;text-align:center}.icon-webex{filter:invert(12%) sepia(14%) saturate(4%) hue-rotate(354deg) brightness(103%) contrast(90%);background-repeat:no-repeat;background-position:center;display:inline-block;height:1rem;width:1rem}.icon-webex-user{background-image:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22UTF-8%22%3F%3E%3Csvg id%3D%22a%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 viewBox%3D%220 0 16.67 15.56%22%3E%3Cdefs%3E%3Cstyle%3E.b%7Bfill%3Anone%3Bstroke%3A%232c355d%3Bstroke-width%3A1.4px%3B%7D%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cpath class%3D%22b%22 d%3D%22M4.87%2C3.89c0-1.72%2C1.51-3.19%2C3.47-3.19s3.47%2C1.47%2C3.47%2C3.19-1.51%2C3.19-3.47%2C3.19-3.47-1.47-3.47-3.19ZM.7%2C12.64c0-.37%2C.19-.76%2C.67-1.17%2C.48-.41%2C1.17-.78%2C2-1.09%2C1.66-.62%2C3.66-.93%2C4.97-.93s3.31%2C.31%2C4.97%2C.93c.83%2C.31%2C1.52%2C.68%2C2%2C1.09%2C.47%2C.41%2C.67%2C.8%2C.67%2C1.17v2.22H.7v-2.22Z%22%2F%3E%3C%2Fsvg%3E\")}.icon-user-status{display:inline-block}*{margin:0}body{background:#f7f7f7}body,th,td{font-family:Poppins,Poppins,sans-serif;font-size:14px}th{color:#0000008a;text-align:left}td{box-sizing:border-box;padding:10px 5px 10px 0}.content-box{margin:auto;position:relative;width:95%}.content-box table{width:100%}.edit-icon-td{width:50px;position:relative}.edit-icon-td button{position:absolute;top:4px}.mat-progress-spinner circle,.mat-spinner circle{stroke:#009fdb!important}.data-loader{position:absolute;top:calc(50% - 25px);left:calc(50% - 25px)}.flex-box{display:flex;justify-content:flex-start}.user-info-box{background:white;display:grid;grid-template-columns:30% 70%;border-radius:8px;border:rgba(0,0,0,.2) 1px solid;padding:24px;font-weight:400;font-size:14px}.user-info-box h3{display:block;font-weight:500;font-size:16px}.mat-divider{margin:5px 0!important}.info-boxes-container{padding:24px 0;display:flex;flex-direction:column;gap:24px}.header-box{height:60px;width:100%;line-height:60px;background:white;border-bottom:1px solid #dedddd}.header-box .header-back-block{float:left}.header-box .header-button-block{float:right}.webex-table{width:100%;margin:auto}.webex-table tr{border-bottom:1px solid #dedede}.webex-table th{background:#f7f7f7;color:#636363;font-size:12px}.webex-table td{background:#fff;color:#000;font-size:14px}.webex-table tr:hover td:not(.disabled-user-row){background:#ededed;cursor:pointer}.webex-table th.mat-header-cell,.webex-table td.mat-cell,.webex-table td.mat-footer-cell{border-bottom:1px solid #dedede}.webex-table tr.mat-header-row{height:37px}.mat-form-field{padding:0 0 5px;width:93%}.mat-form-field.mat-form-field-disabled{border-bottom:none}.mat-error{color:#c73636;margin:13px 0 0}.select-box{border-radius:30px;background:#F3F6F6;border:1px solid #E2E9EF;height:35px;position:relative}.select-box select{border:none!important;background:transparent;height:100%;width:92%;margin:auto;display:block}option:focus,option:focus-visible{border:none!important;outline:none!important}option{height:30px;cursor:pointer;color:#636363}option:hover{background:#ededed!important}.mat-select{height:100%!important;line-height:35px!important}.info-holder,.input-holder{display:grid;grid-template-columns:30% 70%;align-items:baseline}.info-holder__name,.input-holder__name{font-weight:500!important;font-size:14px!important}.info-holder__inputs .input-holder,.input-holder__inputs .input-holder{display:grid;grid-template-columns:30% 70%;align-items:baseline}.info-holder__inputs .input-holder__name,.input-holder__inputs .input-holder__name{font-weight:400!important;font-size:14px!important}.mat-form-field-wrapper,.mat-form-field-flex{height:30px!important}.mat-form-field-appearance-outline .mat-form-field-outline,.mat-form-field-outline .mat-form-field-outline-thick{height:35px!important}.mat-select{line-height:20px!important}.mat-form-field-appearance-outline .mat-form-field-infix{padding:14px 12px 10px;border-top:0;max-width:300px}.mat-tab-group{font-family:Inter,sans-serif}.mat-tab-label{font-weight:500!important;font-size:14px!important;height:auto!important;min-width:auto!important;padding:0!important}.mat-ink-bar{background-color:#000000e6!important;height:3px!important}.mat-form-field-wrapper{padding-bottom:0}.mat-form-field{max-width:300px}table{border-collapse:collapse;border-spacing:0}.mat-form-field-appearance-outline .mat-form-field-infix{padding:0!important}.mat-divider{margin:12px 0}::ng-deep .mat-form-field-wrapper{height:30px}::ng-deep .mat-form-field-flex{height:30px}::ng-deep .mat-form-field-appearance-outline .mat-form-field-outline{height:35px}:ng-deep .mat-form-field-outline .mat-form-field-outline-thick{height:35px}::ng-deep .mat-select{line-height:20px}::ng-deep .mat-form-field-infix{border-top:0px!important}::ng-deep .mat-paginator{background:transparent!important}::ng-deep .mat-paginator-container{min-height:30px!important}::ng-deep .mat-paginator-range-label{margin:0 10px 0 24px!important;font-size:15px!important}::ng-deep .pagination{font-size:13px;color:#0000008a}::ng-deep .per-page-block{display:flex;line-height:42px!important}::ng-deep .item_per_page{line-height:42px!important}::ng-deep .select-page-size{line-height:42px!important}::ng-deep mat-progress-spinner.page-spinner{position:fixed;margin:auto;inset:0}::ng-deep mat-progress-spinner.field-spinner{position:relative;margin:-20px auto auto}::ng-deep mat-progress-spinner.tab-spinner{position:relative;margin:0 auto auto}.icon-dot{display:block;color:#4f4f4f;font-size:16px;line-height:5px}.button-action-dot:hover{background:#dfdfdf}.button-action-dot{padding:0 5px 5px;border-radius:.25rem}\n"] }]
|
|
1240
|
+
}], ctorParameters: function () { return [{ type: UserService }, { type: APIService }, { type: ApiWebexService }, { type: NotificationService }, { type: UsersSearchService }, { type: i1.MatDialog }]; }, propDecorators: { token: [{
|
|
1241
|
+
type: Input
|
|
1242
|
+
}], customerId: [{
|
|
1243
|
+
type: Input
|
|
1244
|
+
}], siteId: [{
|
|
1245
|
+
type: Input
|
|
1246
|
+
}], openUser: [{
|
|
1247
|
+
type: Output
|
|
1248
|
+
}], userMoved: [{
|
|
1249
|
+
type: Output
|
|
1250
|
+
}], switchToWizard: [{
|
|
1251
|
+
type: Output
|
|
1252
|
+
}], host: [{
|
|
1253
|
+
type: Input
|
|
1253
1254
|
}] } });
|
|
1254
1255
|
|
|
1255
|
-
class EventsCommunicationService {
|
|
1256
|
-
constructor() {
|
|
1257
|
-
this.onSuccessfulLoginEvent = new Subject();
|
|
1258
|
-
}
|
|
1259
|
-
}
|
|
1260
|
-
EventsCommunicationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EventsCommunicationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1261
|
-
EventsCommunicationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EventsCommunicationService });
|
|
1262
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EventsCommunicationService, decorators: [{
|
|
1263
|
-
type: Injectable
|
|
1256
|
+
class EventsCommunicationService {
|
|
1257
|
+
constructor() {
|
|
1258
|
+
this.onSuccessfulLoginEvent = new Subject();
|
|
1259
|
+
}
|
|
1260
|
+
}
|
|
1261
|
+
EventsCommunicationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EventsCommunicationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1262
|
+
EventsCommunicationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EventsCommunicationService });
|
|
1263
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EventsCommunicationService, decorators: [{
|
|
1264
|
+
type: Injectable
|
|
1264
1265
|
}], ctorParameters: function () { return []; } });
|
|
1265
1266
|
|
|
1266
|
-
class MaterialModule {
|
|
1267
|
-
}
|
|
1268
|
-
MaterialModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MaterialModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
1269
|
-
MaterialModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: MaterialModule, imports: [DragDropModule,
|
|
1270
|
-
MatButtonModule,
|
|
1271
|
-
MatListModule,
|
|
1272
|
-
MatProgressSpinnerModule,
|
|
1273
|
-
MatExpansionModule,
|
|
1274
|
-
MatInputModule,
|
|
1275
|
-
MatInputModule,
|
|
1276
|
-
MatListModule,
|
|
1277
|
-
MatTreeModule,
|
|
1278
|
-
MatTreeModule,
|
|
1279
|
-
MatNativeDateModule,
|
|
1280
|
-
MatDatepickerModule,
|
|
1281
|
-
MatTooltipModule,
|
|
1282
|
-
MatAutocompleteModule,
|
|
1283
|
-
MatChipsModule,
|
|
1284
|
-
MatSidenavModule,
|
|
1285
|
-
MatFormFieldModule,
|
|
1286
|
-
MatStepperModule,
|
|
1287
|
-
MatTabsModule,
|
|
1288
|
-
MatCardModule,
|
|
1289
|
-
MatSelectModule,
|
|
1290
|
-
MatCheckboxModule,
|
|
1291
|
-
MatSlideToggleModule,
|
|
1292
|
-
MatTableModule,
|
|
1293
|
-
MatPaginatorModule,
|
|
1294
|
-
MatMenuModule,
|
|
1295
|
-
MatDialogModule,
|
|
1296
|
-
MatRadioModule], exports: [DragDropModule,
|
|
1297
|
-
MatButtonModule,
|
|
1298
|
-
MatListModule,
|
|
1299
|
-
MatProgressSpinnerModule,
|
|
1300
|
-
MatExpansionModule,
|
|
1301
|
-
MatInputModule,
|
|
1302
|
-
MatInputModule,
|
|
1303
|
-
MatListModule,
|
|
1304
|
-
MatTreeModule,
|
|
1305
|
-
MatTreeModule,
|
|
1306
|
-
MatNativeDateModule,
|
|
1307
|
-
MatDatepickerModule,
|
|
1308
|
-
MatTooltipModule,
|
|
1309
|
-
MatAutocompleteModule,
|
|
1310
|
-
MatChipsModule,
|
|
1311
|
-
MatSidenavModule,
|
|
1312
|
-
MatFormFieldModule,
|
|
1313
|
-
MatStepperModule,
|
|
1314
|
-
MatTabsModule,
|
|
1315
|
-
MatCardModule,
|
|
1316
|
-
MatCheckboxModule,
|
|
1317
|
-
MatSelectModule,
|
|
1318
|
-
MatSlideToggleModule,
|
|
1319
|
-
MatProgressSpinnerModule,
|
|
1320
|
-
MatTableModule,
|
|
1321
|
-
MatPaginatorModule,
|
|
1322
|
-
MatMenuModule,
|
|
1323
|
-
MatDialogModule,
|
|
1324
|
-
MatRadioModule] });
|
|
1325
|
-
MaterialModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MaterialModule, imports: [DragDropModule,
|
|
1326
|
-
MatButtonModule,
|
|
1327
|
-
MatListModule,
|
|
1328
|
-
MatProgressSpinnerModule,
|
|
1329
|
-
MatExpansionModule,
|
|
1330
|
-
MatInputModule,
|
|
1331
|
-
MatInputModule,
|
|
1332
|
-
MatListModule,
|
|
1333
|
-
MatTreeModule,
|
|
1334
|
-
MatTreeModule,
|
|
1335
|
-
MatNativeDateModule,
|
|
1336
|
-
MatDatepickerModule,
|
|
1337
|
-
MatTooltipModule,
|
|
1338
|
-
MatAutocompleteModule,
|
|
1339
|
-
MatChipsModule,
|
|
1340
|
-
MatSidenavModule,
|
|
1341
|
-
MatFormFieldModule,
|
|
1342
|
-
MatStepperModule,
|
|
1343
|
-
MatTabsModule,
|
|
1344
|
-
MatCardModule,
|
|
1345
|
-
MatSelectModule,
|
|
1346
|
-
MatCheckboxModule,
|
|
1347
|
-
MatSlideToggleModule,
|
|
1348
|
-
MatTableModule,
|
|
1349
|
-
MatPaginatorModule,
|
|
1350
|
-
MatMenuModule,
|
|
1351
|
-
MatDialogModule,
|
|
1352
|
-
MatRadioModule, DragDropModule,
|
|
1353
|
-
MatButtonModule,
|
|
1354
|
-
MatListModule,
|
|
1355
|
-
MatProgressSpinnerModule,
|
|
1356
|
-
MatExpansionModule,
|
|
1357
|
-
MatInputModule,
|
|
1358
|
-
MatInputModule,
|
|
1359
|
-
MatListModule,
|
|
1360
|
-
MatTreeModule,
|
|
1361
|
-
MatTreeModule,
|
|
1362
|
-
MatNativeDateModule,
|
|
1363
|
-
MatDatepickerModule,
|
|
1364
|
-
MatTooltipModule,
|
|
1365
|
-
MatAutocompleteModule,
|
|
1366
|
-
MatChipsModule,
|
|
1367
|
-
MatSidenavModule,
|
|
1368
|
-
MatFormFieldModule,
|
|
1369
|
-
MatStepperModule,
|
|
1370
|
-
MatTabsModule,
|
|
1371
|
-
MatCardModule,
|
|
1372
|
-
MatCheckboxModule,
|
|
1373
|
-
MatSelectModule,
|
|
1374
|
-
MatSlideToggleModule,
|
|
1375
|
-
MatProgressSpinnerModule,
|
|
1376
|
-
MatTableModule,
|
|
1377
|
-
MatPaginatorModule,
|
|
1378
|
-
MatMenuModule,
|
|
1379
|
-
MatDialogModule,
|
|
1380
|
-
MatRadioModule] });
|
|
1381
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MaterialModule, decorators: [{
|
|
1382
|
-
type: NgModule,
|
|
1383
|
-
args: [{
|
|
1384
|
-
imports: [
|
|
1385
|
-
DragDropModule,
|
|
1386
|
-
MatButtonModule,
|
|
1387
|
-
MatListModule,
|
|
1388
|
-
MatProgressSpinnerModule,
|
|
1389
|
-
MatExpansionModule,
|
|
1390
|
-
MatInputModule,
|
|
1391
|
-
MatInputModule,
|
|
1392
|
-
MatListModule,
|
|
1393
|
-
MatTreeModule,
|
|
1394
|
-
MatTreeModule,
|
|
1395
|
-
MatNativeDateModule,
|
|
1396
|
-
MatDatepickerModule,
|
|
1397
|
-
MatTooltipModule,
|
|
1398
|
-
MatAutocompleteModule,
|
|
1399
|
-
MatChipsModule,
|
|
1400
|
-
MatSidenavModule,
|
|
1401
|
-
MatFormFieldModule,
|
|
1402
|
-
MatStepperModule,
|
|
1403
|
-
MatTabsModule,
|
|
1404
|
-
MatCardModule,
|
|
1405
|
-
MatSelectModule,
|
|
1406
|
-
MatCheckboxModule,
|
|
1407
|
-
MatSlideToggleModule,
|
|
1408
|
-
MatTableModule,
|
|
1409
|
-
MatPaginatorModule,
|
|
1410
|
-
MatMenuModule,
|
|
1411
|
-
MatDialogModule,
|
|
1412
|
-
MatRadioModule
|
|
1413
|
-
],
|
|
1414
|
-
exports: [
|
|
1415
|
-
DragDropModule,
|
|
1416
|
-
MatButtonModule,
|
|
1417
|
-
MatListModule,
|
|
1418
|
-
MatProgressSpinnerModule,
|
|
1419
|
-
MatExpansionModule,
|
|
1420
|
-
MatInputModule,
|
|
1421
|
-
MatInputModule,
|
|
1422
|
-
MatListModule,
|
|
1423
|
-
MatTreeModule,
|
|
1424
|
-
MatTreeModule,
|
|
1425
|
-
MatNativeDateModule,
|
|
1426
|
-
MatDatepickerModule,
|
|
1427
|
-
MatTooltipModule,
|
|
1428
|
-
MatAutocompleteModule,
|
|
1429
|
-
MatChipsModule,
|
|
1430
|
-
MatSidenavModule,
|
|
1431
|
-
MatFormFieldModule,
|
|
1432
|
-
MatStepperModule,
|
|
1433
|
-
MatTabsModule,
|
|
1434
|
-
MatCardModule,
|
|
1435
|
-
MatCheckboxModule,
|
|
1436
|
-
MatSelectModule,
|
|
1437
|
-
MatSlideToggleModule,
|
|
1438
|
-
MatProgressSpinnerModule,
|
|
1439
|
-
MatTableModule,
|
|
1440
|
-
MatPaginatorModule,
|
|
1441
|
-
MatMenuModule,
|
|
1442
|
-
MatDialogModule,
|
|
1443
|
-
MatRadioModule
|
|
1444
|
-
],
|
|
1445
|
-
}]
|
|
1267
|
+
class MaterialModule {
|
|
1268
|
+
}
|
|
1269
|
+
MaterialModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MaterialModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
1270
|
+
MaterialModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: MaterialModule, imports: [DragDropModule,
|
|
1271
|
+
MatButtonModule,
|
|
1272
|
+
MatListModule,
|
|
1273
|
+
MatProgressSpinnerModule,
|
|
1274
|
+
MatExpansionModule,
|
|
1275
|
+
MatInputModule,
|
|
1276
|
+
MatInputModule,
|
|
1277
|
+
MatListModule,
|
|
1278
|
+
MatTreeModule,
|
|
1279
|
+
MatTreeModule,
|
|
1280
|
+
MatNativeDateModule,
|
|
1281
|
+
MatDatepickerModule,
|
|
1282
|
+
MatTooltipModule,
|
|
1283
|
+
MatAutocompleteModule,
|
|
1284
|
+
MatChipsModule,
|
|
1285
|
+
MatSidenavModule,
|
|
1286
|
+
MatFormFieldModule,
|
|
1287
|
+
MatStepperModule,
|
|
1288
|
+
MatTabsModule,
|
|
1289
|
+
MatCardModule,
|
|
1290
|
+
MatSelectModule,
|
|
1291
|
+
MatCheckboxModule,
|
|
1292
|
+
MatSlideToggleModule,
|
|
1293
|
+
MatTableModule,
|
|
1294
|
+
MatPaginatorModule,
|
|
1295
|
+
MatMenuModule,
|
|
1296
|
+
MatDialogModule,
|
|
1297
|
+
MatRadioModule], exports: [DragDropModule,
|
|
1298
|
+
MatButtonModule,
|
|
1299
|
+
MatListModule,
|
|
1300
|
+
MatProgressSpinnerModule,
|
|
1301
|
+
MatExpansionModule,
|
|
1302
|
+
MatInputModule,
|
|
1303
|
+
MatInputModule,
|
|
1304
|
+
MatListModule,
|
|
1305
|
+
MatTreeModule,
|
|
1306
|
+
MatTreeModule,
|
|
1307
|
+
MatNativeDateModule,
|
|
1308
|
+
MatDatepickerModule,
|
|
1309
|
+
MatTooltipModule,
|
|
1310
|
+
MatAutocompleteModule,
|
|
1311
|
+
MatChipsModule,
|
|
1312
|
+
MatSidenavModule,
|
|
1313
|
+
MatFormFieldModule,
|
|
1314
|
+
MatStepperModule,
|
|
1315
|
+
MatTabsModule,
|
|
1316
|
+
MatCardModule,
|
|
1317
|
+
MatCheckboxModule,
|
|
1318
|
+
MatSelectModule,
|
|
1319
|
+
MatSlideToggleModule,
|
|
1320
|
+
MatProgressSpinnerModule,
|
|
1321
|
+
MatTableModule,
|
|
1322
|
+
MatPaginatorModule,
|
|
1323
|
+
MatMenuModule,
|
|
1324
|
+
MatDialogModule,
|
|
1325
|
+
MatRadioModule] });
|
|
1326
|
+
MaterialModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MaterialModule, imports: [DragDropModule,
|
|
1327
|
+
MatButtonModule,
|
|
1328
|
+
MatListModule,
|
|
1329
|
+
MatProgressSpinnerModule,
|
|
1330
|
+
MatExpansionModule,
|
|
1331
|
+
MatInputModule,
|
|
1332
|
+
MatInputModule,
|
|
1333
|
+
MatListModule,
|
|
1334
|
+
MatTreeModule,
|
|
1335
|
+
MatTreeModule,
|
|
1336
|
+
MatNativeDateModule,
|
|
1337
|
+
MatDatepickerModule,
|
|
1338
|
+
MatTooltipModule,
|
|
1339
|
+
MatAutocompleteModule,
|
|
1340
|
+
MatChipsModule,
|
|
1341
|
+
MatSidenavModule,
|
|
1342
|
+
MatFormFieldModule,
|
|
1343
|
+
MatStepperModule,
|
|
1344
|
+
MatTabsModule,
|
|
1345
|
+
MatCardModule,
|
|
1346
|
+
MatSelectModule,
|
|
1347
|
+
MatCheckboxModule,
|
|
1348
|
+
MatSlideToggleModule,
|
|
1349
|
+
MatTableModule,
|
|
1350
|
+
MatPaginatorModule,
|
|
1351
|
+
MatMenuModule,
|
|
1352
|
+
MatDialogModule,
|
|
1353
|
+
MatRadioModule, DragDropModule,
|
|
1354
|
+
MatButtonModule,
|
|
1355
|
+
MatListModule,
|
|
1356
|
+
MatProgressSpinnerModule,
|
|
1357
|
+
MatExpansionModule,
|
|
1358
|
+
MatInputModule,
|
|
1359
|
+
MatInputModule,
|
|
1360
|
+
MatListModule,
|
|
1361
|
+
MatTreeModule,
|
|
1362
|
+
MatTreeModule,
|
|
1363
|
+
MatNativeDateModule,
|
|
1364
|
+
MatDatepickerModule,
|
|
1365
|
+
MatTooltipModule,
|
|
1366
|
+
MatAutocompleteModule,
|
|
1367
|
+
MatChipsModule,
|
|
1368
|
+
MatSidenavModule,
|
|
1369
|
+
MatFormFieldModule,
|
|
1370
|
+
MatStepperModule,
|
|
1371
|
+
MatTabsModule,
|
|
1372
|
+
MatCardModule,
|
|
1373
|
+
MatCheckboxModule,
|
|
1374
|
+
MatSelectModule,
|
|
1375
|
+
MatSlideToggleModule,
|
|
1376
|
+
MatProgressSpinnerModule,
|
|
1377
|
+
MatTableModule,
|
|
1378
|
+
MatPaginatorModule,
|
|
1379
|
+
MatMenuModule,
|
|
1380
|
+
MatDialogModule,
|
|
1381
|
+
MatRadioModule] });
|
|
1382
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MaterialModule, decorators: [{
|
|
1383
|
+
type: NgModule,
|
|
1384
|
+
args: [{
|
|
1385
|
+
imports: [
|
|
1386
|
+
DragDropModule,
|
|
1387
|
+
MatButtonModule,
|
|
1388
|
+
MatListModule,
|
|
1389
|
+
MatProgressSpinnerModule,
|
|
1390
|
+
MatExpansionModule,
|
|
1391
|
+
MatInputModule,
|
|
1392
|
+
MatInputModule,
|
|
1393
|
+
MatListModule,
|
|
1394
|
+
MatTreeModule,
|
|
1395
|
+
MatTreeModule,
|
|
1396
|
+
MatNativeDateModule,
|
|
1397
|
+
MatDatepickerModule,
|
|
1398
|
+
MatTooltipModule,
|
|
1399
|
+
MatAutocompleteModule,
|
|
1400
|
+
MatChipsModule,
|
|
1401
|
+
MatSidenavModule,
|
|
1402
|
+
MatFormFieldModule,
|
|
1403
|
+
MatStepperModule,
|
|
1404
|
+
MatTabsModule,
|
|
1405
|
+
MatCardModule,
|
|
1406
|
+
MatSelectModule,
|
|
1407
|
+
MatCheckboxModule,
|
|
1408
|
+
MatSlideToggleModule,
|
|
1409
|
+
MatTableModule,
|
|
1410
|
+
MatPaginatorModule,
|
|
1411
|
+
MatMenuModule,
|
|
1412
|
+
MatDialogModule,
|
|
1413
|
+
MatRadioModule
|
|
1414
|
+
],
|
|
1415
|
+
exports: [
|
|
1416
|
+
DragDropModule,
|
|
1417
|
+
MatButtonModule,
|
|
1418
|
+
MatListModule,
|
|
1419
|
+
MatProgressSpinnerModule,
|
|
1420
|
+
MatExpansionModule,
|
|
1421
|
+
MatInputModule,
|
|
1422
|
+
MatInputModule,
|
|
1423
|
+
MatListModule,
|
|
1424
|
+
MatTreeModule,
|
|
1425
|
+
MatTreeModule,
|
|
1426
|
+
MatNativeDateModule,
|
|
1427
|
+
MatDatepickerModule,
|
|
1428
|
+
MatTooltipModule,
|
|
1429
|
+
MatAutocompleteModule,
|
|
1430
|
+
MatChipsModule,
|
|
1431
|
+
MatSidenavModule,
|
|
1432
|
+
MatFormFieldModule,
|
|
1433
|
+
MatStepperModule,
|
|
1434
|
+
MatTabsModule,
|
|
1435
|
+
MatCardModule,
|
|
1436
|
+
MatCheckboxModule,
|
|
1437
|
+
MatSelectModule,
|
|
1438
|
+
MatSlideToggleModule,
|
|
1439
|
+
MatProgressSpinnerModule,
|
|
1440
|
+
MatTableModule,
|
|
1441
|
+
MatPaginatorModule,
|
|
1442
|
+
MatMenuModule,
|
|
1443
|
+
MatDialogModule,
|
|
1444
|
+
MatRadioModule
|
|
1445
|
+
],
|
|
1446
|
+
}]
|
|
1446
1447
|
}] });
|
|
1447
1448
|
|
|
1448
|
-
class UsersListModule {
|
|
1449
|
-
}
|
|
1450
|
-
UsersListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
1451
|
-
UsersListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: UsersListModule, declarations: [UsersListComponent,
|
|
1452
|
-
PaginationComponent,
|
|
1453
|
-
AppLoaderComponent,
|
|
1454
|
-
MoveUserWizardComponent,
|
|
1455
|
-
MoveUserStepperComponent,
|
|
1456
|
-
UserListConfirmDialogComponent], imports: [BrowserModule,
|
|
1457
|
-
FormsModule,
|
|
1458
|
-
ReactiveFormsModule,
|
|
1459
|
-
HttpClientModule,
|
|
1460
|
-
MaterialModule], exports: [UsersListComponent] });
|
|
1461
|
-
UsersListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersListModule, providers: [
|
|
1462
|
-
UserService,
|
|
1463
|
-
APIService,
|
|
1464
|
-
EventsCommunicationService,
|
|
1465
|
-
UsersSearchService,
|
|
1466
|
-
NotificationService,
|
|
1467
|
-
RemoveKynFromIBMService,
|
|
1468
|
-
ApiWebexService,
|
|
1469
|
-
DnsService
|
|
1470
|
-
], imports: [BrowserModule,
|
|
1471
|
-
FormsModule,
|
|
1472
|
-
ReactiveFormsModule,
|
|
1473
|
-
HttpClientModule,
|
|
1474
|
-
MaterialModule] });
|
|
1475
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersListModule, decorators: [{
|
|
1476
|
-
type: NgModule,
|
|
1477
|
-
args: [{
|
|
1478
|
-
declarations: [
|
|
1479
|
-
UsersListComponent,
|
|
1480
|
-
PaginationComponent,
|
|
1481
|
-
AppLoaderComponent,
|
|
1482
|
-
MoveUserWizardComponent,
|
|
1483
|
-
MoveUserStepperComponent,
|
|
1484
|
-
UserListConfirmDialogComponent
|
|
1485
|
-
],
|
|
1486
|
-
imports: [
|
|
1487
|
-
BrowserModule,
|
|
1488
|
-
FormsModule,
|
|
1489
|
-
ReactiveFormsModule,
|
|
1490
|
-
HttpClientModule,
|
|
1491
|
-
MaterialModule
|
|
1492
|
-
],
|
|
1493
|
-
providers: [
|
|
1494
|
-
UserService,
|
|
1495
|
-
APIService,
|
|
1496
|
-
EventsCommunicationService,
|
|
1497
|
-
UsersSearchService,
|
|
1498
|
-
NotificationService,
|
|
1499
|
-
RemoveKynFromIBMService,
|
|
1500
|
-
ApiWebexService,
|
|
1501
|
-
DnsService
|
|
1502
|
-
],
|
|
1503
|
-
exports: [UsersListComponent]
|
|
1504
|
-
}]
|
|
1449
|
+
class UsersListModule {
|
|
1450
|
+
}
|
|
1451
|
+
UsersListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
1452
|
+
UsersListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: UsersListModule, declarations: [UsersListComponent,
|
|
1453
|
+
PaginationComponent,
|
|
1454
|
+
AppLoaderComponent,
|
|
1455
|
+
MoveUserWizardComponent,
|
|
1456
|
+
MoveUserStepperComponent,
|
|
1457
|
+
UserListConfirmDialogComponent], imports: [BrowserModule,
|
|
1458
|
+
FormsModule,
|
|
1459
|
+
ReactiveFormsModule,
|
|
1460
|
+
HttpClientModule,
|
|
1461
|
+
MaterialModule], exports: [UsersListComponent] });
|
|
1462
|
+
UsersListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersListModule, providers: [
|
|
1463
|
+
UserService,
|
|
1464
|
+
APIService,
|
|
1465
|
+
EventsCommunicationService,
|
|
1466
|
+
UsersSearchService,
|
|
1467
|
+
NotificationService,
|
|
1468
|
+
RemoveKynFromIBMService,
|
|
1469
|
+
ApiWebexService,
|
|
1470
|
+
DnsService
|
|
1471
|
+
], imports: [BrowserModule,
|
|
1472
|
+
FormsModule,
|
|
1473
|
+
ReactiveFormsModule,
|
|
1474
|
+
HttpClientModule,
|
|
1475
|
+
MaterialModule] });
|
|
1476
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersListModule, decorators: [{
|
|
1477
|
+
type: NgModule,
|
|
1478
|
+
args: [{
|
|
1479
|
+
declarations: [
|
|
1480
|
+
UsersListComponent,
|
|
1481
|
+
PaginationComponent,
|
|
1482
|
+
AppLoaderComponent,
|
|
1483
|
+
MoveUserWizardComponent,
|
|
1484
|
+
MoveUserStepperComponent,
|
|
1485
|
+
UserListConfirmDialogComponent
|
|
1486
|
+
],
|
|
1487
|
+
imports: [
|
|
1488
|
+
BrowserModule,
|
|
1489
|
+
FormsModule,
|
|
1490
|
+
ReactiveFormsModule,
|
|
1491
|
+
HttpClientModule,
|
|
1492
|
+
MaterialModule
|
|
1493
|
+
],
|
|
1494
|
+
providers: [
|
|
1495
|
+
UserService,
|
|
1496
|
+
APIService,
|
|
1497
|
+
EventsCommunicationService,
|
|
1498
|
+
UsersSearchService,
|
|
1499
|
+
NotificationService,
|
|
1500
|
+
RemoveKynFromIBMService,
|
|
1501
|
+
ApiWebexService,
|
|
1502
|
+
DnsService
|
|
1503
|
+
],
|
|
1504
|
+
exports: [UsersListComponent]
|
|
1505
|
+
}]
|
|
1505
1506
|
}] });
|
|
1506
1507
|
|
|
1507
|
-
/**
|
|
1508
|
-
* Generated bundle index. Do not edit.
|
|
1508
|
+
/**
|
|
1509
|
+
* Generated bundle index. Do not edit.
|
|
1509
1510
|
*/
|
|
1510
1511
|
|
|
1511
1512
|
export { APIService, EventsCommunicationService, NotificationService, RemoveKynFromIBMService, UserService, UsersListComponent, UsersListModule, UsersSearchService };
|