Mercurial > public > lazybear
annotate LazyBear/Views/Company/Helpers/KeyStatsHelper.swift @ 448:f71761f166f2
Handle when data is empty
author | Dennis Concepción Martín <dennisconcepcionmartin@gmail.com> |
---|---|
date | Wed, 23 Jun 2021 11:47:14 +0200 |
parents | 8621ba6fd457 |
children |
rev | line source |
---|---|
439
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
1 // |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
2 // KeyStatsHelper.swift |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
3 // LazyBear |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
4 // |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
5 // Created by Dennis Concepción Martín on 20/6/21. |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
6 // |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
7 |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
8 import SwiftUI |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
9 |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
10 struct KeyStatsHelper: View { |
448
f71761f166f2
Handle when data is empty
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
447
diff
changeset
|
11 var keyStats: KeyStatsModel |
439
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
12 let displayWords: DisplayWordsModel = parseJSON("DisplayWords.json") |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
13 |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
14 var body: some View { |
448
f71761f166f2
Handle when data is empty
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
447
diff
changeset
|
15 ScrollView(.horizontal, showsIndicators: false) { |
f71761f166f2
Handle when data is empty
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
447
diff
changeset
|
16 HStack(spacing: 20) { |
f71761f166f2
Handle when data is empty
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
447
diff
changeset
|
17 |
f71761f166f2
Handle when data is empty
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
447
diff
changeset
|
18 let mirror = Mirror(reflecting: keyStats) |
f71761f166f2
Handle when data is empty
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
447
diff
changeset
|
19 ForEach(Array(mirror.children), id: \.label) { child in /// Iterate over each variable within the class |
f71761f166f2
Handle when data is empty
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
447
diff
changeset
|
20 if let unwrappedValue = unwrapAnyOptional(value: child.value) { |
f71761f166f2
Handle when data is empty
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
447
diff
changeset
|
21 if unwrappedValue != "0.000" && unwrappedValue != "0" && !unwrappedValue.isEmpty { |
439
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
22 let label = String(child.label!) |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
23 |
447
8621ba6fd457
Fixes #48
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
445
diff
changeset
|
24 NavigationLink(destination: KeyStatsList(keyStats: keyStats) |
8621ba6fd457
Fixes #48
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
445
diff
changeset
|
25 .navigationTitle("Key Stats") |
8621ba6fd457
Fixes #48
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
445
diff
changeset
|
26 ) { |
448
f71761f166f2
Handle when data is empty
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
447
diff
changeset
|
27 KeyStatsRow(label: displayWords.keyStats[label]!) |
440
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
439
diff
changeset
|
28 } |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
439
diff
changeset
|
29 .buttonStyle(PlainButtonStyle()) |
439
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
30 } |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
31 } |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
32 } |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
33 } |
448
f71761f166f2
Handle when data is empty
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
447
diff
changeset
|
34 .frame(height: 70) |
f71761f166f2
Handle when data is empty
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
447
diff
changeset
|
35 .padding(.horizontal) |
439
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
36 } |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
37 } |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
38 } |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
39 |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
40 struct KeyStatsHelper_Previews: PreviewProvider { |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
41 static var previews: some View { |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
42 KeyStatsHelper(keyStats: |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
43 KeyStatsModel( |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
44 companyName: "Apple inc", |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
45 employees: 123, |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
46 marketcap: 123, |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
47 float: 123, |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
48 sharesOutstanding: 123, |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
49 beta: 123.12, |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
50 peRatio: 123.4, |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
51 dividendYield: 123.4, |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
52 ttmDividendRate: 123.4, |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
53 ttmEPS: 123.4, |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
54 avg10Volume: 123, |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
55 avg30Volume: 123, |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
56 day50MovingAvg: 123.4, |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
57 day200MovingAvg: 123.4, |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
58 week52Change: 123.4, |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
59 week52High: 123.4, |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
60 week52Low: 123.4, |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
61 week52HighSplitAdjustOnly: 123.4, |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
62 week52LowSplitAdjustOnly: 123.4, |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
63 maxChangePercent: 123.4, |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
64 ytdChangePercent: 123.4, |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
65 day5ChangePercent: 123.4, |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
66 day30ChangePercent: 123.4, |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
67 month1ChangePercent: 123.4, |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
68 month3ChangePercent: 123.4, |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
69 month6ChangePercent: 123.4, |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
70 year1ChangePercent: 123.4, |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
71 year2ChangePercent: 123.4, |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
72 year5ChangePercent: 123.4, |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
73 exDividendDate: "2020-01-01", |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
74 nextDividendDate: "2020-01-01", |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
75 nextEarningsDate: "2020-01-01" |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
76 ) |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
77 ) |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
78 } |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
79 } |