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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 }