Add ferti recipe table to the index page.

Commit
b75fd3a2c01f943b099ef5809987c4a72a3a26df
Author
Marius Peter <dev@marius-peter.com>
Author date
Committer
Marius Peter <dev@marius-peter.com>
Committer date
Changed files
handlers.rkt
index 0fe131f8..5ff000e9 100644..100644
@@ -9,7 +9,8 @@
9 9 "formlets.rkt"
10 10 "models/nutrient-measurement.rkt"
11 11 "models/nutrient-target.rkt"
12 Removed: "models/crop-requirement.rkt")
12 Added: "models/crop-requirement.rkt"
13 Added: "services/nnls.rkt")
13 14
14 15 (define-values (app-dispatch _)
15 16 (dispatch-rules
@@ -26,9 +27,10 @@
26 27
27 28 (define (index _)
28 29 (define measurements (get-nutrient-measurements))
30 Added: (define ferti-recipe (find-ferti-recipe))
29 31 (response/xexpr
30 32 #:preamble #"<!DOCTYPE html>"
31 Removed: (index-page measurements)))
33 Added: (index-page measurements ferti-recipe)))
32 34
33 35
34 36 ;; Nutrient measurements
models/fertilizer-product.rkt
index b93f082b..2322cc00 100644..100644
@@ -4,9 +4,11 @@
4 4 ;; Struct definitions
5 5 fertilizer-product
6 6 fertilizer-product?
7 Removed: fertilizer-product-id fertilizer-product-brand-name
7 Added: fertilizer-product-id
8 8 (rename-out
9 Removed: [fertilizer-product-nutrient-values fertilizer-product-values])
9 Added: [fertilizer-product-canonical-name fertilizer-name]
10 Added: [fertilizer-product-nutrient-values fertilizer-product-values]
11 Added: [fertilizer-product-brand-name fertilizer-brand-name])
10 12 ;; SQL CRUD
11 13 (contract-out
12 14 [create-fertilizer-product! (->* (string?
@@ -167,11 +169,10 @@
167 169 (acc canonical-name
168 170 brand-name
169 171 (list nv-pair)))))
170 Removed: (and A
171 Removed: (fertilizer-product the-id
172 Removed: (acc-canonical-name A)
173 Removed: (reverse (acc-pairs A))
174 Removed: (acc-brand-name A)))]))
172 Added: (fertilizer-product the-id
173 Added: (acc-canonical-name A)
174 Added: (reverse (acc-pairs A))
175 Added: (acc-brand-name A))]))
175 176
176 177 (define (get-fertilizer-product-values fertilizer-product)
177 178 (for/list ([(nutrient-id name formula value_ppm)
views.rkt
index d183cbee..92054599 100644..100644
@@ -9,7 +9,8 @@
9 9 "formlets.rkt"
10 10 "models/nutrient.rkt"
11 11 "models/nutrient-measurement.rkt"
12 Removed: "models/nutrient-target.rkt")
12 Added: "models/nutrient-target.rkt"
13 Added: "models/fertilizer-product.rkt")
13 14
14 15
15 16 (define (page-template title body-xexpr)
@@ -67,15 +68,37 @@
67 68 ;; Page helpers
68 69
69 70 (define (round n number)
70 Removed: (~r number #:precision n))
71 Added: (~r number #:precision `(= ,n)))
71 72
72 73
73 74 ;; Pages
74 75
75 Removed: (define (index-page measurements)
76 Added: (define (index-page measurements ferti-recipe)
76 77 (page-template
77 78 "Ferti"
78 79 `((h1 ([class "display-1 mb-3"]) "Ferti")
80 Added:
81 Added:
82 Added: ;;;;;;;;
83 Added: ;; Ferti
84 Added: ;;;;;;;;
85 Added:
86 Added: (h2 () "Recette")
87 Added: (table ([class "table"])
88 Added: (tr (th () "Produit Fertilisant")
89 Added: (th ([class "text-end"]) "Quantité"))
90 Added: ,@(for/list ([fertilizer-amount ferti-recipe]
91 Added: #:when (not (zero? (cdr fertilizer-amount))))
92 Added: (match-define (cons fertilizer amount) fertilizer-amount)
93 Added: `(tr (td () ,(fertilizer-name fertilizer))
94 Added: (td ([class "text-end font-monospace"]) ,(round 2 amount)))))
95 Added:
96 Added:
97 Added: ;;;;;;;;;
98 Added: ;; Cibles
99 Added: ;;;;;;;;;
100 Added:
101 Added: (h2 () "Dernière Cible")
79 102 (a ([class "btn btn-primary mb-3"] [href "/target/new"]) "Créer une cible")
80 103 (table ([class "table"])
81 104 (tr (th "Nutriment")
@@ -85,22 +108,29 @@
85 108 ,@(for/list ([n (get-nutrients)])
86 109 (define latest-target (get-latest-nutrient-target-value n))
87 110 (define latest-measurement (get-latest-nutrient-measurement-value n))
88 Removed: (define delta-percentage (cond
89 Removed: [(false? latest-target)
90 Removed: #f]
91 Removed: [(zero? latest-target)
92 Removed: -100]
93 Removed: [(zero? latest-measurement)
94 Removed: 100]
95 Removed: [(number? latest-target)
96 Removed: (* 100
97 Removed: (/ (- latest-target latest-measurement)
98 Removed: latest-measurement))]))
111 Added: (define delta-percentage
112 Added: (cond
113 Added: [(false? latest-target)
114 Added: #f]
115 Added: [(zero? latest-target)
116 Added: -100]
117 Added: [(zero? latest-measurement)
118 Added: 100]
119 Added: [(number? latest-target)
120 Added: (* 100
121 Added: (/ (- latest-target latest-measurement)
122 Added: latest-measurement))]))
99 123 `(tr (td ,(nutrient-name n))
100 Removed: (td ([class "text-end"]) ,(if latest-measurement (round 2 latest-measurement) "—"))
101 Removed: (td ([class "text-end"]) ,(if latest-target (round 2 latest-target) "—"))
102 Removed: (td ([class "text-end"]) ,(if delta-percentage (round 1 delta-percentage) "—")))))
124 Added: (td ([class "text-end font-monospace"]) ,(if latest-measurement (round 2 latest-measurement) "—"))
125 Added: (td ([class "text-end font-monospace"]) ,(if latest-target (round 2 latest-target) "—"))
126 Added: (td ([class "text-end font-monospace"]) ,(if delta-percentage (round 1 delta-percentage) "—")))))
103 127
128 Added:
129 Added: ;;;;;;;;;;
130 Added: ;; Relevés
131 Added: ;;;;;;;;;;
132 Added:
133 Added: (h2 () "Relevés")
104 134 (a ([class "btn btn-primary mb-3"] [href "/measurement/new"]) "Ajouter un relevé")
105 135 (table ([class "table table-striped"])
106 136 (tr (th "Date")