From 7520e954fd194c087b67b70cf6fa79a5228b69da Mon Sep 17 00:00:00 2001
From: Samuel Eickelberg <samuel.eickelberg@ptb.de>
Date: Wed, 26 Mar 2025 14:01:41 +0100
Subject: [PATCH] Bugfixes / translations

---
 .../not-found/page-not-found.component.html   |   2 +-
 .../not-found/page-not-found.component.ts     |  10 +-
 .../dcc-contact/dcc-contact.component.html    |  32 +--
 .../dcc/dcc-contact/dcc-contact.component.ts  |   2 +-
 .../dcc-localised-string.component.html       |   2 +-
 .../services/common/error/error.service.ts    |   6 +-
 .../services/dcc/initialization.service.ts    |   1 +
 src/assets/i18n/de.json                       |   8 +
 src/assets/i18n/en.json                       |   8 +
 src/assets/i18n/es.json                       |   8 +
 src/assets/i18n/fr.json                       |   8 +
 src/assets/i18n/pt.json                       |   8 +
 translate.babel                               | 216 ++++++++++++++++++
 13 files changed, 281 insertions(+), 30 deletions(-)

diff --git a/src/app/components/common/not-found/page-not-found.component.html b/src/app/components/common/not-found/page-not-found.component.html
index 0a04a73..160fb8e 100644
--- a/src/app/components/common/not-found/page-not-found.component.html
+++ b/src/app/components/common/not-found/page-not-found.component.html
@@ -3,5 +3,5 @@
   <p *ngIf="currentUrl">
     <b>{{'not-found.thePage' | translate}} {{ currentUrl }} {{'not-found.isUnknown' | translate}}</b>
   </p>
-  <button [routerLink]="['/dashboard']" color="primary" mat-raised-button>{{'button.toDashboard' | translate}}</button>
+  <button [routerLink]="['/dcc/create']" color="primary" mat-raised-button>{{'button.toStartPage' | translate}}</button>
 </div>
diff --git a/src/app/components/common/not-found/page-not-found.component.ts b/src/app/components/common/not-found/page-not-found.component.ts
index 27eca1e..1f73a62 100644
--- a/src/app/components/common/not-found/page-not-found.component.ts
+++ b/src/app/components/common/not-found/page-not-found.component.ts
@@ -1,6 +1,5 @@
 import { Component, OnInit } from '@angular/core';
 import { Router } from '@angular/router';
-import { NGXLogger } from 'ngx-logger';
 
 @Component({
   selector: 'app-page-not-found',
@@ -11,15 +10,10 @@ export class PageNotFoundComponent implements OnInit {
 
   public currentUrl: String | undefined;
 
-  constructor(  private router: Router, 
-                private logger: NGXLogger
-              ) {
-              // find out current URL
-              this.currentUrl = router.getCurrentNavigation()?.finalUrl?.toString();
-              this.logger.warn("Got 404 on "+this.currentUrl);
+  constructor(router: Router) {
+    this.currentUrl = router.getCurrentNavigation()?.finalUrl?.toString();
   }
 
   ngOnInit(): void {
   }
-
 }
diff --git a/src/app/components/dcc/dcc-contact/dcc-contact.component.html b/src/app/components/dcc/dcc-contact/dcc-contact.component.html
index ffb7608..7f7c006 100644
--- a/src/app/components/dcc/dcc-contact/dcc-contact.component.html
+++ b/src/app/components/dcc/dcc-contact/dcc-contact.component.html
@@ -1,6 +1,6 @@
 <app-dcc-localised-string [isRequired]="true" [placeholder]="'dcc.name' | translate"
                           [strings]="contact.name!"></app-dcc-localised-string>
-<div class="row">
+<div class="dcc-row">
   <div class="label-container">
     <label for="phoneNumber">{{'dcc.phone' | translate}}</label>
   </div>
@@ -8,7 +8,7 @@
     <input [(ngModel)]=contact.phoneNumber id="phoneNumber" matInput name="phoneNumber">
   </mat-form-field>
 </div>
-<div class="row">
+<div class="dcc-row">
   <div class="label-container">
     <label for="emailAddress">{{'dcc.eMail' | translate}}</label>
   </div>
@@ -18,58 +18,58 @@
 </div>
 <mat-divider></mat-divider>
 <h4>{{'dcc.contact.address' | translate}}</h4>
-<div class="row">
+<div class="dcc-row">
   <div class="label-container">
-    <label for="city">{{'dcc.city' | translate}}<span class="asterix">*</span></label>
+    <label for="city">{{'dcc.location.city' | translate}}<span class="asterix">*</span></label>
   </div>
   <mat-form-field appearance="fill">
     <input [(ngModel)]=contact.location!.city [required]="strict" id="city" matInput name="city">
   </mat-form-field>
 </div>
-<div class="row">
+<div class="dcc-row">
   <div class="label-container">
-    <label for="countryCode">{{'dcc.countryCode' | translate}}<span class="asterix">*</span></label>
+    <label for="countryCode">{{'dcc.location.countryCode' | translate}}<span class="asterix">*</span></label>
   </div>
   <mat-form-field appearance="fill">
     <input [(ngModel)]=contact.location!.countryCode [required]="strict" id="countryCode" matInput name="countryCode"
            oninput="this.value = this.value.toUpperCase()">
   </mat-form-field>
 </div>
-<div class="row">
+<div class="dcc-row">
   <div class="label-container">
-    <label for="postalCode">{{'dcc.postalCode' | translate}}<span class="asterix">*</span></label>
+    <label for="postalCode">{{'dcc.location.postalCode' | translate}}<span class="asterix">*</span></label>
   </div>
   <mat-form-field appearance="fill">
     <input [(ngModel)]=contact.location!.postalCode [required]="strict" id="postalCode" matInput name="postalCode">
   </mat-form-field>
 </div>
-<div class="row">
+<div class="dcc-row">
   <div class="label-container">
-    <label for="stateCode">{{'dcc.state' | translate}} <span class="asterix">*</span> </label>
+    <label for="stateCode">{{'dcc.location.stateCode' | translate}} <span class="asterix">*</span> </label>
   </div>
   <mat-form-field appearance="fill">
     <input [(ngModel)]=contact.location!.stateCode [required]="strict" id="stateCode" matInput name="stateCode">
   </mat-form-field>
 </div>
-<div class="row">
+<div class="dcc-row">
   <div class="label-container">
-    <label for="street">{{'dcc.street' | translate}}<span class="asterix">*</span></label>
+    <label for="street">{{'dcc.location.street' | translate}}<span class="asterix">*</span></label>
   </div>
   <mat-form-field appearance="fill">
     <input [(ngModel)]=contact.location!.street [required]="strict" id="street" matInput name="street">
   </mat-form-field>
 </div>
-<div class="row">
+<div class="dcc-row">
   <div class="label-container">
-    <label for="houseNumber">{{'dcc.streetNumber' | translate}}<span class="asterix">*</span></label>
+    <label for="houseNumber">{{'dcc.location.houseNumber' | translate}}<span class="asterix">*</span></label>
   </div>
   <mat-form-field appearance="fill">
     <input [(ngModel)]=contact.location!.houseNumber [required]="strict" id="houseNumber" matInput name="houseNumber">
   </mat-form-field>
 </div>
-<div class="row">
+<div class="dcc-row">
   <div class="label-container">
-    <label for="poBox">{{'dcc.poBox' | translate}}</label>
+    <label for="poBox">{{'dcc.location.poBox' | translate}}</label>
   </div>
   <mat-form-field appearance="fill">
     <input [(ngModel)]=contact.location!.poBox id="poBox" matInput name="poBox">
diff --git a/src/app/components/dcc/dcc-contact/dcc-contact.component.ts b/src/app/components/dcc/dcc-contact/dcc-contact.component.ts
index 2877ff4..9774cfe 100644
--- a/src/app/components/dcc/dcc-contact/dcc-contact.component.ts
+++ b/src/app/components/dcc/dcc-contact/dcc-contact.component.ts
@@ -15,7 +15,7 @@ export class DccContactComponent implements OnInit {
   @Output() fileSelected = new EventEmitter<ByteDataDto>();
 
   constructor(initializationService: InitializationService) {
-    this.strict = true;
+    this.strict = false;
     this.contact = initializationService.getEmptyContactDto();
   }
 
diff --git a/src/app/components/dcc/dcc-localised-string/dcc-localised-string.component.html b/src/app/components/dcc/dcc-localised-string/dcc-localised-string.component.html
index addd45d..36e92dd 100644
--- a/src/app/components/dcc/dcc-localised-string/dcc-localised-string.component.html
+++ b/src/app/components/dcc/dcc-localised-string/dcc-localised-string.component.html
@@ -1,4 +1,4 @@
-<div *ngFor="let item of strings.content; let i = index" class="row">
+<div *ngFor="let item of strings.content; let i = index" class="dcc-row">
   <ng-container *ngIf="getOrSetLang(item)">
     <div class="label-container">
       <label [for]="placeholder.toLowerCase()">{{placeholder}}<span class="asterix">*</span>
diff --git a/src/app/services/common/error/error.service.ts b/src/app/services/common/error/error.service.ts
index 8333e5c..86c3834 100644
--- a/src/app/services/common/error/error.service.ts
+++ b/src/app/services/common/error/error.service.ts
@@ -56,16 +56,16 @@ export class ErrorService {
     } else if (error instanceof Error) {
       stack = message.stack;
     } else {
-      this.logger.warn("Got unexpected error of type "+typeof(error)+" with structure "+JSON.stringify(error, null, 3));
+      this.logger.warn("Got unexpected error of type " + typeof(error) + " with structure " + JSON.stringify(error, null, 3));
     }
     this.logErrorDetails(message,status,stack);
   }
 
   logErrorDetails(message: string, status?: number, stack?: string): void {
     if (message != undefined || status != undefined) {
-      this.logger.warn("Got error "+message+" with status "+status+" and stack "+stack);
+      this.logger.warn("Got error " + message + " with status " + status + " and stack " + stack);
     } else {
-      this.logger.warn("Got (invisible) error "+message+" with status "+status+" and stack "+stack);
+      this.logger.warn("Got (invisible) error " + message + " with status " + status + " and stack " + stack);
     }
   } 
 }
diff --git a/src/app/services/dcc/initialization.service.ts b/src/app/services/dcc/initialization.service.ts
index 21b4e38..39b77bb 100644
--- a/src/app/services/dcc/initialization.service.ts
+++ b/src/app/services/dcc/initialization.service.ts
@@ -203,6 +203,7 @@ export class InitializationService {
     result.id = '';
     result.countryCode = 'DE';
     result.street = '';
+    result.houseNumber = '';
     result.city = '';
     result.additionalInformation = this.getEmptyRichContentDto();
     return result;
diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json
index 545ffa6..9258ab0 100644
--- a/src/assets/i18n/de.json
+++ b/src/assets/i18n/de.json
@@ -4,6 +4,7 @@
 	"button.nextStep": "Nächster Schritt",
 	"button.previousStep": "Vorheriger Schritt",
 	"button.toDashboard": "Zum Dashboard",
+	"button.toStartPage": "Zur Startseite",
 	"dcc.addStatements": "Statements hinzufügen",
 	"dcc.administrativeData": "Administrative Daten",
 	"dcc.applyTemplate": "Vorlage anwenden",
@@ -57,6 +58,13 @@
 	"dcc.installedSoftware": "Installierte Software",
 	"dcc.label": "Benennung",
 	"dcc.location": "Standort",
+	"dcc.location.city": "Ort",
+	"dcc.location.countryCode": "Ländercode",
+	"dcc.location.houseNumber": "Hausnummer",
+	"dcc.location.poBox": "Postfach",
+	"dcc.location.postalCode": "Postleitzahl",
+	"dcc.location.stateCode": "Bundesland",
+	"dcc.location.street": "Straße",
 	"dcc.manufacturer": "Hersteller",
 	"dcc.measurementResult": "Messergebnis",
 	"dcc.measurementResults": "Messergebnisse",
diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json
index 816dab9..1bfb61c 100644
--- a/src/assets/i18n/en.json
+++ b/src/assets/i18n/en.json
@@ -4,6 +4,7 @@
 	"button.nextStep": "Next step",
 	"button.previousStep": "Previous step",
 	"button.toDashboard": "To the dashboard",
+	"button.toStartPage": "To the homepage",
 	"dcc.addStatements": "Add statements",
 	"dcc.administrativeData": "Administrative data",
 	"dcc.applyTemplate": "Apply template",
@@ -57,6 +58,13 @@
 	"dcc.installedSoftware": "Installed software",
 	"dcc.label": "Label",
 	"dcc.location": "Location",
+	"dcc.location.city": "Place",
+	"dcc.location.countryCode": "Country code",
+	"dcc.location.houseNumber": "House number",
+	"dcc.location.poBox": "P.O. Box",
+	"dcc.location.postalCode": "Postcode",
+	"dcc.location.stateCode": "State",
+	"dcc.location.street": "Street",
 	"dcc.manufacturer": "Manufacturer",
 	"dcc.measurementResult": "Measurement result",
 	"dcc.measurementResults": "Measurement results",
diff --git a/src/assets/i18n/es.json b/src/assets/i18n/es.json
index 788d5a8..c3c22ad 100644
--- a/src/assets/i18n/es.json
+++ b/src/assets/i18n/es.json
@@ -4,6 +4,7 @@
 	"button.nextStep": "Siguiente paso",
 	"button.previousStep": "Paso anterior",
 	"button.toDashboard": "Al salpicadero",
+	"button.toStartPage": "A la página de inicio",
 	"dcc.addStatements": "Añadir declaraciones",
 	"dcc.administrativeData": "Datos administrativos",
 	"dcc.applyTemplate": "Aplicar plantilla",
@@ -57,6 +58,13 @@
 	"dcc.installedSoftware": "Software instalado",
 	"dcc.label": "Nombrar",
 	"dcc.location": "Ubicación",
+	"dcc.location.city": "Lugar",
+	"dcc.location.countryCode": "Código del país",
+	"dcc.location.houseNumber": "Número de casa",
+	"dcc.location.poBox": "Apartado de correos",
+	"dcc.location.postalCode": "Código postal",
+	"dcc.location.stateCode": "Estado",
+	"dcc.location.street": "Calle",
 	"dcc.manufacturer": "Fabricante",
 	"dcc.measurementResult": "Resultado de la medición",
 	"dcc.measurementResults": "Resultados de las mediciones",
diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json
index 9a76299..fe8c35b 100644
--- a/src/assets/i18n/fr.json
+++ b/src/assets/i18n/fr.json
@@ -4,6 +4,7 @@
 	"button.nextStep": "Prochaine étape",
 	"button.previousStep": "Étape précédente",
 	"button.toDashboard": "Vers le tableau de bord",
+	"button.toStartPage": "Vers la page d'accueil",
 	"dcc.addStatements": "Ajouter des déclarations",
 	"dcc.administrativeData": "Données administratives",
 	"dcc.applyTemplate": "Appliquer le modèle",
@@ -57,6 +58,13 @@
 	"dcc.installedSoftware": "Logiciels installés",
 	"dcc.label": "Désignation",
 	"dcc.location": "Site",
+	"dcc.location.city": "Lieu",
+	"dcc.location.countryCode": "Code du pays",
+	"dcc.location.houseNumber": "Numéro de maison",
+	"dcc.location.poBox": "Boîte postale",
+	"dcc.location.postalCode": "Code Postal",
+	"dcc.location.stateCode": "Département",
+	"dcc.location.street": "Rue",
 	"dcc.manufacturer": "Fabricant",
 	"dcc.measurementResult": "Résultat de la mesure",
 	"dcc.measurementResults": "Résultats des mesures",
diff --git a/src/assets/i18n/pt.json b/src/assets/i18n/pt.json
index 7168753..01550da 100644
--- a/src/assets/i18n/pt.json
+++ b/src/assets/i18n/pt.json
@@ -4,6 +4,7 @@
 	"button.nextStep": "Próxima etapa",
 	"button.previousStep": "Etapa anterior",
 	"button.toDashboard": "Para o painel de controle",
+	"button.toStartPage": "Para a página inicial",
 	"dcc.addStatements": "Adicionar declarações",
 	"dcc.administrativeData": "Dados administrativos",
 	"dcc.applyTemplate": "Aplicar modelo",
@@ -57,6 +58,13 @@
 	"dcc.installedSoftware": "Software instalado",
 	"dcc.label": "Nomeação",
 	"dcc.location": "Localização",
+	"dcc.location.city": "Local",
+	"dcc.location.countryCode": "Código do país",
+	"dcc.location.houseNumber": "Número da casa",
+	"dcc.location.poBox": "Caixa postal",
+	"dcc.location.postalCode": "Código postal",
+	"dcc.location.stateCode": "Estado",
+	"dcc.location.street": "Rua",
 	"dcc.manufacturer": "Fabricante",
 	"dcc.measurementResult": "Resultado da medição",
 	"dcc.measurementResults": "Resultados da medição",
diff --git a/translate.babel b/translate.babel
index 16a3451..9cd6f06 100644
--- a/translate.babel
+++ b/translate.babel
@@ -154,6 +154,33 @@
 							</translation>
 						</translations>
 					</concept_node>
+					<concept_node>
+						<name>button.toStartPage</name>
+						<description/>
+						<comment/>
+						<translations>
+							<translation>
+								<language>de-DE</language>
+								<approved>false</approved>
+							</translation>
+							<translation>
+								<language>en-GB</language>
+								<approved>false</approved>
+							</translation>
+							<translation>
+								<language>es-ES</language>
+								<approved>false</approved>
+							</translation>
+							<translation>
+								<language>fr-FR</language>
+								<approved>false</approved>
+							</translation>
+							<translation>
+								<language>pt-BR</language>
+								<approved>false</approved>
+							</translation>
+						</translations>
+					</concept_node>
 					<concept_node>
 						<name>dcc.addStatements</name>
 						<description/>
@@ -1585,6 +1612,195 @@
 							</translation>
 						</translations>
 					</concept_node>
+					<concept_node>
+						<name>dcc.location.city</name>
+						<description/>
+						<comment/>
+						<translations>
+							<translation>
+								<language>de-DE</language>
+								<approved>false</approved>
+							</translation>
+							<translation>
+								<language>en-GB</language>
+								<approved>false</approved>
+							</translation>
+							<translation>
+								<language>es-ES</language>
+								<approved>false</approved>
+							</translation>
+							<translation>
+								<language>fr-FR</language>
+								<approved>false</approved>
+							</translation>
+							<translation>
+								<language>pt-BR</language>
+								<approved>false</approved>
+							</translation>
+						</translations>
+					</concept_node>
+					<concept_node>
+						<name>dcc.location.countryCode</name>
+						<description/>
+						<comment/>
+						<translations>
+							<translation>
+								<language>de-DE</language>
+								<approved>false</approved>
+							</translation>
+							<translation>
+								<language>en-GB</language>
+								<approved>false</approved>
+							</translation>
+							<translation>
+								<language>es-ES</language>
+								<approved>false</approved>
+							</translation>
+							<translation>
+								<language>fr-FR</language>
+								<approved>false</approved>
+							</translation>
+							<translation>
+								<language>pt-BR</language>
+								<approved>false</approved>
+							</translation>
+						</translations>
+					</concept_node>
+					<concept_node>
+						<name>dcc.location.houseNumber</name>
+						<description/>
+						<comment/>
+						<translations>
+							<translation>
+								<language>de-DE</language>
+								<approved>false</approved>
+							</translation>
+							<translation>
+								<language>en-GB</language>
+								<approved>false</approved>
+							</translation>
+							<translation>
+								<language>es-ES</language>
+								<approved>false</approved>
+							</translation>
+							<translation>
+								<language>fr-FR</language>
+								<approved>false</approved>
+							</translation>
+							<translation>
+								<language>pt-BR</language>
+								<approved>false</approved>
+							</translation>
+						</translations>
+					</concept_node>
+					<concept_node>
+						<name>dcc.location.poBox</name>
+						<description/>
+						<comment/>
+						<translations>
+							<translation>
+								<language>de-DE</language>
+								<approved>false</approved>
+							</translation>
+							<translation>
+								<language>en-GB</language>
+								<approved>false</approved>
+							</translation>
+							<translation>
+								<language>es-ES</language>
+								<approved>false</approved>
+							</translation>
+							<translation>
+								<language>fr-FR</language>
+								<approved>false</approved>
+							</translation>
+							<translation>
+								<language>pt-BR</language>
+								<approved>false</approved>
+							</translation>
+						</translations>
+					</concept_node>
+					<concept_node>
+						<name>dcc.location.postalCode</name>
+						<description/>
+						<comment/>
+						<translations>
+							<translation>
+								<language>de-DE</language>
+								<approved>false</approved>
+							</translation>
+							<translation>
+								<language>en-GB</language>
+								<approved>false</approved>
+							</translation>
+							<translation>
+								<language>es-ES</language>
+								<approved>false</approved>
+							</translation>
+							<translation>
+								<language>fr-FR</language>
+								<approved>false</approved>
+							</translation>
+							<translation>
+								<language>pt-BR</language>
+								<approved>false</approved>
+							</translation>
+						</translations>
+					</concept_node>
+					<concept_node>
+						<name>dcc.location.stateCode</name>
+						<description/>
+						<comment/>
+						<translations>
+							<translation>
+								<language>de-DE</language>
+								<approved>false</approved>
+							</translation>
+							<translation>
+								<language>en-GB</language>
+								<approved>false</approved>
+							</translation>
+							<translation>
+								<language>es-ES</language>
+								<approved>false</approved>
+							</translation>
+							<translation>
+								<language>fr-FR</language>
+								<approved>false</approved>
+							</translation>
+							<translation>
+								<language>pt-BR</language>
+								<approved>false</approved>
+							</translation>
+						</translations>
+					</concept_node>
+					<concept_node>
+						<name>dcc.location.street</name>
+						<description/>
+						<comment/>
+						<translations>
+							<translation>
+								<language>de-DE</language>
+								<approved>false</approved>
+							</translation>
+							<translation>
+								<language>en-GB</language>
+								<approved>false</approved>
+							</translation>
+							<translation>
+								<language>es-ES</language>
+								<approved>false</approved>
+							</translation>
+							<translation>
+								<language>fr-FR</language>
+								<approved>false</approved>
+							</translation>
+							<translation>
+								<language>pt-BR</language>
+								<approved>false</approved>
+							</translation>
+						</translations>
+					</concept_node>
 					<concept_node>
 						<name>dcc.manufacturer</name>
 						<description/>
-- 
GitLab