Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://thymeleaf.org">
- <head>
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"
- integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
- </head>
- <body class="bg-light">
- <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
- <a class="navbar-brand" href="#"><p th:text="${oneUser.username}"></p></a>
- <div class="collapse navbar-collapse" id="navbarText">
- <ul class="navbar-nav mr-auto">
- <li class="nav-item">
- <a class="nav-link" href="#">with roles:<span class="sr-only"></span></span></a>
- </li>
- <li class="nav-item">
- <a class="nav-link" href="#"><p th:each="userRole: ${oneUser.roles}">
- <span th:text="${userRole.getName()}">role</span>
- </p></a>
- </li>
- </ul>
- <span class="navbar-text">
- <a th:href="@{/logout}">Logout</a>
- </span>
- </div>
- </nav>
- </br>
- <div class="container-fluid">
- <div class="row">
- <div class="col col-2 bg-white vh-100 text-center">
- <div class="nav flex-column nav-pills" id="v-pills-tab" role="tablist" aria-orientation="vertical">
- <a class="nav-link active" id="v-pills-home-tab" data-toggle="pill" href="#v-pills-admin" role="tab"
- aria-controls="v-pills-home" aria-selected="true">Admin</a>
- <a class="nav-link" id="v-pills-profile-tab" data-toggle="pill" href="#v-pills-user" role="tab"
- aria-controls="v-pills-profile" aria-selected="false">User</a>
- </div>
- </div>
- <div class="col mx-auto p-4">
- <div class="tab-content" id="v-pills-tabContent">
- <div class="tab-pane fade show active" id="v-pills-admin" role="tabpanel"
- aria-labelledby="v-pills-admin-tab">
- <h1>Admin table</h1>
- <nav>
- <div class="nav nav-tabs" id="nav-tab" role="tablist">
- <a class="nav-item nav-link active" id="nav-home-tab" data-toggle="tab"
- href="#nav-usersTable" role="tab" aria-controls="nav-home" aria-selected="true">
- Users table</a>
- <a class="nav-item nav-link" id="nav-profile-tab" data-toggle="tab"
- href="#nav-addUser"
- role="tab" aria-controls="nav-profile" aria-selected="false">New User Add</a>
- </div>
- </nav>
- <div class="tab-content" id="nav-tabContent">
- <div class="tab-pane fade show active" id="nav-usersTable" role="tabpanel"
- aria-labelledby="nav-home-tab">
- <nav class="navbar navbar-expand-lg navbar-light bg-light">
- <a class="navbar-brand" href="#">All Users</a>
- </nav>
- <div class="card">
- <div class="block">
- <table class="table table-hover">
- <thead>
- <tr>
- <th>ID</th>
- <th>Username</th>
- <th>Surname</th>
- <th>Age</th>
- <th>Role</th>
- <th>Edit</th>
- <th>Delete</th>
- </tr>
- </thead>
- <tbody id="asd">
- <!-- <tr id="exampleTest" style="display: none"><td id= "username" ></td></tr>-->
- <tr id="exampleTest" style="display: none" th:each=user:${allUsers}>
- <td id="userId" th:text="${user.getId()}"></td>
- <td id="uasdqwe"></td>
- <td th:text="${user.lastname}"></td>
- <td th:text="${user.age}"></td>
- <td>
- <p th:each="userRole: ${user.roles}">
- <span th:text="${userRole.getName()}"></span></p></td>
- <td class="editTD">
- <div class="text-left">
- <button class="btn btn-info" data-toggle="modal"
- th:data-target="${'#editModal'+user.getId()}"
- type="button">Edit
- </button>
- </div>
- <div class="modal fade" id="editModal" tabindex="-1"
- role="dialog"
- aria-hidden="true" th:attrappend="id=${user.getId()}">
- <div class="modal-dialog" role="document">
- <div class="modal-content">
- <div class="modal-header">
- <h5 class="modal-title" id="modalLabel">
- Edit
- user</h5>
- <button type="button" class="ui-icon-close"
- data-dismiss="modal" aria-label="Close">
- <span aria-hidden="true">x</span>
- </button>
- </div>
- <form th:method="POST" th:action="@{admin/edit/}"
- th:object="${editUser}">
- <div class="modal-body">
- <div class="form-group col-sm-10 offset-sm-1 text-center">
- <div class="text center">
- <strong>ID</strong><br>
- <input class="form-control"
- type="number" name="id"
- th:value="${user.getId()}">
- </div>
- <div class="text center">
- <strong>Username</strong><br>
- <input class="form-control"
- type="text" name="username"
- th:value="${user.username}">
- </div>
- <div class="text center">
- <strong>LastName</strong><br>
- <input class="form-control"
- type="text" name="lastname"
- th:value="${user.lastname}">
- </div>
- <div class="text center">
- <strong>Age</strong><br>
- <input class="form-control"
- type="number" name="age"
- th:value="${user.age}">
- </div>
- <div class="text center">
- <strong>Password</strong><br>
- <input class="form-control"
- type="text" name="password"
- th:value="${user.password}">
- </div>
- <div><br>
- <strong>Role</strong>
- <select multiple
- class="custom-select form-control"
- th:id="${'role' + user.id}"
- name="newRole"
- id="newRole"
- required>
- <option
- th:each="z:${listRole}"
- th:selected="${#lists.contains(user.roles, z)}"
- th:value="${z.getName()}"
- th:text="${z.getName()}">
- </option>
- </select>
- </div>
- </div>
- </div>
- <div class="modal-footer">
- <button type="button"
- class="btn btn-secondary"
- data-dismiss="modal">Close
- </button>
- <input type="submit" class="btn btn-primary"
- value="Edit">
- </div>
- </form>
- </div>
- </div>
- </div>
- </td>
- <td>
- <div class="text-left">
- <button type="button" class="btn btn-danger"
- data-toggle="modal"
- th:data-target="${'#deleteModal'+ user.getId()}">
- Delete
- </button>
- </div>
- <div class="modal fade" id="deleteModal" tabindex="-1"
- role="dialog"
- th:attrappend="id=${user.getId}" aria-hidden="true">
- <div class="modal-dialog">
- <div class="modal-content">
- <div class="modal-header">
- <h5 class="modal-title" id="modalLbl">Delete
- user</h5>
- <button type="button" class="ui-icon-close"
- data-dismiss="modal" aria-label="Close">
- <span aria-hidden="true">x</span>
- </button>
- </div>
- <div class="modal-body">
- <div class="form-group col-sm-10 offset-sm-1 text-center">
- <div class="text center">
- <strong>ID</strong><br>
- <input class="form-control" readonly
- type="number" name="id"
- th:value="${user.getId()}">
- </div>
- <div class="text center">
- <strong>Username</strong><br>
- <input class="form-control" readonly
- type="text" name="userName"
- th:value="${user.username}">
- </div>
- <div class="text center">
- <strong>LastName</strong><br>
- <input class="form-control" readonly
- type="text" name="lastName"
- th:value="${user.lastname}">
- </div>
- <div class="text center">
- <strong>Age</strong><br>
- <input class="form-control" readonly
- type="number" name="age"
- th:value="${user.age}">
- </div>
- <div class="text center">
- <strong>Password</strong><br>
- <input class="form-control" readonly
- type="password" name="password"
- th:value="${user.password}">
- </div>
- <div><br>
- <strong>Role</strong>
- <select multiple
- class="custom-select form-control"
- readonly
- th:id="${'role' + user.id}"
- name="newRole"
- id="newRoles"
- required>
- <option
- th:each="z:${listRole}"
- th:selected="${#lists.contains(user.roles, z)}"
- th:value="${z.getName()}"
- th:text="${z.getName()}">
- </option>
- </select>
- </div>
- </div>
- </div>
- <div class="modal-footer">
- <button type="button"
- class="btn btn-default"
- data-dismiss="modal">Close
- </button>
- <form th:method="GET"
- th:action="@{admin/delete/{id}(id=${user.getId()})}"
- th:object="${user}">
- <input type="submit"
- class="btn btn-danger"
- value="Delete">
- </form>
- </div>
- </div>
- </div>
- </div>
- </td>
- </tr>
- </tbody>
- </table>
- </div>
- </div>
- </div>
- <div class="tab-pane fade show" id="nav-addUser" role="tabpanel"
- aria-labelledby="nav-home-tab">
- <div>
- <h5 class="card-header">Add new user</h5>
- <div class="container">
- <div class="row">
- <div class="col-sm-3 offset-sm-2 text-center">
- <form class="text-cetner fw-bold" th:method="POST" th:action="@{/admin/add}"
- th:object="${newUser}">
- <div class="form-group">
- <div class="text center">
- <strong>First Name</strong><br>
- <input class="form-control"
- type="text" name="username"
- th:value="*{username}">
- </div>
- <div class="text-center">
- <strong>LastName</strong>
- <input class="form-control"
- type="text" name="lastname"
- th:value="${lastname}">
- </div>
- <div class="text-center">
- <strong>Age</strong>
- <input class="form-control"
- type="number" name="age"
- th:value="${age}">
- </div>
- <div class="text center">
- <strong>Password</strong><br>
- <input class="form-control"
- type="password" name="password"
- th:value="*{password}">
- </div>
- <div class="form-group">
- <label class="col-form-label"
- th:for="role">Role</label>
- <select class="custom-select form-control"
- th:id="role" name="newRole" multiple>
- <option
- th:each="s: ${listRole}"
- th:value="${s.getName()}"
- th:selected="${s.getName() == 'ROLE_USER'}"
- th:text="${s.getName()}">
- </option>
- </select>
- </div>
- </div>
- <div>
- <button type="button submit" class="btn btn-success">Add new
- user
- </button>
- </div>
- </form>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- <div class="tab-pane fade" id="v-pills-user" role="tabpanel" aria-labelledby="v-pills-user-tab">
- <h2>User Info</h2>
- <table class="table table-striped">
- <thead>
- <nav class="navbar navbar-expand-lg navbar-light bg-light">
- <a class="navbar-brand" href="#">User Details</a>
- </nav>
- <th>Id</th>
- <th>Username</th>
- <th>LastName</th>
- <th>Age</th>
- <th>Password</th>
- <th>Role</th>
- </tr>
- </thead>
- <tbody>
- <td th:text="${oneUser.getId()}"></td>
- <td th:text="${oneUser.username}"></td>
- <td th:text="${oneUser.lastname}"></td>
- <td th:text="${oneUser.age}"></td>
- <td th:text="${oneUser.password}"></td>
- <td>
- <span th:text="${#strings.listJoin(oneUser.getRoleFiltered(), ', ')}">role</span>
- </td>
- </tbody>
- </table>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"
- integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj"
- crossorigin="anonymous"></script>
- <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js"
- integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN"
- crossorigin="anonymous"></script>
- <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.min.js"
- integrity="sha384-w1Q4orYjBQndcko6MimVbzY0tgp4pWB4lZ7lr30WKz0vr/aWKhXdBNmNb5D92v7s"
- crossorigin="anonymous"></script>
- <script type="text/javascript">
- jQuery(document).ready(function (){
- let NY = $('.btn btn-info')
- function fetchData() {
- fetch('http://localhost:8087/rest')
- .then(r => r.json()).then(data => {
- buildTable(data)
- })
- }
- fetchData()
- function buildTable(data) {
- let table = document.getElementById('asd')
- for (let i = 0; i < data.length; i++) {
- let row = `<tr>
- <td>${data[i].id}</td>
- <td>${data[i].username}</td>
- <td>${data[i].lastname}</td>
- <td>${data[i].age}</td>
- <td>${getRole(data[i].roles)}</td>
- <td>
- $(".editTD")
- </td>
- <td>
- </td>
- </tr>
- `
- table.innerHTML += row
- }
- }
- function getRole(roles) {
- let role = ""
- for (let i = 0; i < roles.length; i++) {
- role += roles[i].name + " "
- }
- return role.substring(0, role.length - 1).replace(/ROLE_/g, '')
- }
- $(document).ready(function () {
- $(' .asd .eBtn').on('click', function (event) {
- event.preventDefault()
- const href = $(this).attr('href')
- var text = $(this).text()
- if (text === 'Edit') {
- // $.get(href, function (country, status) { //main.js:14 Uncaught TypeError: $.get is not a function
- for (let i = 0; i < data.length; i++) {
- $.isFunction(href, function (data) {
- $('.myForm #id').val(data[i].id)
- $('.myForm #username').val(data[i].username)
- $('.myForm #lastname').val(data[i].lastname)
- });}
- $('.myForm #exampleModal').modal()
- } else {
- $('.myForm #id').val('')
- $('.myForm #username').val('')
- $('.myForm #lastname').val('')
- $('.myForm #exampleModal').modal()
- }
- });
- $('.asd .delBtn').on('click', function (event) {
- event.preventDefault()
- var href = $(this).attr('href')
- $('#myModal #delRef').attr('href', href)
- $('#myModal').modal()
- });
- });
- const buttonDelete = $("#delBtn");
- buttonDelete.click(
- function () {
- $.ajax("/rest", {
- method: "DELETE",
- data: {id: $(this).attr("value")}, //в rest-контроллер будет передан id=1 (см. value из тэга button выше)
- dataType: "text",
- success: function (msg) {
- $("#users")
- .find("#" + msg) //ищем div с id=1
- .remove();
- }
- })
- }
- )
- });
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement