Mercurial > public > lazybear
annotate LazyBear/Views/Global Helpers/StockItem.swift @ 375:f3cb5bdea8e5
Update Codable requests in HomeView
author | Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com> |
---|---|
date | Wed, 21 Apr 2021 16:19:50 +0200 |
parents | eb97439e46cd |
children | a7e2c5a7b4f6 |
rev | line source |
---|---|
342
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
1 // |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
2 // StockItem.swift |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
3 // LazyBear |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
4 // |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
5 // Created by Dennis Concepción Martín on 28/3/21. |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
6 // |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
7 |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
8 import SwiftUI |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
9 |
357
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
10 enum OrientationView { |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
11 case horizontal, vertical |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
12 } |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
13 |
342
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
14 struct StockItem: View { |
375
f3cb5bdea8e5
Update Codable requests in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
357
diff
changeset
|
15 var symbol: String |
346
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
345
diff
changeset
|
16 var company: QuoteModel |
375
f3cb5bdea8e5
Update Codable requests in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
357
diff
changeset
|
17 var intradayPrices: [IntradayPriceModel]? |
357
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
18 var orientation: OrientationView |
342
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
19 |
357
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
20 var body: some View { |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
21 if orientation == .vertical { |
375
f3cb5bdea8e5
Update Codable requests in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
357
diff
changeset
|
22 return AnyView(VerticalStockRow(symbol: symbol, company: company, intradayPrices: intradayPrices)) |
357
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
23 } else { |
375
f3cb5bdea8e5
Update Codable requests in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
357
diff
changeset
|
24 return AnyView(HorizontalStockRow(symbol: symbol, company: company, intradayPrices: intradayPrices)) |
357
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
25 } |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
26 } |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
27 } |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
28 |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
29 struct StockItem_Previews: PreviewProvider { |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
30 static var previews: some View { |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
31 StockItem( |
375
f3cb5bdea8e5
Update Codable requests in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
357
diff
changeset
|
32 symbol: "AAPL", company: QuoteModel(changePercent: 0.03, companyName: "apple inc", latestPrice: 130.3), |
f3cb5bdea8e5
Update Codable requests in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
357
diff
changeset
|
33 intradayPrices: [IntradayPriceModel(open: 130.3), IntradayPriceModel(open: 132.3)], orientation: .horizontal |
357
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
34 ) |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
35 } |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
36 } |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
37 |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
38 |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
39 struct VerticalStockRow: View { |
375
f3cb5bdea8e5
Update Codable requests in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
357
diff
changeset
|
40 var symbol: String |
357
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
41 var company: QuoteModel |
375
f3cb5bdea8e5
Update Codable requests in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
357
diff
changeset
|
42 var intradayPrices: [IntradayPriceModel]? |
342
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
43 |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
44 var body: some View { |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
45 RoundedRectangle(cornerRadius: 20) |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
46 .foregroundColor(Color(.secondarySystemBackground)) |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
47 .aspectRatio(0.8, contentMode: .fit) |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
48 .clipShape(RoundedRectangle(cornerRadius: 20)) |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
49 .overlay( |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
50 VStack(alignment: .leading) { |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
51 Group { |
375
f3cb5bdea8e5
Update Codable requests in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
357
diff
changeset
|
52 Text(symbol.uppercased()) |
342
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
53 .fontWeight(.semibold) |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
54 .padding(.top) |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
55 |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
56 Text(company.companyName.capitalized) |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
57 .font(.callout) |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
58 .fontWeight(.semibold) |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
59 .opacity(0.6) |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
60 .lineLimit(1) |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
61 |
357
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
62 PriceView(latestPrice: company.latestPrice, changePercent: company.changePercent, align: .leading) |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
63 .padding(.top) |
342
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
64 |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
65 } |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
66 .padding(.horizontal) |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
67 |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
68 Spacer() |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
69 |
349
5ccceb527178
Implementing new internal API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
70 if let prices = intradayPrices?.compactMap { $0.open } { |
342
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
71 LineView(data: prices) |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
72 .foregroundColor(company.changePercent < 0 ? .red: .green) |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
73 .padding(.vertical) |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
74 .clipped() |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
75 } |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
76 |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
77 } |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
78 ,alignment: .leading |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
79 ) |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
80 } |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
81 } |
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
82 |
357
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
83 |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
84 struct HorizontalStockRow: View { |
375
f3cb5bdea8e5
Update Codable requests in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
357
diff
changeset
|
85 var symbol: String |
357
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
86 var company: QuoteModel |
375
f3cb5bdea8e5
Update Codable requests in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
357
diff
changeset
|
87 var intradayPrices: [IntradayPriceModel]? |
357
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
88 |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
89 var body: some View { |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
90 HStack { |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
91 VStack(alignment: .leading) { |
375
f3cb5bdea8e5
Update Codable requests in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
357
diff
changeset
|
92 Text(symbol.uppercased()) |
357
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
93 .fontWeight(.semibold) |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
94 |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
95 Text(company.companyName.capitalized) |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
96 .font(.callout) |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
97 .fontWeight(.semibold) |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
98 .opacity(0.6) |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
99 .lineLimit(1) |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
100 } |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
101 |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
102 Spacer() |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
103 if let prices = intradayPrices?.compactMap { $0.open } { |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
104 LineView(data: prices) |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
105 .foregroundColor(company.changePercent < 0 ? .red: .green) |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
106 .frame(width: 80) |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
107 .padding(.vertical, 10) |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
108 .padding(.leading) |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
109 } |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
110 |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
111 PriceView(latestPrice: company.latestPrice, changePercent: company.changePercent, align: .trailing) |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
112 // Avoid moving LineView along the HStack when numbers increases |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
113 .frame(minWidth: 80, alignment: .trailing) |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
114 } |
eb97439e46cd
Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
349
diff
changeset
|
115 .padding(5) |
345
fde2b30c719e
Implementing Networking in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
343
diff
changeset
|
116 } |
fde2b30c719e
Implementing Networking in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
343
diff
changeset
|
117 } |