Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
N
nobu-web-v2
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ari_darmawan
nobu-web-v2
Commits
a3a525fe
Commit
a3a525fe
authored
Jan 19, 2022
by
ari_darmawan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
init project live chat
parent
da5a4a30
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
116 additions
and
10 deletions
+116
-10
admin-routing.module.ts
src/app/admin/admin-routing.module.ts
+5
-0
admin-ticket-detail.component.html
...et/admin-ticket-detail/admin-ticket-detail.component.html
+8
-3
admin-ticket-detail.component.ts
...cket/admin-ticket-detail/admin-ticket-detail.component.ts
+20
-5
admin.module.ts
src/app/admin/admin.module.ts
+2
-0
live-chat.component.css
src/app/admin/live-chat/live-chat.component.css
+0
-0
live-chat.component.html
src/app/admin/live-chat/live-chat.component.html
+18
-0
live-chat.component.spec.ts
src/app/admin/live-chat/live-chat.component.spec.ts
+25
-0
live-chat.component.ts
src/app/admin/live-chat/live-chat.component.ts
+35
-0
side-bar-menu.component.ts
src/app/shared/side-bar-menu/side-bar-menu.component.ts
+3
-2
No files found.
src/app/admin/admin-routing.module.ts
View file @
a3a525fe
...
...
@@ -9,6 +9,7 @@ import { AdminTicketOnpicComponent } from './admin-ticket-onpic/admin-ticket-onp
import
{
AdminTicketOnpicDetailComponent
}
from
'./admin-ticket-onpic/admin-ticket-onpic-detail/admin-ticket-onpic-detail.component'
;
import
{
AdminMacroComponent
}
from
'./admin-macro/admin-macro.component'
;
import
{
AdminLivedashboardComponent
}
from
'./admin-livedashboard/admin-livedashboard.component'
;
import
{
LiveChatComponent
}
from
'./live-chat/live-chat.component'
;
const
routes
:
Routes
=
[
{
...
...
@@ -43,6 +44,10 @@ const routes: Routes = [
path
:
'macro'
,
component
:
AdminMacroComponent
,
},
{
path
:
'live-chat'
,
component
:
LiveChatComponent
,
},
];
...
...
src/app/admin/admin-ticket/admin-ticket-detail/admin-ticket-detail.component.html
View file @
a3a525fe
...
...
@@ -468,9 +468,14 @@
<div
class=
"card-body"
style=
"max-height: 610px;overflow-y: scroll;"
>
<p
*
ngIf=
"InternalNote.length == 0"
class=
"text-center"
><b>
No Data Found
</b></p>
<!-- Unescape -->
<ng-container
*
ngFor=
"let data of InternalNote; let i = index"
>
<p><b>
{{data.user_login}}
</b>
at
<b>
{{data.date | date: 'dd MMMM yyyy HH:mm'}}
</b>
said :
</p>
<div
[
innerHTML
]="
data
.
message_html
|
safeHtml
"
></div>
<ng-container
*
ngFor=
"let data of InternalNoteChat; let i = index"
>
<p><b>
{{data.channel}}
</b>
<b>
{{data.updatedAt | date: 'dd MMMM yyyy HH:mm'}}
</b>
at {{data.direction == 'INBOUND' ? data.from : 'Agent'}} :
</p>
<div
[
innerHTML
]="
data
.
content
.
text
?
data
.
content
.
text
:
data
.
content
.
url
|
safeHtml
"
></div>
<hr>
</ng-container>
<ng-container
*
ngFor=
"let item of InternalNote; let i = index"
>
<p><b>
{{item.user_login}}
</b>
<b>
{{item.date | date: 'dd MMMM yyyy HH:mm'}}
</b>
at Said :
</p>
<div
[
innerHTML
]="
item
.
message_html
|
safeHtml
"
></div>
<hr>
</ng-container>
</div>
...
...
src/app/admin/admin-ticket/admin-ticket-detail/admin-ticket-detail.component.ts
View file @
a3a525fe
...
...
@@ -113,7 +113,8 @@ export class AdminTicketDetailComponent implements OnInit {
public
TicketTeamID
=
null
public
TicketSolution
=
null
public
PublicConversation
=
[]
public
InternalNote
=
[]
public
InternalNoteChat
:
any
[]
=
[];
public
InternalNote
:
any
[]
=
[]
public
Description
:
string
=
""
public
CsCabang
:
string
=
""
public
SupervisorBOH
:
string
=
""
...
...
@@ -797,7 +798,7 @@ export class AdminTicketDetailComponent implements OnInit {
.
subscribe
((
result
:
any
)
=>
{
if
(
result
!=
null
){
//console.log(JSON.stringify(result)
)
console
.
table
(
result
)
if
(
result
.
values
!=
null
){
...
...
@@ -811,8 +812,22 @@ export class AdminTicketDetailComponent implements OnInit {
this
.
IsFormComplaintmentDisabled
=
true
var
ObjKey
=
Object
.
keys
(
result
.
values
.
objects
)
var
data
=
result
.
values
.
objects
[
ObjKey
[
0
]]
var
data
=
result
.
values
.
objects
[
ObjKey
[
0
]]
this
.
InternalNote
=
[]
for
(
let
i
=
0
;
i
<
data
.
fields
.
private_log
.
entries
.
length
;
i
++
)
{
if
(
data
.
fields
.
private_log
.
entries
[
i
].
user_id
!=
"1"
)
{
this
.
InternalNote
.
push
(
data
.
fields
.
private_log
.
entries
[
i
]);
}
else
{
let
json
=
data
.
fields
.
private_log
.
entries
.
length
>
0
?
JSON
.
parse
(
data
.
fields
.
private_log
.
entries
[
0
].
message
)
:
null
this
.
InternalNoteChat
=
json
;
for
(
let
i
=
0
;
i
<
this
.
InternalNoteChat
.
length
;
i
++
)
{
if
(
!
this
.
InternalNoteChat
[
i
].
content
.
text
&&
this
.
InternalNoteChat
[
i
].
contentType
==
"DOCUMENT"
)
{
this
.
InternalNoteChat
[
i
].
content
.
url
=
`<a style="color: blue; font-style: italic;text-decoration: underline;" href="
${
this
.
InternalNoteChat
[
i
].
content
.
url
}
">download_file</>`
;
}
}
}
}
console
.
log
(
this
.
InternalNoteChat
)
this
.
CallerID
=
data
.
fields
.
caller_id
this
.
TickectContactID
=
data
.
fields
.
ticket_contact_id
this
.
RefNumber
=
data
.
fields
.
ref
...
...
@@ -824,7 +839,7 @@ export class AdminTicketDetailComponent implements OnInit {
this
.
TicketTeamID
=
data
.
fields
.
team_id
this
.
TicketSolution
=
data
.
fields
.
solution
this
.
PublicConversation
=
data
.
fields
.
public_log
.
entries
.
reverse
()
this
.
InternalNote
=
data
.
fields
.
private_log
.
entries
.
reverse
()
//
this.InternalNote = data.fields.private_log.entries.reverse()
this
.
Description
=
data
.
fields
.
description
this
.
CsCabang
=
data
.
fields
.
cscabang
this
.
SupervisorBOH
=
data
.
fields
.
supervisor
...
...
src/app/admin/admin.module.ts
View file @
a3a525fe
...
...
@@ -23,6 +23,7 @@ import { AdminLdTicketbyservicefamilyComponent } from './admin-livedashboard/adm
import
{
AdminLdTicketbystatusComponent
}
from
'./admin-livedashboard/admin-ld-ticketbystatus/admin-ld-ticketbystatus.component'
;
import
{
AdminLdTop10ticketbycategoryComponent
}
from
'./admin-livedashboard/admin-ld-top10ticketbycategory/admin-ld-top10ticketbycategory.component'
;
import
{
AdminLdTop10usercreateticketComponent
}
from
'./admin-livedashboard/admin-ld-top10usercreateticket/admin-ld-top10usercreateticket.component'
;
import
{
LiveChatComponent
}
from
'./live-chat/live-chat.component'
;
/*import { PipeSha256 } from '../pipe/pipe-global.pipe';
import { PipeEncryptoJs } from '../pipe/pipe-global.pipe';
import { PipeDencryptoJs } from '../pipe/pipe-global.pipe';
...
...
@@ -49,6 +50,7 @@ import { PipeDencryptoJs } from '../pipe/pipe-global.pipe';
AdminLdTicketbystatusComponent
,
AdminLdTop10ticketbycategoryComponent
,
AdminLdTop10usercreateticketComponent
,
LiveChatComponent
,
],
imports
:
[
PipeglobalModule
,
...
...
src/app/admin/live-chat/live-chat.component.css
0 → 100644
View file @
a3a525fe
src/app/admin/live-chat/live-chat.component.html
0 → 100644
View file @
a3a525fe
<div
class=
"container"
>
<div
class=
"row"
>
<div
class=
"col-12"
>
<iframe
[
src
]="
URLIFrame
|
SrcSafe
"
[
ngClass
]="{'
d-none
'
:
!
isIframeLoad
,
'
d-block
'
:
isIframeLoad
}"
frameborder=
"0"
style=
"border-radius: 10px;"
height=
"600px"
width=
"100%"
(
load
)="
Iframe_onLoad
()"
#
Iframe
class=
"scroller"
></iframe>
<p
*
ngIf=
"!isIframeLoad"
class=
"text-center"
>
PLEASE WAIT, FRAME IS LOADING
</p>
</div>
</div>
</div>
src/app/admin/live-chat/live-chat.component.spec.ts
0 → 100644
View file @
a3a525fe
import
{
async
,
ComponentFixture
,
TestBed
}
from
'@angular/core/testing'
;
import
{
LiveChatComponent
}
from
'./live-chat.component'
;
describe
(
'LiveChatComponent'
,
()
=>
{
let
component
:
LiveChatComponent
;
let
fixture
:
ComponentFixture
<
LiveChatComponent
>
;
beforeEach
(
async
(()
=>
{
TestBed
.
configureTestingModule
({
declarations
:
[
LiveChatComponent
]
})
.
compileComponents
();
}));
beforeEach
(()
=>
{
fixture
=
TestBed
.
createComponent
(
LiveChatComponent
);
component
=
fixture
.
componentInstance
;
fixture
.
detectChanges
();
});
it
(
'should create'
,
()
=>
{
expect
(
component
).
toBeTruthy
();
});
});
src/app/admin/live-chat/live-chat.component.ts
0 → 100644
View file @
a3a525fe
import
{
Component
,
OnInit
}
from
'@angular/core'
;
import
{
Router
,
UrlSerializer
}
from
'@angular/router'
;
import
{
ServiceProxyWeb
}
from
'../../../shared/serviceproxy/service-proxy.service'
;
@
Component
({
selector
:
'app-live-chat'
,
templateUrl
:
'./live-chat.component.html'
,
styleUrls
:
[
'./live-chat.component.css'
]
})
export
class
LiveChatComponent
implements
OnInit
{
public
URLIFrame
=
""
;
public
isIframeLoad
=
false
public
reloadCount
=
1
;
constructor
(
private
route
:
Router
,
private
serializer
:
UrlSerializer
,
private
global
:
ServiceProxyWeb
)
{
}
ngOnInit
()
{
this
.
isIframeLoad
=
false
;
this
.
reloadCount
=
1
;
const
item
=
this
.
global
.
getUserInformation
.
values
;
this
.
URLIFrame
=
`http://localhost:4200/chat?access_token=
${
item
.
access_token
}
&team_id=
${
item
.
team_id
}
&user_id=
${
item
.
user_id
}
&login_id=
${
item
.
login_id
}
&org_id=
${
item
.
org_id
}
&email=
${
item
.
email
}
&contact_name=
${
item
.
contact_name
}
`
;
}
Iframe_onLoad
()
{
this
.
isIframeLoad
=
true
;
}
}
src/app/shared/side-bar-menu/side-bar-menu.component.ts
View file @
a3a525fe
...
...
@@ -124,7 +124,8 @@ export class SideBarMenuComponent implements OnInit {
AratakaConfig
.
CloseSideBarFromItem
()
}
liveChat
(){
let
params
=
`scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,width=900,height=1000`
;
window
.
open
(
this
.
urlLiveChat
,
'live-chat'
,
params
)
// let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,width=900,height=1000`;
// window.open(this.urlLiveChat,'live-chat', params)
this
.
router
.
navigate
([
'/admin/live-chat'
])
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment