WIP: Begins friction rate views.

This commit is contained in:
2025-12-31 17:07:57 -05:00
parent 34bba7bdfc
commit 591875cf13
5 changed files with 93 additions and 1 deletions

View File

@@ -9,6 +9,8 @@ extension ViewController.Request {
return try await route.renderView(isHtmxRequest: isHtmxRequest)
case .room(let route):
return try await route.renderView(isHtmxRequest: isHtmxRequest)
case .frictionRate(let route):
return try await route.renderView(isHtmxRequest: isHtmxRequest)
default:
// FIX: FIX
return mainPage
@@ -49,6 +51,22 @@ extension SiteRoute.View.RoomRoute {
}
}
extension SiteRoute.View.FrictionRateRoute {
func renderView(isHtmxRequest: Bool) async throws -> AnySendableHTML {
switch self {
case .index:
return MainPage {
FrictionRateView()
}
// FIX:
default:
return MainPage {
FrictionRateView()
}
}
}
}
private let mainPage: AnySendableHTML = {
MainPage {
div {

View File

@@ -0,0 +1,35 @@
import Elementary
import ManualDCore
import Styleguide
struct EquipmentForm: HTML, Sendable {
var body: some HTML {
div(.id("equipmentForm")) {
h1(.class("text-3xl font-bold pb-6")) { "Equipment Info" }
form {
div {
label(.for("staticPressure")) { "Static Pressure" }
Input(id: "staticPressure", placeholder: "Static pressure")
.attributes(.type(.number), .value("0.5"), .min("0"), .max("1.0"), .step("0.1"))
}
div {
label(.for("heatingCFM")) { "Heating CFM" }
Input(id: "heatingCFM", placeholder: "CFM")
.attributes(.type(.number), .min("0"))
}
div {
label(.for("coolingCFM")) { "Cooling CFM" }
Input(id: "coolingCFM", placeholder: "CFM")
.attributes(.type(.number), .min("0"))
}
Row {
div {}
div(.class("space-x-4")) {
SubmitButton(title: "Save")
}
}
}
}
}
}

View File

@@ -0,0 +1,12 @@
import Elementary
import ManualDCore
import Styleguide
struct FrictionRateView: HTML, Sendable {
var body: some HTML {
div {
EquipmentForm()
}
}
}

View File

@@ -15,7 +15,7 @@ struct Sidebar: HTML {
row(title: "Project", icon: .mapPin, href: "/projects")
row(title: "Rooms", icon: .doorClosed, href: "/rooms")
row(title: "Equivalent Lengths", icon: .rulerDimensionLine, href: "#")
row(title: "Friction Rate", icon: .squareFunction, href: "#")
row(title: "Friction Rate", icon: .squareFunction, href: "/friction-rate")
row(title: "Duct Sizes", icon: .wind, href: "#")
}
}