upas-web-site/page-js.html

118 lines
4.8 KiB
HTML
Raw Normal View History

2024-10-09 15:13:24 +04:00
<html lang="ru">
</html>
<head>
<meta charset="utf-8">
<title>Моя страница</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="module" src="./node_modules/bootstrap/dist/js/bootstrap.min.js"></script>
<link href="./node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet" />
<link href="./node_modules/bootstrap-icons/font/bootstrap-icons.min.css" rel="stylesheet" />
<link rel="stylesheet" href="./css/style.css">
</head>
<body class="h-100 d-flex flex-column">
<header>
<nav class="navbar navbar-expand-md navbar-dark">
<div class="container-fluid">
<a class="navbar-brand" href="/">
<i class="bi bi-app"></i>
Мой сайт
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse justify-content-end" id="navbarNav">
<div class="navbar-nav">
<a class="nav-link" href="./index.html">Главная страница</a>
<a class="nav-link" href="./page2.html">Вторая страница</a>
<a class="nav-link" href="./page3.html">Третья страница</a>
<a class="nav-link active" href="./page-js.html">JavaScript</a>
</div>
</div>
</div>
</nav>
</header>
2024-11-06 15:38:00 +04:00
<main class="container-fluid p-3">
<table class="table table-sm table-hover">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Last</th>
<th scope="col">First</th>
<th scope="col">Birthday</th>
<th scope="col">E-Mail</th>
<th scope="col">Phone</th>
<th scope="col">Group</th>
2024-11-07 10:24:20 +04:00
<th scope="col"></th>
2024-11-06 15:38:00 +04:00
</tr>
</thead>
<tbody id="students">
</tbody>
</table>
2024-10-09 15:13:24 +04:00
</main>
<footer class="footer mt-auto d-flex flex-shrink-0 justify-content-center align-items-center">
Автор, 2022
</footer>
<script type="module">
2024-11-07 10:24:20 +04:00
const deleteStudent = async (id) => {
// eslint-disable-next-line no-restricted-globals, no-alert
const answer = confirm(`Do you want to delete student with id = ${id}?`);
if (!answer) {
return;
}
const response = await fetch(`http://localhost:3001/students/${id}`, { method: "delete" });
if (!response.ok) {
throw new Error(`Response status: ${response.status}`);
}
};
2024-11-06 15:38:00 +04:00
const getStudents = async () => {
2024-10-23 16:01:04 +04:00
const students = document.getElementById("students");
2024-11-07 10:24:20 +04:00
students.innerHTML = "";
2024-11-06 17:01:24 +04:00
const response = await fetch("http://localhost:3001/students?_expand=group");
2024-11-07 10:24:20 +04:00
if (!response.ok) {
throw new Error(`Response status: ${response.status}`);
}
2024-10-23 16:01:04 +04:00
const data = await response.json();
2024-11-07 10:24:20 +04:00
data.forEach((element) => {
2024-11-06 15:38:00 +04:00
const createTd = (value) => {
const td = document.createElement("td");
td.innerText = value;
return td;
};
const container = document.createElement("tr");
const id = document.createElement("th");
id.setAttribute("scope", "row");
id.innerText = element.id;
container.appendChild(id);
container.appendChild(createTd(element.last_name));
container.appendChild(createTd(element.first_name));
container.appendChild(createTd(element.bdate));
container.appendChild(createTd(element.email));
container.appendChild(createTd(element.phone));
container.appendChild(createTd(element.group.name));
2024-11-07 10:24:20 +04:00
const btn = document.createElement("button");
btn.setAttribute("type", "button");
btn.classList.add("btn", "btn-danger");
btn.innerHTML = "Delete";
container.appendChild(btn);
btn.addEventListener("click", async () => {
await deleteStudent(element.id);
getStudents();
});
2024-11-06 15:38:00 +04:00
students.appendChild(container);
2024-10-23 16:01:04 +04:00
});
console.log(data);
};
document.addEventListener("DOMContentLoaded", () => {
2024-11-06 15:38:00 +04:00
getStudents();
2024-10-23 16:01:04 +04:00
});
2024-10-09 15:13:24 +04:00
</script>
</body>
</html>