Просмотр исходного кода

Override UI improvements

* Moved `Name` TextField into the same section as the other settings
* Fixed Typos (`Override Override Target` and `inversly`
* Fixed vertical divider for Override Preset labels to not get added to the beginning of the first label displayed.
Mike Plante 1 год назад
Родитель
Сommit
d3606eaa75

+ 6 - 6
FreeAPS/Sources/Modules/OverrideConfig/View/AddOverrideForm.swift

@@ -73,13 +73,13 @@ struct AddOverrideForm: View {
     @ViewBuilder private func addOverride() -> some View {
         Section {
             VStack {
-                TextField("Name", text: $state.overrideName)
+                HStack {
+                    Text("Name")
+                    Spacer()
+                    TextField("(Optional)", text: $state.overrideName).multilineTextAlignment(.trailing)
+                }
             }
-        } header: {
-            Text("Name")
-        }.listRowBackground(Color.chart)
 
-        Section {
             VStack {
                 HStack {
                     Spacer()
@@ -360,7 +360,7 @@ struct AddOverrideForm: View {
         header: { Text("Add custom Override") }
         footer: {
             Text(
-                "Your profile ISF and CR will be inversly adjusted with the override percentage."
+                "Your profile ISF and CR will be inversely adjusted with the override percentage."
             )
         }.listRowBackground(Color.chart)
     }

+ 11 - 10
FreeAPS/Sources/Modules/OverrideConfig/View/EditOverrideForm.swift

@@ -121,17 +121,18 @@ struct EditOverrideForm: View {
     }
 
     @ViewBuilder private func editOverride() -> some View {
-        if override.name != nil {
-            Section {
+        Section {
+            if override.name != nil {
                 VStack {
-                    TextField("Name", text: $name)
-                        .onChange(of: name) { _ in hasChanges = true }
+                    HStack {
+                        Text("Name")
+                        Spacer()
+                        TextField("Name", text: $name)
+                            .onChange(of: name) { _ in hasChanges = true }
+                            .multilineTextAlignment(.trailing)
+                    }
                 }
-            } header: {
-                Text("Name")
-            }.listRowBackground(Color.chart)
-        }
-        Section {
+            }
             VStack {
                 HStack {
                     Spacer()
@@ -259,7 +260,7 @@ struct EditOverrideForm: View {
 
             VStack {
                 Toggle(isOn: $target_override) {
-                    Text("Override Override Target")
+                    Text("Override Target")
                 }.onChange(of: target_override) { _ in
                     hasChanges = true
                 }

+ 17 - 29
FreeAPS/Sources/Modules/OverrideConfig/View/OverrideRootView.swift

@@ -497,7 +497,7 @@ extension OverrideConfig {
             let target = (state.units == .mgdL ? preset.target : preset.target?.decimalValue.asMmolL as NSDecimalNumber?) ?? 0
 
             let duration = (preset.duration ?? 0) as Decimal
-            let name = ((preset.name ?? "") == "") || (preset.name?.isEmpty ?? true) ? "" : preset.name!
+            let name = preset.name ?? ""
             let percent = preset.percentage / 100
             let perpetual = preset.indefinite
             let durationString = perpetual ? "" : "\(formatHrMin(Int(duration)))"
@@ -515,8 +515,17 @@ extension OverrideConfig {
             let isfAndCRstring = (preset.isf == preset.cr) ? "" : (preset.isf ? " ISF" : " CR")
             let isSelected = preset.id == selectedPresetID
 
-            if name != "" {
-                ZStack(alignment: .trailing, content: {
+            let labels: [String] = [
+                durationString,
+                percent != 1 ? "\(Int(percent * 100))%\(isfAndCRstring)" : "",
+                targetString,
+                smbString,
+                maxSmbMinsString,
+                maxUamMinsString
+            ].filter { !$0.isEmpty } // filter out empty labels
+
+            if !name.isEmpty {
+                ZStack(alignment: .trailing) {
                     HStack {
                         VStack {
                             HStack {
@@ -524,32 +533,11 @@ extension OverrideConfig {
                                 Spacer()
                             }
                             HStack(spacing: 5) {
-                                if durationString != "" {
-                                    Text(durationString)
-                                }
-                                if percent != 1 {
-                                    if durationString != "" {
+                                ForEach(labels, id: \.self) { label in
+                                    Text(label)
+                                    if label != labels.last { // Add divider between labels
                                         overrideLabelDivider
                                     }
-                                    Text(
-                                        "\(Int(percent * 100))%\(isfAndCRstring)"
-                                    )
-                                }
-                                if targetString != "" {
-                                    overrideLabelDivider
-                                    Text(targetString)
-                                }
-                                if smbString != "" {
-                                    overrideLabelDivider
-                                    Text(smbString).foregroundColor(.secondary).font(.caption)
-                                }
-                                if maxSmbMinsString != "" {
-                                    overrideLabelDivider
-                                    Text(maxSmbMinsString)
-                                }
-                                if maxUamMinsString != "" {
-                                    overrideLabelDivider
-                                    Text(maxUamMinsString)
                                 }
                                 Spacer()
                             }
@@ -566,7 +554,7 @@ extension OverrideConfig {
                                 showCheckmark.toggle()
                                 selectedPresetID = preset.id
 
-                                // deactivate showCheckmark after 3 seconds
+                                // Deactivate checkmark after 3 seconds
                                 DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
                                     showCheckmark = false
                                 }
@@ -584,7 +572,7 @@ extension OverrideConfig {
                             .imageScale(.medium)
                             .foregroundStyle(.secondary)
                     }
-                })
+                }
             }
         }
     }