From 5d41d1b619a22caa560d10364c7c8c9c2bf8a3f0 Mon Sep 17 00:00:00 2001
From: Benedikt Seeger <benedikt.seeger@ptb.de>
Date: Thu, 27 Feb 2025 15:34:32 +0100
Subject: [PATCH] added language changing of conformity data

---
 ...mple_dcc_WithExampleConformatyStatment.xml |  8 ++++----
 src/dccQuantity.js                            | 19 ++++++++++---------
 src/renderers/MeasurementRenderer.js          |  4 ++--
 3 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/data/sin_acceleration_example_dcc_WithExampleConformatyStatment.xml b/data/sin_acceleration_example_dcc_WithExampleConformatyStatment.xml
index f9918de..14ddc04 100644
--- a/data/sin_acceleration_example_dcc_WithExampleConformatyStatment.xml
+++ b/data/sin_acceleration_example_dcc_WithExampleConformatyStatment.xml
@@ -664,8 +664,8 @@ Entsprechend ISO 2041 ist die Phasenverschiebung definiert zu Δφqa = φq - φa
                     <dcc:data>
                       <dcc:quantity refType="basic_toleranceLimitLower">
                         <dcc:name>
-                          <dcc:content lang="en">Untere Konformitäts-Grenze des Betrags des Ladungsübertragungskoeffizenten</dcc:content>
-                          <dcc:content lang="de">Lower conformity limit for Charge transfer coefficient magnitude</dcc:content>
+                          <dcc:content lang="de">Untere Konformitäts-Grenze des Betrags des Ladungsübertragungskoeffizenten</dcc:content>
+                          <dcc:content lang="en">Lower conformity limit for Charge transfer coefficient magnitude</dcc:content>
                         </dcc:name>
                         <si:realListXMLList>
                           <si:valueXMLList>0.1236615</si:valueXMLList>
@@ -674,8 +674,8 @@ Entsprechend ISO 2041 ist die Phasenverschiebung definiert zu Δφqa = φq - φa
                       </dcc:quantity>
                       <dcc:quantity refType="basic_toleranceLimitUpper">
                         <dcc:name>
-                          <dcc:content lang="en">Obere Konformitäts-Grenze des Betrags des Ladungsübertragungskoeffizenten</dcc:content>
-                          <dcc:content lang="de">Upper conformity limit for Charge transfer coefficient magnitude</dcc:content>
+                          <dcc:content lang="de">Obere Konformitäts-Grenze des Betrags des Ladungsübertragungskoeffizenten</dcc:content>
+                          <dcc:content lang="en">Upper conformity limit for Charge transfer coefficient magnitude</dcc:content>
                         </dcc:name>
                         <si:realListXMLList>
                           <si:valueXMLList>0.1366785</si:valueXMLList>
diff --git a/src/dccQuantity.js b/src/dccQuantity.js
index 9945469..d621355 100644
--- a/src/dccQuantity.js
+++ b/src/dccQuantity.js
@@ -114,9 +114,9 @@ export class DCCRealQuantity extends DCCQuantity {
 }
 
 export class DCCConformity {
-    constructor(metaDataJson, language) {
+    constructor(metaDataJson, defaultLanguage) {
         this.metaDataJson = metaDataJson;
-        this.language = language;
+        this.defaultLanguage = defaultLanguage;
     }
 
     getConformityValues() {
@@ -127,7 +127,8 @@ export class DCCConformity {
         return [];
     }
 
-    _getTolerance(q, language) {
+    // Helper method to select the tolerance name based on the provided language.
+    _getTolerance(q, language = this.defaultLanguage) {
         if (q['dcc:name'] && q['dcc:name']['dcc:content']) {
             let content = q['dcc:name']['dcc:content'];
             if (Array.isArray(content)) {
@@ -139,11 +140,11 @@ export class DCCConformity {
         return '';
     }
 
-    getLowerLimit() {
+    getLowerLimit(language = this.defaultLanguage) {
         const data = this.metaDataJson['dcc:data'];
         if (data && data['dcc:quantity']) {
             let quantities = data['dcc:quantity'];
-            if (!Array.isArray(quantities)) { quantities = [quantities]; }
+            if (!Array.isArray(quantities)) quantities = [quantities];
             for (let q of quantities) {
                 if (q.$ && q.$.refType && q.$.refType.includes('basic_toleranceLimitLower')) {
                     let lowerValue = null;
@@ -159,18 +160,18 @@ export class DCCConformity {
                             lowerUnit = unit.toHTML({ oneLine: true });
                         }
                     }
-                    return { value: lowerValue, unit: lowerUnit, name: this._getTolerance(q, this.language) };
+                    return { value: lowerValue, unit: lowerUnit, name: this._getTolerance(q, language) };
                 }
             }
         }
         return null;
     }
 
-    getUpperLimit() {
+    getUpperLimit(language = this.defaultLanguage) {
         const data = this.metaDataJson['dcc:data'];
         if (data && data['dcc:quantity']) {
             let quantities = data['dcc:quantity'];
-            if (!Array.isArray(quantities)) { quantities = [quantities]; }
+            if (!Array.isArray(quantities)) quantities = [quantities];
             for (let q of quantities) {
                 if (q.$ && q.$.refType && q.$.refType.includes('basic_toleranceLimitUpper')) {
                     let upperValue = null;
@@ -186,7 +187,7 @@ export class DCCConformity {
                             upperUnit = unit.toHTML({ oneLine: true });
                         }
                     }
-                    return { value: upperValue, unit: upperUnit, name: this._getTolerance(q, this.language) };
+                    return { value: upperValue, unit: upperUnit, name: this._getTolerance(q, language) };
                 }
             }
         }
diff --git a/src/renderers/MeasurementRenderer.js b/src/renderers/MeasurementRenderer.js
index 42e9562..306213b 100644
--- a/src/renderers/MeasurementRenderer.js
+++ b/src/renderers/MeasurementRenderer.js
@@ -295,8 +295,8 @@ export function renderMeasurementResults(measurementResults, language) {
         group.forEach(trace => {
           const confObj = extraInfo[trace.index].conformity;
           if (confObj) {
-            const lower = confObj.getLowerLimit();
-            const upper = confObj.getUpperLimit();
+            const lower = confObj.getLowerLimit(language);
+            const upper = confObj.getUpperLimit(language);
             if (lower && typeof lower.value === 'number') {
               toleranceTraces.push({
                 x: [Math.min(...xValues), Math.max(...xValues)],
-- 
GitLab