Mercurial > public > lazybear
changeset 326:2fabdc393675
Testing networking in HomeView
author | Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com> |
---|---|
date | Tue, 30 Mar 2021 23:13:14 +0200 |
parents | cc3ba74d543e |
children | b39399c3c7cf |
files | LazyBear/Models/CompanyRowModel.swift LazyBear/Models/SectorPerformanceModel.swift LazyBear/Views/Home/Helpers/SectorItem.swift LazyBear/Views/Home/Helpers/SectorRow.swift LazyBear/Views/Home/HomeView.swift LazyBear/Views/Networking/DataClass.swift LazyBear/Views/Networking/SectorPerformanceModel.swift |
diffstat | 7 files changed, 91 insertions(+), 41 deletions(-) [+] |
line wrap: on
line diff
--- a/LazyBear/Models/CompanyRowModel.swift Mon Mar 29 21:00:03 2021 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ -// -// CompanyRowModel.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 28/3/21. -// - -import SwiftUI - -struct CompanyRowModel: Codable, Hashable { - var symbol: String - var companyName: String - var latestPrice: Double - var changePercent: Double -}
--- a/LazyBear/Models/SectorPerformanceModel.swift Mon Mar 29 21:00:03 2021 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -// -// SectorPerformanceModel.swift -// LazyBear -// -// Created by Dennis Concepción Martín on 28/3/21. -// - -import SwiftUI - -struct SectorPerformanceModel: Codable, Hashable { - var name: String - var performance: Double - var lastUpdated: Int -}
--- a/LazyBear/Views/Home/Helpers/SectorItem.swift Mon Mar 29 21:00:03 2021 +0200 +++ b/LazyBear/Views/Home/Helpers/SectorItem.swift Tue Mar 30 23:13:14 2021 +0200 @@ -9,19 +9,36 @@ struct SectorItem: View { @Environment(\.colorScheme) var colorScheme + var sector: SectorPerformanceModel var body: some View { - Image("Technology") - .resizable() - .clipShape(Circle()) - .overlay(Circle().stroke(colorScheme == .dark ? Color(.secondarySystemBackground) : Color.white, lineWidth: 4)) - .shadow(color: Color.black.opacity(0.2), radius: 5) - .frame(width: 170, height: 170) + VStack { + Image(sector.name) + .resizable() + .background(Color.black) + .opacity(0.7) + .clipShape(Circle()) + .overlay(Circle().stroke(colorScheme == .dark ? Color(.secondarySystemBackground) : Color.white, lineWidth: 4)) + .shadow(color: Color.black.opacity(0.2), radius: 5) + .overlay( + VStack { + Text("\(sector.performance*100, specifier: "%.2f")%") + .font(.title) + .fontWeight(.semibold) + .foregroundColor(sector.performance < 0 ? .red: .green) + } + ) + + Text(sector.name) + .font(.caption) + .fontWeight(.semibold) + } + .frame(width: 170, height: 170) } } struct SectorItem_Previews: PreviewProvider { static var previews: some View { - SectorItem() + SectorItem(sector: SectorPerformanceModel(name: "Technology", performance: 0.04, lastUpdated: 1617137138)) } }
--- a/LazyBear/Views/Home/Helpers/SectorRow.swift Mon Mar 29 21:00:03 2021 +0200 +++ b/LazyBear/Views/Home/Helpers/SectorRow.swift Tue Mar 30 23:13:14 2021 +0200 @@ -8,6 +8,7 @@ import SwiftUI struct SectorRow: View { + var sectorPerformance: [SectorPerformanceModel] var body: some View { VStack(alignment: .leading) { @@ -18,8 +19,8 @@ ScrollView(.horizontal, showsIndicators: false) { HStack(spacing: 20) { - ForEach((1..<10)) { _ in - SectorItem() + ForEach(sectorPerformance, id: \.self) { sector in + SectorItem(sector: sector) } } .padding() @@ -32,6 +33,6 @@ struct SectorRow_Previews: PreviewProvider { static var previews: some View { - SectorRow() + SectorRow(sectorPerformance: [SectorPerformanceModel(name: "Technology", performance: 0.04, lastUpdated: 1617137138)]) } }
--- a/LazyBear/Views/Home/HomeView.swift Mon Mar 29 21:00:03 2021 +0200 +++ b/LazyBear/Views/Home/HomeView.swift Tue Mar 30 23:13:14 2021 +0200 @@ -8,11 +8,21 @@ import SwiftUI struct HomeView: View { + @ObservedObject var homeData = HomeData() + @State private var showTradingDates = false + + static let taskDateFormat: DateFormatter = { + let formatter = DateFormatter() + formatter.dateStyle = .medium + return formatter + }() + + let dueDate = Date() var body: some View { NavigationView { List { - SectorRow() + SectorRow(sectorPerformance: homeData.sectorPerformance) .listRowInsets(EdgeInsets()) let keyTitles = ["Top gainers", "Top losers", "Most active"] @@ -22,9 +32,26 @@ } .listRowInsets(EdgeInsets()) } - .navigationTitle("Home") + .navigationTitle("\(dueDate, formatter: Self.taskDateFormat)") .navigationBarTitleDisplayMode(.inline) .navigationViewStyle(StackNavigationViewStyle()) + .toolbar { + ToolbarItem(placement: .navigationBarTrailing) { + Button(action: { showTradingDates = true }) { + Image(systemName: "calendar.badge.clock") + } + } + + ToolbarItem(placement: .navigationBarLeading) { + Button(action: { homeData.getSectorPerformance() }) { + Text("Test recall") + } + } + } + } + .onAppear { homeData.getSectorPerformance() } + .sheet(isPresented: $showTradingDates) { + TradingDates() } } }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LazyBear/Views/Networking/DataClass.swift Tue Mar 30 23:13:14 2021 +0200 @@ -0,0 +1,20 @@ +// +// DataClass.swift +// LazyBear +// +// Created by Dennis Concepción Martín on 30/3/21. +// + +import SwiftUI + +struct DataClass: View { + var body: some View { + Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) + } +} + +struct DataClass_Previews: PreviewProvider { + static var previews: some View { + DataClass() + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LazyBear/Views/Networking/SectorPerformanceModel.swift Tue Mar 30 23:13:14 2021 +0200 @@ -0,0 +1,14 @@ +// +// SectorPerformanceModel.swift +// LazyBear +// +// Created by Dennis Concepción Martín on 30/3/21. +// + +import SwiftUI + +struct SectorPerformanceModel: Codable, Hashable { + var name: String + var performance: Double + var lastUpdated: Int +}