summaryrefslogtreecommitdiff
path: root/ShedCalc/ParamView.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/ParamView.swift
parent91d0042017e6c46f2c9f5d42d438836efa6d53e4 (diff)
downloadShedCalc-e8b5398d8f9a2d4fa9ed339fec774badc270979f.tar.gz
ShedCalc-e8b5398d8f9a2d4fa9ed339fec774badc270979f.zip
All views seem to work ok
Diffstat (limited to 'ShedCalc/ParamView.swift')
-rw-r--r--ShedCalc/ParamView.swift101
1 files changed, 96 insertions, 5 deletions
diff --git a/ShedCalc/ParamView.swift b/ShedCalc/ParamView.swift
index 3e27978..1f02856 100644
--- a/ShedCalc/ParamView.swift
+++ b/ShedCalc/ParamView.swift
@@ -16,19 +16,51 @@ struct ParamView: View {
@Bindable var paramModel = paramModel
VStack {
HStack {
- Text("All in meters")
+ Text("Set shed dimensions")
}
HStack {
Text("Width")
- TextField("Width", value: $paramModel.width, format: .number)
+ TextField("Width", value: Binding(
+ get: { paramModel.width },
+ set: { newValue in
+ if !newValue.isNaN && !newValue.isInfinite && newValue > 0.5 {
+ paramModel.width = newValue
+ }
+ }
+ ), format: .number.precision(.fractionLength(2)))
+ }
+ HStack {
+ Text("Length")
+ TextField("Length", value: Binding(
+ get: { paramModel.length },
+ set: { newValue in
+ if !newValue.isNaN && !newValue.isInfinite && newValue > 0.5 {
+ paramModel.length = newValue
+ }
+ }
+ ), format: .number.precision(.fractionLength(2)))
}
HStack {
Text("Height")
- TextField("Height", value: $paramModel.height, format: .number)
+ TextField("Height", value: Binding(
+ get: { paramModel.height },
+ set: { newValue in
+ if !newValue.isNaN && !newValue.isInfinite && newValue > 0.5 {
+ paramModel.height = newValue
+ }
+ }
+ ), format: .number.precision(.fractionLength(2)))
}
HStack {
- Text("Length")
- TextField("Length", value: $paramModel.length, format: .number)
+ Text("Spacing")
+ TextField("Spacing", value: Binding(
+ get: { paramModel.beamSpace },
+ set: { newValue in
+ if !newValue.isNaN && !newValue.isInfinite && newValue > 0.15 {
+ paramModel.beamSpace = newValue
+ }
+ }
+ ), format: .number.precision(.fractionLength(2)))
}
HStack {
Text("Total floor area: \(paramModel.floorArea(), specifier: "%.2f") m^2")
@@ -36,6 +68,65 @@ struct ParamView: View {
HStack {
Text("Total roof area: \(paramModel.roofArea(), specifier: "%.2f") m^2")
}
+ HStack {
+ Text("Total wall beams: \(paramModel.totalWallBeams()) ")
+ }
+ HStack {
+ Text("Set Timber Prices")
+ }
+ HStack {
+ Text("OSB per sheet price")
+ TextField("per sheet", value: Binding(
+ get: { paramModel.OSBSheetPrice },
+ set: { newValue in
+ if !newValue.isNaN && !newValue.isInfinite && newValue > 0.15 {
+ paramModel.beamSpace = newValue
+ }
+ }
+ ), format: .number)
+ }
+ HStack {
+ Text("Beam price per meter")
+ TextField("per meter", value: Binding(
+ get: { paramModel.timberBeamPrice },
+ set: { newValue in
+ if !newValue.isNaN && !newValue.isInfinite && newValue > 0.0 {
+ paramModel.timberBeamPrice = newValue
+ }
+ }
+ ), format: .number)
+
+ Text("Piece size")
+ TextField("per meter", value: Binding(
+ get: { paramModel.timberLengthSize },
+ set: { newValue in
+ if !newValue.isNaN && !newValue.isInfinite && newValue > 0.0 {
+ paramModel.timberLengthSize = newValue
+ }
+ }
+ ), format: .number)
+ }
+ HStack {
+ Text("Felt price")
+ TextField("per meter", value: $paramModel.feltPrice, format: .number)
+ Text("Felt width")
+ TextField("per meter", value: $paramModel.feltWidth, format: .number)
+ Text("Felt length")
+ TextField("per meter", value: $paramModel.feltLength, format: .number)
+ }
+ HStack {
+ Text("Cladding dimensions and price")
+ }
+ HStack {
+ Text("Cladding price per meter")
+ TextField("", value: $paramModel.claddingPrice, format: .number)
+ Text("Length")
+ TextField("", value: $paramModel.claddingLength, format: .number)
+ Text("Width")
+ TextField("", value: $paramModel.claddingWidth, format: .number)
+ Text("Overlap")
+ TextField("", value: $paramModel.claddingOverlap, format: .number)
+ }
}
}
}