This commit is contained in:
Jottyfan
2023-09-09 23:15:47 +02:00
parent bd081ff48a
commit e991c26c13
27 changed files with 909 additions and 0 deletions

View File

@@ -0,0 +1,25 @@
# database credentials from defined config file
spring.config.import = /etc/BiCO.properties
# define overwriteable arguments
spring.datasource.driver-class-name = ${db.class:org.postgresql.Driver}
spring.datasource.url = ${db.url}
spring.datasource.username = ${db.username}
spring.datasource.password = ${db.password}
server.servlet.context-path = ${my.context-path:/BiCO}
# security
spring.security.oauth2.client.registration.keycloak.client-id = ${keycloak.client-id}
spring.security.oauth2.client.registration.keycloak.scope = openid
spring.security.oauth2.client.registration.keycloak.authorization-grant-type = authorization_code
spring.security.oauth2.client.registration.keycloak.redirect-uri = ${keycloak.redirect-uri}
spring.security.oauth2.client.provider.keycloak.issuer-uri = ${keycloak.issuer-uri}
spring.security.oauth2.client.provider.keycloak.authorization-uri = ${keycloak.openid-url}/auth
spring.security.oauth2.client.provider.keycloak.token-uri = ${keycloak.openid-url}/token
spring.security.oauth2.client.provider.keycloak.user-info-uri = ${keycloak.openid-url}/userinfo
spring.security.oauth2.client.provider.keycloak.jwk-set-uri = ${keycloak.openid-url}/certs
spring.security.oauth2.client.provider.keycloak.user-name-attribute = preferred_username
# for development only
server.port = 8081

View File

@@ -0,0 +1,16 @@
html {
width: 100%;
height: 100%;
}
body {
background-color: #abc;
}
[data-bs-theme=dark] body {
background-color: rgb(36, 31, 49);
}
.borderdist {
margin: 8px;
}

View File

@@ -0,0 +1,23 @@
var locale_de = {
"sEmptyTable": "Keine Daten in der Tabelle vorhanden",
"sInfo": "_START_ bis _END_ von _TOTAL_ Einträgen",
"sInfoEmpty": "0 bis 0 von 0 Einträgen",
"sInfoFiltered": "(gefiltert von _MAX_ Einträgen)",
"sInfoPostFix": "",
"sInfoThousands": ".",
"sLengthMenu": "_MENU_ Einträge anzeigen",
"sLoadingRecords": "Wird geladen...",
"sProcessing": "Bitte warten...",
"sSearch": "Suchen",
"sZeroRecords": "Keine Einträge vorhanden.",
"oPaginate": {
"sFirst": "Erste",
"sPrevious": "Zurück",
"sNext": "Nächste",
"sLast": "Letzte"
},
"oAria": {
"sSortAscending": ": aktivieren, um Spalte aufsteigend zu sortieren",
"sSortDescending": ": aktivieren, um Spalte absteigend zu sortieren"
}
};

View File

@@ -0,0 +1,5 @@
toggleDarkMode = function() {
var oldValue = $("html").attr("data-bs-theme");
var newValue = oldValue == "dark" ? "light" : "dark";
$("html").attr("data-bs-theme", newValue);
}

View File

@@ -0,0 +1,46 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" layout:decorate="~{template}" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
<head>
<title>Camp Organizer 2</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<th:block layout:fragment="content">
<div class="borderdist">
<table id="table" class="table table-striped">
<thead>
<tr>
<th>Tag</th>
<th>Kürzel</th>
<th>Quelle</th>
<th>Thema</th>
<th>Unterthema</th>
<th>Tag-Anmerkungen</th>
</tr>
</thead>
<tbody>
<tr th:each="s : ${list}">
<td th:text="${#temporals.format(s.slotDay, 'yyyy-MM-dd')}"></td>
<td th:text="${s.abbreviation}"></td>
<td th:text="${s.sourceName}"></td>
<td th:text="${s.theme}"></td>
<td th:text="${s.subtheme}"></td>
<td th:text="${s.slotNotes}"></td>
</tr>
</tbody>
</table>
<script type="text/javascript">
$(document).ready(function() {
$("#table").DataTable({
"columnDefs" : [ {
"targets" : 0,
"type" : "date-eu"
} ],
"language" : locale_de
});
});
</script>
</div>
</th:block>
</body>
</html>

View File

@@ -0,0 +1,41 @@
<!DOCTYPE html>
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/extras/spring-security" data-bs-theme="dark">
<head>
<title>Camp Organizer 2</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link th:rel="stylesheet" type="text/css" media="all" th:href="@{/webjars/bootstrap/5.3.1/css/bootstrap.min.css}" />
<link th:rel="stylesheet" type="text/css" media="all" th:href="@{/webjars/bootstrap-icons/1.10.5/font/bootstrap-icons.css}" />
<link th:rel="stylesheet" type="text/css" media="all" th:href="@{/webjars/datatables/1.13.5/css/jquery.dataTables.min.css}" />
<link th:rel="stylesheet" type="text/css" media="all" th:href="@{/css/style.css}" />
<script th:src="@{/webjars/bootstrap/5.3.1/js/bootstrap.bundle.min.js}"></script>
<script th:src="@{/webjars/jquery/3.7.1/jquery.min.js}"></script>
<script th:src="@{/webjars/datatables/1.13.5/js/jquery.dataTables.min.js}"></script>
<script th:src="@{/js/dataTables.de.js}"></script>
<script th:src="@{/js/stylehelp.js}"></script>
</head>
<body>
<nav class="navbar sticky-top navbar-expand-lg headerlayout">
<button class="navbar-toggler" style="margin-right: 40px" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent"
aria-expanded="false">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent" style="margin-right: 20px">
<ul class="navbar-nav mb-2 mb-lg-0">
<li class="nav-item"><a class="btn btn-outline-secondary" th:href="@{/}">Startseite</a></li>
<li class="nav-item"><a class="btn btn-outline-secondary" th:href="@{/sheet}">Übersicht</a></li>
</ul>
<ul layout:fragment="header"></ul>
<ul class="nav navbar-nav ms-auto">
<li class="nav-item">
<a href="https://gitlab.com/jottyfan/bico/-/issues" class="btn btn-outline-secondary" target="_blank" th:text="${'v' + @manifestBean.getVersion()}"></a>
</li>
<li class="nav-item">
<a href="#" class="btn btn-outline-secondary" onclick="toggleDarkMode()"><i class="bi bi-moon"></i></a>
</li>
</ul>
</div>
</nav>
<div layout:fragment="content">content</div>
</body>
</html>