From f63657509fb6df372b22285fe64e9b0b98c139a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Moya?= Date: Wed, 10 Jun 2020 14:14:51 +0200 Subject: [PATCH] :bug: Add undo to set default grid options operation --- .../tests/uxbox/tests/test_common_pages.clj | 24 +++++++++++++++++-- common/uxbox/common/pages.cljc | 5 ++-- frontend/src/uxbox/main/data/workspace.cljs | 4 ++-- .../src/uxbox/main/data/workspace/grid.cljs | 14 +++++++---- 4 files changed, 36 insertions(+), 11 deletions(-) diff --git a/backend/tests/uxbox/tests/test_common_pages.clj b/backend/tests/uxbox/tests/test_common_pages.clj index ebe465b1a..9eac86a80 100644 --- a/backend/tests/uxbox/tests/test_common_pages.clj +++ b/backend/tests/uxbox/tests/test_common_pages.clj @@ -36,7 +36,14 @@ res (cp/process-changes data chgs)] (t/is (= {:a "a" :b "b"} (get-in res [:options :values :test]))))) - (t/testing "Remove option" + (t/testing "Remove option single" + (let [chg {:type :set-option + :option :test + :value nil} + res (cp/process-changes data [chg])] + (t/is (empty? (keys (get res :options)))))) + + (t/testing "Remove option nested 1" (let [chgs [{:type :set-option :option [:values :test :a] :value "a"} @@ -47,7 +54,20 @@ :option [:values :test] :value nil}] res (cp/process-changes data chgs)] - (t/is (= nil (get-in res [:options :values :test]))))))) + (t/is (empty? (keys (get res :options)))))) + + (t/testing "Remove option nested 2" + (let [chgs [{:type :set-option + :option [:values :test1 :a] + :value "a"} + {:type :set-option + :option [:values :test2 :b] + :value "b"} + {:type :set-option + :option [:values :test2] + :value nil}] + res (cp/process-changes data chgs)] + (t/is (= [:test1] (keys (get-in res [:options :values])))))))) (t/deftest process-change-add-obj (let [data cp/default-page-data diff --git a/common/uxbox/common/pages.cljc b/common/uxbox/common/pages.cljc index 5516592ab..593a0ca67 100644 --- a/common/uxbox/common/pages.cljc +++ b/common/uxbox/common/pages.cljc @@ -407,8 +407,9 @@ (defmethod process-change :set-option [data {:keys [option value]}] (let [path (if (seqable? option) option [option])] - (-> data - (assoc-in (into [:options] path) value)))) + (if value + (assoc-in data (into [:options] path) value) + (assoc data :options (d/dissoc-in (:options data) path))))) (defmethod process-change :add-obj [data {:keys [id obj frame-id parent-id index] :as change}] diff --git a/frontend/src/uxbox/main/data/workspace.cljs b/frontend/src/uxbox/main/data/workspace.cljs index a869298a9..c90cbf317 100644 --- a/frontend/src/uxbox/main/data/workspace.cljs +++ b/frontend/src/uxbox/main/data/workspace.cljs @@ -649,8 +649,6 @@ :left (gpt/point (- 1) 0) :right (gpt/point 1 0))) -(s/def ::loc #{:up :down :bottom :top}) - ;; --- Delete Selected (defn- delete-shapes [ids] @@ -724,6 +722,8 @@ ;; --- Shape Vertical Ordering +(s/def ::loc #{:up :down :bottom :top}) + (defn vertical-order-selected [loc] (us/verify ::loc loc) diff --git a/frontend/src/uxbox/main/data/workspace/grid.cljs b/frontend/src/uxbox/main/data/workspace/grid.cljs index cce5c49ea..7519e7cba 100644 --- a/frontend/src/uxbox/main/data/workspace/grid.cljs +++ b/frontend/src/uxbox/main/data/workspace/grid.cljs @@ -76,8 +76,12 @@ (ptk/reify ::set-default-grid ptk/WatchEvent (watch [_ state stream] - (rx/of (dwc/commit-changes [{:type :set-option - :option [:saved-grids type] - :value params}] - [] - {:commit-local? true}))))) + (let [pid (:current-page-id state) + prev-value (get-in state [:workspace-data pid :options :saved-grids type])] + (rx/of (dwc/commit-changes [{:type :set-option + :option [:saved-grids type] + :value params}] + [{:type :set-option + :option [:saved-grids type] + :value prev-value}] + {:commit-local? true}))))))