Mercurial > public > lazybear
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 |
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 } |