Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 11 additions & 24 deletions LoopFollow/Controllers/Graphs.swift
Original file line number Diff line number Diff line change
Expand Up @@ -321,13 +321,8 @@ extension MainViewController {
lineBolus.drawCirclesEnabled = true
lineBolus.drawFilledEnabled = false

if Storage.shared.showValues.value {
lineBolus.drawValuesEnabled = true
lineBolus.highlightEnabled = false
} else {
lineBolus.drawValuesEnabled = false
lineBolus.highlightEnabled = true
}
lineBolus.drawValuesEnabled = Storage.shared.showValues.value
lineBolus.highlightEnabled = true

// Carbs
let chartEntryCarbs = [ChartDataEntry]()
Expand All @@ -347,13 +342,8 @@ extension MainViewController {
lineCarbs.drawCirclesEnabled = true
lineCarbs.drawFilledEnabled = false

if Storage.shared.showValues.value {
lineCarbs.drawValuesEnabled = true
lineCarbs.highlightEnabled = false
} else {
lineCarbs.drawValuesEnabled = false
lineCarbs.highlightEnabled = true
}
lineCarbs.drawValuesEnabled = Storage.shared.showValues.value
lineCarbs.highlightEnabled = true

// create Scheduled Basal graph data
let chartBasalScheduledEntry = [ChartDataEntry]()
Expand Down Expand Up @@ -569,13 +559,8 @@ extension MainViewController {
lineSmb.drawCirclesEnabled = false
lineSmb.drawFilledEnabled = false

if Storage.shared.showValues.value {
lineSmb.drawValuesEnabled = true
lineSmb.highlightEnabled = false
} else {
lineSmb.drawValuesEnabled = false
lineSmb.highlightEnabled = true
}
lineSmb.drawValuesEnabled = Storage.shared.showValues.value
lineSmb.highlightEnabled = true

// TempTarget graph data
let chartTempTargetEntry = [ChartDataEntry]()
Expand Down Expand Up @@ -1021,7 +1006,8 @@ extension MainViewController {
let graphHours = 24 * Storage.shared.downloadDays.value
if dateTimeStamp < dateTimeUtils.getTimeIntervalNHoursAgo(N: graphHours) { continue }

let dot = ChartDataEntry(x: Double(dateTimeStamp), y: Double(bolusData[i].sgv), data: formatter.string(from: NSNumber(value: bolusData[i].value)))
let valueString = formatter.string(from: NSNumber(value: bolusData[i].value)) ?? ""
let dot = ChartDataEntry(x: Double(dateTimeStamp), y: Double(bolusData[i].sgv), data: valueString + "\r\r" + formatPillText(line1: valueString + " U", time: bolusData[i].date))
mainChart.addEntry(dot)
if Storage.shared.smallGraphTreatments.value {
smallChart.addEntry(dot)
Expand Down Expand Up @@ -1093,7 +1079,8 @@ extension MainViewController {
let graphHours = 24 * Storage.shared.downloadDays.value
if dateTimeStamp < dateTimeUtils.getTimeIntervalNHoursAgo(N: graphHours) { continue }

let dot = ChartDataEntry(x: Double(dateTimeStamp), y: Double(smbData[i].sgv), data: formatter.string(from: NSNumber(value: smbData[i].value)))
let valueString = formatter.string(from: NSNumber(value: smbData[i].value)) ?? ""
let dot = ChartDataEntry(x: Double(dateTimeStamp), y: Double(smbData[i].sgv), data: valueString + "\r\r" + formatPillText(line1: valueString + " U", time: smbData[i].date))
mainChart.addEntry(dot)
if Storage.shared.smallGraphTreatments.value {
smallChart.addEntry(dot)
Expand Down Expand Up @@ -1146,7 +1133,7 @@ extension MainViewController {
dateTimeStamp = dateTimeStamp - 250
}

let dot = ChartDataEntry(x: Double(dateTimeStamp), y: Double(carbData[i].sgv), data: valueString)
let dot = ChartDataEntry(x: Double(dateTimeStamp), y: Double(carbData[i].sgv), data: valueString + "\r\r" + formatPillText(line1: valueString + " g", time: carbData[i].date))
BGChart.data?.dataSets[dataIndex].addEntry(dot)
if Storage.shared.smallGraphTreatments.value {
BGChartFull.data?.dataSets[dataIndex].addEntry(dot)
Expand Down
22 changes: 14 additions & 8 deletions LoopFollow/Helpers/Chart.swift
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,12 @@ final class ChartXValueFormatter: AxisValueFormatter {

final class ChartYDataValueFormatter: ValueFormatter {
func stringForValue(_: Double, entry: ChartDataEntry, dataSetIndex _: Int, viewPortHandler _: ViewPortHandler?) -> String {
if entry.data != nil {
return entry.data as? String ?? ""
} else {
return ""
guard let text = entry.data as? String else { return "" }
// Treatment entries store "label\r\rpillText" — extract only the label portion.
if let range = text.range(of: "\r\r") {
return String(text[..<range.lowerBound])
}
return text
}
}

Expand Down Expand Up @@ -119,11 +120,16 @@ class PillMarker: MarkerImage {
labelText.draw(with: rectangle, options: .usesLineFragmentOrigin, attributes: attrs, context: nil)
}

private static let pillSeparator = "\r\r"

override func refreshContent(entry: ChartDataEntry, highlight _: Highlight) {
if entry.data != nil {
// var multiplier = entry.data as! Double * 100.0
// labelText = String(format: "%.0f%%", multiplier)
labelText = entry.data as? String ?? ""
if let text = entry.data as? String {
// Treatment entries use pillSeparator to separate the value label from the marker text.
if let range = text.range(of: Self.pillSeparator) {
labelText = String(text[range.upperBound...])
} else {
labelText = text
}
} else {
labelText = String(entry.y)
}
Expand Down