feat: Working on ignoring flagged measurements that are zero for optional values.
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user