Skip to content

Commit

Permalink
Merge pull request #232 from JeremyStorring/189-carb-cap
Browse files Browse the repository at this point in the history
Added ability to add min and max values to decimals in preferences page
  • Loading branch information
Sjoerd-Bo3 committed Jun 8, 2024
2 parents 14c7643 + d68b887 commit 5509c9b
Showing 1 changed file with 18 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,11 @@ enum PreferencesEditor {

enum FieldType {
case boolean(keypath: WritableKeyPath<Preferences, Bool>)
case decimal(keypath: WritableKeyPath<Preferences, Decimal>)
case decimal(
keypath: WritableKeyPath<Preferences, Decimal>,
minVal: WritableKeyPath<Preferences, Decimal>? = nil,
maxVal: WritableKeyPath<Preferences, Decimal>? = nil
)
case insulinCurve(keypath: WritableKeyPath<Preferences, InsulinCurve>)
}

Expand All @@ -34,7 +38,7 @@ enum PreferencesEditor {
var decimalValue: Decimal {
get {
switch type {
case let .decimal(keypath):
case let .decimal(keypath, _, _):
return settable?.get(keypath) ?? 0
default: return 0
}
Expand All @@ -57,8 +61,18 @@ enum PreferencesEditor {
switch (type, value) {
case let (.boolean(keypath), value as Bool):
settable?.set(keypath, value: value)
case let (.decimal(keypath), value as Decimal):
settable?.set(keypath, value: value)
case let (.decimal(keypath, minVal, maxVal), value as Decimal):
let constrainedValue: Decimal
if let minValue = minVal, let minValueDecimal: Decimal = settable?.get(minValue), let maxValue = maxVal, let maxValueDecimal: Decimal = settable?.get(maxValue) {
constrainedValue = min(max(value, minValueDecimal), maxValueDecimal)
} else if let minValue = minVal, let minValueDecimal: Decimal = settable?.get(minValue) {
constrainedValue = max(value, minValueDecimal)
} else if let maxValue = maxVal, let maxValueDecimal: Decimal = settable?.get(maxValue) {
constrainedValue = min(value, maxValueDecimal)
} else {
constrainedValue = value
}
settable?.set(keypath, value: constrainedValue)
case let (.insulinCurve(keypath), value as InsulinCurve):
settable?.set(keypath, value: value)
default: break
Expand Down

0 comments on commit 5509c9b

Please sign in to comment.