diff options
| author | Arturs Artamonovs <arturs.artamonovs@protonmail.com> | 2026-08-07 02:01:40 +0100 |
|---|---|---|
| committer | Arturs Artamonovs <arturs.artamonovs@protonmail.com> | 2026-08-07 02:01:40 +0100 |
| commit | 91d0042017e6c46f2c9f5d42d438836efa6d53e4 (patch) | |
| tree | af8c2dbad8ea148e882136843634ff53c42dd20b /ShedCalc/BOMView.swift | |
| parent | dabeb1603cf146aa671dddf949788b514b983b76 (diff) | |
| download | ShedCalc-91d0042017e6c46f2c9f5d42d438836efa6d53e4.tar.gz ShedCalc-91d0042017e6c46f2c9f5d42d438836efa6d53e4.zip | |
Added 3 views. Added basic beam drawing and basic calculations for width and length + beam drawing
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") + } + } +} |
