Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html lang="ru">
- <head>
- <meta charset="utf-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <link href="index.css" rel="stylesheet">
- <title>Лабораторные рабоы по ксп</title>
- <!-- Bootstrap -->
- <link href="css/bootstrap.css" rel="stylesheet">
- </head>
- <body>
- <header>
- <br>
- <div class="container">
- <ul class="nav nav-tabs">
- <li class="nav-item">
- <a class="nav-link active" href="#page1" role="tab" data-toggle="tab">Вкладка 1</a>
- </li>
- <li class="nav-item">
- <a class="nav-link" href="#page2" role="tab" data-toggle="tab">Вкладка 2</a>
- </li>
- <li class="nav-item">
- <a class="nav-link" href="#page3" role="tab" data-toggle="tab">Вкладка 3</a>
- </li>
- </ul>
- </div>
- </header>
- <section class="main-content">
- <!-- Tab panes -->
- <div class="tab-content">
- <div role="tabpanel" class="tab-pane fade show active" id="page1">
- <div class="container">
- <br>
- <p>Работу выполнила: Чепракова Марина Алексеевна</p>
- <p>Номер группы: ИКБО-02-17</p>
- <p>Номер индивидуального задания: 7</p>
- <p>Текст индивидуального задания: Дан текст. Определите <br>
- процентное отношение строчных и прописных букв <br>
- к общему числу символов в нем. На вход поступает<br>
- текст в виде строки.</p><br>
- </div>
- </div>
- <div role="tabpanel" class="tab-pane fade" id="page2">
- <div class="container">
- <br />
- <input type="text" class="form-control" placeholder="" id="request"><br />
- <div class="input-group-append">
- <button class="btn btn-outline-primary" type="button" id="sendRequestButton" onclick="count()">Отправить</button>
- </div><br />
- </div>
- <div class="container">
- <input readonly type="text" class="form-control" id="response"><br />
- </div>
- <script>
- async function count() {
- let str = document.getElementById("request").value;
- const host = "http://localhost:8080/calculate?str=";
- const response = await fetch(`${host + str}`, { method: 'POST' });
- const json = await response.json();
- document.getElementById("response").value = `${json.value}`;
- }
- </script>
- </div>
- <div role="tabpanel" class="tab-pane fade" id="page3">
- <br />
- <div class="container" id="table">
- <button class="btn btn-outline-primary" type="button" id="addButton" onclick="addBook()">Добавить</button>
- </div>
- <div class="container" id="forAdds">
- <script>
- const host = "http://localhost:8080/api/students";
- let counter = 0;
- let revertArr = [];
- let canAdd = true;
- function addRow(book) {
- let margin = "margin: 5px;"
- let div = document.createElement("div");
- div.setAttribute("id", `div${book.id}`);
- let changeButton = document.createElement("button");
- changeButton.innerHTML = "change";
- changeButton.setAttribute("id", `ch${book.id}`);
- changeButton.setAttribute("onclick", "changeRow(event)");
- changeButton.setAttribute("style", margin);
- changeButton.setAttribute("class", "btn btn-outline-primary");
- let deleteButton = document.createElement("button");
- deleteButton.innerHTML = "delete";
- deleteButton.setAttribute("id", `del${book.id}`);
- deleteButton.setAttribute("onclick", "deleteRow(event)");
- deleteButton.setAttribute("style", margin);
- deleteButton.setAttribute("class", "btn btn-outline-primary");
- let titleInput = document.createElement("input");
- titleInput.setAttribute("id", `tit${book.id}`);
- titleInput.setAttribute("readonly", null);
- titleInput.setAttribute("style", margin);
- titleInput.setAttribute("class", "form-control");
- titleInput.value = book.title;
- let authorInput = document.createElement("input");
- authorInput.setAttribute("id", `aut${book.id}`);
- authorInput.setAttribute("readonly", null);
- authorInput.setAttribute("style", margin);
- authorInput.setAttribute("class", "form-control");
- authorInput.value = book.author;
- let releaseYearInput = document.createElement("input");
- releaseYearInput.setAttribute("id", `rel${book.id}`);
- releaseYearInput.setAttribute("readonly", null);
- releaseYearInput.setAttribute("style", margin);
- releaseYearInput.setAttribute("class", "form-control");
- releaseYearInput.value = book.releaseYear;
- div.appendChild(titleInput);
- div.appendChild(authorInput);
- div.appendChild(releaseYearInput);
- div.appendChild(changeButton);
- div.appendChild(deleteButton);
- document.getElementById(`forAdds`).append(div);
- }
- function changeRow(event) {
- let id = event.target.id.match(/(\d+)/)[0];
- let changeButton = event.target;
- let deleteButton = document.getElementById(`del${id}`);
- let titleInput = document.getElementById(`tit${id}`);
- let authorInput = document.getElementById(`aut${id}`);
- let releaseYearInput = document.getElementById(`rel${id}`);
- titleInput.removeAttribute("readonly");
- authorInput.removeAttribute("readonly");
- releaseYearInput.removeAttribute("readonly");
- deleteButton.innerHTML = "revert"
- deleteButton.setAttribute("onclick", "revertRow(event)");
- changeButton.innerHTML = "update";
- changeButton.setAttribute("onclick", "udpateRow(event)");
- revertArr.push({ id: id, tit: titleInput.value, author: authorInput.value, releaseYear: releaseYearInput.value})
- }
- async function deleteRow(event) {
- let id = event.target.id.match(/(\d+)/)[0];
- try {
- const response = await fetch(`${host}/${id}`, { method: 'DELETE' });
- const status = await response.status;
- if (status == 200) {
- let div = document.getElementById(`div${id}`);
- div.parentNode.removeChild(div);
- } else {
- alert('something get wrong');
- }
- } catch {
- alert('server don`t response');
- }
- }
- async function updateRow(event) {
- let id = event.target.id.match(/(\d+)/)[0];
- let changeButton = event.target;
- let deleteButton = document.getElementById(`del${id}`);
- let titleInput = document.getElementById(`tit${id}`);
- let authorInput = document.getElementById(`aut${id}`);
- let releaseYearInput = document.getElementById(`rel${id}`);
- try {
- let book = { id: id, tit: titleInput.value, author: authorInput.value, releaseYear: releaseYearInput.value};
- if (notEmpty(book)) {
- const response = await fetch(`${host}/${id}`, { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(book) });
- const status = await response.status;
- if (status == 200) {
- titleInput.setAttribute("readonly", null);
- authorInput.setAttribute("readonly", null);
- releaseYearInput.setAttribute("readonly", null);
- changeButton.innerHTML = "change";
- changeButton.setAttribute("onclick", "changeRow(event)");
- deleteButton.innerHTML = "delete";
- deleteButton.setAttribute("onclick", "deleteRow(event)");
- } else {
- alert('something get wrong');
- }
- } else {
- alert('fill all inputs');
- }
- }
- catch {
- alert('server don`t response');
- }
- }
- function revertRow(event) {
- let id = event.target.id.match(/(\d+)/)[0];
- revertArr.forEach(
- function (element, index) {
- if (element.id == id) {
- let deleteButton = event.target;
- let changeButton = document.getElementById(`ch${id}`);
- let titleInput = document.getElementById(`tit${id}`);
- let authorInput = document.getElementById(`aut${id}`);
- let releaseYearInput = document.getElementById(`rel${id}`);
- titleInput.setAttribute("readonly", null);
- authorInput.setAttribute("readonly", null);
- releaseYearInput.setAttribute("readonly", null);
- titleInput.value = element.title;
- authorInput.value = element.author;
- releaseYearInput.value = element.releaseYear;
- changeButton.innerHTML = "change";
- changeButton.setAttribute("onclick", "changeRow(event)");
- deleteButton.innerHTML = "delete";
- deleteButton.setAttribute("onclick", "deleteRow(event)");
- revertArr.splice(index, index);
- }
- }
- )
- }
- async function addBook() {
- if (canAdd) {
- let margin = "margin: 5px;"
- let div = document.createElement("div");
- div.setAttribute("id", `newBook`);
- let acceptButton = document.createElement("button");
- acceptButton.innerHTML = "accept";
- acceptButton.setAttribute("id", `ac`);
- acceptButton.setAttribute("onclick", "accept()");
- acceptButton.setAttribute("style", margin);
- acceptButton.setAttribute("class", "btn btn-outline-primary");
- let cancelButton = document.createElement("button");
- cancelButton.innerHTML = "cancel";
- cancelButton.setAttribute("id", `can`);
- cancelButton.setAttribute("onclick", "cancel()");
- cancelButton.setAttribute("style", margin);
- cancelButton.setAttribute("class", "btn btn-outline-primary");
- let titleInput = document.createElement("input");
- titleInput.setAttribute("id", `tit`);
- titleInput.setAttribute("style", margin);
- titleInput.setAttribute("class", "form-control");
- let authorInput = document.createElement("input");
- authorInput.setAttribute("id", `aut`);
- authorInput.setAttribute("style", margin);
- authorInput.setAttribute("class", "form-control");
- let releaseYearInput = document.createElement("input");
- releaseYearInput.setAttribute("id", `rel`);
- releaseYearInput.setAttribute("style", margin);
- releaseYearInput.setAttribute("class", "form-control");
- div.appendChild(titleInput);
- div.appendChild(authorInput);
- div.appendChild(releaseYearInput);
- div.appendChild(acceptButton);
- div.appendChild(cancelButton);
- document.body.append(div);
- canAdd = false;
- }
- else {
- alert("Accept or cancel the last row");
- }
- }
- async function accept() {
- let div = document.getElementById(`newBook`);
- let acceptButton = document.getElementById(`ac`);
- let cancelButton = document.getElementById(`can`);
- let titleInput = document.getElementById(`tit`);
- let authorInput = document.getElementById(`aut`);
- let releaseYearInput = document.getElementById(`rel`);
- try {
- let book = { tit: titleInput.value, author: authorInput.value, releaseYear: releaseYearInput.value};
- if (notEmpty(book)) {
- const response = await fetch(`${host}`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(book) });
- const status = await response.status;
- if (status == 200) {
- const json = await response.json();
- div.setAttribute("id", `div${json.id}`);
- titleInput.setAttribute("id", `tit${json.id}`);
- titleInput.setAttribute("readonly", null);
- authorInput.setAttribute("id", `aut${json.id}`);
- authorInput.setAttribute("readonly", null);
- releaseYearInput.setAttribute("id", `rel${json.id}`);
- releaseYearInput.setAttribute("readonly", null);
- acceptButton.setAttribute("id", `ch${json.id}`);
- acceptButton.innerHTML = "change";
- acceptButton.setAttribute("onclick", "changeRow(event)");
- cancelButton.setAttribute("id", `del${json.id}`);
- cancelButton.innerHTML = "delete";
- cancelButton.setAttribute("onclick", "deleteRow(event)");
- canAdd = true;
- } else {
- alert('something get wrong');
- }
- } else {
- alert('fill all inputs');
- }
- }
- catch {
- alert('server don`t response');
- }
- }
- function cancel() {
- let div = document.getElementById(`newBook`);
- div.parentNode.removeChild(div);
- canAdd = true;
- }
- async function loadData() {
- try {
- const response = await fetch(`${host}`);
- const json = await response.json();
- json.forEach(it => addRow(it));
- } catch {
- alert('server don`t response');
- }
- }
- function notEmpty(book) {
- if (book.title == "" || book.author == "" || book.releaseYear == "") {
- return false;
- }
- return true;
- }
- loadData();
- </script>
- </div>
- </div>
- </div>
- </section>
- <footer>
- <div class="container-fluid">
- <hr>
- <div class="row">
- <div>
- <p class="text-muted pull-right" style="margin-left:215px">© 2019 Чепракова Марина, ИКБО-02-17</p>
- </div>
- </div>
- </div>
- </footer>
- <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
- <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
- <!-- Include all compiled plugins (below), or include individual files as needed -->
- <script src="js/bootstrap.js"></script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement