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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 }