From e8b5398d8f9a2d4fa9ed339fec774badc270979f Mon Sep 17 00:00:00 2001 From: Arturs Artamonovs Date: Wed, 26 Aug 2026 21:37:56 +0100 Subject: All views seem to work ok --- ShedCalc/BOMView.swift | 48 ++++++++++++++++++++++-------------------------- 1 file changed, 22 insertions(+), 26 deletions(-) (limited to 'ShedCalc/BOMView.swift') diff --git a/ShedCalc/BOMView.swift b/ShedCalc/BOMView.swift index 1bb6523..2cde6f3 100644 --- a/ShedCalc/BOMView.swift +++ b/ShedCalc/BOMView.swift @@ -8,29 +8,25 @@ import SwiftUI import Combine -struct Materials: Identifiable { - let materialName: String - let pricePerMeter: Double - let totalMeters: Double - let totalPrice: Double - let metersPerPiece: Double - let totalPieces: Double - - let id = UUID() -} - - - struct BOMView: View { @Environment(ParamModel.self) private var paramModel + private let bomController = BOMController() - @State private var materials = [ - Materials(materialName: "2x4", pricePerMeter: 1.2, totalMeters: 10, totalPrice: 12, metersPerPiece: 4.8, totalPieces: 23), - Materials(materialName: "OSB", pricePerMeter: 1.2, totalMeters: 10, totalPrice: 12, metersPerPiece: 4.8, totalPieces: 23), - Materials(materialName: "Roof Felt", pricePerMeter: 1.2, totalMeters: 10, totalPrice: 12, metersPerPiece: 4.8, totalPieces: 23), - Materials(materialName: "Nails", pricePerMeter: 1.2, totalMeters: 10, totalPrice: 12, metersPerPiece: 4.8, totalPieces: 23), - Materials(materialName: "Cladding", pricePerMeter: 1.2, totalMeters: 10, totalPrice: 12, metersPerPiece: 4.8, totalPieces: 23) - ] + private var materials: [MaterialItem] { + bomController.calcBOM(from: paramModel) + } + + private var totalPrice: Double { + materials.reduce(0) { $0 + $1.totalPrice } + } + + /*@State private var materials = [ + MaterialItem(materialName: "2x4", pricePerMeter: 1.2, totalMeters: 10, totalPrice: 12, metersPerPiece: 4.8, totalPieces: 23), + MaterialItem(materialName: "OSB", pricePerMeter: 1.2, totalMeters: 10, totalPrice: 12, metersPerPiece: 4.8, totalPieces: 23), + MaterialItem(materialName: "Roof Felt", pricePerMeter: 1.2, totalMeters: 10, totalPrice: 12, metersPerPiece: 4.8, totalPieces: 23), + MaterialItem(materialName: "Nails", pricePerMeter: 1.2, totalMeters: 10, totalPrice: 12, metersPerPiece: 4.8, totalPieces: 23), + MaterialItem(materialName: "Cladding", pricePerMeter: 1.2, totalMeters: 10, totalPrice: 12, metersPerPiece: 4.8, totalPieces: 23) + ]*/ var body: some View { VStack { @@ -39,14 +35,11 @@ struct BOMView: View { VStack { Table(materials) { TableColumn("Material", value: \.materialName) - TableColumn("Price per m") { material in - Text(material.pricePerMeter, format: .number.precision(.fractionLength(2))) - } TableColumn("Total m") { material in Text(material.totalMeters, format: .number.precision(.fractionLength(2))) } - TableColumn("Total price") { material in - Text(material.totalPrice, format: .number.precision(.fractionLength(2))) + TableColumn("Price per m") { material in + Text(material.pricePerMeter, format: .number.precision(.fractionLength(2))) } TableColumn("m per Piece") { material in Text(material.metersPerPiece, format: .number.precision(.fractionLength(2))) @@ -54,10 +47,13 @@ struct BOMView: View { TableColumn("Pieces") { material in Text(material.totalPieces, format: .number) } + TableColumn("Total price") { material in + Text(material.totalPrice, format: .number.precision(.fractionLength(2))) + } } } HStack { - Text("Total price: 0.00") + Text("Total price: \(totalPrice, format: .number.precision(.fractionLength(2)))") } } } -- cgit v1.2.3