@tuki-io/tuki-widgets 0.0.219-dev.54 → 0.0.219-dev.56

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/contact-center/cc-import/cc-import.module.d.ts +13 -0
  2. package/contact-center/cc-import/cc-import.service.d.ts +85 -0
  3. package/contact-center/cc-import/components/import-contact-center-panel/import-contact-center-panel.component.d.ts +56 -0
  4. package/contact-center/cc-import/components/import-contact-center-wizard/import-contact-center-wizard.component.d.ts +77 -0
  5. package/contact-center/cc-import/components/import-contact-center-wizard/import-contact-center-wizard.types.d.ts +3 -0
  6. package/contact-center/cc-import/constants/cc-import.constants.d.ts +37 -0
  7. package/contact-center/cc-import/mock/cc-import.mock.d.ts +4 -0
  8. package/contact-center/cc-import/types/cc-import.d.ts +73 -0
  9. package/contact-center/cc-import/types/uccx.d.ts +109 -0
  10. package/contact-center/cc-readiness/cc-readiness.module.d.ts +3 -3
  11. package/contact-center/public-api.d.ts +8 -0
  12. package/contact-center/shared/api.endpoints.d.ts +25 -0
  13. package/contact-center/shared/api.service.d.ts +3 -1
  14. package/contact-center/shared/components/card/card.component.d.ts +13 -0
  15. package/contact-center/shared/dcp-api.service.d.ts +15 -0
  16. package/contact-center/shared/shared.module.d.ts +11 -5
  17. package/esm2020/contact-center/cc-import/cc-import.module.mjs +45 -0
  18. package/esm2020/contact-center/cc-import/cc-import.service.mjs +228 -0
  19. package/esm2020/contact-center/cc-import/components/import-contact-center-panel/import-contact-center-panel.component.mjs +144 -0
  20. package/esm2020/contact-center/cc-import/components/import-contact-center-wizard/import-contact-center-wizard.component.mjs +243 -0
  21. package/esm2020/contact-center/cc-import/components/import-contact-center-wizard/import-contact-center-wizard.types.mjs +3 -0
  22. package/esm2020/contact-center/cc-import/constants/cc-import.constants.mjs +62 -0
  23. package/esm2020/contact-center/cc-import/mock/cc-import.mock.mjs +78 -0
  24. package/esm2020/contact-center/cc-import/types/cc-import.mjs +2 -0
  25. package/esm2020/contact-center/cc-import/types/uccx.mjs +24 -0
  26. package/esm2020/contact-center/cc-readiness/cc-readiness.module.mjs +7 -6
  27. package/esm2020/contact-center/cc-readiness/widgets/licences-requirement/licences-requirement.component.mjs +5 -5
  28. package/esm2020/contact-center/cc-readiness/widgets/summary-grid/summary-grid.component.mjs +2 -2
  29. package/esm2020/contact-center/public-api.mjs +9 -1
  30. package/esm2020/contact-center/shared/api.endpoints.mjs +26 -1
  31. package/esm2020/contact-center/shared/api.service.mjs +8 -3
  32. package/esm2020/contact-center/shared/components/card/card.component.mjs +24 -0
  33. package/esm2020/contact-center/shared/dcp-api.service.mjs +26 -0
  34. package/esm2020/contact-center/shared/shared.module.mjs +15 -5
  35. package/esm2020/user-device-manage/public-api.mjs +4 -1
  36. package/esm2020/user-device-manage/src/app.constants.mjs +9 -3
  37. package/esm2020/user-device-manage/src/associate-lines/associate-lines.component.mjs +311 -0
  38. package/esm2020/user-device-manage/src/classes/device.mjs +1 -1
  39. package/esm2020/user-device-manage/src/classes/deviceProfile.mjs +1 -1
  40. package/esm2020/user-device-manage/src/confirm-dialog/info-dialog.component.mjs +2 -2
  41. package/esm2020/user-device-manage/src/device-manage-widget.component.mjs +34 -17
  42. package/esm2020/user-device-manage/src/device-settings/device-settings.component.mjs +207 -0
  43. package/esm2020/user-device-manage/src/line-key-config/line-key-config.component.mjs +401 -0
  44. package/esm2020/user-device-manage/src/services/device.service.mjs +32 -2
  45. package/esm2020/user-device-manage/src/services/user.service.mjs +34 -6
  46. package/esm2020/user-device-manage/src/user-device-manage.module.mjs +19 -4
  47. package/esm2020/workspaces/src/components/workspace-detail/workspace-detail.component.mjs +17 -4
  48. package/esm2020/workspaces/src/components/workspace-device-detail/workspace-device-detail.component.mjs +66 -0
  49. package/esm2020/workspaces/src/components/workspaces-table/workspaces-table.component.mjs +6 -3
  50. package/esm2020/workspaces/src/services/workspace-detail.service.mjs +43 -1
  51. package/esm2020/workspaces/src/services/workspaces.service.mjs +2 -1
  52. package/esm2020/workspaces/src/types/workspace.mjs +1 -1
  53. package/esm2020/workspaces/src/workspaces.module.mjs +4 -1
  54. package/fesm2015/tuki-io-tuki-widgets-contact-center.mjs +998 -127
  55. package/fesm2015/tuki-io-tuki-widgets-contact-center.mjs.map +1 -1
  56. package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs +1018 -40
  57. package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
  58. package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs +142 -16
  59. package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs.map +1 -1
  60. package/fesm2020/tuki-io-tuki-widgets-contact-center.mjs +989 -127
  61. package/fesm2020/tuki-io-tuki-widgets-contact-center.mjs.map +1 -1
  62. package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs +1001 -39
  63. package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
  64. package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs +133 -16
  65. package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs.map +1 -1
  66. package/package.json +1 -1
  67. package/user-device-manage/public-api.d.ts +3 -0
  68. package/user-device-manage/src/app.constants.d.ts +6 -0
  69. package/user-device-manage/src/associate-lines/associate-lines.component.d.ts +95 -0
  70. package/user-device-manage/src/classes/device.d.ts +15 -0
  71. package/user-device-manage/src/classes/deviceProfile.d.ts +5 -0
  72. package/user-device-manage/src/device-associated-line/device-associated-line.component.d.ts +1 -0
  73. package/user-device-manage/src/device-manage-widget.component.d.ts +6 -1
  74. package/user-device-manage/src/device-settings/device-settings.component.d.ts +53 -0
  75. package/user-device-manage/src/line-key-config/line-key-config.component.d.ts +84 -0
  76. package/user-device-manage/src/services/device.service.d.ts +6 -1
  77. package/user-device-manage/src/services/user.service.d.ts +2 -1
  78. package/user-device-manage/src/user-device-manage.module.d.ts +10 -7
  79. package/workspaces/src/components/workspace-detail/workspace-detail.component.d.ts +6 -1
  80. package/workspaces/src/components/workspace-device-detail/workspace-device-detail.component.d.ts +25 -0
  81. package/workspaces/src/components/workspaces-table/workspaces-table.component.d.ts +1 -0
  82. package/workspaces/src/services/workspace-detail.service.d.ts +2 -0
  83. package/workspaces/src/types/workspace.d.ts +19 -0
  84. package/workspaces/src/workspaces.module.d.ts +8 -7
  85. package/contact-center/cc-readiness/components/card/card.component.d.ts +0 -6
  86. package/esm2020/contact-center/cc-readiness/components/card/card.component.mjs +0 -13
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tuki-io/tuki-widgets",
3
- "version": "0.0.219-dev.54",
3
+ "version": "0.0.219-dev.56",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^15.2.0",
6
6
  "@angular/core": "^15.2.0",
@@ -6,3 +6,6 @@ export * from "./src/services/device.service";
6
6
  export * from "./src/services/line.service";
7
7
  export * from "./src/user-device-manage.module";
8
8
  export * from "./src/device-manage-widget.component";
9
+ export * from "./src/device-settings/device-settings.component";
10
+ export * from "./src/line-key-config/line-key-config.component";
11
+ export * from "./src/associate-lines/associate-lines.component";
@@ -27,6 +27,11 @@ export declare const API: {
27
27
  WEBEX_USER_TOKEN: string;
28
28
  WEBEX_USER_DEVICES: string;
29
29
  TRANSLATION_PATTERN_CUCM: string;
30
+ DEVICE_EXTRA_OPTIONS: string;
31
+ DEVICE_DEFAULTS: string;
32
+ ALL_SITE_DIRECTORY_NUMBERS: string;
33
+ UPDATE_DEVICE_SPEED_DIAL_LINES: string;
34
+ UPDATE_DEVICE_BLF_SPEED_DIAL_LINES: string;
30
35
  };
31
36
  export declare const REGEX_PATTERN: {
32
37
  EMAIL: string;
@@ -59,6 +64,7 @@ export declare const STATIC_OPTIONS: {
59
64
  SERVICE_PROVISIONING: string[];
60
65
  SETTINGS_ACCES: string[];
61
66
  VISUAL_MWI: string[];
67
+ AUDIBLE_MWI: string[];
62
68
  WEEKDAYS: string[];
63
69
  BUILD_BRIDGE: string[];
64
70
  TRANSFER_TYPES: string[];
@@ -0,0 +1,95 @@
1
+ import { EventEmitter, OnDestroy, OnInit } from '@angular/core';
2
+ import { Router } from '@angular/router';
3
+ import { CdkDragDrop } from '@angular/cdk/drag-drop';
4
+ import { MatDialog } from '@angular/material/dialog';
5
+ import { UserService } from '../services/user.service';
6
+ import { APIService } from '../services/api.service';
7
+ import { SiteSettingsService } from '../services/site-settings.service';
8
+ import { DeviceService } from '../services/device.service';
9
+ import { LineService } from '../services/line.service';
10
+ import { RecordingOptions } from '../classes/device';
11
+ import * as i0 from "@angular/core";
12
+ export interface AssociatedLineRow {
13
+ id: number;
14
+ pkid: string;
15
+ extension: string;
16
+ routePartitionName: string;
17
+ order: number;
18
+ lineNumber: string;
19
+ displayCallerId: string;
20
+ textLabel: string;
21
+ e164Mask: string;
22
+ maxNumberOfCalls: number;
23
+ busyTrigger: number;
24
+ recordingOption: RecordingOptions;
25
+ recordingMediaSource: string;
26
+ recordingProfile: string;
27
+ visualMWI: string;
28
+ ringSettingIdle: string;
29
+ pickupAASIdle: string;
30
+ monitorCSS: string;
31
+ audibleMWI: string;
32
+ ringSettingActive: string;
33
+ pickupAASActive: string;
34
+ logMissedCalls: boolean;
35
+ callerName: boolean;
36
+ redirectedNumber: boolean;
37
+ callerNumber: boolean;
38
+ dialedNumber: boolean;
39
+ }
40
+ export declare class AssociateLinesComponent implements OnInit, OnDestroy {
41
+ userService: UserService;
42
+ private apiService;
43
+ private readonly siteSettingsService;
44
+ private readonly deviceService;
45
+ private readonly lineService;
46
+ private readonly dialog;
47
+ private readonly router;
48
+ goBack: EventEmitter<any>;
49
+ token: string;
50
+ host: string;
51
+ siteId: string;
52
+ userId: string;
53
+ deviceName: string;
54
+ private readonly destroy$;
55
+ dataPending: boolean;
56
+ device: any;
57
+ hasChanges: boolean;
58
+ expandedOrder: number | null;
59
+ readonly recordingOptions: typeof RecordingOptions;
60
+ readonly recordingMediaSources: string[];
61
+ recordingProfiles: string[];
62
+ readonly visualMwiOptions: string[];
63
+ readonly audibleMwiOptions: string[];
64
+ readonly ringSettingIdleOptions: string[];
65
+ readonly ringSettingActiveOptions: string[];
66
+ readonly pickupAasIdleOptions: string[];
67
+ readonly pickupAasActiveOptions: string[];
68
+ rows: AssociatedLineRow[];
69
+ private originRows;
70
+ private static readonly FIELD_MAP;
71
+ private static readonly BOOLEAN_FIELDS;
72
+ constructor(userService: UserService, apiService: APIService, siteSettingsService: SiteSettingsService, deviceService: DeviceService, lineService: LineService, dialog: MatDialog, router: Router);
73
+ ngOnInit(): void;
74
+ private loadDevice;
75
+ private fetchLineSlots;
76
+ private loadRecordingProfiles;
77
+ private initRows;
78
+ private createRow;
79
+ isRowEditable(row: AssociatedLineRow): boolean;
80
+ toggleExpanded(row: AssociatedLineRow): void;
81
+ isExpanded(row: AssociatedLineRow): boolean;
82
+ onFieldChange(): void;
83
+ recordingOptionChanged(row: AssociatedLineRow): void;
84
+ isRecordingProfileDisabled(row: AssociatedLineRow): boolean;
85
+ drop(event: CdkDragDrop<AssociatedLineRow[]>): void;
86
+ confirmDisassociate(row: AssociatedLineRow): void;
87
+ private disassociateLine;
88
+ onGoBack(): void;
89
+ onCancel(): void;
90
+ onSave(): void;
91
+ private buildUpdateBody;
92
+ ngOnDestroy(): void;
93
+ static ɵfac: i0.ɵɵFactoryDeclaration<AssociateLinesComponent, never>;
94
+ static ɵcmp: i0.ɵɵComponentDeclaration<AssociateLinesComponent, "app-associate-lines", never, { "token": "token"; "host": "host"; "siteId": "siteId"; "userId": "userId"; "deviceName": "deviceName"; }, { "goBack": "goBack"; }, never, never, false, never>;
95
+ }
@@ -93,6 +93,21 @@ export interface SpeedDialInterface {
93
93
  label: string;
94
94
  editMode?: boolean;
95
95
  }
96
+ export interface SpeedDialLineUpdate {
97
+ index: number;
98
+ position: number;
99
+ label: string;
100
+ destination: string;
101
+ }
102
+ export interface BlfSpeedDialLineUpdate {
103
+ index: number;
104
+ position: number;
105
+ label: string;
106
+ destination: string;
107
+ dnWithRoutePartition: string;
108
+ callPickup: boolean;
109
+ list?: string[];
110
+ }
96
111
  export declare enum RecordingOptions {
97
112
  disabled = "Call Recording Disabled",
98
113
  auto_enabled = "Automatic Call Recording Enabled",
@@ -1,5 +1,6 @@
1
1
  import { FormGroup } from "@angular/forms";
2
2
  import { LineAssociationInterface } from "./line-association-interface";
3
+ import { LineCallInfoDisplayInterface } from "./device";
3
4
  export declare class DeviceProfile {
4
5
  macAddress?: string;
5
6
  hoteling?: {
@@ -18,8 +19,12 @@ export declare class DeviceProfile {
18
19
  index?: number;
19
20
  position?: number;
20
21
  textLabel?: string;
22
+ displayLabel?: string;
23
+ e164Mask?: string;
21
24
  alertingName?: string;
22
25
  callerNumber?: string;
26
+ logMissedCall?: string;
27
+ callInfoDisplay?: LineCallInfoDisplayInterface;
23
28
  }>;
24
29
  activationState?: boolean;
25
30
  model?: string;
@@ -50,6 +50,7 @@ export declare class DeviceAssociatedLineComponent implements OnInit, OnDestroy
50
50
  SERVICE_PROVISIONING: string[];
51
51
  SETTINGS_ACCES: string[];
52
52
  VISUAL_MWI: string[];
53
+ AUDIBLE_MWI: string[];
53
54
  WEEKDAYS: string[];
54
55
  BUILD_BRIDGE: string[];
55
56
  TRANSFER_TYPES: string[];
@@ -1,5 +1,6 @@
1
1
  import { ElementRef, EventEmitter, OnDestroy } from '@angular/core';
2
2
  import { FormArray, FormControl, FormGroup } from '@angular/forms';
3
+ import { Router } from '@angular/router';
3
4
  import { MatDialog } from '@angular/material/dialog';
4
5
  import { UserService } from './services/user.service';
5
6
  import { DeviceService } from './services/device.service';
@@ -18,6 +19,7 @@ export declare class DeviceManageWidgetComponent implements OnDestroy {
18
19
  private validationService;
19
20
  private dialog;
20
21
  private readonly dnsService;
22
+ private readonly router;
21
23
  onSave: EventEmitter<string>;
22
24
  onChange: EventEmitter<string>;
23
25
  discardChanges: EventEmitter<any>;
@@ -43,7 +45,7 @@ export declare class DeviceManageWidgetComponent implements OnDestroy {
43
45
  get lastName(): string;
44
46
  get form(): FormGroup | undefined;
45
47
  get isWebex(): boolean | "" | null;
46
- constructor(userService: UserService, deviceService: DeviceService, apiService: APIService, lineService: LineService, siteSettingsService: SiteSettingsService, validationService: ValidationService, dialog: MatDialog, dnsService: DnsService);
48
+ constructor(userService: UserService, deviceService: DeviceService, apiService: APIService, lineService: LineService, siteSettingsService: SiteSettingsService, validationService: ValidationService, dialog: MatDialog, dnsService: DnsService, router: Router);
47
49
  ngOnInit(): void;
48
50
  showInput(): void;
49
51
  onBlur(): void;
@@ -57,6 +59,9 @@ export declare class DeviceManageWidgetComponent implements OnDestroy {
57
59
  saveChanges(): void;
58
60
  ngOnDestroy(): void;
59
61
  onGoBack(): void;
62
+ openDeviceSettings(): void;
63
+ openLineKeyConfig(): void;
64
+ openAssociateLines(): void;
60
65
  static ɵfac: i0.ɵɵFactoryDeclaration<DeviceManageWidgetComponent, never>;
61
66
  static ɵcmp: i0.ɵɵComponentDeclaration<DeviceManageWidgetComponent, "app-device-manage-widget", never, { "token": "token"; "host": "host"; "siteId": "siteId"; "userId": "userId"; "isLdap": "isLdap"; "deviceName": "deviceName"; }, { "onSave": "onSave"; "onChange": "onChange"; "discardChanges": "discardChanges"; "goBack": "goBack"; }, never, never, false, never>;
62
67
  }
@@ -0,0 +1,53 @@
1
+ import { EventEmitter, OnDestroy, OnInit } from '@angular/core';
2
+ import { FormControl } from '@angular/forms';
3
+ import { Router } from '@angular/router';
4
+ import { UserService } from '../services/user.service';
5
+ import { APIService } from '../services/api.service';
6
+ import { DeviceService } from '../services/device.service';
7
+ import { SiteSettingsService } from '../services/site-settings.service';
8
+ import * as i0 from "@angular/core";
9
+ export declare class DeviceSettingsComponent implements OnInit, OnDestroy {
10
+ userService: UserService;
11
+ private apiService;
12
+ private deviceService;
13
+ private siteSettingsService;
14
+ private readonly router;
15
+ goBack: EventEmitter<any>;
16
+ token: string;
17
+ host: string;
18
+ siteId: string;
19
+ userId: string;
20
+ deviceName: string;
21
+ private readonly destroy$;
22
+ dataPending: boolean;
23
+ device: any;
24
+ softKeys: string[];
25
+ readonly plarService: FormControl<boolean | null>;
26
+ readonly description: FormControl<string | null>;
27
+ readonly softkeyTemplate: FormControl<string | null>;
28
+ readonly devicePool: FormControl<string | null>;
29
+ readonly deviceCss: FormControl<string | null>;
30
+ readonly enableExtensionMobility: FormControl<boolean | null>;
31
+ readonly loggedIntoHuntGroup: FormControl<boolean | null>;
32
+ readonly remoteDevice: FormControl<boolean | null>;
33
+ readonly ignorePresentationIndicators: FormControl<boolean | null>;
34
+ readonly hotlineDevice: FormControl<boolean | null>;
35
+ readonly callerIdForCallsFromThisPhone: FormControl<boolean | null>;
36
+ readonly remoteNumber: FormControl<boolean | null>;
37
+ private readonly formControls;
38
+ hasChanges: boolean;
39
+ get lines(): string;
40
+ get devicePools(): string[];
41
+ get cssOptions(): string[];
42
+ constructor(userService: UserService, apiService: APIService, deviceService: DeviceService, siteSettingsService: SiteSettingsService, router: Router);
43
+ ngOnInit(): void;
44
+ private getData;
45
+ private getSiteSettings;
46
+ onGoBack(): void;
47
+ onCancel(): void;
48
+ onSave(): void;
49
+ private getChangedDeviceFields;
50
+ ngOnDestroy(): void;
51
+ static ɵfac: i0.ɵɵFactoryDeclaration<DeviceSettingsComponent, never>;
52
+ static ɵcmp: i0.ɵɵComponentDeclaration<DeviceSettingsComponent, "app-device-settings", never, { "token": "token"; "host": "host"; "siteId": "siteId"; "userId": "userId"; "deviceName": "deviceName"; }, { "goBack": "goBack"; }, never, never, false, never>;
53
+ }
@@ -0,0 +1,84 @@
1
+ import { EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
2
+ import { FormControl } from '@angular/forms';
3
+ import { Router } from '@angular/router';
4
+ import { CdkDragDrop } from '@angular/cdk/drag-drop';
5
+ import { UserService } from '../services/user.service';
6
+ import { APIService } from '../services/api.service';
7
+ import { DeviceService } from '../services/device.service';
8
+ import { Buttontemplate } from '../classes/device';
9
+ import * as i0 from "@angular/core";
10
+ export type LineKeyAssignment = 'primary' | 'open' | 'monitored' | 'speedDial';
11
+ export interface LineKeyRow {
12
+ order: number;
13
+ assignment: LineKeyAssignment;
14
+ label: string;
15
+ destination: string;
16
+ locked: boolean;
17
+ index?: number;
18
+ callPickup?: boolean;
19
+ dnWithRoutePartition?: string;
20
+ }
21
+ export declare class LineKeyConfigComponent implements OnInit, OnChanges, OnDestroy {
22
+ userService: UserService;
23
+ private apiService;
24
+ private readonly deviceService;
25
+ private readonly router;
26
+ goBack: EventEmitter<any>;
27
+ token: string;
28
+ host: string;
29
+ siteId: string;
30
+ userId: string;
31
+ deviceType: string;
32
+ buttonTemplate: string;
33
+ private readonly destroy$;
34
+ dataPending: boolean;
35
+ device: any;
36
+ hasChanges: boolean;
37
+ lineSlots: Buttontemplate | null;
38
+ readonly LINE_KEY_COUNT = 10;
39
+ readonly HALF: number;
40
+ readonly ASSIGNMENT_OPTIONS: Array<{
41
+ value: LineKeyAssignment;
42
+ label: string;
43
+ }>;
44
+ lineKeyTemplates: [];
45
+ readonly selectedTemplate: FormControl<string | null>;
46
+ readonly previewLayout: FormControl<boolean | null>;
47
+ leftKeys: LineKeyRow[];
48
+ rightKeys: LineKeyRow[];
49
+ private initialButtonTemplate;
50
+ private initialSpeedDialLines;
51
+ private initialBlfLines;
52
+ get deviceModel(): string;
53
+ constructor(userService: UserService, apiService: APIService, deviceService: DeviceService, router: Router);
54
+ ngOnInit(): void;
55
+ ngOnChanges(changes: SimpleChanges): void;
56
+ private resetForNewButtonTemplate;
57
+ private fetchSiteDirectoryNumbers;
58
+ private loadDevice;
59
+ private fetchButtonTemplateSlots;
60
+ private getRowsByAssignment;
61
+ private getTemplateSlots;
62
+ private computeTypeIndex;
63
+ private captureSpeedDialBaseline;
64
+ private getSpeedDialLinesPayload;
65
+ private captureBlfBaseline;
66
+ private toBlfLine;
67
+ private getBlfLinesPayload;
68
+ private applyButtonTemplateSlots;
69
+ private applyDialAssignments;
70
+ private applyDialItem;
71
+ applyTemplate(): void;
72
+ onFieldChange(): void;
73
+ onAssignmentChange(row: LineKeyRow): void;
74
+ private relocateRowForAssignment;
75
+ private readonly SEGREGATED_ASSIGNMENTS;
76
+ private isConflictingAssignment;
77
+ onDrop(event: CdkDragDrop<LineKeyRow[]>): void;
78
+ onGoBack(): void;
79
+ onCancel(): void;
80
+ onSave(): void;
81
+ ngOnDestroy(): void;
82
+ static ɵfac: i0.ɵɵFactoryDeclaration<LineKeyConfigComponent, never>;
83
+ static ɵcmp: i0.ɵɵComponentDeclaration<LineKeyConfigComponent, "app-line-key-config", never, { "token": "token"; "host": "host"; "siteId": "siteId"; "userId": "userId"; "deviceType": "deviceType"; "buttonTemplate": "buttonTemplate"; }, { "goBack": "goBack"; }, never, never, false, never>;
84
+ }
@@ -1,6 +1,6 @@
1
1
  import { APIService } from './api.service';
2
2
  import { Observable } from 'rxjs';
3
- import { Buttontemplate, Device } from '../classes/device';
3
+ import { BlfSpeedDialLineUpdate, Buttontemplate, Device, SpeedDialLineUpdate } from '../classes/device';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class DeviceService {
6
6
  private apiService;
@@ -8,13 +8,18 @@ export declare class DeviceService {
8
8
  lineSlotsList: any;
9
9
  availableLineSlotsList: any;
10
10
  dataPending: boolean;
11
+ siteDirectoryNumbers: string[];
11
12
  constructor(apiService: APIService);
12
13
  hasUnsavedChanges(device: Device, originDevice: Device): boolean;
13
14
  hasDeviceInfoUnsavedChanges(device: Device, originDevice: Device): boolean;
14
15
  getDataToUpdateDevice(device: Device, originalDevice: Device): any;
15
16
  fetchLeanUserDevicesConversationById(userId: string, siteId: number): Observable<any>;
16
17
  getSlotsByButtonTemplate(siteId: number, buttonTemplateName: string): Observable<Buttontemplate>;
18
+ getDeviceDefaults(siteId: number, deviceType: string): Observable<any>;
19
+ getAllSiteDirectoryNumbers(siteId: number): Observable<any[]>;
17
20
  putDeviceFields(siteId: number, deviceName: string, token: string, body: any): any;
21
+ updateSpeedDialLines(siteId: number, deviceName: string, userToken: string, body: SpeedDialLineUpdate[]): any;
22
+ updateBlfSpeedDialLines(siteId: number, deviceName: string, userToken: string, body: BlfSpeedDialLineUpdate[]): any;
18
23
  updateAvailableSlots(siteId: number, device: Device): any;
19
24
  static ɵfac: i0.ɵɵFactoryDeclaration<DeviceService, never>;
20
25
  static ɵprov: i0.ɵɵInjectableDeclaration<DeviceService>;
@@ -38,7 +38,8 @@ export declare class UserService implements OnInit {
38
38
  resetLineAssociation(deviceIndex: number, lineIndex: number, validationService: ValidationService): void;
39
39
  resetDevice(currentDevice: Device, validationService: ValidationService): void;
40
40
  fetchUserToken(siteId: number, userId: string, validationService: ValidationService, isSetNewTokenOnly?: boolean): any;
41
- fetchDIUserDevice(siteId: number, userId: string, deviceType: string): import("rxjs").Observable<DeviceProfile | undefined>;
41
+ fetchDIUserDevice(siteId: number, userId: string, deviceType: string, deviceName?: string): import("rxjs").Observable<DeviceProfile | undefined>;
42
+ getDeviceExtraOptions(siteId: number, deviceName: string, commonPhoneConfigName: string): import("rxjs").Observable<any>;
42
43
  private getMacAddress;
43
44
  fetchWebexUserDevice(customerId: string, userId: string, deviceType: string): import("rxjs").Observable<DeviceProfile | undefined>;
44
45
  updateUserFields(body: any): any;
@@ -11,14 +11,17 @@ import * as i9 from "./device-associated-line/associated-line-row/associated-lin
11
11
  import * as i10 from "./confirm-dialog/info-dialog.component";
12
12
  import * as i11 from "./device-info/device-info.component";
13
13
  import * as i12 from "./pipes/mac-address.pipe";
14
- import * as i13 from "@angular/common";
15
- import * as i14 from "@angular/platform-browser";
16
- import * as i15 from "@angular/platform-browser/animations";
17
- import * as i16 from "@angular/forms";
18
- import * as i17 from "@angular/common/http";
19
- import * as i18 from "./material.module";
14
+ import * as i13 from "./device-settings/device-settings.component";
15
+ import * as i14 from "./line-key-config/line-key-config.component";
16
+ import * as i15 from "./associate-lines/associate-lines.component";
17
+ import * as i16 from "@angular/common";
18
+ import * as i17 from "@angular/platform-browser";
19
+ import * as i18 from "@angular/platform-browser/animations";
20
+ import * as i19 from "@angular/forms";
21
+ import * as i20 from "@angular/common/http";
22
+ import * as i21 from "./material.module";
20
23
  export declare class UserDeviceManageModule {
21
24
  static ɵfac: i0.ɵɵFactoryDeclaration<UserDeviceManageModule, never>;
22
- static ɵmod: i0.ɵɵNgModuleDeclaration<UserDeviceManageModule, [typeof i1.AppLoaderComponent, typeof i2.NotificationsComponent, typeof i3.LazyLoadingSelectComponent, typeof i4.DeviceListComponent, typeof i5.DeviceManageWidgetComponent, typeof i6.DeviceAssociatedLineComponent, typeof i7.DeviceAssociatedLineExtensionComponent, typeof i8.DeviceAssociatedLineDetailsBoxComponent, typeof i9.AssociatedLineRowComponent, typeof i10.InfoDialogComponent, typeof i11.DeviceInfoComponent, typeof i12.MacAddressPipe], [typeof i13.CommonModule, typeof i14.BrowserModule, typeof i15.BrowserAnimationsModule, typeof i16.FormsModule, typeof i16.ReactiveFormsModule, typeof i17.HttpClientModule, typeof i18.MaterialModule], [typeof i5.DeviceManageWidgetComponent]>;
25
+ static ɵmod: i0.ɵɵNgModuleDeclaration<UserDeviceManageModule, [typeof i1.AppLoaderComponent, typeof i2.NotificationsComponent, typeof i3.LazyLoadingSelectComponent, typeof i4.DeviceListComponent, typeof i5.DeviceManageWidgetComponent, typeof i6.DeviceAssociatedLineComponent, typeof i7.DeviceAssociatedLineExtensionComponent, typeof i8.DeviceAssociatedLineDetailsBoxComponent, typeof i9.AssociatedLineRowComponent, typeof i10.InfoDialogComponent, typeof i11.DeviceInfoComponent, typeof i12.MacAddressPipe, typeof i13.DeviceSettingsComponent, typeof i14.LineKeyConfigComponent, typeof i15.AssociateLinesComponent], [typeof i16.CommonModule, typeof i17.BrowserModule, typeof i18.BrowserAnimationsModule, typeof i19.FormsModule, typeof i19.ReactiveFormsModule, typeof i20.HttpClientModule, typeof i21.MaterialModule], [typeof i5.DeviceManageWidgetComponent, typeof i13.DeviceSettingsComponent, typeof i14.LineKeyConfigComponent, typeof i15.AssociateLinesComponent]>;
23
26
  static ɵinj: i0.ɵɵInjectorDeclaration<UserDeviceManageModule>;
24
27
  }
@@ -1,9 +1,10 @@
1
1
  import { Location } from '@angular/common';
2
2
  import { EventEmitter, OnInit } from '@angular/core';
3
- import { Workspace, WorkspaceConnectionType, WorkspaceDetails } from '../../types/workspace';
3
+ import { Workspace, WorkspaceConnectionType, WorkspaceDetails, WorkspaceDevice } from '../../types/workspace';
4
4
  import { WorkspaceDetailService } from '../../services/workspace-detail.service';
5
5
  import * as i0 from "@angular/core";
6
6
  export type WorkspaceDetailTab = 'overview' | 'calling';
7
+ export type WorkspaceDetailView = 'overview' | 'device';
7
8
  export declare class WorkspaceDetailComponent implements OnInit {
8
9
  private workspaceDetailService;
9
10
  private location;
@@ -12,6 +13,8 @@ export declare class WorkspaceDetailComponent implements OnInit {
12
13
  customerId: string;
13
14
  back: EventEmitter<void>;
14
15
  activeTab: WorkspaceDetailTab;
16
+ view: WorkspaceDetailView;
17
+ selectedDevice: WorkspaceDevice | null;
15
18
  details: WorkspaceDetails | null;
16
19
  isLoading: boolean;
17
20
  expandedIssueId: string | null;
@@ -23,6 +26,8 @@ export declare class WorkspaceDetailComponent implements OnInit {
23
26
  toggleIssue(issueId: string): void;
24
27
  selectTab(tab: WorkspaceDetailTab): void;
25
28
  onBack(): void;
29
+ onOpenDevice(device: WorkspaceDevice): void;
30
+ onDeviceBack(): void;
26
31
  private updateUrl;
27
32
  static ɵfac: i0.ɵɵFactoryDeclaration<WorkspaceDetailComponent, never>;
28
33
  static ɵcmp: i0.ɵɵComponentDeclaration<WorkspaceDetailComponent, "tk-workspace-detail", never, { "workspace": "workspace"; "connectionType": "connectionType"; "customerId": "customerId"; }, { "back": "back"; }, never, never, false, never>;
@@ -0,0 +1,25 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { Workspace, WorkspaceDevice, WorkspaceDeviceDetails } from '../../types/workspace';
3
+ import * as i0 from "@angular/core";
4
+ export declare class WorkspaceDeviceDetailComponent {
5
+ workspace: Workspace;
6
+ device: WorkspaceDevice | null;
7
+ details: WorkspaceDeviceDetails | null;
8
+ isLoading: boolean;
9
+ back: EventEmitter<void>;
10
+ tags: string[];
11
+ isAddingTag: boolean;
12
+ newTag: string;
13
+ hotelingEnabled: boolean;
14
+ guestHoursLimit: number;
15
+ readonly hotelingTimeHours: number[];
16
+ get deviceLabel(): string;
17
+ get deviceIcon(): string;
18
+ get isRegistered(): boolean;
19
+ onBack(): void;
20
+ showTagInput(): void;
21
+ onTagInputBlur(): void;
22
+ removeTag(index: number): void;
23
+ static ɵfac: i0.ɵɵFactoryDeclaration<WorkspaceDeviceDetailComponent, never>;
24
+ static ɵcmp: i0.ɵɵComponentDeclaration<WorkspaceDeviceDetailComponent, "tk-workspace-device-detail", never, { "workspace": "workspace"; "device": "device"; "details": "details"; "isLoading": "isLoading"; }, { "back": "back"; }, never, never, false, never>;
25
+ }
@@ -32,6 +32,7 @@ export declare class WorkspacesTableComponent {
32
32
  onAddDevice(workspace: Workspace, event: Event): void;
33
33
  onPage(event: PageEvent): void;
34
34
  getDeviceIcon(model?: string): string;
35
+ onCopyMac(mac: string): void;
35
36
  getDisplayName(workspace: Workspace): string;
36
37
  isPending(workspaceId: string): boolean;
37
38
  isMoveToMTDisabled(workspace: Workspace): boolean;
@@ -10,8 +10,10 @@ export declare class WorkspaceDetailService {
10
10
  getByWorkspace(workspace: Workspace, connectionType: WorkspaceConnectionType, customerId: string | number): Observable<WorkspaceDetails>;
11
11
  private getWebexDetails;
12
12
  private toWebexDetails;
13
+ private buildWebexDeviceDetails;
13
14
  private getCucmDetails;
14
15
  private toCucmDetails;
16
+ private buildCucmDeviceDetails;
15
17
  private buildUrl;
16
18
  private buildIssues;
17
19
  private formatTimestamp;
@@ -113,6 +113,7 @@ export interface WorkspaceDevice {
113
113
  initials?: string;
114
114
  color?: string;
115
115
  model?: string;
116
+ mac?: string;
116
117
  }
117
118
  export interface WorkspacesPage {
118
119
  workspaces: Workspace[];
@@ -163,6 +164,23 @@ export interface WorkspaceCallingDetails {
163
164
  externalCallerIdName?: string;
164
165
  externalCallerIdNumber?: string;
165
166
  }
167
+ export interface WorkspaceDeviceLine {
168
+ name: string;
169
+ number: string;
170
+ registered: boolean;
171
+ }
172
+ export interface WorkspaceDeviceDetails {
173
+ model: string;
174
+ registrationStatus: string;
175
+ mac: string;
176
+ lineCount: number | null;
177
+ hostIpAddress: string;
178
+ remoteIpAddress: string;
179
+ managedBy: string;
180
+ softwareChannel: string;
181
+ softwareVersion: string;
182
+ lines: WorkspaceDeviceLine[];
183
+ }
166
184
  export interface WorkspaceDetails {
167
185
  issues: WorkspaceIssue[];
168
186
  location: WorkspaceLocationDetails;
@@ -171,6 +189,7 @@ export interface WorkspaceDetails {
171
189
  plannedMaintenanceEnabled: boolean;
172
190
  notes: string | null;
173
191
  capacity?: number | null;
192
+ device?: WorkspaceDeviceDetails;
174
193
  }
175
194
  export interface WebexWorkspaceDeviceSummary {
176
195
  deviceId: string;
@@ -3,14 +3,15 @@ import * as i1 from "./workspaces.component";
3
3
  import * as i2 from "./components/workspaces-filters/workspaces-filters.component";
4
4
  import * as i3 from "./components/workspaces-table/workspaces-table.component";
5
5
  import * as i4 from "./components/workspace-detail/workspace-detail.component";
6
- import * as i5 from "./components/workspace-confirm-dialog/workspace-confirm-dialog.component";
7
- import * as i6 from "./utils/app-loader/app-loader";
8
- import * as i7 from "@angular/common";
9
- import * as i8 from "@angular/common/http";
10
- import * as i9 from "@angular/forms";
11
- import * as i10 from "./material.module";
6
+ import * as i5 from "./components/workspace-device-detail/workspace-device-detail.component";
7
+ import * as i6 from "./components/workspace-confirm-dialog/workspace-confirm-dialog.component";
8
+ import * as i7 from "./utils/app-loader/app-loader";
9
+ import * as i8 from "@angular/common";
10
+ import * as i9 from "@angular/common/http";
11
+ import * as i10 from "@angular/forms";
12
+ import * as i11 from "./material.module";
12
13
  export declare class WorkspacesModule {
13
14
  static ɵfac: i0.ɵɵFactoryDeclaration<WorkspacesModule, never>;
14
- static ɵmod: i0.ɵɵNgModuleDeclaration<WorkspacesModule, [typeof i1.WorkspacesComponent, typeof i2.WorkspacesFiltersComponent, typeof i3.WorkspacesTableComponent, typeof i4.WorkspaceDetailComponent, typeof i5.WorkspaceConfirmDialogComponent, typeof i6.AppLoaderComponent], [typeof i7.CommonModule, typeof i8.HttpClientModule, typeof i9.FormsModule, typeof i10.MaterialModule], [typeof i1.WorkspacesComponent]>;
15
+ static ɵmod: i0.ɵɵNgModuleDeclaration<WorkspacesModule, [typeof i1.WorkspacesComponent, typeof i2.WorkspacesFiltersComponent, typeof i3.WorkspacesTableComponent, typeof i4.WorkspaceDetailComponent, typeof i5.WorkspaceDeviceDetailComponent, typeof i6.WorkspaceConfirmDialogComponent, typeof i7.AppLoaderComponent], [typeof i8.CommonModule, typeof i9.HttpClientModule, typeof i10.FormsModule, typeof i11.MaterialModule], [typeof i1.WorkspacesComponent]>;
15
16
  static ɵinj: i0.ɵɵInjectorDeclaration<WorkspacesModule>;
16
17
  }
@@ -1,6 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- export declare class CardComponent {
3
- title: string;
4
- static ɵfac: i0.ɵɵFactoryDeclaration<CardComponent, never>;
5
- static ɵcmp: i0.ɵɵComponentDeclaration<CardComponent, "tk-card", never, { "title": "title"; }, {}, never, ["card-content"], false, never>;
6
- }
@@ -1,13 +0,0 @@
1
- import { Component, Input } from "@angular/core";
2
- import * as i0 from "@angular/core";
3
- export class CardComponent {
4
- }
5
- CardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6
- CardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: CardComponent, selector: "tk-card", inputs: { title: "title" }, ngImport: i0, template: "<article class=\"card\">\r\n <header class=\"card__header\">\r\n <h2>{{ title }}</h2>\r\n <!--<div class=\"card__menu-button\">\r\n <img width=\"18\" src=\"assets/icons/menu_icon.png\" alt=\"Menu Icon\">\r\n </div>-->\r\n </header>\r\n <div class=\"card__content\">\r\n <ng-content select=\"card-content\"></ng-content>\r\n </div>\r\n</article>\r\n", styles: ["@import\"https://fonts.googleapis.com/css?family=Poppins:400,100,200,300,500,600,800,700,900\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";:host{display:block;height:100%;box-sizing:border-box}.card{font-family:Inter,Inter,sans-serif;background-color:#fff;border-radius:1rem;padding:2rem;border:1px solid hsla(0,0%,0%,.2);min-width:300px;max-width:100%;height:100%;display:flex;flex-direction:column;box-sizing:border-box;gap:2.5rem}.card__header{position:relative;display:flex;align-items:center;justify-content:space-between}.card__header h2{font-size:16px;margin:0}.card__header .card__menu-button{position:relative;display:flex;align-items:center}.card__content{display:flex;flex-direction:column;gap:2.5rem;flex-grow:1}\n"] });
7
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CardComponent, decorators: [{
8
- type: Component,
9
- args: [{ selector: 'tk-card', template: "<article class=\"card\">\r\n <header class=\"card__header\">\r\n <h2>{{ title }}</h2>\r\n <!--<div class=\"card__menu-button\">\r\n <img width=\"18\" src=\"assets/icons/menu_icon.png\" alt=\"Menu Icon\">\r\n </div>-->\r\n </header>\r\n <div class=\"card__content\">\r\n <ng-content select=\"card-content\"></ng-content>\r\n </div>\r\n</article>\r\n", styles: ["@import\"https://fonts.googleapis.com/css?family=Poppins:400,100,200,300,500,600,800,700,900\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";:host{display:block;height:100%;box-sizing:border-box}.card{font-family:Inter,Inter,sans-serif;background-color:#fff;border-radius:1rem;padding:2rem;border:1px solid hsla(0,0%,0%,.2);min-width:300px;max-width:100%;height:100%;display:flex;flex-direction:column;box-sizing:border-box;gap:2.5rem}.card__header{position:relative;display:flex;align-items:center;justify-content:space-between}.card__header h2{font-size:16px;margin:0}.card__header .card__menu-button{position:relative;display:flex;align-items:center}.card__content{display:flex;flex-direction:column;gap:2.5rem;flex-grow:1}\n"] }]
10
- }], propDecorators: { title: [{
11
- type: Input
12
- }] } });
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvY29udGFjdC1jZW50ZXIvY2MtcmVhZGluZXNzL2NvbXBvbmVudHMvY2FyZC9jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy9jb250YWN0LWNlbnRlci9jYy1yZWFkaW5lc3MvY29tcG9uZW50cy9jYXJkL2NhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBT2pELE1BQU0sT0FBTyxhQUFhOzsyR0FBYixhQUFhOytGQUFiLGFBQWEsMkVDUDFCLGlaQVdBOzRGREphLGFBQWE7a0JBTHpCLFNBQVM7K0JBQ0ksU0FBUzs4QkFLVixLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd0ay1jYXJkJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYXJkLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2NhcmQuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2FyZENvbXBvbmVudCB7XHJcbiAgICBASW5wdXQoKSB0aXRsZSE6IHN0cmluZztcclxufSIsIjxhcnRpY2xlIGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgPGhlYWRlciBjbGFzcz1cImNhcmRfX2hlYWRlclwiPlxyXG4gICAgICAgIDxoMj57eyB0aXRsZSB9fTwvaDI+XHJcbiAgICAgICAgPCEtLTxkaXYgY2xhc3M9XCJjYXJkX19tZW51LWJ1dHRvblwiPlxyXG4gICAgICAgICAgICA8aW1nIHdpZHRoPVwiMThcIiBzcmM9XCJhc3NldHMvaWNvbnMvbWVudV9pY29uLnBuZ1wiIGFsdD1cIk1lbnUgSWNvblwiPlxyXG4gICAgICAgIDwvZGl2Pi0tPlxyXG4gICAgPC9oZWFkZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZF9fY29udGVudFwiPlxyXG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImNhcmQtY29udGVudFwiPjwvbmctY29udGVudD5cclxuICAgIDwvZGl2PlxyXG48L2FydGljbGU+XHJcbiJdfQ==