Mercurial > public > lazybear
annotate LazyBear/Views/Search/SearchView.swift @ 344:276e17f11c19
Add placeholder Image SearchView
author | Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com> |
---|---|
date | Wed, 07 Apr 2021 16:40:53 +0200 |
parents | a6c49f1409f3 |
children | 80bfa88c6b0f |
rev | line source |
---|---|
338
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
1 // |
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
2 // SearchView.swift |
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
3 // LazyBear |
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
4 // |
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
5 // Created by Dennis Concepción Martín on 1/4/21. |
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
6 // |
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
7 |
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
8 import SwiftUI |
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
9 import SwiftlySearch |
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
10 |
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
11 struct SearchView: View { |
339
e81c18164afb
Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
338
diff
changeset
|
12 @ObservedObject var searchData = SearchData() |
340
d17dd5c28211
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
339
diff
changeset
|
13 @State private var searchedText: String = "" |
d17dd5c28211
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
339
diff
changeset
|
14 @State private var showingSearchList = false |
d17dd5c28211
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
339
diff
changeset
|
15 @EnvironmentObject var hudManager: HudManager |
338
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
16 |
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
17 var body: some View { |
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
18 NavigationView { |
340
d17dd5c28211
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
339
diff
changeset
|
19 VStack(alignment: .leading) { |
d17dd5c28211
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
339
diff
changeset
|
20 if showingSearchList { |
d17dd5c28211
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
339
diff
changeset
|
21 CompanyList(searchResult: searchData.searchResult) |
d17dd5c28211
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
339
diff
changeset
|
22 } else { |
344
276e17f11c19
Add placeholder Image SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
342
diff
changeset
|
23 VStack(alignment: .center) { |
276e17f11c19
Add placeholder Image SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
342
diff
changeset
|
24 Image("bearSleeping") |
276e17f11c19
Add placeholder Image SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
342
diff
changeset
|
25 .resizable() |
276e17f11c19
Add placeholder Image SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
342
diff
changeset
|
26 .scaledToFit() |
276e17f11c19
Add placeholder Image SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
342
diff
changeset
|
27 |
276e17f11c19
Add placeholder Image SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
342
diff
changeset
|
28 Text("Are you looking for something?") |
276e17f11c19
Add placeholder Image SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
342
diff
changeset
|
29 .font(.title2) |
276e17f11c19
Add placeholder Image SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
342
diff
changeset
|
30 .fontWeight(.semibold) |
276e17f11c19
Add placeholder Image SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
342
diff
changeset
|
31 .multilineTextAlignment(.center) |
276e17f11c19
Add placeholder Image SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
342
diff
changeset
|
32 .padding(.bottom) |
276e17f11c19
Add placeholder Image SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
342
diff
changeset
|
33 |
276e17f11c19
Add placeholder Image SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
342
diff
changeset
|
34 Text("Use the search bar to find your favourite company. Type the stock symbol or name, we'll find it!") |
276e17f11c19
Add placeholder Image SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
342
diff
changeset
|
35 .multilineTextAlignment(.center) |
276e17f11c19
Add placeholder Image SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
342
diff
changeset
|
36 } |
276e17f11c19
Add placeholder Image SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
342
diff
changeset
|
37 .padding(.horizontal) |
340
d17dd5c28211
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
339
diff
changeset
|
38 } |
d17dd5c28211
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
339
diff
changeset
|
39 } |
d17dd5c28211
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
339
diff
changeset
|
40 .onDisappear { self.searchedText = ""; self.showingSearchList = false } |
d17dd5c28211
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
339
diff
changeset
|
41 .navigationTitle("Search") |
d17dd5c28211
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
339
diff
changeset
|
42 .navigationBarTitleDisplayMode(.inline) |
d17dd5c28211
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
339
diff
changeset
|
43 .navigationBarSearch($searchedText) |
d17dd5c28211
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
339
diff
changeset
|
44 .onChange(of: searchedText, perform: { searchedText in |
341
4e6c47a81b80
Testing UserProfile
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
340
diff
changeset
|
45 showSearchList(searchedText) |
340
d17dd5c28211
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
339
diff
changeset
|
46 }) |
d17dd5c28211
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
339
diff
changeset
|
47 .toolbar { |
d17dd5c28211
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
339
diff
changeset
|
48 ToolbarItem(placement: .navigationBarTrailing) { |
d17dd5c28211
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
339
diff
changeset
|
49 Button(action: { self.hudManager.showSearchHelper = true }) { |
d17dd5c28211
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
339
diff
changeset
|
50 Image(systemName: "questionmark.circle") |
339
e81c18164afb
Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
338
diff
changeset
|
51 } |
e81c18164afb
Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
338
diff
changeset
|
52 } |
338
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
53 } |
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
54 } |
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
55 } |
341
4e6c47a81b80
Testing UserProfile
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
340
diff
changeset
|
56 |
4e6c47a81b80
Testing UserProfile
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
340
diff
changeset
|
57 private func showSearchList(_ searchedText: String) { |
4e6c47a81b80
Testing UserProfile
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
340
diff
changeset
|
58 if !searchedText.isEmpty { |
4e6c47a81b80
Testing UserProfile
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
340
diff
changeset
|
59 // Encode string with spaces |
4e6c47a81b80
Testing UserProfile
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
340
diff
changeset
|
60 let encodedSearchedText = searchedText.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) |
342
a6c49f1409f3
Implementing Watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
341
diff
changeset
|
61 searchData.get(encodedSearchedText!) |
341
4e6c47a81b80
Testing UserProfile
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
340
diff
changeset
|
62 self.showingSearchList = true |
4e6c47a81b80
Testing UserProfile
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
340
diff
changeset
|
63 } |
4e6c47a81b80
Testing UserProfile
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
340
diff
changeset
|
64 } |
338
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
65 } |
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
66 |
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
67 struct SearchView_Previews: PreviewProvider { |
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
68 static var previews: some View { |
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
69 SearchView() |
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
70 } |
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
71 } |