polscm32 1 year ago
parent
commit
3d82250022

+ 76 - 76
Trio/Sources/Modules/Main/View/OnboardingSteps/GlucoseTargetStepView.swift

@@ -189,74 +189,74 @@ struct GlucoseTargetStepView: View {
 
                     // List of targets
                     VStack(spacing: 2) {
-                        ForEach(Array(onboardingData.targetItems.enumerated()), id: \.element.id) { index, item in
-                            HStack {
-                                // Time display
-                                Text(
-                                    dateFormatter
-                                        .string(from: Date(
-                                            timeIntervalSince1970: onboardingData
-                                                .targetTimeValues[item.timeIndex]
-                                        ))
-                                )
-                                .frame(width: 80, alignment: .leading)
-                                .padding(.leading)
-
-                                // Ratio slider
-                                Slider(
-                                    value: Binding(
-                                        get: {
-                                            Double(
-                                                truncating: onboardingData
-                                                    .targetRateValues[item.rateIndex] as NSNumber
-                                            ) },
-                                        set: { newValue in
-                                            // Find closest match in rateValues array
-                                            let newIndex = onboardingData.targetRateValues
-                                                .firstIndex { abs(Double($0) - newValue) < 0.05 } ?? item.rateIndex
-                                            onboardingData.targetItems[index].rateIndex = newIndex
-                                            // Force refresh when slider changes
-                                            refreshUI = UUID()
-                                        }
-                                    ),
-                                    in: Double(truncating: onboardingData.targetRateValues.first! as NSNumber) ...
-                                        Double(truncating: onboardingData.targetRateValues.last! as NSNumber),
-                                    step: 0.5
-                                )
-                                .accentColor(.orange)
-                                .padding(.horizontal, 5)
-                                .onChange(of: onboardingData.targetItems[index].rateIndex) { _, _ in
-                                    let impact = UIImpactFeedbackGenerator(style: .light)
-                                    impact.impactOccurred()
-                                }
-
-                                // Display the current value
-                                Text(
-                                    "\(Formatters.decimalFormatterWithOneFractionDigit.string(from: onboardingData.targetRateValues[item.rateIndex] as NSNumber) ?? "--") g/U"
-                                )
-                                .frame(width: 80, alignment: .trailing)
-                                .lineLimit(1)
-                                .minimumScaleFactor(0.8)
-
-                                // Delete button (not for the first entry at 00:00)
-                                if index > 0 {
-                                    Button(action: {
-                                        onboardingData.targetItems.remove(at: index)
-                                    }) {
-                                        Image(systemName: "trash")
-                                            .foregroundColor(.red)
-                                            .padding(.horizontal, 5)
-                                    }
-                                } else {
-                                    // Spacer to maintain alignment
-                                    Spacer()
-                                        .frame(width: 30)
-                                }
-                            }
-                            .padding(.vertical, 12)
-                            .background(index % 2 == 0 ? Color.orange.opacity(0.05) : Color.clear)
-                            .cornerRadius(8)
-                        }
+//                        ForEach(Array(onboardingData.targetItems.enumerated()), id: \.element.id) { index, item in
+//                            HStack {
+//                                // Time display
+//                                Text(
+//                                    dateFormatter
+//                                        .string(from: Date(
+//                                            timeIntervalSince1970: onboardingData
+//                                                .targetTimeValues[item.lowIndex]
+//                                        ))
+//                                )
+//                                .frame(width: 80, alignment: .leading)
+//                                .padding(.leading)
+//
+//                                // Ratio slider
+//                                Slider(
+//                                    value: Binding(
+//                                        get: {
+//                                            Double(
+//                                                truncating: onboardingData
+//                                                    .targetRateValues[item.lowIndex] as NSNumber
+//                                            ) },
+//                                        set: { newValue in
+//                                            // Find closest match in rateValues array
+//                                            let newIndex = onboardingData.targetRateValues
+//                                                .firstIndex { abs(Double($0) - newValue) < 0.05 } ?? item.lowIndex
+//                                            onboardingData.targetItems[index].lowIndex = newIndex
+//                                            // Force refresh when slider changes
+//                                            refreshUI = UUID()
+//                                        }
+//                                    ),
+//                                    in: Double(truncating: onboardingData.targetRateValues.first! as NSNumber) ...
+//                                        Double(truncating: onboardingData.targetRateValues.last! as NSNumber),
+//                                    step: 0.5
+//                                )
+//                                .accentColor(.orange)
+//                                .padding(.horizontal, 5)
+//                                .onChange(of: onboardingData.targetItems[index].lowIndex) { _, _ in
+//                                    let impact = UIImpactFeedbackGenerator(style: .light)
+//                                    impact.impactOccurred()
+//                                }
+//
+//                                // Display the current value
+//                                Text(
+//                                    "\(Formatters.decimalFormatterWithOneFractionDigit.string(from: onboardingData.targetRateValues[item.lowIndex] as NSNumber) ?? "--") g/U"
+//                                )
+//                                .frame(width: 80, alignment: .trailing)
+//                                .lineLimit(1)
+//                                .minimumScaleFactor(0.8)
+//
+//                                // Delete button (not for the first entry at 00:00)
+//                                if index > 0 {
+//                                    Button(action: {
+//                                        onboardingData.targetItems.remove(at: index)
+//                                    }) {
+//                                        Image(systemName: "trash")
+//                                            .foregroundColor(.red)
+//                                            .padding(.horizontal, 5)
+//                                    }
+//                                } else {
+//                                    // Spacer to maintain alignment
+//                                    Spacer()
+//                                        .frame(width: 30)
+//                                }
+//                            }
+//                            .padding(.vertical, 12)
+//                            .background(index % 2 == 0 ? Color.orange.opacity(0.05) : Color.clear)
+//                            .cornerRadius(8)
+//                        }
                     }
                     .background(Color.orange.opacity(0.05))
                     .cornerRadius(10)
@@ -334,19 +334,19 @@ struct GlucoseTargetStepView: View {
             // Find available time slots in 1-hour increments
             for hour in 0 ..< 24 {
                 let hourInMinutes = hour * 60
-                // Calculate timeIndex for this hour
+                // Calculate lowIndex for this hour
                 let timeIndex = onboardingData.targetTimeValues.firstIndex { abs($0 - Double(hourInMinutes * 60)) < 10 } ?? 0
 
                 // Check if this hour is already in the profile
                 if !onboardingData.targetItems.contains(where: { $0.timeIndex == timeIndex }) {
                     buttons.append(.default(Text("\(String(format: "%02d:00", hour))")) {
                         // Get the current ratio from the last item
-                        let rateIndex = onboardingData.targetItems.last?.rateIndex ?? 0
+                        let lowIndex = onboardingData.targetItems.last?.lowIndex ?? 0
                         // Create new item with the specified time
-                        let newItem = TargetsEditor.Item(rateIndex: rateIndex, timeIndex: timeIndex)
+                        let newItem = TargetsEditor.Item(lowIndex: lowIndex, highIndex: lowIndex, timeIndex: timeIndex)
                         // Add the new item and sort the list
                         onboardingData.targetItems.append(newItem)
-                        onboardingData.targetItems.sort(by: { $0.timeIndex < $1.timeIndex })
+                        onboardingData.targetItems.sort(by: { $0.lowIndex < $1.lowIndex })
                     })
                 }
             }
@@ -364,22 +364,22 @@ struct GlucoseTargetStepView: View {
     // Computed property to check if we can add more carb ratios
     private var canAddRatio: Bool {
         guard let lastItem = onboardingData.targetItems.last else { return true }
-        return lastItem.timeIndex < onboardingData.targetTimeValues.count - 1
+        return lastItem.lowIndex < onboardingData.targetTimeValues.count - 1
     }
 
     // Chart for visualizing carb ratios
     private var glucoseTargetChart: some View {
         Chart {
             ForEach(Array(onboardingData.targetItems.enumerated()), id: \.element.id) { index, item in
-                let displayValue = onboardingData.targetRateValues[item.timeIndex]
+                let displayValue = onboardingData.targetRateValues[item.lowIndex]
 
                 let tzOffset = TimeZone.current.secondsFromGMT() * -1
-                let startDate = Date(timeIntervalSinceReferenceDate: onboardingData.targetTimeValues[item.timeIndex])
+                let startDate = Date(timeIntervalSinceReferenceDate: onboardingData.targetTimeValues[item.lowIndex])
                     .addingTimeInterval(TimeInterval(tzOffset))
                 let endDate = onboardingData.targetItems.count > index + 1 ?
                     Date(
                         timeIntervalSinceReferenceDate: onboardingData
-                            .targetTimeValues[onboardingData.targetItems[index + 1].timeIndex]
+                            .targetTimeValues[onboardingData.targetItems[index + 1].lowIndex]
                     )
                     .addingTimeInterval(TimeInterval(tzOffset)) :
                     Date(timeIntervalSinceReferenceDate: onboardingData.targetTimeValues.last!).addingTimeInterval(30 * 60)