Complete parent commit.

Commit
6e8d8dc281888db9d8dfe57bde92e1e286c48dc1
Author
Marius Peter <dev@marius-peter.com>
Author date
Committer
Marius Peter <dev@marius-peter.com>
Committer date
formlets.rkt
index 73db14bd..bc315192 100644..100644
@@ -5,45 +5,50 @@
5 5 fertilizer-formlet)
6 6
7 7 (require gregor
8 Removed: web-server/http
9 8 web-server/formlets
10 9 "models/nutrient.rkt"
11 10 "models/crop.rkt"
12 11 "models/crop-requirement.rkt")
13 12
14 Removed: (define date-formlet
15 Removed: (to-string (required (input #:type "date"
16 Removed: #:value (date->iso8601 (today))
17 Removed: #:attributes '((class "form-control") [required "required"])))))
18 Removed:
19 Removed: (define (nutrient-value-formlet nutrient)
20 Removed: (define id (number->string (nutrient-id nutrient)))
21 Removed: (define number-input
22 Removed: (input #:type "number"
23 Removed: #:attributes `((class "form-control") [id ,id]
24 Removed: [step "0.1"]
25 Removed: [placeholder ,(nutrient-french-name nutrient)])))
26 Removed: (define input-label
27 Removed: `(label ((for ,id
28 Removed: ))
29 Removed: ,(nutrient-french-name nutrient)))
30 Removed: (formlet (#%# (div ((class "form-floating mb-3")) ,{=> number-input nutrient-value-b} ,input-label))
31 Removed: (let ([nutrient-value (string->number (bytes->string/utf-8
32 Removed: (binding:form-value nutrient-value-b)))])
33 Removed: (and nutrient-value (cons nutrient nutrient-value)))))
34 Removed:
35 13 (define (measurements-formlet)
36 14 (formlet* (#%# `(div ((class "mb-3")) (h5 "Date du relevé") ,{=>* date-formlet measured-on*})
37 15 `(div ((class "mb-3"))
38 16 (h5 "Valeurs du relevé")
39 17 ,@(for/list ([nutrient (get-nutrients)])
40 Removed: {=>* (nutrient-value-formlet nutrient) measurements*}))
18 Added: {=>* (nutrient-value-formlet nutrient) nutrient-values*}))
41 19 {=>* (submit "Enregistrer le relevé" #:attributes '((class "btn btn-primary"))) _})
42 20 (let ([measured-on (first measured-on*)]
43 Removed: [nutrient-values (for/hash ([nv (in-list (filter pair? measurements*))])
21 Added: [nutrient-values (for/hash ([nv nutrient-values*])
44 22 (values (car nv) (cdr nv)))])
45 23 (values measured-on nutrient-values))))
46 24
25 Added: (define (targets-formlet)
26 Added: (formlet* (#%# `(div ((class "mb-3")) (h5 "Date ciblée") ,{=>* date-formlet effective-on*})
27 Added: `(div ((class "mb-3"))
28 Added: (h5 "Valeurs cibles (%)")
29 Added: ,@(for/list ([requirement (get-crop-requirements)])
30 Added: {=>* (crop-requirement-formlet requirement) requirements*}))
31 Added: {=>* (submit "Enregistrer la cible" #:attributes '((class "btn btn-primary"))) _})
32 Added: (let ([effective-on (first effective-on*)]
33 Added: [nutrient-values (average-crop-requirement-nutrient-values (filter pair?
34 Added: requirements*))])
35 Added: (values effective-on nutrient-values))))
36 Added:
37 Added: (define (fertilizer-formlet)
38 Added: (formlet*
39 Added: (#%# `(div ((class "mb-3")) (h5 "Nom de référence") ,{=>* required-string-input canonical-name*})
40 Added: `(div ((class "mb-3")) (h5 "Nom de marque") ,{=>* required-string-input brand-name*})
41 Added: `(div ((class "mb-3"))
42 Added: (h5 "Valeurs de l'intrant")
43 Added: ,@(for/list ([nutrient (get-nutrients)])
44 Added: {=>* (nutrient-value-formlet nutrient) nutrient-values*}))
45 Added: {=>* (submit "Enregistrer l'intrant" #:attributes '((class "btn btn-primary"))) _})
46 Added: (let ([canonical-name (first canonical-name*)]
47 Added: [nutrient-values (for/hash ([nv nutrient-values*])
48 Added: (values (car nv) (cdr nv)))]
49 Added: [brand-name (first brand-name*)])
50 Added: (values canonical-name brand-name nutrient-values))))
51 Added:
47 52 (define (crop-requirement-formlet requirement)
48 53 (define id (number->string (crop-requirement-id requirement)))
49 54 (define profile (crop-requirement-profile requirement))
@@ -52,11 +57,16 @@
52 57 (if maybe-crop
53 58 (crop-name (get-crop #:id maybe-crop))
54 59 #f))
55 Removed: (define number-input
56 Removed: (input
57 Removed: #:type "number"
58 Removed: #:attributes
59 Removed: `((class "form-control") [id ,id] [min "0"] [max "100"] [step "1"] [placeholder ,profile])))
60 Added: (define percentage-input
61 Added: (to-number (to-string (required (input #:type "number"
62 Added: #:attributes
63 Added: `((class "form-control") [required "required"]
64 Added: [id ,id]
65 Added: [name ,id]
66 Added: [min "0"]
67 Added: [max "100"]
68 Added: [step "1"]
69 Added: [placeholder ,profile]))))))
60 70 (define input-label
61 71 `(label ((for ,id
62 72 ))