Add 'sleep' status to Production model and update related components

- Introduced a new 'sleep' boolean field in the Production model to indicate if production is suspended.
- Updated FalukantService to include 'sleep' in the production attributes.
- Enhanced MessagesDialog and ProductionSection components to display the production status and handle branch names.
- Added corresponding translations for 'status', 'sleep', and 'active' in both German and English locale files.
This commit is contained in:
Torsten Schulz (local)
2026-01-14 15:29:53 +01:00
parent d1359ccc36
commit 02d24eccd8
6 changed files with 65 additions and 10 deletions

View File

@@ -50,18 +50,32 @@ export default {
page: 1,
size: 10,
total: 0,
pageInput: 1,
pageInput: 1,
branches: [], // Cache für Branch-Namen
};
},
methods: {
async open() {
this.page = 1;
this.pageInput = 1;
this.pageInput = 1;
await this.loadBranches(); // Branches laden für Branch-Namen
await this.load();
this.$refs.dlg.open();
// mark unread as shown
try { await apiClient.post('/api/falukant/notifications/mark-shown'); } catch {}
},
async loadBranches() {
try {
const result = await apiClient.get('/api/falukant/branches');
this.branches = result.data.map(branch => ({
id: branch.id,
cityName: branch.region.name,
}));
} catch (error) {
console.error('Error loading branches:', error);
this.branches = [];
}
},
async markAll() {
try {
await apiClient.post('/api/falukant/notifications/mark-shown');
@@ -268,9 +282,14 @@ export default {
formatted.value = Number(params.value);
}
// Filiale-Information
// Filiale-Information mit Branch-Namen
if (params.branch_id !== undefined && params.branch_id !== null) {
formatted.branch_info = ` (Filiale #${params.branch_id})`;
const branch = this.branches.find(b => b.id === params.branch_id);
if (branch && branch.cityName) {
formatted.branch_info = ` (${branch.cityName})`;
} else {
formatted.branch_info = ` (Filiale #${params.branch_id})`;
}
} else {
formatted.branch_info = '';
}

View File

@@ -9,6 +9,7 @@
<th>{{ $t('falukant.branch.production.quantity') }}</th>
<th>{{ $t('falukant.branch.production.ending') }}</th>
<th>{{ $t('falukant.branch.production.remainingTime') }}</th>
<th>{{ $t('falukant.branch.production.status') }}</th>
</tr>
</thead>
<tbody>
@@ -16,7 +17,11 @@
<td>{{ $t(`falukant.product.${production.productType.labelTr}`) }}</td>
<td>{{ production.quantity }}</td>
<td>{{ calculateEndDateTime(production.startTimestamp, production.productType.productionTime) }}</td>
<td>{{ calculateRemainingTime(production.startTimestamp, production.productType.productionTime) }} s</td>
<td>{{ production.sleep ? '-' : calculateRemainingTime(production.startTimestamp, production.productType.productionTime) + ' s' }}</td>
<td>
<span v-if="production.sleep" class="production-sleep">{{ $t('falukant.branch.production.sleep') }}</span>
<span v-else>{{ $t('falukant.branch.production.active') }}</span>
</td>
</tr>
</tbody>
</table>

View File

@@ -320,7 +320,10 @@
"current": "Laufende Produktionen",
"product": "Produkt",
"remainingTime": "Verbleibende Zeit (Sekunden)",
"noProductions": "Keine laufenden Produktionen."
"noProductions": "Keine laufenden Produktionen.",
"status": "Status",
"sleep": "Zurückgestellt",
"active": "Aktiv"
},
"columns": {
"city": "Stadt",

View File

@@ -192,8 +192,31 @@
"storage": "Storage",
"transport": "Transport",
"taxes": "Taxes"
}
,"taxes": {
},
"production": {
"title": "Production",
"info": "Details about production in the branch.",
"selectProduct": "Select product",
"quantity": "Quantity",
"storageAvailable": "Free storage",
"cost": "Cost",
"duration": "Duration",
"revenue": "Revenue",
"start": "Start production",
"success": "Production started successfully!",
"error": "Error starting production.",
"minutes": "Minutes",
"ending": "Completed:",
"time": "Time",
"current": "Running productions",
"product": "Product",
"remainingTime": "Remaining time (seconds)",
"noProductions": "No running productions.",
"status": "Status",
"sleep": "Suspended",
"active": "Active"
},
"taxes": {
"title": "Taxes",
"loading": "Loading tax data...",
"loadingError": "Failed to load tax data: {error}",