PDF Calc, Cosmetics
This commit is contained in:
@@ -38,6 +38,18 @@ body {
|
|||||||
padding: 15px 30px;
|
padding: 15px 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.navbar-brand {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-logo {
|
||||||
|
height: 40px;
|
||||||
|
width: auto;
|
||||||
|
object-fit: contain;
|
||||||
|
}
|
||||||
|
|
||||||
.navbar h1 {
|
.navbar h1 {
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
|||||||
BIN
public/images/header.png
Normal file
BIN
public/images/header.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 41 KiB |
@@ -251,12 +251,13 @@ function generatePDF(timesheetId, req, res) {
|
|||||||
doc.moveTo(50, y).lineTo(550, y).stroke();
|
doc.moveTo(50, y).lineTo(550, y).stroke();
|
||||||
doc.moveDown(0.5);
|
doc.moveDown(0.5);
|
||||||
doc.font('Helvetica-Bold');
|
doc.font('Helvetica-Bold');
|
||||||
doc.text(`Gesamtstunden: ${totalHours.toFixed(2)} h`, 50, doc.y);
|
// Gesamtstunden = Arbeitsstunden + Urlaubsstunden (Urlaub zählt als Arbeitszeit)
|
||||||
|
const totalHoursWithVacation = totalHours + vacationHours;
|
||||||
|
doc.text(`Gesamtstunden: ${totalHoursWithVacation.toFixed(2)} h`, 50, doc.y);
|
||||||
|
|
||||||
// Überstunden berechnen und anzeigen
|
// Überstunden berechnen und anzeigen
|
||||||
const wochenstunden = timesheet.wochenstunden || 0;
|
const wochenstunden = timesheet.wochenstunden || 0;
|
||||||
// Überstunden = (Tatsächliche Stunden + Urlaubsstunden) - Wochenstunden
|
// Überstunden = (Tatsächliche Stunden + Urlaubsstunden) - Wochenstunden
|
||||||
const totalHoursWithVacation = totalHours + vacationHours;
|
|
||||||
const overtimeHours = totalHoursWithVacation - wochenstunden;
|
const overtimeHours = totalHoursWithVacation - wochenstunden;
|
||||||
|
|
||||||
doc.moveDown(0.3);
|
doc.moveDown(0.3);
|
||||||
@@ -467,11 +468,12 @@ function generatePDFToBuffer(timesheetId, req) {
|
|||||||
doc.moveTo(50, y).lineTo(550, y).stroke();
|
doc.moveTo(50, y).lineTo(550, y).stroke();
|
||||||
doc.moveDown(0.5);
|
doc.moveDown(0.5);
|
||||||
doc.font('Helvetica-Bold');
|
doc.font('Helvetica-Bold');
|
||||||
doc.text(`Gesamtstunden: ${totalHours.toFixed(2)} h`, 50, doc.y);
|
// Gesamtstunden = Arbeitsstunden + Urlaubsstunden (Urlaub zählt als Arbeitszeit)
|
||||||
|
const totalHoursWithVacation = totalHours + vacationHours;
|
||||||
|
doc.text(`Gesamtstunden: ${totalHoursWithVacation.toFixed(2)} h`, 50, doc.y);
|
||||||
|
|
||||||
const wochenstunden = timesheet.wochenstunden || 0;
|
const wochenstunden = timesheet.wochenstunden || 0;
|
||||||
// Überstunden = (Tatsächliche Stunden + Urlaubsstunden) - Wochenstunden
|
// Überstunden = (Tatsächliche Stunden + Urlaubsstunden) - Wochenstunden
|
||||||
const totalHoursWithVacation = totalHours + vacationHours;
|
|
||||||
const overtimeHours = totalHoursWithVacation - wochenstunden;
|
const overtimeHours = totalHoursWithVacation - wochenstunden;
|
||||||
|
|
||||||
doc.moveDown(0.3);
|
doc.moveDown(0.3);
|
||||||
|
|||||||
@@ -9,7 +9,10 @@
|
|||||||
<body>
|
<body>
|
||||||
<div class="navbar">
|
<div class="navbar">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
<div class="navbar-brand">
|
||||||
|
<img src="/images/header.png" alt="Logo" class="navbar-logo">
|
||||||
<h1>Stundenerfassung - Admin</h1>
|
<h1>Stundenerfassung - Admin</h1>
|
||||||
|
</div>
|
||||||
<div class="nav-right">
|
<div class="nav-right">
|
||||||
<span>Admin: <%= user.firstname %> <%= user.lastname %></span>
|
<span>Admin: <%= user.firstname %> <%= user.lastname %></span>
|
||||||
<% if (user.roles && user.roles.length > 1) { %>
|
<% if (user.roles && user.roles.length > 1) { %>
|
||||||
|
|||||||
@@ -10,7 +10,10 @@
|
|||||||
<body>
|
<body>
|
||||||
<div class="navbar">
|
<div class="navbar">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
<div class="navbar-brand">
|
||||||
|
<img src="/images/header.png" alt="Logo" class="navbar-logo">
|
||||||
<h1>Stundenerfassung</h1>
|
<h1>Stundenerfassung</h1>
|
||||||
|
</div>
|
||||||
<div class="nav-right">
|
<div class="nav-right">
|
||||||
<span>Willkommen, <%= user.firstname %> <%= user.lastname %></span>
|
<span>Willkommen, <%= user.firstname %> <%= user.lastname %></span>
|
||||||
<% if (user.roles && user.roles.length > 1) { %>
|
<% if (user.roles && user.roles.length > 1) { %>
|
||||||
|
|||||||
@@ -9,7 +9,10 @@
|
|||||||
<body>
|
<body>
|
||||||
<div class="navbar">
|
<div class="navbar">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
<div class="navbar-brand">
|
||||||
|
<img src="/images/header.png" alt="Logo" class="navbar-logo">
|
||||||
<h1>Stundenerfassung - Verwaltung</h1>
|
<h1>Stundenerfassung - Verwaltung</h1>
|
||||||
|
</div>
|
||||||
<div class="nav-right">
|
<div class="nav-right">
|
||||||
<span>Verwaltung: <%= user.firstname %> <%= user.lastname %></span>
|
<span>Verwaltung: <%= user.firstname %> <%= user.lastname %></span>
|
||||||
<% if (user.roles && user.roles.length > 1) { %>
|
<% if (user.roles && user.roles.length > 1) { %>
|
||||||
|
|||||||
Reference in New Issue
Block a user