Mercurial > public > lazybear
annotate LazyBearWatchOS Extension/Views/Helpers/WatchOSChartHelper.swift @ 455:b560babcd5ed
WatchOS views implemented
author | Dennis Concepción Martín <dennisconcepcionmartin@gmail.com> |
---|---|
date | Mon, 28 Jun 2021 11:55:19 +0200 |
parents | |
children |
rev | line source |
---|---|
455
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
1 // |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
2 // WatchOSChartHelper.swift |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
3 // LazyBearWatchOS Extension |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
4 // |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
5 // Created by Dennis Concepción Martín on 27/06/2021. |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
6 // |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
7 |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
8 import SwiftUI |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
9 import StockCharts |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
10 |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
11 struct WatchOSChartHelper: View { |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
12 @ObservedObject var company: Company |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
13 |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
14 var body: some View { |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
15 VStack(alignment: .leading) { |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
16 if let quote = company.data.quote?.first { |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
17 if let latestPrice = quote.latestPrice, let changePercent = quote.changePercent { |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
18 Text("\(latestPrice, specifier: "%.2f")") |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
19 .font(.title) |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
20 .fontWeight(.semibold) |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
21 .foregroundColor(changePercent < 0 ? .red: .green) |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
22 |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
23 Text("\(changePercent * 100, specifier: "%.2f")%") |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
24 .fontWeight(.semibold) |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
25 .foregroundColor(changePercent < 0 ? .red: .green) |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
26 } |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
27 |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
28 if let historicalPrices = company.data.historicalPrices { |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
29 let prices = historicalPrices.compactMap { $0.close } |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
30 LineChartView(data: prices, dates: nil, hours: nil, dragGesture: false) |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
31 .padding(.top) |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
32 .frame(height: 90) |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
33 } |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
34 } |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
35 } |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
36 } |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
37 } |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
38 |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
39 struct StockView_Previews: PreviewProvider { |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
40 static var previews: some View { |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
41 WatchOSChartHelper(company: Company()) |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
42 } |
b560babcd5ed
WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
43 } |