feat: Reorganizes / creates duct sizes container, uses it in views and projectClient.

This commit is contained in:
2026-01-16 11:40:21 -05:00
parent 146baa7815
commit 13c4bb33b5
11 changed files with 90 additions and 91 deletions

View File

@@ -7,8 +7,7 @@ struct DuctSizingView: HTML, Sendable {
@Environment(ProjectViewValue.$projectID) var projectID
let rooms: [DuctSizing.RoomContainer]
let trunks: [DuctSizing.TrunkContainer]
let ductSizes: DuctSizes
var body: some HTML {
div(.class("space-y-4")) {
@@ -21,13 +20,13 @@ struct DuctSizingView: HTML, Sendable {
Must complete all the previous sections to display duct sizing calculations.
"""
)
.hidden(when: rooms.count > 0)
.hidden(when: ductSizes.rooms.count > 0)
.attributes(.class("text-error font-bold italic mt-4"))
}
}
if rooms.count != 0 {
RoomsTable(rooms: rooms)
if ductSizes.rooms.count != 0 {
RoomsTable(rooms: ductSizes.rooms)
PageTitleRow {
PageTitle {
@@ -42,13 +41,13 @@ struct DuctSizingView: HTML, Sendable {
.tooltip("Add trunk / runout")
}
if trunks.count > 0 {
TrunkTable(trunks: trunks, rooms: rooms)
if ductSizes.trunks.count > 0 {
TrunkTable(ductSizes: ductSizes)
}
}
TrunkSizeForm(rooms: rooms, dismiss: true)
TrunkSizeForm(rooms: ductSizes.rooms, dismiss: true)
}
}

View File

@@ -5,7 +5,7 @@ import Styleguide
struct RectangularSizeForm: HTML, Sendable {
static func id(_ room: DuctSizing.RoomContainer) -> String {
static func id(_ room: DuctSizes.RoomContainer) -> String {
let base = "rectangularSize"
return "\(base)_\(room.roomName.idString)"
}
@@ -13,12 +13,12 @@ struct RectangularSizeForm: HTML, Sendable {
@Environment(ProjectViewValue.$projectID) var projectID
let id: String
let room: DuctSizing.RoomContainer
let room: DuctSizes.RoomContainer
let dismiss: Bool
init(
id: String? = nil,
room: DuctSizing.RoomContainer,
room: DuctSizes.RoomContainer,
dismiss: Bool = true
) {
self.id = Self.id(room)

View File

@@ -9,7 +9,7 @@ extension DuctSizingView {
struct RoomsTable: HTML, Sendable {
@Environment(ProjectViewValue.$projectID) var projectID
let rooms: [DuctSizing.RoomContainer]
let rooms: [DuctSizes.RoomContainer]
var body: some HTML<HTMLTag.table> {
@@ -34,13 +34,13 @@ extension DuctSizingView {
struct RoomRow: HTML, Sendable {
static func id(_ room: DuctSizing.RoomContainer) -> String {
static func id(_ room: DuctSizes.RoomContainer) -> String {
"roomRow_\(room.roomName.idString)"
}
@Environment(ProjectViewValue.$projectID) var projectID
let room: DuctSizing.RoomContainer
let room: DuctSizes.RoomContainer
let formID = UUID().idString
var deleteRoute: String {

View File

@@ -5,7 +5,7 @@ import Styleguide
struct TrunkSizeForm: HTML, Sendable {
static func id(_ trunk: DuctSizing.TrunkContainer? = nil) -> String {
static func id(_ trunk: DuctSizes.TrunkContainer? = nil) -> String {
let base = "trunkSizeForm"
guard let trunk else { return base }
return "\(base)_\(trunk.id.idString)"
@@ -13,8 +13,8 @@ struct TrunkSizeForm: HTML, Sendable {
@Environment(ProjectViewValue.$projectID) var projectID
let container: DuctSizing.TrunkContainer?
let rooms: [DuctSizing.RoomContainer]
let container: DuctSizes.TrunkContainer?
let rooms: [DuctSizes.RoomContainer]
let dismiss: Bool
var trunk: TrunkSize? {
@@ -22,8 +22,8 @@ struct TrunkSizeForm: HTML, Sendable {
}
init(
trunk: DuctSizing.TrunkContainer? = nil,
rooms: [DuctSizing.RoomContainer],
trunk: DuctSizes.TrunkContainer? = nil,
rooms: [DuctSizes.RoomContainer],
dismiss: Bool = true
) {
self.container = trunk
@@ -122,7 +122,7 @@ struct TrunkSizeForm: HTML, Sendable {
}
extension Array where Element == TrunkSize.RoomProxy {
func hasRoom(_ room: DuctSizing.RoomContainer) -> Bool {
func hasRoom(_ room: DuctSizes.RoomContainer) -> Bool {
first {
$0.id == room.roomID
&& $0.registers.contains(room.roomRegister)

View File

@@ -7,11 +7,10 @@ extension DuctSizingView {
struct TrunkTable: HTML, Sendable {
let trunks: [DuctSizing.TrunkContainer]
let rooms: [DuctSizing.RoomContainer]
let ductSizes: DuctSizes
private var sortedTrunks: [DuctSizing.TrunkContainer] {
trunks
private var sortedTrunks: [DuctSizes.TrunkContainer] {
ductSizes.trunks
.sorted(by: { $0.designCFM.value > $1.designCFM.value })
.sorted(by: { $0.type.rawValue > $1.type.rawValue })
}
@@ -29,7 +28,7 @@ extension DuctSizingView {
}
tbody {
for trunk in sortedTrunks {
TrunkRow(trunk: trunk, rooms: rooms)
TrunkRow(trunk: trunk, rooms: ductSizes.rooms)
}
}
}
@@ -41,8 +40,8 @@ extension DuctSizingView {
@Environment(ProjectViewValue.$projectID) var projectID
let trunk: DuctSizing.TrunkContainer
let rooms: [DuctSizing.RoomContainer]
let trunk: DuctSizes.TrunkContainer
let rooms: [DuctSizes.RoomContainer]
var body: some HTML<HTMLTag.tr> {
tr {