Mercurial > public > lazybear
annotate LazyBear/Views/Home/HomeView.swift @ 338:71a9c0e61783
Implementing SearchView
author | Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com> |
---|---|
date | Thu, 01 Apr 2021 20:55:09 +0200 |
parents | 31f2838b2de7 |
children | e81c18164afb |
rev | line source |
---|---|
324
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
1 // |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
2 // HomeView.swift |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
3 // LazyBear |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
4 // |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
5 // Created by Dennis Concepción Martín on 28/3/21. |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
6 // |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
7 |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
8 import SwiftUI |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
9 |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
10 struct HomeView: View { |
326
2fabdc393675
Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
324
diff
changeset
|
11 @ObservedObject var homeData = HomeData() |
2fabdc393675
Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
324
diff
changeset
|
12 @State private var showTradingDates = false |
335
2dad5828ccf6
HomeView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
326
diff
changeset
|
13 @State private var timer = Timer.publish(every: 10, on: .main, in: .common).autoconnect() // Set recurrent price request |
326
2fabdc393675
Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
324
diff
changeset
|
14 |
2fabdc393675
Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
324
diff
changeset
|
15 static let taskDateFormat: DateFormatter = { |
2fabdc393675
Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
324
diff
changeset
|
16 let formatter = DateFormatter() |
2fabdc393675
Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
324
diff
changeset
|
17 formatter.dateStyle = .medium |
2fabdc393675
Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
324
diff
changeset
|
18 return formatter |
2fabdc393675
Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
324
diff
changeset
|
19 }() |
2fabdc393675
Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
324
diff
changeset
|
20 |
2fabdc393675
Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
324
diff
changeset
|
21 let dueDate = Date() |
324
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
22 |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
23 var body: some View { |
337
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
24 if homeData.showView { |
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
25 NavigationView { |
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
26 List { |
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
27 SectorRow(sectorPerformance: homeData.sectorPerformance) |
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
28 .listRowInsets(EdgeInsets()) |
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
29 |
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
30 // Get keys of the dictionary list |
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
31 ForEach(homeData.list.keys.sorted(), id: \.self) { key in |
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
32 TopStockRow(key: key, list: homeData.list[key] ?? [CompanyRowModel](), intradayPricesDict: homeData.intradayPrices) |
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
33 } |
324
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
34 .listRowInsets(EdgeInsets()) |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
35 } |
337
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
36 .onReceive(timer) {_ in homeData.request() } |
338
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
337
diff
changeset
|
37 .onDisappear { timer.upstream.connect().cancel() } |
337
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
38 .navigationTitle("\(dueDate, formatter: Self.taskDateFormat)") |
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
39 .navigationBarTitleDisplayMode(.inline) |
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
40 .navigationViewStyle(StackNavigationViewStyle()) |
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
41 .toolbar { |
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
42 ToolbarItem(placement: .navigationBarTrailing) { |
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
43 Button(action: { showTradingDates = true }) { |
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
44 Image(systemName: "calendar.badge.clock") |
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
45 } |
326
2fabdc393675
Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
324
diff
changeset
|
46 } |
2fabdc393675
Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
324
diff
changeset
|
47 } |
2fabdc393675
Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
324
diff
changeset
|
48 } |
337
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
49 .sheet(isPresented: $showTradingDates) { |
338
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
337
diff
changeset
|
50 TradingDates(stringDates: homeData.holidayDates) |
337
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
51 } |
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
52 } else { |
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
53 ProgressView() |
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
54 .onAppear { homeData.request() } |
324
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
55 } |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
56 } |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
57 } |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
58 |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
59 struct HomeView_Previews: PreviewProvider { |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
60 static var previews: some View { |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
61 HomeView() |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
62 } |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
63 } |