summaryrefslogtreecommitdiff
path: root/formlets.rkt
diff options
context:
space:
mode:
authorMarius Peter <dev@marius-peter.com>2025-12-03 20:59:40 +0100
committerMarius Peter <dev@marius-peter.com>2025-12-03 20:59:40 +0100
commit48b3a00cf6313ea96b3557a88a79b12eeb06cdfe (patch)
treea240430aee818487b1e3a4f999751986a76bab0e /formlets.rkt
parent658ac9cbc5c44f21968ed7c4b8b056925d39c162 (diff)
Date formlet now takes an optional initial value.
Diffstat (limited to 'formlets.rkt')
-rw-r--r--formlets.rkt26
1 files changed, 15 insertions, 11 deletions
diff --git a/formlets.rkt b/formlets.rkt
index 4d18225..3408278 100644
--- a/formlets.rkt
+++ b/formlets.rkt
@@ -1,17 +1,18 @@
#lang racket
(provide measurements-formlet
- targets-formlet
+ rotation-formlet
fertilizer-formlet)
(require gregor
web-server/formlets
"models/nutrient.rkt"
+ "models/nutrient-measurement.rkt"
"models/crop.rkt"
"models/crop-requirement.rkt")
(define (measurements-formlet)
- (formlet* (#%# `(div ((class "mb-3")) (h5 "Date du relevé") ,{=>* date-formlet measurement-date*})
+ (formlet* (#%# `(div ((class "mb-3")) (h5 "Date du relevé") ,{=>* (date-formlet) measurement-date*})
`(div ((class "mb-3"))
(h5 "Valeurs du relevé")
,@(for/list ([nutrient (get-nutrients)])
@@ -22,17 +23,20 @@
(values (car nv) (cdr nv)))])
(values measurement-date nutrient-values))))
-(define (targets-formlet)
- (formlet* (#%# `(div ((class "mb-3")) (h5 "Date ciblée") ,{=>* date-formlet target-date*})
+(define (rotation-formlet #:date [date-string #f])
+ (formlet* (#%# `(div ((class "mb-3"))
+ (h5 "Date de l'assolement")
+ ,{=>* (date-formlet #:date date-string) rotation-date*})
`(div ((class "mb-3"))
- (h5 "Valeurs cibles (%)")
+ (h5 "Répartition des cultures (%)")
,@(for/list ([requirement (get-crop-requirements)])
{=>* (crop-requirement-formlet requirement) requirements*}))
{=>* (submit "Enregistrer la cible" #:attributes '((class "btn btn-primary"))) _})
- (let ([target-date (first target-date*)]
- [nutrient-values (average-crop-requirement-nutrient-values (filter pair?
- requirements*))])
- (values target-date nutrient-values))))
+ (let ([rotation-date (first rotation-date*)]
+ [requirement-proportions (for/hash ([rp requirements*])
+ (match-define (cons req proportion) rp)
+ (values req proportion))])
+ (values rotation-date requirement-proportions))))
(define (fertilizer-formlet)
(formlet*
@@ -77,9 +81,9 @@
(div ((class "form-floating mb-3")) ,{=> percentage-input requirement-percentage} ,input-label)
(cons requirement requirement-percentage)))
-(define date-formlet
+(define (date-formlet #:date [date-string #f])
(to-string (required (input #:type "date"
- #:value (date->iso8601 (today))
+ #:value (or date-string (date->iso8601 (today)))
#:attributes '((class "form-control") [required "required"])))))
(define (nutrient-value-formlet nutrient)
Copyright 2019--2026 Marius PETER