Remove tracks update multispan cells

This commit is contained in:
alonso.torres 2023-05-22 14:36:38 +02:00
parent b0136fef29
commit 714b2c8805

View File

@ -631,52 +631,68 @@
(assoc :layout-grid-cells layout-grid-cells)))) (assoc :layout-grid-cells layout-grid-cells))))
(defn make-remove-track (defn make-remove-cell
[attr track-num] [attr span-attr track-num]
(comp #(= % track-num) attr second)) (fn [[_ cell]]
;; Only remove cells with span=1 otherwise the cell will be fixed
(and (= track-num (get cell attr))
(= (get cell span-attr) 1))))
(defn make-decrease-track-num (defn make-decrease-track-num
[attr track-num] [attr span-attr track-num]
(fn [[key value]] (fn [[id cell]]
(let [new-val (let [inner-track?
(cond-> value (or (= track-num (get cell attr))
(> (get value attr) track-num) (and (< (get cell attr) track-num (+ (get cell attr) (get cell span-attr)))))
(update attr dec))]
[key new-val]))) displace-cell?
(and (not inner-track?) (< track-num (get cell attr)))
cell
(cond-> cell
inner-track?
(update span-attr dec)
displace-cell?
(update attr dec))]
[id cell])))
;; TODO: CHECK CELLS MULTI SPAN
(defn remove-grid-column (defn remove-grid-column
[parent index] [parent index]
(let [track-num (inc index) (let [track-num (inc index)
decrease-track-num (make-decrease-track-num :column track-num) decrease-track-num (make-decrease-track-num :column :column-span track-num)
remove-track? (make-remove-track :column track-num) remove-track? (make-remove-cell :column :column-span track-num)
remove-cells update-cells
(fn [cells] (fn [cells]
(into {} (comp (into {}
(remove remove-track?) (comp (remove remove-track?)
(map decrease-track-num)) cells))] (map decrease-track-num))
cells))]
(-> parent (-> parent
(update :layout-grid-columns d/remove-at-index index) (update :layout-grid-columns d/remove-at-index index)
(update :layout-grid-cells remove-cells) (update :layout-grid-cells update-cells)
(assign-cells)))) (assign-cells))))
(defn remove-grid-row (defn remove-grid-row
[parent index] [parent index]
(let [track-num (inc index) (let [track-num (inc index)
decrease-track-num (make-decrease-track-num :row track-num) decrease-track-num (make-decrease-track-num :row :row-span track-num)
remove-track? (make-remove-track :row track-num) remove-track? (make-remove-cell :row :row-span track-num)
remove-cells update-cells
(fn [cells] (fn [cells]
(into {} (comp (into {}
(remove remove-track?) (comp (remove remove-track?)
(map decrease-track-num)) cells))] (map decrease-track-num))
cells))]
(-> parent (-> parent
(update :layout-grid-rows d/remove-at-index index) (update :layout-grid-rows d/remove-at-index index)
(update :layout-grid-cells remove-cells) (update :layout-grid-cells update-cells)
(assign-cells)))) (assign-cells))))
(defn get-cells (defn get-cells