diff options
Diffstat (limited to 'ShedCalc/BOMView.swift')
| -rw-r--r-- | ShedCalc/BOMView.swift | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/ShedCalc/BOMView.swift b/ShedCalc/BOMView.swift new file mode 100644 index 0000000..1bb6523 --- /dev/null +++ b/ShedCalc/BOMView.swift @@ -0,0 +1,63 @@ +// +// BOMView.swift +// ShedCalc +// +// Created by Jacky Jack on 28/07/2026. +// + +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 + + @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) + ] + + var body: some View { + VStack { + Text("BOM") + } + 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("m per Piece") { material in + Text(material.metersPerPiece, format: .number.precision(.fractionLength(2))) + } + TableColumn("Pieces") { material in + Text(material.totalPieces, format: .number) + } + } + } + HStack { + Text("Total price: 0.00") + } + } +} |
