Mercurial > public > lazybear
annotate LazyBear/Views/Company/CompanyView.swift @ 446:9cc0455bc46f
Minor UI updates
author | Dennis Concepción Martín <dennisconcepcionmartin@gmail.com> |
---|---|
date | Tue, 22 Jun 2021 19:57:08 +0200 |
parents | 428109b1e3f0 |
children | 8621ba6fd457 |
rev | line source |
---|---|
398
933546fa5651
Implementing CompanyView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
1 // |
933546fa5651
Implementing CompanyView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
2 // CompanyView.swift |
933546fa5651
Implementing CompanyView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
3 // LazyBear |
933546fa5651
Implementing CompanyView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
4 // |
434
277197ce1416
Delete CompanyView and Helpers
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
417
diff
changeset
|
5 // Created by Dennis Concepción Martín on 20/6/21. |
398
933546fa5651
Implementing CompanyView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
6 // |
933546fa5651
Implementing CompanyView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
7 |
933546fa5651
Implementing CompanyView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
8 import SwiftUI |
933546fa5651
Implementing CompanyView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
9 |
933546fa5651
Implementing CompanyView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
10 struct CompanyView: View { |
439
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
438
diff
changeset
|
11 var symbol: String |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
438
diff
changeset
|
12 var name: String |
446
9cc0455bc46f
Minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
444
diff
changeset
|
13 |
438
7f2a24a774eb
Implement CompanyView networking
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
434
diff
changeset
|
14 @ObservedObject var company = Company() |
446
9cc0455bc46f
Minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
444
diff
changeset
|
15 |
440
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
439
diff
changeset
|
16 var ranges = ["1D", "5D", "1M", "3M", "6M", "1Y", "5Y"] /// DatePicker ranges |
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
439
diff
changeset
|
17 @State private var selectedRange = "3M" /// Selected DatePicker range |
438
7f2a24a774eb
Implement CompanyView networking
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
434
diff
changeset
|
18 |
398
933546fa5651
Implementing CompanyView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
19 var body: some View { |
439
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
438
diff
changeset
|
20 if company.showView { |
443
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
21 ScrollView(showsIndicators: false) { |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
22 VStack { |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
23 HStack { |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
24 Text(name.capitalized) |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
25 .font(.title) |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
26 .fontWeight(.semibold) |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
27 .lineLimit(1) |
446
9cc0455bc46f
Minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
444
diff
changeset
|
28 |
443
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
29 Spacer() |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
30 } |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
31 .padding(.horizontal) |
446
9cc0455bc46f
Minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
444
diff
changeset
|
32 |
443
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
33 Picker("Select a range", selection: $selectedRange) { |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
34 ForEach(ranges, id: \.self) { |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
35 Text($0) |
442
6eae10397501
Implementing NewsHelper in CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
441
diff
changeset
|
36 } |
439
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
438
diff
changeset
|
37 } |
443
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
38 .pickerStyle(SegmentedPickerStyle()) |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
39 .padding(.horizontal) |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
40 .onChange(of: selectedRange, perform: { range in |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
41 let url = "https://api.lazybear.app/company/symbol=\(symbol)/type=refresh/range=\(range.lowercased())" |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
42 company.request(url, .refresh) |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
43 }) |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
44 |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
45 ChartHelper(company: company) |
446
9cc0455bc46f
Minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
444
diff
changeset
|
46 if let keyStats = company.data.keyStats { |
9cc0455bc46f
Minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
444
diff
changeset
|
47 KeyStatsHelper(keyStats: keyStats) |
9cc0455bc46f
Minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
444
diff
changeset
|
48 } |
9cc0455bc46f
Minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
444
diff
changeset
|
49 |
443
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
50 if let latestNews = company.data.latestNews { |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
51 NewsHelper(latestNews: latestNews) |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
52 .padding([.horizontal, .bottom]) |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
53 } |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
54 |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
55 if let insiderRoster = company.data.insiderRoster { |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
56 InsiderRosterHelper(insiderRoster: insiderRoster) |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
57 .padding([.horizontal, .bottom]) |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
58 } |
444
428109b1e3f0
InsiderTransactions implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
443
diff
changeset
|
59 |
428109b1e3f0
InsiderTransactions implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
443
diff
changeset
|
60 if let insiderTransactions = company.data.insiderTransactions { |
428109b1e3f0
InsiderTransactions implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
443
diff
changeset
|
61 InsiderTransactionsHelper(insiderTransactions: insiderTransactions) |
428109b1e3f0
InsiderTransactions implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
443
diff
changeset
|
62 .padding([.horizontal, .bottom]) |
428109b1e3f0
InsiderTransactions implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
443
diff
changeset
|
63 } |
439
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
438
diff
changeset
|
64 } |
438
7f2a24a774eb
Implement CompanyView networking
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
434
diff
changeset
|
65 } |
443
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
66 .background(Color("customBackground").edgesIgnoringSafeArea(.all)) |
439
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
438
diff
changeset
|
67 } else { |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
438
diff
changeset
|
68 ProgressView() |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
438
diff
changeset
|
69 .onAppear { |
443
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
70 company.request("https://api.lazybear.app/company/symbol=\(symbol)", .initial) |
439
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
438
diff
changeset
|
71 } |
438
7f2a24a774eb
Implement CompanyView networking
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
434
diff
changeset
|
72 } |
407
c804ce7a1560
Implementing Insider networking
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
402
diff
changeset
|
73 } |
398
933546fa5651
Implementing CompanyView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
74 } |
933546fa5651
Implementing CompanyView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
75 |
933546fa5651
Implementing CompanyView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
76 struct CompanyView_Previews: PreviewProvider { |
933546fa5651
Implementing CompanyView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
77 static var previews: some View { |
439
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
438
diff
changeset
|
78 CompanyView(symbol: "aapl", name: "apple inc") |
398
933546fa5651
Implementing CompanyView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
79 } |
933546fa5651
Implementing CompanyView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
80 } |