diff --git a/Common/Extensions/SampleValue.swift b/Common/Extensions/SampleValue.swift index b85fec0145..40d9faab4d 100644 --- a/Common/Extensions/SampleValue.swift +++ b/Common/Extensions/SampleValue.swift @@ -8,6 +8,14 @@ import LoopKit import LoopAlgorithm +extension SampleValue { + /// A glucose value entered by hand, such as a fingerstick or calibration. + var isManualGlucose: Bool { + guard let sample = self as? GlucoseSampleValue else { return false } + return sample.wasUserEntered && !sample.isDisplayOnly + } +} + extension Collection where Element == SampleValue { /// O(n) var quantityRange: ClosedRange? { diff --git a/WatchApp Extension/Managers/ComplicationChartManager.swift b/WatchApp Extension/Managers/ComplicationChartManager.swift index 3d4268afa8..4be94984ff 100644 --- a/WatchApp Extension/Managers/ComplicationChartManager.swift +++ b/WatchApp Extension/Managers/ComplicationChartManager.swift @@ -16,6 +16,7 @@ private let textInsets = UIEdgeInsets(top: 2, left: 2, bottom: 2, right: 2) extension CGSize { fileprivate static let glucosePoint = CGSize(width: 2, height: 2) + fileprivate static let manualGlucosePoint = CGSize(width: 3, height: 3) } extension NSAttributedString { @@ -150,12 +151,13 @@ final class ComplicationChartManager { } private func drawHistoricalGlucose(in context: CGContext, using scaler: GlucoseChartScaler) { - context.setFillColor(UIColor.glucose.cgColor) data?.historicalGlucose?.lazy.filter { scaler.dates.contains($0.startDate) }.forEach { glucose in let origin = scaler.point(for: glucose, unit: unit) - let glucoseRect = CGRect(origin: origin, size: .glucosePoint).alignedToScreenScale(WKInterfaceDevice.current().screenScale) + let size: CGSize = glucose.isManualGlucose ? .manualGlucosePoint : .glucosePoint + let glucoseRect = CGRect(origin: origin, size: size).alignedToScreenScale(WKInterfaceDevice.current().screenScale) + context.setFillColor((glucose.isManualGlucose ? UIColor.red : UIColor.glucose).cgColor) context.fill(glucoseRect) } } diff --git a/WatchApp Extension/Scenes/GlucoseChartScene.swift b/WatchApp Extension/Scenes/GlucoseChartScene.swift index 0c7c6473ac..c582d75b4e 100644 --- a/WatchApp Extension/Scenes/GlucoseChartScene.swift +++ b/WatchApp Extension/Scenes/GlucoseChartScene.swift @@ -291,10 +291,10 @@ class GlucoseChartScene: SKScene { data.historicalGlucose?.filter { scaler.dates.contains($0.startDate) }.forEach { let center = scaler.point($0.startDate, $0.quantity.doubleValue(for: unit)) - let size = CGSize(width: 2, height: 2) + let size = $0.isManualGlucose ? CGSize(width: 3, height: 3) : CGSize(width: 2, height: 2) let origin = CGPoint(x: center.x - size.width / 2, y: center.y - size.height / 2) let (sprite, created) = getSprite(forHash: $0.chartHashValue) - sprite.color = .glucose + sprite.color = $0.isManualGlucose ? .red : .glucose sprite.zPosition = NodePlane.values.zPosition sprite.move(to: CGRect(origin: origin, size: size).alignedToScreenScale(WKInterfaceDevice.current().screenScale), animated: !created) inactiveNodes.removeValue(forKey: $0.chartHashValue)