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
+}