diff options
Diffstat (limited to 'ShedCalc/ParamView.swift')
| -rw-r--r-- | ShedCalc/ParamView.swift | 101 |
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) + } } } } |
