summaryrefslogtreecommitdiff
path: root/views.rkt
diff options
context:
space:
mode:
authorMarius Peter <dev@marius-peter.com>2025-11-10 19:31:54 +0100
committerMarius Peter <dev@marius-peter.com>2025-11-10 19:31:54 +0100
commitb75fd3a2c01f943b099ef5809987c4a72a3a26df (patch)
treed14188ff73c1fa7aef267f96b5ae129da919850c /views.rkt
parent53a35b1eb0bc90b59b598e87f30375511089d771 (diff)
Add ferti recipe table to the index page.
Diffstat (limited to 'views.rkt')
-rw-r--r--views.rkt64
1 files changed, 47 insertions, 17 deletions
diff --git a/views.rkt b/views.rkt
index d183cbe..9205459 100644
--- a/views.rkt
+++ b/views.rkt
@@ -9,7 +9,8 @@
"formlets.rkt"
"models/nutrient.rkt"
"models/nutrient-measurement.rkt"
- "models/nutrient-target.rkt")
+ "models/nutrient-target.rkt"
+ "models/fertilizer-product.rkt")
(define (page-template title body-xexpr)
@@ -67,15 +68,37 @@
;; Page helpers
(define (round n number)
- (~r number #:precision n))
+ (~r number #:precision `(= ,n)))
;; Pages
-(define (index-page measurements)
+(define (index-page measurements ferti-recipe)
(page-template
"Ferti"
`((h1 ([class "display-1 mb-3"]) "Ferti")
+
+
+ ;;;;;;;;
+ ;; Ferti
+ ;;;;;;;;
+
+ (h2 () "Recette")
+ (table ([class "table"])
+ (tr (th () "Produit Fertilisant")
+ (th ([class "text-end"]) "Quantité"))
+ ,@(for/list ([fertilizer-amount ferti-recipe]
+ #:when (not (zero? (cdr fertilizer-amount))))
+ (match-define (cons fertilizer amount) fertilizer-amount)
+ `(tr (td () ,(fertilizer-name fertilizer))
+ (td ([class "text-end font-monospace"]) ,(round 2 amount)))))
+
+
+ ;;;;;;;;;
+ ;; Cibles
+ ;;;;;;;;;
+
+ (h2 () "Dernière Cible")
(a ([class "btn btn-primary mb-3"] [href "/target/new"]) "Créer une cible")
(table ([class "table"])
(tr (th "Nutriment")
@@ -85,22 +108,29 @@
,@(for/list ([n (get-nutrients)])
(define latest-target (get-latest-nutrient-target-value n))
(define latest-measurement (get-latest-nutrient-measurement-value n))
- (define delta-percentage (cond
- [(false? latest-target)
- #f]
- [(zero? latest-target)
- -100]
- [(zero? latest-measurement)
- 100]
- [(number? latest-target)
- (* 100
- (/ (- latest-target latest-measurement)
- latest-measurement))]))
+ (define delta-percentage
+ (cond
+ [(false? latest-target)
+ #f]
+ [(zero? latest-target)
+ -100]
+ [(zero? latest-measurement)
+ 100]
+ [(number? latest-target)
+ (* 100
+ (/ (- latest-target latest-measurement)
+ latest-measurement))]))
`(tr (td ,(nutrient-name n))
- (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) "—")))))
+ (td ([class "text-end font-monospace"]) ,(if latest-measurement (round 2 latest-measurement) "—"))
+ (td ([class "text-end font-monospace"]) ,(if latest-target (round 2 latest-target) "—"))
+ (td ([class "text-end font-monospace"]) ,(if delta-percentage (round 1 delta-percentage) "—")))))
+
+
+ ;;;;;;;;;;
+ ;; Relevés
+ ;;;;;;;;;;
+ (h2 () "Relevés")
(a ([class "btn btn-primary mb-3"] [href "/measurement/new"]) "Ajouter un relevé")
(table ([class "table table-striped"])
(tr (th "Date")
Copyright 2019--2026 Marius PETER