Update daemon socket URL and enhance message rendering in frontend

- Changed the default value for `VITE_DAEMON_SOCKET` in `deploy-frontend.sh` and `update-frontend.sh` to use the `/ws/` path.
- Updated the message rendering logic in `MessagesDialog.vue` to utilize a new `formatBody` method for improved translation handling.
- Added a new translation for "overproduction" in both English and German localization files.
This commit is contained in:
Torsten Schulz (local)
2025-12-01 09:47:16 +01:00
parent ab1e4bec60
commit d19feb8bc1
6 changed files with 29 additions and 8 deletions

View File

@@ -11,7 +11,7 @@
>
<ul class="messages">
<li v-for="n in messages" :key="n.id" :class="{ unread: !n.shown }">
<div class="body">{{ $t('falukant.notifications.' + n.tr) }}</div>
<div class="body">{{ formatBody(n) }}</div>
<div class="footer">
<span>{{ formatDate(n.createdAt) }}</span>
</div>
@@ -116,6 +116,26 @@ export default {
try {
return new Date(dt).toLocaleString();
} catch { return dt; }
},
formatBody(n) {
let key = n.tr;
let params = {};
if (typeof key === 'string') {
const trimmed = key.trim();
if (trimmed.startsWith('{') && trimmed.endsWith('}')) {
try {
const parsed = JSON.parse(trimmed);
if (parsed && parsed.tr) {
key = parsed.tr;
params = { ...parsed };
delete params.tr;
}
} catch (e) {
// Fallback: ignore parse error and use raw key
}
}
}
return this.$t('falukant.notifications.' + key, params);
}
},
computed: {

View File

@@ -15,7 +15,8 @@
"empty": "Keine Nachrichten vorhanden."
},
"notifications": {
"notify_election_created": "Es wurde eine neue Wahl ausgeschrieben."
"notify_election_created": "Es wurde eine neue Wahl ausgeschrieben.",
"production.overproduction": "Überproduktion: Deine Produktion liegt {value}% über dem Bedarf."
},
"health": {
"amazing": "Super",

View File

@@ -6,7 +6,8 @@
"empty": "No messages."
},
"notifications": {
"notify_election_created": "A new election has been scheduled."
"notify_election_created": "A new election has been scheduled.",
"production.overproduction": "Overproduction: your production is {value}% above demand."
},
"statusbar": {
"age": "Age",

View File

@@ -270,10 +270,9 @@ const store = createStore({
// Wenn Umgebungsvariable nicht gesetzt ist oder leer, verwende Fallback-Logik
if (!daemonUrl || (typeof daemonUrl === 'string' && daemonUrl.trim() === '')) {
// Fallback: basierend auf Protokoll und Hostname (dynamisch generiert, keine hardcodierten Werte)
// Fallback: gleiche Origin + Pfad /ws/ (Apache/Proxy routet intern auf Port 4551)
const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
const port = '4551';
daemonUrl = `${protocol}//${hostname}:${port}`;
daemonUrl = `${protocol}//${hostname}/ws/`;
console.log('[Daemon] Verwende Fallback basierend auf Hostname und Protokoll');
} else {
console.log('[Daemon] Verwende Umgebungsvariable');