@ -33,32 +33,6 @@ const KeypadSimplesIP = (function () {
"0" ,
"#" ,
] ;
//Listeners para testes==============================================
document . addEventListener ( "DOMContentLoaded" , function ( ) {
document . getElementById ( "home" ) . addEventListener ( "click" , ( ) => {
stateCurrent . setStateCall ( "home" ) ;
} ) ;
document . getElementById ( "outgoingcall" ) . addEventListener ( "click" , ( ) => {
stateCurrent . setStateCall ( "outgoingcall" ) ;
} ) ;
document . getElementById ( "incall" ) . addEventListener ( "click" , ( ) => {
stateCurrent . setStateCall ( "incall" ) ;
} ) ;
document . getElementById ( "incomingcall" ) . addEventListener ( "click" , ( ) => {
stateCurrent . setStateCall ( "incomingcall" ) ;
} ) ;
document . getElementById ( "online" ) . addEventListener ( "click" , ( ) => {
defineStatusAgent ( "online" ) ;
} ) ;
document . getElementById ( "busy" ) . addEventListener ( "click" , ( ) => {
defineStatusAgent ( "busy" ) ;
} ) ;
document . getElementById ( "away" ) . addEventListener ( "click" , ( ) => {
UASimplesIP . unregister ( ) ;
defineStatusAgent ( "away" ) ;
} ) ;
} ) ;
//==================================================================
//RECEBENDO CHAMADA
let otherNumber = "Indefinido" ;
@ -186,6 +160,29 @@ const KeypadSimplesIP = (function () {
const divDados = document . createElement ( "div" ) ;
divDados . classList . add ( "divDados" ) ;
const divUnregister = document . createElement ( "div" ) ;
divUnregister . classList . add ( "divUnregister" ) ;
const textoUnregister = document . createElement ( "p" ) ;
textoUnregister . textContent = "Apagar ramal" ;
const unregisterBtn = document . createElement ( "button" ) ;
unregisterBtn . id = "unregister" ;
unregisterBtn . addEventListener ( "click" , ( ) => {
inputServidor . querySelector ( "input" ) . value = "" ;
inputPorta . querySelector ( "input" ) . value = "" ;
inputNome . querySelector ( "input" ) . value = "" ;
inputRamal . querySelector ( "input" ) . value = "" ;
inputSenha . querySelector ( "input" ) . value = "" ;
UASimplesIP . config . NOME = "" ;
UASimplesIP . config . PORTA = "" ;
UASimplesIP . config . SENHA = "" ;
UASimplesIP . config . SERVIDOR = "" ;
UASimplesIP . config . RAMAL = "" ;
localStorage . clear ( ) ;
stateCurrent . setStateCall ( "home" ) ;
UASimplesIP . unregister ( ) ;
} ) ;
divUnregister . appendChild ( textoUnregister ) ;
divUnregister . appendChild ( unregisterBtn ) ;
// Função para criar elementos <label> com suas respectivas legendas
const createLabelAndInput = (
labelText ,
@ -249,6 +246,7 @@ const KeypadSimplesIP = (function () {
divDados . appendChild ( inputSenha ) ;
configScreen . appendChild ( titleConfig ) ;
configScreen . appendChild ( divUnregister ) ;
formScreen . appendChild ( divDados ) ;
formScreen . appendChild ( divBtns ) ;
@ -298,11 +296,40 @@ const KeypadSimplesIP = (function () {
UASimplesIP . config . RAMAL = ramal ;
UASimplesIP . config . SENHA = senha ;
if ( servidor === "" || ramal === "" || senha === "" ) {
simplesipCreateAlert (
container ,
"Por favor, insira os dados necessários"
) ;
} else {
stateCurrent . setStateCall ( "home" ) ;
UASimplesIP . start ( ) ;
}
} ) ;
} ;
const simplesipCreateAlert = ( container , message ) => {
const createAlert = document . createElement ( "div" ) ;
createAlert . classList . add ( "alertScreen" ) ;
const iconAlert = document . createElement ( "img" ) ;
iconAlert . src = alertImg ;
const textAlert = document . createElement ( "p" ) ;
textAlert . textContent = message ;
createAlert . appendChild ( iconAlert ) ;
createAlert . appendChild ( textAlert ) ;
const btnAlert = document . createElement ( "button" ) ;
btnAlert . id = "btnAlert" ;
btnAlert . textContent = "OK" ;
btnAlert . addEventListener ( "click" , ( ) => {
createAlert . parentNode . removeChild ( createAlert ) ;
} ) ;
createAlert . appendChild ( btnAlert ) ;
container . appendChild ( createAlert ) ;
} ;
function handleAlertMessage ( ) { }
const simplesipCreateInCall = ( container , themeMode ) => {
const simplesipInCall = document . createElement ( "div" ) ;
simplesipInCall . classList . add ( "simplesipInCall" ) ;
@ -554,6 +581,11 @@ const KeypadSimplesIP = (function () {
container . appendChild ( simplesipHead ) ;
} ;
// Ouvindo o evento 'statusChange' emitido pelo JSSIP
UASimplesIP . simplesipEvento . on ( "statusChange" , ( newStatus ) => {
defineStatusAgent ( newStatus ) ;
} ) ;
const defineStatusAgent = ( status ) => {
const circleElements = document . querySelectorAll ( ".circle" ) ;
@ -561,29 +593,30 @@ const KeypadSimplesIP = (function () {
if ( circleElements && circleElements . length > 0 ) {
// Remove qualquer uma dessas classes antes de atualizar
circleElements . forEach ( ( circle ) =>
circle . classList . remove ( "online" , "away" , "busy" )
circle . classList . remove ( "online" , "away" , "busy" , "unknown" )
) ;
// Atualiza conforme o parâmetro passado
switch ( status ) {
case "online" :
// Verifica se o primeiro elemento de circleElements não é undefined
case "registered" :
if ( circleElements [ 0 ] ) {
circleElements [ 0 ] . classList . add ( "online" ) ;
}
break ;
case "away " :
case "registrationFailed " :
if ( circleElements [ 0 ] ) {
circleElements [ 0 ] . classList . add ( "away" ) ;
circleElements [ 0 ] . classList . add ( "busy" ) ;
document . getElementById ( "agentName" ) . textContent =
"Falha ao registrar" ;
}
break ;
case "busy " :
case "unregistered " :
if ( circleElements [ 0 ] ) {
circleElements [ 0 ] . classList . add ( "busy " ) ;
circleElements [ 0 ] . classList . add ( "unknown " ) ;
}
break ;
default :
// Lidar com o caso padrão
circleElements [ 0 ] . classList . add ( "unknown" ) ;
break ;
}
}
@ -593,6 +626,7 @@ const KeypadSimplesIP = (function () {
const agentLocalDisplay = document . createElement ( "div" ) ;
agentLocalDisplay . id = "agentLocalDisplay" ;
const statusAgent = document . createElement ( "div" ) ;
statusAgent . classList . add ( "statusAgent" ) ;
const nameAgent = document . createElement ( "div" ) ;
nameAgent . id = "agentName" ;
@ -602,11 +636,10 @@ const KeypadSimplesIP = (function () {
//add o circulo de status
statusAgent . appendChild ( defaultCircle ) ;
agentLocalDisplay . appendChild ( statusAgent ) ;
//add name agent
nameAgent . textContent = UASimplesIP . config . NOME
? UASimplesIP . config . NOME
: "Indefinido " ;
: "Agente " ;
agentLocalDisplay . appendChild ( nameAgent ) ;
header . appendChild ( agentLocalDisplay ) ;
} ;
@ -879,6 +912,9 @@ const KeypadSimplesIP = (function () {
configuration . SENHA = localStorage . getItem ( "senha" ) || "" ;
} ;
const alertImg =
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAACB0lEQVR4nO2Yz0sCQRiG59LMJQiiQzf7aWVZYkHXDnkpLIKKICSCCPppJVgRUUIQBEFEaBAEQRCBdAw6hLMd/Au6BHbrGv4BCV+4ymim7uzq2kjzwAtz/F5m99mPRUgikUgkEhMASlxA8buaCBlG1QREUT1Q8gkKgXTiEKltQNUCUBzKGj4dHETVALxgGyjk63cBkgBaY0eiAxQ/5Rk+FYqfkcgAxWMFh8+UcCMRgVeEgZI3zQIKjsEjIkg0gGKf9vDsFraQ4NoEjYilVcirTc1HSQytFtLmutsJnqFBNRvjThBWq1BAm74JByvgn3SIqVUoos3d6T5WYG+mVzytgoY2D2btrEDAYxdPq6ChzaO5HlbgeL5bLK0ChzZPFmyswOlil1haBQ5tni11sgLnKx3iaBUKb5s/ElyzsgKXXivPtyFREa0W3TazcrXZzgpc+9r4Pm7UZK1ybZvp3PhbWYHbnRa+AoqJWuXfNlO522tmBe73m/gLKCZpVde2qRAIH1pYgYeARUcBUn6tGtg2S028rFo1tm2WGhysqDZz8xGug5DXqio0eTZQIlEWrfJqMzfbU5llLnk2dAu0RK3q0WZulkcGWIHk2fCjRA1qVa82cxO9aITV0X41yXMJ70LMkFb1atPUUANaVX/K/vXgSuYW/mMB4lKfPwGGh2r7PS+RSCQSVCm+AQ0vLbmgWFIkAAAAAElFTkSuQmCC" ;
const engrenagem =
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAACXBIWXMAAAsTAAALEwEAmpwYAAADfUlEQVR4nO2aS2sUQRDHRyKKbwSjBx8IChpFjA804lG86F09GvQDROItGpCAokE/gZ68bRCXGGb6/+9ZxoOueIhePYhiFoWNJz0kMY9dKZ3gMO7Ozsvd2ZiCgoXt6a5fd1d3TdUYxrL8B0LyLskFklWvApgj2W+0i5As+SE8MG+MdhDTNDcCqNQDITnjOM5KI+tCsicA4pcqpfa3zECt9S4A10zT7AxqR7K3EQjJC0F9mKbZSbJPKbUzVQjLsnaT/OgaUdZan6/XFsBwIxAAt+o9T/IMgM9u25JSam8qENKR33ldH7hvmuZqb9uxsbHNJF+EWJFCPp/f4H02l8utkkmo4V8ThUJhT+oQPn1r2/YB1y+ekvwRAmJxMqZIPtZaH7Isax/J8YD28WFM09zRAGLRoNmwxtd5vgJgOkTbCdu2t0cGCem0TVUAlyODjI6OriX5LkMQ7x3HWW/EEQDHkm6dlCDmAJw0kgjJwQyA3DCSioQTAIotBHmZy+U6jDREjuFWbDEAU4nvEK9orU+1aDUWLMs6mBoIyWcRDSiTHADQDWCdqNb6iOx1978ofT1MBQLAVveFKOzAOX/44RX5j+RIhP6+FYvFNbHeJ9yQ46rEUyRfR4GoVqsrGo0hbaLAAHhO8p5c0kqpE0ETJTN/R8KABPu5HDhA7QmbTHAQfBKb/+qY5HxCxxwIC+GZvJsJx5yv1WnQ62lDVUodjgoiB0CSMQFUUgeJEwe5jp8tkHwE//D5SbZAAHRnZWvNNjuwSxqQApit1el1SZ5J3qkZx6/WehOArzHHmnFt7Q+MduU9XCl1keTtkMmERR0JeyECeBJh5m2SQ5JGItkVK8EXI0QZESdusBKhIUh+jxWipBQ0TsplZ1nWUTmWReW3+ESM7fTIaPcwHkAl1TBefCbi9koLZFpyXqlASDZREnGtWBH+1nHJQiYGIfmghRBVd2WGE0Eopc4mvfHT8hWS52JBOI6zheSXVkPwj5Zt294WGURqIRkwvurTvliFnTBJ7CgZ+IRJ7JLYZPyLsgKAV26bHve2jlVWkNxVgyRgKXHBp06hR+6UQX/MI4WeMFlJSSbUKPR0SARdIwpPr2rlK719AHA64XE9FPD8cU8VID0IX+GnV5JtQe0AXAmxIpdClDR6YxV2mhyXdRlZF3OpfDCwZD7h8GQt2/+jmmUx4stP5T+W3JrYH80AAAAASUVORK5CYII=" ;