import Charts import Foundation import SwiftUI extension MainChartView { /// empty chart that just shows the Y axis and Y grid lines. Created separately from `mainChart` to allow main chart to scroll horizontally while having a fixed Y axis var staticYAxisChart: some View { Chart { /// high and low threshold lines if thresholdLines { let highColor = FreeAPS.getDynamicGlucoseColor( glucoseValue: highGlucose, highGlucoseColorValue: highGlucose, lowGlucoseColorValue: highGlucose, targetGlucose: units == .mgdL ? currentGlucoseTarget : currentGlucoseTarget.asMmolL, glucoseColorScheme: glucoseColorScheme, offset: units == .mgdL ? Decimal(20) : Decimal(20).asMmolL ) let lowColor = FreeAPS.getDynamicGlucoseColor( glucoseValue: lowGlucose, highGlucoseColorValue: highGlucose, lowGlucoseColorValue: lowGlucose, targetGlucose: units == .mgdL ? currentGlucoseTarget : currentGlucoseTarget.asMmolL, glucoseColorScheme: glucoseColorScheme, offset: units == .mgdL ? Decimal(20) : Decimal(20).asMmolL ) RuleMark(y: .value("High", highGlucose)) .foregroundStyle(highColor) .lineStyle(.init(lineWidth: 1, dash: [5])) RuleMark(y: .value("Low", lowGlucose)) .foregroundStyle(lowColor) .lineStyle(.init(lineWidth: 1, dash: [5])) } } .id("DummyMainChart") .frame(minHeight: geo.size.height * 0.28) .frame(width: screenSize.width - 10) .chartXAxis { mainChartXAxis } .chartXScale(domain: startMarker ... endMarker) .chartXAxis(.hidden) .chartYAxis { mainChartYAxis } .chartYScale( domain: units == .mgdL ? state.minYAxisValue ... state.maxYAxisValue : state.minYAxisValue.asMmolL ... state .maxYAxisValue.asMmolL ) .chartLegend(.hidden) } var dummyBasalChart: some View { Chart {} .id("DummyBasalChart") .frame(minHeight: geo.size.height * 0.05) .frame(width: screenSize.width - 10) .chartXAxis { basalChartXAxis } .chartXAxis(.hidden) .chartYAxis(.hidden) .chartLegend(.hidden) } var dummyCobChart: some View { Chart { drawCOB(dummy: true) } .id("DummyCobChart") .frame(minHeight: geo.size.height * 0.12) .frame(width: screenSize.width - 10) .chartXScale(domain: startMarker ... endMarker) .chartXAxis { basalChartXAxis } .chartXAxis(.hidden) .chartYAxis { cobChartYAxis } .chartYAxis(.hidden) .chartYScale(domain: state.minValueCobChart ... state.maxValueCobChart) .chartLegend(.hidden) } }