Made all interactions much better
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
(ns auto-ap.views.pages.data-page
|
||||
(:require [auto-ap.status :as status]
|
||||
[auto-ap.utils :refer [by merge-by replace-by]]
|
||||
[auto-ap.subs :as subs]
|
||||
[auto-ap.utils :refer [deep-merge replace-by]]
|
||||
[re-frame.core :as re-frame]))
|
||||
|
||||
(re-frame/reg-sub
|
||||
@@ -35,10 +36,30 @@
|
||||
[::data id :data]
|
||||
replace-by :id (update entity :class #(or % "live-added")))))
|
||||
|
||||
(re-frame/reg-event-db
|
||||
(re-frame/reg-sub
|
||||
::table-params
|
||||
(fn [db [_ which]]
|
||||
(get-in db [::table-params which])))
|
||||
|
||||
(re-frame/reg-sub
|
||||
::params
|
||||
(fn [[_ id]]
|
||||
[(re-frame/subscribe [::subs/client])
|
||||
(re-frame/subscribe [::settled-filters id])
|
||||
(re-frame/subscribe [::table-params id])
|
||||
(re-frame/subscribe [::subs/query-params])])
|
||||
(fn [[client filters table-params query-params]]
|
||||
(cond-> {}
|
||||
client (assoc :client-id (:id client))
|
||||
(seq query-params) (merge query-params)
|
||||
(seq filters) (merge filters)
|
||||
(seq table-params) (merge table-params))))
|
||||
|
||||
(re-frame/reg-event-fx
|
||||
::received
|
||||
(fn [db [_ id data]]
|
||||
(assoc-in db [::data id] data)))
|
||||
(fn [{:keys [db]} [_ id data]]
|
||||
{:db (assoc-in db [::data id] data)
|
||||
:set-uri-params (dissoc @(re-frame/subscribe [::params id]) :client-id)}))
|
||||
|
||||
(re-frame/reg-event-db
|
||||
::dispose
|
||||
@@ -46,7 +67,9 @@
|
||||
(-> db
|
||||
(update ::data dissoc id)
|
||||
(update ::checked dissoc id)
|
||||
(update ::params dissoc id))))
|
||||
(update ::table-params dissoc id)
|
||||
(update ::filters dissoc id)
|
||||
(update ::settled-filters dissoc id))))
|
||||
|
||||
(re-frame/reg-sub
|
||||
::data
|
||||
@@ -58,13 +81,67 @@
|
||||
(fn [[_ id]]
|
||||
[(re-frame/subscribe [::data id])
|
||||
(re-frame/subscribe [::status/single [::page id]])
|
||||
(re-frame/subscribe [::checked id])])
|
||||
(fn [[data status checked] [_ id]]
|
||||
(re-frame/subscribe [::checked id])
|
||||
(re-frame/subscribe [::params id])
|
||||
(re-frame/subscribe [::table-params id])
|
||||
(re-frame/subscribe [::filters id])])
|
||||
(fn [[data status checked params table-params filters] [_ id]]
|
||||
{:id id
|
||||
:data data
|
||||
:status status
|
||||
:checked checked}))
|
||||
:checked checked
|
||||
:params params
|
||||
:filters filters
|
||||
:table-params table-params}))
|
||||
|
||||
(defn in-page-entities [which]
|
||||
(re-frame/path [::data which :data ] ))
|
||||
|
||||
(re-frame/reg-event-fx
|
||||
::table-params-changed
|
||||
(fn [{:keys [db]} [_ which params :as z]]
|
||||
{:db (update-in db [::table-params which] merge params)}))
|
||||
|
||||
(re-frame/reg-sub
|
||||
::specific-filters
|
||||
(fn [db [_ id]]
|
||||
(get-in db [::filters id])))
|
||||
|
||||
(re-frame/reg-sub
|
||||
::filters
|
||||
(fn [[_ id]]
|
||||
[(re-frame/subscribe [::specific-filters id])
|
||||
(re-frame/subscribe [::subs/query-params])])
|
||||
(fn [[specific-filters query-params] ]
|
||||
(deep-merge query-params (or specific-filters {}) )))
|
||||
|
||||
(re-frame/reg-sub
|
||||
::filter
|
||||
(fn [[_ id]]
|
||||
[(re-frame/subscribe [::filters id])])
|
||||
(fn [[filters] [_ id which]]
|
||||
(get filters which)))
|
||||
|
||||
|
||||
(re-frame/reg-event-fx
|
||||
::filters-settled
|
||||
(fn [{:keys [db]} [_ id]]
|
||||
{:db (assoc-in db [::settled-filters id] @(re-frame/subscribe [::filters id]))}))
|
||||
|
||||
(re-frame/reg-sub
|
||||
::settled-filters
|
||||
(fn [db [_ id]]
|
||||
(get-in db [::settled-filters id])))
|
||||
|
||||
(re-frame/reg-event-fx
|
||||
::filter-changed
|
||||
(fn [{:keys [db]} [_ id & params]]
|
||||
(let [[a b c] params
|
||||
[which val] (if (= 3 (count params))
|
||||
[(into [a] b) c]
|
||||
[[a] b])]
|
||||
{:db (assoc-in db (into [::filters id] which) val)
|
||||
:dispatch-debounce
|
||||
{:event [::filters-settled id]
|
||||
:time 800
|
||||
:key [::filters id]}})))
|
||||
|
||||
Reference in New Issue
Block a user