first step of page abstraction.
This commit is contained in:
74
src/cljs/auto_ap/views/pages/data_page.cljs
Normal file
74
src/cljs/auto_ap/views/pages/data_page.cljs
Normal file
@@ -0,0 +1,74 @@
|
||||
(ns auto-ap.views.pages.data-page
|
||||
(:require [auto-ap.status :as status]
|
||||
[auto-ap.utils :refer [by merge-by replace-by]]
|
||||
[re-frame.core :as re-frame]))
|
||||
|
||||
(re-frame/reg-sub
|
||||
::checked
|
||||
(fn [db [_ id]]
|
||||
(get-in db [::checked id] #{})))
|
||||
|
||||
(re-frame/reg-event-db
|
||||
::toggle-check
|
||||
(fn [db [_ id new]]
|
||||
(assoc-in db [::checked id] new)))
|
||||
|
||||
(re-frame/reg-event-db
|
||||
::remove-check
|
||||
(fn [db [_ id to-remove]]
|
||||
(update-in db
|
||||
[::checked id]
|
||||
(fn [checked]
|
||||
(let [checked (or checked #{})]
|
||||
(disj checked to-remove))))))
|
||||
|
||||
(re-frame/reg-event-db
|
||||
::updated-entity
|
||||
(fn [db [_ id entity]]
|
||||
(update-in db
|
||||
[::data id]
|
||||
replace-by :id (assoc entity :class "live-added"))))
|
||||
|
||||
(re-frame/reg-event-db
|
||||
::received
|
||||
(fn [db [_ id data]]
|
||||
(assoc-in db [::data id] data)))
|
||||
|
||||
(re-frame/reg-event-db
|
||||
::dispose
|
||||
(fn [db [_ id]]
|
||||
(-> db
|
||||
(update ::data dissoc id)
|
||||
(update ::checked dissoc id)
|
||||
(update ::params dissoc id))))
|
||||
|
||||
(re-frame/reg-sub
|
||||
::data
|
||||
(fn [db [_ id]]
|
||||
(get-in db [::data id])))
|
||||
|
||||
(re-frame/reg-sub
|
||||
::page
|
||||
(fn [[_ id]]
|
||||
[(re-frame/subscribe [::data id])
|
||||
(re-frame/subscribe [::status/single [::page id]])
|
||||
(re-frame/subscribe [::checked id])])
|
||||
(fn [[data status checked] [_ id]]
|
||||
{:id id
|
||||
:data data
|
||||
:status status
|
||||
:checked checked}))
|
||||
|
||||
(defn in-page-entities [which]
|
||||
(re-frame/path [::data which :data ] ))
|
||||
|
||||
(re-frame/reg-event-db
|
||||
::entity-updated
|
||||
(fn [db [_ which [_ entity] :as g]]
|
||||
(println g)
|
||||
(update-in db [::data which :data]
|
||||
(fn [entities]
|
||||
(let [by-id (by :id entities )]
|
||||
(if (by-id (:id entity))
|
||||
(merge-by entities :id entity)
|
||||
(into [entity] entities)))))))
|
||||
Reference in New Issue
Block a user