diff --git a/Backend/endpoints/user-settings.go b/Backend/endpoints/user-settings.go
index 889267d..66f7d1b 100644
--- a/Backend/endpoints/user-settings.go
+++ b/Backend/endpoints/user-settings.go
@@ -3,6 +3,7 @@ package endpoints
import (
"arbeitszeitmessung/models"
"arbeitszeitmessung/templates"
+ "context"
"log"
"net/http"
)
@@ -38,5 +39,9 @@ func changePassword(w http.ResponseWriter, r *http.Request) {
}
func showUserPage(w http.ResponseWriter, r *http.Request, status int) {
- templates.UserPage(status).Render(r.Context(), w)
+ var ctx context.Context
+ if user, err := models.GetUserFromSession(Session, r.Context()); err == nil {
+ ctx = context.WithValue(r.Context(), "user", user)
+ }
+ templates.UserPage(status).Render(ctx, w)
}
diff --git a/Backend/endpoints/user.go b/Backend/endpoints/user.go
index 2de8030..342ca0c 100644
--- a/Backend/endpoints/user.go
+++ b/Backend/endpoints/user.go
@@ -29,6 +29,7 @@ func LoginHandler(w http.ResponseWriter, r *http.Request) {
func UserSettingsHandler(w http.ResponseWriter, r *http.Request) {
helper.RequiresLogin(Session, w, r)
+
switch r.Method {
case http.MethodGet:
showUserPage(w, r, 0)
diff --git a/Backend/src/main.css b/Backend/src/main.css
index c54539c..2e260d6 100644
--- a/Backend/src/main.css
+++ b/Backend/src/main.css
@@ -1,152 +1,163 @@
@import "tailwindcss";
@source "../templates/*.templ";
@plugin "@iconify/tailwind4" {
- scale: 1.25;
+ scale: 1.25;
}
@theme {
- --color-accent-50: #e7fdea;
- --color-accent-100: #cbfbd1;
- --color-accent-200: #9cf7a8;
- --color-accent-300: #68f37a;
- --color-accent-400: #33ef4d;
- --color-accent-500: #11db2d;
- --color-accent-600: #0eaf23;
- --color-accent-700: #0a851b;
- --color-accent-800: #075a12;
- --color-accent-900: #032b09;
- --color-accent-950: #021805;
- --color-accent: #0eaf23;
- --color-text-50: #f7f8f7;
- --color-text-100: #f2f3f2;
- --color-text-200: #e2e4e2;
- --color-text-300: #d2d6d2;
- --color-text-400: #c2c7c2;
- --color-text-500: #afb6af;
- --color-text-600: #97a097;
- --color-text-700: #7d877d;
- --color-text-800: #5a625a;
- --color-text-900: #161816;
- --color-text-950: #000000;
+ --color-accent-50: #e7fdea;
+ --color-accent-100: #cbfbd1;
+ --color-accent-200: #9cf7a8;
+ --color-accent-300: #68f37a;
+ --color-accent-400: #33ef4d;
+ --color-accent-500: #11db2d;
+ --color-accent-600: #0eaf23;
+ --color-accent-700: #0a851b;
+ --color-accent-800: #075a12;
+ --color-accent-900: #032b09;
+ --color-accent-950: #021805;
+ --color-accent: #0eaf23;
+ --color-text-50: #f7f8f7;
+ --color-text-100: #f2f3f2;
+ --color-text-200: #e2e4e2;
+ --color-text-300: #d2d6d2;
+ --color-text-400: #c2c7c2;
+ --color-text-500: #afb6af;
+ --color-text-600: #97a097;
+ --color-text-700: #7d877d;
+ --color-text-800: #5a625a;
+ --color-text-900: #161816;
+ --color-text-950: #000000;
}
@layer base {
- body {
- -webkit-print-color-adjust: exact !important;
- print-color-adjust: exact !important;
- background-color: white;
- }
+ body {
+ -webkit-print-color-adjust: exact !important;
+ print-color-adjust: exact !important;
+ background-color: white;
+ }
}
@layer components {
- .grid-main {
- display: grid;
- grid-template-columns: 4fr 3fr 3fr 1fr;
- align-items: stretch;
- }
+ .grid-main {
+ display: grid;
+ grid-template-columns: 4fr 3fr 3fr 1fr;
+ align-items: stretch;
+ }
- .grid-sub {
- display: grid;
- grid-template-columns: subgrid;
- grid-column: 1 / -1;
- border-color: var(--color-neutral-400);
- transition: background-color 0.2s ease-in-out;
+ .grid-sub {
+ display: grid;
+ grid-template-columns: subgrid;
+ grid-column: 1 / -1;
+ border-color: var(--color-neutral-400);
+ transition: background-color 0.2s ease-in-out;
+ }
+
+ .grid-sub.responsive {
+ display: flex;
+ flex-direction: column;
+ }
+
+ .grid-sub:hover {
+ background-color: var(--color-neutral-200);
+ }
+
+ .grid-cell {
+ padding: calc(var(--spacing) * 2);
+ border-color: var(--color-neutral-400);
+ }
+
+ .btn {
+ width: 100%;
+ cursor: pointer;
+ border-radius: var(--radius-md);
+ color: var(--color-neutral-800);
+ font-size: var(--text-sm);
+ text-align: center;
+ padding: calc(var(--spacing) * 2);
+ border-style: var(--tw-border-style);
+ border-width: 1px;
+ border-color: var(--color-neutral-800);
+ transition-property:
+ color, background-color, border-color, outline-color,
+ text-decoration-color, fill, stroke, --tw-gradient-from,
+ --tw-gradient-via, --tw-gradient-to;
+ transition-timing-function: var(
+ --tw-ease,
+ var(--default-transition-timing-function)
+ );
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
+ }
+
+ input.btn,
+ select.btn {
+ transition-duration: 300ms;
+ }
+
+ .btn:hover {
+ color: var(--color-white);
+ background-color: var(--color-neutral-700);
+ }
+
+ .btn:disabled {
+ opacity: 50%;
+ pointer-events: none;
+ }
+
+ input.btn,
+ select.btn {
+ text-align: left;
+ }
+
+ input.btn:hover,
+ select.btn:hover {
+ border-color: var(--color-neutral-300);
+ background-color: var(--color-neutral-100);
+ color: var(--color-neutral-800);
+ }
+
+ .edit-box {
+ border-radius: var(--radius-md);
+ overflow: hidden;
+ border-color: var(--color-neutral-500);
+ transition-property: background-color, border-color;
+ transition-timing-function: var(--default-transition-timing-function) * 2;
+ transition-duration: var(--default-transition-duration);
+ outline: none;
+
+ &:is(:where(.group):is(.edit) *) {
+ border-width: 1px;
+ }
+ }
+
+ .edit-box:hover {
+ &:is(:where(.group):is(.edit) *) {
+ background-color: var(--color-white);
+ border-color: var(--color-neutral-300);
+ }
+ }
+
+ .edit-box input:focus {
+ outline: none;
+ }
+
+ div.edit {
+ border-width: 1px;
+ background-color: var(--color-neutral-300);
+ }
+
+ @media (width >=48rem) {
+ .grid-main {
+ grid-template-columns: repeat(5, 1fr);
+ margin: 0 10%;
}
.grid-sub.responsive {
- display: flex;
- flex-direction: column;
- }
-
- .grid-sub:hover {
- background-color: var(--color-neutral-200);
- }
-
- .grid-cell {
- padding: calc(var(--spacing) * 2);
- border-color: var(--color-neutral-400);
+ display: grid;
}
.btn {
- width: 100%;
- cursor: pointer;
- border-radius: var(--radius-md);
- color: var(--color-neutral-800);
- font-size: var(--text-sm);
- text-align: center;
- padding: calc(var(--spacing) * 2);
- border-style: var(--tw-border-style);
- border-width: 1px;
- border-color: var(--color-neutral-800);
- transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
- transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
- transition-duration: var(--tw-duration, var(--default-transition-duration));
- }
-
- input.btn,
- select.btn {
- transition-duration: 300ms;
- }
-
- .btn:hover {
- color: var(--color-white);
- background-color: var(--color-neutral-700);
- }
-
- .btn:disabled {
- opacity: 50%;
- pointer-events: none;
- }
-
- input.btn,
- select.btn {
- text-align: left;
- }
-
- input.btn:hover,
- select.btn:hover {
- border-color: var(--color-neutral-300);
- background-color: var(--color-neutral-100);
- color: var(--color-neutral-800);
- }
-
- .edit-box {
- border-radius: var(--radius-md);
- overflow: hidden;
- border-color: var(--color-neutral-500);
- transition-property: background-color, border-color;
- transition-timing-function: var(--default-transition-timing-function) * 2;
- transition-duration: var(--default-transition-duration);
- outline: none;
-
- &:is(:where(.group):is(.edit) *) {
- border-width: 1px;
- }
- }
-
- .edit-box:hover {
- &:is(:where(.group):is(.edit) *) {
- background-color: var(--color-white);
- border-color: var(--color-neutral-300);
- }
- }
-
- .edit-box input:focus {
- outline: none;
- }
-
- @media (width >=48rem) {
- .grid-main {
- grid-template-columns: repeat(5, 1fr);
- margin: 0 10%;
- }
-
- .grid-sub.responsive {
- display: grid;
- }
-
- .btn {
- padding-inline: calc(var(--spacing) * 4);
- }
+ padding-inline: calc(var(--spacing) * 4);
}
+ }
}
diff --git a/Backend/static/css/styles.css b/Backend/static/css/styles.css
index 9f5c58c..8b42ab0 100644
--- a/Backend/static/css/styles.css
+++ b/Backend/static/css/styles.css
@@ -236,6 +236,19 @@
.ml-1 {
margin-left: calc(var(--spacing) * 1);
}
+ .icon-\[material-symbols-light--cancel-outline\] {
+ display: inline-block;
+ width: 1.25em;
+ height: 1.25em;
+ background-color: currentColor;
+ -webkit-mask-image: var(--svg);
+ mask-image: var(--svg);
+ -webkit-mask-repeat: no-repeat;
+ mask-repeat: no-repeat;
+ -webkit-mask-size: 100% 100%;
+ mask-size: 100% 100%;
+ --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='m8.4 16.308l3.6-3.6l3.6 3.6l.708-.708l-3.6-3.6l3.6-3.6l-.708-.708l-3.6 3.6l-3.6-3.6l-.708.708l3.6 3.6l-3.6 3.6zM12.003 21q-1.866 0-3.51-.708q-1.643-.709-2.859-1.924t-1.925-2.856T3 12.003t.709-3.51Q4.417 6.85 5.63 5.634t2.857-1.925T11.997 3t3.51.709q1.643.708 2.859 1.922t1.925 2.857t.709 3.509t-.708 3.51t-1.924 2.859t-2.856 1.925t-3.509.709M12 20q3.35 0 5.675-2.325T20 12t-2.325-5.675T12 4T6.325 6.325T4 12t2.325 5.675T12 20m0-8'/%3E%3C/svg%3E");
+ }
.icon-\[material-symbols-light--check-circle-outline\] {
display: inline-block;
width: 1.25em;
@@ -301,19 +314,6 @@
mask-size: 100% 100%;
--svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M9.808 14.616h1V9.385h-1zm3.384 0h1V9.385h-1zM12.003 21q-1.866 0-3.51-.705q-1.643-.706-2.859-1.915t-1.925-2.843T3 12.039q0-.905.167-1.778t.497-1.713l.78.78q-.219.65-.331 1.32T4 12q0 3.35 2.325 5.675T12 20t5.675-2.325T20 12t-2.325-5.675T12 4q-.675 0-1.332.112t-1.3.332l-.776-.775q.789-.315 1.606-.492T11.885 3q1.887 0 3.546.701t2.894 1.926t1.955 2.866t.72 3.505t-.708 3.509t-1.924 2.859t-2.856 1.925t-3.509.709M5.923 6.808q-.356 0-.62-.265q-.264-.264-.264-.62t.264-.62t.62-.264t.62.264t.265.62t-.265.62t-.62.265M12 12'/%3E%3C/svg%3E");
}
- .icon-\[material-symbols-light--nest-clock-farsight-analog-outline\] {
- display: inline-block;
- width: 1.25em;
- height: 1.25em;
- background-color: currentColor;
- -webkit-mask-image: var(--svg);
- mask-image: var(--svg);
- -webkit-mask-repeat: no-repeat;
- mask-repeat: no-repeat;
- -webkit-mask-size: 100% 100%;
- mask-size: 100% 100%;
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M14.935 16.223L11.5 12.789V7.923h1v4.464l3.123 3.123zM11.5 6V4h1v2zm6.5 6.5v-1h2v1zM11.5 20v-2h1v2zM4 12.5v-1h2v1zm8.003 8.5q-1.867 0-3.51-.708q-1.643-.709-2.859-1.924t-1.925-2.856T3 12.003t.709-3.51Q4.417 6.85 5.63 5.634t2.857-1.925T11.997 3t3.51.709q1.643.708 2.859 1.922t1.925 2.857t.709 3.509t-.708 3.51t-1.924 2.859t-2.856 1.925t-3.509.709M12 20q3.35 0 5.675-2.325T20 12t-2.325-5.675T12 4T6.325 6.325T4 12t2.325 5.675T12 20m0-8'/%3E%3C/svg%3E");
- }
.icon-\[material-symbols-light--schedule-outline\] {
display: inline-block;
width: 1.25em;
@@ -353,6 +353,10 @@
width: calc(var(--spacing) * 4);
height: calc(var(--spacing) * 4);
}
+ .size-5 {
+ width: calc(var(--spacing) * 5);
+ height: calc(var(--spacing) * 5);
+ }
.h-2 {
height: calc(var(--spacing) * 2);
}
@@ -682,11 +686,6 @@
margin-left: calc(var(--spacing) * 2);
}
}
- .group-\[\.edit\]\:block {
- &:is(:where(.group):is(.edit) *) {
- display: block;
- }
- }
.group-\[\.edit\]\:flex {
&:is(:where(.group):is(.edit) *) {
display: flex;
@@ -702,6 +701,16 @@
display: inline;
}
}
+ .group-\[\.edit\]\/button\:block {
+ &:is(:where(.group\/button):is(.edit) *) {
+ display: block;
+ }
+ }
+ .group-\[\.edit\]\/button\:hidden {
+ &:is(:where(.group\/button):is(.edit) *) {
+ display: none;
+ }
+ }
.placeholder\:text-neutral-400 {
&::placeholder {
color: var(--color-neutral-400);
@@ -850,8 +859,8 @@
color: transparent;
}
}
- .group-\[\.edit\]\:md\:block {
- &:is(:where(.group):is(.edit) *) {
+ .group-\[\.edit\]\/button\:md\:block {
+ &:is(:where(.group\/button):is(.edit) *) {
@media (width >= 48rem) {
display: block;
}
@@ -942,7 +951,7 @@
border-width: 1px;
border-color: var(--color-neutral-800);
transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
- transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
+ transition-timing-function: var( --tw-ease, var(--default-transition-timing-function) );
transition-duration: var(--tw-duration, var(--default-transition-duration));
}
input.btn, select.btn {
@@ -985,6 +994,10 @@
.edit-box input:focus {
outline: none;
}
+ div.edit {
+ border-width: 1px;
+ background-color: var(--color-neutral-300);
+ }
@media (width >=48rem) {
.grid-main {
grid-template-columns: repeat(5, 1fr);
diff --git a/Backend/static/script.js b/Backend/static/script.js
index 04bae89..176e4f8 100644
--- a/Backend/static/script.js
+++ b/Backend/static/script.js
@@ -1,14 +1,67 @@
-function editDay(element, event, formId) {
- var form = element.closest(".grid-sub").querySelector(".all-booking-component > form");
- form.classList.toggle("edit");
- element.classList.toggle("edit");
- if (element.classList.contains("edit")) {
- event.preventDefault();
- form.querySelectorAll("input, select").forEach((input) => {
- input.disabled = false;
+function clearEditState() {
+ for (e of document.querySelectorAll(".edit")) {
+ e.classList.remove("edit");
+ }
+ toggleAbsenceEdit(false);
+}
+
+function editWorkday(element, event, id, isWorkDay) {
+ console.log("editWorkday called", isWorkDay);
+ event.preventDefault();
+ var form = document.getElementById(id);
+ if (form == null) {
+ form = element
+ .closest(".grid-sub")
+ .querySelector(".all-booking-component > form");
+ }
+
+ clearEditState();
+ element.closest(".grid-sub").classList.add("edit");
+ toggleAbsenceEdit(!isWorkDay);
+
+ if (isWorkDay) {
+ element.classList.add("edit");
+ if (element.classList.contains("edit")) {
+ form.querySelectorAll("input, select").forEach((input) => {
+ input.disabled = false;
+ });
+ } else {
+ form.submit();
+ }
+ } else {
+ var absenceForm = document.getElementById("absence_form");
+
+ if (id != 0) {
+ syncFields(form, absenceForm, [
+ "date_from",
+ "date_to",
+ "aw_type",
+ "aw_id",
+ ]);
+ } else {
+ absenceForm.querySelector("[name=date_from]").value = form.id.replace(
+ "time-",
+ "",
+ );
+ absenceForm.querySelector("[name=date_to]").value = form.id.replace(
+ "time-",
+ "",
+ );
+ }
+ }
+}
+
+function toggleAbsenceEdit(state) {
+ var form = document.getElementById("absence_form");
+ if (state) {
+ form.classList.remove("hidden");
+ form.scrollIntoView({
+ behavior: "smooth",
+ block: "start",
+ inline: "nearest",
});
} else {
- form.submit();
+ form.classList.add("hidden");
}
}
@@ -21,31 +74,6 @@ function syncFields(from, to, fieldsToSync) {
});
}
-function editAbsence(element, event, absenceId) {
- event.preventDefault();
- var form = document.getElementById("absence_form");
-
- if (absenceId != 0) {
- var dataForm = document.getElementById(absenceId);
- syncFields(dataForm, form, ["date_from", "date_to", "aw_type", "aw_id"]);
- } else {
- var dataForm = element.closest(".grid-sub").querySelector(".all-booking-component > form");
- form.querySelector("[name=date_from]").value = dataForm.id.replace("time-", "");
- form.querySelector("[name=date_to]").value = dataForm.id.replace("time-", "");
- }
- form.classList.remove("hidden");
- form.scrollIntoView({ behavior: "smooth", block: "start", inline: "nearest" });
-}
-
-function editAbwesenheit(element, event) {
- var newBookingComponent = element.closest(".grid-sub").querySelector(".new-booking-component");
- if (element.value == 0) {
- newBookingComponent.style.display = "";
- } else {
- newBookingComponent.style.display = "none";
- }
-}
-
function navigateWeek(element, event, direction) {
var dateInput = element.closest("form").querySelector("input[type=date]");
var date = dateInput.valueAsDate;
diff --git a/Backend/templates/headerComponent_templ.go b/Backend/templates/headerComponent_templ.go
index aeef6ec..8e59160 100644
--- a/Backend/templates/headerComponent_templ.go
+++ b/Backend/templates/headerComponent_templ.go
@@ -1,6 +1,6 @@
// Code generated by templ - DO NOT EDIT.
-// templ: version: v0.3.924
+// templ: version: v0.3.943
package templates
//lint:file-ignore SA4006 This context is only used if a nested component is present.
diff --git a/Backend/templates/pages.templ b/Backend/templates/pages.templ
index 3c60778..7d9c6a7 100644
--- a/Backend/templates/pages.templ
+++ b/Backend/templates/pages.templ
@@ -30,6 +30,9 @@ templ LoginPage(success bool, errorMsg string) {
}
templ UserPage(status int) {
+ {{
+ user := ctx.Value("user").(models.User)
+ }}
@Base()
@headerComponent()
@@ -52,6 +55,14 @@ templ UserPage(status int) {
+
+
Nutzerdaten
+
+
Nutzername: { user.Vorname } { user.Name }
+
Personalnummer: { user.PersonalNummer }
+
+
+
Nutzer abmelden
diff --git a/Backend/templates/pages_templ.go b/Backend/templates/pages_templ.go
index 04f8e10..14fae96 100644
--- a/Backend/templates/pages_templ.go
+++ b/Backend/templates/pages_templ.go
@@ -1,6 +1,6 @@
// Code generated by templ - DO NOT EDIT.
-// templ: version: v0.3.924
+// templ: version: v0.3.943
package templates
//lint:file-ignore SA4006 This context is only used if a nested component is present.
@@ -117,6 +117,8 @@ func UserPage(status int) templ.Component {
templ_7745c5c3_Var4 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
+
+ user := ctx.Value("user").(models.User)
templ_7745c5c3_Err = Base().Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
@@ -146,7 +148,46 @@ func UserPage(status int) templ.Component {
return templ_7745c5c3_Err
}
}
- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, "
Nutzer abmelden
Nutzer von Weboberfläche abmelden.
")
+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, "Nutzerdaten
Nutzername: ")
+ if templ_7745c5c3_Err != nil {
+ return templ_7745c5c3_Err
+ }
+ var templ_7745c5c3_Var5 string
+ templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(user.Vorname)
+ if templ_7745c5c3_Err != nil {
+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/pages.templ`, Line: 61, Col: 64}
+ }
+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5))
+ if templ_7745c5c3_Err != nil {
+ return templ_7745c5c3_Err
+ }
+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, " ")
+ if templ_7745c5c3_Err != nil {
+ return templ_7745c5c3_Err
+ }
+ var templ_7745c5c3_Var6 string
+ templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(user.Name)
+ if templ_7745c5c3_Err != nil {
+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/pages.templ`, Line: 61, Col: 78}
+ }
+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6))
+ if templ_7745c5c3_Err != nil {
+ return templ_7745c5c3_Err
+ }
+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "
Personalnummer: ")
+ if templ_7745c5c3_Err != nil {
+ return templ_7745c5c3_Err
+ }
+ var templ_7745c5c3_Var7 string
+ templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(user.PersonalNummer)
+ if templ_7745c5c3_Err != nil {
+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/pages.templ`, Line: 62, Col: 75}
+ }
+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7))
+ if templ_7745c5c3_Err != nil {
+ return templ_7745c5c3_Err
+ }
+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "
Nutzer abmelden
Nutzer von Weboberfläche abmelden.
")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -170,18 +211,18 @@ func statusCheckMark(status models.WeekStatus, target models.WeekStatus) templ.C
}()
}
ctx = templ.InitializeContext(ctx)
- templ_7745c5c3_Var5 := templ.GetChildren(ctx)
- if templ_7745c5c3_Var5 == nil {
- templ_7745c5c3_Var5 = templ.NopComponent
+ templ_7745c5c3_Var8 := templ.GetChildren(ctx)
+ if templ_7745c5c3_Var8 == nil {
+ templ_7745c5c3_Var8 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
if status >= target {
- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "")
+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
} else {
- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "")
+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, "")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -206,9 +247,9 @@ func TeamPage(weeks []models.WorkWeek, userWeek models.WorkWeek) templ.Component
}()
}
ctx = templ.InitializeContext(ctx)
- templ_7745c5c3_Var6 := templ.GetChildren(ctx)
- if templ_7745c5c3_Var6 == nil {
- templ_7745c5c3_Var6 = templ.NopComponent
+ templ_7745c5c3_Var9 := templ.GetChildren(ctx)
+ if templ_7745c5c3_Var9 == nil {
+ templ_7745c5c3_Var9 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
templ_7745c5c3_Err = Base().Render(ctx, templ_7745c5c3_Buffer)
@@ -219,7 +260,7 @@ func TeamPage(weeks []models.WorkWeek, userWeek models.WorkWeek) templ.Component
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "")
+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "
")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -228,7 +269,7 @@ func TeamPage(weeks []models.WorkWeek, userWeek models.WorkWeek) templ.Component
return templ_7745c5c3_Err
}
if len(weeks) > 0 {
- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "
Abrechnung Mitarbeiter
")
+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "
Abrechnung Mitarbeiter
")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -239,7 +280,7 @@ func TeamPage(weeks []models.WorkWeek, userWeek models.WorkWeek) templ.Component
return templ_7745c5c3_Err
}
}
- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, "
")
+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "
")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -263,9 +304,9 @@ func TeamPresencePage(teamPresence map[models.User]bool) templ.Component {
}()
}
ctx = templ.InitializeContext(ctx)
- templ_7745c5c3_Var7 := templ.GetChildren(ctx)
- if templ_7745c5c3_Var7 == nil {
- templ_7745c5c3_Var7 = templ.NopComponent
+ templ_7745c5c3_Var10 := templ.GetChildren(ctx)
+ if templ_7745c5c3_Var10 == nil {
+ templ_7745c5c3_Var10 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
templ_7745c5c3_Err = Base().Render(ctx, templ_7745c5c3_Buffer)
@@ -276,12 +317,12 @@ func TeamPresencePage(teamPresence map[models.User]bool) templ.Component {
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "Mitarbeiter
")
+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "
Mitarbeiter
")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
for user, present := range teamPresence {
- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "
")
+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "
")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -289,53 +330,53 @@ func TeamPresencePage(teamPresence map[models.User]bool) templ.Component {
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "
")
+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "
")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
- var templ_7745c5c3_Var8 string
- templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(user.Vorname)
+ var templ_7745c5c3_Var11 string
+ templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(user.Vorname)
if templ_7745c5c3_Err != nil {
- return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/pages.templ`, Line: 162, Col: 22}
+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/pages.templ`, Line: 173, Col: 22}
}
- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8))
+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, " ")
+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, " ")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
- var templ_7745c5c3_Var9 string
- templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(user.Name)
+ var templ_7745c5c3_Var12 string
+ templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(user.Name)
if templ_7745c5c3_Err != nil {
- return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/pages.templ`, Line: 162, Col: 36}
+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/pages.templ`, Line: 173, Col: 36}
}
- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9))
+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "
")
+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "
")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if present {
- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "Anwesend")
+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "Anwesend")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
} else {
- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "Abwesend")
+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "Abwesend")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "
")
+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "
")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "
")
+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, "
")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -359,12 +400,12 @@ func LogoutButton() templ.Component {
}()
}
ctx = templ.InitializeContext(ctx)
- templ_7745c5c3_Var10 := templ.GetChildren(ctx)
- if templ_7745c5c3_Var10 == nil {
- templ_7745c5c3_Var10 = templ.NopComponent
+ templ_7745c5c3_Var13 := templ.GetChildren(ctx)
+ if templ_7745c5c3_Var13 == nil {
+ templ_7745c5c3_Var13 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "")
+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, "")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
diff --git a/Backend/templates/pdf_templ.go b/Backend/templates/pdf_templ.go
index 3c73ded..321301b 100644
--- a/Backend/templates/pdf_templ.go
+++ b/Backend/templates/pdf_templ.go
@@ -1,6 +1,6 @@
// Code generated by templ - DO NOT EDIT.
-// templ: version: v0.3.924
+// templ: version: v0.3.943
package templates
//lint:file-ignore SA4006 This context is only used if a nested component is present.
diff --git a/Backend/templates/teamComponents_templ.go b/Backend/templates/teamComponents_templ.go
index ec539f2..c1d475e 100644
--- a/Backend/templates/teamComponents_templ.go
+++ b/Backend/templates/teamComponents_templ.go
@@ -1,6 +1,6 @@
// Code generated by templ - DO NOT EDIT.
-// templ: version: v0.3.924
+// templ: version: v0.3.943
package templates
//lint:file-ignore SA4006 This context is only used if a nested component is present.
diff --git a/Backend/templates/timeComponents.templ b/Backend/templates/timeComponents.templ
index 413c16b..c2b5fab 100644
--- a/Backend/templates/timeComponents.templ
+++ b/Backend/templates/timeComponents.templ
@@ -19,78 +19,16 @@ templ lineComponent() {
}
-// templ workDayComponent(workDay models.WorkDay, submitted bool) {
-// {{
-// // work, pause := workDay.GetWorkTimeString()
-// user := ctx.Value("user").(models.User)
-// work, pause, overtime := workDay.GetAllWorkTimesReal(user)
-// // overtime := helper.FormatDuration(workDay.CalcOvertime(user))
-// justify := ""
-// if len(workDay.Bookings) <= 1 {
-// justify = "justify-content: center"
-// }
-// }}
-//
-//
-// @timeGaugeComponent(workDay.GetDayProgress(user), workDay.Day.Equal(time.Now().Truncate(24*time.Hour)))
-//
-//
{ workDay.Day.Format("Mon") }: { workDay.Day.Format("02.01.2006") }
-// if (workDay.RequiresAction()) {
-//
Bitte anpassen
-// } else {
-// if work > 0 {
-//
Arbeitszeit:
-//
{ helper.FormatDuration(work) }
-// }
-// if pause > 0 {
-// }
-//
{ helper.FormatDuration(pause) }
-// if overtime > 0 {
-//
{ helper.FormatDuration(overtime) }
-// }
-// }
-//
-//
-//
-// @lineComponent()
-//
-//
-//
-// @changeButtonComponent("time-" + workDay.Day.Format("2006-01-02"))
-//
-//
-// }
templ changeButtonComponent(id string, workDay bool) {
- {{
- functionName := "editDay"
- if !workDay {
- functionName = "editAbsence"
- }
- }}
-