From 48b3a00cf6313ea96b3557a88a79b12eeb06cdfe Mon Sep 17 00:00:00 2001 From: Marius Peter Date: Wed, 3 Dec 2025 20:59:40 +0100 Subject: Date formlet now takes an optional initial value. --- formlets.rkt | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) (limited to 'formlets.rkt') 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) -- cgit v1.2.3