finetuning
This commit is contained in:
@ -7,7 +7,7 @@ plugins {
|
||||
apply plugin: 'io.spring.dependency-management'
|
||||
|
||||
group = 'de.jottyfan'
|
||||
version = '1.4.9'
|
||||
version = '1.5.0'
|
||||
|
||||
description = """timetrack"""
|
||||
|
||||
@ -29,7 +29,7 @@ dependencies {
|
||||
implementation 'org.apache.logging.log4j:log4j-core:latest.release'
|
||||
implementation 'org.apache.logging.log4j:log4j-to-slf4j:latest.release'
|
||||
|
||||
implementation 'org.webjars:bootstrap:5.3.1'
|
||||
implementation 'org.webjars:bootstrap:5.3.2'
|
||||
implementation 'org.webjars:font-awesome:6.4.2'
|
||||
implementation 'org.webjars:jquery:3.7.1'
|
||||
implementation 'org.webjars:popper.js:2.11.7'
|
||||
|
@ -221,14 +221,14 @@ public class DoneController extends CommonController {
|
||||
@PostMapping("/done/slot/upsert")
|
||||
public String upsertSlot(@ModelAttribute("bean") SlotBean bean, Model model) {
|
||||
doneService.upsert(bean, provider.getName());
|
||||
return "redirect:/done/list";
|
||||
return "redirect:/done/list#div_slot";
|
||||
}
|
||||
|
||||
@RolesAllowed("timetrack_user")
|
||||
@GetMapping("/done/slot/{id}/delete")
|
||||
public String deleteSlot(@PathVariable("id") Integer slotId) {
|
||||
doneService.delete(slotId, provider.getName());
|
||||
return "redirect:/done/list";
|
||||
return "redirect:/done/list#div_slot";
|
||||
}
|
||||
|
||||
@RolesAllowed("timetrack_user")
|
||||
@ -243,7 +243,7 @@ public class DoneController extends CommonController {
|
||||
public String addRange(@ModelAttribute("bean") SlotRangeBean bean) {
|
||||
doneService.addSlotRange(bean.getMinutes(), bean.getFrom(), bean.getUntil(), bean.getReason(), provider.getName(),
|
||||
bean.getIncludeSaturday(), bean.getIncludeSunday());
|
||||
return "redirect:/done/list";
|
||||
return "redirect:/done/list#div_slot";
|
||||
}
|
||||
|
||||
@RolesAllowed("timetrack_user")
|
||||
@ -251,7 +251,7 @@ public class DoneController extends CommonController {
|
||||
public String oneMonthBack(Model model, @ModelAttribute("doneModel") DoneModel doneModel) {
|
||||
LocalDate day = doneModel.getDay();
|
||||
doneModel.setDay(day.minusMonths(1));
|
||||
return "redirect:/done/list";
|
||||
return "redirect:/done/list#div_slot";
|
||||
}
|
||||
|
||||
@RolesAllowed("timetrack_user")
|
||||
@ -259,6 +259,6 @@ public class DoneController extends CommonController {
|
||||
public String oneMonthForward(Model model, @ModelAttribute("doneModel") DoneModel doneModel) {
|
||||
LocalDate day = doneModel.getDay();
|
||||
doneModel.setDay(day.plusMonths(1));
|
||||
return "redirect:/done/list";
|
||||
return "redirect:/done/list#div_slot";
|
||||
}
|
||||
}
|
||||
|
@ -275,50 +275,50 @@ body {
|
||||
}
|
||||
|
||||
.emphgreen {
|
||||
font-weight: bolder;
|
||||
color: #136600;
|
||||
border-radius: 0px 8px 8px 0px;
|
||||
background-image: linear-gradient(to left, #e6e6e6, white);
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.emphblue {
|
||||
font-weight: bolder;
|
||||
color: #1a5fb4;
|
||||
background-image: linear-gradient(to left, #e6e6e6, white);
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.emphorange {
|
||||
font-weight: bolder;
|
||||
color: #c64600;
|
||||
border-radius: 0px 8px 8px 0px;
|
||||
background-image: linear-gradient(to left, #e6e6e6, white);
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.emphred {
|
||||
font-weight: bolder;
|
||||
color: #a51d2d;
|
||||
border-radius: 0px 8px 8px 0px;
|
||||
background-image: linear-gradient(to left, #e6e6e6, white);
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.emphpink {
|
||||
font-weight: bolder;
|
||||
color: #613583;
|
||||
border-radius: 0px 8px 8px 0px;
|
||||
background-image: linear-gradient(to left, #e6e6e6, white);
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.emphgray {
|
||||
font-weight: bolder;
|
||||
color: #5e5c64;
|
||||
border-radius: 0px 8px 8px 0px;
|
||||
background-image: linear-gradient(to left, #959595, #cecece);
|
||||
}
|
||||
|
||||
.unround-border {
|
||||
padding: 4px;
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
.round-border {
|
||||
border-radius: 8px;
|
||||
font-weight: bolder;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.round-border-right {
|
||||
font-weight: bolder;
|
||||
padding: 4px;
|
||||
border-radius: 0px 8px 8px 0px;
|
||||
}
|
||||
|
||||
.sumfield {
|
||||
|
@ -53,11 +53,15 @@ class Schedule {
|
||||
}
|
||||
|
||||
time2pixel = function (time, hourHeight) {
|
||||
var timeArray = time.split(":");
|
||||
var hours = parseInt(timeArray[0]);
|
||||
var minutes = parseInt(timeArray[1]);
|
||||
var pixels = parseInt((hours + (minutes / 60)) * hourHeight);
|
||||
return pixels;
|
||||
if (time == null) {
|
||||
return 0;
|
||||
} else {
|
||||
var timeArray = time.split(":");
|
||||
var hours = parseInt(timeArray[0]);
|
||||
var minutes = parseInt(timeArray[1]);
|
||||
var pixels = parseInt((hours + (minutes / 60)) * hourHeight);
|
||||
return pixels;
|
||||
}
|
||||
}
|
||||
|
||||
drawSlot = function(ctx, slotNr, from, until, color, fillColor) {
|
||||
|
@ -47,7 +47,7 @@
|
||||
</li>
|
||||
</ul>
|
||||
<main layout:fragment="content">
|
||||
<ul class="nav nav-tabs navback" role="tablist">
|
||||
<ul id="worktimetabs" class="nav nav-tabs navback" role="tablist">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link navlinkstyle active" data-bs-toggle="tab" href="#div_list">Liste</a>
|
||||
</li>
|
||||
@ -126,12 +126,12 @@
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr th:if="${daysum}">
|
||||
<td colspan="7"><span class="sumfield">Start: <span class="emphgreen" th:text="${#temporals.format(daysum.daytimeFrom, 'HH:mm')}" th:if="${daysum.daytimeFrom}"></span></span>
|
||||
<span class="sumfield">Ende: <span class="emphgreen" th:text="${#temporals.format(daysum.daytimeUntil, 'HH:mm')}" th:if="${daysum.daytimeUntil}"></span></span>
|
||||
<span class="sumfield">abrechenbar: <span class="emphblue" th:text="${#temporals.format(daysum.dayworktime, 'HH:mm')}" th:if="${daysum.dayworktime}"></span><span class="emphgray" th:text="'/ ' + ${sumtime}"></span></span>
|
||||
<span class="sumfield">Pausezeit total: <span class="emphorange" th:text="${#temporals.format(daysum.breaks, 'HH:mm')}" th:if="${daysum.breaks}"></span></span>
|
||||
<span class="sumfield">Überstunden heute: <span class="emphred" th:text="${daysum.printDayOvertime()}"></span></span>
|
||||
<span class="sumfield">Überstunden total: <span class="emphpink" th:text="${daysum.printTotalOvertime()}"></span></span>
|
||||
<td colspan="7"><span class="sumfield">Start: <span class="emphgreen round-border-right" th:text="${#temporals.format(daysum.daytimeFrom, 'HH:mm')}" th:if="${daysum.daytimeFrom}"></span></span>
|
||||
<span class="sumfield">Ende: <span class="emphgreen round-border-right" th:text="${#temporals.format(daysum.daytimeUntil, 'HH:mm')}" th:if="${daysum.daytimeUntil}"></span></span>
|
||||
<span class="sumfield">Tagessumme: <span class="emphblue unround-border" th:text="${#temporals.format(daysum.dayworktime, 'HH:mm')}" th:if="${daysum.dayworktime}"></span><span class="emphgray round-border-right" th:text="'/ ' + ${sumtime}"></span></span>
|
||||
<span class="sumfield">Pausezeit total: <span class="emphorange round-border-right" th:text="${#temporals.format(daysum.breaks, 'HH:mm')}" th:if="${daysum.breaks}"></span></span>
|
||||
<span class="sumfield">Überstunden heute: <span class="emphred round-border-right" th:text="${daysum.printDayOvertime()}"></span></span>
|
||||
<span class="sumfield">Überstunden total: <span class="emphpink round-border-right" th:text="${daysum.printTotalOvertime()}"></span></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@ -323,6 +323,16 @@
|
||||
$(document)
|
||||
.ready(
|
||||
function() {
|
||||
// the tab deeplink functionality
|
||||
let url = location.href.replace(/\/$/, "");
|
||||
if (location.hash) {
|
||||
const hash = url.split("#");
|
||||
$('#worktimetabs a[href="#' + hash[1] + '"]').tab("show");
|
||||
url = location.href.replace(/\/#/, "#");
|
||||
history.replaceState(null, null, url);
|
||||
}
|
||||
|
||||
// the schedule
|
||||
let width = parseInt($("#schedule").css(
|
||||
"min-width"));
|
||||
let height = parseInt($("#schedule").css(
|
||||
|
@ -6,7 +6,7 @@
|
||||
<body>
|
||||
<ul layout:fragment="menu">
|
||||
<li class="nav-item" sec:authorize="hasRole('timetrack_user')">
|
||||
<a class="nav-link btn btn-outline-primary btn-white-text" th:href="@{/done/list}">zur Arbeitszeit</a>
|
||||
<a class="nav-link btn btn-outline-primary btn-white-text" th:href="@{/done/list#div_slot}">zur Slotübersicht</a>
|
||||
</li>
|
||||
</ul>
|
||||
<main layout:fragment="content">
|
||||
|
@ -6,7 +6,7 @@
|
||||
<body>
|
||||
<ul layout:fragment="menu">
|
||||
<li class="nav-item" sec:authorize="hasRole('timetrack_user')">
|
||||
<a class="nav-link btn btn-outline-primary btn-white-text" th:href="@{/done/list}">zur Arbeitszeit</a>
|
||||
<a class="nav-link btn btn-outline-primary btn-white-text" th:href="@{/done/list#div_slot}">zur Slotübersicht</a>
|
||||
</li>
|
||||
</ul>
|
||||
<main layout:fragment="content">
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
<title>Timetrack</title>
|
||||
|
||||
<link rel="stylesheet" type="text/css" th:href="@{/webjars/bootstrap/5.3.1/css/bootstrap.min.css}" />
|
||||
<link rel="stylesheet" type="text/css" th:href="@{/webjars/bootstrap/5.3.2/css/bootstrap.min.css}" />
|
||||
<link rel="stylesheet" type="text/css" th:href="@{/webjars/datatables/1.13.5/css/dataTables.bootstrap5.min.css}" />
|
||||
<link rel="stylesheet" type="text/css" th:href="@{/webjars/font-awesome/6.4.2/css/all.min.css}" />
|
||||
<link rel="stylesheet" type="text/css" th:href="@{/webjars/fullcalendar/5.11.3/main.css}" />
|
||||
@ -15,7 +15,7 @@
|
||||
<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.1/js/bootstrap.bundle.min.js}"></script>
|
||||
<script th:src="@{/webjars/bootstrap/5.3.2/js/bootstrap.bundle.min.js}"></script>
|
||||
<script th:src="@{/webjars/datatables/1.13.5/js/jquery.dataTables.min.js}"></script>
|
||||
<script th:src="@{/webjars/datatables/1.13.5/js/dataTables.bootstrap5.min.js}"></script>
|
||||
<script th:src="@{/webjars/fullcalendar/5.11.3/main.js}"></script>
|
||||
|
@ -17,15 +17,15 @@
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-8"><span class="spanlabel">Start:</span></div>
|
||||
<div class="col-4"><span class="emphgreen" th:text="${sum.start}"></span></div>
|
||||
<div class="col-4"><span class="emphgreen round-border" th:text="${sum.start}"></span></div>
|
||||
<div class="col-8"><span class="spanlabel">Ende:</span></div>
|
||||
<div class="col-4"><span class="emphgreen" th:text="${sum.end}"></span></div>
|
||||
<div class="col-4"><span class="emphgreen round-border" th:text="${sum.end}"></span></div>
|
||||
<div class="col-8"><span class="spanlabel">Arbeitszeit total:</span></div>
|
||||
<div class="col-4"><span class="emphblue" th:text="${sum.total}"></span></div>
|
||||
<div class="col-4"><span class="emphblue round-border" th:text="${sum.total}"></span></div>
|
||||
<div class="col-8"><span class="spanlabel">Pausezeit total:</span></div>
|
||||
<div class="col-4"><span class="emphorange" th:text="${sum.pause}"></span></div>
|
||||
<div class="col-4"><span class="emphorange round-border" th:text="${sum.pause}"></span></div>
|
||||
<div class="col-8"><span class="spanlabel">Überstunden:</span></div>
|
||||
<div class="col-4"><span class="emphred" th:text="${sum.overdue}"></span></div>
|
||||
<div class="col-4"><span class="emphred round-border" th:text="${sum.overdue}"></span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
Reference in New Issue
Block a user