Factor out average-crop-requirement-nutrient-values.

Commit
36b3bd1009e5cbd8545b6abbb5988c00d7274c15
Author
Marius Peter <dev@marius-peter.com>
Author date
Committer
Marius Peter <dev@marius-peter.com>
Committer date
Changed files
handlers.rkt
index a5c9d6b9..a4de123c 100644..100644
@@ -70,23 +70,8 @@
70 70 (define (create-target req)
71 71 (define-values (effective-on crop-requirement-mix)
72 72 (formlet-process (targets-formlet) req))
73 Removed:
74 Removed: (define (average-nutrient-values mix)
75 Removed: (define average-values
76 Removed: (for/fold ([acc (hash)]) ([pair (in-list mix)])
77 Removed: (define crop-requirement (car pair))
78 Removed: (define percentage (/ (cdr pair) 100))
79 Removed: (for/fold ([acc acc])
80 Removed: ([nv (in-list (get-crop-requirement-values crop-requirement))])
81 Removed: (define n (car nv))
82 Removed: (define v (cdr nv))
83 Removed: (hash-update acc n
84 Removed: (λ (old) (+ old (* v percentage)))
85 Removed: (λ () (* v percentage))))))
86 Removed: (for/list ([(k v) (in-hash average-values)])
87 Removed: (cons k v)))
88 Removed:
89 Removed: (define target-nutrient-values (average-nutrient-values crop-requirement-mix))
73 Added: (define target-nutrient-values
74 Added: (average-crop-requirement-nutrient-values crop-requirement-mix))
90 75 (create-nutrient-target! effective-on target-nutrient-values)
91 76 (redirect-to "/"))
92 77
models/crop-requirement.rkt
index 4faa6bb8..23740e7d 100644..100644
@@ -143,3 +143,20 @@
143 143 (query-exec (current-conn)
144 144 (delete #:from crop_requirements
145 145 #:where (= id ,id))))
146 Added:
147 Added:
148 Added: ;; Helpers
149 Added:
150 Added: (define (average-crop-requirement-nutrient-values mix)
151 Added: (define average-values
152 Added: (for/fold ([acc (hash)]) ([pair (in-list mix)])
153 Added: (define crop-requirement (car pair))
154 Added: (define percentage (/ (cdr pair) 100))
155 Added: (for/fold ([acc acc])
156 Added: ([nv (in-list (get-crop-requirement-values crop-requirement))])
157 Added: (match-define (cons n v) nv)
158 Added: (hash-update acc n
159 Added: (λ (old) (+ old (* v percentage)))
160 Added: (λ () (* v percentage))))))
161 Added: (for/list ([(n v) (in-hash average-values)])
162 Added: (cons n v)))