Mercurial > public > lazybear
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" ) ) }