Make all form elements required.

Commit
716c77ae8b3a08920dd261d56a15297d9924c883
Author
Marius Peter <dev@marius-peter.com>
Author date
Committer
Marius Peter <dev@marius-peter.com>
Committer date
formlets.rkt
index 32f0513b..73db14bd 100644..100644
@@ -64,36 +64,31 @@
64 64 (format "~a (~a)" crop profile)
65 65 (format "~a" profile))))
66 66 (formlet
67 Removed: (#%# (div ((class "form-floating mb-3")) ,{=> number-input requirement-percentage-b} ,input-label))
68 Removed: (let ([requirement-percentage
69 Removed: (string->number (bytes->string/utf-8 (binding:form-value requirement-percentage-b)))])
70 Removed: (and requirement-percentage (cons requirement requirement-percentage)))))
67 Added: (div ((class "form-floating mb-3")) ,{=> percentage-input requirement-percentage} ,input-label)
68 Added: (cons requirement requirement-percentage)))
71 69
72 Removed: (define (targets-formlet)
73 Removed: (formlet* (#%# `(div ((class "mb-3")) (h5 "Date ciblée") ,{=>* date-formlet effective-on*})
74 Removed: `(div ((class "mb-3"))
75 Removed: (h5 "Valeurs cibles (%)")
76 Removed: ,@(for/list ([requirement (get-crop-requirements)])
77 Removed: {=>* (crop-requirement-formlet requirement) requirements*}))
78 Removed: {=>* (submit "Enregistrer la cible" #:attributes '((class "btn btn-primary"))) _})
79 Removed: (let ([effective-on (first effective-on*)]
80 Removed: [nutrient-values (average-crop-requirement-nutrient-values (filter pair?
81 Removed: requirements*))])
82 Removed: (values effective-on nutrient-values))))
70 Added: (define date-formlet
71 Added: (to-string (required (input #:type "date"
72 Added: #:value (date->iso8601 (today))
73 Added: #:attributes '((class "form-control") [required "required"])))))
83 74
84 Removed: (define string-input
85 Removed: (to-string (required (text-input #:attributes '((class "form-control") [required "required"])))))
75 Added: (define (nutrient-value-formlet nutrient)
76 Added: (define id (number->string (nutrient-id nutrient)))
77 Added: (define number-input
78 Added: (to-number (to-string (required (input #:type "number"
79 Added: #:attributes
80 Added: `((class "form-control")
81 Added: [required "required"]
82 Added: [id ,id]
83 Added: [name ,id]
84 Added: [step "0.1"]
85 Added: [placeholder ,(nutrient-french-name nutrient)]))))))
86 Added: (define input-label
87 Added: `(label ((for ,id
88 Added: ))
89 Added: ,(nutrient-french-name nutrient)))
90 Added: (formlet (div ((class "form-floating mb-3")) ,{=> number-input nutrient-value} ,input-label)
91 Added: (cons nutrient nutrient-value)))
86 92
87 Removed: (define (fertilizer-formlet)
88 Removed: (formlet* (#%# `(div ((class "mb-3")) (h5 "Nom de référence") ,{=>* string-input canonical-name*})
89 Removed: `(div ((class "mb-3")) (h5 "Nom de marque") ,{=>* string-input brand-name*})
90 Removed: `(div ((class "mb-3"))
91 Removed: (h5 "Valeurs de l'intrant")
92 Removed: ,@(for/list ([nutrient (get-nutrients)])
93 Removed: {=>* (nutrient-value-formlet nutrient) nutrient-values*}))
94 Removed: {=>* (submit "Enregistrer l'intrant" #:attributes '((class "btn btn-primary"))) _})
95 Removed: (let ([canonical-name (first canonical-name*)]
96 Removed: [nutrient-values (for/hash ([nv (filter pair? nutrient-values*)])
97 Removed: (values (car nv) (cdr nv)))]
98 Removed: [brand-name (first brand-name*)])
99 Removed: (values canonical-name brand-name nutrient-values))))
93 Added: (define required-string-input
94 Added: (to-string (required (text-input #:attributes '((class "form-control") [required "required"])))))