Mercurial > public > lazybear
annotate LazyBear/Views/Company/Helpers/StatsView.swift @ 430:c78d5b5b3bda
Minor updates
author | Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com> |
---|---|
date | Sat, 19 Jun 2021 16:21:26 +0200 |
parents | 6dd97877f575 |
children |
rev | line source |
---|---|
415
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
1 // |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
2 // StatsView.swift |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
3 // LazyBear |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
4 // |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
5 // Created by Dennis Concepción Martín on 9/6/21. |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
6 // |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
7 |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
8 import SwiftUI |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
9 |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
10 struct StatsView: View { |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
11 var keyStats: KeyStatsModel |
417
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
12 |
430
c78d5b5b3bda
Minor updates
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
424
diff
changeset
|
13 @Environment(\.presentationMode) private var statsPresentation |
417
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
14 |
416
1662a41e2c1a
KeyStatsView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
415
diff
changeset
|
15 let displayWords: DisplayWordsModel = parseJSON("DisplayWords.json") |
415
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
16 |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
17 var body: some View { |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
18 NavigationView { |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
19 Form { |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
20 let mirror = Mirror(reflecting: keyStats) |
417
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
21 ForEach(Array(mirror.children), id: \.label) { child in /// Iterate over each variable within the class |
416
1662a41e2c1a
KeyStatsView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
415
diff
changeset
|
22 if let unwrappedValue = unwrapAnyOptional(value: child.value) { |
1662a41e2c1a
KeyStatsView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
415
diff
changeset
|
23 HStack { |
1662a41e2c1a
KeyStatsView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
415
diff
changeset
|
24 let label = String(child.label!) |
1662a41e2c1a
KeyStatsView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
415
diff
changeset
|
25 Text("\(displayWords.keyStats[label]!):") |
1662a41e2c1a
KeyStatsView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
415
diff
changeset
|
26 .font(.callout) |
1662a41e2c1a
KeyStatsView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
415
diff
changeset
|
27 .fontWeight(.semibold) |
1662a41e2c1a
KeyStatsView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
415
diff
changeset
|
28 |
1662a41e2c1a
KeyStatsView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
415
diff
changeset
|
29 Spacer() |
1662a41e2c1a
KeyStatsView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
415
diff
changeset
|
30 Text(unwrappedValue) |
1662a41e2c1a
KeyStatsView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
415
diff
changeset
|
31 .font(.callout) |
424
6dd97877f575
Improve code, reorganize files
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
417
diff
changeset
|
32 .lineLimit(1) |
415
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
33 } |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
34 } |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
35 } |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
36 } |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
37 .navigationTitle("Key statistics") |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
38 .navigationBarTitleDisplayMode(.inline) |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
39 .toolbar { |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
40 ToolbarItem(placement: .navigationBarLeading) { |
430
c78d5b5b3bda
Minor updates
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
424
diff
changeset
|
41 Button(action: { statsPresentation.wrappedValue.dismiss() }) { |
415
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
42 Image(systemName: "multiply") |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
43 .imageScale(.large) |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
44 } |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
45 } |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
46 } |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
47 } |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
48 } |
416
1662a41e2c1a
KeyStatsView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
415
diff
changeset
|
49 |
1662a41e2c1a
KeyStatsView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
415
diff
changeset
|
50 /* |
1662a41e2c1a
KeyStatsView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
415
diff
changeset
|
51 Unwrap optional Int, Double, String into String |
1662a41e2c1a
KeyStatsView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
415
diff
changeset
|
52 */ |
1662a41e2c1a
KeyStatsView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
415
diff
changeset
|
53 private func unwrapAnyOptional(value: Any) -> String? { |
1662a41e2c1a
KeyStatsView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
415
diff
changeset
|
54 if let value = value as? Int { |
1662a41e2c1a
KeyStatsView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
415
diff
changeset
|
55 return "\(value)" |
1662a41e2c1a
KeyStatsView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
415
diff
changeset
|
56 } else if let value = value as? Double { |
1662a41e2c1a
KeyStatsView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
415
diff
changeset
|
57 return String(format: "%.3f", value) |
1662a41e2c1a
KeyStatsView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
415
diff
changeset
|
58 } else { |
1662a41e2c1a
KeyStatsView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
415
diff
changeset
|
59 return value as? String |
1662a41e2c1a
KeyStatsView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
415
diff
changeset
|
60 } |
1662a41e2c1a
KeyStatsView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
415
diff
changeset
|
61 } |
415
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
62 } |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
63 |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
64 |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
65 struct StatsView_Previews: PreviewProvider { |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
66 static var previews: some View { |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
67 StatsView(keyStats: |
417
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
68 KeyStatsModel( |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
69 companyName: "Apple inc", |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
70 employees: 123, |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
71 marketcap: 123, |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
72 float: 123, |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
73 sharesOutstanding: 123, |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
74 beta: 123.12, |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
75 peRatio: 123.4, |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
76 dividendYield: 123.4, |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
77 ttmDividendRate: 123.4, |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
78 ttmEPS: 123.4, |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
79 avg10Volume: 123, |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
80 avg30Volume: 123, |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
81 day50MovingAvg: 123.4, |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
82 day200MovingAvg: 123.4, |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
83 week52Change: 123.4, |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
84 week52High: 123.4, |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
85 week52Low: 123.4, |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
86 week52HighSplitAdjustOnly: 123.4, |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
87 week52LowSplitAdjustOnly: 123.4, |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
88 maxChangePercent: 123.4, |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
89 ytdChangePercent: 123.4, |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
90 day5ChangePercent: 123.4, |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
91 day30ChangePercent: 123.4, |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
92 month1ChangePercent: 123.4, |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
93 month3ChangePercent: 123.4, |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
94 month6ChangePercent: 123.4, |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
95 year1ChangePercent: 123.4, |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
96 year2ChangePercent: 123.4, |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
97 year5ChangePercent: 123.4, |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
98 exDividendDate: "2020-01-01", |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
99 nextDividendDate: "2020-01-01", |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
100 nextEarningsDate: "2020-01-01" |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
416
diff
changeset
|
101 ) |
415
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
102 ) |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
103 } |
34f9e408b861
Minor UI Updates and tests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
104 } |