Skip to content

Commit 8f3c96c

Browse files
committed
UI tidying, made "insufficient [x] data" appear when selected time range does not have enough points, fixed selectable range on end date to not allow any time before start date,
1 parent 7b30835 commit 8f3c96c

5 files changed

Lines changed: 31 additions & 27 deletions

File tree

Infini-iOS/View Components/Chart View Components/BatteryChart.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,15 @@ struct BatteryChart: View {
3535
}
3636

3737
var body: some View {
38+
let dataPoints = ChartManager.shared.convert(results: chartPoints)
3839
let chartStyle = LineChartStyle(infoBoxPlacement: .floating, baseline: .minimumWithMaximum(of: 0), topLine: .maximum(of: 100))
3940
let data = LineChartData(dataSets: LineDataSet(
40-
dataPoints: ChartManager.shared.convert(results: chartPoints),
41+
dataPoints: dataPoints,
4142
style: setLineStyle()),
4243
chartStyle: chartStyle
4344
)
4445

45-
if chartPoints.count > 1 {
46+
if dataPoints.count > 1 {
4647
setGraphType(data: data)
4748
.animation(.easeIn)
4849
.floatingInfoBox(chartData: data)

Infini-iOS/View Components/Chart View Components/HeartChart.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ struct HeartChart: View {
2121
@FetchRequest(sortDescriptors: [NSSortDescriptor(keyPath: \ChartDataPoint.timestamp, ascending: true)], predicate: NSPredicate(format: "chart == 0"))
2222
private var chartPoints: FetchedResults<ChartDataPoint>
2323

24+
2425
func setLineStyle() -> LineStyle {
2526
if heartChartFill {
2627
return LineStyle(lineColour: ColourStyle(colours: [Color.red.opacity(0.7), Color.red.opacity(0.3)], startPoint: .top, endPoint: .bottom), lineType: .curvedLine, ignoreZero: false)
@@ -38,14 +39,15 @@ struct HeartChart: View {
3839
}
3940

4041
var body: some View {
42+
let dataPoints = ChartManager.shared.convert(results: chartPoints)
4143
let chartStyle = LineChartStyle(infoBoxPlacement: .floating, baseline: .minimumWithMaximum(of: 50), topLine: .maximum(of: 160))
4244
let data = LineChartData(dataSets: LineDataSet(
4345
dataPoints: ChartManager.shared.convert(results: chartPoints),
4446
style: setLineStyle()),
4547
chartStyle: chartStyle
4648
)
4749

48-
if chartPoints.count > 1 {
50+
if dataPoints.count > 1 {
4951
setGraphType(data: data)
5052
.animation(.easeIn)
5153
.floatingInfoBox(chartData: data)

Infini-iOS/View Components/Sheets/ChartSettingsSheet/ChartSettingsSheetDatePicker.swift

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,24 +12,22 @@ import SwiftUI
1212
struct ChartSettingsSheetDatePicker: View {
1313
let today = Date()
1414
let oneMonthAgo = Calendar.current.date(byAdding: .month, value: -1, to: Date()) ?? (Date() - 2419200)
15-
16-
// @Binding var endDate: Date// = Date()
17-
// @Binding var startDate: Date// = Calendar.current.date(byAdding: .month, value: -1, to: Date())!
1815

1916
@Binding var chartRangeState: ChartManager.DateSelectionState
17+
let oldestPoint: Date?
2018

2119
var body: some View {
2220
List {
2321
DatePicker(
2422
"Start Date",
2523
selection: $chartRangeState.startDate,
26-
in: oneMonthAgo...today,
24+
in: (oldestPoint ?? oneMonthAgo)...today,
2725
displayedComponents: [.date, .hourAndMinute]
2826
)
2927
DatePicker(
3028
"End Date",
3129
selection: $chartRangeState.endDate,
32-
in: oneMonthAgo...today,
30+
in: chartRangeState.startDate...today,
3331
displayedComponents: [.date, .hourAndMinute]
3432
)
3533
}.listStyle(.insetGrouped)

Infini-iOS/View Components/Sheets/ChartSettingsSheet/ChartSettingsSheetMain.swift

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ struct ChartSettingsSheet: View {
1414
@AppStorage("heartChartFill") var heartChartFill: Bool = true
1515
@AppStorage("batChartFill") var batChartFill: Bool = true
1616
@FetchRequest(sortDescriptors: [NSSortDescriptor(keyPath: \ChartDataPoint.timestamp, ascending: true)])
17-
private var chartPoints: FetchedResults<ChartDataPoint>
17+
var chartPoints: FetchedResults<ChartDataPoint>
1818

1919
@State var chartRangeState: ChartManager.DateSelectionState = ChartManager.DateSelectionState(dateRangeSelection: 1)
2020

@@ -29,48 +29,59 @@ struct ChartSettingsSheet: View {
2929
var body: some View {
3030
VStack {
3131
SheetCloseButton()
32+
Divider()
33+
.padding(.horizontal)
3234
VStack {
3335
if chartManager.currentChart == .battery {
3436
Toggle("Filled Battery Graph", isOn: $batChartFill)
35-
.padding()
37+
.padding(.horizontal)
3638
.frame(maxWidth: .infinity)
39+
Divider()
40+
.padding(.horizontal)
3741
Button (action: {
3842
ChartManager.shared.deleteAll(dataSet: chartPoints, chart: ChartsAsInts.battery.rawValue)
3943
}) {
4044
(Text("Clear All Battery Chart Data"))
4145
}
4246
.frame(maxWidth: .infinity, alignment: .leading)
43-
.padding(.horizontal)
47+
.padding()
4448
} else {
4549
Toggle("Filled HRM Graph", isOn: $heartChartFill)
46-
.padding()
50+
.padding(.horizontal)
4751
.frame(maxWidth: .infinity)
52+
Divider()
53+
.padding(.horizontal)
4854
Button (action: {
4955
ChartManager.shared.deleteAll(dataSet: chartPoints, chart: ChartsAsInts.heart.rawValue)
5056
}) {
5157
(Text("Clear All HRM Chart Data"))
5258
}
5359
.frame(maxWidth: .infinity, alignment: .leading)
54-
.padding(.horizontal)
60+
.padding()
5561
}
56-
}.padding()
62+
}
63+
Divider()
64+
.padding(.horizontal)
5765
Text("Select Date Range")
58-
.font(.title2)
66+
// .font(.title2)
5967
.padding()
60-
.frame(alignment: .leading)
68+
.frame(maxWidth: .infinity, alignment: .leading)
6169
Picker("Date Range Selection", selection: $chartRangeState.dateRangeSelection) {
6270
Text("Show All").tag(0)
6371
Text("Sliders").tag(1)
6472
Text("Select Dates").tag(2)
6573
}.pickerStyle(.segmented)
66-
.padding()
74+
.padding(.bottom)
75+
.padding(.horizontal)
6776
switch chartRangeState.dateRangeSelection {
6877
case 0:
69-
EmptyView()
78+
Text("All Data Selected")
79+
.padding()
80+
.font(.title)
7081
case 1:
7182
ChartSettingsSheetSliders(chartRangeState: self.$chartRangeState)
7283
case 2:
73-
ChartSettingsSheetDatePicker(chartRangeState: self.$chartRangeState)
84+
ChartSettingsSheetDatePicker(chartRangeState: self.$chartRangeState, oldestPoint: chartPoints[0].timestamp)
7485
default:
7586
EmptyView()
7687
}

Infini-iOS/View Components/Sheets/ChartSettingsSheet/ChartSettingsSheetSliders.swift

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,9 @@
1010
import SwiftUI
1111

1212
struct ChartSettingsSheetSliders: View {
13-
// @Binding var hours: Float// = 1
14-
// @Binding var days: Float// = 0
15-
// @Binding var weeks: Float// = 0
16-
1713
@Binding var chartRangeState: ChartManager.DateSelectionState
1814

1915
var body: some View{
20-
// VStack {
2116
List{
2217
Slider(value: $chartRangeState.hours, in: 0...23, step: 1) {
2318
Text("Hours")
@@ -42,10 +37,7 @@ struct ChartSettingsSheetSliders: View {
4237
} maximumValueLabel: {
4338
Text("")
4439
}
45-
// }
46-
// Spacer()
4740
}
4841
.listStyle(.insetGrouped)
49-
// .padding()
5042
}
5143
}

0 commit comments

Comments
 (0)