painel / static /operacaoPainel.html
Atualli's picture
Upload 85 files
bce4323
raw
history blame
72.8 kB
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
<meta charset="utf-8" />
<title>MOSAICO WEB</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<style>
* {
box-sizing: border-box;
}
body {
margin: 0;
font-family: Arial;
background: #000000;
}
#logo {
width: 100%;
top: 10px;
z-index: 1;
}
.title_print, .reporting_period {
text-align: center;
}
.header {
text-align: center;
padding: 0.05%;
background: #053067;
color: white;
}
.buttondiv {
float: left;
overflow: auto;
padding: 4px 10px;
}
.buttonfila {
font-size: 14px;
border-radius: 25px;
border: 2px solid black;
outline: none;
color: white;
padding: 11px 16px;
background-color: #000000;
font-family: inherit;
margin: 0;
}
.buttonwork {
font-size: 14px;
border-radius: 25px;
// border: none;
border: 2px solid black;
outline: none;
color: white;
padding: 11px 16px;
background-color: #339BFF;
font-family: inherit;
margin: 0;
}
.tudo {
// position: absolute;
// display: none;
// flex-wrap: wrap;
// background: #000000;
// height: 100%;
// width: 100%;
}
/* Bottom left text */
.bottom-left {
position: absolute;
bottom: 8px;
left: 16px;
}
/* Top left text */
.top-left {
position: absolute;
top: 18px;
left: 16px;
}
/* Top right text */
.top-right {
position: absolute;
top: 18px;
right: 16px;
}
/* Bottom right text */
.bottom-right {
position: absolute;
bottom: 8px;
right: 16px;
}
/* Centered text */
.centered {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.row {
// position: fixed;
display: none;
flex-wrap: wrap;
padding: 6.3vh 0;
background: #000000;
width:100%;
height:92%;
}
.rowblock {
display: none;
flex-wrap: wrap;
padding: 100% 0;
background-image: url('getresource?r=accessdenied.png');
height: 100%;
}
/* Create four equal columns that sits next to each other */
.column7x {
flex: 14.28%;
max-width: 14.28%;
padding: 0 2px;
}
.column7x img {
margin-top: 2px;
vertical-align: middle;
}
.column7x:active canvas {
position: fixed;
top: 50%;
left: 0;
width: 100%;
height: 100%;
-webkit-transform: translateY(-50%);
transform: translateY(-50%);
cursor: zoom-out;
}
.column6x {
flex: 16.6%;
max-width: 16.6%;
padding: 0 2px;
}
.column6x img {
margin-top: 2px;
vertical-align: middle;
}
.column6x:active canvas {
position: fixed;
top: 50%;
left: 0;
width: 100%;
height: 100%;
-webkit-transform: translateY(-50%);
transform: translateY(-50%);
cursor: zoom-out;
}
.column5x {
flex: 20%;
max-width: 20%;
padding: 0 2px;
}
.column5x img {
margin-top: 2px;
vertical-align: middle;
}
.column5x:active canvas {
position: fixed;
top: 50%;
left: 0;
width: 100%;
height: 100%;
-webkit-transform: translateY(-50%);
transform: translateY(-50%);
cursor: zoom-out;
}
.column3x {
flex: 33.33%;
max-width: 33.33%;
padding: 0 2px;
}
.column3x img {
margin-top: 2px;
vertical-align: middle;
}
.column3x:active canvas {
position: fixed;
top: 50%;
left: 0;
width: 100%;
height: 100%;
-webkit-transform: translateY(-50%);
transform: translateY(-50%);
cursor: zoom-out;
}
.column {
flex: 25%;
max-width: 25%;
padding: 0 2px;
}
.column img {
margin-top: 2px;
vertical-align: middle;
}
.column:hover img {
/* position: absolute;
// bottom: 0%;
left: 0;
right: 0;
height: 50%;
width: 50%;
background: rgba(0, 0, 0, 0.5);
padding: 5px 10px;
transition: all 1s;
color: white; */
}
.column:active canvas {
position: fixed;
top: 50%;
left: 0;
width: 100%;
height: 100%;
-webkit-transform: translateY(-50%);
transform: translateY(-50%);
cursor: zoom-out;
}
/* Responsive layout - makes a two column-layout instead of four columns */
@media screen and (max-width: 800px) {
.column {
flex: 50%;
max-width: 50%;
}
}
/* Responsive layout - makes the two columns stack on top of each other instead of next to each other */
@media screen and (max-width: 600px) {
.column {
flex: 100%;
max-width: 100%;
}
}
#popupbox {
margin: 0;
margin-left: 40%;
margin-right: 40%;
margin-top: 50px;
padding-top: 10px;
width: 20%;
height: 150px;
position: fixed;
background: #FBFBF0;
border: solid #000000 2px;
z-index: 9;
font-family: arial;
visibility: hidden;
}
#ocorrencia {
margin: 0;
margin-left: 25%;
margin-right: 25%;
margin-top: 12%;
padding-top: 10px;
width: 50%;
height: 50%;
position: fixed;
background: white;
border: solid black 2px;
z-index: 9;
font-family: arial;
visibility: hidden;
}
.sidenav {
height: 100%;
width: 0;
position: fixed;
z-index: 1;
top: 0;
left: 0;
background-color: #111;
overflow-x: hidden;
transition: 0.5s;
padding-top: 60px;
}
.sidenav a {
padding: 8px 8px 8px 32px;
text-decoration: none;
font-size: 25px;
color: #818181;
display: block;
transition: 0.3s;
}
.sidenav a:hover {
color: #f1f1f1;
}
.sidenav .closebtn {
position: absolute;
top: 0;
right: 25px;
font-size: 36px;
margin-left: 50px;
}
@media screen and (max-height: 450px) {
.sidenav {padding-top: 15px;}
.sidenav a {font-size: 18px;}
}
.topnav {
position: fixed;
top: 0;
width: 100%;
height:6.3vh;
overflow: hidden;
background-color: #fefefe;
}
.topnav a {
float: left;
display: block;
color: #000000;
text-align: center;
padding: 14px 16px;
text-decoration: none;
font-size: 17px;
}
.active {
background-color: #4CAF50;
color: white;
}
.topnav .icon {
display: none;
}
.dropdown {
float: left;
overflow: auto;
padding: 4px 10px;
}
.dropdown .dropbtn {
font-size: 14px;
border-radius: 25px;
border: 2px solid black;
outline: none;
color: black;
padding: 11px 16px;
background-color: #fefefe;
font-family: inherit;
margin: 0;
}
.dropdown-content {
display: none;
position: fixed;
background-color: #f9f9f9;
min-width: 160px;
overflow: auto;
max-height: 90%;/* you can change as you need it */
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
z-index: 1;
}
.dropdown-content a {
float: none;
color: black;
padding: 12px 16px;
text-decoration: none;
display: block;
text-align: left;
}
.topnav a:hover, .dropdown:hover .dropbtn {
background-color: #555;
color: white;
}
.dropdown-content a:hover {
background-color: #ddd;
color: black;
}
.dropdown:hover .dropdown-content {
display: block;
}
@media screen and (max-width: 1300px) {
.topnav a:not(:first-child), .dropdown .dropbtn {
display: none;
}
.topnav a.icon {
float: right;
display: block;
}
}
@media screen and (max-width: 1300px) {
.topnav.responsive {
position: relative;
height:1%;
}
.topnav.responsive .icon {
position: absolute;
right: 0;
top: 0;
}
.topnav.responsive a {
float: none;
display: block;
text-align: left;
}
.topnav.responsive .dropdown {
float: none;
}
.topnav.responsive .dropdown-content {
position: relative;
}
.topnav.responsive .dropdown .dropbtn {
display: block;
width: 100%;
text-align: left;
}
}
/*
novo popup
*/
/* Button used to open the contact form - fixed at the bottom of the page */
.open-button {
background-color: #555;
color: white;
padding: 16px 20px;
border: none;
cursor: pointer;
opacity: 0.8;
position: fixed;
bottom: 23px;
right: 28px;
width: 280px;
}
/* The popup form - hidden by default */
.form-popup {
display: none;
position: fixed;
bottom: 0;
right: 15px;
border: 3px solid #f1f1f1;
z-index: 9;
}
/* Add styles to the form container */
.form-container {
max-width: 300px;
padding: 10px;
background-color: white;
}
/* Full-width input fields */
.form-container input[type=text], .form-container input[type=password] {
width: 100%;
padding: 15px;
margin: 5px 0 22px 0;
border: none;
background: #f1f1f1;
}
/* When the inputs get focus, do something */
.form-container input[type=text]:focus, .form-container input[type=password]:focus {
background-color: #ddd;
outline: none;
}
/* Set a style for the submit/login button */
.form-container .btn {
background-color: #4CAF50;
color: white;
padding: 16px 20px;
border: none;
cursor: pointer;
width: 100%;
margin-bottom: 10px;
opacity: 0.8;
}
/* Add a red background color to the cancel button */
.form-container .cancel {
background-color: red;
}
/* Add some hover effects to buttons */
.form-container .btn:hover, .open-button:hover {
opacity: 1;
}
/* POPUP central */
/* Full-width input fields */
input[type=text], input[type=password] {
width: 100%;
padding: 12px 20px;
margin: 8px 0;
display: inline-block;
border: 1px solid #ccc;
box-sizing: border-box;
}
/* Set a style for all buttons */
.button {
background-color: #4CAF50;
color: white;
padding: 14px 20px;
margin: 8px 0;
border: none;
cursor: pointer;
width: 100%;
text-align: center;
}
button:hover {
opacity: 0.8;
}
/* Extra styles for the cancel button */
.cancelbtn {
width: 100%;
padding: 10px 18px;
background-color: #f44336;
text-align: center;
}
/* Center the image and position the close button */
.imgcontainer {
text-align: center;
margin: 24px 0 12px 0;
position: relative;
border: 3px solid #fff;
background: #f1f1f1;
width: 100%;
// min-height: 450px;
}
.imgchild {
width: 50%;
height: 26vw;
float: left;
padding: 0px;
margin: 0 0;
border: 1px solid #000;
}
img.avatar {
width: 40%;
border-radius: 50%;
}
.container {
padding: 16px;
}
.select {
padding: 16px;
width: 40%;
}
.select_audio {
width: 40%;
}
options {
padding: 16px;
width: 40%;
}
span.psw {
float: right;
padding-top: 16px;
}
/* The Modal (background) */
.modal {
display: none; /* Hidden by default */
position: fixed; /* Stay in place */
z-index: 1; /* Sit on top */
left: 0;
top: 0;
width: 100%; /* Full width */
height: 100%; /* Full height */
overflow: auto; /* Enable scroll if needed */
background-color: rgb(0,0,0); /* Fallback color */
background-color: rgba(0,0,0,0.0); /* Black w/ opacity */
padding-top: 60px;
}
/* Hide scrollbar for Chrome, Safari and Opera */
.modal::-webkit-scrollbar {
display: none;
}
/* Hide scrollbar for IE, Edge and Firefox */
.modal {
-ms-overflow-style: none; /* IE and Edge */
scrollbar-width: none; /* Firefox */
}
/* Modal Content/Box */
.modal-content {
background-color: #fefefe;
margin: 5% auto 15% auto; /* 5% from the top, 15% from the bottom and centered */
border: 1px solid #888;
width: 60%; /* Could be more or less, depending on screen size */
}
/* The Close Button (x) */
.close {
position: absolute;
right: 25px;
top: 0;
color: #000;
font-size: 35px;
font-weight: bold;
}
.close:hover,
.close:focus {
color: red;
cursor: pointer;
}
/* Add Zoom Animation */
.animate {
-webkit-animation: animatezoom 0.6s;
animation: animatezoom 0.6s
}
@-webkit-keyframes animatezoom {
from {
-webkit-transform: scale(0)
}
to {
-webkit-transform: scale(1)
}
}
@keyframes animatezoom {
from {
transform: scale(0)
}
to {
transform: scale(1)
}
}
/* Change styles for span and cancel button on extra small screens */
@media screen and (max-width: 300px) {
span.psw {
display: block;
float: none;
}
.cancelbtn {
width: 100%;
}
}
</style>
</head>
<body onload="iniciaPagina();">
<title>Hello</title>
<!--Add buttons to initiate auth sequence and sign out
<button id="authorize_button" style="display: none;">Authorize</button>
<button id="signout_button" style="display: none;">Sign Out</button>
-->
<script type="text/javascript">
// Client ID and API key from the Developer Console
var CLIENT_ID = '346985849712-4diehepugvj39n4e3ednr25qieekkmen.apps.googleusercontent.com'; //'392646183283-5f9h5jgsll9hfcb46mlfplu57vtmhaa0.apps.googleusercontent.com';
var API_KEY = 'AIzaSyDGpegS1TV-7moMp5dKz-BEtt6bA864h_4';//'AIzaSyASaqrMk2sPLTnXsW8fjCcTvAsagc28DhA';
// Array of API discovery doc URLs for APIs used by the quickstart
var DISCOVERY_DOCS = ["https://sheets.googleapis.com/$discovery/rest?version=v4"];
// Authorization scopes required by the API; multiple scopes can be
// included, separated by spaces.
var SCOPES = "https://www.googleapis.com/auth/spreadsheets.readonly";
// var authorizeButton = document.getElementById('authorize_button');
//var signoutButton = document.getElementById('signout_button');
/**
* On load, called to load the auth2 library and API client library.
*/
function storeLogin(name)
{
setCookieh("LOGIN",name,6/24); //6 horas
}
function loadLogin()
{
var name = getCookieh("LOGIN");
return name;
}
function setCookieh(name,value,days) {
/* var expires = "";
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days*24*60*60*1000));
expires = "; expires=" + date.toUTCString();
}
document.cookie = name + "=" + (value || "") + expires + "; path=/";*/
window.localStorage.setItem(name, value);
}
function getCookieh(name) {
/* var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null; */
return window.localStorage.getItem(name);
}
function sleeph(time) {
return new Promise((resolve) => setTimeout(resolve, time));
}
function handleClientLoad() {
// document.getElementById("myLogin").innerHTML = "AGUARDE...";
sleeph(100).then(() => {
document.getElementById("conteudo").style.display = "flex";
var name=loadLogin();
if((!name) || (name=="LOGIN"))
{
waitLogin();
}
else
{
waitLogout(name);
}
});
}
function SignOUT()
{
var name = gapi.auth2.getAuthInstance().currentUser.get();
if(name.getBasicProfile())
{
var logname = name.getBasicProfile().getName() + " ( " + name.getBasicProfile().getEmail() + " )";
logout(logname);
}
else
{
var logname = loadLogin();
logout(logname);
}
gapi.auth2.getAuthInstance().signOut();
gapi.auth2.getAuthInstance().disconnect();
}
/**
* Initializes the API client library and sets up sign-in state
* listeners.
*/
function initClient() {
gapi.client.init({
apiKey: API_KEY,
clientId: CLIENT_ID,
discoveryDocs: DISCOVERY_DOCS,
scope: SCOPES
}).then(function () {
// Listen for sign-in state changes.
gapi.auth2.getAuthInstance().isSignedIn.listen(updateSigninStatus);
// Handle the initial sign-in state.
updateSigninStatus(gapi.auth2.getAuthInstance().isSignedIn.get());
//authorizeButton.onclick = handleAuthClick;
// signoutButton.onclick = handleSignoutClick;
}, function(error) {
waitLogin();
alert(error.message);
});
}
function initClientSigIn() {
gapi.client.init({
apiKey: API_KEY,
clientId: CLIENT_ID,
discoveryDocs: DISCOVERY_DOCS,
scope: SCOPES
}).then(function () {
// Listen for sign-in state changes.
gapi.auth2.getAuthInstance().isSignedIn.listen(updateSigninStatus);
// Handle the initial sign-in state.
updateSigninStatus(gapi.auth2.getAuthInstance().isSignedIn.get());
gapi.auth2.getAuthInstance().signIn();
}, function(error) {
waitLogin();
alert(error.message);
});
}
function initClientSigOut() {
gapi.client.init({
apiKey: API_KEY,
clientId: CLIENT_ID,
discoveryDocs: DISCOVERY_DOCS,
scope: SCOPES
}).then(function () {
// Listen for sign-in state changes.
gapi.auth2.getAuthInstance().isSignedIn.listen(updateSigninStatus);
// Handle the initial sign-in state.
// updateSigninStatus(gapi.auth2.getAuthInstance().isSignedIn.get());
SignOUT();
waitLogin();
}, function(error) {
waitLogin();
alert(error.message);
});
}
/**
* Called when the signed in status changes, to update the UI
* appropriately. After a sign-in, the API is called.
*/
function updateSigninStatus(isSignedIn) {
if (isSignedIn) {
//authorizeButton.style.display = 'none';
//signoutButton.style.display = 'block';
listMajors();
} else {
//authorizeButton.style.display = 'block';
//signoutButton.style.display = 'none';
waitLogin();
}
}
/**
* Sign in the user upon button click.
*/
var init=0;
function handleAuthClick(event) {
document.getElementById("myLogin").innerHTML = "AGUARDE...";
if(init==0)
{
gapi.load('client:auth2', initClientSigIn);
init=1;
}
else
gapi.auth2.getAuthInstance().signIn();
}
function waitLogin()
{
// document.getElementById("tela-inicio").style.display = "block";
document.getElementById("tudo").style.display = "none";
document.getElementById("conteudo").style.display = "none";
document.getElementById("listaclientes").style.display = "none";
// document.getElementById("ferramentas").style.display = "none";
document.getElementById("Fila").style.display = "none";
document.getElementById("operacao").style.display = "none";
document.getElementById("viewList").style.display = "none";
document.getElementById("portal").style.display = "flex";
document.getElementById("myLogin").innerHTML = "LOGIN";
document.getElementById("myLoginS").innerHTML = "LOGIN";
var obj = document.getElementById("myLoginS");
obj.setAttribute('href', "javascript:handleAuthClick(0);");
document.getElementById("Fila").setAttribute('onclick', "document.getElementById('ocoModal').style.display = 'none'; javascript:void(0);");
storeLogin("LOGIN");
openurl("/novo-front/index");
}
function waitLogout(logname) {
// document.getElementById("tela-inicio").style.display = "none";
document.getElementById("tudo").style.display = "flex";
document.getElementById("conteudo").style.display = "flex";
document.getElementById("listaclientes").style.display = "inline";
// document.getElementById("ferramentas").style.display = "inline";
document.getElementById("Fila").style.display = "flex";
document.getElementById("operacao").style.display = "flex";
document.getElementById("viewList").style.display = "inline";
document.getElementById("portal").style.display = "none";
document.getElementById("myLogin").innerHTML = "LOGOFF";
var obj = document.getElementById("myLoginS");
obj.setAttribute('href', "javascript:handleSignoutClick(0);");
document.getElementById("Fila").setAttribute('onclick', "getVideoOcorrencia();");
// var name = gapi.auth2.getAuthInstance().currentUser.get();
// var logname = name.getBasicProfile().getName() + " ( " + name.getBasicProfile().getEmail() + " )";
//login(logname);
document.getElementById("myLogin").innerHTML = logname; // Qt.Au = email , Qt.Bd= fullname, Qt.zU=lastname, Qt.zW=firstname.
var clip=logname.indexOf("(");
document.getElementById("myLoginS").innerHTML = logname.substring(0,clip);
storeLogin(logname);
}
/**
* Sign out the user upon button click.
*/
function handleSignoutClick(event) {
var x;
var r = confirm("Deseja finalizar a sessao ?");
if (r == true) {
document.getElementById("myLogin").innerHTML = "AGUARDE...";
gapi.load('client:auth2', initClientSigOut);
init=1;
}
}
/**
* Append a pre element to the body containing the given message
* as its text node. Used to display the results of the API call.
*
* @param {string} message Text to be placed in pre element.
*/
function appendPre(message) {
//var pre = document.getElementById('content');
// var textContent = document.createTextNode(message + '\n');
document.body.innerHTML = message.trim();
//pre.appendChild(message);
}
/**
* Print the names and majors of students in a sample spreadsheet:
* https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit
*/
function listMajors() {
gapi.client.sheets.spreadsheets.values.get({
spreadsheetId: '1edERX6z500r_PzovDi0zuRxU_wKrBGxZlTAPDWKZKEY', // '1PIAQ9qDorLJ99SjXmtx_OsT_aSI2_oumHw4ukgqwQos',
range: 'PESSOAS!A1:N23',
}).then(function(response) {
var name = gapi.auth2.getAuthInstance().currentUser.get();
var logname = name.getBasicProfile().getName() + " ( " + name.getBasicProfile().getEmail() + " )";
waitLogout(logname);
}, function(response) {
// appendPre('Error: ' + response.result.error.message);
// nao tem acesso desconecta
waitLogin();
gapi.auth2.getAuthInstance().signOut();
gapi.auth2.getAuthInstance().disconnect();
alert("ACESSO NEGADO!")
});
}
</script>
<script async defer src="https://apis.google.com/js/api.js"
onload="this.onload=function(){};handleClientLoad()"
onreadystatechange="if (this.readyState === 'complete') this.onload()">
</script>
<!--div id="tela-inicio" style="display:block;">
<iframe id="clienteiframe" style="display:block;background:#ffffff;border:none;position:absolute;height:100%;width:100%;" src="/novo-front/index"></iframe>
</div-->
<div id="tudo">
<div id="mySidenav" class="sidenav">
<a href="javascript:void(0)" class="closebtn" onclick="closeNav()">&times;</a>
<a href="javascript:setMosaico();" id="mosaico">Mosaico</a>
<!--a href="javascript:popupwindow('https://datastudio.google.com/reporting/9aefeac4-1d0d-47c4-b5cf-66f49d41c4f2/page/p_2yjwggbisc', 'RESUMO', screen.width/1.5, screen.height/1.5);" id="dash">Dashboard</a-->
<a href="javascript:setDash();" id="dash">Operacao</a>
<!--a href="javascript:window.open('https://datastudio.google.com/reporting/9aefeac4-1d0d-47c4-b5cf-66f49d41c4f2/page/p_2yjwggbisc', '_blank').focus();" id="dash">Operacao</a-->
<a href="javascript:popupwindow('/visualizacao','VISUALIZACAO', screen.width/1, screen.height/1);"> Visualizacao</a>
<!--a href="javascript:popupwindow('/programacao?id=1','PROGRAMACAO', screen.width/2, screen.height/2);"> Programacao</a-->
<!--a href="javascript:setCercaVirtual()" id="conf">Cerca Virtual</a-->
<!--a href="javascript:popupwindow('https://www.appsheet.com/start/8ec6ba07-1f60-4525-87a4-bd3208dfb0b7', 'CONFIGURACAO', screen.width/1.5, screen.height/1.5);" id="conf">Configuracao</a-->
<a href="javascript:setConfig()" id="conf">Configuracao</a>
<a href="javascript:setConfigCheckList()" id="conf">Check-List</a>
<a href="javascript:setTelegram()" id="conf">Telegram</a>
<a href="javascript:setSimulador()" id="conf">Simulador</a>
<a href="" id="conf">Bloqueios</a>
<!--a href="javascript:popupwindow('http://painel.atualli.com/recogimg', 'SIMULADOR', screen.width/1.5, screen.height/1.5);" id="conf">Simulador</a-->
<a href="javascript:setResetMosaico();" id="reset">Reset Mosaico</a>
</div>
<div class="topnav" id="myTopnav">
<span style="background-color: #000000;color: blue;float:left;font-size:40px;cursor:pointer" onclick="openNav()">&#9776; </span>
<img title = "logo" src="getresource?r=alogo.png" align="left">
<!--a href="#news" onclick="javascript:void(0);" id="Fila">Fila</a-->
<div class="buttondiv">
<button class="buttonfila" id="Fila">Fila</button>
</div>
<div class="dropdown" id="listaclientes">
<button class="dropbtn" id="clientelabel">
ATUALLI
</button>
<div id="listaclientesItem" class="dropdown-content">
LISTA
</div>
</div>
<div class="buttondiv">
<button onclick="javascript:setoperacao(0);" class="buttonwork" id="operacao">>AGUARDE...</button>
</div>
<div class="dropdown" id="viewList">
<button class="dropbtn">
VIEW
<i class="fa fa-caret-down"></i>
</button>
<div class="dropdown-content">
<a href="javascript:changeGrade('column7x');">7x</a>
<a href="javascript:changeGrade('column6x');">6x</a>
<a href="javascript:changeGrade('column5x');">5x</a>
<a href="javascript:changeGrade('column');">4x</a>
<a href="javascript:changeGrade('column3x');">3x</a>
<a href="javascript:changeGrade('Auto');">Auto</a>
</div>
</div>
<img title = "avatar" id="myavatar" style="width:3%" src="getresource?r=anonymus.jpg" align="left">
<a href="" style="display:none" id="myLogin"></a>
<a href="javascript:handleAuthClick(0);" id="myLoginS"></a>
<a href="javascript:void(0);" class="icon" onclick="NavResponsive()">
<i class="fa fa-bars"></i>
</a>
</div>
<div class="rowblock" id="portal">
<tr></tr>
</div>
<div style="display:none" id="listocorrencias">
<tr>
<iframe id="iframelistocorrencias" src="" frameborder="0" style="position:absolute; top:7%; left:0; width:100%; height:100%; border:0" allowfullscreen></iframe>
</tr>
</div>
<div style="display:none" id="configuracao">
<tr>
<iframe id="iframeconfiguracao" src="" frameborder="0" style="position:absolute; top:7%; left:0; width:80%; height:100%; border:0" allowfullscreen></iframe>
</tr>
</div>
<div style="display:none" id="configuracaochecklist">
<tr>
<iframe id="iframeconfiguracaochecklist" src="" frameborder="0" style="position:absolute; top:7%; left:0; width:100%; height:100%; border:0" allowfullscreen></iframe>
</tr>
</div>
<div style="display:none" id="cercavirtual">
<tr>
<iframe id="iframecercavirtual" src="" frameborder="0" style="position:absolute; top:7%; left:80%; width:20%; height:100%; border:0" allowfullscreen></iframe>
</tr>
</div>
<div style="display:none" id="simulador">
<tr>
<iframe id="iframesimulador" src="" frameborder="0" style="position:absolute; top:7%; left:0; width:100%; height:100%; border:0" allowfullscreen></iframe>
</tr>
</div>
<div >
<div class="row" id="conteudo">
</div>
<tr id="bodymosaico">
<div id="ocoModal" class="modal">
<form class="modal-content animate" id="formOcorrencia" action="javascript:gravaOcorrencia()" method="get">
<div class="imgcontainer">
<div style="width:100%">
<p><b>TRATAMENTO DE OCORRENCIA</b></p> <span onclick="document.getElementById('ocoModal').style.display = 'none'" class="close" title="Close Modal">&times;</span>
</div>
<div class="imgchild">
<p><b>Gravacao</b></p>
<video id="videoocorrencia" preload="metadata" autoplay loop muted playsinline width=100% height=77% controls src="getresource?r=atualli.png&" type="video/mp4"> </video>
</div>
<div class="imgchild">
<p><b>Ao Vivo</b></p>
<img src="" id="aovivo" class="refrx" alt="" style="width:100%;display:none;">
<canvas title="Ao vivo" id="cvcx" alt="" style="width:100%"></canvas>
</div>
</div>
<div class="container" style="background-color:#f1f1f1">
<label for="rot"><b>.</b></label></br>
<label id="IdOcoView" for="rot"><b>ID: </b></label></br>
<label id="IdCliente" for="rot"><b>Cliente: </b></label></br>
<label id="Operador" for="rot"><b>Operador: </b></label></br>
<label id="DataOcorrencia" for="rot"><b>Data: </b></label></br>
<label id="NomeRoteiro" for="rot"><b>Roteiro: </b></label></br>
<label id="Prioridade" for="rot"><b>Prioridade: </b></label></br>
<!--label id="videoOco" for="rot"><b>Video: </b></label></br-->
</div>
<div class="container">
<label id="pergunta1" for="uname"><b>Procedimento</b></label>
<input type="text" id="procedimento" placeholder="Texto livre" name="procedimento" readonly style="background-color:#f1f1f1">
<label id="pergunta2" for="psw"><b>Motivo</b></label>
<input type="text" id="template" placeholder="Texto livre" name="template" required onkeydown="return (event.keyCode!=13);">
<!--textarea placeholder="Texto livre" rows="5" cols="10" id="template" style = "font-size: 12pt; width:100%; margin:5px 0;padding:3px" ></textarea-->
<label id="pergunta3" for="psw"><b>Audio</b></label>
<input type="file" id="audio" name="audio" accept="audio/*" multiple>
<button type="button" id="loadLastAudio" onclick="javascript:getUltimoAudio()">Carrega Ultimos Audios</button>
<select id="listaAudios" class="select_audio" style="background-color:#f1f1f1" name="formal" onchange="javascript:selAudio(this)"></select>
</br></br>
<a href="" id="lastaudio"></a>
<input type="hidden" name="cmd" id="GravaOcorrencia" value="">
<input type="hidden" name="idOco" id="idOco" value="">
<input type="hidden" name="idCamera" id="idCamera" value="">
<input type="hidden" name="nomeOperador" id="nomeOperador" value="">
<input type="hidden" name="idChat" id="idChat" value="">
<input type="hidden" name="cliente" id="cliente" value="">
<input type="hidden" name="roteiro" id="roteiro" value="">
<button type="submit" style="display:none" id="gravar" class="button">Grava</button>
<button type="button" style="display:none" id="descartar" onclick="javascript:descartaOcorrencia(0)" class="cancelbtn">Descartar</button>
<button type="button" style="display:none" id="desbloqueio" onclick="" class="cancelbtn">Desbloqueio</button>
<select class="select" id="listaContatos" style="background-color:#f1f1f1" name="formal" onchange="javascript:handleSelect(this)"></select>
<script type="text/javascript">
function handleSelect(elm)
{
if(elm.value.length>1)
window.location = elm.value;
}
</script>
</div>
</form>
</div>
</tr>
</div>
</div>
<script async">
var to = 1; // 2; //3;
var first = 0;
var idx = 0;
var tamFila = 0;
var myFila = 0;
var onlyView = 0;
var stoprun=0;
function NavResponsive() {
var x = document.getElementById("myTopnav");
if (x.className === "topnav") {
x.className += " responsive";
} else {
x.className = "topnav";
}
}
function setTelegram() {
popupwindow('https://web.telegram.org/z','TELEGRAM', screen.width/4, screen.height)
closeNav();
}
function resetAllView() {
document.getElementById("configuracao").style.display = "none";
document.getElementById("configuracaochecklist").style.display = "none";
document.getElementById("conteudo").style.display = "none";
document.getElementById("listocorrencias").style.display = "none";
document.getElementById("simulador").style.display = "none";
document.getElementById("cercavirtual").style.display = "none";
}
function setCercaVirtual()
{
// resetAllView();
var objAovivo = document.getElementById("iframecercavirtual");
var osrc= objAovivo.getAttribute('src');
if ( osrc=="")
{
objAovivo.setAttribute('src', "/programacao?id=1");
}
document.getElementById("cercavirtual").style.display = "flex";
closeNav();
}
function setDash() {
/* resetAllView();
var objAovivo = document.getElementById("iframelistocorrencias");
var osrc= objAovivo.getAttribute('src');
if ( osrc=="")
{
objAovivo.setAttribute('src', "https://datastudio.google.com/embed/reporting/9aefeac4-1d0d-47c4-b5cf-66f49d41c4f2/page/p_2yjwggbisc");
}
document.getElementById("listocorrencias").style.display = "flex"; */
popupwindow('https://datastudio.google.com/reporting/9aefeac4-1d0d-47c4-b5cf-66f49d41c4f2/page/p_2yjwggbisc', 'RESUMO', screen.width/1, screen.height/1);
closeNav();
}
function setMosaico() {
resetAllView();
document.getElementById("conteudo").style.display = "flex";
closeNav();
}
function setResetMosaico()
{
setMosaico();
resetMosaico(0);
}
function setSimulador()
{
resetAllView();
var objAovivo = document.getElementById("iframesimulador");
var osrc= objAovivo.getAttribute('src');
if ( osrc=="")
{
objAovivo.setAttribute('src', "http://painel.atualli.com/recogimg");
}
document.getElementById("simulador").style.display = "flex";
closeNav();
}
function setConfig() {
resetAllView();
var objAovivo = document.getElementById("iframeconfiguracao");
var osrc= objAovivo.getAttribute('src');
if ( osrc=="")
{
// objAovivo.setAttribute('src', "https://www.appsheet.com/start/8ec6ba07-1f60-4525-87a4-bd3208dfb0b7#view=PROGRAMACAO");
objAovivo.setAttribute('src', "https://www.appsheet.com/start/99e79f6b-62fe-44c8-bab4-b4b9de10cd7d#view=PROGRAMACAO");
}
document.getElementById("configuracao").style.display = "flex";
setCercaVirtual();
closeNav();
}
function setConfigCheckList() {
resetAllView();
var objAovivo = document.getElementById("iframeconfiguracaochecklist");
var osrc= objAovivo.getAttribute('src');
if ( osrc=="")
{
// objAovivo.setAttribute('src', "https://www.appsheet.com/start/8ec6ba07-1f60-4525-87a4-bd3208dfb0b7#view=PROGRAMACAO");
objAovivo.setAttribute('src', "https://www.appsheet.com/start/54218ac3-e0db-414a-b3e5-1fb46540b5c4#view=PROGRAMACAO_CHECKLIST");
}
document.getElementById("configuracaochecklist").style.display = "flex";
closeNav();
}
function openNav() {
document.getElementById("mySidenav").style.width = "250px";
}
function closeNav() {
document.getElementById("mySidenav").style.width = "0";
}
var atualColumn="column";
function changeGrade(novo)
{
var lista = document.getElementsByClassName(atualColumn);
var len=lista.length;
var newClass=novo;
if(novo=="Auto")
{ newClass="column3x";
if (len>=8) newClass="column";
if (len>=16) newClass="column5x";
if (len>=24) newClass="column6x";
if (len>=31) newClass="column7x";
}
for (var i = 0; i < len; i ++)
{
lista[0].className = newClass;
}
atualColumn=newClass;
let cliente=document.getElementById("clientelabel").innerHTML;
cliente=cliente.trim();
setCookie("GRADE-"+cliente,novo,10);
}
function drawOperador(name) {
document.getElementById("myLogin").innerHTML = name;
}
function selecionaOperador(name) {
var atual= getCookie("LOGIN");
if (name!=atual)
{
if((name.length>0) && (name!="LOGOFF")&& (name!="LOGIN"))
login(name);
if(atual.length>0)
logout(atual);
}
if(!name) name="LOGIN";
setCookie("LOGIN",name,10);
drawOperador(name);
}
function setCookie(name,value,days) {
window.localStorage.setItem(name,value);
}
function getCookie(name) {
return window.localStorage.getItem(name);
}
function eraseCookie(name) {
document.cookie = name +'=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
}
function openForm() {
document.getElementById("myForm").style.display = "block";
}
function closeForm() {
document.getElementById("myForm").style.display = "none";
}
function resetFormOcorrencia()
{
var obj = document.getElementById("videoocorrencia");
obj.setAttribute('src', "");
var objproc = document.getElementById("procedimento");
objproc.setAttribute('value', "");
var objtmp = document.getElementById("template");
objtmp.setAttribute('value', "");
// document.getElementById("videoOco").innerHTML = "<b> Video: Aguarde...</b>";
document.getElementById("IdCliente").innerHTML = "<b> Cliente: Aguarde...</b>";
document.getElementById("IdOcoView").innerHTML = "<b> ID: Aguarde...</b>";
document.getElementById("NomeRoteiro").innerHTML = "<b> Roteiro: Aguarde...</b>";
document.getElementById("DataOcorrencia").innerHTML = "<b> Data: Aguarde... </b>";
document.getElementById("Operador").innerHTML = "<b> Operador: Aguarde... </b>";
document.getElementById("Prioridade").innerHTML = "<b> Prioridade: Aguarde...</b>";
var objidOco = document.getElementById("idOco");
objidOco.setAttribute('value', "");
var objnOp = document.getElementById("nomeOperador");
objnOp.setAttribute('value', "");
var objnidChat = document.getElementById("idChat");
objnidChat.setAttribute('value', "");
document.getElementById("desbloqueio").style.display = 'none'
document.getElementById("gravar").style.display = 'none'
document.getElementById("descartar").style.display = 'none'
document.getElementById("gravar").innerHTML = "Gravar";
document.getElementById("gravar").disabled = false;
document.getElementById("descartar").innerHTML = "Descartar";
document.getElementById("descartar").disabled = false;
var objAovivo = document.getElementById("aovivo");
objAovivo.setAttribute('src', '');
objAovivo.setAttribute('class', 'refrx');
document.getElementById("audio").value = "";
document.getElementById("lastaudio").innerHTML = "";
document.getElementById("listaAudios").innerHTML = "";
}
function popupwindow(url, title, w, h) {
var left = (screen.width / 2) - (w / 2);
var top = (screen.height / 2) - (h / 2);
return window.open(url, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left);
}
function openurl(url)
{
var urls = url;
if (onlyView==1)
urls = urls + "?view=true";
window.location.replace(urls);
// return window.open(urls,'_self');
}
function execDesbloqueio(url)
{
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
var desbloqueio = document.getElementById("desbloqueio");
desbloqueio.innerHTML = this.responseText;
}
};
var desbloqueio = document.getElementById("desbloqueio").innerHTML = "AGUARDE...";
xhttp.open("GET", url, true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("");
}
function sleep(time) {
return new Promise((resolve) => setTimeout(resolve, time));
}
function getVideoOcorrencia() {
if (myFila <= 0) return;
resetFormOcorrencia();
// Usage!
sleep(100).then(() => {
// Do something after the sleep!
if (myFila <= 0) return;
document.getElementById("desbloqueio").innerHTML="Desbloqueio";
document.getElementById("gravar").innerHTML = "Grava";
//document.getElementById('ocoModal').style.display = 'block'
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
if(this.responseText.indexOf("VAZIO") !== -1) return;
var json = JSON.parse(this.responseText);
if (json.status == "Manual") {
document.getElementById("ocoModal").style.display = 'block';
resetFormOcorrencia();
//document.getElementById('ocoModal').style.display = 'block';
document.getElementById("descartar").style.display = 'block'
document.getElementById("gravar").style.display = 'block'
document.getElementById("desbloqueio").style.display = 'none'
var obj = document.getElementById("videoocorrencia");
obj.setAttribute('src', json.video);
//document.getElementById("procedimento").innerHTML = "<b>" + json.procedimento + "</b>";
document.getElementById("template").innerHTML = json.templat ;
var objproc = document.getElementById("procedimento");
objproc.setAttribute('value', json.procedimento);
var objtmp = document.getElementById("template");
objtmp.setAttribute('value', json.templat);
var objidChat = document.getElementById("idChat");
objidChat.setAttribute('value', json.idchat);
var objCliente = document.getElementById("cliente");
objCliente.setAttribute('value', json.cliente);
var objRoteiro = document.getElementById("roteiro");
objRoteiro.setAttribute('value', json.roteiro);
var objAovivo = document.getElementById("aovivo");
objAovivo.setAttribute('src', json.urlcamera);
// document.getElementById("videoOco").innerHTML = "<b> Video: " + json.video + "</b>";
document.getElementById("IdCliente").innerHTML = "<b> Cliente: " + json.cliente + "</b>";
document.getElementById("IdOcoView").innerHTML = "<b> ID: " + json.id + "</b>";
document.getElementById("NomeRoteiro").innerHTML = "<b> Roteiro: " + json.roteiro + "</b>";
document.getElementById("DataOcorrencia").innerHTML = "<b> Data: " + json.data + "</b>";
document.getElementById("Prioridade").innerHTML = "<b> Prioridade: " + json.prioridade + "</b>";
if (json.desbloqueio) {
var desbloqueio = document.getElementById("desbloqueio");
desbloqueio.style.display = 'block'
var url = json.desbloqueio;
desbloqueio.setAttribute('onclick', "execDesbloqueio('" + url + "')");
}
var lista = json.contatos.split(/,| |-/);
var options = "<option value=\"\">REALIZAR CONTATO</option>";
for (var i = 0; i < lista.length; i += 2) {
nome = lista[i];
telefone = lista[i + 1];
options += "<option value=\"tel:80" + telefone + "\">Ligar para " + nome + " " + telefone + "</option>";
}
document.getElementById("listaContatos").innerHTML = options;
document.getElementById("Operador").innerHTML = "<b> Operador: " + document.getElementById("myLogin").innerHTML + "</b>";
var objidOco = document.getElementById("idOco");
objidOco.setAttribute('value', json.id);
var objnOp = document.getElementById("nomeOperador");
objnOp.setAttribute('value', document.getElementById("myLogin").innerHTML);
//document.getElementById('ocoModal').style.display = 'block';
}
else {
document.getElementById("ocoModal").style.display = 'none';
}
}
};
// xhttp.open("GET", "https://script.google.com/macros/s/AKfycbziTdRkV1r6WFdUMoaBAugEkywspV6TqhPE8fTQnl2FOZ6Qn2E/exec?cmd=Ocorrencia&operador=" + document.getElementById("myLogin").innerHTML, true);
xhttp.open("GET", "getdatalocal?comando=Ocorrencia&operador=" + document.getElementById("myLogin").innerHTML, true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("");
});
}
const fileInput = document.getElementById('audio');
fileInput.onchange = () => {
const selectedFile = fileInput.files[0];
if ((selectedFile) && (selectedFile.name.length > 0))
{
var dt = new Date();
var path = "ftp://192.168.0.10/" + dt.getFullYear() + "/" + String(dt.getMonth() + 1).padStart(2, '0') + "/" + String(dt.getDate()).padStart(2, '0') + "/";
var saudio = path+selectedFile.name;
var saudio = saudio.replace("[1]", "");
var objAudio = document.getElementById("lastaudio");
objAudio.setAttribute('href', saudio);
document.getElementById("lastaudio").innerHTML = saudio;
}
else {
document.getElementById("lastaudio").innerHTML = "";
}
}
function getUltimoAudio()
{
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function ()
{
if (this.readyState == 4 && this.status == 200)
{
var json = JSON.parse(this.responseText);
var file = json.voips[0].file;
var sfile = file.replace("/var/spool/asterisk/monitor", "ftp://192.168.0.10");
var objAudio = document.getElementById("lastaudio");
//objAudio.setAttribute('href', "javascript:testAudio(\"" + sfile + "\")");
objAudio.setAttribute('href', sfile);
document.getElementById("lastaudio").innerHTML = sfile;
document.getElementById("loadLastAudio").innerHTML = "Carrega Ultimos Audios";
var options = "<option value=\"\">Lista Ultimos Audios</option>";
for (var i = 0; i < json.voips.length; i ++) {
var nome = json.voips[i].file;
var snome = nome.replace("/var/spool/asterisk/monitor", "ftp://192.168.0.10");
options += "<option value=\"" + snome + "\">" + snome + "</option>";
}
document.getElementById("listaAudios").innerHTML = options;
}
}
var videoobj = document.getElementById("videoocorrencia");
var video = videoobj.getAttribute('src');
var dvideo = video; // video.replace("http://atualli.ddns.net", "http://localhost:8088"); // video; // apenas para debug local
document.getElementById("loadLastAudio").innerHTML = "AGUARDE...";
xhttp.open("GET", dvideo + "&ramal=2002&phone=0", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("");
}
function testAudio(elm)
{
window.open(elm.value);
}
function selAudio(elm) {
if (elm.value.length > 1) {
var objAudio = document.getElementById("lastaudio");
objAudio.setAttribute('href', elm.value);
document.getElementById("lastaudio").innerHTML = elm.value;
}
}
function sendMsgFinal(status)
{
var xhttp = new XMLHttpRequest();
var videoobj = document.getElementById("videoocorrencia");
var video = videoobj.getAttribute('src');
var objnOp = document.getElementById("nomeOperador");
var operador = objnOp.getAttribute('value');
var idResp2 = document.getElementById("template").value;
var idChat = document.getElementById("idChat").value;
var cliente = document.getElementById("cliente").value;
var roteiro = document.getElementById("roteiro").value;
var idOco = document.getElementById("idOco").value;
var saudio = document.getElementById("lastaudio").innerHTML;
if (saudio.length > 0)
idResp2 = idResp2 + " (AUDIO ANEXADO)";
var dvideo = video.replace("http://atualli.ddns.net", "http://localhost:8088"); // video; // apenas para debug local
// var url = dvideo + "&idchat=" + idChat + "&status=" + status + "&idoco=" + idOco + "&motivo=" + cliente + " - " + roteiro + " - " + idResp2 + "&audio=" + saudio;
var url = dvideo + "&idchat=" + idChat + "&status=" + status + "&idoco=" + idOco + "&cliente=" + cliente + "&roteiro=" + roteiro + "&motivo=" + idResp2 + "&audio=" + saudio;
xhttp.open("GET", url, true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("");
}
function gravaOcorrencia()
{
var template = document.getElementById("template").value;
if (template.length > 0) {
var r = confirm("Deseja realmente salvar a ocorrencia ?");
if (r == true) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
var json = JSON.parse(this.responseText);
sendMsgFinal("grava");
resetFormOcorrencia();
document.getElementById("ocoModal").style.display = 'none';
alert("OCORRENCIA GRAVADA COM SUCESSO !");
document.getElementById("gravar").innerHTML = "Gravar";
document.getElementById("gravar").disabled = false;
}
};
document.getElementById("gravar").innerHTML = "Aguarde..";
document.getElementById("gravar").disabled = true;
var objidOco = document.getElementById("idOco");
var idOco = objidOco.getAttribute('value');
var objnOp = document.getElementById("nomeOperador");
var operador = objnOp.getAttribute('value');
var idResp1 = document.getElementById("procedimento").value;
var idResp2 = document.getElementById("template").value;
var idChat = document.getElementById("idChat").value;
// xhttp.open("GET", "https://script.google.com/macros/s/AKfycbziTdRkV1r6WFdUMoaBAugEkywspV6TqhPE8fTQnl2FOZ6Qn2E/exec?cmd=GravaOcorrencia&idOco=" + idOco + "&resposta1=" + idResp1 + "&resposta2=" + idResp2 + "&operador=" + operador, true);
xhttp.open("GET", "getdatalocal?comando=GravaOcorrencia&idOco=" + idOco + "&resposta1=" + idResp1 + "&resposta2=" + idResp2 + "&operador=" + operador, true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
// xhttp.timeout = 8000; // Set timeout to 4 seconds (4000 milliseconds)
// xhttp.ontimeout = function () { alert("Timed out!!!"); }
xhttp.send("");
}
}
else
alert("Preencha o campo motivo e justifique a ocorrencia !");
}
function resetMosaico() {
var r = confirm("Deseja realmente reiniciar o Mosaico ?. Use apenas em quando as imagens estiverem congeladas a mais de 1 hora");
if (r == true) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
alert("MOSAICO REINICIADO COM SUCESSO !");
document.getElementById("reset").innerHTML = "RESET";
document.getElementById("reset").disabled = false;
}
};
document.getElementById("reset").innerHTML = "AGUARDE..";
document.getElementById("reset").disabled = true;
var login = document.getElementById("myLogin").innerHTML;
var cliente = document.getElementById("clientelabel").innerHTML;
var texto = "AT" + cliente + "_reiniciado_pelo_operador_" + login;
xhttp.open("GET", urlMosaico+"/resetmosaico?msg=" + texto, true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("");
}
}
function descartaOcorrencia() {
var template = document.getElementById("template").value;
if (template.length > 0) {
var r = confirm("Deseja realmente descartar ocorrencia ?");
if (r == true) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
var json = JSON.parse(this.responseText);
sendMsgFinal("descarta");
resetFormOcorrencia();
document.getElementById("ocoModal").style.display = 'none';
alert("OCORRENCIA DESCARTADA COM SUCESSO !");
document.getElementById("descartar").innerHTML = "Descartar";
document.getElementById("descartar").disabled = false;
}
};
document.getElementById("descartar").innerHTML = "Aguarde..";
document.getElementById("descartar").disabled = true;
var objidOco = document.getElementById("idOco");
var idOco = objidOco.getAttribute('value');
var objnOp = document.getElementById("nomeOperador");
var operador = objnOp.getAttribute('value');
var idResp1 = document.getElementById("procedimento").value;
var idResp2 = document.getElementById("template").value;
// xhttp.open("GET", "https://script.google.com/macros/s/AKfycbziTdRkV1r6WFdUMoaBAugEkywspV6TqhPE8fTQnl2FOZ6Qn2E/exec?cmd=GravaOcorrencia&descarta=true&idOco=" + idOco + "&resposta1=" + idResp1 + "&resposta2=" + idResp2 + "&operador=" + operador, true);
xhttp.open("GET", "getdatalocal?comando=GravaOcorrencia&descarta=true&idOco=" + idOco + "&resposta1=" + idResp1 + "&resposta2=" + idResp2 + "&operador=" + operador, true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("");
}
}
else
alert("Preencha o campo motivo e justifique o Descarte!");
}
function myFunctionNav() {
var x = document.getElementById("myTopnav");
if (x.className === "topnav") {
x.className += " responsive";
} else {
x.className = "topnav";
}
}
var solicitaLog = 0;
function login(login) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (this.readyState == 4) {
solicitaLog = 0;
}
};
// xhttp.open("GET", "https://script.google.com/macros/s/AKfycbziTdRkV1r6WFdUMoaBAugEkywspV6TqhPE8fTQnl2FOZ6Qn2E/exec?cmd=Login&login="+login+"&ip=0", true);
xhttp.open("GET", "getdatalocal?comando=Login&login="+login+"&ip=0", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("");
}
function logout(login) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (this.readyState == 4) {
solicitaLog = 0;
}
};
// xhttp.open("GET", "https://script.google.com/macros/s/AKfycbziTdRkV1r6WFdUMoaBAugEkywspV6TqhPE8fTQnl2FOZ6Qn2E/exec?cmd=Logout&login=" + login + "&ip=0", true);
xhttp.open("GET", "getdatalocal?comando=Logout&login=" + login + "&ip=0", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("");
}
function setoperacao() {
var status = document.getElementById("operacao").innerHTML;
var usuario = document.getElementById("myLogin").innerHTML;
if ((usuario != "LOGIN") && (usuario != "")) {
if (status == "QUERO TRABALHAR") {
solicitaLog = 1;
document.getElementById("operacao").innerHTML = "AGUARDE...";
login(usuario);
}
if (status == "TRABALHANDO") {
solicitaLog = 1;
document.getElementById("operacao").innerHTML = "AGUARDE...";
logout(usuario);
}
}
}
function getFila()
{
if (onlyView==1) {
document.getElementById("operacao").innerHTML = "VISUALIZANDO";
tamFila = 0;
myFila = 0;
return;
}
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
var json = JSON.parse(this.responseText);
document.getElementById("Fila").innerHTML = "FILA OCORRENCIAS " + "(" + json.myFila +"/"+json.numFila + ") ";
if (solicitaLog == 0) {
document.getElementById("operacao").innerHTML = json.status;
}
var status = document.getElementById("operacao").innerHTML;
if (status == "TRABALHANDO") {
if (json.numFila != "0") {
tamFila = parseInt(json.numFila);
myFila = parseInt(json.myFila);
if (document.getElementById("ocoModal").style.display != 'block') {
getVideoOcorrencia();
}
}
else {
tamFila = 0;
myFila = 0;
}
}
else {
tamFila = 0;
myFila = 0;
}
}
};
var usuario = document.getElementById("myLogin").innerHTML;
// xhttp.open("GET", "https://script.google.com/macros/s/AKfycbziTdRkV1r6WFdUMoaBAugEkywspV6TqhPE8fTQnl2FOZ6Qn2E/exec?cmd=F2ila&login="+usuario, true);
xhttp.open("GET", "getdatalocal?comando=F2ila&login="+usuario, true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("");
}
function gogo2()
{
getFila()
setTimeout(gogo2, to * 1000);
}
function refreshimg(img)
{
}
function imgRedirect(img)
{
}
function errorloadimg(img) {
var d = new Date(),
dummy = d.getTime();
var newurl = 'getresource?r=atualli.png&';
var obj = img,
s_rc = obj.getAttribute('src'),
pure_src = s_rc.substring(s_rc.indexOf('c='), s_rc.indexOf('c=') + 4);
obj.setAttribute('src',newurl+pure_src + '&' + dummy);
}
var resx = 1000;
var resy = 1000;
var dataXhttp = [];
var slot = 0;
function _arrayBufferToBase64( bytes ) {
var binary = '';
var len = bytes.byteLength;
for (var i = 0; i < len; i++) {
binary += String.fromCharCode( bytes[ i ] );
}
/* var block= 65535;
var start = 0;
do {
var end = start+block;
if (end>=len) end=len;
var sub = bytes.slice(start, end)
binary += String.fromCharCode.apply(null,sub);
start+=block;
if(start>=len) break;
}while(1); */
return window.btoa( binary );
}
function binaryToDataURL(inputArray){
let TYPED_ARRAY = new Uint8Array(inputArray);
let base64String = _arrayBufferToBase64(TYPED_ARRAY);
// let binary = String.fromCharCode.apply(null,TYPED_ARRAY);
// let base64String = window.btoa( binary );
var uri = 'data:image/jpeg;base64,' + base64String;
return uri;
}
var canvasx=480;
var canvasy=320;
var canvasvx=720; //480;
var canvasvy=480; //320;
var fps=60;
var ext= ".jpeg";
var urlBase;
var urlMosaico;
async function playframe(img,blob)
{
const ArrayBuffer = await blob.arrayBuffer();
const src = binaryToDataURL(ArrayBuffer);
img.src = src;
img.onload = function () {
var ids = this.id;
var cam = "cvc" + ids.substring(3, 5);
var c = document.getElementById(cam);
var ctx = c.getContext("2d", { alpha: false });
var resx = canvasvx; //this.width
var resy = canvasvy; //this.height;
c.setAttribute('width', resx);
c.setAttribute('height', resy);
ctx.drawImage(this, 0, 0, resx, resy);
};
}
async function playframe3(img,blob)
{
var fileReader = new FileReader();
fileReader.onload = function(event) {
img.src = fileReader.result;
img.onload = function () {
var ids = this.id;
var cam = "cvc" + ids.substring(3, 5);
var c = document.getElementById(cam);
var ctx = c.getContext("2d", { alpha: false });
var resx = canvasvx; //this.width
var resy = canvasvy; //this.height;
c.setAttribute('width', resx);
c.setAttribute('height', resy);
ctx.drawImage(this, 0, 0, resx, resy);
};
}
fileReader.readAsDataURL(blob);
}
async function playframe2(img,blob)
{
// const ArrayBuffer = await blob.arrayBuffer();
// let TYPED_ARRAY = new Uint8Array(ArrayBuffer);
var fileReader = new FileReader();
fileReader.onload = function(event) {
ArrayBuffer = event.target.result;
let TYPED_ARRAY = new Uint8Array(ArrayBuffer);
var ids = img.id;
var cam = "cvc" + ids.substring(3, 5);
var c = document.getElementById(cam);
var ctx = c.getContext("2d", { alpha: false });
var resx = canvasx;
var resy = canvasy;
c.setAttribute('width', canvasvx);
c.setAttribute('height', canvasvy);
// const imageData = ctx.createImageData(resx, resy);
const imageData = ctx.getImageData(0,0,resx,resy);
// var byteArray = new Uint8ClampedArray(ArrayBuffer);
// var imgData = new ImageData(byteArray, resx, resy);
// Iterate through every pixel
let j=0;
for (let i = 0; i < imageData.data.length; i += 4) {
// Modify pixel data
imageData.data[i + 0] = TYPED_ARRAY[j + 2]; // R value
imageData.data[i + 1] = TYPED_ARRAY[j + 1]; // G value
imageData.data[i + 2] = TYPED_ARRAY[j + 0]; // B value
imageData.data[i + 3] = 255; // A value
j+=3;
}
// ctx.scale(canvasvx/canvasx, canvasvy/canvasy);
ctx.putImageData(imageData, 0, 0);
}
fileReader.readAsArrayBuffer(blob);
}
async function playstream(img)
{
img.setAttribute("data-completed", 0);
var cam = img.id.substring(3, 5);
var newurl = urlBase + "c=" + cam + "&resx=" + canvasx + "&resy=" + canvasy + "&fps=" + fps + "&ext=" + ext;
let wnewurl = newurl.replace("http","ws");
// wnewurl = wnewurl.replace("getcamera","getstream");
wnewurl = wnewurl.replace("getcamera","stream");
var ws = new WebSocket(wnewurl);
ws.onopen = function () {
console.log("Message to send");
img.setAttribute("data-completed", 0);
};
ws.onmessage = function (evt) {
// playframe2(img,evt.data);
playframe(img,evt.data);
if(stoprun==1) ws.close();
};
ws.onerror = function () {
// websocket is closed.
console.log("Connection is closed...");
img.setAttribute("data-completed", -1);
};
ws.onclose = function () {
// websocket is closed.
console.log("Connection is closed...");
img.setAttribute("data-completed", -1);
};
}
async function preload(i,img)
{
var imp = function(img) {
var cam = img.id.substring(3, 5);
var newurl = urlBase + "c=" + cam;
// var xhttp = new XMLHttpRequest();
var xhttp = dataXhttp[i*32+slot];
xhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200)
{
var json = this.response;
var reader = new FileReader();
reader.onloadend = function ()
{
if (reader.result.length > 0)
{
img.src = reader.result;
img.onload = function ()
{
var ids = this.id;
var cam = "cvc" + ids.substring(3, 5);
var c = document.getElementById(cam);
var ctx = c.getContext("2d", { alpha: false });
c.setAttribute('width', canvasvx);
c.setAttribute('height', canvasvy);
ctx.drawImage(this, 0, 0, canvasvx, canvasvy);
}
}
}
reader.readAsDataURL(json);
}
};
xhttp.open("GET", newurl, true);
xhttp.responseType = 'blob';
xhttp.send(null);
}
imp(img);
}
async function playget(img)
{
var imp = function(img) {
img.src = img.src;
img.setAttribute("data-completed", -1);
img.onload = function () {
var ids = this.id;
var cam = "cvc" + ids.substring(3, 5);
var c = document.getElementById(cam);
var ctx = c.getContext("2d", { alpha: false });
c.setAttribute('width', canvasvx);
c.setAttribute('height', canvasvy);
ctx.drawImage(this, 0, 0, canvasvx, canvasvy);
}
}
imp(img);
}
function aovivo() {
var d=new Date();
var dummy = d.getTime();
var pix = document.getElementsByClassName('refrx');
for (var i = 0; i < pix.length; i++) {
var img = pix[i];
var c = document.getElementById('cvcx');
if (img.src.indexOf("getcamera")>=0) {
if (img.complete) {
var s_rc = img.src;
var pure_src = s_rc.substring(0, s_rc.indexOf('c=') + 4);
img.src = pure_src + "&" + dummy;
img.onload = function () {
this.complete = true;
var c = document.getElementById('cvcx');
var ctx = c.getContext("2d");
c.setAttribute('width', this.width);
c.setAttribute('height', this.height);
ctx.drawImage(this, 0, 0, this.width, this.height);
}
}
}
}
}
function gogo() {
if (stoprun==1) return;
var pix = document.getElementsByClassName('refr');
for (var i = 0; i < pix.length; i++) {
var img = pix[i];
if (!img.hasAttribute("data-completed") || img.getAttribute("data-completed")<0)
{
if(first==0)
{
for (var j = 0 ; j <= 32 ; j++) {
dataXhttp[i *32 + j] = new XMLHttpRequest();
}
playget(img);
}
if(first==1)
{
preload(i,img);
}
if(first>1)
{
// preload(i,img);
playstream(img);
}
}
}
if(first<=1) {
setTimeout(gogo, 1);
} else {
aovivo()
setTimeout(gogo, 50);
}
first++;
slot++;
slot = slot & 0x1f;
}
function iniciaPagina()
{
const urlParams = new URLSearchParams(window.location.search);
var name=loadLogin();
if((!name) || (name=="LOGIN"))
{
openurl("/novo-front/index");
}
else
{
const myParam = urlParams.get('view');
if (myParam)
onlyView = 1;
var cliente=getCookie("CLIENTEMOSAICO");
if(!cliente) {
cliente = document.getElementById("clientelabel").innerHTML;
cliente=cliente.trim();
}
const parclient = urlParams.get('cliente');
if (parclient)
cliente = parclient;
makeMosaico(cliente);
}
}
function startRun(cliente)
{
sleep(500).then(() => {
stoprun=0;
first=0;
document.getElementById("conteudo").style.display = "flex";
gogo2();
gogo();
//let cliente=document.getElementById("clientelabel").innerHTML;
//cliente=cliente.trim();
var novaGrade=getCookie("GRADE-"+cliente);
if(novaGrade)
changeGrade(novaGrade);
else
changeGrade("Auto");
});
}
function makeMosaico(cliente)
{
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
stoprun=1;
document.getElementById("conteudo").style.display = "none";
document.getElementById("conteudo").innerHTML ="";
var json = JSON.parse(this.responseText);
var lista="";
for (var i=0;i<json.listaclientes.length;i++)
{
lista+="<a href =\"javascript:makeMosaico('"+json.listaclientes[i]+"')\">"+json.listaclientes[i]+"</a>\r\n"
}
document.getElementById("listaclientesItem").innerHTML = lista;
var mosaico="";
for (var i=0;i<json.cameras.length;i++)
{
camera = json.cameras[i];
mosaico+="<div class = \"column\">\r\n" +
" <img id=\"img"+camera.camera+"\" class=\"refr\" style=\"width:100;display:none;\" src=\"getresource?r=atualli.png\" >\r\n" +
" <canvas title = \"\r\n"+
" Cliente: "+camera.cliente+"\r\n" +
"DVR: "+camera.equipamento+" ("+camera.dvr+")\r\n"+
"IP : "+camera.url+":"+camera.porta+" \r\n" +
"Cam : "+camera.cameranome+" ("+camera.canal+" ["+camera.id+"]) \r\n" +
"Recorder : "+camera.statusgravacao+"\"\r\n" +
" id=\"cvc"+camera.camera+"\" class=\"refrc\" alt=\"\" style=\"width:100%\"></canvas>\r\n" +
"</div>\r\n"
}
document.getElementById("conteudo").innerHTML = mosaico;
urlMosaico = json.urlbase;
urlBase = json.urlbase+":"+json.portabase+"/getcamera?"
startRun(cliente)
}
};
document.getElementById("clientelabel").innerHTML = cliente;
xhttp.open("GET", "getdatamosaico?cliente="+cliente, true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("");
setCookie("CLIENTEMOSAICO",cliente,10);
}
//Make the DIV element draggagle:
dragElement(document.getElementById("ocoModal"));
function dragElement(elmnt) {
var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0;
if (document.getElementById(elmnt.id + "header")) {
/* if present, the header is where you move the DIV from:*/
document.getElementById(elmnt.id + "header").onmousedown = dragMouseDown;
} else {
/* otherwise, move the DIV from anywhere inside the DIV:*/
elmnt.onmousedown = dragMouseDown;
}
function dragMouseDown(e) {
e = e || window.event;
//e.preventDefault();
// get the mouse cursor position at startup:
pos3 = e.clientX;
pos4 = e.clientY;
var elementId = e.srcElement.id;
if (elementId != "template") {
document.onmouseup = closeDragElement;
// call a function whenever the cursor moves:
document.onmousemove = elementDrag;
}
}
function elementDrag(e) {
e = e || window.event;
//e.preventDefault();
// calculate the new cursor position:
pos1 = pos3 - e.clientX;
pos2 = pos4 - e.clientY;
pos3 = e.clientX;
pos4 = e.clientY;
// set the element's new position:
elmnt.style.top = (elmnt.offsetTop - pos2) + "px";
elmnt.style.left = (elmnt.offsetLeft - pos1) + "px";
}
function closeDragElement() {
/* stop moving when mouse button is released:*/
document.onmouseup = null;
document.onmousemove = null;
}
}
</script>
</body>
</html>