diff options
Diffstat (limited to 'ShedCalc/ParamView.swift')
| -rw-r--r-- | ShedCalc/ParamView.swift | 117 |
1 files changed, 100 insertions, 17 deletions
diff --git a/ShedCalc/ParamView.swift b/ShedCalc/ParamView.swift index 1f02856..690a1e8 100644 --- a/ShedCalc/ParamView.swift +++ b/ShedCalc/ParamView.swift @@ -23,7 +23,7 @@ struct ParamView: View { TextField("Width", value: Binding( get: { paramModel.width }, set: { newValue in - if !newValue.isNaN && !newValue.isInfinite && newValue > 0.5 { + if !newValue.isNaN && !newValue.isInfinite && newValue > 0.5 && newValue < 10.0 { paramModel.width = newValue } } @@ -34,7 +34,7 @@ struct ParamView: View { TextField("Length", value: Binding( get: { paramModel.length }, set: { newValue in - if !newValue.isNaN && !newValue.isInfinite && newValue > 0.5 { + if !newValue.isNaN && !newValue.isInfinite && newValue > 0.5 && newValue < 10.0 { paramModel.length = newValue } } @@ -45,7 +45,7 @@ struct ParamView: View { TextField("Height", value: Binding( get: { paramModel.height }, set: { newValue in - if !newValue.isNaN && !newValue.isInfinite && newValue > 0.5 { + if !newValue.isNaN && !newValue.isInfinite && newValue > 0.5 && newValue < 3.0 { paramModel.height = newValue } } @@ -56,7 +56,7 @@ struct ParamView: View { TextField("Spacing", value: Binding( get: { paramModel.beamSpace }, set: { newValue in - if !newValue.isNaN && !newValue.isInfinite && newValue > 0.15 { + if !newValue.isNaN && !newValue.isInfinite && newValue > 0.15 && newValue < 10.0 { paramModel.beamSpace = newValue } } @@ -76,18 +76,18 @@ struct ParamView: View { } HStack { Text("OSB per sheet price") - TextField("per sheet", value: Binding( + TextField("", value: Binding( get: { paramModel.OSBSheetPrice }, set: { newValue in - if !newValue.isNaN && !newValue.isInfinite && newValue > 0.15 { - paramModel.beamSpace = newValue + if !newValue.isNaN && !newValue.isInfinite && newValue > 0.1 { + paramModel.OSBSheetPrice = newValue } } ), format: .number) } HStack { Text("Beam price per meter") - TextField("per meter", value: Binding( + TextField("", value: Binding( get: { paramModel.timberBeamPrice }, set: { newValue in if !newValue.isNaN && !newValue.isInfinite && newValue > 0.0 { @@ -97,10 +97,10 @@ struct ParamView: View { ), format: .number) Text("Piece size") - TextField("per meter", value: Binding( + TextField("", value: Binding( get: { paramModel.timberLengthSize }, set: { newValue in - if !newValue.isNaN && !newValue.isInfinite && newValue > 0.0 { + if !newValue.isNaN && !newValue.isInfinite && newValue > 0.0 && newValue < 10.0 { paramModel.timberLengthSize = newValue } } @@ -108,24 +108,107 @@ struct ParamView: View { } HStack { Text("Felt price") - TextField("per meter", value: $paramModel.feltPrice, format: .number) + TextField("per meter", value: Binding( + get: { paramModel.feltPrice }, + set: { newValue in + if !newValue.isNaN && !newValue.isInfinite && newValue > 0.0 { + paramModel.feltPrice = newValue + } + } + ), format: .number) Text("Felt width") - TextField("per meter", value: $paramModel.feltWidth, format: .number) + TextField("per meter", value: Binding( + get: { paramModel.feltWidth }, + set: { newValue in + if !newValue.isNaN && !newValue.isInfinite && newValue > 0.0 && newValue < 10.0 { + paramModel.feltWidth = newValue + } + } + ), format: .number) Text("Felt length") - TextField("per meter", value: $paramModel.feltLength, format: .number) + TextField("per meter", value: Binding( + get: { paramModel.feltLength }, + set: { newValue in + if !newValue.isNaN && !newValue.isInfinite && newValue > 0.0 && newValue < 100.1{ + paramModel.feltLength = newValue + } + } + ), format: .number) } HStack { Text("Cladding dimensions and price") } HStack { Text("Cladding price per meter") - TextField("", value: $paramModel.claddingPrice, format: .number) + TextField("", value: Binding( + get: { paramModel.claddingPrice }, + set: { newValue in + if !newValue.isNaN && !newValue.isInfinite && newValue > 0.0 { + paramModel.claddingPrice = newValue + } + } + ), format: .number) Text("Length") - TextField("", value: $paramModel.claddingLength, format: .number) + TextField("", value: Binding( + get: { paramModel.claddingLength }, + set: { newValue in + if !newValue.isNaN && !newValue.isInfinite && newValue > 0.0 && newValue < 10.0 { + paramModel.claddingLength = newValue + } + } + ), format: .number) Text("Width") - TextField("", value: $paramModel.claddingWidth, format: .number) + TextField("", value: Binding( + get: { paramModel.claddingWidth }, + set: { newValue in + if !newValue.isNaN && !newValue.isInfinite && newValue > 0.0 && newValue < 10.0 + && (newValue > paramModel.claddingOverlap) { + paramModel.claddingWidth = newValue + } + } + ), format: .number) Text("Overlap") - TextField("", value: $paramModel.claddingOverlap, format: .number) + TextField("", value: Binding( + get: { paramModel.claddingOverlap }, + set: { newValue in + //overlap can't be bigger then width of cladding + if !newValue.isNaN && !newValue.isInfinite && (newValue > 0.0 && newValue < 10.0) && (newValue < paramModel.claddingWidth) { + paramModel.claddingOverlap = newValue + } + } + ), format: .number) + } + HStack { + Text("Weather wrap") + } + HStack { + Text("Wrap price") + TextField("per meter", value: Binding( + get: { paramModel.wrapPrice }, + set: { newValue in + if !newValue.isNaN && !newValue.isInfinite && newValue > 0.0 { + paramModel.wrapPrice = newValue + } + } + ), format: .number) + Text("Wrap width") + TextField("per meter", value: Binding( + get: { paramModel.wrapWidth }, + set: { newValue in + if !newValue.isNaN && !newValue.isInfinite && newValue > 0.0 && newValue < 10.0 { + paramModel.wrapWidth = newValue + } + } + ), format: .number) + Text("Wrap length") + TextField("per meter", value: Binding( + get: { paramModel.wrapLength }, + set: { newValue in + if !newValue.isNaN && !newValue.isInfinite && newValue > 0.0 && newValue < 100.1 { + paramModel.wrapLength = newValue + } + } + ), format: .number) } } } |
