summaryrefslogtreecommitdiff
path: root/formlets.rkt
diff options
context:
space:
mode:
Diffstat (limited to 'formlets.rkt')
-rw-r--r--formlets.rkt116
1 files changed, 51 insertions, 65 deletions
diff --git a/formlets.rkt b/formlets.rkt
index d0067e3..20a84d8 100644
--- a/formlets.rkt
+++ b/formlets.rkt
@@ -10,87 +10,73 @@
"models/crop.rkt"
"models/crop-requirement.rkt")
-
(define date-formlet
- (formlet
- ,{=> (to-string
- (required
- (input #:type "date"
- #:value (date->iso8601 (today))
- #:attributes '([class "form-control"] [required "required"]))))
- date-b}
- date-b))
+ (formlet ,{=>
+ (to-string (required (input #:type "date"
+ #:value (date->iso8601 (today))
+ #:attributes
+ '((class "form-control") [required "required"]))))
+ date-b}
+ date-b))
(define (measurement-formlet nutrient)
(define id (nutrient-id nutrient))
(define number-input
(input #:type "number"
- #:attributes `([class "form-control"]
- [id ,(number->string id)]
- [step "0.1"]
- [placeholder ,(nutrient-name nutrient)])))
- (define input-label `(label ([for ,(number->string id)]) ,(nutrient-name nutrient)))
- (formlet
- (#%#
- (div ([class "form-floating mb-3"])
- ,{=> number-input nutrient-value-b}
- ,input-label))
- (let ([nutrient-value (string->number
- (bytes->string/utf-8
- (binding:form-value nutrient-value-b)))])
- (and nutrient-value (cons id nutrient-value)))))
+ #:attributes `((class "form-control") [id ,(number->string id)]
+ [step "0.1"]
+ [placeholder ,(nutrient-name nutrient)])))
+ (define input-label
+ `(label ((for ,(number->string id)
+ ))
+ ,(nutrient-name nutrient)))
+ (formlet (#%# (div ((class "form-floating mb-3")) ,{=> number-input nutrient-value-b} ,input-label))
+ (let ([nutrient-value (string->number (bytes->string/utf-8
+ (binding:form-value nutrient-value-b)))])
+ (and nutrient-value (cons id nutrient-value)))))
(define (measurements-formlet)
- (formlet*
- (#%#
- `(div ([class "mb-3"])
- (h5 "Date du relevé")
- ,{=>* date-formlet measured-on*})
- `(div ([class "mb-3"])
- (h5 "Valeurs du relevé")
- ,@(for/list ([nutrient (get-nutrients)])
- {=>* (measurement-formlet nutrient) measurements*}))
- {=>* (submit "Enregistrer le relevé" #:attributes '([class "btn btn-primary"])) _})
- (let ([measured-on (first measured-on*)]
- [measurements (filter pair? measurements*)]) ; drop #f’s from empty values
- (values measured-on measurements))))
+ (formlet* (#%# `(div ((class "mb-3")) (h5 "Date du relevé") ,{=>* date-formlet measured-on*})
+ `(div ((class "mb-3"))
+ (h5 "Valeurs du relevé")
+ ,@(for/list ([nutrient (get-nutrients)])
+ {=>* (measurement-formlet nutrient) measurements*}))
+ {=>* (submit "Enregistrer le relevé" #:attributes '((class "btn btn-primary"))) _})
+ (let ([measured-on (first measured-on*)]
+ [measurements (filter pair? measurements*)]) ; drop #f’s from empty values
+ (values measured-on measurements))))
(define (crop-requirement-formlet requirement)
(define id (crop-requirement-id requirement))
(define profile (crop-requirement-profile requirement))
(define maybe-crop (crop-requirement-crop-id requirement))
- (define crop (if maybe-crop (crop-name (get-crop #:id maybe-crop)) #f))
+ (define crop
+ (if maybe-crop
+ (crop-name (get-crop #:id maybe-crop))
+ #f))
(define number-input
(input #:type "number"
- #:attributes `([class "form-control"]
- [id ,(number->string id)]
- [step "1"]
- [placeholder ,profile])))
- (define input-label `(label ([for ,(number->string id)])
- ,(if crop
- (format "~a (~a)" crop profile)
- (format "~a" profile))))
+ #:attributes
+ `((class "form-control") [id ,(number->string id)] [step "1"] [placeholder ,profile])))
+ (define input-label
+ `(label ((for ,(number->string id)
+ ))
+ ,(if crop
+ (format "~a (~a)" crop profile)
+ (format "~a" profile))))
(formlet
- (#%#
- (div ([class "form-floating mb-3"])
- ,{=> number-input requirement-proportion-b}
- ,input-label))
- (let ([requirement-proportion (string->number
- (bytes->string/utf-8
- (binding:form-value requirement-proportion-b)))])
+ (#%# (div ((class "form-floating mb-3")) ,{=> number-input requirement-proportion-b} ,input-label))
+ (let ([requirement-proportion
+ (string->number (bytes->string/utf-8 (binding:form-value requirement-proportion-b)))])
(and requirement-proportion (cons requirement requirement-proportion)))))
(define (targets-formlet)
- (formlet*
- (#%#
- `(div ([class "mb-3"])
- (h5 "Date ciblée")
- ,{=>* date-formlet effective-on*})
- `(div ([class "mb-3"])
- (h5 "Valeurs cibles")
- ,@(for/list ([requirement (get-crop-requirements)])
- {=>* (crop-requirement-formlet requirement) requirements*}))
- {=>* (submit "Enregistrer la cible" #:attributes '([class "btn btn-primary"])) _})
- (let ([effective-on (first effective-on*)]
- [requirements (filter pair? requirements*)]) ; drop #f’s from empty values
- (values effective-on requirements))))
+ (formlet* (#%# `(div ((class "mb-3")) (h5 "Date ciblée") ,{=>* date-formlet effective-on*})
+ `(div ((class "mb-3"))
+ (h5 "Valeurs cibles")
+ ,@(for/list ([requirement (get-crop-requirements)])
+ {=>* (crop-requirement-formlet requirement) requirements*}))
+ {=>* (submit "Enregistrer la cible" #:attributes '((class "btn btn-primary"))) _})
+ (let ([effective-on (first effective-on*)]
+ [requirements (filter pair? requirements*)]) ; drop #f’s from empty values
+ (values effective-on requirements))))
Copyright 2019--2026 Marius PETER