Mercurial > public > lazybear
annotate LazyBear/Views/Global Helpers/PriceView.swift @ 421:9b7af8e83d12
Change intraday prices model
author | Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com> |
---|---|
date | Sat, 12 Jun 2021 15:20:04 +0200 |
parents | 2984d8946342 |
children |
rev | line source |
---|---|
339
e81c18164afb
Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
1 // |
e81c18164afb
Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
2 // PriceView.swift |
e81c18164afb
Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
3 // LazyBear |
e81c18164afb
Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
4 // |
e81c18164afb
Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
5 // Created by Dennis Concepción Martín on 3/4/21. |
e81c18164afb
Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
6 // |
e81c18164afb
Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
7 |
e81c18164afb
Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
8 import SwiftUI |
e81c18164afb
Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
9 |
e81c18164afb
Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
10 struct PriceView: View { |
e81c18164afb
Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
11 var latestPrice: Double |
e81c18164afb
Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
12 var changePercent: Double |
398
933546fa5651
Implementing CompanyView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
357
diff
changeset
|
13 var style: PriceViewStyle |
339
e81c18164afb
Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
14 |
e81c18164afb
Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
15 var body: some View { |
413
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
16 if style.orientation == .VStack { |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
17 VStack(alignment: style.horizontalAlignment) { |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
18 Price(latestPrice: latestPrice, changePercent: changePercent, style: style) |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
19 } |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
20 } else { |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
21 HStack(alignment: style.verticalAlignment) { |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
22 Price(latestPrice: latestPrice, changePercent: changePercent, style: style) |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
23 } |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
24 .if(style.showBackground) { content in |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
25 content |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
26 .padding(10) |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
27 .background( |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
28 RoundedRectangle(cornerRadius: 15) |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
29 .foregroundColor(Color(.tertiarySystemBackground)) |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
30 ) |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
31 } |
339
e81c18164afb
Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
32 } |
e81c18164afb
Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
33 } |
e81c18164afb
Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
34 } |
e81c18164afb
Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
35 |
413
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
36 /* |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
37 Apply modifiers to the passed view on some condition |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
38 */ |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
39 extension View { |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
40 @ViewBuilder |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
41 func `if`<Content: View>(_ conditional: Bool, content: (Self) -> Content) -> some View { |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
42 if conditional { |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
43 content(self) |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
44 } else { |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
45 self |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
46 } |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
47 } |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
48 } |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
49 |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
50 struct Price: View { |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
51 var latestPrice: Double |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
52 var changePercent: Double |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
53 var style: PriceViewStyle |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
54 |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
55 var body: some View { |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
56 Text("\(latestPrice, specifier: "%.2f")") |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
57 .foregroundColor(changePercent < 0 ? .red: .green) |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
58 .font(style.priceFont) |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
59 .fontWeight(style.priceFontWeight) |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
60 |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
61 Text("\(changePercent*100, specifier: "%.2f")%") |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
62 .foregroundColor(changePercent < 0 ? .red: .green) |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
63 .font(style.percentFont) |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
64 .fontWeight(style.percentFontWeight) |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
65 } |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
66 } |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
67 |
339
e81c18164afb
Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
68 |
e81c18164afb
Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
69 struct PriceView_Previews: PreviewProvider { |
e81c18164afb
Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
70 static var previews: some View { |
398
933546fa5651
Implementing CompanyView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
357
diff
changeset
|
71 PriceView( |
933546fa5651
Implementing CompanyView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
357
diff
changeset
|
72 latestPrice: 120.30, |
933546fa5651
Implementing CompanyView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
357
diff
changeset
|
73 changePercent: 0.03, |
933546fa5651
Implementing CompanyView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
357
diff
changeset
|
74 style: PriceViewStyle( |
413
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
75 horizontalAlignment: .leading, |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
76 verticalAlignment: .center, |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
77 orientation: .VStack, |
398
933546fa5651
Implementing CompanyView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
357
diff
changeset
|
78 priceFont: .body, |
933546fa5651
Implementing CompanyView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
357
diff
changeset
|
79 priceFontWeight: .semibold, |
933546fa5651
Implementing CompanyView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
357
diff
changeset
|
80 percentFont: .callout, |
413
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
81 percentFontWeight: .semibold, |
2984d8946342
Minor UI changes
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
409
diff
changeset
|
82 showBackground: true |
398
933546fa5651
Implementing CompanyView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
357
diff
changeset
|
83 ) |
933546fa5651
Implementing CompanyView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
357
diff
changeset
|
84 ) |
339
e81c18164afb
Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
85 } |
e81c18164afb
Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
86 } |