From 86b5343292e852155dab10fc8db39c2dd2b932eb Mon Sep 17 00:00:00 2001 From: Marius Peter Date: Tue, 21 Oct 2025 21:36:09 +0200 Subject: Added views, formlets, and handlers for nutrient target management. --- views.rkt | 39 +++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-) (limited to 'views.rkt') diff --git a/views.rkt b/views.rkt index d78c370..12b5d1a 100644 --- a/views.rkt +++ b/views.rkt @@ -2,12 +2,14 @@ (provide index-page new-measurement-page + new-target-page fallback-page) (require web-server/formlets "formlets.rkt" "models/nutrient.rkt" - "models/nutrient-measurement.rkt") + "models/nutrient-measurement.rkt" + "models/nutrient-target.rkt") (define (page-template title body-xexpr) @@ -77,19 +79,26 @@ (a ([class "btn btn-primary mb-3"] [href "/target/new"]) "Créer une cible") (table ([class "table"]) (tr (th "Nutriment") - (th ([class "text-end"]) "Dernière Cible") (th ([class "text-end"]) "Dernier Relevé") + (th ([class "text-end"]) "Dernière Cible") (th ([class "text-end"]) "Delta (%)")) ,@(for/list ([n (get-nutrients)]) - (define latest-target (+ (get-latest-nutrient-measurement-value n) 1)) - (define latest-value (get-latest-nutrient-measurement-value n)) - (define delta (* 100 - (/ (- latest-target latest-value) - latest-target))) + (define latest-target (get-latest-nutrient-target-value n)) + (define latest-measurement (get-latest-nutrient-measurement-value n)) + (define delta-percentage (cond + [(zero? latest-target) + -100] + [(zero? latest-measurement) + 100] + [(number? latest-target) + (* 100 + (/ (- latest-target latest-measurement) + latest-measurement))] + [else #f])) `(tr (td ,(nutrient-name n)) - (td ([class "text-end"]) ,(round 2 latest-target)) - (td ([class "text-end"]) ,(round 2 latest-value)) - (td ([class "text-end"]) ,(round 1 delta))))) + (td ([class "text-end"]) ,(if latest-measurement (round 2 latest-measurement) "—")) + (td ([class "text-end"]) ,(if latest-target (round 2 latest-target) "—")) + (td ([class "text-end"]) ,(if delta-percentage (round 1 delta-percentage) "—"))))) (a ([class "btn btn-primary mb-3"] [href "/measurement/new"]) "Ajouter un relevé") (table ([class "table table-striped"]) @@ -122,6 +131,16 @@ [method "POST"]) ,@(formlet-display (measurements-formlet))))))) +(define (new-target-page) + (page-template + "Nouvelle cible" + `((h1 ([class "display-1 mb-3"]) "Nouvelle cible") + (div ([class "mb-3"] [style "max-width: 30em"]) + (form + ([action "/target/create"] + [method "POST"]) + ,@(formlet-display (targets-formlet))))))) + (define (fallback-page request-code) (page-template (format "Réponse: ~a" request-code) -- cgit v1.2.3