@chat21/chat21-ionic 3.0.5-9.2 → 3.0.6-2.3
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/CHANGELOG.md +202 -0
- package/LICENSE +661 -21
- package/README.md +13 -1
- package/angular.json +4 -0
- package/config.xml +4 -5
- package/deploy_pre.sh +44 -5
- package/deploy_prod.sh +36 -7
- package/env.sample +4 -2
- package/package.json +12 -8
- package/resources/{Android → android}/icon/drawable-hdpi-icon.png +0 -0
- package/resources/{Android → android}/icon/drawable-ldpi-icon.png +0 -0
- package/resources/{Android → android}/icon/drawable-mdpi-icon.png +0 -0
- package/resources/{Android → android}/icon/drawable-xhdpi-icon.png +0 -0
- package/resources/{Android → android}/icon/drawable-xxhdpi-icon.png +0 -0
- package/resources/{Android → android}/icon/drawable-xxxhdpi-icon.png +0 -0
- package/resources/{Android → android}/icon.png +0 -0
- package/resources/{Android → android}/splash/drawable-land-hdpi-screen.png +0 -0
- package/resources/{Android → android}/splash/drawable-land-ldpi-screen.png +0 -0
- package/resources/{Android → android}/splash/drawable-land-mdpi-screen.png +0 -0
- package/resources/{Android → android}/splash/drawable-land-xhdpi-screen.png +0 -0
- package/resources/{Android → android}/splash/drawable-land-xxhdpi-screen.png +0 -0
- package/resources/{Android → android}/splash/drawable-land-xxxhdpi-screen.png +0 -0
- package/resources/{Android → android}/splash/drawable-port-hdpi-screen.png +0 -0
- package/resources/{Android → android}/splash/drawable-port-ldpi-screen.png +0 -0
- package/resources/{Android → android}/splash/drawable-port-mdpi-screen.png +0 -0
- package/resources/{Android → android}/splash/drawable-port-xhdpi-screen.png +0 -0
- package/resources/{Android → android}/splash/drawable-port-xxhdpi-screen.png +0 -0
- package/resources/{Android → android}/splash/drawable-port-xxxhdpi-screen.png +0 -0
- package/resources/{Android → android}/splash.png +0 -0
- package/src/app/app-routing.module.ts +15 -0
- package/src/app/app.component.html +14 -4
- package/src/app/app.component.scss +18 -1
- package/src/app/app.component.ts +98 -37
- package/src/app/app.module.ts +14 -5
- package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.html +36 -25
- package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.scss +160 -50
- package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.ts +108 -18
- package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.html +21 -36
- package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.scss +19 -7
- package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.ts +63 -42
- package/src/app/chatlib/conversation-detail/message/message-attachment/message-attachment.component.scss +1 -1
- package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.html +7 -2
- package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.ts +141 -21
- package/src/app/chatlib/list-conversations-component/list-conversations/list-conversations.component.ts +13 -10
- package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.html +39 -36
- package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.scss +7 -1
- package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.ts +148 -63
- package/src/app/components/conversation-detail/message-text-area/message-text-area.component.html +101 -39
- package/src/app/components/conversation-detail/message-text-area/message-text-area.component.scss +73 -2
- package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +168 -98
- package/src/app/components/ddp-header/ddp-header.component.html +20 -6
- package/src/app/components/ddp-header/ddp-header.component.scss +4 -0
- package/src/app/components/ddp-header/ddp-header.component.ts +104 -10
- package/src/app/components/image-viewer/image-viewer.component.scss +2 -2
- package/src/app/components/project-item/project-item.component.html +141 -118
- package/src/app/components/project-item/project-item.component.scss +173 -91
- package/src/app/components/project-item/project-item.component.ts +59 -25
- package/src/app/components/sidebar/sidebar.component.html +275 -0
- package/src/app/components/sidebar/sidebar.component.scss +79 -0
- package/src/app/components/sidebar/sidebar.component.spec.ts +24 -0
- package/src/app/components/sidebar/sidebar.component.ts +541 -0
- package/src/app/components/sidebar-user-details/sidebar-user-details.component.html +137 -0
- package/src/app/components/sidebar-user-details/sidebar-user-details.component.scss +389 -0
- package/src/app/components/sidebar-user-details/sidebar-user-details.component.spec.ts +24 -0
- package/src/app/components/sidebar-user-details/sidebar-user-details.component.ts +530 -0
- package/src/app/pages/conversation-detail/conversation-detail.module.ts +9 -2
- package/src/app/pages/conversation-detail/conversation-detail.page.html +53 -49
- package/src/app/pages/conversation-detail/conversation-detail.page.scss +28 -0
- package/src/app/pages/conversation-detail/conversation-detail.page.ts +1254 -753
- package/src/app/pages/conversations-list/conversations-list.module.ts +2 -1
- package/src/app/pages/conversations-list/conversations-list.page.html +24 -11
- package/src/app/pages/conversations-list/conversations-list.page.scss +20 -1
- package/src/app/pages/conversations-list/conversations-list.page.ts +687 -420
- package/src/app/pages/create-canned-response/create-canned-response-routing.module.ts +17 -0
- package/src/app/pages/create-canned-response/create-canned-response.module.ts +30 -0
- package/src/app/pages/create-canned-response/create-canned-response.page.html +150 -0
- package/src/app/pages/create-canned-response/create-canned-response.page.scss +55 -0
- package/src/app/pages/create-canned-response/create-canned-response.page.spec.ts +24 -0
- package/src/app/pages/create-canned-response/create-canned-response.page.ts +319 -0
- package/src/app/pages/create-requester/create-requester-routing.module.ts +17 -0
- package/src/app/pages/create-requester/create-requester.module.ts +28 -0
- package/src/app/pages/create-requester/create-requester.page.html +67 -0
- package/src/app/pages/create-requester/create-requester.page.scss +30 -0
- package/src/app/pages/create-requester/create-requester.page.spec.ts +24 -0
- package/src/app/pages/create-requester/create-requester.page.ts +138 -0
- package/src/app/pages/create-ticket/create-ticket-routing.module.ts +17 -0
- package/src/app/pages/create-ticket/create-ticket.module.ts +28 -0
- package/src/app/pages/create-ticket/create-ticket.page.html +171 -0
- package/src/app/pages/create-ticket/create-ticket.page.scss +52 -0
- package/src/app/pages/create-ticket/create-ticket.page.spec.ts +24 -0
- package/src/app/pages/create-ticket/create-ticket.page.ts +432 -0
- package/src/app/pages/loader-preview/loader-preview.page.ts +226 -166
- package/src/app/pages/profile-info/profile-info.page.html +4 -4
- package/src/app/pages/profile-info/profile-info.page.scss +13 -2
- package/src/app/pages/profile-info/profile-info.page.ts +23 -21
- package/src/app/pages/unassigned-conversations/unassigned-conversations.page.html +16 -11
- package/src/app/pages/unassigned-conversations/unassigned-conversations.page.scss +157 -63
- package/src/app/pages/unassigned-conversations/unassigned-conversations.page.ts +51 -16
- package/src/app/services/app-config.ts +14 -14
- package/src/app/services/tiledesk/tiledesk.service.ts +209 -0
- package/src/app/shared/shared.module.ts +21 -7
- package/src/app/utils/scrollbar-theme.directive.ts +58 -24
- package/src/assets/i18n/de.json +266 -0
- package/src/assets/i18n/en.json +85 -10
- package/src/assets/i18n/es.json +266 -0
- package/src/assets/i18n/fr.json +266 -0
- package/src/assets/i18n/it.json +104 -37
- package/src/assets/i18n/pt.json +266 -0
- package/src/assets/i18n/ru.json +266 -0
- package/src/assets/i18n/sr.json +266 -0
- package/src/assets/i18n/tr.json +266 -0
- package/src/assets/images/default-avatar-x-select.png +0 -0
- package/src/assets/images/language_flag/ar.png +0 -0
- package/src/assets/images/language_flag/bg.png +0 -0
- package/src/assets/images/language_flag/ca.png +0 -0
- package/src/assets/images/language_flag/cs.png +0 -0
- package/src/assets/images/language_flag/da.png +0 -0
- package/src/assets/images/language_flag/de.png +0 -0
- package/src/assets/images/language_flag/el.png +0 -0
- package/src/assets/images/language_flag/en.png +0 -0
- package/src/assets/images/language_flag/es.png +0 -0
- package/src/assets/images/language_flag/fa.png +0 -0
- package/src/assets/images/language_flag/fi.png +0 -0
- package/src/assets/images/language_flag/fr.png +0 -0
- package/src/assets/images/language_flag/he.png +0 -0
- package/src/assets/images/language_flag/hi.png +0 -0
- package/src/assets/images/language_flag/hr.png +0 -0
- package/src/assets/images/language_flag/hu.png +0 -0
- package/src/assets/images/language_flag/id.png +0 -0
- package/src/assets/images/language_flag/it.png +0 -0
- package/src/assets/images/language_flag/ja.png +0 -0
- package/src/assets/images/language_flag/ko.png +0 -0
- package/src/assets/images/language_flag/ml-IN.png +0 -0
- package/src/assets/images/language_flag/ne-NP.png +0 -0
- package/src/assets/images/language_flag/nl.png +0 -0
- package/src/assets/images/language_flag/no.png +0 -0
- package/src/assets/images/language_flag/pl.png +0 -0
- package/src/assets/images/language_flag/pt-BR.png +0 -0
- package/src/assets/images/language_flag/pt.png +0 -0
- package/src/assets/images/language_flag/ro.png +0 -0
- package/src/assets/images/language_flag/ru.png +0 -0
- package/src/assets/images/language_flag/sk.png +0 -0
- package/src/assets/images/language_flag/sl.png +0 -0
- package/src/assets/images/language_flag/sr.png +0 -0
- package/src/assets/images/language_flag/sv-SE.png +0 -0
- package/src/assets/images/language_flag/ta.png +0 -0
- package/src/assets/images/language_flag/th.png +0 -0
- package/src/assets/images/language_flag/tr.png +0 -0
- package/src/assets/images/language_flag/uk.png +0 -0
- package/src/assets/images/language_flag/vi.png +0 -0
- package/src/assets/images/language_flag/zh-CN.png +0 -0
- package/src/assets/images/language_flag/zh-TW.png +0 -0
- package/src/assets/images/no_image_user.png +0 -0
- package/src/assets/images/priority_icons/high.svg +3 -0
- package/src/assets/images/priority_icons/high_v2.svg +14 -0
- package/src/assets/images/priority_icons/low.svg +10 -0
- package/src/assets/images/priority_icons/low_v2.svg +14 -0
- package/src/assets/images/priority_icons/medium.svg +16 -0
- package/src/assets/images/priority_icons/medium_v2.svg +11 -0
- package/src/assets/images/priority_icons/urgent.svg +4 -0
- package/src/assets/images/priority_icons/urgent_v2.svg +16 -0
- package/src/assets/js/chat21client.js +16 -3
- package/src/assets/tiledesk-solo-logo.png +0 -0
- package/src/chat-config-mqtt.json +27 -17
- package/src/chat-config-pre-test.json +5 -1
- package/src/chat-config-pre.json +15 -3
- package/src/chat-config-template.json +6 -2
- package/src/chat-config.json +5 -1
- package/src/chat21-core/providers/firebase/firebase-conversation-handler.ts +61 -45
- package/src/chat21-core/providers/firebase/firebase-conversations-handler.ts +23 -0
- package/src/chat21-core/providers/mqtt/mqtt-archivedconversations-handler.ts +1 -1
- package/src/chat21-core/utils/constants.ts +8 -1
- package/src/chat21-core/utils/utils-message.ts +19 -0
- package/src/chat21-core/utils/utils.ts +12 -1
- package/src/global.scss +408 -2
- package/src/index.html +7 -0
- package/publish_pre.sh +0 -33
- package/publish_prod.sh +0 -33
|
@@ -86,16 +86,18 @@ export class ProfileInfoPage implements OnInit {
|
|
|
86
86
|
private setUser() {
|
|
87
87
|
// width and height NON sono obbligatori
|
|
88
88
|
this.loggedUser = this.chatManager.getCurrentUser();
|
|
89
|
-
this.
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
89
|
+
if (this.loggedUser) {
|
|
90
|
+
this.itemAvatar = {
|
|
91
|
+
imageurl: this.imageRepo.getImagePhotoUrl(this.loggedUser.uid),
|
|
92
|
+
avatar: this.loggedUser.avatar,
|
|
93
|
+
color: this.loggedUser.color,
|
|
94
|
+
online: this.loggedUser.online,
|
|
95
|
+
lastConnection: this.loggedUser.lastConnection,
|
|
96
|
+
status: '',
|
|
97
|
+
width: '100px',
|
|
98
|
+
height: '100px'
|
|
99
|
+
};
|
|
100
|
+
}
|
|
99
101
|
}
|
|
100
102
|
|
|
101
103
|
|
|
@@ -121,10 +123,10 @@ export class ProfileInfoPage implements OnInit {
|
|
|
121
123
|
private setSubscriptions() {
|
|
122
124
|
this.presenceService.userIsOnline(this.loggedUser.uid);
|
|
123
125
|
this.presenceService.lastOnlineForUser(this.loggedUser.uid);
|
|
124
|
-
|
|
125
|
-
|
|
126
|
+
|
|
127
|
+
|
|
126
128
|
const subscribeBSIsOnline = this.presenceService.BSIsOnline.subscribe((data: any) => {
|
|
127
|
-
|
|
129
|
+
this.logger.log('[PROFILE-INFO-PAGE] setSubscriptions $ubscribe to BSIsOnline - data', data);
|
|
128
130
|
if (data) {
|
|
129
131
|
const userId = data.uid;
|
|
130
132
|
const isOnline = data.isOnline;
|
|
@@ -135,7 +137,7 @@ export class ProfileInfoPage implements OnInit {
|
|
|
135
137
|
});
|
|
136
138
|
|
|
137
139
|
const subscribeBSLastOnline = this.presenceService.BSLastOnline.subscribe((data: any) => {
|
|
138
|
-
|
|
140
|
+
this.logger.log('[PROFILE-INFO-PAGE] setSubscriptions $ubscribe to BSLastOnline - data', data);
|
|
139
141
|
if (data) {
|
|
140
142
|
const userId = data.uid;
|
|
141
143
|
const timestamp = data.lastOnline;
|
|
@@ -150,7 +152,7 @@ export class ProfileInfoPage implements OnInit {
|
|
|
150
152
|
|
|
151
153
|
|
|
152
154
|
userIsOnLine = (userId: string, isOnline: boolean) => {
|
|
153
|
-
|
|
155
|
+
this.logger.log('[PROFILE-INFO-PAGE] userIsOnLine - userId ', userId, ' - isOnline ', isOnline);
|
|
154
156
|
this.itemAvatar.online = isOnline;
|
|
155
157
|
if (isOnline) {
|
|
156
158
|
this.itemAvatar.status = this.translationMap.get('LABEL_AVAILABLE');
|
|
@@ -180,9 +182,9 @@ export class ProfileInfoPage implements OnInit {
|
|
|
180
182
|
|
|
181
183
|
/** */
|
|
182
184
|
private unsubescribeAll() {
|
|
183
|
-
|
|
185
|
+
this.logger.log('unsubescribeAll: ', this.subscriptions);
|
|
184
186
|
this.subscriptions.forEach((subscription: any) => {
|
|
185
|
-
|
|
187
|
+
this.logger.log('unsubescribe: ', subscription);
|
|
186
188
|
// this.events.unsubscribe(subscription, null);
|
|
187
189
|
});
|
|
188
190
|
this.subscriptions = [];
|
|
@@ -207,15 +209,15 @@ export class ProfileInfoPage implements OnInit {
|
|
|
207
209
|
}
|
|
208
210
|
|
|
209
211
|
copyLoggedUserUID() {
|
|
210
|
-
var copyText = document.createElement("input");
|
|
212
|
+
var copyText = document.createElement("input");
|
|
211
213
|
copyText.setAttribute("type", "text");
|
|
212
214
|
copyText.setAttribute("value", this.loggedUser.uid);
|
|
213
|
-
|
|
214
|
-
document.body.appendChild(copyText);
|
|
215
|
+
|
|
216
|
+
document.body.appendChild(copyText);
|
|
215
217
|
copyText.select();
|
|
216
218
|
copyText.setSelectionRange(0, 99999); /*For mobile devices*/
|
|
217
219
|
document.execCommand("copy");
|
|
218
|
-
|
|
220
|
+
this.logger.log("Copied the text: " + copyText.value);
|
|
219
221
|
const tootipElem = <HTMLElement>document.querySelector('.chat-tooltip');
|
|
220
222
|
this.renderer.appendChild(tootipElem, this.renderer.createText('Copied!'))
|
|
221
223
|
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
<ion-header>
|
|
2
2
|
<ion-toolbar>
|
|
3
|
-
<ion-title
|
|
3
|
+
<ion-title *ngIf="callerBtn !== 'pinbtn'" style="font-size: 16px;">
|
|
4
|
+
{{translationMap?.get('UnassignedConversations') }}
|
|
5
|
+
</ion-title>
|
|
6
|
+
<ion-title *ngIf="callerBtn === 'pinbtn'" style="font-size: 16px;">
|
|
7
|
+
{{translationMap?.get('PIN_A_PROJECT') }}
|
|
8
|
+
</ion-title>
|
|
4
9
|
<ion-buttons slot="end">
|
|
5
10
|
<ion-button ion-button fill="clear" (click)="onClose()">
|
|
6
11
|
<ion-icon slot="icon-only" name="close"></ion-icon>
|
|
@@ -9,14 +14,14 @@
|
|
|
9
14
|
</ion-toolbar>
|
|
10
15
|
</ion-header>
|
|
11
16
|
|
|
12
|
-
<ion-content overflow-scroll="true" id="iframe-ion-content"
|
|
13
|
-
[ngClass]="{'ion-content-black-background' : isProjectsForPanel === true}">
|
|
17
|
+
<ion-content overflow-scroll="true" id="iframe-ion-content"
|
|
18
|
+
[ngClass]="{'ion-content-black-background' : isProjectsForPanel === true}">
|
|
14
19
|
<!-- <iframe id="i_frame" style="width:100%; height:99%" frameBorder="0" allowfullscreen [src]="unassigned_convs_url_sanitized"></iframe> -->
|
|
15
|
-
|
|
16
|
-
<div class="
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
</div>
|
|
22
|
-
</ion-content>
|
|
20
|
+
<div class="loader-spinner-wpr">
|
|
21
|
+
<div id="loader" class="loader">
|
|
22
|
+
<svg class="circular" viewBox="25 25 50 50">
|
|
23
|
+
<circle class="path" cx="50" cy="50" r="20" fill="none" stroke-width="2" stroke-miterlimit="10" />
|
|
24
|
+
</svg>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
</ion-content>
|
|
@@ -1,79 +1,173 @@
|
|
|
1
1
|
.ion-content-black-background {
|
|
2
|
-
--background: #2d323e
|
|
2
|
+
--background: #2d323e;
|
|
3
3
|
}
|
|
4
4
|
|
|
5
5
|
// -------------------------------------------------
|
|
6
6
|
// stretch spinner https://tobiasahlin.com/spinkit/
|
|
7
7
|
// -------------------------------------------------
|
|
8
8
|
.stretchspinner-unassigned-convs {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
9
|
+
// margin: 100px auto;
|
|
10
|
+
width: 50px;
|
|
11
|
+
height: 40px;
|
|
12
|
+
text-align: center;
|
|
13
|
+
font-size: 10px;
|
|
14
|
+
position: absolute;
|
|
15
|
+
margin: auto;
|
|
16
|
+
top: 0;
|
|
17
|
+
left: 0;
|
|
18
|
+
bottom: 0;
|
|
19
|
+
right: 0;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.stretchspinner-unassigned-convs > div {
|
|
23
|
+
background-color: #3ea9f5;
|
|
24
|
+
height: 100%;
|
|
25
|
+
width: 6px;
|
|
26
|
+
display: inline-block;
|
|
27
|
+
|
|
28
|
+
-webkit-animation: sk-stretchdelay 1.2s infinite ease-in-out;
|
|
29
|
+
animation: sk-stretchdelay 1.2s infinite ease-in-out;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.stretchspinner-unassigned-convs .rect2 {
|
|
33
|
+
-webkit-animation-delay: -1.1s;
|
|
34
|
+
animation-delay: -1.1s;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.stretchspinner-unassigned-convs .rect3 {
|
|
38
|
+
-webkit-animation-delay: -1s;
|
|
39
|
+
animation-delay: -1s;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.stretchspinner-unassigned-convs .rect4 {
|
|
43
|
+
-webkit-animation-delay: -0.9s;
|
|
44
|
+
animation-delay: -0.9s;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.stretchspinner-unassigned-convs .rect5 {
|
|
48
|
+
-webkit-animation-delay: -0.8s;
|
|
49
|
+
animation-delay: -0.8s;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
@-webkit-keyframes sk-stretchdelay {
|
|
53
|
+
0%,
|
|
54
|
+
40%,
|
|
55
|
+
100% {
|
|
56
|
+
-webkit-transform: scaleY(0.4);
|
|
57
|
+
}
|
|
58
|
+
20% {
|
|
59
|
+
-webkit-transform: scaleY(1);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
@keyframes sk-stretchdelay {
|
|
64
|
+
0%,
|
|
65
|
+
40%,
|
|
66
|
+
100% {
|
|
67
|
+
transform: scaleY(0.4);
|
|
68
|
+
-webkit-transform: scaleY(0.4);
|
|
69
|
+
}
|
|
70
|
+
20% {
|
|
71
|
+
transform: scaleY(1);
|
|
72
|
+
-webkit-transform: scaleY(1);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// -------------------------------------------------
|
|
77
|
+
// Loader as in dashboard
|
|
78
|
+
// -------------------------------------------------
|
|
79
|
+
.loader {
|
|
80
|
+
margin: 0 auto;
|
|
81
|
+
width: 60px;
|
|
82
|
+
position: absolute;
|
|
83
|
+
display: block;
|
|
84
|
+
left: 0;
|
|
85
|
+
right: 0;
|
|
86
|
+
z-index: 1;
|
|
87
|
+
// @include transform-translate-y(-50%);
|
|
88
|
+
-webkit-transform: translateY(-50%);
|
|
89
|
+
-moz-transform: translateY(-50%);
|
|
90
|
+
-ms-transform: translateY(-50%);
|
|
91
|
+
transform: translateY(-50%);
|
|
92
|
+
text-align: center;
|
|
93
|
+
top: 50%;
|
|
94
|
+
|
|
95
|
+
&:before {
|
|
96
|
+
content: "";
|
|
97
|
+
display: block;
|
|
98
|
+
padding-top: 100%;
|
|
20
99
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.circular {
|
|
103
|
+
animation: rotate 2s linear infinite;
|
|
104
|
+
height: 100%;
|
|
105
|
+
transform-origin: center center;
|
|
106
|
+
width: 100%;
|
|
107
|
+
position: absolute;
|
|
108
|
+
top: 0;
|
|
109
|
+
bottom: 0;
|
|
110
|
+
left: 0;
|
|
111
|
+
right: 0;
|
|
112
|
+
margin: auto;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.path {
|
|
116
|
+
stroke-dasharray: 1, 200;
|
|
117
|
+
stroke-dashoffset: 0;
|
|
118
|
+
animation: dash 1.5s ease-in-out infinite, color 2s ease-in-out infinite;
|
|
119
|
+
stroke-linecap: round;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
@keyframes rotate {
|
|
123
|
+
100% {
|
|
124
|
+
transform: rotate(360deg);
|
|
30
125
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
@keyframes dash {
|
|
129
|
+
0% {
|
|
130
|
+
stroke-dasharray: 1, 200;
|
|
131
|
+
stroke-dashoffset: 0;
|
|
35
132
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
-
|
|
39
|
-
animation-delay: -1s;
|
|
133
|
+
50% {
|
|
134
|
+
stroke-dasharray: 89, 200;
|
|
135
|
+
stroke-dashoffset: -35px;
|
|
40
136
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
-
|
|
44
|
-
animation-delay: -0.9s;
|
|
137
|
+
100% {
|
|
138
|
+
stroke-dasharray: 89, 200;
|
|
139
|
+
stroke-dashoffset: -124px;
|
|
45
140
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
@keyframes color {
|
|
144
|
+
100%,
|
|
145
|
+
0% {
|
|
146
|
+
stroke: #3ea9f5;
|
|
50
147
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
0%,
|
|
54
|
-
40%,
|
|
55
|
-
100% {
|
|
56
|
-
-webkit-transform: scaleY(0.4);
|
|
57
|
-
}
|
|
58
|
-
20% {
|
|
59
|
-
-webkit-transform: scaleY(1);
|
|
60
|
-
}
|
|
148
|
+
50% {
|
|
149
|
+
stroke: #ff5722;
|
|
61
150
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
0%,
|
|
65
|
-
40%,
|
|
66
|
-
100% {
|
|
67
|
-
transform: scaleY(0.4);
|
|
68
|
-
-webkit-transform: scaleY(0.4);
|
|
69
|
-
}
|
|
70
|
-
20% {
|
|
71
|
-
transform: scaleY(1);
|
|
72
|
-
-webkit-transform: scaleY(1);
|
|
73
|
-
}
|
|
151
|
+
100% {
|
|
152
|
+
stroke: #3ea9f5;
|
|
74
153
|
}
|
|
75
|
-
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// -------------------------------------
|
|
157
|
+
// Loader spinner wpr
|
|
158
|
+
// -------------------------------------
|
|
159
|
+
.loader-spinner-wpr {
|
|
160
|
+
text-align: center;
|
|
161
|
+
// font-size: 10px;
|
|
162
|
+
position: absolute;
|
|
163
|
+
margin: auto;
|
|
164
|
+
top: 0;
|
|
165
|
+
left: 0;
|
|
166
|
+
bottom: 0;
|
|
167
|
+
right: 0;
|
|
168
|
+
background: #fff;
|
|
169
|
+
}
|
|
76
170
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
171
|
+
.hide-stretchspinner {
|
|
172
|
+
display: none;
|
|
173
|
+
}
|
|
@@ -14,8 +14,12 @@ import { CustomTranslateService } from 'src/chat21-core/providers/custom-transla
|
|
|
14
14
|
})
|
|
15
15
|
export class UnassignedConversationsPage implements OnInit {
|
|
16
16
|
|
|
17
|
-
@Input()
|
|
18
|
-
|
|
17
|
+
@Input() iframe_URL: any;
|
|
18
|
+
@Input() callerBtn: string;
|
|
19
|
+
// @Input() prjctsxpanel_url: any;
|
|
20
|
+
// @Input() unassigned_convs_url: any;
|
|
21
|
+
|
|
22
|
+
iframe_url_sanitized: any;
|
|
19
23
|
private logger: LoggerService = LoggerInstance.getInstance();
|
|
20
24
|
// has_loaded: boolean;
|
|
21
25
|
ion_content: any;
|
|
@@ -32,7 +36,11 @@ export class UnassignedConversationsPage implements OnInit {
|
|
|
32
36
|
) { }
|
|
33
37
|
|
|
34
38
|
ngOnInit() {
|
|
35
|
-
const keys = [
|
|
39
|
+
const keys = [
|
|
40
|
+
'UnassignedConversations',
|
|
41
|
+
'NewConversations',
|
|
42
|
+
'PIN_A_PROJECT'
|
|
43
|
+
];
|
|
36
44
|
this.translationMap = this.translateService.translateLanguage(keys);
|
|
37
45
|
this.buildIFRAME();
|
|
38
46
|
this.listenToPostMsg();
|
|
@@ -47,14 +55,16 @@ export class UnassignedConversationsPage implements OnInit {
|
|
|
47
55
|
}
|
|
48
56
|
|
|
49
57
|
buildIFRAME() {
|
|
50
|
-
this.logger.log('[UNASSIGNED-CONVS-PAGE] -
|
|
51
|
-
this.
|
|
52
|
-
|
|
58
|
+
this.logger.log('[UNASSIGNED-CONVS-PAGE] - iframe_URL (ngOnInit)', this.iframe_URL);
|
|
59
|
+
this.logger.log('[UNASSIGNED-CONVS-PAGE] - callerBtn (ngOnInit)', this.callerBtn);
|
|
60
|
+
|
|
61
|
+
this.iframe_url_sanitized = this.sanitizer.sanitize(SecurityContext.URL, this.iframe_URL)
|
|
62
|
+
this.logger.log('[UNASSIGNED-CONVS-PAGE] - UNASSIGNED CONVS URL SANITIZED (ngOnInit)', this.iframe_url_sanitized);
|
|
53
63
|
// this.has_loaded = false
|
|
54
64
|
|
|
55
65
|
this.ion_content = document.getElementById("iframe-ion-content");
|
|
56
66
|
this.iframe = document.createElement("iframe");
|
|
57
|
-
this.iframe.src = this.
|
|
67
|
+
this.iframe.src = this.iframe_url_sanitized;
|
|
58
68
|
this.iframe.width = "100%";
|
|
59
69
|
this.iframe.height = "99%";
|
|
60
70
|
this.iframe.id = "unassigned-convs-iframe"
|
|
@@ -63,23 +73,35 @@ export class UnassignedConversationsPage implements OnInit {
|
|
|
63
73
|
this.iframe.style.background = "white";
|
|
64
74
|
this.ion_content.appendChild(this.iframe);
|
|
65
75
|
|
|
66
|
-
|
|
76
|
+
this.getIframeHaLoaded()
|
|
77
|
+
|
|
67
78
|
}
|
|
68
79
|
|
|
69
80
|
getIframeHaLoaded() {
|
|
70
81
|
var self = this;
|
|
71
|
-
var
|
|
72
|
-
this.logger.log('[
|
|
73
|
-
if (
|
|
74
|
-
|
|
75
|
-
self.logger.log("[
|
|
76
|
-
|
|
82
|
+
var iframeWin = document.getElementById('unassigned-convs-iframe') as HTMLIFrameElement;;
|
|
83
|
+
this.logger.log('[UNASSIGNED-CONVS-PAGE] GET iframe ', iframeWin)
|
|
84
|
+
if (iframeWin) {
|
|
85
|
+
iframeWin.addEventListener("load", function () {
|
|
86
|
+
self.logger.log("[UNASSIGNED-CONVS-PAGE] GET - Finish");
|
|
87
|
+
|
|
88
|
+
const isIFrame = (input: HTMLElement | null): input is HTMLIFrameElement =>
|
|
89
|
+
input !== null && input.tagName === 'IFRAME';
|
|
90
|
+
|
|
91
|
+
if (isIFrame(iframeWin) && iframeWin.contentWindow) {
|
|
92
|
+
const msg = { action: "hidewidget", calledBy: 'unassigned-convs' }
|
|
93
|
+
iframeWin.contentWindow.postMessage(msg, '*');
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
let spinnerElem = <HTMLElement>document.querySelector('.loader-spinner-wpr')
|
|
77
98
|
|
|
78
99
|
self.logger.log('[APP-STORE-INSTALL] GET iframeDoc readyState spinnerElem', spinnerElem)
|
|
79
100
|
spinnerElem.classList.add("hide-stretchspinner")
|
|
80
101
|
|
|
81
102
|
});
|
|
82
103
|
}
|
|
104
|
+
|
|
83
105
|
}
|
|
84
106
|
|
|
85
107
|
listenToPostMsg() {
|
|
@@ -94,18 +116,31 @@ export class UnassignedConversationsPage implements OnInit {
|
|
|
94
116
|
this.isProjectsForPanel = false;
|
|
95
117
|
}
|
|
96
118
|
}
|
|
119
|
+
|
|
120
|
+
if (event.data === 'hasChangedProject') {
|
|
121
|
+
this.closemodal()
|
|
122
|
+
}
|
|
97
123
|
});
|
|
98
124
|
}
|
|
99
125
|
|
|
126
|
+
public async closemodal() {
|
|
127
|
+
// const modal = await this.modalController.getTop();
|
|
128
|
+
// modal.dismiss({
|
|
129
|
+
// confirmed: true
|
|
130
|
+
// });
|
|
131
|
+
// await this.modalController.dismiss({ confirmed: true });
|
|
132
|
+
this.onClose()
|
|
133
|
+
|
|
134
|
+
}
|
|
135
|
+
|
|
100
136
|
|
|
101
137
|
async onClose() {
|
|
102
138
|
this.logger.log('[UNASSIGNED-CONVS-PAGE] - onClose MODAL')
|
|
103
139
|
this.logger.log('[UNASSIGNED-CONVS-PAGE] - onClose MODAL isModalOpened ', await this.modalController.getTop())
|
|
104
140
|
const isModalOpened = await this.modalController.getTop();
|
|
105
|
-
|
|
141
|
+
this.logger.log('[UNASSIGNED-CONVS-PAGE] - onClose MODAL isModalOpened ', isModalOpened)
|
|
106
142
|
if (isModalOpened) {
|
|
107
143
|
this.modalController.dismiss({
|
|
108
|
-
|
|
109
144
|
confirmed: true
|
|
110
145
|
});
|
|
111
146
|
} else {
|
|
@@ -29,9 +29,9 @@ export class AppConfigProvider {
|
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
return this.http.get(this.appConfig.remoteConfigUrl)
|
|
32
|
-
.toPromise().then((data: any
|
|
32
|
+
.toPromise().then((data: any) => {
|
|
33
33
|
// console.log('AppConfigService loadAppConfig data: ', data);
|
|
34
|
-
|
|
34
|
+
|
|
35
35
|
const allconfig = data
|
|
36
36
|
// console.log('[APP-CONFIG-SERVICE] - loadAppConfig allconfig: ', allconfig);
|
|
37
37
|
|
|
@@ -59,22 +59,22 @@ export class AppConfigProvider {
|
|
|
59
59
|
|
|
60
60
|
// // console.log('AppConfigService loadAppConfig allconfig !!!! exist - SERVER_BASE_URL protocol is HTTPS - wsUrl', ws_url);
|
|
61
61
|
// } else {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
// console.log('AppConfigService loadAppConfig allconfig !!!! exist - SERVER_BASE_URL !!! IS RELATIVE - window.location ', window.location);
|
|
65
62
|
|
|
66
|
-
// console.log(window.location)
|
|
67
63
|
|
|
68
|
-
|
|
69
|
-
|
|
64
|
+
// console.log('AppConfigService loadAppConfig allconfig !!!! exist - SERVER_BASE_URL !!! IS RELATIVE - window.location ', window.location);
|
|
65
|
+
|
|
66
|
+
// console.log(window.location)
|
|
70
67
|
|
|
71
|
-
|
|
68
|
+
if (window.location.protocol === 'http:') {
|
|
69
|
+
allconfig.wsUrl = 'ws://' + window.location.hostname + ':' + window.location.port + allconfig.wsUrlRel
|
|
72
70
|
|
|
73
|
-
|
|
74
|
-
} else {
|
|
71
|
+
} else if (window.location.protocol === 'https:') {
|
|
75
72
|
|
|
76
|
-
|
|
77
|
-
|
|
73
|
+
allconfig.wsUrl = 'wss://' + window.location.hostname + ':' + window.location.port + allconfig.wsUrlRel
|
|
74
|
+
} else {
|
|
75
|
+
|
|
76
|
+
allconfig.wsUrl = 'ws://' + window.location.hostname + ':' + window.location.port + allconfig.wsUrlRel
|
|
77
|
+
}
|
|
78
78
|
// }
|
|
79
79
|
|
|
80
80
|
} else {
|
|
@@ -87,7 +87,7 @@ export class AppConfigProvider {
|
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
this.appConfig = allconfig;
|
|
90
|
-
|
|
90
|
+
|
|
91
91
|
|
|
92
92
|
}).catch(err => {
|
|
93
93
|
console.error('error loadAppConfig' + err);
|