Mercurial > public > lazybear
annotate LazyBear/Views/Company/CompanyView.swift @ 444:428109b1e3f0
InsiderTransactions implemented
author | Dennis Concepción Martín <dennisconcepcionmartin@gmail.com> |
---|---|
date | Tue, 22 Jun 2021 16:54:21 +0200 |
parents | ffbb1dbab531 |
children | 9cc0455bc46f |
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 |
438
7f2a24a774eb
Implement CompanyView networking
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
434
diff
changeset
|
13 @ObservedObject var company = Company() |
440
01fa77358b82
Fixes #47
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
439
diff
changeset
|
14 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
|
15 @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
|
16 |
398
933546fa5651
Implementing CompanyView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
17 var body: some View { |
439
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
438
diff
changeset
|
18 if company.showView { |
443
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
19 ScrollView(showsIndicators: false) { |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
20 VStack { |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
21 HStack { |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
22 Text(name.capitalized) |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
23 .font(.title) |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
24 .fontWeight(.semibold) |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
25 .lineLimit(1) |
439
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
438
diff
changeset
|
26 |
443
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
27 Spacer() |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
28 } |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
29 .padding(.horizontal) |
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 Picker("Select a range", selection: $selectedRange) { |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
32 ForEach(ranges, id: \.self) { |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
33 Text($0) |
442
6eae10397501
Implementing NewsHelper in CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
441
diff
changeset
|
34 } |
439
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
438
diff
changeset
|
35 } |
443
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
36 .pickerStyle(SegmentedPickerStyle()) |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
37 .padding(.horizontal) |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
38 .onChange(of: selectedRange, perform: { range in |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
39 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
|
40 company.request(url, .refresh) |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
41 }) |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
42 |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
43 ChartHelper(company: company) |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
44 KeyStatsHelper(keyStats: company.data.keyStats) |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
45 if let latestNews = company.data.latestNews { |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
46 NewsHelper(latestNews: latestNews) |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
47 .padding([.horizontal, .bottom]) |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
48 } |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
49 |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
50 if let insiderRoster = company.data.insiderRoster { |
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
51 InsiderRosterHelper(insiderRoster: insiderRoster) |
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 } |
444
428109b1e3f0
InsiderTransactions implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
443
diff
changeset
|
54 |
428109b1e3f0
InsiderTransactions implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
443
diff
changeset
|
55 if let insiderTransactions = company.data.insiderTransactions { |
428109b1e3f0
InsiderTransactions implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
443
diff
changeset
|
56 InsiderTransactionsHelper(insiderTransactions: insiderTransactions) |
428109b1e3f0
InsiderTransactions implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
443
diff
changeset
|
57 .padding([.horizontal, .bottom]) |
428109b1e3f0
InsiderTransactions implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
443
diff
changeset
|
58 } |
439
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
438
diff
changeset
|
59 } |
438
7f2a24a774eb
Implement CompanyView networking
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
434
diff
changeset
|
60 } |
443
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
61 .background(Color("customBackground").edgesIgnoringSafeArea(.all)) |
439
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
438
diff
changeset
|
62 } else { |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
438
diff
changeset
|
63 ProgressView() |
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
438
diff
changeset
|
64 .onAppear { |
443
ffbb1dbab531
InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
442
diff
changeset
|
65 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
|
66 } |
438
7f2a24a774eb
Implement CompanyView networking
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
434
diff
changeset
|
67 } |
407
c804ce7a1560
Implementing Insider networking
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
402
diff
changeset
|
68 } |
398
933546fa5651
Implementing CompanyView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
69 } |
933546fa5651
Implementing CompanyView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
70 |
933546fa5651
Implementing CompanyView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
71 struct CompanyView_Previews: PreviewProvider { |
933546fa5651
Implementing CompanyView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
72 static var previews: some View { |
439
aa1f4b614b2b
Implementing CompanyView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
438
diff
changeset
|
73 CompanyView(symbol: "aapl", name: "apple inc") |
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 } |