annotate LazyBear/Views/Global Helpers/ExtensiveList.swift @ 383:5d7a66e2b39f

Reorganise file
author Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
date Sat, 24 Apr 2021 00:41:18 +0200
parents
children c206bd0bdb4e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
383
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
1 //
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
2 // ExtensiveList.swift
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
3 // LazyBear
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
4 //
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
5 // Created by Dennis Concepción Martín on 14/4/21.
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
6 //
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
7
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
8 import SwiftUI
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
9
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
10 struct ExtensiveList: View {
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
11 var listName: String
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
12 var list: [String: QuoteModel]?
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
13 var intradayPrices: [String: [IntradayPriceModel]]?
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
14 var latestCurrencies: [String: CurrencyModel]?
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
15 var addOnDelete: Bool
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
16
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
17 @Environment(\.presentationMode) private var extensiveListPresent
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
18 @State var isEditMode: EditMode = .inactive
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
19
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
20 var body: some View {
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
21 NavigationView {
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
22 VStack {
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
23 if let list = list {
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
24 List {
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
25 ForEach(Array(list.keys.sorted()), id: \.self) { companySymbol in
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
26 StockItem(symbol: companySymbol,
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
27 company: list[companySymbol]!,
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
28 intradayPrices: intradayPrices?[companySymbol],
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
29 orientation: .horizontal,
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
30 hidePriceView: self.isEditMode == .active // Hide on EditMode
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
31 )
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
32
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
33 }
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
34 .onDelete(perform: addOnDelete ? removeCompany: nil)
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
35 }
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
36 }
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
37
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
38 if let latestCurrencies = latestCurrencies {
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
39 List(Array(latestCurrencies.keys.sorted()), id: \.self) { currencySymbol in
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
40 CurrencyListItem(currencySymbol: currencySymbol, currency: latestCurrencies[currencySymbol]!)
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
41
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
42 }
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
43 }
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
44 }
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
45 .navigationTitle(listName)
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
46 .navigationBarTitleDisplayMode(.inline)
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
47 .toolbar {
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
48 ToolbarItem(placement: .navigationBarTrailing) {
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
49 Button(action: { extensiveListPresent.wrappedValue.dismiss() }) {
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
50 Image(systemName: "multiply")
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
51 .imageScale(.large)
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
52 }
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
53 }
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
54 ToolbarItem(placement: .navigationBarLeading) {
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
55 if addOnDelete {
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
56 EditButton()
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
57 }
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
58 }
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
59 }
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
60 .environment(\.editMode, self.$isEditMode) // Always after Toolbar
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
61 }
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
62 }
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
63 private func removeCompany(at offsets: IndexSet) {
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
64 print("Hello")
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
65 }
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
66 }
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
67
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
68 struct ExtensiveList_Previews: PreviewProvider {
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
69 static var previews: some View {
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
70 ExtensiveList(listName: "List name", addOnDelete: false)
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
71 }
5d7a66e2b39f Reorganise file
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
72 }