From 0eb70586d2ed969b794c055eac34dbfdf1fcddfd Mon Sep 17 00:00:00 2001 From: prabhanshuguptagit Date: Mon, 12 Feb 2024 19:27:49 +0530 Subject: [PATCH] Set labels on selection instead of single cell --- src/bean/tables.cljs | 7 +++++-- src/bean/ui/events.cljs | 20 +++++++++----------- src/bean/ui/util.cljs | 5 ----- src/bean/util.cljs | 5 +++++ 4 files changed, 19 insertions(+), 18 deletions(-) diff --git a/src/bean/tables.cljs b/src/bean/tables.cljs index 977fb0e..300b106 100644 --- a/src/bean/tables.cljs +++ b/src/bean/tables.cljs @@ -27,8 +27,11 @@ (when (= (cell-table rc sheet) table-name) (assoc-in sheet [:tables table-name :labels rc] {:dirn dirn :color color}))) -(defn remove-label [sheet table-name rc] - (update-in sheet [:tables table-name :labels] dissoc rc)) +(defn add-labels [sheet table-name addresses dirn] + (reduce #(add-label %1 table-name %2 dirn (util/random-color-hex)) sheet addresses)) + +(defn remove-labels [sheet table-name addresses] + (reduce #(update-in % [:tables table-name :labels] dissoc %2) sheet addresses)) (defn get-table [sheet table-name] (get-in sheet [:tables table-name])) diff --git a/src/bean/ui/events.cljs b/src/bean/ui/events.cljs index a83a7de..6adaca9 100644 --- a/src/bean/ui/events.cljs +++ b/src/bean/ui/events.cljs @@ -79,7 +79,8 @@ ::edit-cell (fn edit-cell [{:keys [db]} [_ rc]] {:db (assoc-in db [:ui :grid :editing-cell] rc) - :fx [[::focus-element "cell-input"]]})) + :fx [[:dispatch [::set-selection {:start rc :end rc}]] + [::focus-element "cell-input"]]})) (rf/reg-event-db ::set-selection @@ -108,18 +109,15 @@ [:dispatch [::select-table table-name]]]})) (rf/reg-event-db - ::add-label - (fn add-label [db [_ table-name rc dirn color]] - (update-in - db [:sheet] - #(tables/add-label % table-name rc dirn color)))) + ::add-labels + (fn add-labels [db [_ table-name addresses dirn]] + (update-in db [:sheet] + #(tables/add-labels % table-name addresses dirn)))) (rf/reg-event-db - ::remove-label - (fn add-label [db [_ table-name rc]] - (update-in - db [:sheet] - #(tables/remove-label % table-name rc)))) + ::remove-labels + (fn remove-labels [db [_ table-name addresses]] + (update-in db [:sheet] #(tables/remove-labels % table-name addresses)))) (rf/reg-event-db ::clear-selection diff --git a/src/bean/ui/util.cljs b/src/bean/ui/util.cljs index 3844ede..0b851a9 100644 --- a/src/bean/ui/util.cljs +++ b/src/bean/ui/util.cljs @@ -27,8 +27,3 @@ (defn color-int->hex [color] (str "#" (.toString color 16))) - -(defn random-color-hex [] - (+ (bit-shift-left (rand-int 256) 16) - (bit-shift-left (rand-int 256) 8) - (rand-int 256))) diff --git a/src/bean/util.cljs b/src/bean/util.cljs index 0b7d468..3339967 100644 --- a/src/bean/util.cljs +++ b/src/bean/util.cljs @@ -53,3 +53,8 @@ (for [r (range start-r (inc end-r))] (for [c (range start-c (inc end-c))] [r c]))) + +(defn random-color-hex [] + (+ (bit-shift-left (rand-int 256) 16) + (bit-shift-left (rand-int 256) 8) + (rand-int 256)))