summaryrefslogtreecommitdiff
path: root/views.rkt
diff options
context:
space:
mode:
Diffstat (limited to 'views.rkt')
-rw-r--r--views.rkt39
1 files changed, 29 insertions, 10 deletions
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)
Copyright 2019--2025 Marius PETER