diff LazyBear/Views/Company/Helpers/TransactionList.swift @ 412:a7c9dd0c5822

Main insider view implemented
author Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
date Tue, 08 Jun 2021 11:46:58 +0200
parents 681fb377235e
children 5f21f7c23c5e
line wrap: on
line diff
--- a/LazyBear/Views/Company/Helpers/TransactionList.swift	Mon Jun 07 20:59:52 2021 +0200
+++ b/LazyBear/Views/Company/Helpers/TransactionList.swift	Tue Jun 08 11:46:58 2021 +0200
@@ -8,13 +8,74 @@
 import SwiftUI
 
 struct TransactionList: View {
+    var transactions: [InsiderTransactionModel]
+    @State private var showFullList = false
+    
     var body: some View {
-        Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/)
+        VStack(alignment: .leading) {
+            HStack {
+                Text("Latest transactions")
+                    .font(.title3)
+                    .fontWeight(.semibold)
+                
+                Spacer()
+                Button("See all", action: { showFullList = true })
+            }
+        
+            VStack(alignment: .leading, spacing: 20) {
+                ForEach(transactions.prefix(3), id: \.self) { transaction in
+                    TransactionRow(transaction: transaction)
+                }
+            }
+        }
+        .sheet(isPresented: $showFullList) {
+            TransactionFullList(transactions: transactions)
+        }
     }
 }
 
 struct TransactionList_Previews: PreviewProvider {
     static var previews: some View {
-        TransactionList()
+        TransactionList(transactions:
+            [
+                InsiderTransactionModel(filingDate: "2020-01-01",
+                                        fullName: "Dennis Concepcion",
+                                        postShares: 1234,
+                                        reportedTitle: "Director",
+                                        transactionCode: "S",
+                                        transactionPrice: 20.08,
+                                        transactionShares: 12345,
+                                        transactionValue: 1234567.0
+                )
+            ]
+            )
     }
 }
+
+struct TransactionFullList: View {
+    var transactions: [InsiderTransactionModel]
+    @Environment(\.presentationMode) private var presentationTransactionFullList
+    
+    var body: some View {
+        NavigationView {
+            ScrollView {
+                VStack(alignment: .leading, spacing: 20) {
+                    ForEach(transactions, id: \.self) { transaction in
+                        TransactionRow(transaction: transaction)
+                    }
+                }
+                .padding()
+            }
+            .navigationTitle("Latest transactions")
+            .navigationBarTitleDisplayMode(.inline)
+            .toolbar {
+                ToolbarItem(placement: .navigationBarLeading) {
+                    Button(action: { presentationTransactionFullList.wrappedValue.dismiss() }) {
+                        Image(systemName: "multiply")
+                            .imageScale(.large)
+                    }
+                }
+            }
+        }
+    }
+}