Making progress on a good invoice experience.
This commit is contained in:
@@ -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))))
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user