From 3e6c7e32eee209bfba99ecaaf26836f2a3aef510 Mon Sep 17 00:00:00 2001 From: Marius Peter Date: Sat, 29 Nov 2025 13:13:02 +0100 Subject: Split Ferti into sub-tabs. --- handlers.rkt | 53 ++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 38 insertions(+), 15 deletions(-) (limited to 'handlers.rkt') diff --git a/handlers.rkt b/handlers.rkt index 17a57dd..051254b 100644 --- a/handlers.rkt +++ b/handlers.rkt @@ -1,6 +1,7 @@ #lang racket -(provide secured-dispatch) +(provide secured-dispatch + fapg-url) (require web-server/dispatch web-server/http @@ -9,6 +10,7 @@ "views.rkt" "formlets.rkt" "models/user.rkt" + "models/nutrient.rkt" "models/nutrient-measurement.rkt" "models/nutrient-target.rkt" "models/fertilizer-product.rkt" @@ -20,7 +22,7 @@ (or (getenv "FERTI_PASS") (error 'ferti "FERTI_PASS environment variable is not set"))) (define (secured-dispatch) - (wrap-basic-auth app-dispatch)) + (wrap-basic-auth fapg-dispatch)) (define (wrap-basic-auth handler) (lambda (req) @@ -44,8 +46,12 @@ (list (make-basic-auth-header (format "Basic Auth Test: ~a" (gensym)))) void)) -(define-values (app-dispatch _) - (dispatch-rules [("ferti") #:method "get" ferti] +(define-values (fapg-dispatch fapg-url) + (dispatch-rules [("ferti" "index") #:method "get" ferti-index] + [("ferti" "measurements") #:method "get" ferti-measurements] + [("ferti" "targets") #:method "get" ferti-targets] + [("ferti" "recipe") #:method "get" ferti-recipe] + [("ferti" "fertilizers") #:method "get" ferti-fertilizers] [("measurement" "new") #:method "get" new-measurement] [("measurement" "create") #:method "post" create-measurement] [("measurement" "destroy") #:method "post" destroy-measurement] @@ -59,18 +65,35 @@ (define (render-page xexpr) (response/xexpr #:preamble #"" xexpr)) -(define (ferti _) - (define ferti-recipe (find-ferti-recipe)) - (define latest-measurement-hash (get-latest-nutrient-measurement-hash)) - (define latest-target-hash (get-latest-nutrient-target-hash)) - (define latest-measurements (take (get-nutrient-measurements) 10)) - (render-page - (ferti-page ferti-recipe latest-measurement-hash latest-target-hash latest-measurements))) +;; Index (define (index _) (define user (get-current-user)) (render-page (index-page user))) +;; Ferti + +(define (ferti-index _) + (render-page (ferti-index-page))) + +(define (ferti-measurements _) + (define nutrients (get-nutrients)) + (define measurements (get-nutrient-measurements)) + (render-page (ferti-measurements-page nutrients measurements))) + +(define (ferti-targets _) + (define latest-measurement-hash (get-latest-nutrient-measurement-hash)) + (define latest-target-hash (get-latest-nutrient-target-hash)) + (render-page (ferti-targets-page latest-measurement-hash latest-target-hash))) + +(define (ferti-recipe _) + (define ferti-recipe (find-ferti-recipe)) + (render-page (ferti-recipe-page ferti-recipe))) + +(define (ferti-fertilizers _) + (define fertilizers (get-fertilizer-products)) + (render-page (ferti-fertilizers-page fertilizers))) + ;; Nutrient measurements (define (new-measurement _) @@ -79,11 +102,11 @@ (define (create-measurement req) (define-values (measured-on nutrient-values) (formlet-process (measurements-formlet) req)) (create-nutrient-measurement! measured-on nutrient-values) - (redirect-to "/ferti")) + (redirect-to "/ferti/measurements")) (define (destroy-measurement req) (delete-nutrient-measurement! req) - (redirect-to "/ferti")) + (redirect-to "/ferti/index")) ;; Nutrient targets @@ -93,7 +116,7 @@ (define (create-target req) (define-values (effective-on nutrient-values) (formlet-process (targets-formlet) req)) (create-nutrient-target! effective-on nutrient-values) - (redirect-to "/ferti")) + (redirect-to "/ferti/targets")) ;; Fertilizer products @@ -104,7 +127,7 @@ (define-values (canonical-name brand-name nutrient-values) (formlet-process (fertilizer-formlet) req)) (create-fertilizer-product! canonical-name brand-name nutrient-values) - (redirect-to "/ferti")) + (redirect-to "/ferti/fertilizers")) ;; Fallback -- cgit v1.2.3