changeset 59:8a32a0e965be

Add InsidersDetailView
author Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
date Wed, 20 Jan 2021 13:11:11 +0100
parents c9ee25555f21
children 4b4fb0d84815
files LazyBear.xcodeproj/project.pbxproj LazyBear.xcodeproj/project.xcworkspace/xcuserdata/dennis.xcuserdatad/UserInterfaceState.xcuserstate lazybear/Supply views/InsiderDetail.swift lazybear/Supply views/TransactionList.swift lazybear/Supply views/TransactionRow.swift
diffstat 5 files changed, 87 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/LazyBear.xcodeproj/project.pbxproj	Wed Jan 20 12:32:57 2021 +0100
+++ b/LazyBear.xcodeproj/project.pbxproj	Wed Jan 20 13:11:11 2021 +0100
@@ -33,6 +33,7 @@
 		959B940925B5F4BC00EEB802 /* LazyColumns.swift in Sources */ = {isa = PBXBuildFile; fileRef = 959B940825B5F4BC00EEB802 /* LazyColumns.swift */; };
 		959B940C25B6058E00EEB802 /* StockStats.swift in Sources */ = {isa = PBXBuildFile; fileRef = 959B940B25B6058E00EEB802 /* StockStats.swift */; };
 		95A06A0125B8432200866C00 /* PieChart.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95A06A0025B8432200866C00 /* PieChart.swift */; };
+		95A06A0525B84CA900866C00 /* InsiderDetail.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95A06A0425B84CA900866C00 /* InsiderDetail.swift */; };
 		95A1ECAF25A36127001D4A21 /* InsiderTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95A1ECAE25A36127001D4A21 /* InsiderTransaction.swift */; };
 		95A1ECB225A36230001D4A21 /* InsiderTransactionModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95A1ECB125A36230001D4A21 /* InsiderTransactionModel.swift */; };
 		95A1ECC525A37541001D4A21 /* TransactionRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95A1ECC425A37541001D4A21 /* TransactionRow.swift */; };
@@ -81,6 +82,7 @@
 		959B940825B5F4BC00EEB802 /* LazyColumns.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LazyColumns.swift; path = lazybear/Functions/LazyColumns.swift; sourceTree = SOURCE_ROOT; };
 		959B940B25B6058E00EEB802 /* StockStats.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StockStats.swift; sourceTree = "<group>"; };
 		95A06A0025B8432200866C00 /* PieChart.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PieChart.swift; sourceTree = "<group>"; };
+		95A06A0425B84CA900866C00 /* InsiderDetail.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InsiderDetail.swift; sourceTree = "<group>"; };
 		95A1ECAE25A36127001D4A21 /* InsiderTransaction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = InsiderTransaction.swift; path = lazybear/Functions/InsiderTransaction.swift; sourceTree = SOURCE_ROOT; };
 		95A1ECB125A36230001D4A21 /* InsiderTransactionModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = InsiderTransactionModel.swift; path = lazybear/Models/InsiderTransactionModel.swift; sourceTree = SOURCE_ROOT; };
 		95A1ECC425A37541001D4A21 /* TransactionRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionRow.swift; sourceTree = "<group>"; };
@@ -154,6 +156,7 @@
 				950B7A0325B1E7E100E5DB5B /* TransactionList.swift */,
 				959B940B25B6058E00EEB802 /* StockStats.swift */,
 				95A06A0025B8432200866C00 /* PieChart.swift */,
+				95A06A0425B84CA900866C00 /* InsiderDetail.swift */,
 			);
 			name = "Supply views";
 			path = "lazybear/Supply views";
@@ -354,6 +357,7 @@
 				954D997125A253A9001F7F60 /* Config.swift in Sources */,
 				95A1ECAF25A36127001D4A21 /* InsiderTransaction.swift in Sources */,
 				95D0012825B0C3A5007D45FD /* SizeClassView.swift in Sources */,
+				95A06A0525B84CA900866C00 /* InsiderDetail.swift in Sources */,
 				9521A8BD259B93200000D417 /* Company.swift in Sources */,
 				9552A61F25B06580001CD0C8 /* SampleConfig.swift in Sources */,
 				954D992525A2123B001F7F60 /* HistoricalPricesModel.swift in Sources */,
Binary file LazyBear.xcodeproj/project.xcworkspace/xcuserdata/dennis.xcuserdatad/UserInterfaceState.xcuserstate has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lazybear/Supply views/InsiderDetail.swift	Wed Jan 20 13:11:11 2021 +0100
@@ -0,0 +1,55 @@
+//
+//  InsiderDetail.swift
+//  LazyBear
+//
+//  Created by Dennis Concepción Martín on 20/1/21.
+//
+
+import SwiftUI
+
+struct InsiderDetail: View {
+    @State var transaction: InsiderTransactionModel
+    
+    var body: some View {
+        NavigationView {
+            Form {
+                Section(header: Text("Owner")) {
+                    SectionBody(image: "person.fill", data: transaction.reporting_owner)
+                }
+                
+                Section(header: Text("Date YYYY/MM/DD")) {
+                    SectionBody(image: "calendar", data: transaction.transaction_date)
+                }
+                
+                Section(header: Text("Securities transacted")) {
+                    SectionBody(image: "number", data: String(transaction.number_securities_transacted))
+                }
+                
+                Section(header: Text("Transaction type")) {
+                    let data = transaction.transaction_type.components(separatedBy: "-")[1]
+                    SectionBody(image: "dollarsing.circle", data: data)
+                    SectionBody(image: "info.circle", data: "Type: " + transaction.transaction_type)
+                }
+                
+            }
+        }
+    }
+}
+
+struct SectionBody: View {
+    @State var image: String
+    @State var data: String
+    
+    var body: some View {
+        HStack {
+            Image(systemName: image)
+            Text(data)
+        }
+    }
+}
+
+struct InsiderDetail_Previews: PreviewProvider {
+    static var previews: some View {
+        InsiderDetail(transaction: InsiderTransactionModel(acquisition_disposition: "A", transaction_date: "2020-01-01", reporting_owner: "steve jobs", transaction_type: "F-SomeStuff", number_securities_transacted: 12345))
+    }
+}
--- a/lazybear/Supply views/TransactionList.swift	Wed Jan 20 12:32:57 2021 +0100
+++ b/lazybear/Supply views/TransactionList.swift	Wed Jan 20 13:11:11 2021 +0100
@@ -13,7 +13,7 @@
     var body: some View {
         List {
             ForEach(transaction.result, id:\.self) { trans in
-                TransactionRow(trans: trans)
+                TransactionRow(transaction: trans)
             }
         }
     }
--- a/lazybear/Supply views/TransactionRow.swift	Wed Jan 20 12:32:57 2021 +0100
+++ b/lazybear/Supply views/TransactionRow.swift	Wed Jan 20 13:11:11 2021 +0100
@@ -8,23 +8,36 @@
 import SwiftUI
 
 struct TransactionRow: View {
-    var trans: InsiderTransactionModel
+    @State var transaction: InsiderTransactionModel
+    @State var showingDetails = false
     
     var body: some View {
-        VStack(alignment: .leading) {
-            HStack {
-                Image(systemName: "person.fill")
-                Text(trans.reporting_owner.capitalized)
-                Spacer()
-                Text(String(trans.number_securities_transacted))
-                    .foregroundColor(colourShares(type: trans.acquisition_disposition))
+        Button(action: { self.showingDetails.toggle() }) {
+            VStack(alignment: .leading) {
+                HStack {
+                    Image(systemName: "person.fill")
+                    Text(transaction.reporting_owner.capitalized)
+                    Spacer()
+                    Text(String(transaction.number_securities_transacted))
+                        .foregroundColor(colourShares(type: transaction.acquisition_disposition))
+                }
+                HStack {
+                    Image(systemName: "calendar")
+                    Text(transaction.transaction_date)
+                }
             }
-            HStack {
-                Image(systemName: "calendar")
-                Text(trans.transaction_date)
-            }
+            .padding()
         }
-        .padding()
+        .sheet(isPresented: $showingDetails) {
+            InsiderDetail(transaction:
+                            InsiderTransactionModel(
+                                acquisition_disposition: transaction.acquisition_disposition,
+                                transaction_date: transaction.transaction_date,
+                                reporting_owner: transaction.reporting_owner,
+                                transaction_type: transaction.transaction_type,
+                                number_securities_transacted: transaction.number_securities_transacted)
+            )
+        }
     }
     
     func colourShares(type: String) -> Color {
@@ -39,6 +52,6 @@
 
 struct TransactionRow_Previews: PreviewProvider {
     static var previews: some View {
-        TransactionRow(trans: InsiderTransactionModel(acquisition_disposition: "A", transaction_date: "2020-01-01", reporting_owner: "steve jobs", transaction_type: "F-SomeStuff", number_securities_transacted: 12345))
+        TransactionRow(transaction: InsiderTransactionModel(acquisition_disposition: "A", transaction_date: "2020-01-01", reporting_owner: "steve jobs", transaction_type: "F-SomeStuff", number_securities_transacted: 12345))
     }
 }