Skip to content
Snippets Groups Projects
view-all.html 4.25 KiB
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>All Articles</title>

  <link rel="icon" type="image/x-icon" href="/assets/favicon.ico" />
  <link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.5.0/font/bootstrap-icons.css" rel="stylesheet" />
  <link href="https://fonts.googleapis.com/css?family=Lato:300,400,700,300italic,400italic,700italic" rel="stylesheet" />
  <link rel="stylesheet" th:href="@{/styles.css}" />


  <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>

  <style>
    .navbar-nav .nav-link {
      font-size: 1.2rem;
      margin-right: 20px;
      color: rgb(51, 102, 255);
    }

    .navbar-nav .nav-link:hover {
      color: #00134d;
    }

    .navbar-nav .nav-link.active {
      color: rgb(51, 102, 255) !important;
    }

    .navbar-nav .nav-link.active:hover {
      color: #00134d !important;
    }
  </style>
</head>

<body>

<!-- navbar -->
<nav class="navbar navbar-expand-lg navbar-light bg-light static-top">
  <div class="container">
    <a class="navbar-brand" href="/upload">Article Processor</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="collapse navbar-collapse justify-content-end" id="navbarNav">
      <ul class="navbar-nav">
        <li class="nav-item">
          <a class="nav-link" href="/upload">Upload</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="/view">View all</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="/statistics">Statistics</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="/upload">About project</a>
        </li>
      </ul>
    </div>
  </div>
</nav>

<!-- Page Content -->
<header class="masthead">
  <div class="container position-relative">
    <div class="row justify-content-center">
      <div class="col-xl-8">
        <div class="text-center text-white">
          <h1 class="mb-4">All Uploaded Articles</h1>
        </div>
      </div>
    </div>
  </div>
</header>

<div class="container mt-5 mb-5">
  <!-- Filters -->
  <div class="row mb-3">
    <div class="col-md-6">
      <input type="text" id="searchTitle" class="form-control" placeholder="Search by title...">
    </div>
    <div class="col-md-6">
      <select id="statusFilter" class="form-select">
        <option value="">All Statuses</option>
        <option value="PDF">PDF</option>
        <option value="Referenced">Referenced</option>
      </select>
    </div>
  </div>

  <div class="table-responsive">
    <table class="table table-striped table-bordered text-center align-middle">
      <thead class="table-light">
      <tr>
        <th>ID</th>
        <th>Title</th>
        <th>Status</th>
      </tr>
      </thead>
      <tbody>
      <tr th:each="doc: ${documents}">
        <td th:text="${doc.id}"></td>
        <td><a th:href="@{'/view/' + ${doc.id}}" th:text="${doc.title}"></a></td>
        <td th:text="${doc.status}"></td>
      </tr>
      </tbody>
    </table>
  </div>
</div>

<!-- Footer -->
<footer class="footer bg-light mt-5">
  <div class="container text-center">
    <p class="text-muted small">&copy; Eliška Kozáčiková 2025. All Rights Reserved.</p>
  </div>
</footer>

<script>
  $(document).ready(function () {
    const $rows = $('table tbody tr');

    $('#searchTitle, #statusFilter').on('input change', function () {
      const searchText = $('#searchTitle').val().toLowerCase();
      const selectedStatus = $('#statusFilter').val().toLowerCase();

      $rows.each(function () {
        const title = $(this).find('td:nth-child(2)').text().toLowerCase();
        const status = $(this).find('td:nth-child(3)').text().toLowerCase();

        const matchTitle = title.includes(searchText);
        const matchStatus = selectedStatus === "" || status === selectedStatus;

        $(this).toggle(matchTitle && matchStatus);
      });
    });
  });
</script>

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>

</body>
</html>