view LazyBear/Views/Home/Helpers/TopStockRow.swift @ 336:6f904b166564

Implementing TradingDaysView
author Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
date Wed, 31 Mar 2021 20:42:44 +0200
parents 2dad5828ccf6
children e81c18164afb
line wrap: on
line source

//
//  TopStockRow.swift
//  LazyBear
//
//  Created by Dennis Concepción Martín on 28/3/21.
//

import SwiftUI

struct TopStockRow: View {
    var key: String
    var list: [CompanyRowModel]
    var intradayPricesDict: [String: IntradayPricesArray]
    
    var body: some View {
        VStack(alignment: .leading) {
            Text(adaptTitle())
                .font(.title3)
                .fontWeight(.semibold)
                .padding([.top, .horizontal])
            
            ScrollView(.horizontal, showsIndicators: false) {
                HStack(spacing: 20) {
                    ForEach(list, id: \.self) { company in
                        let symbol = company.symbol.uppercased()
                        if let prices = intradayPricesDict[symbol] {
                            TopStockItem(company: company, intradayPricesArray: prices)
                        }
                        
                    }
                }
                .padding()
            }
            .frame(height: 250)
        }
        .padding(.bottom)
    }
    
    private func adaptTitle() -> String {
        if key == "mostactive" {
            
            return "Most active"
        } else {
            return key.capitalized
        }
    }
}


struct TopStockRow_Previews: PreviewProvider {
    static var previews: some View {
        let list = [CompanyRowModel(symbol: "aapl", companyName: "apple inc", latestPrice: 120.30, changePercent: 0.03)]
        let intradayPricesArray = IntradayPricesArray(intradayPrices: [IntradayPricesModel(open: 120.00)])
        TopStockRow(key: "Gainers", list: list, intradayPricesDict: ["AAPL": intradayPricesArray])
    }
}