Skip to content

Commit

Permalink
The watch request updates every minute now on the main screen. This h…
Browse files Browse the repository at this point in the history
…appens if the app is in foreground.
  • Loading branch information
dhermanns committed Sep 27, 2021
1 parent 7dab9cc commit 5f17a6a
Showing 1 changed file with 139 additions and 137 deletions.
276 changes: 139 additions & 137 deletions nightguard WatchKit Extension/MainView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -51,152 +51,154 @@ struct MainView: View {
}

var body: some View {
VStack() {
HStack(spacing: 5, content: {
Text(UnitsConverter.mgdlToDisplayUnits(
viewModel.nightscoutData?.sgv ?? "---"))
.foregroundColor(viewModel.sgvColor)
.font(.system(size: 50))
.scaledToFill()
.minimumScaleFactor(0.5)
.frame(height: 55, alignment: .topLeading)
VStack(alignment: .leading, content: {
TimelineView(EveryMinuteTimelineSchedule()) { context in
VStack() {
HStack(spacing: 5, content: {
Text(UnitsConverter.mgdlToDisplayUnits(
viewModel.nightscoutData?.bgdeltaString ?? "?"))
.foregroundColor(viewModel.sgvDeltaColor)
.font(.system(size: 12))
.lineLimit(1)
Text(viewModel.nightscoutData?.bgdeltaArrow ?? "-")
.foregroundColor(viewModel.arrowColor)
.font(.system(size: 12))
.lineLimit(1)
Text(viewModel.nightscoutData?.timeString ?? "-")
.foregroundColor(viewModel.timeColor)
.font(.system(size: 12))
viewModel.nightscoutData?.sgv ?? "---"))
.foregroundColor(viewModel.sgvColor)
.font(.system(size: 50))
.scaledToFill()
.minimumScaleFactor(0.5)
.lineLimit(1)
})
ZStack(alignment: Alignment(horizontal: .trailing, vertical: .center), content: {
if #available(watchOSApplicationExtension 7.0, *) {
if (viewModel.active == true) {
ProgressView()
.progressViewStyle(CircularProgressViewStyle())
.frame(width: 5, height: 5)
} else {
VStack(alignment: .trailing, spacing: nil, content: {
HStack(){
Text(viewModel.nightscoutData?.cob ?? "")
.font(.system(size: 12))
.minimumScaleFactor(0.5)
.lineLimit(1)
Text(viewModel.nightscoutData?.iob ?? "-")
.font(.system(size: 12))
.minimumScaleFactor(0.5)
.lineLimit(1)
}
Text(viewModel.reservoir)
.font(.system(size: 12))
.minimumScaleFactor(0.5)
.lineLimit(1)
HStack(){
Text(viewModel.nightscoutData?.battery ?? "-")
.frame(height: 55, alignment: .topLeading)
VStack(alignment: .leading, content: {
Text(UnitsConverter.mgdlToDisplayUnits(
viewModel.nightscoutData?.bgdeltaString ?? "?"))
.foregroundColor(viewModel.sgvDeltaColor)
.font(.system(size: 12))
.lineLimit(1)
Text(viewModel.nightscoutData?.bgdeltaArrow ?? "-")
.foregroundColor(viewModel.arrowColor)
.font(.system(size: 12))
.lineLimit(1)
Text(viewModel.nightscoutData?.timeString ?? "-")
.foregroundColor(viewModel.timeColor)
.font(.system(size: 12))
.minimumScaleFactor(0.5)
.lineLimit(1)
})
ZStack(alignment: Alignment(horizontal: .trailing, vertical: .center), content: {
if #available(watchOSApplicationExtension 7.0, *) {
if (viewModel.active == true) {
ProgressView()
.progressViewStyle(CircularProgressViewStyle())
.frame(width: 5, height: 5)
} else {
VStack(alignment: .trailing, spacing: nil, content: {
HStack(){
Text(viewModel.nightscoutData?.cob ?? "")
.font(.system(size: 12))
.minimumScaleFactor(0.5)
.lineLimit(1)
Text(viewModel.nightscoutData?.iob ?? "-")
.font(.system(size: 12))
.minimumScaleFactor(0.5)
.lineLimit(1)
}
Text(viewModel.reservoir)
.font(.system(size: 12))
.foregroundColor(viewModel.uploaderBatteryColor)
.minimumScaleFactor(0.5)
.lineLimit(1)
HStack(){
Text(viewModel.nightscoutData?.battery ?? "-")
.font(.system(size: 12))
.foregroundColor(viewModel.uploaderBatteryColor)
.minimumScaleFactor(0.5)
.lineLimit(1)
}
}).frame(minWidth: 0,
maxWidth: .infinity,
alignment: .bottomTrailing)
}
}
}).frame(maxWidth: .infinity)
}).frame(minWidth: 0,
maxWidth: .infinity,
alignment: .topLeading)
if viewModel.showCareAndLoopData {
HStack() {
Text(viewModel.cannulaAgeString ?? "?d ?h")
.lineLimit(1)
.minimumScaleFactor(0.5)
.font(.system(size: 10))
.foregroundColor(viewModel.cannulaAgeColor)
.frame(maxWidth: .infinity,
alignment: .leading)
Text(viewModel.sensorAgeString ?? "?d ?h")
.lineLimit(1)
.minimumScaleFactor(0.5)
.font(.system(size: 10))
.foregroundColor(viewModel.sensorAgeColor)
.minimumScaleFactor(0.5)
.frame(maxWidth: .infinity)
Text(viewModel.batteryAgeString ?? "?d ?h")
.lineLimit(1)
.minimumScaleFactor(0.5)
.font(.system(size: 10))
.foregroundColor(viewModel.batteryAgeColor)
.frame(maxWidth: .infinity,
alignment: .trailing)
}.frame(minWidth: 0,
maxWidth: .infinity)
HStack(spacing: 5) {
Text(viewModel.activeProfile)
.lineLimit(1)
.minimumScaleFactor(0.5)
.font(.system(size: 10))
.frame(idealWidth: 100, maxWidth: .infinity, alignment: .leading)
Text(viewModel.temporaryBasal)
.lineLimit(1)
.minimumScaleFactor(0.5)
.font(.system(size: 10))
.frame(idealWidth: 100, maxWidth: .infinity)
Text(viewModel.temporaryTarget)
.lineLimit(1)
.minimumScaleFactor(0.5)
.font(.system(size: 10))
.frame(idealWidth: 100, maxWidth: .infinity, alignment: .trailing)
}.frame(minWidth: 0,
maxWidth: .infinity)
}
VStack() {
ZStack(alignment: Alignment(horizontal: .center, vertical: .bottom), content: {
if #available(watchOSApplicationExtension 7.0, *) {
SpriteView(scene: viewModel.skScene)
.focusable(true)
.digitalCrownRotation($crownValue, from: 0, through: 10000, by: 15, sensitivity: .high, isContinuous: true, isHapticFeedbackEnabled: true)
.onReceive(Just(crownValue)) { output in
if viewModel.crownScrolls {
scrollChart()
} else {
zoomChart()
}
}
}).frame(minWidth: 0,
maxWidth: .infinity,
alignment: .bottomTrailing)
}
}
}).frame(maxWidth: .infinity)
}).frame(minWidth: 0,
maxWidth: .infinity,
alignment: .topLeading)
if viewModel.showCareAndLoopData {
HStack() {
Text(viewModel.cannulaAgeString ?? "?d ?h")
.lineLimit(1)
.minimumScaleFactor(0.5)
.font(.system(size: 10))
.foregroundColor(viewModel.cannulaAgeColor)
.frame(maxWidth: .infinity,
alignment: .leading)
Text(viewModel.sensorAgeString ?? "?d ?h")
.lineLimit(1)
.minimumScaleFactor(0.5)
.font(.system(size: 10))
.foregroundColor(viewModel.sensorAgeColor)
.minimumScaleFactor(0.5)
.frame(maxWidth: .infinity)
Text(viewModel.batteryAgeString ?? "?d ?h")
.lineLimit(1)
.minimumScaleFactor(0.5)
.font(.system(size: 10))
.foregroundColor(viewModel.batteryAgeColor)
.frame(maxWidth: .infinity,
alignment: .trailing)
}.frame(minWidth: 0,
maxWidth: .infinity)
HStack(spacing: 5) {
Text(viewModel.activeProfile)
.lineLimit(1)
.minimumScaleFactor(0.5)
.font(.system(size: 10))
.frame(idealWidth: 100, maxWidth: .infinity, alignment: .leading)
Text(viewModel.temporaryBasal)
.lineLimit(1)
.minimumScaleFactor(0.5)
.font(.system(size: 10))
.frame(idealWidth: 100, maxWidth: .infinity)
Text(viewModel.temporaryTarget)
.lineLimit(1)
.minimumScaleFactor(0.5)
.font(.system(size: 10))
.frame(idealWidth: 100, maxWidth: .infinity, alignment: .trailing)
VStack() {
Text(viewModel.alarmRuleMessage)
.padding(15)
.font(.system(size: 14, weight: .heavy))
.foregroundColor(
Color(UIColor.nightguardRed()))
}
})
}.frame(minWidth: 0,
maxWidth: .infinity)
maxWidth: .infinity,
minHeight: 0,
maxHeight: .infinity)
}
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity)
.edgesIgnoringSafeArea(.bottom)
.focusable(false)
.onAppear() {
viewModel.refreshData(forceRefresh: false, moveToLatestValue: true)

// Request Data from the main app
// especially the baseUri if missing
WatchSyncRequestMessage().send()
}
.onReceive(timer) { _ in
viewModel.refreshData(forceRefresh: false, moveToLatestValue: false)
}
VStack() {
ZStack(alignment: Alignment(horizontal: .center, vertical: .bottom), content: {
if #available(watchOSApplicationExtension 7.0, *) {
SpriteView(scene: viewModel.skScene)
.focusable(true)
.digitalCrownRotation($crownValue, from: 0, through: 10000, by: 15, sensitivity: .high, isContinuous: true, isHapticFeedbackEnabled: true)
.onReceive(Just(crownValue)) { output in
if viewModel.crownScrolls {
scrollChart()
} else {
zoomChart()
}
}
}
VStack() {
Text(viewModel.alarmRuleMessage)
.padding(15)
.font(.system(size: 14, weight: .heavy))
.foregroundColor(
Color(UIColor.nightguardRed()))
}
})
}.frame(minWidth: 0,
maxWidth: .infinity,
minHeight: 0,
maxHeight: .infinity)
}
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity)
.edgesIgnoringSafeArea(.bottom)
.focusable(false)
.onAppear() {
viewModel.refreshData(forceRefresh: false, moveToLatestValue: true)

// Request Data from the main app
// especially the baseUri if missing
WatchSyncRequestMessage().send()
}
.onReceive(timer) { _ in
viewModel.refreshData(forceRefresh: false, moveToLatestValue: false)
}
}

Expand Down

0 comments on commit 5f17a6a

Please sign in to comment.