feat: Working on ignoring flagged measurements that are zero for optional values.

This commit is contained in:
2024-06-10 16:29:33 -04:00
parent a6bfbd6877
commit 3bfcc8a0b2
6 changed files with 75 additions and 32 deletions

View File

@@ -6,15 +6,21 @@ public struct FlaggedEquipmentMeasurementView: View {
@Environment(\.flaggedEquipmentMeasurementStyle) private var style
let measurement: EquipmentMeasurement.FlaggedMeasurement
let ignoreIfZero: [EquipmentMeasurement.FlaggedMeasurement.FieldKey]
public init(_ measurement: EquipmentMeasurement.FlaggedMeasurement) {
public init(
_ measurement: EquipmentMeasurement.FlaggedMeasurement,
ignoreIfZero: [EquipmentMeasurement.FlaggedMeasurement.FieldKey] = []
) {
self.measurement = measurement
self.ignoreIfZero = ignoreIfZero
}
public var body: some View {
style.makeBody(
configuration: FlaggedEquipmentMeasurementStyleConfiguration(
measurement: measurement
measurement: measurement,
ignoreIfZero: ignoreIfZero
)
)
}
@@ -30,6 +36,7 @@ public protocol FlaggedEquipmentMeasurementStyle {
public struct FlaggedEquipmentMeasurementStyleConfiguration {
public let measurement: EquipmentMeasurement.FlaggedMeasurement
public let ignoreIfZero: [EquipmentMeasurement.FlaggedMeasurement.FieldKey]
}
public struct AnyFlaggedEquipmentMeasurementStyle: FlaggedEquipmentMeasurementStyle {
@@ -54,12 +61,18 @@ public struct GridFlaggedEquipmentMeasurementStyle: FlaggedEquipmentMeasurementS
public func makeBody(configuration: Configuration) -> some View {
Grid(alignment: .leading, verticalSpacing: 20) {
ForEach(EquipmentMeasurement.FlaggedMeasurement.Key.allCases) { field in
FlaggedView(
field.title,
flagged: configuration.measurement[keyPath: field.flaggedKeyPath]
)
.flaggedViewStyle(.gridRow(fractionLength: field == .airflow ? 0 : 2))
ForEach(EquipmentMeasurement.FlaggedMeasurement.FieldKey.allCases) { field in
if configuration.measurement[keyPath: field.flaggedKeyPath].wrappedValue == 0,
configuration.ignoreIfZero.contains(field)
{
EmptyView()
} else {
FlaggedView(
field.title,
flagged: configuration.measurement[keyPath: field.flaggedKeyPath]
)
.flaggedViewStyle(.gridRow(fractionLength: field == .airflow ? 0 : 2))
}
}
}
}
@@ -92,10 +105,10 @@ extension View {
}
}
// MARK: - Key
fileprivate extension EquipmentMeasurement.FlaggedMeasurement {
// MARK: - FieldKey
extension EquipmentMeasurement.FlaggedMeasurement {
// NOTE: These need to be kept in display order.
enum Key: Hashable, CaseIterable, Identifiable {
public enum FieldKey: Hashable, CaseIterable, Identifiable {
case returnPlenum
case filterDrop
case coilDrop
@@ -103,7 +116,7 @@ fileprivate extension EquipmentMeasurement.FlaggedMeasurement {
case staticPressure
case airflow
var id: Self { self }
public var id: Self { self }
var title: String {
switch self {