feat: Adds quick calculation views, need to add buttons / links in navbar / home page.

This commit is contained in:
2026-02-09 15:34:28 -05:00
parent 88af6f722e
commit 007d13be2f
23 changed files with 584 additions and 490 deletions

View File

@@ -3,6 +3,7 @@ import DatabaseClient
import Dependencies
import Elementary
import Foundation
import ManualDClient
import ManualDCore
import PdfClient
import ProjectClient
@@ -38,7 +39,9 @@ extension ViewController.Request {
// }
// }
// return try! await pdfClient.html(.mock())
return EmptyHTML()
return await view {
TestPage()
}
case .login(let route):
switch route {
case .index(let next):
@@ -93,6 +96,9 @@ extension ViewController.Request {
case .project(let route):
return await route.renderView(on: self)
case .quickCalc(let route):
return await route.renderView(on: self)
case .user(let route):
return await route.renderView(on: self)
}
@@ -705,3 +711,33 @@ extension SiteRoute.View.UserRoute.Profile {
}
}
}
extension SiteRoute.View.QuickCalcRoute {
func renderView(
on request: ViewController.Request
) async -> AnySendableHTML {
@Dependency(\.manualD) var manualD
switch self {
case .index:
return await request.view {
QuickCalcView(
isLoggedIn: request.isLoggedIn
)
}
case .submit(let form):
return await ResultView {
let ductSize = try await manualD.ductSize(cfm: form.cfm, frictionRate: form.frictionRate)
var rectangularSize: ManualDClient.RectangularSize? = nil
if let height = form.height {
rectangularSize = try await manualD.rectangularSize(
round: ductSize.finalSize, height: height)
}
return (ductSize, rectangularSize)
} onSuccess: { (ductSize, rectangularSize) in
QuickCalcView.Result(ductSize: ductSize, rectangularSize: rectangularSize)
}
}
}
}