summaryrefslogtreecommitdiff
path: root/ShedCalc/BOMView.swift
diff options
context:
space:
mode:
authorArturs Artamonovs <arturs.artamonovs@protonmail.com>2026-08-26 21:37:56 +0100
committerArturs Artamonovs <arturs.artamonovs@protonmail.com>2026-08-26 21:37:56 +0100
commite8b5398d8f9a2d4fa9ed339fec774badc270979f (patch)
tree2e4607262e7887cdb37003568d846503b35f9cc8 /ShedCalc/BOMView.swift
parent91d0042017e6c46f2c9f5d42d438836efa6d53e4 (diff)
downloadShedCalc-e8b5398d8f9a2d4fa9ed339fec774badc270979f.tar.gz
ShedCalc-e8b5398d8f9a2d4fa9ed339fec774badc270979f.zip
All views seem to work ok
Diffstat (limited to 'ShedCalc/BOMView.swift')
-rw-r--r--ShedCalc/BOMView.swift48
1 files changed, 22 insertions, 26 deletions
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)))")
}
}
}