Mercurial > public > lazybear
view LazyBear/Views/Company/CompanyView.swift @ 448:f71761f166f2
Handle when data is empty
author | Dennis Concepción Martín <dennisconcepcionmartin@gmail.com> |
---|---|
date | Wed, 23 Jun 2021 11:47:14 +0200 |
parents | 8621ba6fd457 |
children |
line wrap: on
line source
// // CompanyView.swift // LazyBear // // Created by Dennis Concepción Martín on 20/6/21. // import SwiftUI struct CompanyView: View { var symbol: String var name: String @ObservedObject var company = Company() var ranges = ["1D", "5D", "1M", "3M", "6M", "1Y", "5Y"] /// DatePicker ranges @State private var selectedRange = "3M" /// Selected DatePicker range var body: some View { if company.showView { ScrollView(showsIndicators: false) { VStack { HStack { Text(name.capitalized) .font(.title) .fontWeight(.semibold) .lineLimit(1) Spacer() } .padding(.horizontal) Picker("Select a range", selection: $selectedRange) { ForEach(ranges, id: \.self) { Text($0) } } .pickerStyle(SegmentedPickerStyle()) .padding(.horizontal) .onChange(of: selectedRange, perform: { range in let url = "https://api.lazybear.app/company/symbol=\(symbol)/type=refresh/range=\(range.lowercased())" company.request(url, .refresh) }) ChartHelper(company: company) if let keyStats = company.data.keyStats { KeyStatsHelper(keyStats: keyStats) } if let latestNews = company.data.latestNews { if !latestNews.isEmpty { NewsHelper(latestNews: latestNews) .padding([.horizontal, .bottom]) } } if let insiderRoster = company.data.insiderRoster { if !insiderRoster.isEmpty { InsiderRosterHelper(insiderRoster: insiderRoster) .padding([.horizontal, .bottom]) } } if let insiderTransactions = company.data.insiderTransactions { if !insiderTransactions.isEmpty { InsiderTransactionsHelper(insiderTransactions: insiderTransactions) .padding([.horizontal, .bottom]) } } } } .background(Color("customBackground").edgesIgnoringSafeArea(.all)) } else { ProgressView() .onAppear { company.request("https://api.lazybear.app/company/symbol=\(symbol)", .initial) } } } } struct CompanyView_Previews: PreviewProvider { static var previews: some View { CompanyView(symbol: "aapl", name: "apple inc") } }