Add crop requirements logic + views.

Commit
8020f23b1cefe9ad6cef9bbd47d3879caeba0d0d
Author
Marius Peter <dev@marius-peter.com>
Author date
Committer
Marius Peter <dev@marius-peter.com>
Committer date
Changed files
handlers.rkt
index 179775eb..010fe8e0 100644..100644
@@ -10,8 +10,8 @@
10 10 "views.rkt"
11 11 "formlets.rkt"
12 12 "models/user.rkt"
13 Removed: "models/nutrient.rkt"
14 13 "models/nutrient-measurement.rkt"
14 Added: "models/crop-requirement.rkt"
15 15 "models/crop-rotation.rkt"
16 16 "models/fertilizer-product.rkt"
17 17 "services/nnls.rkt")
@@ -27,6 +27,7 @@
27 27 [("ferti" "measurements-and-rotations") #:method "get" ferti-measurements-and-rotations]
28 28 [("ferti" "recipes" (string-arg)) #:method "get" ferti-recipe]
29 29 [("ferti" "fertilizers") #:method "get" ferti-fertilizers]
30 Added: [("ferti" "crop-requirements") #:method "get" ferti-crop-requirements]
30 31 ;; Nutrient measurements
31 32 [("ferti" "measurements" "new") #:method "get" new-measurement]
32 33 [("ferti" "measurements" "create") #:method "post" create-measurement]
@@ -71,8 +72,10 @@
71 72 (render-page (ferti-recipe-page date-string ferti-recipe)))
72 73
73 74 (define (ferti-fertilizers _)
74 Removed: (define fertilizers (get-fertilizer-products))
75 Removed: (render-page (ferti-fertilizers-page fertilizers)))
75 Added: (render-page (ferti-fertilizers-page (get-fertilizer-products))))
76 Added:
77 Added: (define (ferti-crop-requirements _)
78 Added: (render-page (ferti-crop-requirements-page (get-crop-requirements))))
76 79
77 80 ;; Nutrient measurements
78 81
models/crop-requirement.rkt
index 018c6c11..bf61d0d7 100644..100644
@@ -93,8 +93,7 @@
93 93 (define (get-crop-requirement #:id [cr-id #f] #:profile [profile #f])
94 94 (define where
95 95 (cond
96 Removed: [(and cr-id profile)
97 Removed: (scalar-expr-qq (and (= cr.id ,cr-id) (= cr.profile ,profile)))]
96 Added: [(and cr-id profile) (scalar-expr-qq (and (= cr.id ,cr-id) (= cr.profile ,profile)))]
98 97 [cr-id (scalar-expr-qq (= cr.id ,cr-id))]
99 98 [profile (scalar-expr-qq (= cr.profile ,profile))]
100 99 [else (error 'get-crop-requirement "one of #:id or #:profile must be provided")]))
views.rkt
index 09679cb1..bd6b3b9c 100644..100644
@@ -5,6 +5,7 @@
5 5 ferti-measurements-and-rotations-page
6 6 ferti-recipe-page
7 7 ferti-fertilizers-page
8 Added: ferti-crop-requirements-page
8 9 new-measurement-page
9 10 new-rotation-page
10 11 new-fertilizer-page
@@ -19,6 +20,7 @@
19 20 "models/user.rkt"
20 21 "models/nutrient.rkt"
21 22 "models/nutrient-measurement.rkt"
23 Added: "models/crop.rkt"
22 24 "models/crop-rotation.rkt"
23 25 "models/crop-requirement.rkt"
24 26 "models/fertilizer-product.rkt")
@@ -89,7 +91,10 @@
89 91 (a ((class "nav-link") (aria-current "page") (href "/ferti/measurements-and-rotations"))
90 92 "Relevés & Assolements"))
91 93 (li ((class "nav-item"))
92 Removed: (a ((class "nav-link") (aria-current "page") (href "/ferti/fertilizers")) "Intrants"))))
94 Added: (a ((class "nav-link") (aria-current "page") (href "/ferti/fertilizers")) "Intrants"))
95 Added: (li ((class "nav-item"))
96 Added: (a ((class "nav-link") (aria-current "page") (href "/ferti/crop-requirements"))
97 Added: "Cultures"))))
93 98
94 99 (define (ferti-index-page)
95 100 (ferti-template
@@ -127,7 +132,7 @@
127 132 (href ,(format "/ferti/recipes/~a" (crop-rotation-date maybe-rotation))))
128 133 "Consulter")
129 134 "—")))))))
130 Removed: (ferti-template `((h2 () "Relevés & Assolements")
135 Added: (ferti-template `((h2 () "Relevés et Assolements")
131 136 (div ((class "btn-group mb-3"))
132 137 (a ((class "btn btn-primary") [href "/ferti/measurements/new"])
133 138 "Ajouter un relevé"))
@@ -163,6 +168,21 @@
163 168 "/ferti/fertilizers/new"])
164 169 "Ajouter un intrant")
165 170 ,table)))
171 Added:
172 Added: (define (ferti-crop-requirements-page crop-requirements)
173 Added: (define table
174 Added: `(table ((class "table table-striped"))
175 Added: (tr (th "Culture") (th "Profil"))
176 Added: ,@(for/list ([cr crop-requirements])
177 Added: (define crop-id (crop-requirement-crop-id cr))
178 Added: `(tr (td ,(if crop-id
179 Added: (string-titlecase (crop-name (get-crop #:id crop-id)))
180 Added: "—"))
181 Added: (td ,(string-titlecase (crop-requirement-profile cr)))))))
182 Added: (ferti-template `((h2 () "Profils de culture")
183 Added: (a ((class "btn btn-primary mb-3") [href "/ferti/crop-requirements/new"])
184 Added: "Ajouter un profil")
185 Added: ,table)))
166 186
167 187 (define (new-measurement-page)
168 188 (page-template "Nouveau relevé"