summaryrefslogtreecommitdiff
path: root/ShedCalc/BOMView.swift
diff options
context:
space:
mode:
authorArturs Artamonovs <arturs.artamonovs@protonmail.com>2026-08-07 02:01:40 +0100
committerArturs Artamonovs <arturs.artamonovs@protonmail.com>2026-08-07 02:01:40 +0100
commit91d0042017e6c46f2c9f5d42d438836efa6d53e4 (patch)
treeaf8c2dbad8ea148e882136843634ff53c42dd20b /ShedCalc/BOMView.swift
parentdabeb1603cf146aa671dddf949788b514b983b76 (diff)
downloadShedCalc-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.swift63
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")
+ }
+ }
+}