feat: Adding improvements to pressure estimations feature.

This commit is contained in:
2024-06-12 10:29:33 -04:00
parent da8a8638c7
commit 9a145b3290
7 changed files with 239 additions and 89 deletions

View File

@@ -9,7 +9,7 @@ public struct SharedPressureEstimationState: Equatable, Sendable {
public var equipmentMeasurement: EquipmentMeasurement?
public var equipmentMetadata: EquipmentMetadata
public var flaggedEquipmentMeasurement: EquipmentMeasurement.FlaggedMeasurement?
public var flaggedEstimations: IdentifiedArrayOf<FlaggedMeasurementContainer>
public var flaggedEstimations: IdentifiedArrayOf<FlaggedEstimationContainer>
public var heatingCapacity: Double?
public var manufacturersIncludedFilterPressureDrop: Double?
@@ -18,7 +18,7 @@ public struct SharedPressureEstimationState: Equatable, Sendable {
equipmentMeasurement: EquipmentMeasurement? = nil,
equipmentMetadata: EquipmentMetadata = .init(),
flaggedEquipmentMeasurement: EquipmentMeasurement.FlaggedMeasurement? = nil,
flaggedEstimations: IdentifiedArrayOf<FlaggedMeasurementContainer> = [],
flaggedEstimations: IdentifiedArrayOf<FlaggedEstimationContainer> = [],
heatingCapacity: Double? = nil,
manufacturersIncludedFilterPressureDrop: Double? = nil
) {
@@ -36,7 +36,8 @@ public struct SharedPressureEstimationState: Equatable, Sendable {
set { equipmentMetadata[keyPath: keyPath] = newValue }
}
public struct FlaggedMeasurementContainer: Equatable, Identifiable, Sendable {
#warning("Needs to hold onto estimation state, so it can be editable")
public struct FlaggedEstimationContainer: Equatable, Identifiable, Sendable {
public let id: UUID
public var flaggedMeasurement: EquipmentMeasurement.FlaggedMeasurement
public var name: String
@@ -50,6 +51,44 @@ public struct SharedPressureEstimationState: Equatable, Sendable {
self.name = name
self.flaggedMeasurement = flaggedMeasurement
}
public struct EstimationState: Equatable, Sendable {
public var cfm: CFMContainer
public var filterPressureDrop: Double?
public var name: String?
public init(
cfm: CFMContainer,
filterPressureDrop: Double? = nil,
name: String? = nil
) {
self.cfm = cfm
self.filterPressureDrop = filterPressureDrop
self.name = name
}
var displayName: String {
guard let name else {
return "@\(Int(cfm.airflow)) CFM"
}
return name
}
public enum CFMContainer: Equatable, Sendable {
case cfm(Int)
case cfmPerTon(Int, EquipmentMetadata.CoolingCapacity)
var airflow: Double {
switch self {
case let .cfm(cfm):
return Double(cfm)
case let .cfmPerTon(cfmPerTon, capacity):
return Double(cfmPerTon) * capacity.rawValue
}
}
}
}
}
}