Skip to content

Commit 025f12c

Browse files
committed
introduce loading state
1 parent e20fc8c commit 025f12c

File tree

7 files changed

+34
-10
lines changed

7 files changed

+34
-10
lines changed

src/renderer/element/events.cljs

+14-8
Original file line numberDiff line numberDiff line change
@@ -379,14 +379,17 @@
379379
(.drawImage context image 0 0 width height)
380380
(p/let [image-data (.getImageData context 0 0 width height)
381381
svg (f image-data)]
382-
(rf/dispatch [:element/import-traced-image svg (:name el) position]))))
382+
(rf/dispatch-sync [:element/import-traced-image svg (:name el) position]))))
383383
(set! (.-src image) data-url)))))
384384

385385
(rf/reg-event-fx
386386
:element/trace
387387
(fn [{:keys [db]} [_]]
388-
{::->svg [(filter #(= :image (:tag %)) (h/selected db))
389-
#(.imagedataToSVG ImageTracer %)]}))
388+
(let [images (h/filter-by-tag db :image)]
389+
{:db (cond-> db images (assoc :loading "Tracing.."))
390+
:fx [[::->svg [(filter #(= :image (:tag %)) (h/selected db))
391+
#(.imagedataToSVG ImageTracer %)]]
392+
[:dispatch [:clear-loading]]]})))
390393

391394
(def triangulation-options
392395
#js {:accuracy 0.5 ; float between 0 and 1
@@ -405,8 +408,11 @@
405408
(rf/reg-event-fx
406409
:element/triangulate
407410
(fn [{:keys [db]} [_]]
408-
{::->svg [(filter #(= :image (:tag %)) (h/selected db))
409-
#(-> triangulation-options
410-
(triangulate)
411-
(.fromImageDataSync %)
412-
(.toSVG))]}))
411+
(let [images (h/filter-by-tag db :image)]
412+
{:db (cond-> db images (assoc :loading "Triangulating.."))
413+
:fx [[::->svg [(filter #(= :image (:tag %)) (h/selected db))
414+
#(-> triangulation-options
415+
(triangulate)
416+
(.fromImageDataSync %)
417+
(.toSVG))]]
418+
[:dispatch [:clear-loading]]]})))

src/renderer/element/handlers.cljs

+4
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,10 @@
247247
[db]
248248
(reduce #(conj %1 (:tag %2)) #{} (selected db)))
249249

250+
(defn filter-by-tag
251+
[db tag]
252+
(filter #(= tag (:tag %)) (selected db)))
253+
250254
(defn select-same-tags
251255
[db]
252256
(let [selected-tags (selected-tags db)]

src/renderer/events.cljs

+5
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,11 @@
5858
(fn [db [_]]
5959
(dissoc db :restored?)))
6060

61+
(rf/reg-event-db
62+
:clear-loading
63+
(fn [db [_]]
64+
(dissoc db :loading)))
65+
6166
(rf/reg-event-db
6267
:set-lang
6368
(fn [db [_ lang]]

src/renderer/styles.css

+1-1
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@
137137
}
138138

139139
.backdrop {
140-
@apply absolute inset-0;
140+
@apply absolute inset-0 flex items-center justify-center;
141141
background-color: var(--backdrop);
142142
backdrop-filter: blur(2px);
143143
}

src/renderer/subs.cljs

+4
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,10 @@
142142
:grid?
143143
:-> :grid?)
144144

145+
(rf/reg-sub
146+
:loading
147+
:-> :loading)
148+
145149
#_(rf/reg-sub
146150
:font-options
147151
:<- [:system-fonts]

src/renderer/theme/styles.css

+2
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@
4141

4242
--overlay: #fff;
4343

44+
45+
4446
--font-color: rgba(0, 0, 0, .8);
4547
--error-color: #f78484;
4648
--font-color-disabled: rgba(0, 0, 0, .3);

src/renderer/views.cljs

+4-1
Original file line numberDiff line numberDiff line change
@@ -175,4 +175,7 @@
175175
[toolbar.object/root]]]]]
176176
[home/panel])]
177177
[dialog/root]
178-
[notification/main]])
178+
[notification/main]
179+
(when-let [loading @(rf/subscribe [:loading])]
180+
[:div.backdrop
181+
[:div.text-2xl loading]])])

0 commit comments

Comments
 (0)