Skip to content

Commit 34687a9

Browse files
authored
Merge pull request #561 from loopandlearn/touch-carb-and-bolus
Show time and value when tapping carb, bolus and SMB dots
2 parents b343230 + 75b9e14 commit 34687a9

2 files changed

Lines changed: 25 additions & 32 deletions

File tree

LoopFollow/Controllers/Graphs.swift

Lines changed: 11 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -321,13 +321,8 @@ extension MainViewController {
321321
lineBolus.drawCirclesEnabled = true
322322
lineBolus.drawFilledEnabled = false
323323

324-
if Storage.shared.showValues.value {
325-
lineBolus.drawValuesEnabled = true
326-
lineBolus.highlightEnabled = false
327-
} else {
328-
lineBolus.drawValuesEnabled = false
329-
lineBolus.highlightEnabled = true
330-
}
324+
lineBolus.drawValuesEnabled = Storage.shared.showValues.value
325+
lineBolus.highlightEnabled = true
331326

332327
// Carbs
333328
let chartEntryCarbs = [ChartDataEntry]()
@@ -347,13 +342,8 @@ extension MainViewController {
347342
lineCarbs.drawCirclesEnabled = true
348343
lineCarbs.drawFilledEnabled = false
349344

350-
if Storage.shared.showValues.value {
351-
lineCarbs.drawValuesEnabled = true
352-
lineCarbs.highlightEnabled = false
353-
} else {
354-
lineCarbs.drawValuesEnabled = false
355-
lineCarbs.highlightEnabled = true
356-
}
345+
lineCarbs.drawValuesEnabled = Storage.shared.showValues.value
346+
lineCarbs.highlightEnabled = true
357347

358348
// create Scheduled Basal graph data
359349
let chartBasalScheduledEntry = [ChartDataEntry]()
@@ -569,13 +559,8 @@ extension MainViewController {
569559
lineSmb.drawCirclesEnabled = false
570560
lineSmb.drawFilledEnabled = false
571561

572-
if Storage.shared.showValues.value {
573-
lineSmb.drawValuesEnabled = true
574-
lineSmb.highlightEnabled = false
575-
} else {
576-
lineSmb.drawValuesEnabled = false
577-
lineSmb.highlightEnabled = true
578-
}
562+
lineSmb.drawValuesEnabled = Storage.shared.showValues.value
563+
lineSmb.highlightEnabled = true
579564

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

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

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

1149-
let dot = ChartDataEntry(x: Double(dateTimeStamp), y: Double(carbData[i].sgv), data: valueString)
1136+
let dot = ChartDataEntry(x: Double(dateTimeStamp), y: Double(carbData[i].sgv), data: valueString + "\r\r" + formatPillText(line1: valueString + " g", time: carbData[i].date))
11501137
BGChart.data?.dataSets[dataIndex].addEntry(dot)
11511138
if Storage.shared.smallGraphTreatments.value {
11521139
BGChartFull.data?.dataSets[dataIndex].addEntry(dot)

LoopFollow/Helpers/Chart.swift

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,12 @@ final class ChartXValueFormatter: AxisValueFormatter {
4444

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

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

123+
private static let pillSeparator = "\r\r"
124+
122125
override func refreshContent(entry: ChartDataEntry, highlight _: Highlight) {
123-
if entry.data != nil {
124-
// var multiplier = entry.data as! Double * 100.0
125-
// labelText = String(format: "%.0f%%", multiplier)
126-
labelText = entry.data as? String ?? ""
126+
if let text = entry.data as? String {
127+
// Treatment entries use pillSeparator to separate the value label from the marker text.
128+
if let range = text.range(of: Self.pillSeparator) {
129+
labelText = String(text[range.upperBound...])
130+
} else {
131+
labelText = text
132+
}
127133
} else {
128134
labelText = String(entry.y)
129135
}

0 commit comments

Comments
 (0)