diff --git a/Sources/ManualDCore/Routes/ViewRoute.swift b/Sources/ManualDCore/Routes/ViewRoute.swift index c5d489c..06713e1 100644 --- a/Sources/ManualDCore/Routes/ViewRoute.swift +++ b/Sources/ManualDCore/Routes/ViewRoute.swift @@ -37,7 +37,6 @@ extension SiteRoute.View { case create(Project.Create) case delete(id: Project.ID) case detail(Project.ID, DetailRoute) - case form(id: Project.ID? = nil, dismiss: Bool = false) case index case page(PageRequest) case update(Project.ID, Project.Update) @@ -82,19 +81,6 @@ extension SiteRoute.View { } DetailRoute.router } - Route(.case(Self.form)) { - Path { - rootPath - "create" - } - Method.get - Query { - Optionally { - Field("id", default: nil) { Project.ID.parser() } - } - Field("dismiss", default: false) { Bool.parser() } - } - } Route(.case(Self.index)) { Path { rootPath } Method.get @@ -150,7 +136,7 @@ extension SiteRoute.View { extension SiteRoute.View.ProjectRoute { public enum DetailRoute: Equatable, Sendable { - case index(tab: Tab = .default) + case index case componentLoss(ComponentLossRoute) case ductSizing(DuctSizingRoute) case equipment(EquipmentInfoRoute) @@ -161,11 +147,6 @@ extension SiteRoute.View.ProjectRoute { static let router = OneOf { Route(.case(Self.index)) { Method.get - Query { - Field("tab", default: Tab.default) { - Tab.parser() - } - } } Route(.case(Self.componentLoss)) { ComponentLossRoute.router @@ -194,14 +175,11 @@ extension SiteRoute.View.ProjectRoute { case equivalentLength case frictionRate case ductSizing - - public static var `default`: Self { .rooms } } } public enum RoomRoute: Equatable, Sendable { case delete(id: Room.ID) - case form(id: Room.ID? = nil, dismiss: Bool = false) case index case submit(Room.Create) case update(Room.ID, Room.Update) @@ -217,19 +195,6 @@ extension SiteRoute.View.ProjectRoute { } Method.delete } - Route(.case(Self.form)) { - Path { - rootPath - "create" - } - Method.get - Query { - Optionally { - Field("id", default: nil) { Room.ID.parser() } - } - Field("dismiss", default: false) { Bool.parser() } - } - } Route(.case(Self.index)) { Path { rootPath @@ -359,8 +324,6 @@ extension SiteRoute.View.ProjectRoute { public enum FrictionRateRoute: Equatable, Sendable { case index - // TODO: Remove form or move equipment / component losses routes here. - case form(FormType, dismiss: Bool = false) static let rootPath = "friction-rate" @@ -369,28 +332,11 @@ extension SiteRoute.View.ProjectRoute { Path { rootPath } Method.get } - Route(.case(Self.form)) { - Path { - rootPath - "create" - } - Method.get - Query { - Field("type") { FormType.parser() } - Field("dismiss", default: false) { Bool.parser() } - } - } - } - - public enum FormType: String, CaseIterable, Codable, Equatable, Sendable { - case equipmentInfo - case componentPressureLoss } } public enum EquipmentInfoRoute: Equatable, Sendable { case index - case form(dismiss: Bool) case submit(EquipmentInfo.Create) case update(EquipmentInfo.ID, EquipmentInfo.Update) @@ -401,16 +347,6 @@ extension SiteRoute.View.ProjectRoute { Path { rootPath } Method.get } - Route(.case(Self.form)) { - Path { - rootPath - "create" - } - Method.get - Query { - Field("dismiss", default: true) { Bool.parser() } - } - } Route(.case(Self.submit)) { Path { rootPath } Method.post @@ -451,7 +387,6 @@ extension SiteRoute.View.ProjectRoute { public enum EquivalentLengthRoute: Equatable, Sendable { case delete(id: EffectiveLength.ID) case field(FieldType, style: EffectiveLength.EffectiveLengthType? = nil) - case form(dismiss: Bool = false) case index case submit(FormStep) case update(EffectiveLength.ID, StepThree) @@ -470,16 +405,6 @@ extension SiteRoute.View.ProjectRoute { Path { rootPath } Method.get } - Route(.case(Self.form(dismiss:))) { - Path { - rootPath - "create" - } - Method.get - Query { - Field("dismiss", default: false) { Bool.parser() } - } - } Route(.case(Self.field)) { Path { rootPath diff --git a/Sources/ViewController/Live.swift b/Sources/ViewController/Live.swift index 22c29e6..f7cf34a 100644 --- a/Sources/ViewController/Live.swift +++ b/Sources/ViewController/Live.swift @@ -118,17 +118,6 @@ extension SiteRoute.View.ProjectRoute { ProjectsTable(userID: userID, projects: projects) } - case .form(let id, let dismiss): - return await ResultView { - var project: Project? = nil - if let id, dismiss == false { - project = try await database.projects.get(id) - } - return project - } onSuccess: { project in - ProjectForm(dismiss: dismiss, project: project) - } - case .create(let form): return await ResultView { let user = try request.currentUser() @@ -151,8 +140,6 @@ extension SiteRoute.View.ProjectRoute { case .delete(let id): return await ResultView { try await database.projects.delete(id) - } onSuccess: { - EmptyHTML() } case .update(let id, let form): @@ -162,8 +149,7 @@ extension SiteRoute.View.ProjectRoute { case .detail(let projectID, let route): switch route { - case .index(let tab): - // FIX: Handle tab + case .index: return await projectView(on: request, projectID: projectID) case .componentLoss(let route): return await route.renderView(on: request, projectID: projectID) @@ -220,14 +206,6 @@ extension SiteRoute.View.ProjectRoute.EquipmentInfoRoute { case .index: return await equipmentView(on: request, projectID: projectID) - // TODO: Remove form route, not needed. - case .form(let dismiss): - return await ResultView { - try await database.equipment.fetch(projectID) - } onSuccess: { equipment in - EquipmentInfoForm(dismiss: dismiss, projectID: projectID, equipmentInfo: equipment) - } - case .submit(let form): return await ResultView { try await database.equipment.create(form) @@ -279,17 +257,6 @@ extension SiteRoute.View.ProjectRoute.RoomRoute { try await database.rooms.delete(id) } - case .form(let id, let dismiss): - return await ResultView { - var room: Room? = nil - if let id, dismiss == false { - room = try await database.rooms.get(id) - } - return room - } onSuccess: { room in - RoomForm(dismiss: dismiss, projectID: projectID, room: room) - } - case .index: return await roomsView(on: request, projectID: projectID) @@ -349,16 +316,6 @@ extension SiteRoute.View.ProjectRoute.FrictionRateRoute { switch self { case .index: return await view(on: request, projectID: projectID) - - case .form(let type, let dismiss): - // FIX: Forms need to reference existing items. - switch type { - case .equipmentInfo: - return div { "REMOVE ME!" } - // return EquipmentForm(dismiss: dismiss, projectID: projectID) - case .componentPressureLoss: - return ComponentLossForm(dismiss: dismiss, projectID: projectID, componentLoss: nil) - } } } @@ -471,17 +428,6 @@ extension SiteRoute.View.ProjectRoute.ComponentLossRoute { } -extension SiteRoute.View.ProjectRoute.FrictionRateRoute.FormType { - var id: String { - switch self { - case .equipmentInfo: - return "equipmentForm" - case .componentPressureLoss: - return "componentLossForm" - } - } -} - extension SiteRoute.View.ProjectRoute.EquivalentLengthRoute { func renderView( @@ -500,9 +446,6 @@ extension SiteRoute.View.ProjectRoute.EquivalentLengthRoute { case .index: return await self.view(on: request, projectID: projectID) - case .form(let dismiss): - return EffectiveLengthForm(projectID: projectID, dismiss: dismiss) - case .field(let type, let style): switch type { case .straightLength: diff --git a/Sources/ViewController/Views/Project/ProjectDetail.swift b/Sources/ViewController/Views/Project/ProjectDetail.swift index c0a5ce1..27e5a14 100644 --- a/Sources/ViewController/Views/Project/ProjectDetail.swift +++ b/Sources/ViewController/Views/Project/ProjectDetail.swift @@ -48,54 +48,4 @@ struct ProjectDetail: HTML, Sendable { } } - // var body: some HTML { - // div( - // .class( - // """ - // space-y-4 p-4 m-4 - // """ - // ) - // ) { - // Row { - // h1(.class("text-2xl font-bold")) { "Project" } - // EditButton() - // .attributes( - // .class("btn-ghost"), - // .on(.click, "projectForm.showModal()") - // ) - // } - // - // Row { - // Label("Name") - // span { project.name } - // } - // .attributes(.class("border-b border-gray-200")) - // - // Row { - // Label("Address") - // span { project.streetAddress } - // } - // .attributes(.class("border-b border-gray-200")) - // - // Row { - // Label("City") - // span { project.city } - // } - // .attributes(.class("border-b border-gray-200")) - // - // Row { - // Label("State") - // span { project.state } - // } - // .attributes(.class("border-b border-gray-200")) - // - // Row { - // Label("Zip") - // span { project.zipCode } - // } - // } - // - // ProjectForm(dismiss: true, project: project) - // } } - diff --git a/Sources/ViewController/Views/Project/ProjectView.swift b/Sources/ViewController/Views/Project/ProjectView.swift index fb1d431..f9d4082 100644 --- a/Sources/ViewController/Views/Project/ProjectView.swift +++ b/Sources/ViewController/Views/Project/ProjectView.swift @@ -41,70 +41,6 @@ struct ProjectView: HTML, Sendable where Inner: Sendable { div(.class("p-4")) { inner .environment(ProjectViewValue.$projectID, projectID) - // switch self.activeTab { - // case .project: - // await resultView(projectID) { - // guard let project = try await database.projects.get(projectID) else { - // throw NotFoundError() - // } - // return project - // } onSuccess: { project in - // ProjectDetail(project: project) - // } - // case .equipment: - // await resultView(projectID) { - // try await database.equipment.fetch(projectID) - // } onSuccess: { equipment in - // EquipmentInfoView(equipmentInfo: equipment, projectID: projectID) - // } - // // FIX: - // // div { "Fix Me" } - // case .rooms: - // await resultView(projectID) { - // try await ( - // database.rooms.fetch(projectID), - // database.projects.getSensibleHeatRatio(projectID) - // ) - // } onSuccess: { (rooms, shr) in - // RoomsView(rooms: rooms, sensibleHeatRatio: shr) - // } - // - // case .equivalentLength: - // await resultView(projectID) { - // try await database.effectiveLength.fetch(projectID) - // } onSuccess: { - // EffectiveLengthsView(effectiveLengths: $0) - // } - // case .frictionRate: - // - // await resultView(projectID) { - // - // let equipmentInfo = try await database.equipment.fetch(projectID) - // let componentLosses = try await database.componentLoss.fetch(projectID) - // let equivalentLengths = try await database.effectiveLength.fetchMax(projectID) - // let frictionRateResponse = try await manualD.frictionRate( - // equipmentInfo: equipmentInfo, - // componentLosses: componentLosses, - // effectiveLength: equivalentLengths - // ) - // return ( - // equipmentInfo, componentLosses, equivalentLengths, frictionRateResponse - // ) - // } onSuccess: { - // FrictionRateView( - // equipmentInfo: $0.0, - // componentLosses: $0.1, - // equivalentLengths: $0.2, - // frictionRateResponse: $0.3 - // ) - // } - // case .ductSizing: - // await resultView(projectID) { - // try await database.calculateDuctSizes(projectID: projectID) - // } onSuccess: { - // DuctSizingView(rooms: $0) - // } - // } } } @@ -117,41 +53,6 @@ struct ProjectView: HTML, Sendable where Inner: Sendable { } } - // func resultView( - // _ projectID: Project.ID, - // catching: @escaping @Sendable () async throws(E) -> V, - // onSuccess: @escaping @Sendable (V) -> ValueView - // ) async -> ResultView, ErrorView> - // where - // ValueView: Sendable, E: Sendable - // { - // await .init( - // result: .init(catching: catching), - // onSuccess: { result in - // onSuccess(result) - // .environment(ProjectViewValue.$projectID, projectID) - // } - // ) - // } -} - -// TODO: Remove -extension ProjectView where Inner == EmptyHTML { - init( - projectID: Project.ID, - activeTab: SiteRoute.View.ProjectRoute.DetailRoute.Tab, - completedSteps: Project.CompletedSteps = .init( - equipmentInfo: false, - rooms: false, - equivalentLength: false, - frictionRate: false - ) - ) { - self.projectID = projectID - self.activeTab = activeTab - self.inner = EmptyHTML() - self.completedSteps = completedSteps - } } extension ProjectView { @@ -193,7 +94,7 @@ extension ProjectView { row( title: "Project", icon: .mapPin, - route: .project(.detail(projectID, .index(tab: .project))), + route: .project(.detail(projectID, .index)), isComplete: true ) .attributes(.data("active", value: "true"), when: active == .project) diff --git a/Sources/ViewController/Views/Project/ProjectsTable.swift b/Sources/ViewController/Views/Project/ProjectsTable.swift index c026dd0..8711333 100644 --- a/Sources/ViewController/Views/Project/ProjectsTable.swift +++ b/Sources/ViewController/Views/Project/ProjectsTable.swift @@ -88,7 +88,7 @@ extension ProjectsTable { Tooltip("View project", position: tooltipPosition(n)) { a( .class("join-item btn btn-success btn-ghost"), - .href(route: .project(.detail(project.id, .index()))) + .href(route: .project(.detail(project.id, .rooms(.index)))) ) { SVG(.chevronRight) }