Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rename smbIsAlwaysOff to smbIsScheduledOff (alpha) #120

Merged
merged 9 commits into from
May 1, 2024
6 changes: 3 additions & 3 deletions Core_Data.xcdatamodeld/Core_Data.xcdatamodel/contents
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="21754" systemVersion="22F82" minimumToolsVersion="Automatic" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="22757" systemVersion="23E224" minimumToolsVersion="Automatic" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure what this change is about or if it's needed as it seems it was altered automatically.

<entity name="BGaverages" representedClassName="BGaverages" syncable="YES" codeGenerationType="class">
<attribute name="average" optional="YES" attributeType="Decimal" defaultValueString="0.0"/>
<attribute name="average_1" optional="YES" attributeType="Decimal" defaultValueString="0.0"/>
Expand Down Expand Up @@ -66,8 +66,8 @@
<attribute name="isfAndCr" optional="YES" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES"/>
<attribute name="isPreset" optional="YES" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES"/>
<attribute name="percentage" optional="YES" attributeType="Double" defaultValueString="100" usesScalarValueType="YES"/>
<attribute name="smbIsAlwaysOff" optional="YES" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES"/>
<attribute name="smbIsOff" optional="YES" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES"/>
<attribute name="smbIsScheduledOff" optional="YES" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES"/>
<attribute name="smbMinutes" optional="YES" attributeType="Decimal" defaultValueString="30"/>
<attribute name="start" optional="YES" attributeType="Decimal" defaultValueString="0.0"/>
<attribute name="target" optional="YES" attributeType="Decimal" defaultValueString="100"/>
Expand All @@ -85,8 +85,8 @@
<attribute name="isfAndCr" optional="YES" attributeType="Boolean" defaultValueString="YES" usesScalarValueType="YES"/>
<attribute name="name" optional="YES" attributeType="String"/>
<attribute name="percentage" optional="YES" attributeType="Double" defaultValueString="0.0" usesScalarValueType="YES"/>
<attribute name="smbIsAlwaysOff" optional="YES" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES"/>
<attribute name="smbIsOff" optional="YES" attributeType="Boolean" usesScalarValueType="YES"/>
<attribute name="smbIsScheduledOff" optional="YES" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES"/>
<attribute name="smbMinutes" optional="YES" attributeType="Decimal" defaultValueString="30"/>
<attribute name="start" optional="YES" attributeType="Decimal" defaultValueString="0.0"/>
<attribute name="target" optional="YES" attributeType="Decimal" defaultValueString="0.0"/>
Expand Down
2 changes: 1 addition & 1 deletion FreeAPS/Resources/javascript/bundle/determine-basal.js

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions FreeAPS/Sources/APS/OpenAPS/OpenAPS.swift
Original file line number Diff line number Diff line change
Expand Up @@ -259,7 +259,7 @@ final class OpenAPS {
isfAndCr: overrideArray.first?.isfAndCr ?? false,
isf: overrideArray.first?.isf ?? false,
cr: overrideArray.first?.cr ?? false,
smbIsAlwaysOff: overrideArray.first?.smbIsAlwaysOff ?? false,
smbIsScheduledOff: overrideArray.first?.smbIsScheduledOff ?? false,
start: (overrideArray.first?.start ?? 0) as Decimal,
end: (overrideArray.first?.end ?? 0) as Decimal,
smbMinutes: (overrideArray.first?.smbMinutes ?? smbMinutes) as Decimal,
Expand Down Expand Up @@ -287,7 +287,7 @@ final class OpenAPS {
isfAndCr: overrideArray.first?.isfAndCr ?? false,
isf: overrideArray.first?.isf ?? false,
cr: overrideArray.first?.cr ?? false,
smbIsAlwaysOff: overrideArray.first?.smbIsAlwaysOff ?? false,
smbIsScheduledOff: overrideArray.first?.smbIsScheduledOff ?? false,
start: (overrideArray.first?.start ?? 0) as Decimal,
end: (overrideArray.first?.end ?? 0) as Decimal,
smbMinutes: (overrideArray.first?.smbMinutes ?? smbMinutes) as Decimal,
Expand Down
8 changes: 4 additions & 4 deletions FreeAPS/Sources/Models/Oref2_variables.swift
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ struct Oref2_variables: JSON, Equatable {
var isfAndCr: Bool
var isf: Bool
var cr: Bool
var smbIsAlwaysOff: Bool
var smbIsScheduledOff: Bool
var start: Decimal
var end: Decimal
var smbMinutes: Decimal
Expand All @@ -42,7 +42,7 @@ struct Oref2_variables: JSON, Equatable {
isfAndCr: Bool,
isf: Bool,
cr: Bool,
smbIsAlwaysOff: Bool,
smbIsScheduledOff: Bool,
start: Decimal,
end: Decimal,
smbMinutes: Decimal,
Expand All @@ -65,7 +65,7 @@ struct Oref2_variables: JSON, Equatable {
self.isfAndCr = isfAndCr
self.isf = isf
self.cr = cr
self.smbIsAlwaysOff = smbIsAlwaysOff
self.smbIsScheduledOff = smbIsScheduledOff
self.start = start
self.end = end
self.smbMinutes = smbMinutes
Expand All @@ -92,7 +92,7 @@ extension Oref2_variables {
case isfAndCr
case isf
case cr
case smbIsAlwaysOff
case smbIsScheduledOff
case start
case end
case smbMinutes
Expand Down
42 changes: 16 additions & 26 deletions FreeAPS/Sources/Modules/Home/View/HomeRootView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -243,35 +243,25 @@ extension Home {
""
)

let smbToggleString = (fetchedPercent.first?.smbIsOff ?? false) ? " \u{20e0}" : ""
var comma1 = ", "
var comma2 = comma1
var comma3 = comma1
if targetString == "" || percentString == "" { comma1 = "" }
if durationString == "" { comma2 = "" }
if smbToggleString == "" { comma3 = "" }

if percentString == "", targetString == "" {
comma1 = ""
comma2 = ""
}
if percentString == "", targetString == "", smbToggleString == "" {
durationString = ""
comma1 = ""
comma2 = ""
comma3 = ""
}
if durationString == "" {
comma2 = ""
}
if smbToggleString == "" {
comma3 = ""
}

if durationString == "", !indefinite {
return nil
}
return percentString + comma1 + targetString + comma2 + durationString + comma3 + smbToggleString

let smbToggleString = (
(fetchedPercent.first?.smbIsOff ?? false) || fetchedPercent.first?.smbIsScheduledOff ?? false
) ?
" \u{20e0}" : ""
let smbScheduleString = (fetchedPercent.first?.smbIsScheduledOff ?? false) &&
!(fetchedPercent.first?.smbIsOff ?? false) ?
" \(fetchedPercent.first?.start ?? 0)-\(fetchedPercent.first?.end ?? 0)" : ""
let comma1 = (percentString == "" || (targetString == "" && durationString == "" && smbToggleString == ""))
? "" : " , "
let comma2 = (targetString == "" || (durationString == "" && smbToggleString == ""))
? "" : " , "
let comma3 = (durationString == "" || smbToggleString == "")
? "" : " , "

return percentString + comma1 + targetString + comma2 + durationString + comma3 + smbToggleString + smbScheduleString
}

var infoPanel: some View {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ extension OverrideProfilesConfig {
@Published var isfAndCr: Bool = true
@Published var isf: Bool = true
@Published var cr: Bool = true
@Published var smbIsAlwaysOff: Bool = false
@Published var smbIsScheduledOff: Bool = false
@Published var start: Decimal = 0
@Published var end: Decimal = 23
@Published var smbMinutes: Decimal = 0
Expand Down Expand Up @@ -66,11 +66,11 @@ extension OverrideProfilesConfig {
saveOverride.isf = isf
saveOverride.cr = cr
} else { saveOverride.isfAndCr = true }
if smbIsAlwaysOff {
saveOverride.smbIsAlwaysOff = true
if smbIsScheduledOff {
saveOverride.smbIsScheduledOff = true
saveOverride.start = start as NSDecimalNumber
saveOverride.end = end as NSDecimalNumber
} else { saveOverride.smbIsAlwaysOff = false }
} else { saveOverride.smbIsScheduledOff = false }

saveOverride.smbMinutes = smbMinutes as NSDecimalNumber
saveOverride.uamMinutes = uamMinutes as NSDecimalNumber
Expand Down Expand Up @@ -107,11 +107,11 @@ extension OverrideProfilesConfig {
saveOverride.isf = isf
saveOverride.cr = cr
} else { saveOverride.isfAndCr = true }
if smbIsAlwaysOff {
saveOverride.smbIsAlwaysOff = true
if smbIsScheduledOff {
saveOverride.smbIsScheduledOff = true
saveOverride.start = start as NSDecimalNumber
saveOverride.end = end as NSDecimalNumber
} else { smbIsAlwaysOff = false }
} else { smbIsScheduledOff = false }

saveOverride.smbMinutes = smbMinutes as NSDecimalNumber
saveOverride.uamMinutes = uamMinutes as NSDecimalNumber
Expand Down Expand Up @@ -147,11 +147,11 @@ extension OverrideProfilesConfig {
saveOverride.isf = profile.isf
saveOverride.cr = profile.cr
} else { saveOverride.isfAndCr = true }
if profile.smbIsAlwaysOff {
saveOverride.smbIsAlwaysOff = true
if profile.smbIsScheduledOff {
saveOverride.smbIsScheduledOff = true
saveOverride.start = profile.start
saveOverride.end = profile.end
} else { saveOverride.smbIsAlwaysOff = false }
} else { saveOverride.smbIsScheduledOff = false }

saveOverride.smbMinutes = (profile.smbMinutes ?? 0) as NSDecimalNumber
saveOverride.uamMinutes = (profile.uamMinutes ?? 0) as NSDecimalNumber
Expand All @@ -175,14 +175,14 @@ extension OverrideProfilesConfig {
smbIsOff = overrideArray.first?.smbIsOff ?? false
advancedSettings = overrideArray.first?.advancedSettings ?? false
isfAndCr = overrideArray.first?.isfAndCr ?? true
smbIsAlwaysOff = overrideArray.first?.smbIsAlwaysOff ?? false
smbIsScheduledOff = overrideArray.first?.smbIsScheduledOff ?? false

if advancedSettings {
if !isfAndCr {
isf = overrideArray.first?.isf ?? false
cr = overrideArray.first?.cr ?? false
}
if smbIsAlwaysOff {
if smbIsScheduledOff {
start = (overrideArray.first?.start ?? 0) as Decimal
end = (overrideArray.first?.end ?? 0) as Decimal
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,24 +120,26 @@ extension OverrideProfilesConfig {
if state.advancedSettings {
HStack {
Toggle(isOn: $state.smbIsOff) {
Text("Disable SMBs")
Text("Always Disable SMBs")
}
}
HStack {
Toggle(isOn: $state.smbIsAlwaysOff) {
Text("Schedule when SMBs are Off")
}.disabled(!state.smbIsOff)
}
if state.smbIsAlwaysOff {
if !state.smbIsOff {
HStack {
Text("First Hour SMBs are Off (24 hours)")
DecimalTextField("0", value: $state.start, formatter: formatter, cleanInput: false)
Text("hour").foregroundColor(.secondary)
Toggle(isOn: $state.smbIsScheduledOff) {
Text("Schedule when SMBs are Off")
}
}
HStack {
Text("Last Hour SMBs are Off (24 hours)")
DecimalTextField("0", value: $state.end, formatter: formatter, cleanInput: false)
Text("hour").foregroundColor(.secondary)
if state.smbIsScheduledOff {
HStack {
Text("First Hour SMBs are Off (24 hours)")
DecimalTextField("0", value: $state.start, formatter: formatter, cleanInput: false)
Text("hour").foregroundColor(.secondary)
}
HStack {
Text("First Hour SMBs are Resumed (24 hours)")
DecimalTextField("0", value: $state.end, formatter: formatter, cleanInput: false)
Text("hour").foregroundColor(.secondary)
}
}
}
HStack {
Expand Down Expand Up @@ -281,7 +283,7 @@ extension OverrideProfilesConfig {
let percent = preset.percentage / 100
let perpetual = preset.indefinite
let durationString = perpetual ? "" : "\(formatter.string(from: duration as NSNumber)!)"
let scheduledSMBstring = (preset.smbIsOff && preset.smbIsAlwaysOff) ? "Scheduled SMBs" : ""
let scheduledSMBstring = (preset.smbIsOff && preset.smbIsScheduledOff) ? "Scheduled SMBs" : ""
let smbString = (preset.smbIsOff && scheduledSMBstring == "") ? "SMBs are off" : ""
let targetString = target != 0 ? "\(glucoseFormatter.string(from: target as NSNumber)!)" : ""
let maxMinutesSMB = (preset.smbMinutes as Decimal?) != nil ? (preset.smbMinutes ?? 0) as Decimal : 0
Expand Down Expand Up @@ -328,14 +330,13 @@ extension OverrideProfilesConfig {
}

private func unChanged() -> Bool {
let isChanged = (state.percentage == 100 && !state.override_target && !state.smbIsOff && !state.advancedSettings) ||
(!state._indefinite && state.duration == 0) || (state.override_target && state.target == 0) ||
(
state.percentage == 100 && !state.override_target && !state.smbIsOff && state.isf && state.cr && state
.smbMinutes == state.defaultSmbMinutes && state.uamMinutes == state.defaultUamMinutes
)
let defaultProfile = state.percentage == 100 && !state.override_target && !state.advancedSettings
let noDurationSpecified = !state._indefinite && state.duration == 0
let targetZeroWithOverride = state.override_target && state.target == 0
let allSettingsDefault = state.percentage == 100 && !state.override_target && !state.smbIsOff && !state
.smbIsScheduledOff && state.smbMinutes == state.defaultSmbMinutes && state.uamMinutes == state.defaultUamMinutes

return isChanged
return defaultProfile || noDurationSpecified || targetZeroWithOverride || allSettingsDefault
}

private func removeProfile(at offsets: IndexSet) {
Expand Down
8 changes: 4 additions & 4 deletions open-iaps-oref/lib/determine-basal/determine-basal.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ function convert_bg(value, profile)
}
}
function enable_smb(profile, microBolusAllowed, meal_data, bg, target_bg, high_bg, oref_variables, time) {
if (oref_variables.smbIsOff){
if (oref_variables.smbIsScheduledOff){
/* Below logic is related to profile overrides which can disable SMBs or disable them for a scheduled window.
* SMBs will be disabled from [start, end), such that if an SMB is scheduled to be disabled from 10 AM to 2 PM,
* an SMB will not be allowed from 10:00:00 until 1:59:59.
Expand Down Expand Up @@ -154,7 +154,7 @@ var determine_basal = function determine_basal(glucose_status, currenttemp, iob_
const isfAndCr = oref2_variables.isfAndCr;
const isf = oref2_variables.isf;
const cr_ = oref2_variables.cr;
const smbIsAlwaysOff = oref2_variables.smbIsAlwaysOff;
const smbIsScheduledOff = oref2_variables.smbIsScheduledOff;
const start = oref2_variables.start;
var end = oref2_variables.end;
const smbMinutes = oref2_variables.smbMinutes;
Expand Down Expand Up @@ -1019,7 +1019,7 @@ var determine_basal = function determine_basal(glucose_status, currenttemp, iob_
threshold = min_bg - 0.5*(min_bg-40);
// Set threshold to the user's setting, as long as it's between 60-120 and above the default calculated threshold
threshold = Math.min(Math.max(profile.threshold_setting, threshold, 60), 120);
console.error("Threshold set to ${convert_bg(threshold, profile)}");
console.error(`Threshold set to ${convert_bg(threshold, profile)}`);

// If iob_data or its required properties are missing, return.
// This has to be checked after checking that we're not in one of the CGM-data-related error conditions handled above,
Expand Down Expand Up @@ -1162,7 +1162,7 @@ var determine_basal = function determine_basal(glucose_status, currenttemp, iob_
let enableSMB = false;

// If SMB is always off, don't bother checking if we should enable SMBs
if (smbIsAlwaysOff) {
if (smbIsOff) {
console.error("SMBs are always off.");
enableSMB = false;
} else {
Expand Down
6 changes: 5 additions & 1 deletion oref0_source_version.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
oref0 branch: dev - git version: b89a39b
oref0 branch: dev - git version: 5774155

Last commits:
5774155 Merge pull request #20 from MikePlante1/disable_smb_schedule
e3a8d73 Merge pull request #17 from MikePlante1/console_error_refactor
a29d9ce rename smbIsAlwaysOff to smbIsScheduledOff
d898eb1 fix threshold console.error
b89a39b Merge pull request #16 from bjornoleh/webpack-update
b8aaf93 Merge pull request #15 from avouspierre/dev
4aba4e0 webpack-cp.sh: git log --since=2024-01-01
Expand Down