summaryrefslogtreecommitdiff
path: root/formlets.rkt
diff options
context:
space:
mode:
authorMarius Peter <dev@marius-peter.com>2025-11-22 12:32:34 +0100
committerMarius Peter <dev@marius-peter.com>2025-11-22 12:32:34 +0100
commit5408b445776234c35fb61374d2d3abc6b83b2904 (patch)
tree0d8f25f82fb2c5b5223219bd73c9bafd29d68d25 /formlets.rkt
parent6d22ffec76b5fef772173690874bfb1d22ef2a81 (diff)
Add fertilizer product creation logic.
Diffstat (limited to 'formlets.rkt')
-rw-r--r--formlets.rkt26
1 files changed, 23 insertions, 3 deletions
diff --git a/formlets.rkt b/formlets.rkt
index f24c84f..6ae4551 100644
--- a/formlets.rkt
+++ b/formlets.rkt
@@ -1,7 +1,8 @@
#lang racket
(provide measurements-formlet
- targets-formlet)
+ targets-formlet
+ fertilizer-formlet)
(require gregor
web-server/http
@@ -19,7 +20,7 @@
date-b}
date-b))
-(define (measurement-formlet nutrient)
+(define (nutrient-value-formlet nutrient)
(define id (nutrient-id nutrient))
(define number-input
(input #:type "number"
@@ -40,7 +41,7 @@
`(div ((class "mb-3"))
(h5 "Valeurs du relevé")
,@(for/list ([nutrient (get-nutrients)])
- {=>* (measurement-formlet nutrient) measurements*}))
+ {=>* (nutrient-value-formlet nutrient) measurements*}))
{=>* (submit "Enregistrer le relevé" #:attributes '((class "btn btn-primary"))) _})
(let ([measured-on (first measured-on*)]
[nutrient-values (for/hash ([nv (in-list (filter pair? measurements*))])
@@ -85,3 +86,22 @@
[nutrient-values (average-crop-requirement-nutrient-values (filter pair?
requirements*))])
(values effective-on nutrient-values))))
+
+(define (name-formlet)
+ (define string-input (input #:type "string" #:attributes `((class "form-control"))))
+ (formlet (#%# (div ((class "mb-3")) ,{=> string-input string-value-b}))
+ (bytes->string/utf-8 (binding:form-value string-value-b))))
+
+(define (fertilizer-formlet)
+ (formlet* (#%# `(div ((class "mb-3")) (h5 "Nom de référence") ,{=>* (name-formlet) canonical-name*})
+ `(div ((class "mb-3")) (h5 "Nom de marque") ,{=>* (name-formlet) brand-name*})
+ `(div ((class "mb-3"))
+ (h5 "Valeurs de l'intrant")
+ ,@(for/list ([nutrient (get-nutrients)])
+ {=>* (nutrient-value-formlet nutrient) nutrient-values*}))
+ {=>* (submit "Enregistrer l'intrant" #:attributes '((class "btn btn-primary"))) _})
+ (let ([canonical-name (first canonical-name*)]
+ [nutrient-values (for/hash ([nv (filter pair? nutrient-values*)])
+ (values (car nv) (cdr nv)))]
+ [brand-name (first brand-name*)])
+ (values canonical-name nutrient-values brand-name))))
Copyright 2019--2026 Marius PETER