passesFrontend/static/scripts/passes-table.js

145 lines
4.3 KiB
JavaScript
Raw Normal View History

2024-05-15 13:27:22 +00:00
const createTable = () => {
const table = document.getElementById("passesTable");
const tbody = table.querySelector("tbody");
// Очищаем таблицу
tbody.innerHTML = "";
passes.forEach((pass) => {
const row = document.createElement("tr");
row.setAttribute("onclick", `openPass(${pass.id});`);
// Добавляем ячейки с данными
const id = document.createElement("td");
id.textContent = pass.id;
row.appendChild(id);
const status = document.createElement("td");
status.textContent = pass.status;
row.appendChild(status);
const date = document.createElement("td");
const rawDate = new Date(pass.date);
const formattedDate = `${rawDate.getDate().toString().padStart(2, "0")}/${(
rawDate.getMonth() + 1
)
.toString()
.padStart(2, "0")}/${rawDate.getFullYear()}`;
date.textContent = formattedDate;
row.appendChild(date);
const type = document.createElement("td");
type.textContent = pass.type;
row.appendChild(type);
const worker = document.createElement("td");
worker.textContent = pass.name;
row.appendChild(worker);
const legal = document.createElement("td");
legal.innerHTML = pass.legal;
row.appendChild(legal);
const finaldate = document.createElement("td");
if (pass.finaldate) {
const rawFinalDate = new Date(pass.finaldate);
const formattedfinalDate = `${rawFinalDate
.getDate()
.toString()
.padStart(2, "0")}/${(rawFinalDate.getMonth() + 1)
.toString()
.padStart(2, "0")}/${rawFinalDate.getFullYear()}`;
finaldate.textContent = formattedfinalDate;
} else {
finaldate.textContent = "";
}
row.appendChild(finaldate);
const address = document.createElement("td");
address.textContent = pass.address;
row.appendChild(address);
const car = document.createElement("td");
if (pass.car) {
let carText = pass.car.replace(/"/g, '"');
carText = JSON.parse(carText).join(", ");
car.textContent = carText;
}
row.appendChild(car);
tbody.appendChild(row);
});
};
document.addEventListener("DOMContentLoaded", function () {
createTable();
});
function getCookie(name) {
var cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; i++) {
var cookie = cookies[i].trim();
if (cookie.startsWith(name + "=")) {
return cookie.substring(name.length + 1);
}
}
return null;
}
function requestUpdate() {
document.getElementById("passesTable").style.filter = "brightness(0.85)";
const formData = new FormData();
formData.append("searchText", document.getElementById("table-search").value);
formData.append(
"page",
parseInt(document.getElementById("page-number").textContent)
);
const requestOptions = {
method: "POST",
headers: {
Authorization: getCookie("token"),
},
body: formData,
};
fetch(API_SERVER + "/passes/getpasses", requestOptions)
.then((response) => {
document.getElementById("passesTable").style.filter = "brightness(1)";
if (response.ok) {
return response.json();
} else {
console.error("Ошибка при отправке POST запроса.");
return "Ошибка при отправке запроса.";
}
})
.then((data) => {
passes.splice(0, passes.length);
passes.push(
...data.passes.map((item) => ({
id: item.id,
status: item.Состояние,
date: item.Дата_выдачи,
finaldate: item.Действиео,
type: item.Вид_пропуска,
name: item.Работник,
legal: item.Организация,
address: item.Зонаоступа,
car: item.Авто_госомер,
tmcname: item.Наименование,
}))
);
createTable();
totalMax = Math.ceil(data.totalCount / 15);
if (totalMax === 0) {
totalMax = 1;
}
var currentPage = parseInt(pageNumberInput.textContent, 10);
if (currentPage > totalMax) {
pageNumberInput.textContent = totalMax;
requestUpdate();
}
})
.catch((error) => {
console.error("Ошибка при отправке запроса:", error);
});
}