fix: Fixes duct sizing rooms table not showing forms correctly, updates the table styles.

This commit is contained in:
2026-01-14 10:32:57 -05:00
parent 71848c607a
commit 450791b37e
8 changed files with 158 additions and 143 deletions

View File

@@ -5,58 +5,25 @@ import Styleguide
struct RectangularSizeForm: HTML, Sendable {
static func id(_ roomID: Room.ID? = nil) -> String {
let base = "rectangularSize"
guard let roomID else { return base }
return "\(base)_\(roomID.idString)"
}
static func id(_ room: DuctSizing.RoomContainer) -> String {
return id(room.roomID)
let base = "rectangularSize"
return "\(base)_\(room.registerID.idString)"
}
@Environment(ProjectViewValue.$projectID) var projectID
let id: String
let roomID: Room.ID
let rectangularSizeID: DuctSizing.RectangularDuct.ID?
let register: Int
let height: Int?
let room: DuctSizing.RoomContainer
let dismiss: Bool
init(
id: String? = nil,
roomID: Room.ID,
rectangularSizeID: DuctSizing.RectangularDuct.ID? = nil,
register: Int,
height: Int? = nil,
dismiss: Bool = true
) {
self.id = id ?? Self.id(roomID)
self.roomID = roomID
self.rectangularSizeID = rectangularSizeID
self.register = register
self.height = height
self.dismiss = dismiss
}
init(
id: String? = nil,
room: DuctSizing.RoomContainer,
dismiss: Bool = true
) {
let register =
room.rectangularSize?.register
?? (Int("\(room.roomName.last!)") ?? 1)
self.init(
id: id,
roomID: room.roomID,
rectangularSizeID: room.rectangularSize?.id,
register: register,
height: room.rectangularSize?.height,
dismiss: dismiss
)
self.id = Self.id(room)
self.room = room
self.dismiss = dismiss
}
var route: String {
@@ -64,23 +31,30 @@ struct RectangularSizeForm: HTML, Sendable {
for: .project(.detail(projectID, .ductSizing(.index)))
)
.appendingPath("room")
.appendingPath(roomID)
.appendingPath(room.roomID)
}
var rowID: String {
DuctSizingView.RoomRow.id(room)
}
var height: Int? {
room.rectangularSize?.height
}
var body: some HTML<HTMLTag.dialog> {
ModalForm(id: id, dismiss: dismiss) {
h1(.class("text-lg pb-6")) { "Rectangular Size" }
form(
.class("space-y-4"),
.hx.post(route),
.hx.target("closest tr"),
.hx.target("#\(rowID)"),
.hx.swap(.outerHTML)
) {
input(.class("hidden"), .name("register"), .value(register))
input(.class("hidden"), .name("id"), .value(rectangularSizeID))
input(.class("hidden"), .name("register"), .value(room.roomRegister))
input(.class("hidden"), .name("id"), .value(room.rectangularSize?.id))
LabeledInput(
"Height",