annotate LazyBear/Views/Home/Helpers/StockRow.swift @ 424:6dd97877f575

Improve code, reorganize files
author Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
date Sun, 13 Jun 2021 19:40:42 +0200
parents LazyBear/Views/Global Helpers/StockRow.swift@9b7af8e83d12
children 4effac4733b0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
343
ab909fc9ce55 Implement batch requests HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
1 //
357
eb97439e46cd Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 349
diff changeset
2 // StockRow.swift
343
ab909fc9ce55 Implement batch requests HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
3 // LazyBear
ab909fc9ce55 Implement batch requests HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
4 //
ab909fc9ce55 Implement batch requests 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.
ab909fc9ce55 Implement batch requests HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
6 //
ab909fc9ce55 Implement batch requests HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
7
ab909fc9ce55 Implement batch requests HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
8 import SwiftUI
ab909fc9ce55 Implement batch requests HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
9
ab909fc9ce55 Implement batch requests HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
10
357
eb97439e46cd Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 349
diff changeset
11 struct StockRow: View {
424
6dd97877f575 Improve code, reorganize files
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 421
diff changeset
12 var list: [String: [String: QuoteModel]]
421
9b7af8e83d12 Change intraday prices model
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 417
diff changeset
13 var intradayPrices: [String: [Double]]?
417
5f21f7c23c5e Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 388
diff changeset
14
424
6dd97877f575 Improve code, reorganize files
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 421
diff changeset
15 @State private var showList = false
349
5ccceb527178 Implementing new internal API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
16
343
ab909fc9ce55 Implement batch requests HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
17 var body: some View {
424
6dd97877f575 Improve code, reorganize files
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 421
diff changeset
18 let listName = list.first!.key
343
ab909fc9ce55 Implement batch requests HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
19 VStack(alignment: .leading) {
349
5ccceb527178 Implementing new internal API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
20 HStack(alignment: .bottom) {
5ccceb527178 Implementing new internal API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
21 VStack(alignment: .leading) {
424
6dd97877f575 Improve code, reorganize files
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 421
diff changeset
22 Text(adaptListTitle(listName))
349
5ccceb527178 Implementing new internal API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
23 .font(.title3)
5ccceb527178 Implementing new internal API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
24 .fontWeight(.semibold)
5ccceb527178 Implementing new internal API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
25 .padding([.top, .horizontal])
5ccceb527178 Implementing new internal API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
26
5ccceb527178 Implementing new internal API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
27 Text("Real-time quotes")
5ccceb527178 Implementing new internal API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
28 .font(.caption)
5ccceb527178 Implementing new internal API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
29 .opacity(0.5)
5ccceb527178 Implementing new internal API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
30 .padding(.horizontal)
5ccceb527178 Implementing new internal API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
31 }
5ccceb527178 Implementing new internal API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
32
5ccceb527178 Implementing new internal API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
33 Spacer()
424
6dd97877f575 Improve code, reorganize files
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 421
diff changeset
34 Button("See all", action: { showList = true })
349
5ccceb527178 Implementing new internal API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
35 .buttonStyle(BorderlessButtonStyle())
5ccceb527178 Implementing new internal API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
36 .padding(.horizontal)
5ccceb527178 Implementing new internal API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
37 }
343
ab909fc9ce55 Implement batch requests HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
38
ab909fc9ce55 Implement batch requests HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
39 ScrollView(.horizontal, showsIndicators: false) {
ab909fc9ce55 Implement batch requests HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
40 HStack(spacing: 20) {
424
6dd97877f575 Improve code, reorganize files
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 421
diff changeset
41 let companies = list[listName]
6dd97877f575 Improve code, reorganize files
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 421
diff changeset
42 ForEach(Array(companies!.keys), id: \.self) { symbol in
6dd97877f575 Improve code, reorganize files
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 421
diff changeset
43 StockItem(symbol: symbol, company: companies![symbol]!, intradayPrices: intradayPrices![symbol])
343
ab909fc9ce55 Implement batch requests HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
44 }
ab909fc9ce55 Implement batch requests HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
45 }
ab909fc9ce55 Implement batch requests HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
46 .padding()
ab909fc9ce55 Implement batch requests HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
47 }
ab909fc9ce55 Implement batch requests HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
48 .frame(height: 250)
ab909fc9ce55 Implement batch requests HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
49 }
ab909fc9ce55 Implement batch requests HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
50 .padding(.bottom)
424
6dd97877f575 Improve code, reorganize files
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 421
diff changeset
51 .sheet(isPresented: $showList) {
6dd97877f575 Improve code, reorganize files
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 421
diff changeset
52 StockSheet(listName: adaptListTitle(listName), companies: list[list.first!.key]!, intradayPrices: intradayPrices)
6dd97877f575 Improve code, reorganize files
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 421
diff changeset
53 }
6dd97877f575 Improve code, reorganize files
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 421
diff changeset
54 }
6dd97877f575 Improve code, reorganize files
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 421
diff changeset
55
6dd97877f575 Improve code, reorganize files
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 421
diff changeset
56 /*
6dd97877f575 Improve code, reorganize files
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 421
diff changeset
57 Get list keys (mostactive, losers, active) and adapt them to diplay
6dd97877f575 Improve code, reorganize files
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 421
diff changeset
58 */
6dd97877f575 Improve code, reorganize files
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 421
diff changeset
59 private func adaptListTitle(_ title: String) -> String {
6dd97877f575 Improve code, reorganize files
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 421
diff changeset
60 if title == "mostactive" {
6dd97877f575 Improve code, reorganize files
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 421
diff changeset
61 return "Most active"
6dd97877f575 Improve code, reorganize files
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 421
diff changeset
62 } else {
6dd97877f575 Improve code, reorganize files
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 421
diff changeset
63 return title.capitalized
349
5ccceb527178 Implementing new internal API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
64 }
346
80bfa88c6b0f Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 345
diff changeset
65 }
343
ab909fc9ce55 Implement batch requests HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
66 }
ab909fc9ce55 Implement batch requests HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
67
ab909fc9ce55 Implement batch requests HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
68
345
fde2b30c719e Implementing Networking in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 343
diff changeset
69 struct StockRectangleRow_Previews: PreviewProvider {
fde2b30c719e Implementing Networking in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 343
diff changeset
70 static var previews: some View {
357
eb97439e46cd Implement ExtensiveList in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 349
diff changeset
71 StockRow(
424
6dd97877f575 Improve code, reorganize files
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 421
diff changeset
72 list: ["mostactive": ["AAPL": QuoteModel(changePercent: 0.03, companyName: "Apple Inc", latestPrice: 130.3)]],
6dd97877f575 Improve code, reorganize files
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 421
diff changeset
73 intradayPrices: ["AAPL": [130.2]]
346
80bfa88c6b0f Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 345
diff changeset
74 )
345
fde2b30c719e Implementing Networking in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 343
diff changeset
75 }
fde2b30c719e Implementing Networking in ProfileView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 343
diff changeset
76 }