Mercurial > public > lazybear
annotate LazyBearWatchOS Extension/Views/Home/StockView.swift @ 454:c79a3ed3d230
StockView for WatchOS implemented
author | Dennis Concepción Martín <dennisconcepcionmartin@gmail.com> |
---|---|
date | Sun, 27 Jun 2021 20:55:05 +0200 |
parents | |
children |
rev | line source |
---|---|
454
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
1 // |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
2 // StockView.swift |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
3 // LazyBearWatchOS Extension |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
4 // |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
5 // Created by Dennis Concepción Martín on 27/06/2021. |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
6 // |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
7 |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
8 import SwiftUI |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
9 import StockCharts |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
10 |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
11 struct StockView: View { |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
12 var symbol: String |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
13 @ObservedObject var company: Company |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
14 |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
15 var body: some View { |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
16 if company.showView { |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
17 VStack(alignment: .leading) { |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
18 if let company = company.data.quote?.first { |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
19 Text(company.companyName) |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
20 |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
21 if let latestPrice = company.latestPrice { |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
22 Text("\(latestPrice, specifier: "%.2f")") |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
23 .foregroundColor(company.changePercent ?? 0.0 < 0 ? .red: .green) |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
24 .font(.title2) |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
25 } |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
26 |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
27 if let changePercent = company.changePercent { |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
28 Text("\(changePercent * 100, specifier: "%.2f")%") |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
29 .foregroundColor(changePercent < 0 ? .red: .green) |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
30 } |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
31 |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
32 if let prices = company.intradayPrices { |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
33 LineChartView(data: prices, dates: nil, hours: nil, dragGesture: false) |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
34 .padding(.top) |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
35 } |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
36 |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
37 Text("Real-time data") |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
38 .font(.footnote) |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
39 .opacity(0.7) |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
40 } |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
41 } |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
42 } else { |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
43 ProgressView() |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
44 .onAppear { |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
45 company.request("https://api.lazybear.app/individual/endpoint=quote/symbol=\(symbol)", .initial) |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
46 } |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
47 } |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
48 } |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
49 } |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
50 |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
51 struct StockView_Previews: PreviewProvider { |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
52 static var previews: some View { |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
53 StockView(symbol: "AAPL", company: Company()) |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
54 } |
c79a3ed3d230
StockView for WatchOS implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
55 } |