Making progress on a good invoice experience.

This commit is contained in:
Bryce
2024-03-19 09:14:51 -07:00
parent 8fb27d6c66
commit f6f6dcc865
9 changed files with 127 additions and 76 deletions

View File

@@ -13,7 +13,8 @@
[malli.registry :as mr]
[malli.transform :as mt2]
[slingshot.slingshot :refer [throw+ try+]]
[taoensso.encore :refer [filter-vals]]))
[taoensso.encore :refer [filter-vals]]
[reagent.debug :as d]))
(defn html-response [hiccup & {:keys [status headers oob] :or {status 200 headers {} oob []}}]
{:status status
@@ -37,7 +38,7 @@
[hiccup]
(mapcat identity
(-> opts
(assoc-in [:headers "hx-trigger"] "modalopen")
(update-in [:headers "hx-trigger"] (fn [ht] (str/join ", " (filter identity [ht "modalopen"]))))
(assoc-in [:headers "hx-retarget"] "#modal-content")
(assoc-in [:headers "hx-reswap"] "innerHTML"))))))
@@ -179,23 +180,35 @@
:form-validation-errors [m]}))))
(def clj-date-schema
(mc/schema [inst? {:decode/arbitrary (fn [m]
(alog/peek ::decode
(if (string? m)
(coerce/to-date-time (atime/parse m atime/normal-date))
(mc/schema [inst? {:date-format atime/normal-date}]))
m)))
:encode/arbitrary (fn [m]
(alog/peek ::encode
(cond
(inst? m)
(atime/unparse-local (coerce/to-date-time m) atime/normal-date)
(def date-transformer
(mt2/transformer
{:decoders
{'inst? {:compile (fn [schema _]
(let [properties (mc/properties schema)
format (:format properties atime/normal-date)]
(fn [m]
(if (string? m)
(coerce/to-date-time (atime/parse m format))
(instance? org.joda.time.DateTime m)
(atime/unparse-local m atime/normal-date)
m))))}}
:encoders
{'inst?
{:compile (fn [schema _]
(let [properties (mc/properties schema)
format (:format properties atime/normal-date)]
(fn [m]
(cond
(inst? m)
(atime/unparse-local (coerce/to-date-time m) format)
(instance? org.joda.time.DateTime m)
(atime/unparse-local m format)
:else
m))))}}}))
:else
m)))}]))
(def date-range-transformer
@@ -307,6 +320,7 @@
(def main-transformer
(mt2/transformer
parse-empty-as-nil
date-transformer
(mt2/key-transformer {:encode keyword->str :decode str->keyword})
mt2/string-transformer
mt2/json-transformer
@@ -559,7 +573,7 @@
(defn round-money [d]
(with-precision 2
(double (.setScale (bigdec d) 2 java.math.RoundingMode/HALF_UP))))
(double (.setScale (bigdec d) 2 java.math.RoundingMode/HALF_UP))))