Skip to content

Commit

Permalink
Clean up code and show number diffs
Browse files Browse the repository at this point in the history
  • Loading branch information
mtsknn committed Jun 1, 2021
1 parent f90f5bf commit b8a1135
Showing 1 changed file with 68 additions and 15 deletions.
83 changes: 68 additions & 15 deletions src/need_for_speed/results.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,72 @@
[need-for-speed.data :as data]
[need-for-speed.form :as form]))

(defn fuel-consumption-multiplier [speed]
(Math/pow 1.009 (dec speed)))

(defn fuel-per-100km [base-consumption speed]
(* base-consumption (fuel-consumption-multiplier speed)))

(defn total-fuel [consumption distance]
(* consumption (/ distance 100)))

(defn total-time [distance speed]
(/ distance speed))

(def format-number
(let [formatter (js/Intl.NumberFormat. "en" #js {:minimumFractionDigits 2
:maximumFractionDigits 2})]
(fn [number]
(.format formatter number))))

(def diff-numbers
(let [formatter (js/Intl.NumberFormat. "en" #js {:signDisplay "always"
:minimumFractionDigits 2
:maximumFractionDigits 2})]
(fn [x y]
(let [number (- x y)]
(if (= 0 number)
"±0"
(.format formatter number))))))

(defn view []
(let [base-fuel (-> (@form/state :car) data/cars :consumption)
distance (@form/state :distance)
speed-x (@form/state :speed-x)
speed-x-multiplier (Math/pow 1.009 (dec speed-x))
speed-y (@form/state :speed-y)
speed-y-multiplier (Math/pow 1.009 (dec speed-y))
fuel-x-per-100 (* (/ distance 100) base-fuel speed-x-multiplier)
fuel-y-per-100 (* (/ distance 100) base-fuel speed-y-multiplier)
time-x (/ distance speed-x)
time-y (/ distance speed-y)]
[:div
[:div (gstring/format "Fuel at speed X: %.2f litres" fuel-x-per-100)]
[:div (gstring/format "Fuel at speed Y: %.2f litres" fuel-y-per-100)]
[:div (gstring/format "Time at speed X: %.2f hours" time-x)]
[:div (gstring/format "Time at speed Y: %.2f hours" time-y)]]))
(let [{:keys [car distance speed-x speed-y]} @form/state
base-fuel (-> car data/cars :consumption)
fuel-x-per-100km (fuel-per-100km base-fuel speed-x)
fuel-y-per-100km (fuel-per-100km base-fuel speed-y)
fuel-x (total-fuel fuel-x-per-100km distance)
fuel-y (total-fuel fuel-y-per-100km distance)
time-x (total-time distance speed-x)
time-y (total-time distance speed-y)]
[:pre.mt-4
[:div
(gstring/format "Fuel per 100km at %d km/h: %s litres (%s)"
speed-x
(format-number fuel-x-per-100km)
(diff-numbers fuel-x-per-100km fuel-y-per-100km))]
[:div
(gstring/format "Total fuel at %d km/h: %s litres (%s)"
speed-x
(format-number fuel-x)
(diff-numbers fuel-x fuel-y))]
[:div
(gstring/format "Total time at %d km/h: %s hours (%s)"
speed-x
(format-number time-x)
(diff-numbers time-x time-y))]
[:hr.my-4]
[:div
(gstring/format "Fuel per 100km at %d km/h: %s litres (%s)"
speed-y
(format-number fuel-y-per-100km)
(diff-numbers fuel-y-per-100km fuel-x-per-100km))]
[:div
(gstring/format "Total fuel at %d km/h: %s litres (%s)"
speed-y
(format-number fuel-y)
(diff-numbers fuel-y fuel-x))]
[:div
(gstring/format "Total time at %d km/h: %s hours (%s)"
speed-y
(format-number time-y)
(diff-numbers time-y time-x))]]))

0 comments on commit b8a1135

Please sign in to comment.