diff options
| author | Marius Peter <dev@marius-peter.com> | 2025-12-10 20:47:05 +0100 |
|---|---|---|
| committer | Marius Peter <dev@marius-peter.com> | 2025-12-10 20:47:05 +0100 |
| commit | 8020f23b1cefe9ad6cef9bbd47d3879caeba0d0d (patch) | |
| tree | ed6e055e63a32aa19b4f26a28e3971a65421c702 | |
| parent | 014056f90eb55f36c606374857716072ebba753a (diff) | |
Add crop requirements logic + views.
| -rw-r--r-- | handlers.rkt | 9 | ||||
| -rw-r--r-- | models/crop-requirement.rkt | 3 | ||||
| -rw-r--r-- | views.rkt | 24 |
3 files changed, 29 insertions, 7 deletions
diff --git a/handlers.rkt b/handlers.rkt index 179775e..010fe8e 100644 --- a/handlers.rkt +++ b/handlers.rkt @@ -10,8 +10,8 @@ "views.rkt" "formlets.rkt" "models/user.rkt" - "models/nutrient.rkt" "models/nutrient-measurement.rkt" + "models/crop-requirement.rkt" "models/crop-rotation.rkt" "models/fertilizer-product.rkt" "services/nnls.rkt") @@ -27,6 +27,7 @@ [("ferti" "measurements-and-rotations") #:method "get" ferti-measurements-and-rotations] [("ferti" "recipes" (string-arg)) #:method "get" ferti-recipe] [("ferti" "fertilizers") #:method "get" ferti-fertilizers] + [("ferti" "crop-requirements") #:method "get" ferti-crop-requirements] ;; Nutrient measurements [("ferti" "measurements" "new") #:method "get" new-measurement] [("ferti" "measurements" "create") #:method "post" create-measurement] @@ -71,8 +72,10 @@ (render-page (ferti-recipe-page date-string ferti-recipe))) (define (ferti-fertilizers _) - (define fertilizers (get-fertilizer-products)) - (render-page (ferti-fertilizers-page fertilizers))) + (render-page (ferti-fertilizers-page (get-fertilizer-products)))) + +(define (ferti-crop-requirements _) + (render-page (ferti-crop-requirements-page (get-crop-requirements)))) ;; Nutrient measurements diff --git a/models/crop-requirement.rkt b/models/crop-requirement.rkt index 018c6c1..bf61d0d 100644 --- a/models/crop-requirement.rkt +++ b/models/crop-requirement.rkt @@ -93,8 +93,7 @@ (define (get-crop-requirement #:id [cr-id #f] #:profile [profile #f]) (define where (cond - [(and cr-id profile) - (scalar-expr-qq (and (= cr.id ,cr-id) (= cr.profile ,profile)))] + [(and cr-id profile) (scalar-expr-qq (and (= cr.id ,cr-id) (= cr.profile ,profile)))] [cr-id (scalar-expr-qq (= cr.id ,cr-id))] [profile (scalar-expr-qq (= cr.profile ,profile))] [else (error 'get-crop-requirement "one of #:id or #:profile must be provided")])) @@ -5,6 +5,7 @@ ferti-measurements-and-rotations-page ferti-recipe-page ferti-fertilizers-page + ferti-crop-requirements-page new-measurement-page new-rotation-page new-fertilizer-page @@ -19,6 +20,7 @@ "models/user.rkt" "models/nutrient.rkt" "models/nutrient-measurement.rkt" + "models/crop.rkt" "models/crop-rotation.rkt" "models/crop-requirement.rkt" "models/fertilizer-product.rkt") @@ -89,7 +91,10 @@ (a ((class "nav-link") (aria-current "page") (href "/ferti/measurements-and-rotations")) "Relevés & Assolements")) (li ((class "nav-item")) - (a ((class "nav-link") (aria-current "page") (href "/ferti/fertilizers")) "Intrants")))) + (a ((class "nav-link") (aria-current "page") (href "/ferti/fertilizers")) "Intrants")) + (li ((class "nav-item")) + (a ((class "nav-link") (aria-current "page") (href "/ferti/crop-requirements")) + "Cultures")))) (define (ferti-index-page) (ferti-template @@ -127,7 +132,7 @@ (href ,(format "/ferti/recipes/~a" (crop-rotation-date maybe-rotation)))) "Consulter") "—"))))))) - (ferti-template `((h2 () "Relevés & Assolements") + (ferti-template `((h2 () "Relevés et Assolements") (div ((class "btn-group mb-3")) (a ((class "btn btn-primary") [href "/ferti/measurements/new"]) "Ajouter un relevé")) @@ -164,6 +169,21 @@ "Ajouter un intrant") ,table))) +(define (ferti-crop-requirements-page crop-requirements) + (define table + `(table ((class "table table-striped")) + (tr (th "Culture") (th "Profil")) + ,@(for/list ([cr crop-requirements]) + (define crop-id (crop-requirement-crop-id cr)) + `(tr (td ,(if crop-id + (string-titlecase (crop-name (get-crop #:id crop-id))) + "—")) + (td ,(string-titlecase (crop-requirement-profile cr))))))) + (ferti-template `((h2 () "Profils de culture") + (a ((class "btn btn-primary mb-3") [href "/ferti/crop-requirements/new"]) + "Ajouter un profil") + ,table))) + (define (new-measurement-page) (page-template "Nouveau relevé" `((h1 ((class "display-1 mb-3")) "Nouveau relevé") |