feat: Refactoring climate zone.
This commit is contained in:
@@ -1,4 +1,8 @@
|
|||||||
public enum ClimateZone: String, CaseIterable, Codable, Equatable, Sendable {
|
// TODO: This should be renamed to ClimateZoneType.
|
||||||
|
|
||||||
|
public enum ClimateZone {
|
||||||
|
|
||||||
|
public enum ZoneType: String, CaseIterable, Codable, Equatable, Sendable {
|
||||||
// NOTE: Keep in this order.
|
// NOTE: Keep in this order.
|
||||||
|
|
||||||
case hotHumid
|
case hotHumid
|
||||||
@@ -6,6 +10,7 @@ public enum ClimateZone: String, CaseIterable, Codable, Equatable, Sendable {
|
|||||||
case dry
|
case dry
|
||||||
case marine
|
case marine
|
||||||
|
|
||||||
|
// FIX: Return ZoneIdentifiers.
|
||||||
public var zoneIdentifiers: [String] {
|
public var zoneIdentifiers: [String] {
|
||||||
switch self {
|
switch self {
|
||||||
case .dry:
|
case .dry:
|
||||||
@@ -30,4 +35,33 @@ public enum ClimateZone: String, CaseIterable, Codable, Equatable, Sendable {
|
|||||||
public var label: String {
|
public var label: String {
|
||||||
return "\(self == .hotHumid ? "Hot Humid" : rawValue.capitalized) (\(zoneIdentifiers.joined(separator: ", ")))"
|
return "\(self == .hotHumid ? "Hot Humid" : rawValue.capitalized) (\(zoneIdentifiers.joined(separator: ", ")))"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Represents climate zone identifiers.
|
||||||
|
public enum ZoneIdentifier: String, CaseIterable, Codable, Equatable, Sendable {
|
||||||
|
// A zones (hotHumid)
|
||||||
|
case oneA = "1A"
|
||||||
|
case twoA = "2A"
|
||||||
|
// A zones (moist)
|
||||||
|
case threeA = "3A"
|
||||||
|
case fourA = "4A"
|
||||||
|
case fiveA = "5A"
|
||||||
|
case sixA = "6A"
|
||||||
|
case sevenA = "7A"
|
||||||
|
|
||||||
|
// B zones (dry)
|
||||||
|
case twoB = "2B"
|
||||||
|
case threeB = "3B"
|
||||||
|
case fourB = "4B"
|
||||||
|
case fiveB = "5B"
|
||||||
|
case sixB = "6B"
|
||||||
|
case sevenB = "7B"
|
||||||
|
|
||||||
|
// C zones (marine)
|
||||||
|
case threeC = "3C"
|
||||||
|
case fourC = "4C"
|
||||||
|
|
||||||
|
public var label: String { rawValue }
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,14 +16,14 @@ public enum FilterPressureDrop {
|
|||||||
public struct Basic: Codable, Equatable, Sendable {
|
public struct Basic: Codable, Equatable, Sendable {
|
||||||
|
|
||||||
public let systemSize: Double
|
public let systemSize: Double
|
||||||
public let climateZone: ClimateZone
|
public let climateZone: ClimateZone.ZoneType
|
||||||
public let filterType: FilterType
|
public let filterType: FilterType
|
||||||
public let filterWidth: Double
|
public let filterWidth: Double
|
||||||
public let filterHeight: Double
|
public let filterHeight: Double
|
||||||
|
|
||||||
public init(
|
public init(
|
||||||
systemSize: Double,
|
systemSize: Double,
|
||||||
climateZone: ClimateZone,
|
climateZone: ClimateZone.ZoneType,
|
||||||
filterType: FilterPressureDrop.FilterType,
|
filterType: FilterPressureDrop.FilterType,
|
||||||
filterWidth: Double,
|
filterWidth: Double,
|
||||||
filterHeight: Double
|
filterHeight: Double
|
||||||
|
|||||||
@@ -255,7 +255,7 @@ public extension SiteRoute {
|
|||||||
OneOf {
|
OneOf {
|
||||||
FormData {
|
FormData {
|
||||||
Field("systemSize") { Double.parser() }
|
Field("systemSize") { Double.parser() }
|
||||||
Field("climateZone") { ClimateZone.parser() }
|
Field("climateZone") { ClimateZone.ZoneType.parser() }
|
||||||
Field("filterType") { Routes.FilterPressureDrop.FilterType.parser() }
|
Field("filterType") { Routes.FilterPressureDrop.FilterType.parser() }
|
||||||
Field("filterWidth") { Double.parser() }
|
Field("filterWidth") { Double.parser() }
|
||||||
Field("filterHeight") { Double.parser() }
|
Field("filterHeight") { Double.parser() }
|
||||||
|
|||||||
@@ -11,6 +11,14 @@ struct MainPage<Inner: HTML>: SendableHTMLDocument where Inner: Sendable {
|
|||||||
var head: some HTML {
|
var head: some HTML {
|
||||||
meta(.charset(.utf8))
|
meta(.charset(.utf8))
|
||||||
meta(.name("viewport"), .content("width=device-width, initial-scale=1.0"))
|
meta(.name("viewport"), .content("width=device-width, initial-scale=1.0"))
|
||||||
|
meta(.name("author"), .content("Michael Housh and Dustin Cole"))
|
||||||
|
meta(.name("og:site-name"), .content("HVAC-Toolbox"))
|
||||||
|
meta(.name("apple-mobile-web-app-title"), .content("HVAC-Toolbox"))
|
||||||
|
meta(.name("format-detection"), .content("telephone=no"))
|
||||||
|
meta(.name("HandheldFriendly"), .content("True"))
|
||||||
|
meta(.name("MobileOptimized"), .content("320"))
|
||||||
|
meta(.name("keywords"), .content("hvac, HVAC, design, system-design, calculators"))
|
||||||
|
Elementary.title { self.title }
|
||||||
link(.rel(.stylesheet), .href("/output.css"))
|
link(.rel(.stylesheet), .href("/output.css"))
|
||||||
link(
|
link(
|
||||||
.rel(.icon),
|
.rel(.icon),
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ struct FilterPressureDropForm: HTML, Sendable {
|
|||||||
}
|
}
|
||||||
div {
|
div {
|
||||||
InputLabel(for: "climateZone") { "Climate Zone" }
|
InputLabel(for: "climateZone") { "Climate Zone" }
|
||||||
Select(for: ClimateZone.self, id: "climateZone") {
|
Select(for: ClimateZone.ZoneType.self, id: "climateZone") {
|
||||||
$0.label
|
$0.label
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
3
justfile
3
justfile
@@ -21,4 +21,5 @@ clean:
|
|||||||
push-image:
|
push-image:
|
||||||
@docker push {{docker_registiry}}/{{docker_image}}:{{docker_tag}}
|
@docker push {{docker_registiry}}/{{docker_image}}:{{docker_tag}}
|
||||||
|
|
||||||
build-and-push: (build-docker "linux/amd64") push-image
|
build-docker-production:
|
||||||
|
@docker build --platform "linux/amd64" -t {{docker_registiry}}/{{docker_image}}:{{docker_tag}} .
|
||||||
|
|||||||
Reference in New Issue
Block a user