Untitled
unknown
plain_text
2 years ago
18 kB
8
Indexable
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
<script src="https://code.jquery.com/ui/1.13.2/jquery-ui.js"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-A3rJD856KowSb7dwlZdYEkO39Gagi7vIsF0jrRAoQmDKKtQBHUuLZ9AsSv4jD4Xa" crossorigin="anonymous"></script>
<script src="https://unpkg.com/localbase@0.7.5/dist/localbase.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.5/font/bootstrap-icons.css">
<title>Tickets</title>
</head>
<body>
<script>
</script>
<style>
#divNovaTarefa.show{
transition: "all 1s";
opacity: 1;
display: "";
}
#divNovaTarefa.hidden{
transition: "all 1s";
opacity: 0;
display: none;
}
</style>
<div class="container" style="margin-top: 10px;">
<h1>Tickets</h1>
<br>
<button id="novaTarefa" class="btn btn-success btn-sm">New Ticket <span id="mais">+</span><span id="menos" style="display: none;">-</span></button><br><br>
<div id="vai">
<span id="hora"></span>
</div>
<div id="divNovaTarefa" class="hidden">
<h3>Insert</h3>
<div class="">
<div class="row">
<div class="">Short Description:</div>
<div class="form-floating">
<textarea class="form-control" placeholder="Ticket area..." id="description"></textarea>
</div>
<!-- <input type="text" class="form-control" name="texto3" id="texto3"> -->
<div class="">Comments: </div><div class=""><input type="text" class="form-control" name="comments" id="comments"></div><br><br>
<!-- <div class="">Status: </div><div class=""><input type="text" class="form-control" name="status" id="status"></div> -->
<div class="col col-1">Priority:</div> <div class="col col-2"><select name="priority" id="priority" class="form-control">
<option value="low">low</option>
<option value="medium">medium</option>
<option value="high">high</option>
</select></div>
<div class="col col-1">Caller:</div>
<div class="col col-2"><input type="text" class="form-control" name="caller" id="caller"></div>
<div class="col col-1">Status:</div> <div class="col col-2"><select name="status" id="status" class="form-control">
<option value="opened">Opened</option>
<option value="closed">Closed</option>
<!-- <option value="high">high</option> -->
</select></div>
<br>
<div class="col col-1">Creation Date:</div>
<div class="col col-2"><input type="date" class="form-control" name="creationDate" id="creationDate" pattern="[0-9]{2}-[0-9]{2}-[0-9{4}"></div>
<div class="col col-1">Closed Date:</div>
<div class="col col-2"><input type="date" class="form-control" name="closedDate" id="closedDate"></div>
<div class="row">
<div class="col col-1">Time: </div><div class="col col-2"><input type="text" class="form-control" name="time" id="time"></div>
<div class="col col-1">Technician: </div><div class="col col-2"><input type="text" class="form-control" name="technician" id="technician"></div>
</div>
<br><br>
<div class=""><button id="add" class="btn btn-success btn-sm">adicionar</button></div>
</div>
</div>
</div>
<hr>
<div>
<h3>Scheduled</h3> search: <input type="text" id="pesquisa"><br><br>
<table id="tbtarefas" class="table table-sm table-striped">
</table>
</div>
<div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Update ticket data</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<form>
<div class="mb-3">
<label for="recipient-name" class="col-form-label">Nº:</label>
<input type="text" class="form-control" id="numero">
</div>
<div class="mb-3">
<label for="message-text" class="col-form-label">Priority:</label>
<select name="priority" id="prioridade" class="form-control">
<option value="low">low</option>
<option value="medium">medium</option>
<option value="high">high</option>
</select>
</div>
<div class="mb-3">
<label for="recipient-name" class="col-form-label">Caller:</label>
<input type="text" class="form-control" id="solicitante">
</div>
<div class="mb-3">
<label for="message-text" class="col-form-label">Short Description:</label>
<textarea class="form-control" id="descricao"></textarea>
</div>
<div class="mb-3">
<label for="recipient-name" class="col-form-label">Comments:</label>
<textarea class="form-control" id="comentarios"></textarea>
</div>
<div class="mb-3">
<label for="message-text" class="col-form-label">Status:</label>
<select name="stts" id="stts" class="form-control">
<option value="opened">Opened</option>
<option value="holdin">Holding</option>
<option value="closed">Closed</option>
</select>
</div>
<div class="mb-3">
<label for="recipient-name" class="col-form-label">Creation Date:</label>
<input type="date" class="form-control" id="dataCriacao">
</div>
<div class="mb-3">
<label for="message-text" class="col-form-label">Closed Date:</label>
<input type="date" class="form-control datepicker" id="dataFim">
</div>
<div class="mb-3">
<label for="recipient-name" class="col-form-label">Time:</label>
<input type="text" class="form-control" id="tempo">
</div>
<div class="mb-3">
<label for="message-text" class="col-form-label">Technician:</label>
<input class="form-control" id="tecnico">
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Update</button>
</div>
</div>
</div>
</div>
</body>
</html>
<script>
let db = new Localbase("db");
findAll();
if(document.querySelector("body").clientWidth < 500){
document.querySelectorAll(".row").forEach(ele => {
ele.classList.remove("row");
ele.querySelectorAll(".col").forEach(el => {
el.classList.remove("col");
});
});
};
let exibir = false;
document.querySelector("#novaTarefa").addEventListener("click", function(){
if(exibir == false){
exibir = true;
document.querySelector("#divNovaTarefa").classList.remove("hidden");
document.querySelector("#divNovaTarefa").classList.add("show");
document.querySelector("#mais").style.display = "none";
document.querySelector("#menos").style.display = "";
}else{
exibir = false;
document.querySelector("#divNovaTarefa").classList.remove("show");
document.querySelector("#divNovaTarefa").classList.add("hidden");
document.querySelector("#mais").style.display = "";
document.querySelector("#menos").style.display = "none";
}
});
document.querySelector("#add").addEventListener("click", function () {
let campo1 = document.querySelector("#priority").value;
let campo2 = document.querySelector("#caller").value;
let campo3 = document.querySelector("#description").value;
let campo9 = document.querySelector("#comments").value;
let campo4 = document.querySelector("#status").value;
let campo5 = document.querySelector("#creationDate").value;
let campo6 = document.querySelector("#closedDate").value;
let campo7 = document.querySelector("#time").value;
let campo8 = document.querySelector("#technician").value;
if(((campo1 == null) || (campo1 == 'undefined') || (campo1 == ""))
|| ((campo2 == null) || (campo2 == 'undefined') || (campo2 == ""))
|| ((campo3 == null) || (campo3 == 'undefined') || (campo3 == ""))
|| ((campo4 == null) || (campo4 == 'undefined') || (campo4 == ""))
|| ((campo4 == null) || (campo4 == 'undefined') || (campo4 == ""))
|| ((campo5 == null) || (campo5 == 'undefined') || (campo5 == ""))){
alert("Corrigir campos vazios!!");
}else{
db.collection("teste").add({
"unique_key" : (Math.floor(Math.random() * (1000 - 1 + 1)) + 1) * (Math.floor(Math.random() * (1000 - 1 + 1)) + 1),
"priority": campo1,
"caller": campo2,
"description": campo3,
"comments": campo9,
"status": campo4,
"creationDate": campo5,
"closedDate": campo6,
"time": campo7,
"technician": campo8
});
findAll();
}
});
document.querySelector("#pesquisa").addEventListener("keyup", function () {
let texto = document.querySelector("#pesquisa").value;
document.querySelectorAll("#tbtarefas tbody tr").forEach(ele => {
if (!ele.textContent.toLowerCase().includes(texto.toLowerCase())) {
ele.style.display = "none";
} else {
ele.style.display = "";
}
});
})
function findAll(){
setTimeout(() => {
db.collection("teste").get().then(dados => {
console.log(dados);
// let addlinha = `<tr><td>${campo1}</td><td>${campo2}</td><td>${campo3}</td><td>${campo4}</td><td><button class="btn btn-danger btn-sm"> X </button></td></tr>`;
// let addlinha = `<thead><tr><th>Nº</th><th>User</th><th>Date</th><th>Ticket</th><th>Priority</th><th>Tecnican</th><th>Del</th></tr></thead>`;
let addlinha = `<thead><tr><th>Nº</th><th>Priority</th><th>Caller</th><th>Short Description</th><th>Comments</th><th>Status</th><th>Creation Date</th><th>Closed Date</th><th>Time</th><th>Technician</th><th>Update</th><th>Delete</th></tr></thead>`;
dados.forEach(e=>{
console.log(e);
// addlinha += `<tr><td>${e.campo1}</td><td>${e.campo2}</td><td>${e.campo3}</td><td>${e.campo4}</td><td>${e.campo5}</td><td><button class="btn btn-danger btn-sm"> X </button></td></tr>`;
addlinha += `<tr><td>${e.unique_key}</td><td>${e.priority}</td><td>${e.caller}</td><td>${e.description}</td><td>${e.comments}</td><td>${e.status}</td><td>${e.creationDate}</td><td>${e.closedDate}</td><td>${e.time}</td><td>${e.technician}</td>
<td><button class="btn btn-sm btn-warning" data-bs-target="#exampleModal" data-bs-toggle="modal"><i class="bi bi-recycle"></i></button></td>
<td><button class="btn btn-danger btn-sm"><i class="bi bi-trash"></i></button></td></tr>`;
});
let trs = "";
trs += addlinha;
let tbtarefas = document.querySelector("#tbtarefas");
tbtarefas.innerHTML = "";
tbtarefas.innerHTML = trs;
document.querySelectorAll("#tbtarefas button.btn-danger").forEach(ele => {
ele.addEventListener("click", function () {
let del = (ele.closest("tr").querySelector("td:nth-child(1)").textContent);
db.collection("teste").doc({"unique_key" : parseInt(del,10)}).delete();
ele.closest("tr").remove();
});
});
document.querySelector(".btn-warning").addEventListener("click", function(){
alert();
let campo1 = this.closest("tr").querySelectorAll("td")[0].textContent;
let campo2 = this.closest("tr").querySelectorAll("td")[1].textContent;
let campo3 = this.closest("tr").querySelectorAll("td")[2].textContent;
let campo9 = this.closest("tr").querySelectorAll("td")[3].textContent;
let campo4 = this.closest("tr").querySelectorAll("td")[4].textContent;
let campo5 = this.closest("tr").querySelectorAll("td")[5].textContent;
let campo6 = this.closest("tr").querySelectorAll("td")[6].textContent;
let campo7 = this.closest("tr").querySelectorAll("td")[7].textContent;
let campo8 = this.closest("tr").querySelectorAll("td")[8].textContent;
let campo10 = this.closest("tr").querySelectorAll("td")[9].textContent;
$("#numero").val(campo1);
$("#prioridade").val(campo2);
$("#solicitante").val(campo3);
$("#descricao").val(campo9);
$("#comentarios").val(campo4);
$("#stts").val(campo5);
$("#dataCriacao").val(campo6);
$("#dataFim").val(campo7);
$("#tempo").val(campo8);
$("#tecnico").val(campo10);
// Exemplo de uso da função de atualização
const novoValor = {
priority: $("#prioridade").val(),
caller: $("#solicitante").val(),
description: $("#descricao").val(),
comments: $("#comentarios").val(),
status: $("#stts").val(),
creationDate: $("#dataCriacao").val(),
closedDate: $("#dataFim").val(),
time: $("#tempo").val(),
technician: $("#tecnico").val(),
};
const uniqueKeyParaAtualizar = parseInt($("#numero").val(),10); // Substitua pelo valor da unique_key do registro que deseja atualizar
// Chame a função de atualização
atualizarRegistro(uniqueKeyParaAtualizar, novoValor);
});
});
}, 500);
}
function atualizarRegistro(uniqueKey, novoValor) {
// Verifique se a coleção existe
db.collection("teste").get().then((documentos) => {
documentos.forEach((documento) => {
if (documento.unique_key === uniqueKey) {
// Atualize o registro com o novo valor
db.collection("teste").doc({"unique_key": parseInt(uniqueKey, 10)}).update(novoValor).then(() => {
alert("The line was updated!");
}).catch((error) => {
console.error("An error occurred while updating:", error);
});
}
});
});
}
setInterval(() => {
let data = new Date();
let hr = data.getHours() < 10 ? "0" + data.getHours() : data.getHours();
let min = data.getMinutes() < 10 ? "0" + data.getMinutes() : data.getMinutes();
let sec = data.getSeconds() < 10 ? "0" + data.getSeconds() : data.getSeconds();
// document.querySelector("#vai").style.position = "fixed";
// document.querySelector("#vai").style.bottom = "10px";
// document.querySelector("#vai").style.width = "100%";
// // document.querySelector("#hora").style.width = "100px";
// // document.querySelector("#hora").style.backgroundColor = "#000"+ Math.floor(Math.random() * 1000);
// document.querySelector("#hora").style.backgroundColor = "green";
// document.querySelector("#hora").style.color = "white";
document.querySelector("#hora").textContent = `${hr}:${min}:${sec}`;
}, 500);
</script>Editor is loading...