diff LazyBear/Views/Company/Helpers/StatsView.swift @ 416:1662a41e2c1a

KeyStatsView implemented
author Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
date Wed, 09 Jun 2021 20:26:28 +0200
parents 34f9e408b861
children 5f21f7c23c5e
line wrap: on
line diff
--- a/LazyBear/Views/Company/Helpers/StatsView.swift	Wed Jun 09 12:49:17 2021 +0200
+++ b/LazyBear/Views/Company/Helpers/StatsView.swift	Wed Jun 09 20:26:28 2021 +0200
@@ -10,27 +10,23 @@
 struct StatsView: View {
     var keyStats: KeyStatsModel
     @Environment(\.presentationMode) private var presentationStatsView
+    let displayWords: DisplayWordsModel = parseJSON("DisplayWords.json")
     
     var body: some View {
         NavigationView {
             Form {
                 let mirror = Mirror(reflecting: keyStats)
                 ForEach(Array(mirror.children), id: \.label) { child in
-                    HStack {
-                        let label = String(child.label!)
-                        
-                        Text("\(label)".capitalized)
-                            .fontWeight(.semibold)
-                        
-                        // Unwrap optional value
-                        if let doubleValue = child.value as? Double {
-                            Text("\(doubleValue)")
-                        } else if let intValue = child.value as? Int {
-                            Text("\(intValue)")
-                        } else if let stringValue = child.value as? String {
-                            Text("\(stringValue)")
-                        } else {
-                            Text("NaN")
+                    if let unwrappedValue = unwrapAnyOptional(value: child.value) {
+                        HStack {
+                            let label = String(child.label!)
+                            Text("\(displayWords.keyStats[label]!):")
+                                .font(.callout)
+                                .fontWeight(.semibold)
+                            
+                            Spacer()
+                            Text(unwrappedValue)
+                                .font(.callout)
                         }
                     }
                 }
@@ -47,44 +43,58 @@
             }
         }
     }
+    
+    /*
+     Unwrap optional Int, Double, String into String
+     */
+    private func unwrapAnyOptional(value: Any) -> String? {
+        if let value = value as? Int {
+            return "\(value)"
+        } else if let value = value as? Double {
+            return String(format: "%.3f", value)
+        } else {
+            return value as? String
+        }
+    }
 }
 
 
 struct StatsView_Previews: PreviewProvider {
     static var previews: some View {
         StatsView(keyStats:
-                KeyStatsModel(avg10Volume: 123,
-                              avg30Volume: 123,
-                              beta: 123.12,
-                              companyName: "Apple inc",
-                              day200MovingAvg: 123.4,
-                              day30ChangePercent: 123.4,
-                              day50MovingAvg: 123.4,
-                              day5ChangePercent: 123.4,
-                              dividendYield: 123.4,
-                              employees: 123,
-                              exDividendDate: "2020-01-01",
-                              float: 123,
-                              marketcap: 123,
-                              maxChangePercent: 123.4,
-                              month1ChangePercent: 123.4,
-                              month3ChangePercent: 123.4,
-                              month6ChangePercent: 123.4,
-                              nextDividendDate: "2020-01-01",
-                              nextEarningsDate: "2020-01-01",
-                              peRatio: 123.4,
-                              sharesOutstanding: 123,
-                              ttmDividendRate: 123.4,
-                              ttmEPS: 123.4,
-                              week52Change: 123.4,
-                              week52High: 123.4,
-                              week52HighSplitAdjustOnly: 123.4,
-                              week52Low: 123.4,
-                              week52LowSplitAdjustOnly: 123.4,
-                              year1ChangePercent: 123.4,
-                              year2ChangePercent: 123.4,
-                              year5ChangePercent: 123.4,
-                              ytdChangePercent: 123.4
+                    KeyStatsModel(
+                        companyName: "Apple inc",
+                        employees: 123,
+                        marketcap: 123,
+                        float: 123,
+                        sharesOutstanding: 123,
+                        beta: 123.12,
+                        peRatio: 123.4,
+                        dividendYield: 123.4,
+                        ttmDividendRate: 123.4,
+                        ttmEPS: 123.4,
+                        avg10Volume: 123,
+                        avg30Volume: 123,
+                        day50MovingAvg: 123.4,
+                        day200MovingAvg: 123.4,
+                        week52Change: 123.4,
+                        week52High: 123.4,
+                        week52Low: 123.4,
+                        week52HighSplitAdjustOnly: 123.4,
+                        week52LowSplitAdjustOnly: 123.4,
+                        maxChangePercent: 123.4,
+                        ytdChangePercent: 123.4,
+                        day5ChangePercent: 123.4,
+                        day30ChangePercent: 123.4,
+                        month1ChangePercent: 123.4,
+                        month3ChangePercent: 123.4,
+                        month6ChangePercent: 123.4,
+                        year1ChangePercent: 123.4,
+                        year2ChangePercent: 123.4,
+                        year5ChangePercent: 123.4,
+                        exDividendDate: "2020-01-01",
+                        nextDividendDate: "2020-01-01",
+                        nextEarningsDate: "2020-01-01"
                 )
         )
     }