From 2975c8c3a16264919988349dc397dd781ff31244 Mon Sep 17 00:00:00 2001 From: Jan Date: Mon, 10 Nov 2025 17:14:49 +0100 Subject: [PATCH] fixing error in session refresh, fixing error in common.js/buildDate, added enhanced information to error log detail page --- src/frontend/src/backend.js | 4 +- src/frontend/src/common.js | 13 +- .../components/layout/error/ErrorModal.vue | 91 +++++++ .../layout/error/ErrorModalOverview.vue | 252 ++++++++++++++++++ .../layout/error/ErrorModalPiniaStore.vue | 90 +++++++ .../ErrorModalTraceView.vue} | 18 +- src/frontend/src/pages/ErrorLog.vue | 8 +- .../steps/HandlingCostCalculationService.java | 18 +- 8 files changed, 466 insertions(+), 28 deletions(-) create mode 100644 src/frontend/src/components/layout/error/ErrorModal.vue create mode 100644 src/frontend/src/components/layout/error/ErrorModalOverview.vue create mode 100644 src/frontend/src/components/layout/error/ErrorModalPiniaStore.vue rename src/frontend/src/components/layout/{ErrorLogModal.vue => error/ErrorModalTraceView.vue} (85%) diff --git a/src/frontend/src/backend.js b/src/frontend/src/backend.js index b56bbae..273d23b 100644 --- a/src/frontend/src/backend.js +++ b/src/frontend/src/backend.js @@ -33,7 +33,7 @@ const trackActivity = () => { } -export const startSessionRefresh = () => { +const startSessionRefresh = () => { ['mousedown', 'keypress', 'scroll', 'touchstart'].forEach(event => { document.addEventListener(event, trackActivity); @@ -53,7 +53,7 @@ export const startSessionRefresh = () => { }, 10 * 60 * 1000); } -export const stopSessionRefresh = () => { +const stopSessionRefresh = () => { if (sessionRefreshInterval) { clearInterval(sessionRefreshInterval); } diff --git a/src/frontend/src/common.js b/src/frontend/src/common.js index 0f68443..fbcf2d5 100644 --- a/src/frontend/src/common.js +++ b/src/frontend/src/common.js @@ -161,17 +161,20 @@ export class UrlSafeBase64 { } } -export const buildDate = (date, time) => { - if (!date) return 'unkown'; +export const buildDate = (dateStr, time) => { + if (!dateStr) return 'unknown'; + + const date = new Date(dateStr); const year = date.getFullYear(); const month = (date.getMonth() + 1).toString().padStart(2, '0'); const day = date.getDate().toString().padStart(2, '0'); if (!time) return `${year}/${month}/${day}`; - const hours = time.getHours().toString().padStart(2, '0'); - const minutes = time.getMinutes().toString().padStart(2, '0'); - const seconds = time.getSeconds().toString().padStart(2, '0'); + + const hours = date.getHours().toString().padStart(2, '0'); + const minutes = date.getMinutes().toString().padStart(2, '0'); + const seconds = date.getSeconds().toString().padStart(2, '0'); return `${year}/${month}/${day} ${hours}:${minutes}:${seconds}`; } diff --git a/src/frontend/src/components/layout/error/ErrorModal.vue b/src/frontend/src/components/layout/error/ErrorModal.vue new file mode 100644 index 0000000..18e12e4 --- /dev/null +++ b/src/frontend/src/components/layout/error/ErrorModal.vue @@ -0,0 +1,91 @@ + + + + + \ No newline at end of file diff --git a/src/frontend/src/components/layout/error/ErrorModalOverview.vue b/src/frontend/src/components/layout/error/ErrorModalOverview.vue new file mode 100644 index 0000000..1be2c2a --- /dev/null +++ b/src/frontend/src/components/layout/error/ErrorModalOverview.vue @@ -0,0 +1,252 @@ + + + + + \ No newline at end of file diff --git a/src/frontend/src/components/layout/error/ErrorModalPiniaStore.vue b/src/frontend/src/components/layout/error/ErrorModalPiniaStore.vue new file mode 100644 index 0000000..468aab9 --- /dev/null +++ b/src/frontend/src/components/layout/error/ErrorModalPiniaStore.vue @@ -0,0 +1,90 @@ + + + + + \ No newline at end of file diff --git a/src/frontend/src/components/layout/ErrorLogModal.vue b/src/frontend/src/components/layout/error/ErrorModalTraceView.vue similarity index 85% rename from src/frontend/src/components/layout/ErrorLogModal.vue rename to src/frontend/src/components/layout/error/ErrorModalTraceView.vue index 6a44358..918870c 100644 --- a/src/frontend/src/components/layout/ErrorLogModal.vue +++ b/src/frontend/src/components/layout/error/ErrorModalTraceView.vue @@ -2,9 +2,8 @@
-

{{ title }}
{{ message }} -

- +
{{ title }} - {{ message }}
+
{{ exception }}
@@ -73,7 +72,6 @@ export default { @import url('https://fonts.googleapis.com/css2?family=Cal+Sans&family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Roboto+Mono:ital,wght@0,100..700;1,100..700&display=swap'); .highlight-trace-item { - color: #002F54; background-color: #F2F2F2; padding-left: 1.6rem; @@ -89,12 +87,16 @@ export default { font-size: 1.2rem; flex: 1; padding: 0 1.6rem; + min-height: 0; /* Wichtig für Flexbox-Scrolling */ } .trace-view-header { + font-family: Roboto Mono, monospace; + font-size: 1.2rem; display: flex; justify-content: space-between; align-items: center; + flex-shrink: 0; /* Header soll nicht schrumpfen */ } .trace-view-message { @@ -107,16 +109,16 @@ export default { } .trace-view-exception { - - + /* Dein Styling hier */ } .trace-view-container { - height: 90vh; - width: 80vw; display: flex; flex-direction: column; gap: 1.6rem; + height: 100%; /* Parent-Höhe ausfüllen */ + width: 100%; /* Parent-Breite ausfüllen */ + overflow: hidden; /* Container selbst soll nicht scrollen */ } .trace-view-container--no-trace { diff --git a/src/frontend/src/pages/ErrorLog.vue b/src/frontend/src/pages/ErrorLog.vue index 9f15e16..edf8459 100644 --- a/src/frontend/src/pages/ErrorLog.vue +++ b/src/frontend/src/pages/ErrorLog.vue @@ -1,7 +1,7 @@