Mercurial > public > lazybear
annotate LazyBear/Views/Company/Helpers/KeyStatsList.swift @ 447:8621ba6fd457
Fixes #48
author | Dennis Concepción Martín <dennisconcepcionmartin@gmail.com> |
---|---|
date | Wed, 23 Jun 2021 10:54:47 +0200 |
parents | 7d1c4dc8d1d8 |
children | f71761f166f2 |
rev | line source |
---|---|
440
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
1 // |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
2 // KeyStatsList.swift |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
3 // LazyBear |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
4 // |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
5 // Created by Dennis Concepción Martín on 20/6/21. |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
6 // |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
7 |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
8 import SwiftUI |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
9 |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
10 struct KeyStatsList: View { |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
11 var keyStats: KeyStatsModel |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
12 let displayWords: DisplayWordsModel = parseJSON("DisplayWords.json") |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
13 |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
14 var body: some View { |
447
8621ba6fd457
Fixes #48
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
445
diff
changeset
|
15 Form { |
8621ba6fd457
Fixes #48
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
445
diff
changeset
|
16 let mirror = Mirror(reflecting: keyStats) |
8621ba6fd457
Fixes #48
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
445
diff
changeset
|
17 ForEach(Array(mirror.children), id: \.label) { child in /// Iterate over each variable within the class |
8621ba6fd457
Fixes #48
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
445
diff
changeset
|
18 if let unwrappedValue = unwrapAnyOptional(value: child.value) { |
8621ba6fd457
Fixes #48
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
445
diff
changeset
|
19 let label = String(child.label!) |
8621ba6fd457
Fixes #48
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
445
diff
changeset
|
20 HStack { |
8621ba6fd457
Fixes #48
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
445
diff
changeset
|
21 Text("\(displayWords.keyStats[label]!):") |
8621ba6fd457
Fixes #48
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
445
diff
changeset
|
22 .font(.callout) |
8621ba6fd457
Fixes #48
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
445
diff
changeset
|
23 .fontWeight(.semibold) |
8621ba6fd457
Fixes #48
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
445
diff
changeset
|
24 .lineLimit(1) |
8621ba6fd457
Fixes #48
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
445
diff
changeset
|
25 |
8621ba6fd457
Fixes #48
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
445
diff
changeset
|
26 Spacer() |
8621ba6fd457
Fixes #48
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
445
diff
changeset
|
27 Text(unwrappedValue) |
8621ba6fd457
Fixes #48
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
445
diff
changeset
|
28 .font(.callout) |
8621ba6fd457
Fixes #48
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
445
diff
changeset
|
29 .lineLimit(1) |
440
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
30 } |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
31 } |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
32 } |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
33 } |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
34 } |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
35 |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
36 /* |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
37 Unwrap optional Int, Double, String into String |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
38 */ |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
39 private func unwrapAnyOptional(value: Any) -> String? { |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
40 if let value = value as? Int { |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
41 return "\(value)" |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
42 } else if let value = value as? Double { |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
43 return String(format: "%.3f", value) |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
44 } else { |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
45 return value as? String |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
46 } |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
47 } |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
48 } |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
49 |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
50 struct KeyStatsList_Previews: PreviewProvider { |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
51 static var previews: some View { |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
52 KeyStatsList(keyStats: |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
53 KeyStatsModel( |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
54 companyName: "Apple inc", |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
55 employees: 123, |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
56 marketcap: 123, |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
57 float: 123, |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
58 sharesOutstanding: 123, |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
59 beta: 123.12, |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
60 peRatio: 123.4, |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
61 dividendYield: 123.4, |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
62 ttmDividendRate: 123.4, |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
63 ttmEPS: 123.4, |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
64 avg10Volume: 123, |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
65 avg30Volume: 123, |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
66 day50MovingAvg: 123.4, |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
67 day200MovingAvg: 123.4, |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
68 week52Change: 123.4, |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
69 week52High: 123.4, |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
70 week52Low: 123.4, |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
71 week52HighSplitAdjustOnly: 123.4, |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
72 week52LowSplitAdjustOnly: 123.4, |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
73 maxChangePercent: 123.4, |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
74 ytdChangePercent: 123.4, |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
75 day5ChangePercent: 123.4, |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
76 day30ChangePercent: 123.4, |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
77 month1ChangePercent: 123.4, |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
78 month3ChangePercent: 123.4, |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
79 month6ChangePercent: 123.4, |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
80 year1ChangePercent: 123.4, |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
81 year2ChangePercent: 123.4, |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
82 year5ChangePercent: 123.4, |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
83 exDividendDate: "2020-01-01", |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
84 nextDividendDate: "2020-01-01", |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
85 nextEarningsDate: "2020-01-01" |
445
7d1c4dc8d1d8
Change presentationMode to Binding
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
443
diff
changeset
|
86 ) |
440
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
87 ) |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
88 } |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
89 } |