Minor refactor on shapes data events.

Adding more asserts and more specs.
This commit is contained in:
Andrey Antukh 2017-03-02 16:13:42 +01:00
parent fdf3f1b6f0
commit b3a2ae3eb2
No known key found for this signature in database
GPG key ID: 4DFEBCB8316A8B95
8 changed files with 281 additions and 205 deletions

View file

@ -121,7 +121,7 @@
props {:x x1 :y y1 :width width :height height}]
(letfn [(on-input [ev]
(let [content (dom/event->inner-text ev)]
(st/emit! (uds/update-text id {:content content}))))]
(st/emit! (uds/update-text id content))))]
[:foreignObject props
[:div {:style style
:ref "container"

View file

@ -28,7 +28,7 @@
(defonce +shortcuts+
{:shift+g #(st/emit! (dw/toggle-flag :grid))
:ctrl+g #(st/emit! (uds/group-selected))
:ctrl+shift+g #(st/emit! (uds/degroup-selected))
:ctrl+shift+g #(st/emit! (uds/ungroup-selected))
:ctrl+shift+m #(st/emit! (dw/toggle-flag :sitemap))
:ctrl+shift+f #(st/emit! (dw/toggle-flag :drawtools))
:ctrl+shift+i #(st/emit! (dw/toggle-flag :icons))

View file

@ -92,14 +92,13 @@
"A generic component that displays the shape name
if it is available and allows inline edition of it."
{:mixins [mx/static (mx/local)]}
[{:keys [rum/local]} shape]
[{:keys [rum/local]} {:keys [id] :as shape}]
(letfn [(on-blur [event]
(let [target (dom/event->target event)
parent (.-parentNode target)
data {:id (:id shape)
:name (dom/get-value target)}]
name (dom/get-value target)]
(set! (.-draggable parent) true)
(st/emit! (uds/update-shape data))
(st/emit! (uds/rename-shape id name))
(swap! local assoc :edition false)))
(on-key-down [event]
(js/console.log event)
@ -295,8 +294,8 @@
groups (into #{} xform selected)]
(= 1 (count groups))))
(defn- allow-degrouping?
"Check if the current situation allows degrouping
(defn- allow-ungrouping?
"Check if the current situation allows ungrouping
of the currently selected shapes."
[selected shapes-map]
(let [xform (comp (map shapes-map)
@ -310,11 +309,11 @@
[selected shapes-map]
(let [duplicate #(st/emit! (uds/duplicate-selected))
group #(st/emit! (uds/group-selected))
degroup #(st/emit! (uds/degroup-selected))
ungroup #(st/emit! (uds/ungroup-selected))
delete #(st/emit! (uds/delete-selected))
allow-grouping? (allow-grouping? selected shapes-map)
allow-degrouping? (allow-degrouping? selected shapes-map)
allow-ungrouping? (allow-ungrouping? selected shapes-map)
allow-duplicate? (= 1 (count selected))
allow-deletion? (pos? (count selected))]
[:div.layers-tools
@ -331,8 +330,8 @@
i/folder]
[:li.degroup-layer.tooltip.tooltip-top
{:alt "Ungroup"
:class (when-not allow-degrouping? "disable")
:on-click degroup}
:class (when-not allow-ungrouping? "disable")
:on-click ungroup}
i/ungroup]
[:li.delete-layer.tooltip.tooltip-top
{:alt "Delete"

View file

@ -19,8 +19,9 @@
[uxbox.util.mixins :as mx :include-macros true]
[uxbox.main.geom :as geom]
[uxbox.util.dom :as dom]
[uxbox.util.math :refer (precision-or-0)]
[uxbox.util.data :refer (parse-int parse-float read-string)]))
[uxbox.util.geom.point :as gpt]
[uxbox.util.data :refer (parse-int parse-float read-string)]
[uxbox.util.math :refer (precision-or-0)]))
(mx/defc circle-measures-menu
{:mixins [mx/static]}
@ -30,7 +31,7 @@
value (parse-int value 0)
sid (:id shape)
props {attr value}]
(st/emit! (uds/update-size sid props))))
(st/emit! (uds/update-dimensions sid props))))
(on-rotation-change [event]
(let [value (dom/event->value event)
value (parse-int value 0)
@ -40,8 +41,8 @@
(let [value (dom/event->value event)
value (parse-int value nil)
sid (:id shape)
props {attr value}]
(st/emit! (uds/update-position sid props))))
point (gpt/point {attr value})]
(st/emit! (uds/update-position sid point))))
(on-proportion-lock-change [event]
(if (:proportion-lock shape)
(st/emit! (uds/unlock-proportions id))

View file

@ -19,8 +19,9 @@
[uxbox.util.mixins :as mx :include-macros true]
[uxbox.main.geom :as geom]
[uxbox.util.dom :as dom]
[uxbox.util.math :refer (precision-or-0)]
[uxbox.util.data :refer (parse-int parse-float read-string)]))
[uxbox.util.geom.point :as gpt]
[uxbox.util.data :refer (parse-int parse-float read-string)]
[uxbox.util.math :refer (precision-or-0)]))
(defn- icon-measures-menu-render
[own menu shape]
@ -29,7 +30,7 @@
value (parse-int value 0)
sid (:id shape)
props {attr value}]
(st/emit! (uds/update-size sid props))))
(st/emit! (uds/update-dimensions sid props))))
(on-rotation-change [event]
(let [value (dom/event->value event)
value (parse-int value 0)
@ -39,8 +40,8 @@
(let [value (dom/event->value event)
value (parse-int value nil)
sid (:id shape)
props {attr value}]
(st/emit! (uds/update-position sid props))))
point (gpt/point {attr value})]
(st/emit! (uds/update-position sid point))))
(on-proportion-lock-change [event]
(if (:proportion-lock shape)
(st/emit! (uds/unlock-proportions (:id shape)))

View file

@ -7,7 +7,7 @@
(ns uxbox.main.ui.workspace.sidebar.options.rect-measures
(:require [lentes.core :as l]
[uxbox.util.i18n :refer (tr)]
[uxbox.util.i18n :refer [tr]]
[uxbox.util.router :as r]
[potok.core :as ptk]
[uxbox.main.store :as st]
@ -17,8 +17,9 @@
[uxbox.util.mixins :as mx :include-macros true]
[uxbox.main.geom :as geom]
[uxbox.util.dom :as dom]
[uxbox.util.math :refer (precision-or-0)]
[uxbox.util.data :refer (parse-int parse-float read-string)]))
[uxbox.util.geom.point :as gpt]
[uxbox.util.data :refer [parse-int parse-float read-string]]
[uxbox.util.math :refer [precision-or-0]]))
(mx/defc rect-measures-menu
{:mixins [mx/static]}
@ -26,15 +27,16 @@
(letfn [(on-size-change [event attr]
(let [value (-> (dom/event->value event)
(parse-int 0))]
(st/emit! (uds/update-size id {attr value}))))
(st/emit! (uds/update-dimensions id {attr value}))))
(on-rotation-change [event]
(let [value (-> (dom/event->value event)
(parse-int 0))]
(st/emit! (uds/update-rotation id value))))
(on-pos-change [event attr]
(let [value (-> (dom/event->value event)
(parse-int nil))]
(st/emit! (uds/update-position id {attr value}))))
(parse-int nil))
point (gpt/point {attr value})]
(st/emit! (uds/update-position id point))))
(on-proportion-lock-change [event]
(if (:proportion-lock shape)
(st/emit! (uds/unlock-proportions id))