Break up ferti page components.

Commit
239af6f6f547b495598d94c0951afce4ccaf39e8
Author
Marius Peter <dev@marius-peter.com>
Author date
Committer
Marius Peter <dev@marius-peter.com>
Committer date
views.rkt
index b6614991..7cd7b6f8 100644..100644
@@ -84,80 +84,80 @@
84 84
85 85 ;; Pages
86 86
87 Removed: (define (ferti-page ferti-recipe latest-measurement-hash latest-target-hash measurements)
87 Added: (define (ferti-page fertilizer-recipe latest-measurement-hash latest-target-hash measurements)
88 88 (page-template
89 89 "Ferti"
90 90 `((h1 ((class "display-1 mb-3")) "Ferti")
91 Removed: ;;;;;;;;
92 Removed: ;; Ferti
93 Removed: ;;;;;;;;
94 Removed: (h2 () "Recette")
95 Removed: ,(if (ormap (λ (pair) (not (zero? (cdr pair)))) ferti-recipe)
96 Removed: `(table ((class "table"))
97 Removed: (tr (th "Intrant") (th ((class "text-end")) "Quantité (g/L)"))
98 Removed: ,@(for/list ([fertilizer-amount ferti-recipe]
99 Removed: #:when (not (zero? (cdr fertilizer-amount))))
100 Removed: (match-define (cons fertilizer amount) fertilizer-amount)
101 Removed: `(tr (td () ,(fertilizer-name fertilizer))
102 Removed: (td ((class "text-end font-monospace")) ,(round 2 amount)))))
103 Removed: `(p "La recette Ferti requiert au moins un relevé et une cible."))
104 Removed: ;;;;;;;;;
105 Removed: ;; Cibles
106 Removed: ;;;;;;;;;
107 Removed: (h2 () "Dernière Cible")
108 Removed: (a ((class "btn btn-primary mb-3") [href "/target/new"]) "Créer une cible")
109 Removed: (table ((class "table"))
110 Removed: (tr (th "Nutriment")
111 Removed: (th ((class "text-end")) "Dernier Relevé")
112 Removed: (th ((class "text-end")) "Dernière Cible")
113 Removed: (th ((class "text-end")) "Delta (%)"))
114 Removed: ,@(for/list ([n (get-nutrients)])
115 Removed: (define latest-measurement (hash-ref latest-measurement-hash n #f))
116 Removed: (define latest-target (hash-ref latest-target-hash n #f))
117 Removed: (define delta-percentage
118 Removed: (cond
119 Removed: [(false? latest-target) #f]
120 Removed: [(zero? latest-target) -100]
121 Removed: [(zero? latest-measurement) 100]
122 Removed: [(number? latest-target)
123 Removed: (* 100 (/ (- latest-target latest-measurement) latest-measurement))]))
124 Removed: `(tr (td ,(nutrient-name n))
125 Removed: (td ((class "text-end font-monospace"))
126 Removed: ,(if latest-measurement
127 Removed: (round 2 latest-measurement)
128 Removed: "—"))
129 Removed: (td ((class "text-end font-monospace"))
130 Removed: ,(if latest-target
131 Removed: (round 2 latest-target)
132 Removed: "—"))
133 Removed: (td ((class "text-end font-monospace"))
134 Removed: ,(if delta-percentage
135 Removed: (round 1 delta-percentage)
136 Removed: "—")))))
137 Removed: ;;;;;;;;;;
138 Removed: ;; Relevés
139 Removed: ;;;;;;;;;;
140 Removed: (h2 () "Relevés")
141 Removed: (a ((class "btn btn-primary mb-3") [href "/measurement/new"]) "Ajouter un relevé")
142 Removed: (table ((class "table table-striped"))
143 Removed: (tr (th "Date")
144 Removed: (th ((class "text-end")) "N")
145 Removed: (th ((class "text-end")) "P")
146 Removed: (th ((class "text-end")) "K"))
147 Removed: ,@(for/list ([m measurements])
148 Removed: (define measured-on (nutrient-measurement-date m))
149 Removed: (define-values (n p k)
150 Removed: (apply values
151 Removed: (for/list ([nutrient '("Nitrate Nitrogen" "Phosphorus" "Potassium")])
152 Removed: (define n (get-nutrient #:name nutrient))
153 Removed: (define mnv (get-nutrient-measurement-value m n))
154 Removed: (if (real? mnv)
155 Removed: (round 2 mnv)
156 Removed: "—"))))
157 Removed: `(tr (td ,measured-on)
158 Removed: (td ((class "text-end font-monospace")) ,n)
159 Removed: (td ((class "text-end font-monospace")) ,p)
160 Removed: (td ((class "text-end font-monospace")) ,k)))))))
91 Added: ,@(ferti-recipe fertilizer-recipe)
92 Added: ,@(ferti-targets latest-measurement-hash latest-target-hash)
93 Added: ,@(ferti-measurements measurements))))
94 Added:
95 Added: (define (ferti-recipe ferti-recipe)
96 Added: `((h2 () "Recette")
97 Added: ,(if (ormap (λ (pair) (not (zero? (cdr pair)))) ferti-recipe)
98 Added: `(table ((class "table"))
99 Added: (tr (th "Intrant") (th ((class "text-end")) "Quantité (g/L)"))
100 Added: ,@(for/list ([fertilizer-amount ferti-recipe]
101 Added: #:when (not (zero? (cdr fertilizer-amount))))
102 Added: (match-define (cons fertilizer amount) fertilizer-amount)
103 Added: `(tr (td () ,(fertilizer-name fertilizer))
104 Added: (td ((class "text-end font-monospace")) ,(round 2 amount)))))
105 Added: `(p "La recette Ferti requiert au moins un relevé et une cible."))))
106 Added:
107 Added: (define (ferti-targets latest-measurement-hash latest-target-hash)
108 Added: `((h2 () "Dernière Cible")
109 Added: (a ((class "btn btn-primary mb-3") [href "/target/new"]) "Créer une cible")
110 Added: (table ((class "table"))
111 Added: (tr (th "Nutriment")
112 Added: (th ((class "text-end")) "Dernier Relevé")
113 Added: (th ((class "text-end")) "Dernière Cible")
114 Added: (th ((class "text-end")) "Delta (%)"))
115 Added: ,@(for/list ([n (get-nutrients)])
116 Added: (define latest-measurement (hash-ref latest-measurement-hash n #f))
117 Added: (define latest-target (hash-ref latest-target-hash n #f))
118 Added: (define delta-percentage
119 Added: (cond
120 Added: [(false? latest-target) #f]
121 Added: [(zero? latest-target) -100]
122 Added: [(zero? latest-measurement) 100]
123 Added: [(number? latest-target)
124 Added: (* 100 (/ (- latest-target latest-measurement) latest-measurement))]))
125 Added: `(tr (td ,(nutrient-name n))
126 Added: (td ((class "text-end font-monospace"))
127 Added: ,(if latest-measurement
128 Added: (round 2 latest-measurement)
129 Added: "—"))
130 Added: (td ((class "text-end font-monospace"))
131 Added: ,(if latest-target
132 Added: (round 2 latest-target)
133 Added: "—"))
134 Added: (td ((class "text-end font-monospace"))
135 Added: ,(if delta-percentage
136 Added: (round 1 delta-percentage)
137 Added: "—")))))))
138 Added:
139 Added: (define (ferti-measurements measurements)
140 Added: `((h2 () "Relevés")
141 Added: (a ((class "btn btn-primary mb-3") [href "/measurement/new"]) "Ajouter un relevé")
142 Added: (table ((class "table table-striped"))
143 Added: (tr (th "Date")
144 Added: (th ((class "text-end")) "N")
145 Added: (th ((class "text-end")) "P")
146 Added: (th ((class "text-end")) "K"))
147 Added: ,@(for/list ([m measurements])
148 Added: (define measured-on (nutrient-measurement-date m))
149 Added: (define-values (n p k)
150 Added: (apply values
151 Added: (for/list ([nutrient '("Nitrate Nitrogen" "Phosphorus" "Potassium")])
152 Added: (define n (get-nutrient #:name nutrient))
153 Added: (define mnv (get-nutrient-measurement-value m n))
154 Added: (if (real? mnv)
155 Added: (round 2 mnv)
156 Added: "—"))))
157 Added: `(tr (td ,measured-on)
158 Added: (td ((class "text-end font-monospace")) ,n)
159 Added: (td ((class "text-end font-monospace")) ,p)
160 Added: (td ((class "text-end font-monospace")) ,k))))))
161 161
162 162 (define (new-measurement-page)
163 163 (page-template "Nouveau relevé"