Simplified forms considerably
This commit is contained in:
@@ -148,55 +148,59 @@
|
||||
value
|
||||
(conj value {:key (random-uuid)
|
||||
:new? true}))]
|
||||
[:div {:style {:margin-bottom "1em"}}
|
||||
[:div {:style {:margin-bottom "0.25em"}}
|
||||
(for [[i override] (map vector (range) value)
|
||||
:let [is-disabled? (if (= false allow-change?)
|
||||
(not (boolean (:new? override)))
|
||||
nil)]
|
||||
]
|
||||
^{:key (:key override)}
|
||||
[:div.level
|
||||
[:div.level-left {:style (when (and (= i (dec (count value)))
|
||||
(:new? override))
|
||||
{:background "#EEE"
|
||||
:padding "0.25em 1em 0.25em 0em"})}
|
||||
[:div.level-item
|
||||
(if (:new? override)
|
||||
|
||||
[:div.icon.is-medium {:class (when (not= i (dec (count value)))
|
||||
"has-text-info")}
|
||||
[:i.fa.fa-plus]]
|
||||
[:div.icon.is-medium])]
|
||||
[:<> (for [[idx template] (map vector (range ) template)]
|
||||
^{:key idx}
|
||||
[:div.level {:style {:margin-bottom "0.25em"}}
|
||||
[:div.level-left {:style {:padding "0.5em 1em"}
|
||||
:class (cond
|
||||
(and (= i (dec (count value)))
|
||||
(:new? override))
|
||||
"has-background-light"
|
||||
|
||||
[:div.level-item
|
||||
(update template 1 assoc
|
||||
:value (let [value (get-in override (get-in template [1 :field])) ;; TODO this is really ugly to support maps or strings
|
||||
value (if (map? value)
|
||||
(dissoc value :key :new?)
|
||||
value)]
|
||||
(if (= value {})
|
||||
nil
|
||||
value))
|
||||
:disabled (or is-disabled? (get-in template [1 :disabled]))
|
||||
:on-change (fn [e]
|
||||
(reset! value-repr
|
||||
(into []
|
||||
(filter (fn [r]
|
||||
(not= [:key :new?] (keys r)))
|
||||
(assoc-in value (into [i] (get-in template [1 :field]))
|
||||
(let [this-value (if (and e (.. e -target))
|
||||
(.. e -target -value )
|
||||
e)]
|
||||
(if (map? this-value)
|
||||
(update this-value :key (fnil identity (random-uuid)))
|
||||
this-value)) ))))
|
||||
(on-change (mapv
|
||||
(fn [v]
|
||||
(dissoc v :new? :key))
|
||||
@value-repr))))])
|
||||
]
|
||||
(:new? override)
|
||||
"has-background-info-light"
|
||||
:else
|
||||
"")}
|
||||
(let [template (if (fn? template)
|
||||
(template override)
|
||||
template)]
|
||||
|
||||
[:<> (for [[idx template] (map vector (range ) template)]
|
||||
^{:key idx}
|
||||
|
||||
[:div.level-item
|
||||
(update template 1 assoc
|
||||
:value (let [value (get-in override (get-in template [1 :field])) ;; TODO this is really ugly to support maps or strings
|
||||
value (if (map? value)
|
||||
(dissoc value :key :new?)
|
||||
value)]
|
||||
(if (= value {})
|
||||
nil
|
||||
value))
|
||||
:disabled (or is-disabled? (get-in template [1 :disabled]))
|
||||
:on-change (fn [e]
|
||||
(reset! value-repr
|
||||
(into []
|
||||
(filter (fn [r]
|
||||
(not= [:key :new?] (keys r)))
|
||||
(assoc-in value
|
||||
(into [i] (get-in template [1 :field]))
|
||||
(let [this-value (if (and e (.. e -target))
|
||||
(.. e -target -value )
|
||||
e)]
|
||||
(if (map? this-value)
|
||||
(update this-value :key (fnil identity (random-uuid)))
|
||||
this-value)) ))))
|
||||
(on-change (mapv
|
||||
(fn [v]
|
||||
(dissoc v :new? :key))
|
||||
@value-repr))))])
|
||||
])
|
||||
(when-not disable-remove?
|
||||
[:div.level-item
|
||||
[:a.button.level-item
|
||||
@@ -537,3 +541,18 @@
|
||||
|
||||
(defn account->match-text [x]
|
||||
(str (:numeric-code x) " - " (:name x)))
|
||||
|
||||
(defn str->int [x]
|
||||
(cond
|
||||
(nil? x)
|
||||
nil
|
||||
|
||||
(and (string? x)
|
||||
(str/blank? x))
|
||||
nil
|
||||
|
||||
(string? x)
|
||||
(js/parseInt x)
|
||||
|
||||
:else
|
||||
x))
|
||||
|
||||
Reference in New Issue
Block a user