another step in cleaning up modals.
This commit is contained in:
@@ -18,28 +18,38 @@
|
|||||||
[clojure.spec.alpha :as s]
|
[clojure.spec.alpha :as s]
|
||||||
[auto-ap.views.utils :refer [login-url dispatch-value-change dispatch-event bind-field horizontal-field action-cell-width]]
|
[auto-ap.views.utils :refer [login-url dispatch-value-change dispatch-event bind-field horizontal-field action-cell-width]]
|
||||||
[auto-ap.views.pages.admin.vendors.table :as table]
|
[auto-ap.views.pages.admin.vendors.table :as table]
|
||||||
|
[auto-ap.views.pages.admin.vendors.merge-dialog :as merge-dialog]
|
||||||
|
|
||||||
[auto-ap.views.components.typeahead :refer [typeahead]]
|
[auto-ap.views.components.typeahead :refer [typeahead]]
|
||||||
[cljs.reader :as edn]
|
[cljs.reader :as edn]
|
||||||
[auto-ap.routes :as routes]
|
[auto-ap.routes :as routes]
|
||||||
[bidi.bidi :as bidi]
|
[bidi.bidi :as bidi]
|
||||||
[auto-ap.status :as status]
|
[auto-ap.status :as status]
|
||||||
[vimsical.re-frame.fx.track :as track])
|
[vimsical.re-frame.fx.track :as track]
|
||||||
|
[auto-ap.effects.forward :as forward])
|
||||||
(:require-macros [cljs.core.async.macros :refer [go]]
|
(:require-macros [cljs.core.async.macros :refer [go]]
|
||||||
[auto-ap.entities.vendors :as vendor]))
|
[auto-ap.entities.vendors :as vendor]))
|
||||||
|
|
||||||
|
|
||||||
|
(re-frame/reg-event-fx
|
||||||
|
::invalidated
|
||||||
|
(fn [{:keys [db]}]
|
||||||
|
{:graphql {:token (:user db)
|
||||||
|
:owns-state {:single ::vendor-page}
|
||||||
|
:query-obj {:venia/queries [[:vendor events/vendor-query]]}
|
||||||
|
:on-success [::received-vendors]}}))
|
||||||
|
|
||||||
(re-frame/reg-event-fx
|
(re-frame/reg-event-fx
|
||||||
::mounted
|
::mounted
|
||||||
(fn [{:keys [db]} _]
|
(fn [{:keys [db]} _]
|
||||||
{:graphql {:token (:user db)
|
{:dispatch [::invalidated]
|
||||||
:owns-state {:single ::vendor-page}
|
|
||||||
:query-obj {:venia/queries [[:vendor events/vendor-query]]}
|
|
||||||
:on-success [::received-vendors]}
|
|
||||||
::track/register {:id ::params
|
::track/register {:id ::params
|
||||||
:subscription [::params]
|
:subscription [::params]
|
||||||
:event-fn (fn [params] [::params-change params])}}))
|
:event-fn (fn [params] [::params-change params])}
|
||||||
|
::forward/register {:id ::merge-complete
|
||||||
|
:events #{::merge-dialog/complete}
|
||||||
|
:event-fn (fn [_]
|
||||||
|
[::invalidated])}}))
|
||||||
|
|
||||||
(re-frame/reg-event-db
|
(re-frame/reg-event-db
|
||||||
::received-vendors
|
::received-vendors
|
||||||
@@ -51,6 +61,7 @@
|
|||||||
::unmounted
|
::unmounted
|
||||||
(fn [{:keys [db]} _]
|
(fn [{:keys [db]} _]
|
||||||
{:db (dissoc db ::table/params ::side-bar/filter-params)
|
{:db (dissoc db ::table/params ::side-bar/filter-params)
|
||||||
|
::forward/dispose {:id ::merge-complete}
|
||||||
::track/dispose {:id ::params}}))
|
::track/dispose {:id ::params}}))
|
||||||
|
|
||||||
(re-frame/reg-sub
|
(re-frame/reg-sub
|
||||||
@@ -79,71 +90,7 @@
|
|||||||
:data (grid/virtual-paginate (:start params) matching-vendors)))))
|
:data (grid/virtual-paginate (:start params) matching-vendors)))))
|
||||||
|
|
||||||
|
|
||||||
(re-frame/reg-event-fx
|
|
||||||
::merge-clicked
|
|
||||||
(fn [{:keys [db]} _]
|
|
||||||
{:db (forms/start-form db ::merge-vendors {})
|
|
||||||
:dispatch [::events/modal-status ::merge-vendors {:visible? true :saving? false}]}))
|
|
||||||
|
|
||||||
(re-frame/reg-event-fx
|
|
||||||
::merge-vendors-complete
|
|
||||||
(fn [{:keys [db]} _]
|
|
||||||
{:db (forms/stop-form db ::merge-vendors)
|
|
||||||
:dispatch-n (list [::events/modal-status ::merge-vendors {:visible? false}]
|
|
||||||
[::mounted])}))
|
|
||||||
|
|
||||||
(re-frame/reg-event-fx
|
|
||||||
::merge-submit-clicked
|
|
||||||
[(forms/in-form ::merge-vendors)]
|
|
||||||
(fn [{{{:keys [from-id to-id]} :data :as merge-vendors-form} :db :as g} _]
|
|
||||||
(let [user @(re-frame/subscribe [::subs/token])]
|
|
||||||
(if (and from-id to-id)
|
|
||||||
{:db (-> merge-vendors-form
|
|
||||||
(assoc :status :loading)
|
|
||||||
(assoc :error nil))
|
|
||||||
:graphql
|
|
||||||
{:token user
|
|
||||||
:query-obj {:venia/operation {:operation/type :mutation
|
|
||||||
:operation/name "MergeVendors"}
|
|
||||||
:venia/queries [{:query/data [:merge-vendors
|
|
||||||
{:from from-id :to to-id}
|
|
||||||
[]]}]}
|
|
||||||
:on-success [::merge-vendors-complete]
|
|
||||||
:on-error [::forms/save-error ::merge-vendors]}}
|
|
||||||
{:db merge-vendors-form}))))
|
|
||||||
|
|
||||||
(defn merge-vendors-dialog []
|
|
||||||
(let [{:keys [data active? error id]} @(re-frame/subscribe [::forms/form ::merge-vendors])
|
|
||||||
change-event [::forms/change ::merge-vendors]]
|
|
||||||
|
|
||||||
[action-modal {:id ::merge-vendors
|
|
||||||
:title "Merge Vendors"
|
|
||||||
:action-text "Merge"
|
|
||||||
:save-event [::merge-submit-clicked]
|
|
||||||
:status-from ::merge-vendors}
|
|
||||||
[:div.field
|
|
||||||
[:label.label
|
|
||||||
"From Vendor (will be deleted)"]
|
|
||||||
[:div.control
|
|
||||||
[bind-field
|
|
||||||
[typeahead {:matches (map (fn [x] [(:id x) (:name x)]) @(re-frame/subscribe [::subs/vendors]))
|
|
||||||
:type "typeahead"
|
|
||||||
:auto-focus true
|
|
||||||
:field [:from-id]
|
|
||||||
:text-field [:from-name]
|
|
||||||
:event change-event
|
|
||||||
:subscription data}]]]]
|
|
||||||
[:div.field
|
|
||||||
[:label.label
|
|
||||||
"To Vendor"]
|
|
||||||
[:div.control
|
|
||||||
[bind-field
|
|
||||||
[typeahead {:matches (map (fn [x] [(:id x) (:name x)]) @(re-frame/subscribe [::subs/vendors]))
|
|
||||||
:type "typeahead"
|
|
||||||
:field [:to-id]
|
|
||||||
:text-field [:to-name]
|
|
||||||
:event change-event
|
|
||||||
:subscription data}]]]]]))
|
|
||||||
|
|
||||||
|
|
||||||
(defn admin-vendors-content []
|
(defn admin-vendors-content []
|
||||||
@@ -156,10 +103,9 @@
|
|||||||
editing-vendor (:vendor @(re-frame/subscribe [::subs/admin]))]
|
editing-vendor (:vendor @(re-frame/subscribe [::subs/admin]))]
|
||||||
[:div
|
[:div
|
||||||
[:h1.title "Vendors"]
|
[:h1.title "Vendors"]
|
||||||
[:div.is-pulled-right [:a.button.is-primary.is-outlined {:on-click (dispatch-event [::merge-clicked])} "Merge vendors"]]
|
[:div.is-pulled-right [:a.button.is-primary.is-outlined {:on-click (dispatch-event [::merge-dialog/show])} "Merge vendors"]]
|
||||||
[table/vendors-table {:page @(re-frame/subscribe [::vendor-page])
|
[table/vendors-table {:page @(re-frame/subscribe [::vendor-page])
|
||||||
:status @(re-frame/subscribe [::status/single ::vendor-page])}]
|
:status @(re-frame/subscribe [::status/single ::vendor-page])}]])])
|
||||||
[merge-vendors-dialog]])])
|
|
||||||
{:component-did-mount #(re-frame/dispatch [::mounted])
|
{:component-did-mount #(re-frame/dispatch [::mounted])
|
||||||
:component-will-unmount #(re-frame/dispatch-sync [::unmounted])})])
|
:component-will-unmount #(re-frame/dispatch-sync [::unmounted])})])
|
||||||
|
|
||||||
|
|||||||
76
src/cljs/auto_ap/views/pages/admin/vendors/merge_dialog.cljs
vendored
Normal file
76
src/cljs/auto_ap/views/pages/admin/vendors/merge_dialog.cljs
vendored
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
(ns auto-ap.views.pages.admin.vendors.merge-dialog
|
||||||
|
(:require [auto-ap.forms :as forms]
|
||||||
|
[auto-ap.status :as status]
|
||||||
|
[auto-ap.subs :as subs]
|
||||||
|
[auto-ap.views.components.modal :as modal]
|
||||||
|
[auto-ap.views.components.typeahead :refer [typeahead-entity]]
|
||||||
|
[auto-ap.views.utils :refer [dispatch-event]]
|
||||||
|
[re-frame.core :as re-frame]))
|
||||||
|
|
||||||
|
(re-frame/reg-sub
|
||||||
|
::can-submit
|
||||||
|
:<- [::forms/form ::form]
|
||||||
|
(fn [{:keys [data]}]
|
||||||
|
(println data)
|
||||||
|
(and (:from data)
|
||||||
|
(:to data))))
|
||||||
|
|
||||||
|
(def merge-form (forms/vertical-form {:submit-event [::save]
|
||||||
|
:change-event [::forms/change ::form]
|
||||||
|
:can-submit [::can-submit]
|
||||||
|
:id ::form}))
|
||||||
|
|
||||||
|
(defn form []
|
||||||
|
(let [{:keys [data active? error id]} @(re-frame/subscribe [::forms/form ::form])
|
||||||
|
{:keys [form-inline horizontal-field field raw-field error-notification submit-button]} merge-form]
|
||||||
|
|
||||||
|
|
||||||
|
(form-inline {}
|
||||||
|
[:<>
|
||||||
|
(field "Form Vendor (will be deleted)"
|
||||||
|
[typeahead-entity {:matches @(re-frame/subscribe [::subs/vendors])
|
||||||
|
:type "typeahead-entity"
|
||||||
|
:auto-focus true
|
||||||
|
:match->text :name
|
||||||
|
:field [:from]}])
|
||||||
|
|
||||||
|
(field "To Vendor"
|
||||||
|
[typeahead-entity {:matches @(re-frame/subscribe [::subs/vendors])
|
||||||
|
:type "typeahead-entity"
|
||||||
|
:match->text :name
|
||||||
|
:field [:to]}])])))
|
||||||
|
|
||||||
|
(re-frame/reg-event-fx
|
||||||
|
::show
|
||||||
|
(fn [{:keys [db]} _]
|
||||||
|
{:dispatch [::modal/modal-requested {:title "Merge Vendors"
|
||||||
|
:body [form]
|
||||||
|
:confirm {:value "Merge"
|
||||||
|
:status-from [::status/single ::form]
|
||||||
|
:class "is-primary"
|
||||||
|
:on-click (dispatch-event [::save])
|
||||||
|
:can-submit [::can-submit]
|
||||||
|
:close-event [::status/completed ::form]}}]
|
||||||
|
:db (forms/start-form db ::form {})}
|
||||||
|
))
|
||||||
|
|
||||||
|
(re-frame/reg-event-fx
|
||||||
|
::complete
|
||||||
|
(fn [{:keys [db]} _]
|
||||||
|
{:db (forms/stop-form db ::form)
|
||||||
|
:dispatch [::modal/modal-closed ]}))
|
||||||
|
|
||||||
|
(re-frame/reg-event-fx
|
||||||
|
::save
|
||||||
|
[(forms/in-form ::form)]
|
||||||
|
(fn [{{{:keys [from to]} :data :as merge-vendors-form} :db :as g} _]
|
||||||
|
(let [user @(re-frame/subscribe [::subs/token])]
|
||||||
|
{:graphql
|
||||||
|
{:token user
|
||||||
|
:owns-state {:single ::form}
|
||||||
|
:query-obj {:venia/operation {:operation/type :mutation
|
||||||
|
:operation/name "MergeVendors"}
|
||||||
|
:venia/queries [{:query/data [:merge-vendors
|
||||||
|
{:from (:id from) :to (:id to)} []]}]}
|
||||||
|
:on-success [::complete]}})))
|
||||||
|
|
||||||
@@ -66,7 +66,8 @@
|
|||||||
(re-frame/reg-event-fx
|
(re-frame/reg-event-fx
|
||||||
::unmounted
|
::unmounted
|
||||||
(fn [{:keys [db]} _]
|
(fn [{:keys [db]} _]
|
||||||
{::track/dispose {:id ::params}}))
|
{:dispatch [::data-page/dispose ::page]
|
||||||
|
::track/dispose {:id ::params}}))
|
||||||
|
|
||||||
(re-frame/reg-event-fx
|
(re-frame/reg-event-fx
|
||||||
::mounted
|
::mounted
|
||||||
|
|||||||
@@ -593,7 +593,8 @@
|
|||||||
(re-frame/reg-event-fx
|
(re-frame/reg-event-fx
|
||||||
::unmounted
|
::unmounted
|
||||||
(fn [{:keys [db]} _]
|
(fn [{:keys [db]} _]
|
||||||
{::track/dispose {:id ::ledger-params}}))
|
{:dispatch [::data-page/dispose ::ledger]
|
||||||
|
::track/dispose {:id ::ledger-params}}))
|
||||||
|
|
||||||
(re-frame/reg-event-fx
|
(re-frame/reg-event-fx
|
||||||
::mounted
|
::mounted
|
||||||
|
|||||||
Reference in New Issue
Block a user