preparations for app assignment

This commit is contained in:
Jörg Henke
2026-01-15 17:52:36 +01:00
parent aaee7c9dff
commit c5604d3ce8
10 changed files with 363 additions and 12 deletions

View File

@@ -22,3 +22,6 @@ spring.security.oauth2.client.provider.keycloak.user-name-attribute = preferred_
# application
server.port = ${server.port}
server.servlet.context-path = /timetrack
spring.mvc.contentnegotiation.favor-parameter=false
spring.mvc.contentnegotiation.media-types.css=text/css

View File

@@ -8,19 +8,18 @@
<link rel="stylesheet" type="text/css" th:href="@{/webjars/bootstrap/5.3.8/css/bootstrap.min.css}" />
<link rel="stylesheet" type="text/css" th:href="@{/webjars/datatables/2.3.5/css/dataTables.dataTables.min.css}" />
<link rel="stylesheet" type="text/css" th:href="@{/webjars/font-awesome/7.1.0/css/all.min.css}" />
<link rel="stylesheet" type="text/css" th:href="@{/webjars/fullcalendar/6.1.10/main.css}" />
<link rel="stylesheet" type="text/css" th:href="@{/css/style.css}">
<link rel="stylesheet" type="text/css" th:href="@{/public/dynamicstyle.css}">
<link rel="icon" type="image/png" sizes="32x32" th:href="@{/png/favicon/favicon-32x32.png}" />
<link rel="icon" type="image/png" sizes="16x16" th:href="@{/png/favicon/favicon-16x16.png}" />
<script th:src="@{/webjars/jquery/3.7.1/jquery.min.js}"></script>
<script th:src="@{/webjars/bootstrap/5.3.8/js/bootstrap.bundle.min.js}"></script>
<script th:src="@{/webjars/datatables/2.3.5/js/dataTables.dataTables.min.js}"></script>
<script th:src="@{/webjars/fullcalendar/6.1.10/main.js}"></script>
<script th:src="@{/js/helper.js}"></script>
<script th:src="@{/js/clock.js}"></script>
<script th:src="@{/js/schedule.js}"></script>
<script type="text/javascript" th:src="@{/webjars/jquery/3.7.1/jquery.min.js}"></script>
<script type="text/javascript" th:src="@{/webjars/bootstrap/5.3.8/js/bootstrap.bundle.min.js}"></script>
<script type="text/javascript" th:src="@{/webjars/datatables/2.3.5/js/dataTables.dataTables.min.js}"></script>
<script type="text/javascript" th:src="@{/webjars/fullcalendar/6.1.19/index.global.min.js}"></script>
<script type="text/javascript" th:src="@{/js/helper.js}"></script>
<script type="text/javascript" th:src="@{/js/clock.js}"></script>
<script type="text/javascript" th:src="@{/js/schedule.js}"></script>
</head>
<body>

View File

@@ -0,0 +1,19 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" xmlns:sec="http://www.thymeleaf.org/extras/spring-security" layout:decorate="~{layout/main.html}">
<head>
<title>Projektmanagement</title>
</head>
<body>
<font layout:fragment="title">Projekt</font>
<ul layout:fragment="menu">
<li class="nav-item" sec:authorize="hasRole('timetrack_user')">
<a class="nav-link btn btn-secondary btn-white-text" th:href="@{/projectmanagement}">zur Projektübersicht</a>
</li>
</ul>
<main layout:fragment="content">
<div th:text="${app.name}"></div>
<div th:each="p : ${workpackages}" th:text="${p.name}"></div>
TODO: assign app to workpackage and store it
</main>
</body>
</html>

View File

@@ -0,0 +1,46 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" xmlns:sec="http://www.thymeleaf.org/extras/spring-security" layout:decorate="~{layout/main.html}">
<head>
<title>Projektmanagement</title>
</head>
<body>
<font layout:fragment="title">Projekt</font>
<ul layout:fragment="menu">
<li class="nav-item" sec:authorize="hasRole('timetrack_user')">
<a class="nav-link btn btn-secondary btn-white-text" th:href="@{/projectmanagement}">zur Projektübersicht</a>
</li>
</ul>
<main layout:fragment="content">
<div class="p-2">
<table id="table" class="table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Beschreibung</th>
<th>URL</th>
<th></th>
</tr>
</thead>
<tbody>
<tr th:each="b : ${apps}">
<td th:text="${b.name}"></td>
<td th:text="${b.description}"></td>
<td><a th:href="${b.repositoryUrl}" target="_blank">gitlab</a></td>
<td><a th:href="@{/projectmanagement/app/{id}/assign(id=${b.pkApp})}">zuordnen</a></td>
</tr>
</tbody>
</table>
<script type="text/javascript">
$(document).ready(function() {
var localeUrl = '[[@{/js/dataTables/de.json}]]';
$("#table").DataTable({
"language" : {
"url" : localeUrl
}
});
});
</script>
</div>
</main>
</body>
</html>

View File

@@ -16,19 +16,27 @@
<div class="col-sm-12 col-md-3 col-lg-2 dashboardcard" th:each="p : ${projects}">
<div class="card">
<div class="card-header d-flex justify-content-between align-items-center">
<span th:text="${p.funderName}"></span>:
<span class="fw-bold ms-auto" th:text="${p.name}"></span>
<span th:text="${p.funderName}"></span>: <span class="fw-bold ms-auto" th:text="${p.name}"></span>
<a th:href="@{/projectmanagement/project/{p}/edit(p=${p.pkProject})}" class="btn btn-link ms-auto" title="bearbeiten">edit</a>
</div>
<div class="card-body">
<div th:each="w : ${p.workpackages}">
<div class="d-flex justify-content-between align-items-center" th:each="w : ${p.workpackages}">
<a th:href="@{/projectmanagement/workpackage/{id}(id=${w.pkWorkpackage})}" th:text="${w.name}"></a>
<a th:href="@{/projectmanagement/workpackage/{id}/apps(id=${w.pkWorkpackage})}" class="ms-auto">apps</a>
</div>
<a th:href="@{/projectmanagement/project/{id}/addWorkpackage(id=${p.pkProject})}" class="btn btn-outline-secondary">Workpackage anlegen</a>
</div>
<div class="card-footer" th:text="${p.description}"></div>
</div>
</div>
<div class="col-sm-12 col-md-3 col-lg-2 dashboardcard">
<div class="card">
<div class="card-header">Alles</div>
<div class="card-body">
<a th:href="@{/projectmanagement/apps}">alle apps</a>
</div>
</div>
</div>
</div>
</div>
</main>