diff options
| author | Marius Peter <dev@marius-peter.com> | 2025-10-21 21:36:09 +0200 |
|---|---|---|
| committer | Marius Peter <dev@marius-peter.com> | 2025-10-21 21:36:09 +0200 |
| commit | 86b5343292e852155dab10fc8db39c2dd2b932eb (patch) | |
| tree | be7da4f70ecf803aec3b3e3498d6e2ed6e98003f /views.rkt | |
| parent | 9bdb71dfc7d10b20bf8f78823194f4e114f8fa16 (diff) | |
Added views, formlets, and handlers for nutrient target management.
Diffstat (limited to 'views.rkt')
| -rw-r--r-- | views.rkt | 39 |
1 files changed, 29 insertions, 10 deletions
@@ -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) |