From fc0d408966d8e4b56e3de8c569ac086b20dc0aa3 Mon Sep 17 00:00:00 2001
From: Benny <ThisIsBenny@users.noreply.github.com>
Date: Sun, 3 Jan 2021 11:48:26 +0100
Subject: [PATCH] Some adjustments after Pull-Request

---
 .../number-of-covild-19-vaccinations.js       | 103 +++++++++++-------
 1 file changed, 66 insertions(+), 37 deletions(-)

diff --git a/number-of-covild-19-vaccinations/number-of-covild-19-vaccinations.js b/number-of-covild-19-vaccinations/number-of-covild-19-vaccinations.js
index 62c8bc7..21b97d8 100644
--- a/number-of-covild-19-vaccinations/number-of-covild-19-vaccinations.js
+++ b/number-of-covild-19-vaccinations/number-of-covild-19-vaccinations.js
@@ -27,7 +27,6 @@ const cacheMinutes = 6 * 60
 //////////////////////////         Dev Settings         ////////////////////////
 ////////////////////////////////////////////////////////////////////////////////
 
-let altUnits = false
 const debug = true
 config.widgetFamily = config.widgetFamily || 'large'
 
@@ -36,20 +35,24 @@ config.widgetFamily = config.widgetFamily || 'large'
 ////////////////////////////////////////////////////////////////////////////////
 
 let widgetInputRAW = args.widgetParameter
-let selectedState
+let widgetInput, selectedState, altUnits
 
-if ( widgetInputRAW && widgetInputRAW.toString().indexOf(",") !== -1 ){
-  // multiple args
-  altUnits = widgetInputRAW.toString().split(",")[1] == "1" ? true : false
-  widgetInputRAW = widgetInputRAW.split(",")[0]
-}
-if (widgetInputRAW !== null && widgetInputRAW !== "" ) {
-  if (/^Baden-Württemberg|Bayern|Berlin|Brandenburg|Bremen|Hamburg|Hessen|Mecklenburg-Vorpommern|Niedersachsen|Nordrhein-Westfalen|Rheinland-Pfalz|Saarland|Sachsen|Sachsen-Anhalt|Schleswig-Holstein|Thüringen$/.test(widgetInputRAW.toString().trim()) === false) {
-     throw new Error('Kein gültiges Bundesland. Bitte prüfen Sie die Eingabe.') 
+if (widgetInputRAW !== null && widgetInputRAW !== "") {
+  widgetInput = widgetInputRAW.toString().split(",")
+  if(widgetInput.length === 1 &&  widgetInput[0].trim() === '1') {
+    altUnits = true
+    selectedState = undefined
+  } else {
+    selectedState = widgetInput[0].trim()
+    altUnits = widgetInput[1] ? true : false
+  }
+  if (/^(Baden-Württemberg|Bayern|Berlin|Brandenburg|Bremen|Hamburg|Hessen|Mecklenburg-Vorpommern|Niedersachsen|Nordrhein-Westfalen|Rheinland-Pfalz|Saarland|Sachsen|Sachsen-Anhalt|Schleswig-Holstein|Thüringen)$/.test(selectedState) === false && selectedState !== '' && selectedState !== undefined) {
+    throw new Error('Kein gültiges Bundesland. Bitte prüfen Sie die Eingabe.') 
   }
-  selectedState = widgetInputRAW.toString()
 }
 
+const maximumFractionDigits = altUnits ? 1 : 0
+
 const fontSize = 9
 const fontSize2 = 12
 const spacing = 5
@@ -290,37 +293,50 @@ if (config.widgetFamily === 'large') {
     imageStack1.addSpacer()
     column.addSpacer(2)
     
-    let total1 = (result.states[selectedState].total / 1000).toFixed(0)
-    let total1unit = "t"
-    if ( altUnits ){
-      total1unit = " Tsd."
-    }
+    // Total Numbers
+    let total1 = result.states[selectedState].total / 1000
+    let total1unit = altUnits ? " Tsd." : "t"
     // if total is a million or more, format as millions and not thousands
     if ( altUnits && result.states[selectedState].total > 999999 ){
-      total1 =  (result.states[selectedState].total / 1000000).toLocaleString(Device.language(), {maximumFractionDigits: 1})
+      total1 =  result.states[selectedState].total / 1000000
       total1unit = " Mio."
     }
+    ///////////////////////////////////////////////////////////////////
+    
+    // vaccinated nunbers
     let vaccinated1
-    let vaccinated1unit = "t"
+    let vaccinated1unit = altUnits ? " Tsd." : "t"
+    
     if ( altUnits && result.states[selectedState].vaccinated > 999999){
-      vaccinated1 =  (result.states[selectedState].vaccinated / 1000000).toLocaleString(Device.language(), {maximumFractionDigits: 2})
+      vaccinated1 =  result.states[selectedState].vaccinated / 1000000
       vaccinated1unit = " Mio."
     }
     else if ( result.states[selectedState].vaccinated > 999 ) {
-      vaccinated1 =  (result.states[selectedState].vaccinated / 1000).toFixed(0)
-      if ( altUnits ){
-      	vaccinated1unit = " Tsd."
-      }
+      vaccinated1 =  result.states[selectedState].vaccinated / 1000
     } else {
       vaccinated1 = result.states[selectedState].vaccinated
-      
+      vaccinated1unit = ''
     }
+    ///////////////////////////////////////////////////////////////////
+    if (maximumFractionDigits === 0) {
+      total1 = parseInt(total1)
+      vaccinated1 = parseInt(vaccinated1)
+    }
+    
     
     const numbersText1Stack = column.addStack()
     numbersText1Stack.layoutHorizontally()
     numbersText1Stack.addSpacer()
     
-    const numbersText1 = numbersText1Stack.addText(`${vaccinated1}${vaccinated1unit} von ${total1}${total1unit}`)  
+    
+    const textString1 = `${
+      parseFloat(vaccinated1)
+      .toLocaleString(Device.language(), {maximumFractionDigits: maximumFractionDigits})
+     }${vaccinated1unit} von ${
+      parseFloat(total1)
+      .toLocaleString(Device.language(), {maximumFractionDigits: maximumFractionDigits})
+     }${total1unit}`
+    const numbersText1 = numbersText1Stack.addText(textString1)  
     numbersText1.font = Font.systemFont(fontSize2)
     numbersText1Stack.addSpacer()
     
@@ -345,31 +361,44 @@ if (config.widgetFamily === 'large') {
     imageStack2.addImage(getDiagram(result.quote));
     imageStack2.addSpacer()
     
+    
+    // Total numbers
     let total2 = (result.total / 1000).toFixed(0)
-    let total2unit = "t"
-    if ( altUnits ){
-      total2unit = " Tsd."
-    }
+    let total2unit = altUnits ? " Tsd." : "t"
     // if total is a million or more, format as millions and not thousands
     if ( altUnits && result.total > 999999 ){
-    	total2 = (result.total / 1000000).toLocaleString(Device.language(), {maximumFractionDigits: 1})
+    	total2 = result.total / 1000000
     	total2unit = " Mio."
     }
-    let vaccinated2 = (result.vaccinated / 1000).toFixed(0)
-    let vaccinated2unit = "t"
-    if ( altUnits ){
-      vaccinated2unit = " Tsd."
-    }
+    ///////////////////////////////////////////////////////////////////
+    
+    // vaccinated numbers
+    let vaccinated2 = result.vaccinated / 1000
+    let vaccinated2unit = altUnits ? " Tsd." : "t"
     if ( altUnits && result.vaccinated > 999999 ){
-    	vaccinated2 = (result.vaccinated / 1000000).toLocaleString(Device.language(), {maximumFractionDigits: 2})
+    	vaccinated2 = result.vaccinated / 1000000
     	vaccinated2unit = " Mio."
     }
+    ///////////////////////////////////////////////////////////////////
+    if (maximumFractionDigits === 0) {
+      total2 = parseInt(total2)
+      vaccinated2 = parseInt(vaccinated2)
+    }
     
     const numbersText2Stack = column2.addStack()
     numbersText2Stack.layoutHorizontally()
     numbersText2Stack.addSpacer()
     
-    const numbersText2 = numbersText2Stack.addText(`${vaccinated2}${vaccinated2unit} von ${total2}${total2unit}`)  
+    
+    const textString2 = `${
+      parseFloat(vaccinated2)
+      .toLocaleString(Device.language(), {maximumFractionDigits: maximumFractionDigits})
+     }${vaccinated2unit} von ${
+      parseFloat(total2)
+      .toLocaleString(Device.language(), {maximumFractionDigits: maximumFractionDigits})
+     }${total2unit}`
+    
+    const numbersText2 = numbersText2Stack.addText(textString2)  
     numbersText2.font = Font.systemFont(fontSize2)
     numbersText2Stack.addSpacer()